[
  {
    "path": ".claude/CLAUDE.md",
    "content": "# Project Overview\n\nhtml-eslint is a monorepo that provides ESLint plugins offering linting rules for HTML and HTML-related syntaxes.\n\nIt supports multiple use cases, including:\n\n- Standalone `.html` files\n- HTML inside JavaScript template literals (e.g., `Lit`)\n- React (JSX)\n- Angular template\n- Svelte\n\n## Rules\n\n- All documentation, code, and comments must be written in English.\n- Comments should be kept to a minimum and only used where necessary. Write self-explanatory code that doesn't require comments to understand. Only add comments when:\n  - Explaining complex algorithms or non-obvious logic\n  - Documenting public APIs with JSDoc\n  - Providing context that cannot be expressed through code alone\n- When adding a new rule, always use `yarn new-rule <plugin-type> <rule-name>` to generate the scaffolding first. Never create rule files manually.\n- When a new rule is added or a rule's options are added, removed, or changed, the corresponding documentation in `docs/` must also be updated. Never modify rule code without updating the docs.\n- Always run `yarn run format` after completing any code/doc modification.\n- Always run `yarn check:spell` after completing any code modification. If an error occurs:\n  - If the flagged word is not a typo but a valid term, add it to the `words` array in `.cspell.json`.\n  - If spell-checking the entire file is meaningless (e.g., generated files, fixtures), add the file path to the `ignorePaths` array in `.cspell.json`.\n\n## Commands\n\n- `yarn test`: Run all unit tests.\n- `yarn test:legacy`: Run all unit tests with legacy ESLint config.\n- `yarn test:integration`: Run integration tests.\n- `yarn build`: Build all packages.\n- `yarn lint`: Lint all packages.\n- `yarn format`: Format code with Prettier.\n- `yarn check:format`: Check formatting without modifying\n- `yarn check:ts`: TypeScript type checking\n- `yarn check`: Run all checks (test, format, spell, ts)\n- `yarn new-rule <plugin-type> <rule-name>`: Generate scaffolding for a new rule. `plugin-type` must be `html` (for `packages/eslint-plugin`) or `react` (for `packages/eslint-plugin-react`).\n\n## Architecture\n\n### Packages\n\n**eslint plugin packages**\n\n- `@html-eslint/eslint-plugin` (packages/eslint-plugin): ESLint plugin providing linting rules for `.html` files.\n- `@html-eslint/eslint-plugin-react` (packages/eslint-plugin-react): ESLint plugin providing HTML linting rules for React JSX.\n- `@html-eslint/eslint-plugin-svelte` (packages/eslint-plugin-svelte): ESLint plugin providing HTML linting rules for Svelte components.\n- `@html-eslint/eslint-plugin-angular-template` (packages/eslint-plugin-angular-template): ESLint plugin providing HTML linting rules for Angular templates.\n\n**core packages**\n\n- `@html-eslint/core` (packages/core): Core validation logic and rule execution engine shared across eslint-plugins.\n- `@html-eslint/parser` (packages/parser): Parses `.html` files into an ESLint-compatible AST using `es-html-parser`.\n- `@html-eslint/template-parser` (packages/template-parser): Parses HTML template literals embedded in JS/TS files (e.g., Lit).\n- `@html-eslint/template-syntax-parser` (packages/template-syntax-parser): Parses template engine syntax (Handlebar, ERB, TWIG) to extract HTML portions.\n- `@html-eslint/types` (packages/types): Shared TypeScript type definitions used across some packages.\n\n**etc**\n\n- `packages/website`: Documentation site with an interactive playground, built with Parcel, HTML, JavaScript and Tailwind CSS.\n- `packages/web-linter`: Browserified bundle of the plugin for use in web-based linting environments.\n- `packages/integration-test`: Integration tests across all supported environments.\n- `./tools`: Internal development scripts.\n  - `add-new-rule.js`: Scaffolding generator invoked by `yarn new-rule` to create rule, test, and doc files from templates.\n  - `base-line/generate-baseline.mjs`: Generates web standards baseline data used by the website.\n  - `templates/`: Template files (`rule.js`, `rule.test.js`, `rule.md`) used by `add-new-rule.js` when scaffolding a new rule.\n\n## Documentation\n\nThe `docs/` directory contains the source documentation written in Markdown. When `yarn build` is run, `packages/website` converts these files into HTML for the documentation site.\n\nEach subdirectory maps to a specific plugin:\n\n- `docs/` — Rules and guides for `@html-eslint/eslint-plugin`\n- `docs/react/` — Rules and guides for `@html-eslint/eslint-plugin-react`\n- `docs/angular-template/` — Rules and guides for `@html-eslint/eslint-plugin-angular-template`\n- `docs/svelte/` — Rules and guides for `@html-eslint/eslint-plugin-svelte`\n"
  },
  {
    "path": ".claude/commands/add-rule.md",
    "content": "You are helping add a new lint rule to the `@html-eslint/eslint-plugin` package.\n\n## Step 1: Gather requirements\n\nAsk the user for the following if not already provided:\n\n1. **Rule name** — must be lowercase with hyphens (e.g., `require-lang`). If not provided, ask for it.\n2. **Rule description** — a brief explanation of what the rule enforces and why it is useful. If not provided, ask for it.\n\nDo not proceed until both pieces of information are confirmed.\n\n## Step 2: Scaffold the rule\n\nOnce the rule name and description are confirmed, run the following command from the project root:\n\n```bash\nyarn new-rule {rule-name}\n```\n\nThis generates:\n\n- `packages/eslint-plugin/lib/rules/{rule-name}.js` — rule implementation stub\n- `packages/eslint-plugin/tests/rules/{rule-name}.test.js` — test file stub\n- `docs/rules/{rule-name}.md` — documentation stub\n- Updates `packages/eslint-plugin/lib/rules/index.js` with the new rule import and export\n\n## Step 3: Write the documentation\n\nFill in `docs/rules/{rule-name}.md` with appropriate content based on the rule description provided by the user.\n\nThe documentation must follow this structure (refer to existing docs like `docs/rules/require-button-type.md` as a reference):\n\n```markdown\n---\ntitle: { rule-name }\ndescription: >-\n  {One-sentence description of the rule.}\n---\n\n# {rule-name}\n\n{A paragraph explaining what the rule enforces and why.}\n\n## How to use\n\n\\`\\`\\`js,.eslintrc.js\nmodule.exports = {\nrules: {\n\"@html-eslint/{rule-name}\": \"error\",\n},\n};\n\\`\\`\\`\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n\\`\\`\\`html,incorrect\n{incorrect HTML examples}\n\\`\\`\\`\n\nExamples of **correct** code for this rule:\n\n\\`\\`\\`html,correct\n{correct HTML examples}\n\\`\\`\\`\n\n## Options\n\n{Document any options here, or omit this section if there are none.}\n\n## Further Reading\n\n{Optional links to relevant specs or resources.}\n```\n\n## Step 4: Done\n\nAfter writing the documentation, inform the user that:\n\n- The scaffolding has been created\n- The documentation has been written\n- They should implement the rule logic in `packages/eslint-plugin/lib/rules/{rule-name}.js`\n- They should add test cases in `packages/eslint-plugin/tests/rules/{rule-name}.test.js`\n"
  },
  {
    "path": ".claude/rules/coding-style.md",
    "content": "---\npaths:\n  - \"**/*.js\"\n---\n\n# Coding Style Rules\n\n## Type Imports in JavaScript Files\n\nType imports must be placed at the top of the file using TSDoc `@import` syntax.\n\n### Rule\n\n- Type imports should be declared using JSDoc/TSDoc `@import` comments\n- These `@import` declarations must be placed at the very top of the file, before any `require()` statements\n- Each type import should be on its own line within a JSDoc comment block\n- When specifying parameter types in `@param`, use the imported types from the top of the file, NOT inline `import()` statements\n\n### Examples\n\n**Good:**\n\n```javascript\n/**\n * @import {AST} from \"eslint\"\n * @import {\n *   JSXAttribute,\n *   JSXIdentifier,\n *   Literal,\n *   Node,\n *   TemplateLiteral\n * } from \"../../types\"\n */\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n// rest of the code...\n```\n\n**Bad:**\n\n```javascript\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n/** @import {AST} from \"eslint\" */\n// Type import is not at the top of the file\n```\n\n**Bad:**\n\n```javascript\n// Missing @import declarations for types used in JSDoc comments\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n/** @param {AST.SourceLocation} location */\nfunction adjustLocation(location) {\n  // ...\n}\n```\n\n**Bad:**\n\n```javascript\n// Using inline import() instead of @import at the top\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n/**\n * @param {import(\"eslint\").AST.SourceLocation} location\n * @param {import(\"../../types\").Node} node\n */\nfunction adjustLocation(location, node) {\n  // ...\n}\n```\n\n**Good (for the above):**\n\n```javascript\n/**\n * @import {AST} from \"eslint\"\n * @import {Node} from \"../../types\"\n */\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n/**\n * @param {AST.SourceLocation} location\n * @param {Node} node\n */\nfunction adjustLocation(location, node) {\n  // ...\n}\n```\n"
  },
  {
    "path": ".claude/rules/rule-document.md",
    "content": "---\npaths:\n  - \"**/rules/*.md\"\n---\n\n# Rule Documentation Guidelines\n\n## Overview\n\nRule documentation should be user-focused and concise. The goal is to help users understand what the rule does and how to use it, not to expose every implementation detail.\n\n## Structure\n\nEach rule documentation file should follow this structure:\n\n1. **Title and Description** (YAML frontmatter)\n2. **Rule Name** (H1)\n3. **How to Use** section\n4. **Rule Details** section\n5. **Examples** section (with incorrect and correct code)\n6. **When Not To Use It** section (optional)\n7. **Further Reading** section (optional)\n\n## Guidelines\n\n### 1. Keep Implementation Details Private\n\n**DO NOT** expose exhaustive lists of every case the rule checks. Instead, provide representative examples.\n\n**Bad:**\n\n```markdown\n## Checked Attributes\n\nThis rule checks for the following 50+ obsolete attributes:\n\n- `align` on div, p, h1, h2, h3, h4, h5, h6, table, tr, td, th, ...\n- `bgcolor` on body, table, tr, td, th, ...\n- ... (50+ more items)\n```\n\n**Good:**\n\n```markdown\n## Rule Details\n\nThis rule disallows using obsolete attributes on HTML elements and provides suggestions for modern alternatives.\n\nCommon obsolete attributes include presentational attributes like `align`, `bgcolor`, and `border`. Use CSS instead.\n```\n\n### 2. Focus on User Intent\n\nExplain **what** the rule does and **why** it matters, not **how** it works internally.\n\n**Bad:**\n\n```markdown\nThe rule iterates through all attributes, checks if the attribute key has an expression,\nvalidates the attribute value against a lookup table of 200+ entries...\n```\n\n**Good:**\n\n```markdown\nThis rule helps you write modern, standards-compliant HTML by catching obsolete\nattributes that should be replaced with CSS or modern alternatives.\n```\n\n### 3. Provide Representative Examples\n\nShow 3-5 clear examples for both incorrect and correct code. Don't try to show every possible case.\n\n**Bad:**\n\n```markdown\n## Examples\n\n<!-- Showing 50+ test cases -->\n```\n\n**Good:**\n\n```markdown\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n\\`\\`\\`html\n\n<!-- Obsolete presentational attributes -->\n<div align=\"center\">Content</div>\n<table bgcolor=\"#ffffff\"></table>\n\n<!-- Obsolete name attribute -->\n\n<a name=\"anchor\">Link</a>\n\\`\\`\\`\n\nExamples of **correct** code for this rule:\n\n\\`\\`\\`html\n\n<!-- Use CSS instead -->\n<div style=\"text-align: center;\">Content</div>\n<table style=\"background-color: #ffffff;\"></table>\n\n<!-- Use id instead -->\n\n<a id=\"anchor\">Link</a>\n\\`\\`\\`\n```\n\n### 4. Group Similar Cases\n\nWhen showing examples, group similar violations together with a brief comment.\n\n```markdown\n<!-- Obsolete presentational attributes -->\n<div align=\"center\">Content</div>\n<table bgcolor=\"#ffffff\" border=\"1\"></table>\n```\n\n### 5. Omit Internal Details\n\n**DO NOT** include:\n\n- Complete lists of all checked values\n- Implementation algorithms\n- Internal data structures\n- Edge case handling details\n\n**DO** include:\n\n- What the rule checks for (high-level)\n- Why it matters\n- How to fix violations\n- Framework-specific considerations (e.g., \"Angular property bindings are skipped\")\n\n### 6. Keep \"How to Use\" Consistent\n\nAlways show the flat config format with the correct plugin name and parser (if needed).\n\n```markdown\n## How to use\n\n\\`\\`\\`js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n{\nfiles: [\"**/*.html\"],\nlanguageOptions: {\nparser: templateParser,\n},\nplugins: {\n\"@html-eslint/angular-template\": angularTemplate,\n},\nrules: {\n\"@html-eslint/angular-template/rule-name\": \"error\",\n},\n},\n];\n\\`\\`\\`\n```\n\n### 7. Use Concise Descriptions\n\nThe description should be one clear sentence.\n\n**Bad:**\n\n```markdown\ndescription: This rule is designed to help developers avoid using obsolete\nHTML attributes that were deprecated in HTML5 and should no longer be used\nin modern web development because they have been replaced by CSS...\n```\n\n**Good:**\n\n```markdown\ndescription: Disallow obsolete HTML attributes in Angular templates that are deprecated in HTML5.\n```\n\n## Template\n\n```markdown\n---\ntitle: rule-name\ndescription: Brief one-sentence description of what the rule does.\n---\n\n# rule-name\n\nBrief introduction paragraph explaining what the rule does.\n\n## How to use\n\n\\`\\`\\`js\n// Configuration example\n\\`\\`\\`\n\n## Rule Details\n\nExplanation of what the rule checks and why it matters.\n\n**Note**: Any framework-specific notes (e.g., \"Custom elements are ignored\").\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n\\`\\`\\`html\n\n<!-- 3-5 representative examples -->\n\n\\`\\`\\`\n\nExamples of **correct** code for this rule:\n\n\\`\\`\\`html\n\n<!-- 3-5 representative examples -->\n\n\\`\\`\\`\n\n## When Not To Use It\n\nOptional section explaining when this rule might not be appropriate.\n\n## Further Reading\n\nOptional links to relevant specifications or documentation.\n```\n\n## Summary\n\n- **User-focused**: Write for developers using the rule, not for rule implementers\n- **Concise**: Show representative examples, not exhaustive lists\n- **Clear**: Explain what and why, not how\n- **Consistent**: Follow the standard structure and format\n"
  },
  {
    "path": ".claude/rules/writing-rule-test.md",
    "content": "---\npaths:\n  - \"**/rules/*.test.js\"\n---\n\n# Writing Rule Tests\n\n## Invalid Test Cases\n\nWhen writing invalid test cases, you MUST include `line` and `column` properties in the error objects to specify the exact location where the error should be reported.\n\n### Example\n\n```javascript\n{\n  code: '<a charset=\"UTF-8\">Link</a>',\n  errors: [\n    {\n      messageId: \"obsolete\",\n      line: 1,\n      column: 4,\n      data: {\n        attr: \"charset\",\n        element: \"a\",\n        suggestion: \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n      },\n    },\n  ],\n}\n```\n\n### Why This Is Important\n\n- Ensures the rule reports errors at the correct location in the source code\n- Helps catch regressions if the error location changes unexpectedly\n- Makes test failures more informative by showing exact position mismatches\n- Follows ESLint testing best practices\n"
  },
  {
    "path": ".codecov.yml",
    "content": "coverage:\n  status:\n    patch:\n      default:\n        target: 90%\n    project:\n      default:\n        target: auto\n        threshold: 2%\ncomment:\n  layout: \"diff, flags, files\"\n  behavior: new\n  require_changes: false\n"
  },
  {
    "path": ".cspell.json",
    "content": "{\n  \"version\": \"0.2\",\n  \"language\": \"en\",\n  \"ignorePaths\": [\n    \".cspell.json\",\n    \".github/workflows/**\",\n    \".vscode/*.json\",\n    \"**/*.{json,snap}\",\n    \"**/coverage/**\",\n    \"**/out/**\",\n    \"**/node_modules/**\",\n    \"packages/website/**\",\n    \"packages/eslint-plugin/types/**\",\n    \"packages/core/lib/utils/baseline.js\",\n    \"packages/core/lib/utils/obsolete-attrs.js\",\n    \"packages/core/dist\",\n    \"**/use-baseline.test.js\",\n    \"**/no-ineffective-attrs.js\",\n    \"**/no-ineffective-attrs.test.js\",\n    \"**/no-ineffective-attrs.md\",\n    \"**/no-obsolete-tags.md\",\n    \"**/no-obsolete-tags.js\",\n    \"**/no-obsolete-tags.test.js\",\n    \"**/no-obsolete-attrs.md\",\n    \"**/no-obsolete-attrs.js\",\n    \"**/no-obsolete-attrs.test.js\",\n    \"CLAUDE.md\"\n  ],\n  \"words\": [\n    \"callees\",\n    \"TSES\",\n    \"foofoo\",\n    \"rowspan\",\n    \"tseslint\",\n    \"frontmatter\",\n    \"rehype\",\n    \"tailwindcss\",\n    \"codemirror\",\n    \"htmlmixed\",\n    \"yeon\",\n    \"noreferrer\",\n    \"noopener\",\n    \"estree\",\n    \"linebreak\",\n    \"optionator\",\n    \"htmleslintrc\",\n    \"unist\",\n    \"sectionhead\",\n    \"multicol\",\n    \"bgsound\",\n    \"noembed\",\n    \"roletype\",\n    \"nextid\",\n    \"screenreader\",\n    \"mspace\",\n    \"multiline\",\n    \"sameline\",\n    \"quasis\",\n    \"sourcecode\",\n    \"espree\",\n    \"nohtml\",\n    \"tmpl\",\n    \"labelledby\",\n    \"associationlist\",\n    \"associationlistitemkey\",\n    \"associationlistitemvalue\",\n    \"menuitemcheckbox\",\n    \"menuitemradio\",\n    \"spinbutton\",\n    \"treegrid\",\n    \"contentinfo\",\n    \"smashingmagazine\",\n    \"contenteditable\",\n    \"nbsb\",\n    \"endl\",\n    \"cout\",\n    \"nodownload\",\n    \"nofullscreen\",\n    \"controlslist\",\n    \"describedby\",\n    \"atrule\",\n    \"rviscomi\",\n    \"Vitaly\",\n    \"Contentful\",\n    \"prerender\",\n    \"popovertarget\",\n    \"mypopover\",\n    \"viewbox\",\n    \"Viewbox\"\n  ]\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\n\n[*.{js,json,yml}]\ncharset = utf-8\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".gitattributes",
    "content": "/.yarn/**            linguist-vendored\n/.yarn/releases/*    binary\n/.yarn/plugins/**/*  binary\n/.pnp.*              binary linguist-generated\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: [yeonjuan]\ncustom: [https://buymeacoffee.com/yeonjuan93p]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"[BUG]\"\nlabels: bug\nassignees: yeonjuan\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"[FEATURE]\"\nlabels: enhancement\nassignees: yeonjuan\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "## Checklist\n\n- Addresses an existing open issue: fixes #000\n\n## Description\n"
  },
  {
    "path": ".github/workflows/main.yml",
    "content": "name: CI\non:\n  push:\n    branches:\n      - main\n  pull_request:\njobs:\n  ci:\n    name: CI\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Install Corepack\n        run: npm install -g corepack\n      - uses: actions/setup-node@v4\n        with:\n          node-version-file: .nvmrc\n      - name: Install\n        run: yarn install --immutable\n      - name: Build\n        run: yarn build\n      - name: Lint\n        run: yarn lint\n      - name: Unit Tests\n        run: yarn test\n      - name: Unit Tests (Legacy)\n        run: yarn test:legacy\n      - name: Check Spells\n        run: yarn check:spell\n      - name: Check Format\n        run: yarn check:format\n      - name: Check Types\n        run: yarn check:ts\n      - name: Code coverage report\n        uses: codecov/codecov-action@v5\n        with:\n          token: ${{ secrets.CODECOV_TOKEN }}\n          flags: unittest\n          name: codecov\n  integration-test:\n    name: Integration Test\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Install Corepack\n        run: npm install -g corepack\n      - uses: actions/setup-node@v4\n        with:\n          node-version-file: .nvmrc\n      - name: Install\n        run: yarn install --immutable\n      - name: Build\n        run: yarn build\n      - name: Test\n        run: yarn test:integration\n"
  },
  {
    "path": ".github/workflows/sementic-pr.yml",
    "content": "name: Semantic PR\n\non:\n  pull_request_target:\n    types:\n      - opened\n      - edited\n      - synchronize\n\njobs:\n  main:\n    name: Validate PR title\n    runs-on: ubuntu-latest\n    steps:\n      - uses: amannn/action-semantic-pull-request@v5\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          types: |\n            docs\n            feat\n            fix\n            test\n            chore\n            ci\n            refactor\n          requireScope: false\n          subjectPattern: ^[a-z].+[^\\.]$\n          subjectPatternError: |\n            The \"subject\" must start with a lower-case letter and must not\n            end with a full-stop.\n"
  },
  {
    "path": ".github/workflows/update-baseline-bcd.yml",
    "content": "name: Update Baseline BCD\n\non:\n  schedule:\n    # Run every Monday at 09:00 UTC\n    - cron: \"0 9 * * 1\"\n  workflow_dispatch: # Allow manual trigger\n\njobs:\n  update-baseline-bcd:\n    name: Update Baseline BCD\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n      pull-requests: write\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Install Corepack\n        run: npm install -g corepack\n\n      - uses: actions/setup-node@v4\n        with:\n          node-version-file: .nvmrc\n\n      - name: Install dependencies\n        run: yarn install --immutable\n\n      - name: Check for updates\n        id: check-update\n        run: |\n          CURRENT_VERSION=$(node -p \"require('./package.json').devDependencies['@mdn/browser-compat-data']\")\n          echo \"Current version: $CURRENT_VERSION\"\n\n          LATEST_VERSION=$(npm view @mdn/browser-compat-data version)\n          echo \"Latest version: $LATEST_VERSION\"\n\n          if [ \"$CURRENT_VERSION\" != \"$LATEST_VERSION\" ]; then\n            echo \"update_available=true\" >> $GITHUB_OUTPUT\n            echo \"current_version=$CURRENT_VERSION\" >> $GITHUB_OUTPUT\n            echo \"latest_version=$LATEST_VERSION\" >> $GITHUB_OUTPUT\n          else\n            echo \"update_available=false\" >> $GITHUB_OUTPUT\n          fi\n\n      - name: Update package\n        if: steps.check-update.outputs.update_available == 'true'\n        run: |\n          yarn up @mdn/browser-compat-data@latest\n\n      - name: Run baseline generation\n        if: steps.check-update.outputs.update_available == 'true'\n        run: |\n          yarn baseline\n\n      - name: Create Pull Request\n        if: steps.check-update.outputs.update_available == 'true'\n        uses: peter-evans/create-pull-request@v7\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          commit-message: \"chore: bump @mdn/browser-compat-data from ${{ steps.check-update.outputs.current_version }} to ${{ steps.check-update.outputs.latest_version }}\"\n          title: \"chore(deps): bump @mdn/browser-compat-data from ${{ steps.check-update.outputs.current_version }} to ${{ steps.check-update.outputs.latest_version }}\"\n          body: |\n            Bumps [@mdn/browser-compat-data](https://github.com/mdn/browser-compat-data) from ${{ steps.check-update.outputs.current_version }} to ${{ steps.check-update.outputs.latest_version }}.\n\n            ---\n\n            This PR was automatically created by GitHub Actions.\n          branch: update-baseline-bcd\n          delete-branch: true\n          labels: dependencies\n"
  },
  {
    "path": ".gitignore",
    "content": "node_modules/\n**/coverage\npackages/website/dist\n.next\n.turbo\nnext-env.d.ts\npackages/web-linter/out\npackages/website/out\npackages/website/src/docs/**/*.html\npackages/website/src/out/**/*.html\npackages/**/dist\n*.tsbuildinfo\n.parcel-cache/\n.pnp.*\n.yarn/*\npackages/**/.yarn\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n.DS_Store\n\nintegration-test-projects/**/*.yarn\npackages/template-syntax-parser/types\npackages/template-parser/types\npackages/parser/types\npackages/eslint-plugin/types\npackages/eslint-plugin-react/types\npackages/eslint-plugin-angular-template/types\n\n\n# Workflow fixtures\n.github/workflows/fixtures/**/node_modules\n.github/workflows/fixtures/**/.yarn\n.github/workflows/fixtures/**/yarn.lock\n.github/workflows/fixtures/**/package-lock.json\n.github/workflows/fixtures/**/pnpm-lock.yaml\n\n"
  },
  {
    "path": ".husky/pre-push",
    "content": "yarn check\n"
  },
  {
    "path": ".nvmrc",
    "content": "v22.14.0"
  },
  {
    "path": ".prettierignore",
    "content": "**/coverage\n**/fixtures\n**/__snapshots__\nlerna.json\npackages/website/\npackages/web-linter/out\ndist\n**/dist\n.yarn/releases\nyarn.lock\n.turbo\n\npackages/eslint-plugin/tests/e2e/**/*.html\nintegration-test-projects\nhtml-language.js"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"eslint.enable\": true,\n  \"eslint.validate\": [\n    \"javascript\", // ...\n    \"html\", // Add \"html\" to enable linting `.html` files.\n    \"xml\"\n  ],\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"never\"\n  },\n  \"typescript.tsdk\": \"node_modules/typescript/lib\",\n  \"editor.defaultFormatter\": \"esbenp.prettier-vscode\",\n  \"editor.formatOnSave\": true\n}\n"
  },
  {
    "path": ".yarn/releases/yarn-4.9.1.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var u7e=Object.create;var D_=Object.defineProperty;var f7e=Object.getOwnPropertyDescriptor;var A7e=Object.getOwnPropertyNames;var p7e=Object.getPrototypeOf,h7e=Object.prototype.hasOwnProperty;var ye=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+t+'\" is not supported')});var It=(t,e)=>()=>(t&&(e=t(t=0)),e);var L=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)D_(t,r,{get:e[r],enumerable:!0})},g7e=(t,e,r,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of A7e(e))!h7e.call(t,a)&&a!==r&&D_(t,a,{get:()=>e[a],enumerable:!(s=f7e(e,a))||s.enumerable});return t};var et=(t,e,r)=>(r=t!=null?u7e(p7e(t)):{},g7e(e||!t||!t.__esModule?D_(r,\"default\",{value:t,enumerable:!0}):r,t));var ui={};Vt(ui,{SAFE_TIME:()=>P$,S_IFDIR:()=>lx,S_IFLNK:()=>cx,S_IFMT:()=>_f,S_IFREG:()=>M2});var _f,lx,M2,cx,P$,x$=It(()=>{_f=61440,lx=16384,M2=32768,cx=40960,P$=456789e3});var or={};Vt(or,{EBADF:()=>Uo,EBUSY:()=>d7e,EEXIST:()=>w7e,EINVAL:()=>y7e,EISDIR:()=>C7e,ENOENT:()=>E7e,ENOSYS:()=>m7e,ENOTDIR:()=>I7e,ENOTEMPTY:()=>v7e,EOPNOTSUPP:()=>S7e,EROFS:()=>B7e,ERR_DIR_CLOSED:()=>b_});function wc(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function d7e(t){return wc(\"EBUSY\",t)}function m7e(t,e){return wc(\"ENOSYS\",`${t}, ${e}`)}function y7e(t){return wc(\"EINVAL\",`invalid argument, ${t}`)}function Uo(t){return wc(\"EBADF\",`bad file descriptor, ${t}`)}function E7e(t){return wc(\"ENOENT\",`no such file or directory, ${t}`)}function I7e(t){return wc(\"ENOTDIR\",`not a directory, ${t}`)}function C7e(t){return wc(\"EISDIR\",`illegal operation on a directory, ${t}`)}function w7e(t){return wc(\"EEXIST\",`file already exists, ${t}`)}function B7e(t){return wc(\"EROFS\",`read-only filesystem, ${t}`)}function v7e(t){return wc(\"ENOTEMPTY\",`directory not empty, ${t}`)}function S7e(t){return wc(\"EOPNOTSUPP\",`operation not supported, ${t}`)}function b_(){return wc(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var ux=It(()=>{});var el={};Vt(el,{BigIntStatsEntry:()=>iE,DEFAULT_MODE:()=>k_,DirEntry:()=>P_,StatEntry:()=>nE,areStatsEqual:()=>Q_,clearStats:()=>fx,convertToBigIntStats:()=>b7e,makeDefaultStats:()=>k$,makeEmptyStats:()=>D7e});function k$(){return new nE}function D7e(){return fx(k$())}function fx(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r==\"number\"?t[e]=0:typeof r==\"bigint\"?t[e]=BigInt(0):x_.types.isDate(r)&&(t[e]=new Date(0))}return t}function b7e(t){let e=new iE;for(let r in t)if(Object.hasOwn(t,r)){let s=t[r];typeof s==\"number\"?e[r]=BigInt(s):x_.types.isDate(s)&&(e[r]=new Date(s))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function Q_(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,s=e;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var x_,k_,P_,nE,iE,T_=It(()=>{x_=et(ye(\"util\")),k_=33188,P_=class{constructor(){this.name=\"\";this.path=\"\";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},nE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=k_;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},iE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(k_);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function T7e(t){let e,r;if(e=t.match(k7e))t=e[1];else if(r=t.match(Q7e))t=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return t;return t.replace(/\\//g,\"\\\\\")}function R7e(t){t=t.replace(/\\\\/g,\"/\");let e,r;return(e=t.match(P7e))?t=`/${e[1]}`:(r=t.match(x7e))&&(t=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),t}function Ax(t,e){return t===ue?T$(e):R_(e)}var _2,vt,Er,ue,K,Q$,P7e,x7e,k7e,Q7e,R_,T$,tl=It(()=>{_2=et(ye(\"path\")),vt={root:\"/\",dot:\".\",parent:\"..\"},Er={home:\"~\",nodeModules:\"node_modules\",manifest:\"package.json\",lockfile:\"yarn.lock\",virtual:\"__virtual__\",pnpJs:\".pnp.js\",pnpCjs:\".pnp.cjs\",pnpData:\".pnp.data.json\",pnpEsmLoader:\".pnp.loader.mjs\",rc:\".yarnrc.yml\",env:\".env\"},ue=Object.create(_2.default),K=Object.create(_2.default.posix);ue.cwd=()=>process.cwd();K.cwd=process.platform===\"win32\"?()=>R_(process.cwd()):process.cwd;process.platform===\"win32\"&&(K.resolve=(...t)=>t.length>0&&K.isAbsolute(t[0])?_2.default.posix.resolve(...t):_2.default.posix.resolve(K.cwd(),...t));Q$=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?\".\":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>Q$(ue,t,e);K.contains=(t,e)=>Q$(K,t,e);P7e=/^([a-zA-Z]:.*)$/,x7e=/^\\/\\/(\\.\\/)?(.*)$/,k7e=/^\\/([a-zA-Z]:.*)$/,Q7e=/^\\/unc\\/(\\.dot\\/)?(.*)$/;R_=process.platform===\"win32\"?R7e:t=>t,T$=process.platform===\"win32\"?T7e:t=>t;ue.fromPortablePath=T$;ue.toPortablePath=R_});async function px(t,e){let r=\"0123456789abcdef\";await t.mkdirPromise(e.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),e.indexPath}async function R$(t,e,r,s,a){let n=t.pathUtils.normalize(e),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:md,mtime:md}:await r.lstatPromise(c);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await F_(f,p,t,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function F_(t,e,r,s,a,n,c){let f=c.didParentExist?await F$(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:md,mtime:md}:p,C;switch(!0){case p.isDirectory():C=await N7e(t,e,r,s,f,a,n,p,c);break;case p.isFile():C=await M7e(t,e,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await _7e(t,e,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function F$(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function N7e(t,e,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!==\"EEXIST\")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await F_(t,e,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async P=>{await F_(t,e,r,r.pathUtils.join(s,P),n,n.pathUtils.join(c,P),C)}))).some(P=>P)&&(h=!0);return h}async function O7e(t,e,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:\"sha1\"}),C=420,S=f.mode&511,P=`${E}${S!==C?S.toString(8):\"\"}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${P}.dat`),R;(ce=>(ce[ce.Lock=0]=\"Lock\",ce[ce.Rename=1]=\"Rename\"))(R||={});let N=1,U=await F$(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,Ae=U?.mtimeMs!==F7e;if(ie&&Ae&&h.autoRepair&&(N=0,U=null),!ie)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1}let W=!U&&N===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,te=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),N===1&&W)){let ie=await n.readFilePromise(c);await r.writeFilePromise(W,ie);try{await r.linkPromise(W,I)}catch(Ae){if(Ae.code===\"EEXIST\")te=!0,await r.unlinkPromise(W);else throw Ae}}a||await r.linkPromise(I,s)}),e.push(async()=>{U||(await r.lutimesPromise(I,md,md),S!==C&&await r.chmodPromise(I,S)),W&&!te&&await r.unlinkPromise(W)}),!1}async function L7e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function M7e(t,e,r,s,a,n,c,f,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?O7e(t,e,r,s,a,n,c,f,p,p.linkStrategy):L7e(t,e,r,s,a,n,c,f,p)}async function _7e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(Ax(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var md,F7e,N_=It(()=>{tl();md=new Date(456789e3*1e3),F7e=md.getTime()});function hx(t,e,r,s){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let c=t.pathUtils.join(e,n);return Object.assign(t.statSync(c),{name:n,path:void 0})};return new U2(e,a,s)}var U2,N$=It(()=>{ux();U2=class{constructor(e,r,s={}){this.path=e;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw b_()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<\"u\"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<\"u\"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function O$(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var L$,gx,M$=It(()=>{L$=ye(\"events\");T_();gx=class t extends L$.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new t(r,s,a);return n.start(),n}start(){O$(this.status,\"ready\"),this.status=\"running\",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(\"change\",this.lastStats,this.lastStats)},3)}stop(){O$(this.status,\"running\"),this.status=\"stopped\",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(\"stop\")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new iE:new nE;return fx(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;Q_(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener(\"change\",r);let s=this.changeListeners.get(r);typeof s<\"u\"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function sE(t,e,r,s){let a,n,c,f;switch(typeof r){case\"function\":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=dx.get(t);typeof p>\"u\"&&dx.set(t,p=new Map);let h=p.get(e);return typeof h>\"u\"&&(h=gx.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function yd(t,e,r){let s=dx.get(t);if(typeof s>\"u\")return;let a=s.get(e);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(e)))}function Ed(t){let e=dx.get(t);if(!(typeof e>\"u\"))for(let r of e.keys())yd(t,r)}var dx,O_=It(()=>{M$();dx=new WeakMap});function U7e(t){let e=t.match(/\\r?\\n/g);if(e===null)return U$.EOL;let r=e.filter(a=>a===`\\r\n`).length,s=e.length-r;return r>s?`\\r\n`:`\n`}function Id(t,e){return e.replace(/\\r?\\n/g,U7e(t))}var _$,U$,Ep,Uf,Cd=It(()=>{_$=ye(\"crypto\"),U$=ye(\"os\");N_();tl();Ep=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(e,{algorithm:r=\"sha512\"}={}){let s=await this.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,_$.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest(\"hex\")}finally{await this.closePromise(s)}}async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code===\"ENOENT\")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(e,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(e);break}catch(c){if(c.code!==\"EBUSY\"&&c.code!==\"ENOTEMPTY\")throw c;n<s&&await new Promise(f=>setTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await R$(this,e,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(e);let p=s.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(e);let p=s.readlinkSync(r);this.symlinkSync(Ax(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,s):this.changeFileTextPromise(e,r,s)}async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:s})}async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(e,\"utf8\")}catch{}let c=s?Id(n,r):r;n!==c&&await this.writeFilePromise(e,c,{mode:a})}changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,s):this.changeFileTextSync(e,r,s)}changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:s})}changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(e,\"utf8\")}catch{}let c=s?Id(n,r):r;n!==c&&this.writeFileSync(e,c,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.code===\"EXDEV\")await this.copyPromise(r,e),await this.removePromise(e);else throw s}}moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code===\"EXDEV\")this.copySync(r,e),this.removeSync(e);else throw s}}async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,\"utf8\");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}readJsonSync(e){let r=this.readFileSync(e,\"utf8\");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}async writeJsonPromise(e,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await this.lutimesPromise(e,s.atime,s.mtime)}async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<\"u\"&&(e=a),this.lutimesSync(e,s.atime,s.mtime)}},Uf=class extends Ep{constructor(){super(K)}}});var Hs,Ip=It(()=>{Cd();Hs=class extends Ep{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e),r,s)}openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,a,n)}readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(e,r,s):await this.baseFs.writePromise(e,r,s,a,n)}writeSync(e,r,s,a,n){return typeof r==\"string\"?this.baseFs.writeSync(e,r,s):this.baseFs.writeSync(e,r,s,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase(e),r,s)}chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),s)}copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),s)}async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,s)}appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,s)}async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,s)}writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,s)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBase(e),r,s)}utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapToBase(e),r,s)}lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,s){return this.baseFs.watch(this.mapToBase(e),r,s)}watchFile(e,r,s){return this.baseFs.watchFile(this.mapToBase(e),r,s)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e==\"number\"?e:this.mapToBase(e)}}});var Hf,H$=It(()=>{Ip();Hf=class extends Hs{constructor(e,{baseFs:r,pathUtils:s}){super(s),this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}}});function j$(t){let e=t;return typeof t.path==\"string\"&&(e.path=ue.toPortablePath(t.path)),e}var q$,Yn,wd=It(()=>{q$=et(ye(\"fs\"));Cd();tl();Yn=class extends Uf{constructor(e=q$.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(e){return K.resolve(e)}async openPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.open(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}openSync(e,r,s){return this.realFs.openSync(ue.fromPortablePath(e),r,s)}async opendirPromise(e,r){return await new Promise((s,a)=>{typeof r<\"u\"?this.realFs.opendir(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.opendir(ue.fromPortablePath(e),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,\"path\",{value:e,configurable:!0,writable:!0}),a})}opendirSync(e,r){let a=typeof r<\"u\"?this.realFs.opendirSync(ue.fromPortablePath(e),r):this.realFs.opendirSync(ue.fromPortablePath(e));return Object.defineProperty(a,\"path\",{value:e,configurable:!0,writable:!0}),a}async readPromise(e,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(e,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(e,r,s,a,n){return this.realFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return await new Promise((c,f)=>typeof r==\"string\"?this.realFs.write(e,r,s,this.makeCallback(c,f)):this.realFs.write(e,r,s,a,n,this.makeCallback(c,f)))}writeSync(e,r,s,a,n){return typeof r==\"string\"?this.realFs.writeSync(e,r,s):this.realFs.writeSync(e,r,s,a,n)}async closePromise(e){await new Promise((r,s)=>{this.realFs.close(e,this.makeCallback(r,s))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let s=e!==null?ue.fromPortablePath(e):e;return this.realFs.createReadStream(s,r)}createWriteStream(e,r){let s=e!==null?ue.fromPortablePath(e):e;return this.realFs.createWriteStream(s,r)}async realpathPromise(e){return await new Promise((r,s)=>{this.realFs.realpath(ue.fromPortablePath(e),{},this.makeCallback(r,s))}).then(r=>ue.toPortablePath(r))}realpathSync(e){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(ue.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(ue.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((s,a)=>{this.realFs.access(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}existsSync(e){return this.realFs.existsSync(ue.fromPortablePath(e))}async statPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.stat(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.stat(ue.fromPortablePath(e),this.makeCallback(s,a))})}statSync(e,r){return r?this.realFs.statSync(ue.fromPortablePath(e),r):this.realFs.statSync(ue.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.fstat(e,r,this.makeCallback(s,a)):this.realFs.fstat(e,this.makeCallback(s,a))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.lstat(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.lstat(ue.fromPortablePath(e),this.makeCallback(s,a))})}lstatSync(e,r){return r?this.realFs.lstatSync(ue.fromPortablePath(e),r):this.realFs.lstatSync(ue.fromPortablePath(e))}async fchmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.fchmod(e,r,this.makeCallback(s,a))})}fchmodSync(e,r){return this.realFs.fchmodSync(e,r)}async chmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.chmod(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}chmodSync(e,r){return this.realFs.chmodSync(ue.fromPortablePath(e),r)}async fchownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.fchown(e,r,s,this.makeCallback(a,n))})}fchownSync(e,r,s){return this.realFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.chown(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}chownSync(e,r,s){return this.realFs.chownSync(ue.fromPortablePath(e),r,s)}async renamePromise(e,r){return await new Promise((s,a)=>{this.realFs.rename(ue.fromPortablePath(e),ue.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(e,r){return this.realFs.renameSync(ue.fromPortablePath(e),ue.fromPortablePath(r))}async copyFilePromise(e,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(ue.fromPortablePath(e),ue.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(e,r,s=0){return this.realFs.copyFileSync(ue.fromPortablePath(e),ue.fromPortablePath(r),s)}async appendFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e==\"string\"?ue.fromPortablePath(e):e;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(e,r,s){let a=typeof e==\"string\"?ue.fromPortablePath(e):e;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e==\"string\"?ue.fromPortablePath(e):e;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(e,r,s){let a=typeof e==\"string\"?ue.fromPortablePath(e):e;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(e){return await new Promise((r,s)=>{this.realFs.unlink(ue.fromPortablePath(e),this.makeCallback(r,s))})}unlinkSync(e){return this.realFs.unlinkSync(ue.fromPortablePath(e))}async utimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.utimes(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}utimesSync(e,r,s){this.realFs.utimesSync(ue.fromPortablePath(e),r,s)}async lutimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(ue.fromPortablePath(e),r,s,this.makeCallback(a,n))})}lutimesSync(e,r,s){this.realFs.lutimesSync(ue.fromPortablePath(e),r,s)}async mkdirPromise(e,r){return await new Promise((s,a)=>{this.realFs.mkdir(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}mkdirSync(e,r){return this.realFs.mkdirSync(ue.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rmdir(ue.fromPortablePath(e),this.makeCallback(s,a))})}rmdirSync(e,r){return this.realFs.rmdirSync(ue.fromPortablePath(e),r)}async rmPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rm(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rm(ue.fromPortablePath(e),this.makeCallback(s,a))})}rmSync(e,r){return this.realFs.rmSync(ue.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((s,a)=>{this.realFs.link(ue.fromPortablePath(e),ue.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(e,r){return this.realFs.linkSync(ue.fromPortablePath(e),ue.fromPortablePath(r))}async symlinkPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.symlink(ue.fromPortablePath(e.replace(/\\/+$/,\"\")),ue.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(e,r,s){return this.realFs.symlinkSync(ue.fromPortablePath(e.replace(/\\/+$/,\"\")),ue.fromPortablePath(r),s)}async readFilePromise(e,r){return await new Promise((s,a)=>{let n=typeof e==\"string\"?ue.fromPortablePath(e):e;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(e,r){let s=typeof e==\"string\"?ue.fromPortablePath(e):e;return this.realFs.readFileSync(s,r)}async readdirPromise(e,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform===\"win32\"?r.withFileTypes?this.realFs.readdir(ue.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(j$)),a)):this.realFs.readdir(ue.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(ue.toPortablePath)),a)):this.realFs.readdir(ue.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.readdir(ue.fromPortablePath(e),this.makeCallback(s,a))})}readdirSync(e,r){return r?r.recursive&&process.platform===\"win32\"?r.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(e),r).map(j$):this.realFs.readdirSync(ue.fromPortablePath(e),r).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(e),r):this.realFs.readdirSync(ue.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,s)=>{this.realFs.readlink(ue.fromPortablePath(e),this.makeCallback(r,s))}).then(r=>ue.toPortablePath(r))}readlinkSync(e){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.truncate(ue.fromPortablePath(e),r,this.makeCallback(s,a))})}truncateSync(e,r){return this.realFs.truncateSync(ue.fromPortablePath(e),r)}async ftruncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.ftruncate(e,r,this.makeCallback(s,a))})}ftruncateSync(e,r){return this.realFs.ftruncateSync(e,r)}watch(e,r,s){return this.realFs.watch(ue.fromPortablePath(e),r,s)}watchFile(e,r,s){return this.realFs.watchFile(ue.fromPortablePath(e),r,s)}unwatchFile(e,r){return this.realFs.unwatchFile(ue.fromPortablePath(e),r)}makeCallback(e,r){return(s,a)=>{s?r(s):e(a)}}}});var Sn,G$=It(()=>{wd();Ip();tl();Sn=class extends Hs{constructor(e,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?K.normalize(e):this.baseFs.resolve(K.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}}});var W$,jf,Y$=It(()=>{wd();Ip();tl();W$=vt.root,jf=class extends Hs{constructor(e,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.resolve(vt.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(W$,e));if(r.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(W$,this.pathUtils.relative(this.target,e))}}});var oE,V$=It(()=>{Ip();oE=class extends Hs{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Bd,rl,n0,K$=It(()=>{Bd=ye(\"fs\");Cd();wd();O_();ux();tl();rl=4278190080,n0=class extends Uf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=Bd.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error(\"The magic byte must be set to a round value between 1 and 127 included\");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Ed(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Ed(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&rl)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Uo(\"read\");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&rl)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Uo(\"readSync\");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&rl)!==this.magic)return typeof s==\"string\"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Uo(\"write\");let[p,h]=f;return typeof s==\"string\"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&rl)!==this.magic)return typeof s==\"string\"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Uo(\"writeSync\");let[p,h]=f;return typeof s==\"string\"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&rl)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>\"u\")throw Uo(\"close\");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&rl)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>\"u\")throw Uo(\"closeSync\");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=ue.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>\"u\"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>\"u\"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&rl)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Uo(\"fstat\");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&rl)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Uo(\"fstatSync\");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&rl)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Uo(\"fchmod\");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&rl)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Uo(\"fchmodSync\");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&rl)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Uo(\"fchown\");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&rl)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Uo(\"fchownSync\");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&Bd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:\"EXDEV\"});if(a&Bd.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&Bd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:\"EXDEV\"});if(a&Bd.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&rl)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Uo(\"ftruncate\");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&rl)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Uo(\"ftruncateSync\");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>sE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>yd(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath===\"/\"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath===\"/\"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s=\"\";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&Bd.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,mx,J$=It(()=>{Cd();tl();er=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),mx=class t extends Ep{static{this.instance=new t}constructor(){super(K)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(e){throw er()}existsSync(e){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(e){throw er()}fstatSync(e){throw er()}async lstatPromise(e){throw er()}lstatSync(e){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(e,r){throw er()}ftruncateSync(e,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var i0,z$=It(()=>{Ip();tl();i0=class extends Hs{constructor(e){super(ue),this.baseFs=e}mapFromBase(e){return ue.fromPortablePath(e)}mapToBase(e){return ue.toPortablePath(e)}}});var H7e,L_,j7e,fo,Z$=It(()=>{wd();Ip();tl();H7e=/^[0-9]+$/,L_=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,j7e=/^([^/]+-)?[a-f0-9]+$/,fo=class t extends Hs{static makeVirtualPath(e,r,s){if(K.basename(e)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!K.basename(r).match(j7e))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let n=K.relative(K.dirname(e),s).split(\"/\"),c=0;for(;c<n.length&&n[c]===\"..\";)c+=1;let f=n.slice(c);return K.join(e,r,String(c),...f)}static resolveVirtual(e){let r=e.match(L_);if(!r||!r[3]&&r[5])return e;let s=K.dirname(r[1]);if(!r[3]||!r[4])return s;if(!H7e.test(r[4]))return e;let n=Number(r[4]),c=\"../\".repeat(n),f=r[5]||\".\";return t.resolveVirtual(K.join(s,c,f))}constructor({baseFs:e=new Yn}={}){super(K),this.baseFs=e}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(e){let r=e.match(L_);if(!r)return this.baseFs.realpathSync(e);if(!r[5])return e;let s=this.baseFs.realpathSync(this.mapToBase(e));return t.makeVirtualPath(r[1],r[3],s)}async realpathPromise(e){let r=e.match(L_);if(!r)return await this.baseFs.realpathPromise(e);if(!r[5])return e;let s=await this.baseFs.realpathPromise(this.mapToBase(e));return t.makeVirtualPath(r[1],r[3],s)}mapToBase(e){if(e===\"\")return e;if(this.pathUtils.isAbsolute(e))return t.resolveVirtual(e);let r=t.resolveVirtual(this.baseFs.resolve(vt.dot)),s=t.resolveVirtual(this.baseFs.resolve(e));return K.relative(r,s)||vt.dot}mapFromBase(e){return e}}});function q7e(t,e){return typeof M_.default.isUtf8<\"u\"?M_.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var M_,X$,$$,yx,eee=It(()=>{M_=et(ye(\"buffer\")),X$=ye(\"url\"),$$=ye(\"util\");Ip();tl();yx=class extends Hs{constructor(e){super(ue),this.baseFs=e}mapFromBase(e){return e}mapToBase(e){if(typeof e==\"string\")return e;if(e instanceof URL)return(0,X$.fileURLToPath)(e);if(Buffer.isBuffer(e)){let r=e.toString();if(!q7e(e,r))throw new Error(\"Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942\");return r}throw new Error(`Unsupported path type: ${(0,$$.inspect)(e)}`)}}});var see,Ho,Cp,s0,Ex,Ix,aE,Nu,Ou,tee,ree,nee,iee,H2,oee=It(()=>{see=ye(\"readline\"),Ho=Symbol(\"kBaseFs\"),Cp=Symbol(\"kFd\"),s0=Symbol(\"kClosePromise\"),Ex=Symbol(\"kCloseResolve\"),Ix=Symbol(\"kCloseReject\"),aE=Symbol(\"kRefs\"),Nu=Symbol(\"kRef\"),Ou=Symbol(\"kUnref\"),H2=class{constructor(e,r){this[iee]=1;this[nee]=void 0;this[ree]=void 0;this[tee]=void 0;this[Ho]=r,this[Cp]=e}get fd(){return this[Cp]}async appendFile(e,r){try{this[Nu](this.appendFile);let s=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[Ho].appendFilePromise(this.fd,e,s?{encoding:s}:void 0)}finally{this[Ou]()}}async chown(e,r){try{return this[Nu](this.chown),await this[Ho].fchownPromise(this.fd,e,r)}finally{this[Ou]()}}async chmod(e){try{return this[Nu](this.chmod),await this[Ho].fchmodPromise(this.fd,e)}finally{this[Ou]()}}createReadStream(e){return this[Ho].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Ho].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(e,r,s,a){try{this[Nu](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,s=e.length??n.byteLength,a=e.position??null),r??=0,s??=0,s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Ho].readPromise(this.fd,n,r,s,a),buffer:n}}finally{this[Ou]()}}async readFile(e){try{this[Nu](this.readFile);let r=(typeof e==\"string\"?e:e?.encoding)??void 0;return await this[Ho].readFilePromise(this.fd,r)}finally{this[Ou]()}}readLines(e){return(0,see.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Nu](this.stat),await this[Ho].fstatPromise(this.fd,e)}finally{this[Ou]()}}async truncate(e){try{return this[Nu](this.truncate),await this[Ho].ftruncatePromise(this.fd,e)}finally{this[Ou]()}}utimes(e,r){throw new Error(\"Method not implemented.\")}async writeFile(e,r){try{this[Nu](this.writeFile);let s=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[Ho].writeFilePromise(this.fd,e,s)}finally{this[Ou]()}}async write(...e){try{if(this[Nu](this.write),ArrayBuffer.isView(e[0])){let[r,s,a,n]=e;return{bytesWritten:await this[Ho].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=e;return{bytesWritten:await this[Ho].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Ou]()}}async writev(e,r){try{this[Nu](this.writev);let s=0;if(typeof r<\"u\")for(let a of e){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);s+=n.bytesWritten}return{buffers:e,bytesWritten:s}}finally{this[Ou]()}}readv(e,r){throw new Error(\"Method not implemented.\")}close(){if(this[Cp]===-1)return Promise.resolve();if(this[s0])return this[s0];if(this[aE]--,this[aE]===0){let e=this[Cp];this[Cp]=-1,this[s0]=this[Ho].closePromise(e).finally(()=>{this[s0]=void 0})}else this[s0]=new Promise((e,r)=>{this[Ex]=e,this[Ix]=r}).finally(()=>{this[s0]=void 0,this[Ix]=void 0,this[Ex]=void 0});return this[s0]}[(Ho,Cp,iee=aE,nee=s0,ree=Ex,tee=Ix,Nu)](e){if(this[Cp]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=e.name,r}this[aE]++}[Ou](){if(this[aE]--,this[aE]===0){let e=this[Cp];this[Cp]=-1,this[Ho].closePromise(e).then(this[Ex],this[Ix])}}}});function j2(t,e){e=new yx(e);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[lE.promisify.custom]<\"u\"&&(n[lE.promisify.custom]=c[lE.promisify.custom])};{r(t,\"exists\",(s,...a)=>{let c=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(t,\"read\",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of aee){let a=s.replace(/Promise$/,\"\");if(typeof t[a]>\"u\")continue;let n=e[s];if(typeof n>\"u\")continue;r(t,a,(...f)=>{let h=typeof f[f.length-1]==\"function\"?f.pop():()=>{};process.nextTick(()=>{n.apply(e,f).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,\"existsSync\",s=>{try{return e.existsSync(s)}catch{return!1}}),r(t,\"readSync\",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),e.readSync(a,n,c,f,p))});for(let s of G7e){let a=s;if(typeof t[a]>\"u\")continue;let n=e[s];typeof n>\"u\"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let s=t.promises;for(let a of aee){let n=a.replace(/Promise$/,\"\");if(typeof s[n]>\"u\")continue;let c=e[a];typeof c>\"u\"||a!==\"open\"&&r(s,n,(f,...p)=>f instanceof H2?f[n].apply(f,p):c.call(e,f,...p))}r(s,\"open\",async(...a)=>{let n=await e.openPromise(...a);return new H2(n,e)})}t.read[lE.promisify.custom]=async(s,a,...n)=>({bytesRead:await e.readPromise(s,a,...n),buffer:a}),t.write[lE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await e.writePromise(s,a,...n),buffer:a})}function Cx(t,e){let r=Object.create(t);return j2(r,e),r}var lE,G7e,aee,lee=It(()=>{lE=ye(\"util\");eee();oee();G7e=new Set([\"accessSync\",\"appendFileSync\",\"createReadStream\",\"createWriteStream\",\"chmodSync\",\"fchmodSync\",\"chownSync\",\"fchownSync\",\"closeSync\",\"copyFileSync\",\"linkSync\",\"lstatSync\",\"fstatSync\",\"lutimesSync\",\"mkdirSync\",\"openSync\",\"opendirSync\",\"readlinkSync\",\"readFileSync\",\"readdirSync\",\"readlinkSync\",\"realpathSync\",\"renameSync\",\"rmdirSync\",\"rmSync\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),aee=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"rmPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function cee(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${t}${e}`}function uee(){if(__)return __;let t=ue.toPortablePath(fee.default.tmpdir()),e=le.realpathSync(t);return process.once(\"exit\",()=>{le.rmtempSync()}),__={tmpdir:t,realTmpdir:e}}var fee,Lu,__,le,Aee=It(()=>{fee=et(ye(\"os\"));wd();tl();Lu=new Set,__=null;le=Object.assign(new Yn,{detachTemp(t){Lu.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=uee();for(;;){let s=cee(\"xfs-\");try{this.mkdirSync(K.join(e,s))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=K.join(r,s);if(Lu.add(a),typeof t>\"u\")return a;try{return t(a)}finally{if(Lu.has(a)){Lu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=uee();for(;;){let s=cee(\"xfs-\");try{await this.mkdirPromise(K.join(e,s))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=K.join(r,s);if(Lu.add(a),typeof t>\"u\")return a;try{return await t(a)}finally{if(Lu.has(a)){Lu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lu.values()).map(async t=>{try{await le.removePromise(t,{maxRetries:0}),Lu.delete(t)}catch{}}))},rmtempSync(){for(let t of Lu)try{le.removeSync(t),Lu.delete(t)}catch{}}})});var q2={};Vt(q2,{AliasFS:()=>Hf,BasePortableFakeFS:()=>Uf,CustomDir:()=>U2,CwdFS:()=>Sn,FakeFS:()=>Ep,Filename:()=>Er,JailFS:()=>jf,LazyFS:()=>oE,MountFS:()=>n0,NoFS:()=>mx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>i0,ProxiedFS:()=>Hs,VirtualFS:()=>fo,constants:()=>ui,errors:()=>or,extendFs:()=>Cx,normalizeLineEndings:()=>Id,npath:()=>ue,opendir:()=>hx,patchFs:()=>j2,ppath:()=>K,setupCopyIndex:()=>px,statUtils:()=>el,unwatchAllFiles:()=>Ed,unwatchFile:()=>yd,watchFile:()=>sE,xfs:()=>le});var bt=It(()=>{x$();ux();T_();N_();N$();O_();Cd();tl();tl();H$();Cd();G$();Y$();V$();K$();J$();wd();z$();Ip();Z$();lee();Aee()});var mee=L((A5t,dee)=>{dee.exports=gee;gee.sync=Y7e;var pee=ye(\"fs\");function W7e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return!0;for(var s=0;s<r.length;s++){var a=r[s].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function hee(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:W7e(e,r)}function gee(t,e,r){pee.stat(t,function(s,a){r(s,s?!1:hee(a,t,e))})}function Y7e(t,e){return hee(pee.statSync(t),t,e)}});var wee=L((p5t,Cee)=>{Cee.exports=Eee;Eee.sync=V7e;var yee=ye(\"fs\");function Eee(t,e,r){yee.stat(t,function(s,a){r(s,s?!1:Iee(a,e))})}function V7e(t,e){return Iee(yee.statSync(t),e)}function Iee(t,e){return t.isFile()&&K7e(t,e)}function K7e(t,e){var r=t.mode,s=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),c=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),f=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var vee=L((g5t,Bee)=>{var h5t=ye(\"fs\"),wx;process.platform===\"win32\"||global.TESTING_WINDOWS?wx=mee():wx=wee();Bee.exports=U_;U_.sync=J7e;function U_(t,e,r){if(typeof e==\"function\"&&(r=e,e={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(s,a){U_(t,e||{},function(n,c){n?a(n):s(c)})})}wx(t,e||{},function(s,a){s&&(s.code===\"EACCES\"||e&&e.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function J7e(t,e){try{return wx.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var Qee=L((d5t,kee)=>{var cE=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",See=ye(\"path\"),z7e=cE?\";\":\":\",Dee=vee(),bee=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),Pee=(t,e)=>{let r=e.colon||z7e,s=t.match(/\\//)||cE&&t.match(/\\\\/)?[\"\"]:[...cE?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],a=cE?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=cE?a.split(r):[\"\"];return cE&&t.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:s,pathExt:n,pathExtExe:a}},xee=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:s,pathExt:a,pathExtExe:n}=Pee(t,e),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return e.all&&c.length?E(c):C(bee(t));let S=s[h],P=/^\".*\"$/.test(S)?S.slice(1,-1):S,I=See.join(P,t),R=!P&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+I:I;E(p(R,h,0))}),p=(h,E,C)=>new Promise((S,P)=>{if(C===a.length)return S(f(E+1));let I=a[C];Dee(h+I,{pathExt:n},(R,N)=>{if(!R&&N)if(e.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},Z7e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=Pee(t,e),n=[];for(let c=0;c<r.length;c++){let f=r[c],p=/^\".*\"$/.test(f)?f.slice(1,-1):f,h=See.join(p,t),E=!p&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+h:h;for(let C=0;C<s.length;C++){let S=E+s[C];try{if(Dee.sync(S,{pathExt:a}))if(e.all)n.push(S);else return S}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw bee(t)};kee.exports=xee;xee.sync=Z7e});var Ree=L((m5t,H_)=>{\"use strict\";var Tee=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(s=>s.toUpperCase()===\"PATH\")||\"Path\"};H_.exports=Tee;H_.exports.default=Tee});var Lee=L((y5t,Oee)=>{\"use strict\";var Fee=ye(\"path\"),X7e=Qee(),$7e=Ree();function Nee(t,e){let r=t.options.env||process.env,s=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let c;try{c=X7e.sync(t.command,{path:r[$7e({env:r})],pathExt:e?Fee.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=Fee.resolve(a?t.options.cwd:\"\",c)),c}function eKe(t){return Nee(t)||Nee(t,!0)}Oee.exports=eKe});var Mee=L((E5t,q_)=>{\"use strict\";var j_=/([()\\][%!^\"`<>&|;, *?])/g;function tKe(t){return t=t.replace(j_,\"^$1\"),t}function rKe(t,e){return t=`${t}`,t=t.replace(/(?=(\\\\+?)?)\\1\"/g,'$1$1\\\\\"'),t=t.replace(/(?=(\\\\+?)?)\\1$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(j_,\"^$1\"),e&&(t=t.replace(j_,\"^$1\")),t}q_.exports.command=tKe;q_.exports.argument=rKe});var Uee=L((I5t,_ee)=>{\"use strict\";_ee.exports=/^#!(.*)/});var jee=L((C5t,Hee)=>{\"use strict\";var nKe=Uee();Hee.exports=(t=\"\")=>{let e=t.match(nKe);if(!e)return null;let[r,s]=e[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?s:s?`${a} ${s}`:a}});var Gee=L((w5t,qee)=>{\"use strict\";var G_=ye(\"fs\"),iKe=jee();function sKe(t){let r=Buffer.alloc(150),s;try{s=G_.openSync(t,\"r\"),G_.readSync(s,r,0,150,0),G_.closeSync(s)}catch{}return iKe(r.toString())}qee.exports=sKe});var Kee=L((B5t,Vee)=>{\"use strict\";var oKe=ye(\"path\"),Wee=Lee(),Yee=Mee(),aKe=Gee(),lKe=process.platform===\"win32\",cKe=/\\.(?:com|exe)$/i,uKe=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function fKe(t){t.file=Wee(t);let e=t.file&&aKe(t.file);return e?(t.args.unshift(t.file),t.command=e,Wee(t)):t.file}function AKe(t){if(!lKe)return t;let e=fKe(t),r=!cKe.test(e);if(t.options.forceShell||r){let s=uKe.test(e);t.command=oKe.normalize(t.command),t.command=Yee.command(t.command),t.args=t.args.map(n=>Yee.argument(n,s));let a=[t.command].concat(t.args).join(\" \");t.args=[\"/d\",\"/s\",\"/c\",`\"${a}\"`],t.command=process.env.comspec||\"cmd.exe\",t.options.windowsVerbatimArguments=!0}return t}function pKe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let s={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?s:AKe(s)}Vee.exports=pKe});var Zee=L((v5t,zee)=>{\"use strict\";var W_=process.platform===\"win32\";function Y_(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function hKe(t,e){if(!W_)return;let r=t.emit;t.emit=function(s,a){if(s===\"exit\"){let n=Jee(a,e);if(n)return r.call(t,\"error\",n)}return r.apply(t,arguments)}}function Jee(t,e){return W_&&t===1&&!e.file?Y_(e.original,\"spawn\"):null}function gKe(t,e){return W_&&t===1&&!e.file?Y_(e.original,\"spawnSync\"):null}zee.exports={hookChildProcess:hKe,verifyENOENT:Jee,verifyENOENTSync:gKe,notFoundError:Y_}});var J_=L((S5t,uE)=>{\"use strict\";var Xee=ye(\"child_process\"),V_=Kee(),K_=Zee();function $ee(t,e,r){let s=V_(t,e,r),a=Xee.spawn(s.command,s.args,s.options);return K_.hookChildProcess(a,s),a}function dKe(t,e,r){let s=V_(t,e,r),a=Xee.spawnSync(s.command,s.args,s.options);return a.error=a.error||K_.verifyENOENTSync(a.status,s),a}uE.exports=$ee;uE.exports.spawn=$ee;uE.exports.sync=dKe;uE.exports._parse=V_;uE.exports._enoent=K_});var tte=L((D5t,ete)=>{\"use strict\";function mKe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function vd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,vd)}mKe(vd,Error);vd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function yKe(t,e){e=e!==void 0?e:{};var r={},s={Start:Ya},a=Ya,n=function(O){return O||[]},c=function(O,J,re){return[{command:O,type:J}].concat(re||[])},f=function(O,J){return[{command:O,type:J||\";\"}]},p=function(O){return O},h=\";\",E=ur(\";\",!1),C=\"&\",S=ur(\"&\",!1),P=function(O,J){return J?{chain:O,then:J}:{chain:O}},I=function(O,J){return{type:O,line:J}},R=\"&&\",N=ur(\"&&\",!1),U=\"||\",W=ur(\"||\",!1),te=function(O,J){return J?{...O,then:J}:O},ie=function(O,J){return{type:O,chain:J}},Ae=\"|&\",ce=ur(\"|&\",!1),me=\"|\",pe=ur(\"|\",!1),Be=\"=\",Ce=ur(\"=\",!1),g=function(O,J){return{name:O,args:[J]}},we=function(O){return{name:O,args:[]}},Ee=\"(\",fe=ur(\"(\",!1),se=\")\",X=ur(\")\",!1),De=function(O,J){return{type:\"subshell\",subshell:O,args:J}},Re=\"{\",gt=ur(\"{\",!1),j=\"}\",rt=ur(\"}\",!1),Fe=function(O,J){return{type:\"group\",group:O,args:J}},Ne=function(O,J){return{type:\"command\",args:J,envs:O}},Pe=function(O){return{type:\"envs\",envs:O}},Ye=function(O){return O},ke=function(O){return O},it=/^[0-9]/,_e=zi([[\"0\",\"9\"]],!1,!1),x=function(O,J,re){return{type:\"redirection\",subtype:J,fd:O!==null?parseInt(O):null,args:[re]}},w=\">>\",b=ur(\">>\",!1),y=\">&\",F=ur(\">&\",!1),z=\">\",Z=ur(\">\",!1),$=\"<<<\",oe=ur(\"<<<\",!1),xe=\"<&\",Te=ur(\"<&\",!1),lt=\"<\",Et=ur(\"<\",!1),qt=function(O){return{type:\"argument\",segments:[].concat(...O)}},ir=function(O){return O},Pt=\"$'\",gn=ur(\"$'\",!1),Pr=\"'\",Ir=ur(\"'\",!1),Nr=function(O){return[{type:\"text\",text:O}]},nn='\"\"',oi=ur('\"\"',!1),wo=function(){return{type:\"text\",text:\"\"}},rs='\"',eo=ur('\"',!1),Bo=function(O){return O},Hi=function(O){return{type:\"arithmetic\",arithmetic:O,quoted:!0}},to=function(O){return{type:\"shell\",shell:O,quoted:!0}},vo=function(O){return{type:\"variable\",...O,quoted:!0}},RA=function(O){return{type:\"text\",text:O}},pf=function(O){return{type:\"arithmetic\",arithmetic:O,quoted:!1}},Eh=function(O){return{type:\"shell\",shell:O,quoted:!1}},Ih=function(O){return{type:\"variable\",...O,quoted:!1}},ro=function(O){return{type:\"glob\",pattern:O}},jn=/^[^']/,Rs=zi([\"'\"],!0,!1),no=function(O){return O.join(\"\")},lu=/^[^$\"]/,cu=zi([\"$\",'\"'],!0,!1),uu=`\\\\\n`,FA=ur(`\\\\\n`,!1),NA=function(){return\"\"},aa=\"\\\\\",la=ur(\"\\\\\",!1),OA=/^[\\\\$\"`]/,gr=zi([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),So=function(O){return O},Me=\"\\\\a\",fu=ur(\"\\\\a\",!1),Cr=function(){return\"a\"},hf=\"\\\\b\",LA=ur(\"\\\\b\",!1),MA=function(){return\"\\b\"},Au=/^[Ee]/,pu=zi([\"E\",\"e\"],!1,!1),ac=function(){return\"\\x1B\"},ve=\"\\\\f\",Nt=ur(\"\\\\f\",!1),lc=function(){return\"\\f\"},Ni=\"\\\\n\",io=ur(\"\\\\n\",!1),Rt=function(){return`\n`},xn=\"\\\\r\",ca=ur(\"\\\\r\",!1),ji=function(){return\"\\r\"},Oi=\"\\\\t\",Oa=ur(\"\\\\t\",!1),dn=function(){return\"\t\"},Jn=\"\\\\v\",hu=ur(\"\\\\v\",!1),Ch=function(){return\"\\v\"},La=/^[\\\\'\"?]/,Ma=zi([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),Ua=function(O){return String.fromCharCode(parseInt(O,16))},Xe=\"\\\\x\",Ha=ur(\"\\\\x\",!1),gf=\"\\\\u\",cc=ur(\"\\\\u\",!1),wn=\"\\\\U\",ua=ur(\"\\\\U\",!1),_A=function(O){return String.fromCodePoint(parseInt(O,16))},UA=/^[0-7]/,fa=zi([[\"0\",\"7\"]],!1,!1),vl=/^[0-9a-fA-f]/,Mt=zi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),kn=Ef(),Aa=\"{}\",ja=ur(\"{}\",!1),ns=function(){return\"{}\"},uc=\"-\",gu=ur(\"-\",!1),fc=\"+\",qa=ur(\"+\",!1),Li=\".\",Cs=ur(\".\",!1),Sl=function(O,J,re){return{type:\"number\",value:(O===\"-\"?-1:1)*parseFloat(J.join(\"\")+\".\"+re.join(\"\"))}},df=function(O,J){return{type:\"number\",value:(O===\"-\"?-1:1)*parseInt(J.join(\"\"))}},Ac=function(O){return{type:\"variable\",...O}},wi=function(O){return{type:\"variable\",name:O}},Qn=function(O){return O},pc=\"*\",Je=ur(\"*\",!1),st=\"/\",St=ur(\"/\",!1),lr=function(O,J,re){return{type:J===\"*\"?\"multiplication\":\"division\",right:re}},ee=function(O,J){return J.reduce((re,de)=>({left:re,...de}),O)},Ie=function(O,J,re){return{type:J===\"+\"?\"addition\":\"subtraction\",right:re}},Oe=\"$((\",ht=ur(\"$((\",!1),mt=\"))\",Dt=ur(\"))\",!1),tr=function(O){return O},fn=\"$(\",ai=ur(\"$(\",!1),qi=function(O){return O},Tn=\"${\",Ga=ur(\"${\",!1),my=\":-\",t2=ur(\":-\",!1),Do=function(O,J){return{name:O,defaultValue:J}},yy=\":-}\",wh=ur(\":-}\",!1),r2=function(O){return{name:O,defaultValue:[]}},bo=\":+\",Bh=ur(\":+\",!1),vh=function(O,J){return{name:O,alternativeValue:J}},du=\":+}\",Sh=ur(\":+}\",!1),Ng=function(O){return{name:O,alternativeValue:[]}},Og=function(O){return{name:O}},Lg=\"$\",Ey=ur(\"$\",!1),mf=function(O){return e.isGlobPattern(O)},Po=function(O){return O},Dl=/^[a-zA-Z0-9_]/,Dh=zi([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Mg=function(){return By()},bl=/^[$@*?#a-zA-Z0-9_\\-]/,Pl=zi([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),Iy=/^[()}<>$|&; \\t\"']/,HA=zi([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),Cy=/^[<>&; \\t\"']/,wy=zi([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),jA=/^[ \\t]/,qA=zi([\" \",\"\t\"],!1,!1),Y=0,xt=0,GA=[{line:1,column:1}],xo=0,yf=[],dt=0,mu;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function By(){return t.substring(xt,Y)}function _g(){return If(xt,Y)}function n2(O,J){throw J=J!==void 0?J:If(xt,Y),WA([Ug(O)],t.substring(xt,Y),J)}function bh(O,J){throw J=J!==void 0?J:If(xt,Y),gi(O,J)}function ur(O,J){return{type:\"literal\",text:O,ignoreCase:J}}function zi(O,J,re){return{type:\"class\",parts:O,inverted:J,ignoreCase:re}}function Ef(){return{type:\"any\"}}function Wa(){return{type:\"end\"}}function Ug(O){return{type:\"other\",description:O}}function yu(O){var J=GA[O],re;if(J)return J;for(re=O-1;!GA[re];)re--;for(J=GA[re],J={line:J.line,column:J.column};re<O;)t.charCodeAt(re)===10?(J.line++,J.column=1):J.column++,re++;return GA[O]=J,J}function If(O,J){var re=yu(O),de=yu(J);return{start:{offset:O,line:re.line,column:re.column},end:{offset:J,line:de.line,column:de.column}}}function wt(O){Y<xo||(Y>xo&&(xo=Y,yf=[]),yf.push(O))}function gi(O,J){return new vd(O,null,null,J)}function WA(O,J,re){return new vd(vd.buildMessage(O,J),O,J,re)}function Ya(){var O,J,re;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=pa(),re===r&&(re=null),re!==r?(xt=O,J=n(re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function pa(){var O,J,re,de,Ke;if(O=Y,J=Ph(),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Hg(),de!==r?(Ke=Va(),Ke===r&&(Ke=null),Ke!==r?(xt=O,J=c(J,de,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;if(O===r)if(O=Y,J=Ph(),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Hg(),de===r&&(de=null),de!==r?(xt=O,J=f(J,de),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function Va(){var O,J,re,de,Ke;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=pa(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=p(re),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function Hg(){var O;return t.charCodeAt(Y)===59?(O=h,Y++):(O=r,dt===0&&wt(E)),O===r&&(t.charCodeAt(Y)===38?(O=C,Y++):(O=r,dt===0&&wt(S))),O}function Ph(){var O,J,re;return O=Y,J=YA(),J!==r?(re=jg(),re===r&&(re=null),re!==r?(xt=O,J=P(J,re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function jg(){var O,J,re,de,Ke,ft,dr;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=vy(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=Ph(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();ft!==r?(xt=O,J=I(re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function vy(){var O;return t.substr(Y,2)===R?(O=R,Y+=2):(O=r,dt===0&&wt(N)),O===r&&(t.substr(Y,2)===U?(O=U,Y+=2):(O=r,dt===0&&wt(W))),O}function YA(){var O,J,re;return O=Y,J=Cf(),J!==r?(re=qg(),re===r&&(re=null),re!==r?(xt=O,J=te(J,re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function qg(){var O,J,re,de,Ke,ft,dr;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=Eu(),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=YA(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();ft!==r?(xt=O,J=ie(re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function Eu(){var O;return t.substr(Y,2)===Ae?(O=Ae,Y+=2):(O=r,dt===0&&wt(ce)),O===r&&(t.charCodeAt(Y)===124?(O=me,Y++):(O=r,dt===0&&wt(pe))),O}function Iu(){var O,J,re,de,Ke,ft;if(O=Y,J=Qh(),J!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,dt===0&&wt(Ce)),re!==r)if(de=VA(),de!==r){for(Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();Ke!==r?(xt=O,J=g(J,de),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;else Y=O,O=r;if(O===r)if(O=Y,J=Qh(),J!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,dt===0&&wt(Ce)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=we(J),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function Cf(){var O,J,re,de,Ke,ft,dr,Br,_n,di,ws;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(t.charCodeAt(Y)===40?(re=Ee,Y++):(re=r,dt===0&&wt(fe)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=pa(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();if(ft!==r)if(t.charCodeAt(Y)===41?(dr=se,Y++):(dr=r,dt===0&&wt(X)),dr!==r){for(Br=[],_n=kt();_n!==r;)Br.push(_n),_n=kt();if(Br!==r){for(_n=[],di=qn();di!==r;)_n.push(di),di=qn();if(_n!==r){for(di=[],ws=kt();ws!==r;)di.push(ws),ws=kt();di!==r?(xt=O,J=De(Ke,_n),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(t.charCodeAt(Y)===123?(re=Re,Y++):(re=r,dt===0&&wt(gt)),re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r)if(Ke=pa(),Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();if(ft!==r)if(t.charCodeAt(Y)===125?(dr=j,Y++):(dr=r,dt===0&&wt(rt)),dr!==r){for(Br=[],_n=kt();_n!==r;)Br.push(_n),_n=kt();if(Br!==r){for(_n=[],di=qn();di!==r;)_n.push(di),di=qn();if(_n!==r){for(di=[],ws=kt();ws!==r;)di.push(ws),ws=kt();di!==r?(xt=O,J=Fe(Ke,_n),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){for(re=[],de=Iu();de!==r;)re.push(de),de=Iu();if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();if(de!==r){if(Ke=[],ft=Cu(),ft!==r)for(;ft!==r;)Ke.push(ft),ft=Cu();else Ke=r;if(Ke!==r){for(ft=[],dr=kt();dr!==r;)ft.push(dr),dr=kt();ft!==r?(xt=O,J=Ne(re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;if(O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],de=Iu(),de!==r)for(;de!==r;)re.push(de),de=Iu();else re=r;if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=Pe(re),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}}}return O}function Fs(){var O,J,re,de,Ke;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],de=xi(),de!==r)for(;de!==r;)re.push(de),de=xi();else re=r;if(re!==r){for(de=[],Ke=kt();Ke!==r;)de.push(Ke),Ke=kt();de!==r?(xt=O,J=Ye(re),O=J):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r;return O}function Cu(){var O,J,re;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r?(re=qn(),re!==r?(xt=O,J=ke(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r){for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();J!==r?(re=xi(),re!==r?(xt=O,J=ke(re),O=J):(Y=O,O=r)):(Y=O,O=r)}return O}function qn(){var O,J,re,de,Ke;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(it.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(_e)),re===r&&(re=null),re!==r?(de=is(),de!==r?(Ke=xi(),Ke!==r?(xt=O,J=x(re,de,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function is(){var O;return t.substr(Y,2)===w?(O=w,Y+=2):(O=r,dt===0&&wt(b)),O===r&&(t.substr(Y,2)===y?(O=y,Y+=2):(O=r,dt===0&&wt(F)),O===r&&(t.charCodeAt(Y)===62?(O=z,Y++):(O=r,dt===0&&wt(Z)),O===r&&(t.substr(Y,3)===$?(O=$,Y+=3):(O=r,dt===0&&wt(oe)),O===r&&(t.substr(Y,2)===xe?(O=xe,Y+=2):(O=r,dt===0&&wt(Te)),O===r&&(t.charCodeAt(Y)===60?(O=lt,Y++):(O=r,dt===0&&wt(Et))))))),O}function xi(){var O,J,re;for(O=Y,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=VA(),re!==r?(xt=O,J=ke(re),O=J):(Y=O,O=r)):(Y=O,O=r),O}function VA(){var O,J,re;if(O=Y,J=[],re=wf(),re!==r)for(;re!==r;)J.push(re),re=wf();else J=r;return J!==r&&(xt=O,J=qt(J)),O=J,O}function wf(){var O,J;return O=Y,J=mn(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=Y,J=Gg(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=Y,J=Wg(),J!==r&&(xt=O,J=ir(J)),O=J,O===r&&(O=Y,J=ss(),J!==r&&(xt=O,J=ir(J)),O=J))),O}function mn(){var O,J,re,de;return O=Y,t.substr(Y,2)===Pt?(J=Pt,Y+=2):(J=r,dt===0&&wt(gn)),J!==r?(re=yn(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,dt===0&&wt(Ir)),de!==r?(xt=O,J=Nr(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Gg(){var O,J,re,de;return O=Y,t.charCodeAt(Y)===39?(J=Pr,Y++):(J=r,dt===0&&wt(Ir)),J!==r?(re=Bf(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,dt===0&&wt(Ir)),de!==r?(xt=O,J=Nr(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Wg(){var O,J,re,de;if(O=Y,t.substr(Y,2)===nn?(J=nn,Y+=2):(J=r,dt===0&&wt(oi)),J!==r&&(xt=O,J=wo()),O=J,O===r)if(O=Y,t.charCodeAt(Y)===34?(J=rs,Y++):(J=r,dt===0&&wt(eo)),J!==r){for(re=[],de=xl();de!==r;)re.push(de),de=xl();re!==r?(t.charCodeAt(Y)===34?(de=rs,Y++):(de=r,dt===0&&wt(eo)),de!==r?(xt=O,J=Bo(re),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function ss(){var O,J,re;if(O=Y,J=[],re=ko(),re!==r)for(;re!==r;)J.push(re),re=ko();else J=r;return J!==r&&(xt=O,J=Bo(J)),O=J,O}function xl(){var O,J;return O=Y,J=Xr(),J!==r&&(xt=O,J=Hi(J)),O=J,O===r&&(O=Y,J=kh(),J!==r&&(xt=O,J=to(J)),O=J,O===r&&(O=Y,J=JA(),J!==r&&(xt=O,J=vo(J)),O=J,O===r&&(O=Y,J=vf(),J!==r&&(xt=O,J=RA(J)),O=J))),O}function ko(){var O,J;return O=Y,J=Xr(),J!==r&&(xt=O,J=pf(J)),O=J,O===r&&(O=Y,J=kh(),J!==r&&(xt=O,J=Eh(J)),O=J,O===r&&(O=Y,J=JA(),J!==r&&(xt=O,J=Ih(J)),O=J,O===r&&(O=Y,J=Sy(),J!==r&&(xt=O,J=ro(J)),O=J,O===r&&(O=Y,J=xh(),J!==r&&(xt=O,J=RA(J)),O=J)))),O}function Bf(){var O,J,re;for(O=Y,J=[],jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs));re!==r;)J.push(re),jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs));return J!==r&&(xt=O,J=no(J)),O=J,O}function vf(){var O,J,re;if(O=Y,J=[],re=kl(),re===r&&(lu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(cu))),re!==r)for(;re!==r;)J.push(re),re=kl(),re===r&&(lu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(cu)));else J=r;return J!==r&&(xt=O,J=no(J)),O=J,O}function kl(){var O,J,re;return O=Y,t.substr(Y,2)===uu?(J=uu,Y+=2):(J=r,dt===0&&wt(FA)),J!==r&&(xt=O,J=NA()),O=J,O===r&&(O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(OA.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(gr)),re!==r?(xt=O,J=So(re),O=J):(Y=O,O=r)):(Y=O,O=r)),O}function yn(){var O,J,re;for(O=Y,J=[],re=Qo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs)));re!==r;)J.push(re),re=Qo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Rs)));return J!==r&&(xt=O,J=no(J)),O=J,O}function Qo(){var O,J,re;return O=Y,t.substr(Y,2)===Me?(J=Me,Y+=2):(J=r,dt===0&&wt(fu)),J!==r&&(xt=O,J=Cr()),O=J,O===r&&(O=Y,t.substr(Y,2)===hf?(J=hf,Y+=2):(J=r,dt===0&&wt(LA)),J!==r&&(xt=O,J=MA()),O=J,O===r&&(O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(Au.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(pu)),re!==r?(xt=O,J=ac(),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===ve?(J=ve,Y+=2):(J=r,dt===0&&wt(Nt)),J!==r&&(xt=O,J=lc()),O=J,O===r&&(O=Y,t.substr(Y,2)===Ni?(J=Ni,Y+=2):(J=r,dt===0&&wt(io)),J!==r&&(xt=O,J=Rt()),O=J,O===r&&(O=Y,t.substr(Y,2)===xn?(J=xn,Y+=2):(J=r,dt===0&&wt(ca)),J!==r&&(xt=O,J=ji()),O=J,O===r&&(O=Y,t.substr(Y,2)===Oi?(J=Oi,Y+=2):(J=r,dt===0&&wt(Oa)),J!==r&&(xt=O,J=dn()),O=J,O===r&&(O=Y,t.substr(Y,2)===Jn?(J=Jn,Y+=2):(J=r,dt===0&&wt(hu)),J!==r&&(xt=O,J=Ch()),O=J,O===r&&(O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(La.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Ma)),re!==r?(xt=O,J=So(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=wu()))))))))),O}function wu(){var O,J,re,de,Ke,ft,dr,Br,_n,di,ws,zA;return O=Y,t.charCodeAt(Y)===92?(J=aa,Y++):(J=r,dt===0&&wt(la)),J!==r?(re=ha(),re!==r?(xt=O,J=Ua(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Xe?(J=Xe,Y+=2):(J=r,dt===0&&wt(Ha)),J!==r?(re=Y,de=Y,Ke=ha(),Ke!==r?(ft=Ns(),ft!==r?(Ke=[Ke,ft],de=Ke):(Y=de,de=r)):(Y=de,de=r),de===r&&(de=ha()),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,J=Ua(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===gf?(J=gf,Y+=2):(J=r,dt===0&&wt(cc)),J!==r?(re=Y,de=Y,Ke=Ns(),Ke!==r?(ft=Ns(),ft!==r?(dr=Ns(),dr!==r?(Br=Ns(),Br!==r?(Ke=[Ke,ft,dr,Br],de=Ke):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,J=Ua(re),O=J):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===wn?(J=wn,Y+=2):(J=r,dt===0&&wt(ua)),J!==r?(re=Y,de=Y,Ke=Ns(),Ke!==r?(ft=Ns(),ft!==r?(dr=Ns(),dr!==r?(Br=Ns(),Br!==r?(_n=Ns(),_n!==r?(di=Ns(),di!==r?(ws=Ns(),ws!==r?(zA=Ns(),zA!==r?(Ke=[Ke,ft,dr,Br,_n,di,ws,zA],de=Ke):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,J=_A(re),O=J):(Y=O,O=r)):(Y=O,O=r)))),O}function ha(){var O;return UA.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(fa)),O}function Ns(){var O;return vl.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(Mt)),O}function xh(){var O,J,re,de,Ke;if(O=Y,J=[],re=Y,t.charCodeAt(Y)===92?(de=aa,Y++):(de=r,dt===0&&wt(la)),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===Aa?(de=Aa,Y+=2):(de=r,dt===0&&wt(ja)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,dt++,Ke=Dy(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r))),re!==r)for(;re!==r;)J.push(re),re=Y,t.charCodeAt(Y)===92?(de=aa,Y++):(de=r,dt===0&&wt(la)),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===Aa?(de=Aa,Y+=2):(de=r,dt===0&&wt(ja)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,dt++,Ke=Dy(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r)));else J=r;return J!==r&&(xt=O,J=no(J)),O=J,O}function KA(){var O,J,re,de,Ke,ft;if(O=Y,t.charCodeAt(Y)===45?(J=uc,Y++):(J=r,dt===0&&wt(gu)),J===r&&(t.charCodeAt(Y)===43?(J=fc,Y++):(J=r,dt===0&&wt(qa))),J===r&&(J=null),J!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e));else re=r;if(re!==r)if(t.charCodeAt(Y)===46?(de=Li,Y++):(de=r,dt===0&&wt(Cs)),de!==r){if(Ke=[],it.test(t.charAt(Y))?(ft=t.charAt(Y),Y++):(ft=r,dt===0&&wt(_e)),ft!==r)for(;ft!==r;)Ke.push(ft),it.test(t.charAt(Y))?(ft=t.charAt(Y),Y++):(ft=r,dt===0&&wt(_e));else Ke=r;Ke!==r?(xt=O,J=Sl(J,re,Ke),O=J):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;if(O===r){if(O=Y,t.charCodeAt(Y)===45?(J=uc,Y++):(J=r,dt===0&&wt(gu)),J===r&&(t.charCodeAt(Y)===43?(J=fc,Y++):(J=r,dt===0&&wt(qa))),J===r&&(J=null),J!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,dt===0&&wt(_e));else re=r;re!==r?(xt=O,J=df(J,re),O=J):(Y=O,O=r)}else Y=O,O=r;if(O===r&&(O=Y,J=JA(),J!==r&&(xt=O,J=Ac(J)),O=J,O===r&&(O=Y,J=hc(),J!==r&&(xt=O,J=wi(J)),O=J,O===r)))if(O=Y,t.charCodeAt(Y)===40?(J=Ee,Y++):(J=r,dt===0&&wt(fe)),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=so(),de!==r){for(Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();Ke!==r?(t.charCodeAt(Y)===41?(ft=se,Y++):(ft=r,dt===0&&wt(X)),ft!==r?(xt=O,J=Qn(de),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r}return O}function Sf(){var O,J,re,de,Ke,ft,dr,Br;if(O=Y,J=KA(),J!==r){for(re=[],de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===42?(ft=pc,Y++):(ft=r,dt===0&&wt(Je)),ft===r&&(t.charCodeAt(Y)===47?(ft=st,Y++):(ft=r,dt===0&&wt(St))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=KA(),Br!==r?(xt=de,Ke=lr(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===42?(ft=pc,Y++):(ft=r,dt===0&&wt(Je)),ft===r&&(t.charCodeAt(Y)===47?(ft=st,Y++):(ft=r,dt===0&&wt(St))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=KA(),Br!==r?(xt=de,Ke=lr(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,J=ee(J,re),O=J):(Y=O,O=r)}else Y=O,O=r;return O}function so(){var O,J,re,de,Ke,ft,dr,Br;if(O=Y,J=Sf(),J!==r){for(re=[],de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===43?(ft=fc,Y++):(ft=r,dt===0&&wt(qa)),ft===r&&(t.charCodeAt(Y)===45?(ft=uc,Y++):(ft=r,dt===0&&wt(gu))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=Sf(),Br!==r?(xt=de,Ke=Ie(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();if(Ke!==r)if(t.charCodeAt(Y)===43?(ft=fc,Y++):(ft=r,dt===0&&wt(qa)),ft===r&&(t.charCodeAt(Y)===45?(ft=uc,Y++):(ft=r,dt===0&&wt(gu))),ft!==r){for(dr=[],Br=kt();Br!==r;)dr.push(Br),Br=kt();dr!==r?(Br=Sf(),Br!==r?(xt=de,Ke=Ie(J,ft,Br),de=Ke):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,J=ee(J,re),O=J):(Y=O,O=r)}else Y=O,O=r;return O}function Xr(){var O,J,re,de,Ke,ft;if(O=Y,t.substr(Y,3)===Oe?(J=Oe,Y+=3):(J=r,dt===0&&wt(ht)),J!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=so(),de!==r){for(Ke=[],ft=kt();ft!==r;)Ke.push(ft),ft=kt();Ke!==r?(t.substr(Y,2)===mt?(ft=mt,Y+=2):(ft=r,dt===0&&wt(Dt)),ft!==r?(xt=O,J=tr(de),O=J):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;return O}function kh(){var O,J,re,de;return O=Y,t.substr(Y,2)===fn?(J=fn,Y+=2):(J=r,dt===0&&wt(ai)),J!==r?(re=pa(),re!==r?(t.charCodeAt(Y)===41?(de=se,Y++):(de=r,dt===0&&wt(X)),de!==r?(xt=O,J=qi(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function JA(){var O,J,re,de,Ke,ft;return O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,2)===my?(de=my,Y+=2):(de=r,dt===0&&wt(t2)),de!==r?(Ke=Fs(),Ke!==r?(t.charCodeAt(Y)===125?(ft=j,Y++):(ft=r,dt===0&&wt(rt)),ft!==r?(xt=O,J=Do(re,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,3)===yy?(de=yy,Y+=3):(de=r,dt===0&&wt(wh)),de!==r?(xt=O,J=r2(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,2)===bo?(de=bo,Y+=2):(de=r,dt===0&&wt(Bh)),de!==r?(Ke=Fs(),Ke!==r?(t.charCodeAt(Y)===125?(ft=j,Y++):(ft=r,dt===0&&wt(rt)),ft!==r?(xt=O,J=vh(re,Ke),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.substr(Y,3)===du?(de=du,Y+=3):(de=r,dt===0&&wt(Sh)),de!==r?(xt=O,J=Ng(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(J=Tn,Y+=2):(J=r,dt===0&&wt(Ga)),J!==r?(re=hc(),re!==r?(t.charCodeAt(Y)===125?(de=j,Y++):(de=r,dt===0&&wt(rt)),de!==r?(xt=O,J=Og(re),O=J):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.charCodeAt(Y)===36?(J=Lg,Y++):(J=r,dt===0&&wt(Ey)),J!==r?(re=hc(),re!==r?(xt=O,J=Og(re),O=J):(Y=O,O=r)):(Y=O,O=r)))))),O}function Sy(){var O,J,re;return O=Y,J=Yg(),J!==r?(xt=Y,re=mf(J),re?re=void 0:re=r,re!==r?(xt=O,J=Po(J),O=J):(Y=O,O=r)):(Y=O,O=r),O}function Yg(){var O,J,re,de,Ke;if(O=Y,J=[],re=Y,de=Y,dt++,Ke=Th(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r),re!==r)for(;re!==r;)J.push(re),re=Y,de=Y,dt++,Ke=Th(),dt--,Ke===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Ke=t.charAt(Y),Y++):(Ke=r,dt===0&&wt(kn)),Ke!==r?(xt=re,de=So(Ke),re=de):(Y=re,re=r)):(Y=re,re=r);else J=r;return J!==r&&(xt=O,J=no(J)),O=J,O}function Qh(){var O,J,re;if(O=Y,J=[],Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Dh)),re!==r)for(;re!==r;)J.push(re),Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Dh));else J=r;return J!==r&&(xt=O,J=Mg()),O=J,O}function hc(){var O,J,re;if(O=Y,J=[],bl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Pl)),re!==r)for(;re!==r;)J.push(re),bl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,dt===0&&wt(Pl));else J=r;return J!==r&&(xt=O,J=Mg()),O=J,O}function Dy(){var O;return Iy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(HA)),O}function Th(){var O;return Cy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,dt===0&&wt(wy)),O}function kt(){var O,J;if(O=[],jA.test(t.charAt(Y))?(J=t.charAt(Y),Y++):(J=r,dt===0&&wt(qA)),J!==r)for(;J!==r;)O.push(J),jA.test(t.charAt(Y))?(J=t.charAt(Y),Y++):(J=r,dt===0&&wt(qA));else O=r;return O}if(mu=a(),mu!==r&&Y===t.length)return mu;throw mu!==r&&Y<t.length&&wt(Wa()),WA(yf,xo<t.length?t.charAt(xo):null,xo<t.length?If(xo,xo+1):If(xo,xo))}ete.exports={SyntaxError:vd,parse:yKe}});function vx(t,e={isGlobPattern:()=>!1}){try{return(0,rte.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fE(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:s},a)=>`${Sx(r)}${s===\";\"?a!==t.length-1||e?\";\":\"\":\" &\"}`).join(\" \")}function Sx(t){return`${AE(t.chain)}${t.then?` ${z_(t.then)}`:\"\"}`}function z_(t){return`${t.type} ${Sx(t.line)}`}function AE(t){return`${X_(t)}${t.then?` ${Z_(t.then)}`:\"\"}`}function Z_(t){return`${t.type} ${AE(t.chain)}`}function X_(t){switch(t.type){case\"command\":return`${t.envs.length>0?`${t.envs.map(e=>Bx(e)).join(\" \")} `:\"\"}${t.args.map(e=>$_(e)).join(\" \")}`;case\"subshell\":return`(${fE(t.subshell)})${t.args.length>0?` ${t.args.map(e=>G2(e)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${fE(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>G2(e)).join(\" \")}`:\"\"}`;case\"envs\":return t.envs.map(e=>Bx(e)).join(\" \");default:throw new Error(`Unsupported command type:  \"${t.type}\"`)}}function Bx(t){return`${t.name}=${t.args[0]?Sd(t.args[0]):\"\"}`}function $_(t){switch(t.type){case\"redirection\":return G2(t);case\"argument\":return Sd(t);default:throw new Error(`Unsupported argument type: \"${t.type}\"`)}}function G2(t){return`${t.subtype} ${t.args.map(e=>Sd(e)).join(\" \")}`}function Sd(t){return t.segments.map(e=>eU(e)).join(\"\")}function eU(t){let e=(s,a)=>a?`\"${s}\"`:s,r=s=>s===\"\"?\"''\":s.match(/[()}<>$|&;\"'\\n\\t ]/)?s.match(/['\\t\\p{C}]/u)?s.match(/'/)?`\"${s.replace(/[\"$\\t\\p{C}]/u,IKe)}\"`:`$'${s.replace(/[\\t\\p{C}]/u,ite)}'`:`'${s}'`:s;switch(t.type){case\"text\":return r(t.text);case\"glob\":return t.pattern;case\"shell\":return e(`$(${fE(t.shell)})`,t.quoted);case\"variable\":return e(typeof t.defaultValue>\"u\"?typeof t.alternativeValue>\"u\"?`\\${${t.name}}`:t.alternativeValue.length===0?`\\${${t.name}:+}`:`\\${${t.name}:+${t.alternativeValue.map(s=>Sd(s)).join(\" \")}}`:t.defaultValue.length===0?`\\${${t.name}:-}`:`\\${${t.name}:-${t.defaultValue.map(s=>Sd(s)).join(\" \")}}`,t.quoted);case\"arithmetic\":return`$(( ${Dx(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${t.type}\"`)}}function Dx(t){let e=a=>{switch(a){case\"addition\":return\"+\";case\"subtraction\":return\"-\";case\"multiplication\":return\"*\";case\"division\":return\"/\";default:throw new Error(`Can't extract operator from arithmetic expression of type \"${a}\"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Dx(a),![\"number\",\"variable\"].includes(a.type));switch(t.type){case\"number\":return String(t.value);case\"variable\":return t.name;default:return`${s(t.left)} ${e(t.type)} ${s(t.right)}`}}var rte,nte,EKe,ite,IKe,ste=It(()=>{rte=et(tte());nte=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),EKe=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(nte,([t,e])=>[t,`\"$'${e}'\"`])]),ite=t=>nte.get(t)??`\\\\x${t.charCodeAt(0).toString(16).padStart(2,\"0\")}`,IKe=t=>EKe.get(t)??`\"$'${ite(t)}'\"`});var ate=L((U5t,ote)=>{\"use strict\";function CKe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Dd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Dd)}CKe(Dd,Error);Dd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function wKe(t,e){e=e!==void 0?e:{};var r={},s={resolution:Ne},a=Ne,n=\"/\",c=Ee(\"/\",!1),f=function(_e,x){return{from:_e,descriptor:x}},p=function(_e){return{descriptor:_e}},h=\"@\",E=Ee(\"@\",!1),C=function(_e,x){return{fullName:_e,description:x}},S=function(_e){return{fullName:_e}},P=function(){return Be()},I=/^[^\\/@]/,R=fe([\"/\",\"@\"],!0,!1),N=/^[^\\/]/,U=fe([\"/\"],!0,!1),W=0,te=0,ie=[{line:1,column:1}],Ae=0,ce=[],me=0,pe;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function Be(){return t.substring(te,W)}function Ce(){return gt(te,W)}function g(_e,x){throw x=x!==void 0?x:gt(te,W),Fe([De(_e)],t.substring(te,W),x)}function we(_e,x){throw x=x!==void 0?x:gt(te,W),rt(_e,x)}function Ee(_e,x){return{type:\"literal\",text:_e,ignoreCase:x}}function fe(_e,x,w){return{type:\"class\",parts:_e,inverted:x,ignoreCase:w}}function se(){return{type:\"any\"}}function X(){return{type:\"end\"}}function De(_e){return{type:\"other\",description:_e}}function Re(_e){var x=ie[_e],w;if(x)return x;for(w=_e-1;!ie[w];)w--;for(x=ie[w],x={line:x.line,column:x.column};w<_e;)t.charCodeAt(w)===10?(x.line++,x.column=1):x.column++,w++;return ie[_e]=x,x}function gt(_e,x){var w=Re(_e),b=Re(x);return{start:{offset:_e,line:w.line,column:w.column},end:{offset:x,line:b.line,column:b.column}}}function j(_e){W<Ae||(W>Ae&&(Ae=W,ce=[]),ce.push(_e))}function rt(_e,x){return new Dd(_e,null,null,x)}function Fe(_e,x,w){return new Dd(Dd.buildMessage(_e,x),_e,x,w)}function Ne(){var _e,x,w,b;return _e=W,x=Pe(),x!==r?(t.charCodeAt(W)===47?(w=n,W++):(w=r,me===0&&j(c)),w!==r?(b=Pe(),b!==r?(te=_e,x=f(x,b),_e=x):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r),_e===r&&(_e=W,x=Pe(),x!==r&&(te=_e,x=p(x)),_e=x),_e}function Pe(){var _e,x,w,b;return _e=W,x=Ye(),x!==r?(t.charCodeAt(W)===64?(w=h,W++):(w=r,me===0&&j(E)),w!==r?(b=it(),b!==r?(te=_e,x=C(x,b),_e=x):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r),_e===r&&(_e=W,x=Ye(),x!==r&&(te=_e,x=S(x)),_e=x),_e}function Ye(){var _e,x,w,b,y;return _e=W,t.charCodeAt(W)===64?(x=h,W++):(x=r,me===0&&j(E)),x!==r?(w=ke(),w!==r?(t.charCodeAt(W)===47?(b=n,W++):(b=r,me===0&&j(c)),b!==r?(y=ke(),y!==r?(te=_e,x=P(),_e=x):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r)):(W=_e,_e=r),_e===r&&(_e=W,x=ke(),x!==r&&(te=_e,x=P()),_e=x),_e}function ke(){var _e,x,w;if(_e=W,x=[],I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R)),w!==r)for(;w!==r;)x.push(w),I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R));else x=r;return x!==r&&(te=_e,x=P()),_e=x,_e}function it(){var _e,x,w;if(_e=W,x=[],N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U)),w!==r)for(;w!==r;)x.push(w),N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U));else x=r;return x!==r&&(te=_e,x=P()),_e=x,_e}if(pe=a(),pe!==r&&W===t.length)return pe;throw pe!==r&&W<t.length&&j(X()),Fe(ce,Ae<t.length?t.charAt(Ae):null,Ae<t.length?gt(Ae,Ae+1):gt(Ae,Ae))}ote.exports={SyntaxError:Dd,parse:wKe}});function bx(t){let e=t.match(/^\\*{1,2}\\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,lte.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function Px(t){let e=\"\";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+=\"/\"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var lte,cte=It(()=>{lte=et(ate())});var Pd=L((j5t,bd)=>{\"use strict\";function ute(t){return typeof t>\"u\"||t===null}function BKe(t){return typeof t==\"object\"&&t!==null}function vKe(t){return Array.isArray(t)?t:ute(t)?[]:[t]}function SKe(t,e){var r,s,a,n;if(e)for(n=Object.keys(e),r=0,s=n.length;r<s;r+=1)a=n[r],t[a]=e[a];return t}function DKe(t,e){var r=\"\",s;for(s=0;s<e;s+=1)r+=t;return r}function bKe(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}bd.exports.isNothing=ute;bd.exports.isObject=BKe;bd.exports.toArray=vKe;bd.exports.repeat=DKe;bd.exports.isNegativeZero=bKe;bd.exports.extend=SKe});var pE=L((q5t,fte)=>{\"use strict\";function W2(t,e){Error.call(this),this.name=\"YAMLException\",this.reason=t,this.mark=e,this.message=(this.reason||\"(unknown reason)\")+(this.mark?\" \"+this.mark.toString():\"\"),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||\"\"}W2.prototype=Object.create(Error.prototype);W2.prototype.constructor=W2;W2.prototype.toString=function(e){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!e&&this.mark&&(r+=\" \"+this.mark.toString()),r};fte.exports=W2});var hte=L((G5t,pte)=>{\"use strict\";var Ate=Pd();function tU(t,e,r,s,a){this.name=t,this.buffer=e,this.position=r,this.line=s,this.column=a}tU.prototype.getSnippet=function(e,r){var s,a,n,c,f;if(!this.buffer)return null;for(e=e||4,r=r||75,s=\"\",a=this.position;a>0&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=\" ... \",a+=5;break}for(n=\"\",c=this.position;c<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(c))===-1;)if(c+=1,c-this.position>r/2-1){n=\" ... \",c-=5;break}return f=this.buffer.slice(a,c),Ate.repeat(\" \",e)+s+f+n+`\n`+Ate.repeat(\" \",e+this.position-a+s.length)+\"^\"};tU.prototype.toString=function(e){var r,s=\"\";return this.name&&(s+='in \"'+this.name+'\" '),s+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),e||(r=this.getSnippet(),r&&(s+=`:\n`+r)),s};pte.exports=tU});var Ds=L((W5t,dte)=>{\"use strict\";var gte=pE(),PKe=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],xKe=[\"scalar\",\"sequence\",\"mapping\"];function kKe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(s){e[String(s)]=r})}),e}function QKe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(PKe.indexOf(r)===-1)throw new gte('Unknown option \"'+r+'\" is met in definition of \"'+t+'\" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=kKe(e.styleAliases||null),xKe.indexOf(this.kind)===-1)throw new gte('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')}dte.exports=QKe});var xd=L((Y5t,yte)=>{\"use strict\";var mte=Pd(),xx=pE(),TKe=Ds();function rU(t,e,r){var s=[];return t.include.forEach(function(a){r=rU(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function RKe(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function s(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(s);return t}function hE(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!==\"scalar\")throw new xx(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=rU(this,\"implicit\",[]),this.compiledExplicit=rU(this,\"explicit\",[]),this.compiledTypeMap=RKe(this.compiledImplicit,this.compiledExplicit)}hE.DEFAULT=null;hE.create=function(){var e,r;switch(arguments.length){case 1:e=hE.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new xx(\"Wrong number of arguments for Schema.create function\")}if(e=mte.toArray(e),r=mte.toArray(r),!e.every(function(s){return s instanceof hE}))throw new xx(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(s){return s instanceof TKe}))throw new xx(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new hE({include:e,explicit:r})};yte.exports=hE});var Ite=L((V5t,Ete)=>{\"use strict\";var FKe=Ds();Ete.exports=new FKe(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return t!==null?t:\"\"}})});var wte=L((K5t,Cte)=>{\"use strict\";var NKe=Ds();Cte.exports=new NKe(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return t!==null?t:[]}})});var vte=L((J5t,Bte)=>{\"use strict\";var OKe=Ds();Bte.exports=new OKe(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return t!==null?t:{}}})});var kx=L((z5t,Ste)=>{\"use strict\";var LKe=xd();Ste.exports=new LKe({explicit:[Ite(),wte(),vte()]})});var bte=L((Z5t,Dte)=>{\"use strict\";var MKe=Ds();function _Ke(t){if(t===null)return!0;var e=t.length;return e===1&&t===\"~\"||e===4&&(t===\"null\"||t===\"Null\"||t===\"NULL\")}function UKe(){return null}function HKe(t){return t===null}Dte.exports=new MKe(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:_Ke,construct:UKe,predicate:HKe,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var xte=L((X5t,Pte)=>{\"use strict\";var jKe=Ds();function qKe(t){if(t===null)return!1;var e=t.length;return e===4&&(t===\"true\"||t===\"True\"||t===\"TRUE\")||e===5&&(t===\"false\"||t===\"False\"||t===\"FALSE\")}function GKe(t){return t===\"true\"||t===\"True\"||t===\"TRUE\"}function WKe(t){return Object.prototype.toString.call(t)===\"[object Boolean]\"}Pte.exports=new jKe(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:qKe,construct:GKe,predicate:WKe,represent:{lowercase:function(t){return t?\"true\":\"false\"},uppercase:function(t){return t?\"TRUE\":\"FALSE\"},camelcase:function(t){return t?\"True\":\"False\"}},defaultStyle:\"lowercase\"})});var Qte=L(($5t,kte)=>{\"use strict\";var YKe=Pd(),VKe=Ds();function KKe(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function JKe(t){return 48<=t&&t<=55}function zKe(t){return 48<=t&&t<=57}function ZKe(t){if(t===null)return!1;var e=t.length,r=0,s=!1,a;if(!e)return!1;if(a=t[r],(a===\"-\"||a===\"+\")&&(a=t[++r]),a===\"0\"){if(r+1===e)return!0;if(a=t[++r],a===\"b\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(a!==\"0\"&&a!==\"1\")return!1;s=!0}return s&&a!==\"_\"}if(a===\"x\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(!KKe(t.charCodeAt(r)))return!1;s=!0}return s&&a!==\"_\"}for(;r<e;r++)if(a=t[r],a!==\"_\"){if(!JKe(t.charCodeAt(r)))return!1;s=!0}return s&&a!==\"_\"}if(a===\"_\")return!1;for(;r<e;r++)if(a=t[r],a!==\"_\"){if(a===\":\")break;if(!zKe(t.charCodeAt(r)))return!1;s=!0}return!s||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function XKe(t){var e=t,r=1,s,a,n=[];return e.indexOf(\"_\")!==-1&&(e=e.replace(/_/g,\"\")),s=e[0],(s===\"-\"||s===\"+\")&&(s===\"-\"&&(r=-1),e=e.slice(1),s=e[0]),e===\"0\"?0:s===\"0\"?e[1]===\"b\"?r*parseInt(e.slice(2),2):e[1]===\"x\"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(\":\")!==-1?(e.split(\":\").forEach(function(c){n.unshift(parseInt(c,10))}),e=0,a=1,n.forEach(function(c){e+=c*a,a*=60}),r*e):r*parseInt(e,10)}function $Ke(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&t%1===0&&!YKe.isNegativeZero(t)}kte.exports=new VKe(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:ZKe,construct:XKe,predicate:$Ke,represent:{binary:function(t){return t>=0?\"0b\"+t.toString(2):\"-0b\"+t.toString(2).slice(1)},octal:function(t){return t>=0?\"0\"+t.toString(8):\"-0\"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?\"0x\"+t.toString(16).toUpperCase():\"-0x\"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}})});var Fte=L((e9t,Rte)=>{\"use strict\";var Tte=Pd(),eJe=Ds(),tJe=new RegExp(\"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");function rJe(t){return!(t===null||!tJe.test(t)||t[t.length-1]===\"_\")}function nJe(t){var e,r,s,a;return e=t.replace(/_/g,\"\").toLowerCase(),r=e[0]===\"-\"?-1:1,a=[],\"+-\".indexOf(e[0])>=0&&(e=e.slice(1)),e===\".inf\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===\".nan\"?NaN:e.indexOf(\":\")>=0?(e.split(\":\").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,s=1,a.forEach(function(n){e+=n*s,s*=60}),r*e):r*parseFloat(e,10)}var iJe=/^[-+]?[0-9]+e/;function sJe(t,e){var r;if(isNaN(t))switch(e){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===t)switch(e){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(Tte.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),iJe.test(r)?r.replace(\"e\",\".e\"):r}function oJe(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&(t%1!==0||Tte.isNegativeZero(t))}Rte.exports=new eJe(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:rJe,construct:nJe,predicate:oJe,represent:sJe,defaultStyle:\"lowercase\"})});var nU=L((t9t,Nte)=>{\"use strict\";var aJe=xd();Nte.exports=new aJe({include:[kx()],implicit:[bte(),xte(),Qte(),Fte()]})});var iU=L((r9t,Ote)=>{\"use strict\";var lJe=xd();Ote.exports=new lJe({include:[nU()]})});var Ute=L((n9t,_te)=>{\"use strict\";var cJe=Ds(),Lte=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),Mte=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");function uJe(t){return t===null?!1:Lte.exec(t)!==null||Mte.exec(t)!==null}function fJe(t){var e,r,s,a,n,c,f,p=0,h=null,E,C,S;if(e=Lte.exec(t),e===null&&(e=Mte.exec(t)),e===null)throw new Error(\"Date resolve error\");if(r=+e[1],s=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,s,a));if(n=+e[4],c=+e[5],f=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return e[9]&&(E=+e[10],C=+(e[11]||0),h=(E*60+C)*6e4,e[9]===\"-\"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function AJe(t){return t.toISOString()}_te.exports=new cJe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:uJe,construct:fJe,instanceOf:Date,represent:AJe})});var jte=L((i9t,Hte)=>{\"use strict\";var pJe=Ds();function hJe(t){return t===\"<<\"||t===null}Hte.exports=new pJe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:hJe})});var Wte=L((s9t,Gte)=>{\"use strict\";var kd;try{qte=ye,kd=qte(\"buffer\").Buffer}catch{}var qte,gJe=Ds(),sU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function dJe(t){if(t===null)return!1;var e,r,s=0,a=t.length,n=sU;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;s+=6}return s%8===0}function mJe(t){var e,r,s=t.replace(/[\\r\\n=]/g,\"\"),a=s.length,n=sU,c=0,f=[];for(e=0;e<a;e++)e%4===0&&e&&(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(e));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),kd?kd.from?kd.from(f):new kd(f):f}function yJe(t){var e=\"\",r=0,s,a,n=t.length,c=sU;for(s=0;s<n;s++)s%3===0&&s&&(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]),r=(r<<8)+t[s];return a=n%3,a===0?(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]):a===2?(e+=c[r>>10&63],e+=c[r>>4&63],e+=c[r<<2&63],e+=c[64]):a===1&&(e+=c[r>>2&63],e+=c[r<<4&63],e+=c[64],e+=c[64]),e}function EJe(t){return kd&&kd.isBuffer(t)}Gte.exports=new gJe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:dJe,construct:mJe,predicate:EJe,represent:yJe})});var Vte=L((a9t,Yte)=>{\"use strict\";var IJe=Ds(),CJe=Object.prototype.hasOwnProperty,wJe=Object.prototype.toString;function BJe(t){if(t===null)return!0;var e=[],r,s,a,n,c,f=t;for(r=0,s=f.length;r<s;r+=1){if(a=f[r],c=!1,wJe.call(a)!==\"[object Object]\")return!1;for(n in a)if(CJe.call(a,n))if(!c)c=!0;else return!1;if(!c)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function vJe(t){return t!==null?t:[]}Yte.exports=new IJe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:BJe,construct:vJe})});var Jte=L((l9t,Kte)=>{\"use strict\";var SJe=Ds(),DJe=Object.prototype.toString;function bJe(t){if(t===null)return!0;var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e<r;e+=1){if(s=c[e],DJe.call(s)!==\"[object Object]\"||(a=Object.keys(s),a.length!==1))return!1;n[e]=[a[0],s[a[0]]]}return!0}function PJe(t){if(t===null)return[];var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e<r;e+=1)s=c[e],a=Object.keys(s),n[e]=[a[0],s[a[0]]];return n}Kte.exports=new SJe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:bJe,construct:PJe})});var Zte=L((c9t,zte)=>{\"use strict\";var xJe=Ds(),kJe=Object.prototype.hasOwnProperty;function QJe(t){if(t===null)return!0;var e,r=t;for(e in r)if(kJe.call(r,e)&&r[e]!==null)return!1;return!0}function TJe(t){return t!==null?t:{}}zte.exports=new xJe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:QJe,construct:TJe})});var gE=L((u9t,Xte)=>{\"use strict\";var RJe=xd();Xte.exports=new RJe({include:[iU()],implicit:[Ute(),jte()],explicit:[Wte(),Vte(),Jte(),Zte()]})});var ere=L((f9t,$te)=>{\"use strict\";var FJe=Ds();function NJe(){return!0}function OJe(){}function LJe(){return\"\"}function MJe(t){return typeof t>\"u\"}$te.exports=new FJe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:NJe,construct:OJe,predicate:MJe,represent:LJe})});var rre=L((A9t,tre)=>{\"use strict\";var _Je=Ds();function UJe(t){if(t===null||t.length===0)return!1;var e=t,r=/\\/([gim]*)$/.exec(t),s=\"\";return!(e[0]===\"/\"&&(r&&(s=r[1]),s.length>3||e[e.length-s.length-1]!==\"/\"))}function HJe(t){var e=t,r=/\\/([gim]*)$/.exec(t),s=\"\";return e[0]===\"/\"&&(r&&(s=r[1]),e=e.slice(1,e.length-s.length-1)),new RegExp(e,s)}function jJe(t){var e=\"/\"+t.source+\"/\";return t.global&&(e+=\"g\"),t.multiline&&(e+=\"m\"),t.ignoreCase&&(e+=\"i\"),e}function qJe(t){return Object.prototype.toString.call(t)===\"[object RegExp]\"}tre.exports=new _Je(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:UJe,construct:HJe,predicate:qJe,represent:jJe})});var sre=L((p9t,ire)=>{\"use strict\";var Qx;try{nre=ye,Qx=nre(\"esprima\")}catch{typeof window<\"u\"&&(Qx=window.esprima)}var nre,GJe=Ds();function WJe(t){if(t===null)return!1;try{var e=\"(\"+t+\")\",r=Qx.parse(e,{range:!0});return!(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")}catch{return!1}}function YJe(t){var e=\"(\"+t+\")\",r=Qx.parse(e,{range:!0}),s=[],a;if(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")throw new Error(\"Failed to resolve function\");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(s,e.slice(a[0]+1,a[1]-1)):new Function(s,\"return \"+e.slice(a[0],a[1]))}function VJe(t){return t.toString()}function KJe(t){return Object.prototype.toString.call(t)===\"[object Function]\"}ire.exports=new GJe(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:WJe,construct:YJe,predicate:KJe,represent:VJe})});var Y2=L((g9t,are)=>{\"use strict\";var ore=xd();are.exports=ore.DEFAULT=new ore({include:[gE()],explicit:[ere(),rre(),sre()]})});var Dre=L((d9t,V2)=>{\"use strict\";var wp=Pd(),hre=pE(),JJe=hte(),gre=gE(),zJe=Y2(),a0=Object.prototype.hasOwnProperty,Tx=1,dre=2,mre=3,Rx=4,oU=1,ZJe=2,lre=3,XJe=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,$Je=/[\\x85\\u2028\\u2029]/,eze=/[,\\[\\]\\{\\}]/,yre=/^(?:!|!!|![a-z\\-]+!)$/i,Ere=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function cre(t){return Object.prototype.toString.call(t)}function qf(t){return t===10||t===13}function Td(t){return t===9||t===32}function nl(t){return t===9||t===32||t===10||t===13}function dE(t){return t===44||t===91||t===93||t===123||t===125}function tze(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function rze(t){return t===120?2:t===117?4:t===85?8:0}function nze(t){return 48<=t&&t<=57?t-48:-1}function ure(t){return t===48?\"\\0\":t===97?\"\\x07\":t===98?\"\\b\":t===116||t===9?\"\t\":t===110?`\n`:t===118?\"\\v\":t===102?\"\\f\":t===114?\"\\r\":t===101?\"\\x1B\":t===32?\" \":t===34?'\"':t===47?\"/\":t===92?\"\\\\\":t===78?\"\\x85\":t===95?\"\\xA0\":t===76?\"\\u2028\":t===80?\"\\u2029\":\"\"}function ize(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Ire=new Array(256),Cre=new Array(256);for(Qd=0;Qd<256;Qd++)Ire[Qd]=ure(Qd)?1:0,Cre[Qd]=ure(Qd);var Qd;function sze(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zJe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function wre(t,e){return new hre(e,new JJe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Rr(t,e){throw wre(t,e)}function Fx(t,e){t.onWarning&&t.onWarning.call(null,wre(t,e))}var fre={YAML:function(e,r,s){var a,n,c;e.version!==null&&Rr(e,\"duplication of %YAML directive\"),s.length!==1&&Rr(e,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(s[0]),a===null&&Rr(e,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Rr(e,\"unacceptable YAML version of the document\"),e.version=s[0],e.checkLineBreaks=c<2,c!==1&&c!==2&&Fx(e,\"unsupported YAML version of the document\")},TAG:function(e,r,s){var a,n;s.length!==2&&Rr(e,\"TAG directive accepts exactly two arguments\"),a=s[0],n=s[1],yre.test(a)||Rr(e,\"ill-formed tag handle (first argument) of the TAG directive\"),a0.call(e.tagMap,a)&&Rr(e,'there is a previously declared suffix for \"'+a+'\" tag handle'),Ere.test(n)||Rr(e,\"ill-formed tag prefix (second argument) of the TAG directive\"),e.tagMap[a]=n}};function o0(t,e,r,s){var a,n,c,f;if(e<r){if(f=t.input.slice(e,r),s)for(a=0,n=f.length;a<n;a+=1)c=f.charCodeAt(a),c===9||32<=c&&c<=1114111||Rr(t,\"expected valid JSON character\");else XJe.test(f)&&Rr(t,\"the stream contains non-printable characters\");t.result+=f}}function Are(t,e,r,s){var a,n,c,f;for(wp.isObject(r)||Rr(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),c=0,f=a.length;c<f;c+=1)n=a[c],a0.call(e,n)||(e[n]=r[n],s[n]=!0)}function mE(t,e,r,s,a,n,c,f){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&Rr(t,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&cre(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&cre(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),e===null&&(e={}),s===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)Are(t,e,n[p],r);else Are(t,e,n,r);else!t.json&&!a0.call(r,a)&&a0.call(e,a)&&(t.line=c||t.line,t.position=f||t.position,Rr(t,\"duplicated mapping key\")),e[a]=n,delete r[a];return e}function aU(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):Rr(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position}function as(t,e,r){for(var s=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Td(a);)a=t.input.charCodeAt(++t.position);if(e&&a===35)do a=t.input.charCodeAt(++t.position);while(a!==10&&a!==13&&a!==0);if(qf(a))for(aU(t),a=t.input.charCodeAt(t.position),s++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&s!==0&&t.lineIndent<r&&Fx(t,\"deficient indentation\"),s}function Nx(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||nl(r)))}function lU(t,e){e===1?t.result+=\" \":e>1&&(t.result+=wp.repeat(`\n`,e-1))}function oze(t,e,r){var s,a,n,c,f,p,h,E,C=t.kind,S=t.result,P;if(P=t.input.charCodeAt(t.position),nl(P)||dE(P)||P===35||P===38||P===42||P===33||P===124||P===62||P===39||P===34||P===37||P===64||P===96||(P===63||P===45)&&(a=t.input.charCodeAt(t.position+1),nl(a)||r&&dE(a)))return!1;for(t.kind=\"scalar\",t.result=\"\",n=c=t.position,f=!1;P!==0;){if(P===58){if(a=t.input.charCodeAt(t.position+1),nl(a)||r&&dE(a))break}else if(P===35){if(s=t.input.charCodeAt(t.position-1),nl(s))break}else{if(t.position===t.lineStart&&Nx(t)||r&&dE(P))break;if(qf(P))if(p=t.line,h=t.lineStart,E=t.lineIndent,as(t,!1,-1),t.lineIndent>=e){f=!0,P=t.input.charCodeAt(t.position);continue}else{t.position=c,t.line=p,t.lineStart=h,t.lineIndent=E;break}}f&&(o0(t,n,c,!1),lU(t,t.line-p),n=c=t.position,f=!1),Td(P)||(c=t.position+1),P=t.input.charCodeAt(++t.position)}return o0(t,n,c,!1),t.result?!0:(t.kind=C,t.result=S,!1)}function aze(t,e){var r,s,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,s=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(o0(t,s,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)s=t.position,t.position++,a=t.position;else return!0;else qf(r)?(o0(t,s,a,!0),lU(t,as(t,!1,e)),s=a=t.position):t.position===t.lineStart&&Nx(t)?Rr(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,a=t.position);Rr(t,\"unexpected end of the stream within a single quoted scalar\")}function lze(t,e){var r,s,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!==34)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=s=t.position;(f=t.input.charCodeAt(t.position))!==0;){if(f===34)return o0(t,r,t.position,!0),t.position++,!0;if(f===92){if(o0(t,r,t.position,!0),f=t.input.charCodeAt(++t.position),qf(f))as(t,!1,e);else if(f<256&&Ire[f])t.result+=Cre[f],t.position++;else if((c=rze(f))>0){for(a=c,n=0;a>0;a--)f=t.input.charCodeAt(++t.position),(c=tze(f))>=0?n=(n<<4)+c:Rr(t,\"expected hexadecimal character\");t.result+=ize(n),t.position++}else Rr(t,\"unknown escape sequence\");r=s=t.position}else qf(f)?(o0(t,r,s,!0),lU(t,as(t,!1,e)),r=s=t.position):t.position===t.lineStart&&Nx(t)?Rr(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,s=t.position)}Rr(t,\"unexpected end of the stream within a double quoted scalar\")}function cze(t,e){var r=!0,s,a=t.tag,n,c=t.anchor,f,p,h,E,C,S={},P,I,R,N;if(N=t.input.charCodeAt(t.position),N===91)p=93,C=!1,n=[];else if(N===123)p=125,C=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),N=t.input.charCodeAt(++t.position);N!==0;){if(as(t,!0,e),N=t.input.charCodeAt(t.position),N===p)return t.position++,t.tag=a,t.anchor=c,t.kind=C?\"mapping\":\"sequence\",t.result=n,!0;r||Rr(t,\"missed comma between flow collection entries\"),I=P=R=null,h=E=!1,N===63&&(f=t.input.charCodeAt(t.position+1),nl(f)&&(h=E=!0,t.position++,as(t,!0,e))),s=t.line,yE(t,e,Tx,!1,!0),I=t.tag,P=t.result,as(t,!0,e),N=t.input.charCodeAt(t.position),(E||t.line===s)&&N===58&&(h=!0,N=t.input.charCodeAt(++t.position),as(t,!0,e),yE(t,e,Tx,!1,!0),R=t.result),C?mE(t,n,S,I,P,R):h?n.push(mE(t,null,S,I,P,R)):n.push(P),as(t,!0,e),N=t.input.charCodeAt(t.position),N===44?(r=!0,N=t.input.charCodeAt(++t.position)):r=!1}Rr(t,\"unexpected end of the stream within a flow collection\")}function uze(t,e){var r,s,a=oU,n=!1,c=!1,f=e,p=0,h=!1,E,C;if(C=t.input.charCodeAt(t.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(t.kind=\"scalar\",t.result=\"\";C!==0;)if(C=t.input.charCodeAt(++t.position),C===43||C===45)oU===a?a=C===43?lre:ZJe:Rr(t,\"repeat of a chomping mode identifier\");else if((E=nze(C))>=0)E===0?Rr(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):c?Rr(t,\"repeat of an indentation width identifier\"):(f=e+E-1,c=!0);else break;if(Td(C)){do C=t.input.charCodeAt(++t.position);while(Td(C));if(C===35)do C=t.input.charCodeAt(++t.position);while(!qf(C)&&C!==0)}for(;C!==0;){for(aU(t),t.lineIndent=0,C=t.input.charCodeAt(t.position);(!c||t.lineIndent<f)&&C===32;)t.lineIndent++,C=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>f&&(f=t.lineIndent),qf(C)){p++;continue}if(t.lineIndent<f){a===lre?t.result+=wp.repeat(`\n`,n?1+p:p):a===oU&&n&&(t.result+=`\n`);break}for(s?Td(C)?(h=!0,t.result+=wp.repeat(`\n`,n?1+p:p)):h?(h=!1,t.result+=wp.repeat(`\n`,p+1)):p===0?n&&(t.result+=\" \"):t.result+=wp.repeat(`\n`,p):t.result+=wp.repeat(`\n`,n?1+p:p),n=!0,c=!0,p=0,r=t.position;!qf(C)&&C!==0;)C=t.input.charCodeAt(++t.position);o0(t,r,t.position,!1)}return!0}function pre(t,e){var r,s=t.tag,a=t.anchor,n=[],c,f=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(c=t.input.charCodeAt(t.position+1),!nl(c)));){if(f=!0,t.position++,as(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,yE(t,e,mre,!1,!0),n.push(t.result),as(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)Rr(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break}return f?(t.tag=s,t.anchor=a,t.kind=\"sequence\",t.result=n,!0):!1}function fze(t,e,r){var s,a,n,c,f=t.tag,p=t.anchor,h={},E={},C=null,S=null,P=null,I=!1,R=!1,N;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),N=t.input.charCodeAt(t.position);N!==0;){if(s=t.input.charCodeAt(t.position+1),n=t.line,c=t.position,(N===63||N===58)&&nl(s))N===63?(I&&(mE(t,h,E,C,S,null),C=S=P=null),R=!0,I=!0,a=!0):I?(I=!1,a=!0):Rr(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,N=s;else if(yE(t,r,dre,!1,!0))if(t.line===n){for(N=t.input.charCodeAt(t.position);Td(N);)N=t.input.charCodeAt(++t.position);if(N===58)N=t.input.charCodeAt(++t.position),nl(N)||Rr(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),I&&(mE(t,h,E,C,S,null),C=S=P=null),R=!0,I=!1,a=!1,C=t.tag,S=t.result;else if(R)Rr(t,\"can not read an implicit mapping pair; a colon is missed\");else return t.tag=f,t.anchor=p,!0}else if(R)Rr(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return t.tag=f,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(yE(t,e,Rx,!0,a)&&(I?S=t.result:P=t.result),I||(mE(t,h,E,C,S,P,n,c),C=S=P=null),as(t,!0,-1),N=t.input.charCodeAt(t.position)),t.lineIndent>e&&N!==0)Rr(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return I&&mE(t,h,E,C,S,null),R&&(t.tag=f,t.anchor=p,t.kind=\"mapping\",t.result=h),R}function Aze(t){var e,r=!1,s=!1,a,n,c;if(c=t.input.charCodeAt(t.position),c!==33)return!1;if(t.tag!==null&&Rr(t,\"duplication of a tag property\"),c=t.input.charCodeAt(++t.position),c===60?(r=!0,c=t.input.charCodeAt(++t.position)):c===33?(s=!0,a=\"!!\",c=t.input.charCodeAt(++t.position)):a=\"!\",e=t.position,r){do c=t.input.charCodeAt(++t.position);while(c!==0&&c!==62);t.position<t.length?(n=t.input.slice(e,t.position),c=t.input.charCodeAt(++t.position)):Rr(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;c!==0&&!nl(c);)c===33&&(s?Rr(t,\"tag suffix cannot contain exclamation marks\"):(a=t.input.slice(e-1,t.position+1),yre.test(a)||Rr(t,\"named tag handle cannot contain such characters\"),s=!0,e=t.position+1)),c=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),eze.test(n)&&Rr(t,\"tag suffix cannot contain flow indicator characters\")}return n&&!Ere.test(n)&&Rr(t,\"tag name cannot contain such characters: \"+n),r?t.tag=n:a0.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a===\"!\"?t.tag=\"!\"+n:a===\"!!\"?t.tag=\"tag:yaml.org,2002:\"+n:Rr(t,'undeclared tag handle \"'+a+'\"'),!0}function pze(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Rr(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!nl(r)&&!dE(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Rr(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function hze(t){var e,r,s;if(s=t.input.charCodeAt(t.position),s!==42)return!1;for(s=t.input.charCodeAt(++t.position),e=t.position;s!==0&&!nl(s)&&!dE(s);)s=t.input.charCodeAt(++t.position);return t.position===e&&Rr(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),a0.call(t.anchorMap,r)||Rr(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],as(t,!0,-1),!0}function yE(t,e,r,s,a){var n,c,f,p=1,h=!1,E=!1,C,S,P,I,R;if(t.listener!==null&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=c=f=Rx===r||mre===r,s&&as(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;Aze(t)||pze(t);)as(t,!0,-1)?(h=!0,f=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):f=!1;if(f&&(f=h||a),(p===1||Rx===r)&&(Tx===r||dre===r?I=e:I=e+1,R=t.position-t.lineStart,p===1?f&&(pre(t,R)||fze(t,R,I))||cze(t,I)?E=!0:(c&&uze(t,I)||aze(t,I)||lze(t,I)?E=!0:hze(t)?(E=!0,(t.tag!==null||t.anchor!==null)&&Rr(t,\"alias node should not have any properties\")):oze(t,I,Tx===r)&&(E=!0,t.tag===null&&(t.tag=\"?\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(E=f&&pre(t,R))),t.tag!==null&&t.tag!==\"!\")if(t.tag===\"?\"){for(t.result!==null&&t.kind!==\"scalar\"&&Rr(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),C=0,S=t.implicitTypes.length;C<S;C+=1)if(P=t.implicitTypes[C],P.resolve(t.result)){t.result=P.construct(t.result),t.tag=P.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else a0.call(t.typeMap[t.kind||\"fallback\"],t.tag)?(P=t.typeMap[t.kind||\"fallback\"][t.tag],t.result!==null&&P.kind!==t.kind&&Rr(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+P.kind+'\", not \"'+t.kind+'\"'),P.resolve(t.result)?(t.result=P.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Rr(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")):Rr(t,\"unknown tag !<\"+t.tag+\">\");return t.listener!==null&&t.listener(\"close\",t),t.tag!==null||t.anchor!==null||E}function gze(t){var e=t.position,r,s,a,n=!1,c;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(c=t.input.charCodeAt(t.position))!==0&&(as(t,!0,-1),c=t.input.charCodeAt(t.position),!(t.lineIndent>0||c!==37));){for(n=!0,c=t.input.charCodeAt(++t.position),r=t.position;c!==0&&!nl(c);)c=t.input.charCodeAt(++t.position);for(s=t.input.slice(r,t.position),a=[],s.length<1&&Rr(t,\"directive name must not be less than one character in length\");c!==0;){for(;Td(c);)c=t.input.charCodeAt(++t.position);if(c===35){do c=t.input.charCodeAt(++t.position);while(c!==0&&!qf(c));break}if(qf(c))break;for(r=t.position;c!==0&&!nl(c);)c=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}c!==0&&aU(t),a0.call(fre,s)?fre[s](t,s,a):Fx(t,'unknown document directive \"'+s+'\"')}if(as(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,as(t,!0,-1)):n&&Rr(t,\"directives end mark is expected\"),yE(t,t.lineIndent-1,Rx,!1,!0),as(t,!0,-1),t.checkLineBreaks&&$Je.test(t.input.slice(e,t.position))&&Fx(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&Nx(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,as(t,!0,-1));return}if(t.position<t.length-1)Rr(t,\"end of the stream or a document separator is expected\");else return}function Bre(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`\n`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new sze(t,e),s=t.indexOf(\"\\0\");for(s!==-1&&(r.position=s,Rr(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)gze(r);return r.documents}function vre(t,e,r){e!==null&&typeof e==\"object\"&&typeof r>\"u\"&&(r=e,e=null);var s=Bre(t,r);if(typeof e!=\"function\")return s;for(var a=0,n=s.length;a<n;a+=1)e(s[a])}function Sre(t,e){var r=Bre(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new hre(\"expected a single document in the stream, but found more\")}}function dze(t,e,r){return typeof e==\"object\"&&e!==null&&typeof r>\"u\"&&(r=e,e=null),vre(t,e,wp.extend({schema:gre},r))}function mze(t,e){return Sre(t,wp.extend({schema:gre},e))}V2.exports.loadAll=vre;V2.exports.load=Sre;V2.exports.safeLoadAll=dze;V2.exports.safeLoad=mze});var Jre=L((m9t,AU)=>{\"use strict\";var J2=Pd(),z2=pE(),yze=Y2(),Eze=gE(),Fre=Object.prototype.toString,Nre=Object.prototype.hasOwnProperty,Ize=9,K2=10,Cze=13,wze=32,Bze=33,vze=34,Ore=35,Sze=37,Dze=38,bze=39,Pze=42,Lre=44,xze=45,Mre=58,kze=61,Qze=62,Tze=63,Rze=64,_re=91,Ure=93,Fze=96,Hre=123,Nze=124,jre=125,jo={};jo[0]=\"\\\\0\";jo[7]=\"\\\\a\";jo[8]=\"\\\\b\";jo[9]=\"\\\\t\";jo[10]=\"\\\\n\";jo[11]=\"\\\\v\";jo[12]=\"\\\\f\";jo[13]=\"\\\\r\";jo[27]=\"\\\\e\";jo[34]='\\\\\"';jo[92]=\"\\\\\\\\\";jo[133]=\"\\\\N\";jo[160]=\"\\\\_\";jo[8232]=\"\\\\L\";jo[8233]=\"\\\\P\";var Oze=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function Lze(t,e){var r,s,a,n,c,f,p;if(e===null)return{};for(r={},s=Object.keys(e),a=0,n=s.length;a<n;a+=1)c=s[a],f=String(e[c]),c.slice(0,2)===\"!!\"&&(c=\"tag:yaml.org,2002:\"+c.slice(2)),p=t.compiledTypeMap.fallback[c],p&&Nre.call(p.styleAliases,f)&&(f=p.styleAliases[f]),r[c]=f;return r}function bre(t){var e,r,s;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",s=2;else if(t<=65535)r=\"u\",s=4;else if(t<=4294967295)r=\"U\",s=8;else throw new z2(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+J2.repeat(\"0\",s-e.length)+e}function Mze(t){this.schema=t.schema||yze,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=J2.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=Lze(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function Pre(t,e){for(var r=J2.repeat(\" \",e),s=0,a=-1,n=\"\",c,f=t.length;s<f;)a=t.indexOf(`\n`,s),a===-1?(c=t.slice(s),s=f):(c=t.slice(s,a+1),s=a+1),c.length&&c!==`\n`&&(n+=r),n+=c;return n}function cU(t,e){return`\n`+J2.repeat(\" \",t.indent*e)}function _ze(t,e){var r,s,a;for(r=0,s=t.implicitTypes.length;r<s;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function fU(t){return t===wze||t===Ize}function EE(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function Uze(t){return EE(t)&&!fU(t)&&t!==65279&&t!==Cze&&t!==K2}function xre(t,e){return EE(t)&&t!==65279&&t!==Lre&&t!==_re&&t!==Ure&&t!==Hre&&t!==jre&&t!==Mre&&(t!==Ore||e&&Uze(e))}function Hze(t){return EE(t)&&t!==65279&&!fU(t)&&t!==xze&&t!==Tze&&t!==Mre&&t!==Lre&&t!==_re&&t!==Ure&&t!==Hre&&t!==jre&&t!==Ore&&t!==Dze&&t!==Pze&&t!==Bze&&t!==Nze&&t!==kze&&t!==Qze&&t!==bze&&t!==vze&&t!==Sze&&t!==Rze&&t!==Fze}function qre(t){var e=/^\\n* /;return e.test(t)}var Gre=1,Wre=2,Yre=3,Vre=4,Ox=5;function jze(t,e,r,s,a){var n,c,f,p=!1,h=!1,E=s!==-1,C=-1,S=Hze(t.charCodeAt(0))&&!fU(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(c=t.charCodeAt(n),!EE(c))return Ox;f=n>0?t.charCodeAt(n-1):null,S=S&&xre(c,f)}else{for(n=0;n<t.length;n++){if(c=t.charCodeAt(n),c===K2)p=!0,E&&(h=h||n-C-1>s&&t[C+1]!==\" \",C=n);else if(!EE(c))return Ox;f=n>0?t.charCodeAt(n-1):null,S=S&&xre(c,f)}h=h||E&&n-C-1>s&&t[C+1]!==\" \"}return!p&&!h?S&&!a(t)?Gre:Wre:r>9&&qre(t)?Ox:h?Vre:Yre}function qze(t,e,r,s){t.dump=function(){if(e.length===0)return\"''\";if(!t.noCompatMode&&Oze.indexOf(e)!==-1)return\"'\"+e+\"'\";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=s||t.flowLevel>-1&&r>=t.flowLevel;function f(p){return _ze(t,p)}switch(jze(e,c,t.indent,n,f)){case Gre:return e;case Wre:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case Yre:return\"|\"+kre(e,t.indent)+Qre(Pre(e,a));case Vre:return\">\"+kre(e,t.indent)+Qre(Pre(Gze(e,n),a));case Ox:return'\"'+Wze(e,n)+'\"';default:throw new z2(\"impossible error: invalid scalar style\")}}()}function kre(t,e){var r=qre(t)?String(e):\"\",s=t[t.length-1]===`\n`,a=s&&(t[t.length-2]===`\n`||t===`\n`),n=a?\"+\":s?\"\":\"-\";return r+n+`\n`}function Qre(t){return t[t.length-1]===`\n`?t.slice(0,-1):t}function Gze(t,e){for(var r=/(\\n+)([^\\n]*)/g,s=function(){var h=t.indexOf(`\n`);return h=h!==-1?h:t.length,r.lastIndex=h,Tre(t.slice(0,h),e)}(),a=t[0]===`\n`||t[0]===\" \",n,c;c=r.exec(t);){var f=c[1],p=c[2];n=p[0]===\" \",s+=f+(!a&&!n&&p!==\"\"?`\n`:\"\")+Tre(p,e),a=n}return s}function Tre(t,e){if(t===\"\"||t[0]===\" \")return t;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p=\"\";s=r.exec(t);)f=s.index,f-a>e&&(n=c>a?c:f,p+=`\n`+t.slice(a,n),a=n+1),c=f;return p+=`\n`,t.length-a>e&&c>a?p+=t.slice(a,c)+`\n`+t.slice(c+1):p+=t.slice(a),p.slice(1)}function Wze(t){for(var e=\"\",r,s,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(s=t.charCodeAt(n+1),s>=56320&&s<=57343)){e+=bre((r-55296)*1024+s-56320+65536),n++;continue}a=jo[r],e+=!a&&EE(r)?t[n]:a||bre(r)}return e}function Yze(t,e,r){var s=\"\",a=t.tag,n,c;for(n=0,c=r.length;n<c;n+=1)Rd(t,e,r[n],!1,!1)&&(n!==0&&(s+=\",\"+(t.condenseFlow?\"\":\" \")),s+=t.dump);t.tag=a,t.dump=\"[\"+s+\"]\"}function Vze(t,e,r,s){var a=\"\",n=t.tag,c,f;for(c=0,f=r.length;c<f;c+=1)Rd(t,e+1,r[c],!0,!0)&&((!s||c!==0)&&(a+=cU(t,e)),t.dump&&K2===t.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=t.dump);t.tag=n,t.dump=a||\"[]\"}function Kze(t,e,r){var s=\"\",a=t.tag,n=Object.keys(r),c,f,p,h,E;for(c=0,f=n.length;c<f;c+=1)E=\"\",c!==0&&(E+=\", \"),t.condenseFlow&&(E+='\"'),p=n[c],h=r[p],Rd(t,e,p,!1,!1)&&(t.dump.length>1024&&(E+=\"? \"),E+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),Rd(t,e,h,!1,!1)&&(E+=t.dump,s+=E));t.tag=a,t.dump=\"{\"+s+\"}\"}function Jze(t,e,r,s){var a=\"\",n=t.tag,c=Object.keys(r),f,p,h,E,C,S;if(t.sortKeys===!0)c.sort();else if(typeof t.sortKeys==\"function\")c.sort(t.sortKeys);else if(t.sortKeys)throw new z2(\"sortKeys must be a boolean or a function\");for(f=0,p=c.length;f<p;f+=1)S=\"\",(!s||f!==0)&&(S+=cU(t,e)),h=c[f],E=r[h],Rd(t,e+1,h,!0,!0,!0)&&(C=t.tag!==null&&t.tag!==\"?\"||t.dump&&t.dump.length>1024,C&&(t.dump&&K2===t.dump.charCodeAt(0)?S+=\"?\":S+=\"? \"),S+=t.dump,C&&(S+=cU(t,e)),Rd(t,e+1,E,!0,C)&&(t.dump&&K2===t.dump.charCodeAt(0)?S+=\":\":S+=\": \",S+=t.dump,a+=S));t.tag=n,t.dump=a||\"{}\"}function Rre(t,e,r){var s,a,n,c,f,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,c=a.length;n<c;n+=1)if(f=a[n],(f.instanceOf||f.predicate)&&(!f.instanceOf||typeof e==\"object\"&&e instanceof f.instanceOf)&&(!f.predicate||f.predicate(e))){if(t.tag=r?f.tag:\"?\",f.represent){if(p=t.styleMap[f.tag]||f.defaultStyle,Fre.call(f.represent)===\"[object Function]\")s=f.represent(e,p);else if(Nre.call(f.represent,p))s=f.represent[p](e,p);else throw new z2(\"!<\"+f.tag+'> tag resolver accepts not \"'+p+'\" style');t.dump=s}return!0}return!1}function Rd(t,e,r,s,a,n){t.tag=null,t.dump=r,Rre(t,r,!1)||Rre(t,r,!0);var c=Fre.call(t.dump);s&&(s=t.flowLevel<0||t.flowLevel>e);var f=c===\"[object Object]\"||c===\"[object Array]\",p,h;if(f&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!==\"?\"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump=\"*ref_\"+p;else{if(f&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),c===\"[object Object]\")s&&Object.keys(t.dump).length!==0?(Jze(t,e,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(Kze(t,e,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump));else if(c===\"[object Array]\"){var E=t.noArrayIndent&&e>0?e-1:e;s&&t.dump.length!==0?(Vze(t,E,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(Yze(t,E,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump))}else if(c===\"[object String]\")t.tag!==\"?\"&&qze(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new z2(\"unacceptable kind of an object to dump \"+c)}t.tag!==null&&t.tag!==\"?\"&&(t.dump=\"!<\"+t.tag+\"> \"+t.dump)}return!0}function zze(t,e){var r=[],s=[],a,n;for(uU(t,r,s),a=0,n=s.length;a<n;a+=1)e.duplicates.push(r[s[a]]);e.usedDuplicates=new Array(n)}function uU(t,e,r){var s,a,n;if(t!==null&&typeof t==\"object\")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)uU(t[a],e,r);else for(s=Object.keys(t),a=0,n=s.length;a<n;a+=1)uU(t[s[a]],e,r)}function Kre(t,e){e=e||{};var r=new Mze(e);return r.noRefs||zze(t,r),Rd(r,0,t,!0,!0)?r.dump+`\n`:\"\"}function Zze(t,e){return Kre(t,J2.extend({schema:Eze},e))}AU.exports.dump=Kre;AU.exports.safeDump=Zze});var Zre=L((y9t,Gi)=>{\"use strict\";var Lx=Dre(),zre=Jre();function Mx(t){return function(){throw new Error(\"Function \"+t+\" is deprecated and cannot be used.\")}}Gi.exports.Type=Ds();Gi.exports.Schema=xd();Gi.exports.FAILSAFE_SCHEMA=kx();Gi.exports.JSON_SCHEMA=nU();Gi.exports.CORE_SCHEMA=iU();Gi.exports.DEFAULT_SAFE_SCHEMA=gE();Gi.exports.DEFAULT_FULL_SCHEMA=Y2();Gi.exports.load=Lx.load;Gi.exports.loadAll=Lx.loadAll;Gi.exports.safeLoad=Lx.safeLoad;Gi.exports.safeLoadAll=Lx.safeLoadAll;Gi.exports.dump=zre.dump;Gi.exports.safeDump=zre.safeDump;Gi.exports.YAMLException=pE();Gi.exports.MINIMAL_SCHEMA=kx();Gi.exports.SAFE_SCHEMA=gE();Gi.exports.DEFAULT_SCHEMA=Y2();Gi.exports.scan=Mx(\"scan\");Gi.exports.parse=Mx(\"parse\");Gi.exports.compose=Mx(\"compose\");Gi.exports.addConstructor=Mx(\"addConstructor\")});var $re=L((E9t,Xre)=>{\"use strict\";var Xze=Zre();Xre.exports=Xze});var tne=L((I9t,ene)=>{\"use strict\";function $ze(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Fd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Fd)}$ze(Fd,Error);Fd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function eZe(t,e){e=e!==void 0?e:{};var r={},s={Start:cc},a=cc,n=function(ee){return[].concat(...ee)},c=\"-\",f=dn(\"-\",!1),p=function(ee){return ee},h=function(ee){return Object.assign({},...ee)},E=\"#\",C=dn(\"#\",!1),S=hu(),P=function(){return{}},I=\":\",R=dn(\":\",!1),N=function(ee,Ie){return{[ee]:Ie}},U=\",\",W=dn(\",\",!1),te=function(ee,Ie){return Ie},ie=function(ee,Ie,Oe){return Object.assign({},...[ee].concat(Ie).map(ht=>({[ht]:Oe})))},Ae=function(ee){return ee},ce=function(ee){return ee},me=La(\"correct indentation\"),pe=\" \",Be=dn(\" \",!1),Ce=function(ee){return ee.length===lr*St},g=function(ee){return ee.length===(lr+1)*St},we=function(){return lr++,!0},Ee=function(){return lr--,!0},fe=function(){return ca()},se=La(\"pseudostring\"),X=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,De=Jn([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),Re=/^[^\\r\\n\\t ,\\][{}:#\"']/,gt=Jn([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),j=function(){return ca().replace(/^ *| *$/g,\"\")},rt=\"--\",Fe=dn(\"--\",!1),Ne=/^[a-zA-Z\\/0-9]/,Pe=Jn([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),Ye=/^[^\\r\\n\\t :,]/,ke=Jn([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),it=\"null\",_e=dn(\"null\",!1),x=function(){return null},w=\"true\",b=dn(\"true\",!1),y=function(){return!0},F=\"false\",z=dn(\"false\",!1),Z=function(){return!1},$=La(\"string\"),oe='\"',xe=dn('\"',!1),Te=function(){return\"\"},lt=function(ee){return ee},Et=function(ee){return ee.join(\"\")},qt=/^[^\"\\\\\\0-\\x1F\\x7F]/,ir=Jn(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),Pt='\\\\\"',gn=dn('\\\\\"',!1),Pr=function(){return'\"'},Ir=\"\\\\\\\\\",Nr=dn(\"\\\\\\\\\",!1),nn=function(){return\"\\\\\"},oi=\"\\\\/\",wo=dn(\"\\\\/\",!1),rs=function(){return\"/\"},eo=\"\\\\b\",Bo=dn(\"\\\\b\",!1),Hi=function(){return\"\\b\"},to=\"\\\\f\",vo=dn(\"\\\\f\",!1),RA=function(){return\"\\f\"},pf=\"\\\\n\",Eh=dn(\"\\\\n\",!1),Ih=function(){return`\n`},ro=\"\\\\r\",jn=dn(\"\\\\r\",!1),Rs=function(){return\"\\r\"},no=\"\\\\t\",lu=dn(\"\\\\t\",!1),cu=function(){return\"\t\"},uu=\"\\\\u\",FA=dn(\"\\\\u\",!1),NA=function(ee,Ie,Oe,ht){return String.fromCharCode(parseInt(`0x${ee}${Ie}${Oe}${ht}`))},aa=/^[0-9a-fA-F]/,la=Jn([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),OA=La(\"blank space\"),gr=/^[ \\t]/,So=Jn([\" \",\"\t\"],!1,!1),Me=La(\"white space\"),fu=/^[ \\t\\n\\r]/,Cr=Jn([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),hf=`\\r\n`,LA=dn(`\\r\n`,!1),MA=`\n`,Au=dn(`\n`,!1),pu=\"\\r\",ac=dn(\"\\r\",!1),ve=0,Nt=0,lc=[{line:1,column:1}],Ni=0,io=[],Rt=0,xn;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function ca(){return t.substring(Nt,ve)}function ji(){return Ua(Nt,ve)}function Oi(ee,Ie){throw Ie=Ie!==void 0?Ie:Ua(Nt,ve),gf([La(ee)],t.substring(Nt,ve),Ie)}function Oa(ee,Ie){throw Ie=Ie!==void 0?Ie:Ua(Nt,ve),Ha(ee,Ie)}function dn(ee,Ie){return{type:\"literal\",text:ee,ignoreCase:Ie}}function Jn(ee,Ie,Oe){return{type:\"class\",parts:ee,inverted:Ie,ignoreCase:Oe}}function hu(){return{type:\"any\"}}function Ch(){return{type:\"end\"}}function La(ee){return{type:\"other\",description:ee}}function Ma(ee){var Ie=lc[ee],Oe;if(Ie)return Ie;for(Oe=ee-1;!lc[Oe];)Oe--;for(Ie=lc[Oe],Ie={line:Ie.line,column:Ie.column};Oe<ee;)t.charCodeAt(Oe)===10?(Ie.line++,Ie.column=1):Ie.column++,Oe++;return lc[ee]=Ie,Ie}function Ua(ee,Ie){var Oe=Ma(ee),ht=Ma(Ie);return{start:{offset:ee,line:Oe.line,column:Oe.column},end:{offset:Ie,line:ht.line,column:ht.column}}}function Xe(ee){ve<Ni||(ve>Ni&&(Ni=ve,io=[]),io.push(ee))}function Ha(ee,Ie){return new Fd(ee,null,null,Ie)}function gf(ee,Ie,Oe){return new Fd(Fd.buildMessage(ee,Ie),ee,Ie,Oe)}function cc(){var ee;return ee=_A(),ee}function wn(){var ee,Ie,Oe;for(ee=ve,Ie=[],Oe=ua();Oe!==r;)Ie.push(Oe),Oe=ua();return Ie!==r&&(Nt=ee,Ie=n(Ie)),ee=Ie,ee}function ua(){var ee,Ie,Oe,ht,mt;return ee=ve,Ie=vl(),Ie!==r?(t.charCodeAt(ve)===45?(Oe=c,ve++):(Oe=r,Rt===0&&Xe(f)),Oe!==r?(ht=Qn(),ht!==r?(mt=fa(),mt!==r?(Nt=ee,Ie=p(mt),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee}function _A(){var ee,Ie,Oe;for(ee=ve,Ie=[],Oe=UA();Oe!==r;)Ie.push(Oe),Oe=UA();return Ie!==r&&(Nt=ee,Ie=h(Ie)),ee=Ie,ee}function UA(){var ee,Ie,Oe,ht,mt,Dt,tr,fn,ai;if(ee=ve,Ie=Qn(),Ie===r&&(Ie=null),Ie!==r){if(Oe=ve,t.charCodeAt(ve)===35?(ht=E,ve++):(ht=r,Rt===0&&Xe(C)),ht!==r){if(mt=[],Dt=ve,tr=ve,Rt++,fn=st(),Rt--,fn===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(fn=t.charAt(ve),ve++):(fn=r,Rt===0&&Xe(S)),fn!==r?(tr=[tr,fn],Dt=tr):(ve=Dt,Dt=r)):(ve=Dt,Dt=r),Dt!==r)for(;Dt!==r;)mt.push(Dt),Dt=ve,tr=ve,Rt++,fn=st(),Rt--,fn===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(fn=t.charAt(ve),ve++):(fn=r,Rt===0&&Xe(S)),fn!==r?(tr=[tr,fn],Dt=tr):(ve=Dt,Dt=r)):(ve=Dt,Dt=r);else mt=r;mt!==r?(ht=[ht,mt],Oe=ht):(ve=Oe,Oe=r)}else ve=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(ht=[],mt=Je(),mt!==r)for(;mt!==r;)ht.push(mt),mt=Je();else ht=r;ht!==r?(Nt=ee,Ie=P(),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r}else ve=ee,ee=r;if(ee===r&&(ee=ve,Ie=vl(),Ie!==r?(Oe=ja(),Oe!==r?(ht=Qn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(ve)===58?(mt=I,ve++):(mt=r,Rt===0&&Xe(R)),mt!==r?(Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(tr=fa(),tr!==r?(Nt=ee,Ie=N(Oe,tr),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r&&(ee=ve,Ie=vl(),Ie!==r?(Oe=ns(),Oe!==r?(ht=Qn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(ve)===58?(mt=I,ve++):(mt=r,Rt===0&&Xe(R)),mt!==r?(Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(tr=fa(),tr!==r?(Nt=ee,Ie=N(Oe,tr),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r))){if(ee=ve,Ie=vl(),Ie!==r)if(Oe=ns(),Oe!==r)if(ht=Qn(),ht!==r)if(mt=gu(),mt!==r){if(Dt=[],tr=Je(),tr!==r)for(;tr!==r;)Dt.push(tr),tr=Je();else Dt=r;Dt!==r?(Nt=ee,Ie=N(Oe,mt),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;else ve=ee,ee=r;else ve=ee,ee=r;else ve=ee,ee=r;if(ee===r)if(ee=ve,Ie=vl(),Ie!==r)if(Oe=ns(),Oe!==r){if(ht=[],mt=ve,Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&Xe(W)),tr!==r?(fn=Qn(),fn===r&&(fn=null),fn!==r?(ai=ns(),ai!==r?(Nt=mt,Dt=te(Oe,ai),mt=Dt):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r),mt!==r)for(;mt!==r;)ht.push(mt),mt=ve,Dt=Qn(),Dt===r&&(Dt=null),Dt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&Xe(W)),tr!==r?(fn=Qn(),fn===r&&(fn=null),fn!==r?(ai=ns(),ai!==r?(Nt=mt,Dt=te(Oe,ai),mt=Dt):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r)):(ve=mt,mt=r);else ht=r;ht!==r?(mt=Qn(),mt===r&&(mt=null),mt!==r?(t.charCodeAt(ve)===58?(Dt=I,ve++):(Dt=r,Rt===0&&Xe(R)),Dt!==r?(tr=Qn(),tr===r&&(tr=null),tr!==r?(fn=fa(),fn!==r?(Nt=ee,Ie=ie(Oe,ht,fn),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)}else ve=ee,ee=r;else ve=ee,ee=r}return ee}function fa(){var ee,Ie,Oe,ht,mt,Dt,tr;if(ee=ve,Ie=ve,Rt++,Oe=ve,ht=st(),ht!==r?(mt=Mt(),mt!==r?(t.charCodeAt(ve)===45?(Dt=c,ve++):(Dt=r,Rt===0&&Xe(f)),Dt!==r?(tr=Qn(),tr!==r?(ht=[ht,mt,Dt,tr],Oe=ht):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r),Rt--,Oe!==r?(ve=Ie,Ie=void 0):Ie=r,Ie!==r?(Oe=Je(),Oe!==r?(ht=kn(),ht!==r?(mt=wn(),mt!==r?(Dt=Aa(),Dt!==r?(Nt=ee,Ie=Ae(mt),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r&&(ee=ve,Ie=st(),Ie!==r?(Oe=kn(),Oe!==r?(ht=_A(),ht!==r?(mt=Aa(),mt!==r?(Nt=ee,Ie=Ae(ht),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r))if(ee=ve,Ie=uc(),Ie!==r){if(Oe=[],ht=Je(),ht!==r)for(;ht!==r;)Oe.push(ht),ht=Je();else Oe=r;Oe!==r?(Nt=ee,Ie=ce(Ie),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;return ee}function vl(){var ee,Ie,Oe;for(Rt++,ee=ve,Ie=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));Oe!==r;)Ie.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));return Ie!==r?(Nt=ve,Oe=Ce(Ie),Oe?Oe=void 0:Oe=r,Oe!==r?(Ie=[Ie,Oe],ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r),Rt--,ee===r&&(Ie=r,Rt===0&&Xe(me)),ee}function Mt(){var ee,Ie,Oe;for(ee=ve,Ie=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));Oe!==r;)Ie.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&Xe(Be));return Ie!==r?(Nt=ve,Oe=g(Ie),Oe?Oe=void 0:Oe=r,Oe!==r?(Ie=[Ie,Oe],ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r),ee}function kn(){var ee;return Nt=ve,ee=we(),ee?ee=void 0:ee=r,ee}function Aa(){var ee;return Nt=ve,ee=Ee(),ee?ee=void 0:ee=r,ee}function ja(){var ee;return ee=Sl(),ee===r&&(ee=fc()),ee}function ns(){var ee,Ie,Oe;if(ee=Sl(),ee===r){if(ee=ve,Ie=[],Oe=qa(),Oe!==r)for(;Oe!==r;)Ie.push(Oe),Oe=qa();else Ie=r;Ie!==r&&(Nt=ee,Ie=fe()),ee=Ie}return ee}function uc(){var ee;return ee=Li(),ee===r&&(ee=Cs(),ee===r&&(ee=Sl(),ee===r&&(ee=fc()))),ee}function gu(){var ee;return ee=Li(),ee===r&&(ee=Sl(),ee===r&&(ee=qa())),ee}function fc(){var ee,Ie,Oe,ht,mt,Dt;if(Rt++,ee=ve,X.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(De)),Ie!==r){for(Oe=[],ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Re.test(t.charAt(ve))?(Dt=t.charAt(ve),ve++):(Dt=r,Rt===0&&Xe(gt)),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);ht!==r;)Oe.push(ht),ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Re.test(t.charAt(ve))?(Dt=t.charAt(ve),ve++):(Dt=r,Rt===0&&Xe(gt)),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);Oe!==r?(Nt=ee,Ie=j(),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;return Rt--,ee===r&&(Ie=r,Rt===0&&Xe(se)),ee}function qa(){var ee,Ie,Oe,ht,mt;if(ee=ve,t.substr(ve,2)===rt?(Ie=rt,ve+=2):(Ie=r,Rt===0&&Xe(Fe)),Ie===r&&(Ie=null),Ie!==r)if(Ne.test(t.charAt(ve))?(Oe=t.charAt(ve),ve++):(Oe=r,Rt===0&&Xe(Pe)),Oe!==r){for(ht=[],Ye.test(t.charAt(ve))?(mt=t.charAt(ve),ve++):(mt=r,Rt===0&&Xe(ke));mt!==r;)ht.push(mt),Ye.test(t.charAt(ve))?(mt=t.charAt(ve),ve++):(mt=r,Rt===0&&Xe(ke));ht!==r?(Nt=ee,Ie=j(),ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;else ve=ee,ee=r;return ee}function Li(){var ee,Ie;return ee=ve,t.substr(ve,4)===it?(Ie=it,ve+=4):(Ie=r,Rt===0&&Xe(_e)),Ie!==r&&(Nt=ee,Ie=x()),ee=Ie,ee}function Cs(){var ee,Ie;return ee=ve,t.substr(ve,4)===w?(Ie=w,ve+=4):(Ie=r,Rt===0&&Xe(b)),Ie!==r&&(Nt=ee,Ie=y()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,5)===F?(Ie=F,ve+=5):(Ie=r,Rt===0&&Xe(z)),Ie!==r&&(Nt=ee,Ie=Z()),ee=Ie),ee}function Sl(){var ee,Ie,Oe,ht;return Rt++,ee=ve,t.charCodeAt(ve)===34?(Ie=oe,ve++):(Ie=r,Rt===0&&Xe(xe)),Ie!==r?(t.charCodeAt(ve)===34?(Oe=oe,ve++):(Oe=r,Rt===0&&Xe(xe)),Oe!==r?(Nt=ee,Ie=Te(),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r),ee===r&&(ee=ve,t.charCodeAt(ve)===34?(Ie=oe,ve++):(Ie=r,Rt===0&&Xe(xe)),Ie!==r?(Oe=df(),Oe!==r?(t.charCodeAt(ve)===34?(ht=oe,ve++):(ht=r,Rt===0&&Xe(xe)),ht!==r?(Nt=ee,Ie=lt(Oe),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)),Rt--,ee===r&&(Ie=r,Rt===0&&Xe($)),ee}function df(){var ee,Ie,Oe;if(ee=ve,Ie=[],Oe=Ac(),Oe!==r)for(;Oe!==r;)Ie.push(Oe),Oe=Ac();else Ie=r;return Ie!==r&&(Nt=ee,Ie=Et(Ie)),ee=Ie,ee}function Ac(){var ee,Ie,Oe,ht,mt,Dt;return qt.test(t.charAt(ve))?(ee=t.charAt(ve),ve++):(ee=r,Rt===0&&Xe(ir)),ee===r&&(ee=ve,t.substr(ve,2)===Pt?(Ie=Pt,ve+=2):(Ie=r,Rt===0&&Xe(gn)),Ie!==r&&(Nt=ee,Ie=Pr()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===Ir?(Ie=Ir,ve+=2):(Ie=r,Rt===0&&Xe(Nr)),Ie!==r&&(Nt=ee,Ie=nn()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===oi?(Ie=oi,ve+=2):(Ie=r,Rt===0&&Xe(wo)),Ie!==r&&(Nt=ee,Ie=rs()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===eo?(Ie=eo,ve+=2):(Ie=r,Rt===0&&Xe(Bo)),Ie!==r&&(Nt=ee,Ie=Hi()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===to?(Ie=to,ve+=2):(Ie=r,Rt===0&&Xe(vo)),Ie!==r&&(Nt=ee,Ie=RA()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===pf?(Ie=pf,ve+=2):(Ie=r,Rt===0&&Xe(Eh)),Ie!==r&&(Nt=ee,Ie=Ih()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===ro?(Ie=ro,ve+=2):(Ie=r,Rt===0&&Xe(jn)),Ie!==r&&(Nt=ee,Ie=Rs()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===no?(Ie=no,ve+=2):(Ie=r,Rt===0&&Xe(lu)),Ie!==r&&(Nt=ee,Ie=cu()),ee=Ie,ee===r&&(ee=ve,t.substr(ve,2)===uu?(Ie=uu,ve+=2):(Ie=r,Rt===0&&Xe(FA)),Ie!==r?(Oe=wi(),Oe!==r?(ht=wi(),ht!==r?(mt=wi(),mt!==r?(Dt=wi(),Dt!==r?(Nt=ee,Ie=NA(Oe,ht,mt,Dt),ee=Ie):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)):(ve=ee,ee=r)))))))))),ee}function wi(){var ee;return aa.test(t.charAt(ve))?(ee=t.charAt(ve),ve++):(ee=r,Rt===0&&Xe(la)),ee}function Qn(){var ee,Ie;if(Rt++,ee=[],gr.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(So)),Ie!==r)for(;Ie!==r;)ee.push(Ie),gr.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(So));else ee=r;return Rt--,ee===r&&(Ie=r,Rt===0&&Xe(OA)),ee}function pc(){var ee,Ie;if(Rt++,ee=[],fu.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(Cr)),Ie!==r)for(;Ie!==r;)ee.push(Ie),fu.test(t.charAt(ve))?(Ie=t.charAt(ve),ve++):(Ie=r,Rt===0&&Xe(Cr));else ee=r;return Rt--,ee===r&&(Ie=r,Rt===0&&Xe(Me)),ee}function Je(){var ee,Ie,Oe,ht,mt,Dt;if(ee=ve,Ie=st(),Ie!==r){for(Oe=[],ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Dt=st(),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);ht!==r;)Oe.push(ht),ht=ve,mt=Qn(),mt===r&&(mt=null),mt!==r?(Dt=st(),Dt!==r?(mt=[mt,Dt],ht=mt):(ve=ht,ht=r)):(ve=ht,ht=r);Oe!==r?(Ie=[Ie,Oe],ee=Ie):(ve=ee,ee=r)}else ve=ee,ee=r;return ee}function st(){var ee;return t.substr(ve,2)===hf?(ee=hf,ve+=2):(ee=r,Rt===0&&Xe(LA)),ee===r&&(t.charCodeAt(ve)===10?(ee=MA,ve++):(ee=r,Rt===0&&Xe(Au)),ee===r&&(t.charCodeAt(ve)===13?(ee=pu,ve++):(ee=r,Rt===0&&Xe(ac)))),ee}let St=2,lr=0;if(xn=a(),xn!==r&&ve===t.length)return xn;throw xn!==r&&ve<t.length&&Xe(Ch()),gf(io,Ni<t.length?t.charAt(Ni):null,Ni<t.length?Ua(Ni,Ni+1):Ua(Ni,Ni))}ene.exports={SyntaxError:Fd,parse:eZe}});function nne(t){return t.match(tZe)?t:JSON.stringify(t)}function sne(t){return typeof t>\"u\"?!0:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>sne(t[e])):!1}function pU(t,e,r){if(t===null)return`null\n`;if(typeof t==\"number\"||typeof t==\"boolean\")return`${t.toString()}\n`;if(typeof t==\"string\")return`${nne(t)}\n`;if(Array.isArray(t)){if(t.length===0)return`[]\n`;let s=\"  \".repeat(e);return`\n${t.map(n=>`${s}- ${pU(n,e+1,!1)}`).join(\"\")}`}if(typeof t==\"object\"&&t){let[s,a]=t instanceof _x?[t.data,!1]:[t,!0],n=\"  \".repeat(e),c=Object.keys(s);a&&c.sort((p,h)=>{let E=rne.indexOf(p),C=rne.indexOf(h);return E===-1&&C===-1?p<h?-1:p>h?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!sne(s[p])).map((p,h)=>{let E=s[p],C=nne(p),S=pU(E,e+1,!0),P=h>0||r?n:\"\",I=C.length>1024?`? ${C}\n${P}:`:`${C}:`,R=S.startsWith(`\n`)?S:` ${S}`;return`${P}${I}${R}`}).join(e===0?`\n`:\"\")||`\n`;return r?`\n${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function il(t){try{let e=pU(t,0,!1);return e!==`\n`?e:\"\"}catch(e){throw e.location&&(e.message=e.message.replace(/(\\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function rZe(t){return t.endsWith(`\n`)||(t+=`\n`),(0,ine.parse)(t)}function iZe(t){if(nZe.test(t))return rZe(t);let e=(0,Ux.safeLoad)(t,{schema:Ux.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!=\"object\")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error(\"Expected an indexed object, got an array instead. Does your file follow Yaml's rules?\");return e}function ls(t){return iZe(t)}var Ux,ine,tZe,rne,_x,nZe,one=It(()=>{Ux=et($re()),ine=et(tne()),tZe=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,rne=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],_x=class{constructor(e){this.data=e}};il.PreserveOrdering=_x;nZe=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var Z2={};Vt(Z2,{parseResolution:()=>bx,parseShell:()=>vx,parseSyml:()=>ls,stringifyArgument:()=>$_,stringifyArgumentSegment:()=>eU,stringifyArithmeticExpression:()=>Dx,stringifyCommand:()=>X_,stringifyCommandChain:()=>AE,stringifyCommandChainThen:()=>Z_,stringifyCommandLine:()=>Sx,stringifyCommandLineThen:()=>z_,stringifyEnvSegment:()=>Bx,stringifyRedirectArgument:()=>G2,stringifyResolution:()=>Px,stringifyShell:()=>fE,stringifyShellLine:()=>fE,stringifySyml:()=>il,stringifyValueArgument:()=>Sd});var Bc=It(()=>{ste();cte();one()});var lne=L((S9t,hU)=>{\"use strict\";var sZe=t=>{let e=!1,r=!1,s=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+\"-\"+t.slice(a),e=!1,s=r,r=!0,a++):r&&s&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+\"-\"+t.slice(a-1),s=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,s=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},ane=(t,e)=>{if(!(typeof t==\"string\"||Array.isArray(t)))throw new TypeError(\"Expected the input to be `string | string[]`\");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join(\"-\"):t=t.trim(),t.length===0?\"\":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=sZe(t)),t=t.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(t))};hU.exports=ane;hU.exports.default=ane});var cne=L((D9t,oZe)=>{oZe.exports=[{name:\"Agola CI\",constant:\"AGOLA\",env:\"AGOLA_GIT_REF\",pr:\"AGOLA_PULL_REQUEST_ID\"},{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"TF_BUILD\",pr:{BUILD_REASON:\"PullRequest\"}},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codemagic\",constant:\"CODEMAGIC\",env:\"CM_BUILD_ID\",pr:\"CM_PULL_REQUEST\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"Earthly\",constant:\"EARTHLY\",env:\"EARTHLY_CI\"},{name:\"Expo Application Services\",constant:\"EAS\",env:\"EAS_BUILD\"},{name:\"Gerrit\",constant:\"GERRIT\",env:\"GERRIT_PROJECT\"},{name:\"Gitea Actions\",constant:\"GITEA_ACTIONS\",env:\"GITEA_ACTIONS\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Google Cloud Build\",constant:\"GOOGLE_CLOUD_BUILD\",env:\"BUILDER_OUTPUT\"},{name:\"Harness CI\",constant:\"HARNESS\",env:\"HARNESS_BUILD_ID\"},{name:\"Heroku\",constant:\"HEROKU\",env:{env:\"NODE\",includes:\"/app/.heroku/node/bin/node\"}},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Prow\",constant:\"PROW\",env:\"PROW_JOB_ID\"},{name:\"ReleaseHub\",constant:\"RELEASEHUB\",env:\"RELEASE_BUILD_ID\"},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Sourcehut\",constant:\"SOURCEHUT\",env:{CI_NAME:\"sourcehut\"}},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vela\",constant:\"VELA\",env:\"VELA\",pr:{VELA_PULL_REQUEST:\"1\"}},{name:\"Vercel\",constant:\"VERCEL\",env:{any:[\"NOW_BUILDER\",\"VERCEL\"]},pr:\"VERCEL_GIT_PULL_REQUEST_ID\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"},{name:\"Woodpecker\",constant:\"WOODPECKER\",env:{CI:\"woodpecker\"},pr:{CI_BUILD_EVENT:\"pull_request\"}},{name:\"Xcode Cloud\",constant:\"XCODE_CLOUD\",env:\"CI_XCODE_PROJECT\",pr:\"CI_PULL_REQUEST_NUMBER\"},{name:\"Xcode Server\",constant:\"XCODE_SERVER\",env:\"XCS\"}]});var Nd=L(_l=>{\"use strict\";var fne=cne(),bs=process.env;Object.defineProperty(_l,\"_vendors\",{value:fne.map(function(t){return t.constant})});_l.name=null;_l.isPR=null;fne.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(s){return une(s)});if(_l[t.constant]=r,!!r)switch(_l.name=t.name,typeof t.pr){case\"string\":_l.isPR=!!bs[t.pr];break;case\"object\":\"env\"in t.pr?_l.isPR=t.pr.env in bs&&bs[t.pr.env]!==t.pr.ne:\"any\"in t.pr?_l.isPR=t.pr.any.some(function(s){return!!bs[s]}):_l.isPR=une(t.pr);break;default:_l.isPR=null}});_l.isCI=!!(bs.CI!==\"false\"&&(bs.BUILD_ID||bs.BUILD_NUMBER||bs.CI||bs.CI_APP_ID||bs.CI_BUILD_ID||bs.CI_BUILD_NUMBER||bs.CI_NAME||bs.CONTINUOUS_INTEGRATION||bs.RUN_ID||_l.name));function une(t){return typeof t==\"string\"?!!bs[t]:\"env\"in t?bs[t.env]&&bs[t.env].includes(t.includes):\"any\"in t?t.any.some(function(e){return!!bs[e]}):Object.keys(t).every(function(e){return bs[e]===t[e]})}});var ei,En,Od,gU,Hx,Ane,dU,mU,jx=It(()=>{(function(t){t.StartOfInput=\"\\0\",t.EndOfInput=\"\u0001\",t.EndOfPartialInput=\"\u0002\"})(ei||(ei={}));(function(t){t[t.InitialNode=0]=\"InitialNode\",t[t.SuccessNode=1]=\"SuccessNode\",t[t.ErrorNode=2]=\"ErrorNode\",t[t.CustomNode=3]=\"CustomNode\"})(En||(En={}));Od=-1,gU=/^(-h|--help)(?:=([0-9]+))?$/,Hx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,Ane=/^-[a-zA-Z]{2,}$/,dU=/^([^=]+)=([\\s\\S]*)$/,mU=process.env.DEBUG_CLI===\"1\"});var nt,IE,qx,yU,Gx=It(()=>{jx();nt=class extends Error{constructor(e){super(e),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},IE=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:\"none\"},this.name=\"UnknownSyntaxError\",this.candidates.length===0)this.message=\"Command not found, but we're not sure what's the alternative.\";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${s}\n${yU(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(`\n`)}\n\n${yU(e)}`}},qx=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:\"none\"},this.name=\"AmbiguousSyntaxError\",this.message=`Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(`\n`)}\n\n${yU(e)}`}},yU=t=>`While running ${t.filter(e=>e!==ei.EndOfInput&&e!==ei.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\\s/)||e.length===0||r!==`\"${e}\"`?r:e}).join(\" \")}`});function aZe(t){let e=t.split(`\n`),r=e.filter(a=>a.match(/\\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(s).trimRight()).join(`\n`)}function qo(t,{format:e,paragraphs:r}){return t=t.replace(/\\r\\n?/g,`\n`),t=aZe(t),t=t.replace(/^\\n+|\\n+$/g,\"\"),t=t.replace(/^(\\s*)-([^\\n]*?)\\n+/gm,`$1-$2\n\n`),t=t.replace(/\\n(\\n)?\\n*/g,(s,a)=>a||\" \"),r&&(t=t.split(/\\n/).map(s=>{let a=s.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((c,f)=>\" \".repeat(n)+(f===0?\"- \":\"  \")+c).join(`\n`)}).join(`\n\n`)),t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(s,a,n)=>e.code(a+n+a)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(s,a,n)=>e.bold(a+n+a)),t?`${t}\n`:\"\"}var EU,pne,hne,IU=It(()=>{EU=Array(80).fill(\"\\u2501\");for(let t=0;t<=24;++t)EU[EU.length-t]=`\\x1B[38;5;${232+t}m\\u2501`;pne={header:t=>`\\x1B[1m\\u2501\\u2501\\u2501 ${t}${t.length<75?` ${EU.slice(t.length+5).join(\"\")}`:\":\"}\\x1B[0m`,bold:t=>`\\x1B[1m${t}\\x1B[22m`,error:t=>`\\x1B[31m\\x1B[1m${t}\\x1B[22m\\x1B[39m`,code:t=>`\\x1B[36m${t}\\x1B[39m`},hne={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Ea(t){return{...t,[X2]:!0}}function Gf(t,e){return typeof t>\"u\"?[t,e]:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function Wx(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,s,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=s!==\".\"||!e?`${s.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function $2(t,e){return e.length===1?new nt(`${t}${Wx(e[0],{mergeName:!0})}`):new nt(`${t}:\n${e.map(r=>`\n- ${Wx(r)}`).join(\"\")}`)}function Ld(t,e,r){if(typeof r>\"u\")return e;let s=[],a=[],n=f=>{let p=e;return e=f,n.bind(null,p)};if(!r(e,{errors:s,coercions:a,coercion:n}))throw $2(`Invalid value for ${t}`,s);for(let[,f]of a)f();return e}var X2,Bp=It(()=>{Gx();X2=Symbol(\"clipanion/isOption\")});var Ia={};Vt(Ia,{KeyRelationship:()=>Wf,TypeAssertionError:()=>c0,applyCascade:()=>rB,as:()=>DZe,assert:()=>BZe,assertWithErrors:()=>vZe,cascade:()=>Jx,fn:()=>bZe,hasAtLeastOneKey:()=>bU,hasExactLength:()=>Ene,hasForbiddenKeys:()=>YZe,hasKeyRelationship:()=>iB,hasMaxLength:()=>xZe,hasMinLength:()=>PZe,hasMutuallyExclusiveKeys:()=>VZe,hasRequiredKeys:()=>WZe,hasUniqueItems:()=>kZe,isArray:()=>Yx,isAtLeast:()=>SU,isAtMost:()=>RZe,isBase64:()=>HZe,isBoolean:()=>gZe,isDate:()=>mZe,isDict:()=>IZe,isEnum:()=>Ao,isHexColor:()=>UZe,isISO8601:()=>_Ze,isInExclusiveRange:()=>NZe,isInInclusiveRange:()=>FZe,isInstanceOf:()=>wZe,isInteger:()=>DU,isJSON:()=>jZe,isLiteral:()=>dne,isLowerCase:()=>OZe,isMap:()=>EZe,isNegative:()=>QZe,isNullable:()=>GZe,isNumber:()=>BU,isObject:()=>mne,isOneOf:()=>vU,isOptional:()=>qZe,isPartial:()=>CZe,isPayload:()=>dZe,isPositive:()=>TZe,isRecord:()=>Kx,isSet:()=>yZe,isString:()=>wE,isTuple:()=>Vx,isUUID4:()=>MZe,isUnknown:()=>wU,isUpperCase:()=>LZe,makeTrait:()=>yne,makeValidator:()=>Wr,matchesRegExp:()=>tB,softAssert:()=>SZe});function ti(t){return t===null?\"null\":t===void 0?\"undefined\":t===\"\"?\"an empty string\":typeof t==\"symbol\"?`<${t.toString()}>`:Array.isArray(t)?\"an array\":JSON.stringify(t)}function CE(t,e){if(t.length===0)return\"nothing\";if(t.length===1)return ti(t[0]);let r=t.slice(0,-1),s=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>ti(n)).join(\", \")}${a}${ti(s)}`}function l0(t,e){var r,s,a;return typeof e==\"number\"?`${(r=t?.p)!==null&&r!==void 0?r:\".\"}[${e}]`:lZe.test(e)?`${(s=t?.p)!==null&&s!==void 0?s:\"\"}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(e)}]`}function CU(t,e,r){return t===1?e:r}function mr({errors:t,p:e}={},r){return t?.push(`${e??\".\"}: ${r}`),!1}function pZe(t,e){return r=>{t[e]=r}}function Yf(t,e){return r=>{let s=t[e];return t[e]=r,Yf(t,e).bind(null,s)}}function eB(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}function wU(){return Wr({test:(t,e)=>!0})}function dne(t){return Wr({test:(e,r)=>e!==t?mr(r,`Expected ${ti(t)} (got ${ti(e)})`):!0})}function wE(){return Wr({test:(t,e)=>typeof t!=\"string\"?mr(e,`Expected a string (got ${ti(t)})`):!0})}function Ao(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a==\"string\"||typeof a==\"number\"),s=new Set(e);return s.size===1?dne([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${CE(e,\"or\")} (got ${ti(a)})`):mr(n,`Expected a valid enumeration value (got ${ti(a)})`)})}function gZe(){return Wr({test:(t,e)=>{var r;if(typeof t!=\"boolean\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return mr(e,\"Unbound coercion result\");let s=hZe.get(t);if(typeof s<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a boolean (got ${ti(t)})`)}return!0}})}function BU(){return Wr({test:(t,e)=>{var r;if(typeof t!=\"number\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return mr(e,\"Unbound coercion result\");let s;if(typeof t==\"string\"){let a;try{a=JSON.parse(t)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===t)s=a;else return mr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof s<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a number (got ${ti(t)})`)}return!0}})}function dZe(t){return Wr({test:(e,r)=>{var s;if(typeof r?.coercions>\"u\")return mr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return mr(r,\"Unbound coercion result\");if(typeof e!=\"string\")return mr(r,`Expected a string (got ${ti(e)})`);let a;try{a=JSON.parse(e)}catch{return mr(r,`Expected a JSON string (got ${ti(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yf(n,\"value\")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function mZe(){return Wr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return mr(e,\"Unbound coercion result\");let s;if(typeof t==\"string\"&&gne.test(t))s=new Date(t);else{let a;if(typeof t==\"string\"){let n;try{n=JSON.parse(t)}catch{}typeof n==\"number\"&&(a=n)}else typeof t==\"number\"&&(a=t);if(typeof a<\"u\")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof s<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a date (got ${ti(t)})`)}return!0}})}function Yx(t,{delimiter:e}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r==\"string\"&&typeof e<\"u\"&&typeof s?.coercions<\"u\"){if(typeof s?.coercion>\"u\")return mr(s,\"Unbound coercion result\");r=r.split(e)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ti(r)})`);let c=!0;for(let f=0,p=r.length;f<p&&(c=t(r[f],Object.assign(Object.assign({},s),{p:l0(s,f),coercion:Yf(r,f)}))&&c,!(!c&&s?.errors==null));++f);return r!==n&&s.coercions.push([(a=s.p)!==null&&a!==void 0?a:\".\",s.coercion.bind(null,r)]),c}})}function yZe(t,{delimiter:e}={}){let r=Yx(t,{delimiter:e});return Wr({test:(s,a)=>{var n,c;if(Object.getPrototypeOf(s).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",eB(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=t(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Yf(f,\"value\")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:\".\",eB(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ti(s)})`)}})}function EZe(t,e){let r=Yx(Vx([t,e])),s=Kx(e,{keys:t});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return mr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,P)=>S[0]!==h[P][0]||S[1]!==h[P][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:\".\",eB(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(C,Object.assign(Object.assign({},n),{p:l0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return mr(n,\"Unbound coercion result\");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:\".\",eB(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Yf(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",eB(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ti(a)})`)}})}function Vx(t,{delimiter:e}={}){let r=Ene(t.length);return Wr({test:(s,a)=>{var n;if(typeof s==\"string\"&&typeof e<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");s=s.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ti(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f<p&&f<t.length&&(c=t[f](s[f],Object.assign(Object.assign({},a),{p:l0(a,f),coercion:Yf(s,f)}))&&c,!(!c&&a?.errors==null));++f);return c}})}function Kx(t,{keys:e=null}={}){let r=Yx(Vx([e??wE(),t]));return Wr({test:(s,a)=>{var n;if(Array.isArray(s)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?mr(a,\"Unbound coercion result\"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,s)]),!0):!1;if(typeof s!=\"object\"||s===null)return mr(a,`Expected an object (got ${ti(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p<h&&(f||a?.errors!=null);++p){let E=c[p],C=s[E];if(E===\"__proto__\"||E===\"constructor\"){f=mr(Object.assign(Object.assign({},a),{p:l0(a,E)}),\"Unsafe property name\");continue}if(e!==null&&!e(E,a)){f=!1;continue}if(!t(C,Object.assign(Object.assign({},a),{p:l0(a,E),coercion:Yf(s,E)}))){f=!1;continue}}return f}})}function IZe(t,e={}){return Kx(t,e)}function mne(t,{extra:e=null}={}){let r=Object.keys(t),s=Wr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return mr(n,`Expected an object (got ${ti(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h===\"constructor\"||h===\"__proto__\")p=mr(Object.assign(Object.assign({},n),{p:l0(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(C,Object.assign(Object.assign({},n),{p:l0(n,h),coercion:Yf(a,h)}))&&p:e===null?p=mr(Object.assign(Object.assign({},n),{p:l0(n,h)}),`Extraneous property (got ${ti(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:pZe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(f,n)&&p),p}});return Object.assign(s,{properties:t})}function CZe(t){return mne(t,{extra:Kx(wU())})}function yne(t){return()=>t}function Wr({test:t}){return yne(t)()}function BZe(t,e){if(!e(t))throw new c0}function vZe(t,e){let r=[];if(!e(t,{errors:r}))throw new c0({errors:r})}function SZe(t,e){}function DZe(t,e,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new c0({errors:n});return{value:void 0,errors:n??!0}}let c={value:t},f=Yf(c,\"value\"),p=[];if(!e(t,{errors:n,coercion:f,coercions:p})){if(a)throw new c0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function bZe(t,e){let r=Vx(t);return(...s)=>{if(!r(s))throw new c0;return e(...s)}}function PZe(t){return Wr({test:(e,r)=>e.length>=t?!0:mr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function xZe(t){return Wr({test:(e,r)=>e.length<=t?!0:mr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function Ene(t){return Wr({test:(e,r)=>e.length!==t?mr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function kZe({map:t}={}){return Wr({test:(e,r)=>{let s=new Set,a=new Set;for(let n=0,c=e.length;n<c;++n){let f=e[n],p=typeof t<\"u\"?t(f):f;if(s.has(p)){if(a.has(p))continue;mr(r,`Expected to contain unique elements; got a duplicate with ${ti(e)}`),a.add(p)}else s.add(p)}return a.size===0}})}function QZe(){return Wr({test:(t,e)=>t<=0?!0:mr(e,`Expected to be negative (got ${t})`)})}function TZe(){return Wr({test:(t,e)=>t>=0?!0:mr(e,`Expected to be positive (got ${t})`)})}function SU(t){return Wr({test:(e,r)=>e>=t?!0:mr(r,`Expected to be at least ${t} (got ${e})`)})}function RZe(t){return Wr({test:(e,r)=>e<=t?!0:mr(r,`Expected to be at most ${t} (got ${e})`)})}function FZe(t,e){return Wr({test:(r,s)=>r>=t&&r<=e?!0:mr(s,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function NZe(t,e){return Wr({test:(r,s)=>r>=t&&r<e?!0:mr(s,`Expected to be in the [${t}; ${e}[ range (got ${r})`)})}function DU({unsafe:t=!1}={}){return Wr({test:(e,r)=>e!==Math.round(e)?mr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?mr(r,`Expected to be a safe integer (got ${e})`):!0})}function tB(t){return Wr({test:(e,r)=>t.test(e)?!0:mr(r,`Expected to match the pattern ${t.toString()} (got ${ti(e)})`)})}function OZe(){return Wr({test:(t,e)=>t!==t.toLowerCase()?mr(e,`Expected to be all-lowercase (got ${t})`):!0})}function LZe(){return Wr({test:(t,e)=>t!==t.toUpperCase()?mr(e,`Expected to be all-uppercase (got ${t})`):!0})}function MZe(){return Wr({test:(t,e)=>AZe.test(t)?!0:mr(e,`Expected to be a valid UUID v4 (got ${ti(t)})`)})}function _Ze(){return Wr({test:(t,e)=>gne.test(t)?!0:mr(e,`Expected to be a valid ISO 8601 date string (got ${ti(t)})`)})}function UZe({alpha:t=!1}){return Wr({test:(e,r)=>(t?cZe.test(e):uZe.test(e))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ti(e)})`)})}function HZe(){return Wr({test:(t,e)=>fZe.test(t)?!0:mr(e,`Expected to be a valid base 64 string (got ${ti(t)})`)})}function jZe(t=wU()){return Wr({test:(e,r)=>{let s;try{s=JSON.parse(e)}catch{return mr(r,`Expected to be a valid JSON string (got ${ti(e)})`)}return t(s,r)}})}function Jx(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<\"u\"?Yf(f,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!t(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<\"u\"){if(f.value!==s){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function rB(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Jx(t,r)}function qZe(t){return Wr({test:(e,r)=>typeof e>\"u\"?!0:t(e,r)})}function GZe(t){return Wr({test:(e,r)=>e===null?!0:t(e,r)})}function WZe(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${CU(p.length,\"property\",\"properties\")} ${CE(p,\"and\")}`):!0}})}function bU(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${CE(Array.from(s),\"or\")}`)})}function YZe(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${CU(p.length,\"property\",\"properties\")} ${CE(p,\"and\")}`):!0}})}function VZe(t,e){var r;let s=new Set(t),a=nB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${CE(p,\"and\")}`):!0}})}function iB(t,e,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=nB[(n=s?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=KZe[e],E=e===Wf.Forbids?\"or\":\"and\";return Wr({test:(C,S)=>{let P=new Set(Object.keys(C));if(!f(P,t,C)||c.has(C[t]))return!0;let I=[];for(let R of p)(f(P,R,C)&&!c.has(C[R]))!==h.expect&&I.push(R);return I.length>=1?mr(S,`Property \"${t}\" ${h.message} ${CU(I.length,\"property\",\"properties\")} ${CE(I,E)}`):!0}})}var lZe,cZe,uZe,fZe,AZe,gne,hZe,wZe,vU,c0,nB,Wf,KZe,Ul=It(()=>{lZe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;cZe=/^#[0-9a-f]{6}$/i,uZe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,fZe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,AZe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,gne=/^(?:[1-9]\\d{3}(-?)(?:(?:0[1-9]|1[0-2])\\1(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])\\1(?:29|30)|(?:0[13578]|1[02])(?:\\1)31|00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[0-5]))|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\\2)29|-?366))T(?:[01]\\d|2[0-3])(:?)[0-5]\\d(?:\\3[0-5]\\d)?(?:Z|[+-][01]\\d(?:\\3[0-5]\\d)?)$/;hZe=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);wZe=t=>Wr({test:(e,r)=>e instanceof t?!0:mr(r,`Expected an instance of ${t.name} (got ${ti(e)})`)}),vU=(t,{exclusive:e=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<\"u\"?[]:void 0;for(let h=0,E=t.length;h<E;++h){let C=typeof s?.errors<\"u\"?[]:void 0,S=typeof s?.coercions<\"u\"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},s),{errors:C,coercions:S,p:`${(a=s?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(f.push([`#${h+1}`,S]),!e)break}else p?.push(C[0])}if(f.length===1){let[,h]=f[0];return typeof h<\"u\"&&((n=s?.coercions)===null||n===void 0||n.push(...h)),!0}return f.length>1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(\", \")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});c0=class extends Error{constructor({errors:e}={}){let r=\"Type mismatch\";if(e&&e.length>0){r+=`\n`;for(let s of e)r+=`\n- ${s}`}super(r)}};nB={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<\"u\",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids=\"Forbids\",t.Requires=\"Requires\"})(Wf||(Wf={}));KZe={[Wf.Forbids]:{expect:!1,message:\"forbids using\"},[Wf.Requires]:{expect:!0,message:\"requires using\"}}});var ot,u0=It(()=>{Bp();ot=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Ul(),Ia)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw $2(\"Invalid option schema\",p);for(let[,C]of h)C()}else if(r!=null)throw new Error(\"Invalid command schema\");let s=await this.execute();return typeof s<\"u\"?s:0}};ot.isOption=X2;ot.Default=[]});function sl(t){mU&&console.log(t)}function Cne(){let t={nodes:[]};for(let e=0;e<En.CustomNode;++e)t.nodes.push(Hl());return t}function JZe(t){let e=Cne(),r=[],s=e.nodes.length;for(let a of t){r.push(s);for(let n=0;n<a.nodes.length;++n)Bne(n)||e.nodes.push(nXe(a.nodes[n],s));s+=a.nodes.length-En.CustomNode+1}for(let a of r)BE(e,En.InitialNode,a);return e}function Mu(t,e){return t.nodes.push(e),t.nodes.length-1}function zZe(t){let e=new Set,r=s=>{if(e.has(s))return;e.add(s);let a=t.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=t.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(En.InitialNode)}function ZZe(t,{prefix:e=\"\"}={}){if(mU){sl(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)sl(`${e}  ${r}: ${JSON.stringify(t.nodes[r])}`)}}function XZe(t,e,r=!1){sl(`Running a vm on ${JSON.stringify(e)}`);let s=[{node:En.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];ZZe(t,{prefix:\"  \"});let a=[ei.StartOfInput,...e];for(let n=0;n<a.length;++n){let c=a[n],f=c===ei.EndOfInput||c===ei.EndOfPartialInput,p=n-1;sl(`  Processing ${JSON.stringify(c)}`);let h=[];for(let{node:E,state:C}of s){sl(`    Current node is ${E}`);let S=t.nodes[E];if(E===En.ErrorNode){h.push({node:E,state:C});continue}console.assert(S.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let P=Object.prototype.hasOwnProperty.call(S.statics,c);if(!r||n<a.length-1||P)if(P){let I=S.statics[c];for(let{to:R,reducer:N}of I)h.push({node:R,state:typeof N<\"u\"?zx(xU,N,C,c,p):C}),sl(`      Static transition to ${R} found`)}else sl(\"      No static transition found\");else{let I=!1;for(let R of Object.keys(S.statics))if(R.startsWith(c)){if(c===R)for(let{to:N,reducer:U}of S.statics[R])h.push({node:N,state:typeof U<\"u\"?zx(xU,U,C,c,p):C}),sl(`      Static transition to ${N} found`);else for(let{to:N}of S.statics[R])h.push({node:N,state:{...C,remainder:R.slice(c.length)}}),sl(`      Static transition to ${N} found (partial match)`);I=!0}I||sl(\"      No partial static transition found\")}if(!f)for(let[I,{to:R,reducer:N}]of S.dynamics)zx(iXe,I,C,c,p)&&(h.push({node:R,state:typeof N<\"u\"?zx(xU,N,C,c,p):C}),sl(`      Dynamic transition to ${R} found (via ${I})`))}if(h.length===0&&f&&e.length===1)return[{node:En.InitialNode,state:Ine}];if(h.length===0)throw new IE(e,s.filter(({node:E})=>E!==En.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===En.ErrorNode))throw new IE(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=eXe(h)}if(s.length>0){sl(\"  Results:\");for(let n of s)sl(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else sl(\"  No results\");return s}function $Ze(t,e,{endToken:r=ei.EndOfInput}={}){let s=XZe(t,[...e,r]);return tXe(e,s.map(({state:a})=>a))}function eXe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function tXe(t,e){let r=e.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Od||S.requiredOptions.every(P=>P.some(I=>S.options.find(R=>R.name===I))));if(a.length===0)throw new IE(t,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:P})=>!P).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=rXe(E);if(C.length>1)throw new qx(t,C.map(S=>S.candidateUsage));return C[0]}function rXe(t){let e=[],r=[];for(let s of t)s.selectedIndex===Od?r.push(s):e.push(s);return r.length>0&&e.push({...Ine,path:wne(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),e}function wne(t,e,...r){return e===void 0?Array.from(t):wne(t.filter((s,a)=>s===e[a]),...r)}function Hl(){return{dynamics:[],shortcuts:[],statics:{}}}function Bne(t){return t===En.SuccessNode||t===En.ErrorNode}function PU(t,e=0){return{to:Bne(t.to)?t.to:t.to>=En.CustomNode?t.to+e-En.CustomNode+1:t.to+e,reducer:t.reducer}}function nXe(t,e=0){let r=Hl();for(let[s,a]of t.dynamics)r.dynamics.push([s,PU(a,e)]);for(let s of t.shortcuts)r.shortcuts.push(PU(s,e));for(let[s,a]of Object.entries(t.statics))r.statics[s]=a.map(n=>PU(n,e));return r}function js(t,e,r,s,a){t.nodes[e].dynamics.push([r,{to:s,reducer:a}])}function BE(t,e,r,s){t.nodes[e].shortcuts.push({to:r,reducer:s})}function Ca(t,e,r,s,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:s,reducer:a})}function zx(t,e,r,s,a){if(Array.isArray(e)){let[n,...c]=e;return t[n](r,s,a,...c)}else return t[e](r,s,a)}var Ine,iXe,xU,jl,kU,Zx,Xx=It(()=>{jx();Gx();Ine={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Od,partial:!1,tokens:[]};iXe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!==\"-\"&&e.startsWith(\"-\"),isNotOptionLike:(t,e)=>t.ignoreOptions||e===\"-\"||!e.startsWith(\"-\"),isOption:(t,e,r,s)=>!t.ignoreOptions&&e===s,isBatchOption:(t,e,r,s)=>!t.ignoreOptions&&Ane.test(e)&&[...e.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(t,e,r,s,a)=>{let n=e.match(dU);return!t.ignoreOptions&&!!n&&Hx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(t,e,r,s)=>!t.ignoreOptions&&e===`--no-${s.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&gU.test(e),isUnsupportedOption:(t,e,r,s)=>!t.ignoreOptions&&e.startsWith(\"-\")&&Hx.test(e)&&!s.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith(\"-\")&&!Hx.test(e)},xU={setCandidateState:(t,e,r,s)=>({...t,...s}),setSelectedIndex:(t,e,r,s)=>({...t,selectedIndex:s}),setPartialIndex:(t,e,r,s)=>({...t,selectedIndex:s,partial:!0}),pushBatch:(t,e,r,s)=>{let a=t.options.slice(),n=t.tokens.slice();for(let c=1;c<e.length;++c){let f=s.get(`-${e[c]}`),p=c===1?[0,2]:[c,c+1];a.push({name:f,value:!0}),n.push({segmentIndex:r,type:\"option\",option:f,slice:p})}return{...t,options:a,tokens:n}},pushBound:(t,e,r)=>{let[,s,a]=e.match(dU),n=t.options.concat({name:s,value:a}),c=t.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,s.length],option:s},{segmentIndex:r,type:\"assign\",slice:[s.length,s.length+1]},{segmentIndex:r,type:\"value\",slice:[s.length+1,s.length+a.length+1]}]);return{...t,options:n,tokens:c}},pushPath:(t,e,r)=>{let s=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:\"path\"});return{...t,path:s,tokens:a}},pushPositional:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:s,tokens:a}},pushExtra:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:s,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:jl}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:s,tokens:a}},pushTrue:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:s});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!1}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:s});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,s)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var s;let a=t.options[t.options.length-1],n=t.options.slice(),c=t.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([e]),{...t,options:n,tokens:c}},setStringValue:(t,e,r)=>{let s=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:\"value\"});return s.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,s)=>{let[,,a]=e.match(gU);return typeof a<\"u\"?{...t,options:[{name:\"-c\",value:String(s)},{name:\"-i\",value:a}]}:{...t,options:[{name:\"-c\",value:String(s)}]}},setError:(t,e,r,s)=>e===ei.EndOfInput||e===ei.EndOfPartialInput?{...t,errorMessage:`${s}.`}:{...t,errorMessage:`${s} (\"${e}\").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},jl=Symbol(),kU=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:s,proxy:a})}addPositional({name:e=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===jl)throw new Error(\"Optional parameters cannot be declared when using .rest() or .proxy()\");if(!r&&this.arity.trailing.length>0)throw new Error(\"Optional parameters cannot be declared after the required trailing positional arguments\");!r&&this.arity.extra!==jl?this.arity.extra.push(e):this.arity.extra!==jl&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e=\"arg\",required:r=0}={}){if(this.arity.extra===jl)throw new Error(\"Infinite lists cannot be declared multiple times in the same command\");if(this.arity.trailing.length>0)throw new Error(\"Infinite lists cannot be declared after the required trailing positional arguments\");for(let s=0;s<r;++s)this.addPositional({name:e});this.arity.extra=jl}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:s=0,hidden:a=!1,required:n=!1,allowBinding:c=!0}){if(!c&&s>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=e.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of e)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:e,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),e){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I<p;++I)S.push(` #${I}`);let P=`${f.join(\",\")}${S.join(\"\")}`;!r&&E?a.push({preferredName:c,nameSet:f,definition:P,description:E,required:C}):s.push(C?`<${P}>`:`[${P}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===jl?s.push(\"...\"):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let e=Cne(),r=En.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Mu(e,Hl()),Ca(e,En.InitialNode,ei.StartOfInput,r,[\"setCandidateState\",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Mu(e,Hl());BE(e,p,S),this.registerOptions(e,S),p=S}for(let S=0;S<f.length;++S){let P=Mu(e,Hl());Ca(e,p,f[S],P,\"pushPath\"),p=P}if(this.arity.leading.length>0||!this.arity.proxy){let S=Mu(e,Hl());js(e,p,\"isHelp\",S,[\"useHelp\",this.cliIndex]),js(e,S,\"always\",S,\"pushExtra\"),Ca(e,S,ei.EndOfInput,En.SuccessNode,[\"setSelectedIndex\",Od]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Ca(e,p,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ca(e,p,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let S=0;S<this.arity.leading.length;++S){let P=Mu(e,Hl());(!this.arity.proxy||S+1!==this.arity.leading.length)&&this.registerOptions(e,P),(this.arity.trailing.length>0||S+1!==this.arity.leading.length)&&(Ca(e,P,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ca(e,P,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex])),js(e,h,\"isNotOptionLike\",P,\"pushPositional\"),h=P}let E=h;if(this.arity.extra===jl||this.arity.extra.length>0){let S=Mu(e,Hl());if(BE(e,h,S),this.arity.extra===jl){let P=Mu(e,Hl());this.arity.proxy||this.registerOptions(e,P),js(e,h,n,P,\"pushExtraNoLimits\"),js(e,P,n,P,\"pushExtraNoLimits\"),BE(e,P,S)}else for(let P=0;P<this.arity.extra.length;++P){let I=Mu(e,Hl());(!this.arity.proxy||P>0)&&this.registerOptions(e,I),js(e,E,n,I,\"pushExtra\"),BE(e,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ca(e,E,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ca(e,E,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let C=E;for(let S=0;S<this.arity.trailing.length;++S){let P=Mu(e,Hl());this.arity.proxy||this.registerOptions(e,P),S+1<this.arity.trailing.length&&(Ca(e,P,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ca(e,P,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex])),js(e,C,\"isNotOptionLike\",P,\"pushPositional\"),C=P}js(e,C,n,En.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Ca(e,C,ei.EndOfInput,En.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Ca(e,C,ei.EndOfPartialInput,En.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){js(e,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),js(e,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),js(e,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),js(e,r,[\"isUnsupportedOption\",this.allOptionNames],En.ErrorNode,[\"setError\",\"Unsupported option name\"]),js(e,r,[\"isInvalidOption\"],En.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let s of this.options)if(s.arity===0)for(let a of s.nameSet)js(e,r,[\"isOption\",a],r,[\"pushTrue\",s.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&js(e,r,[\"isNegatedOption\",a],r,[\"pushFalse\",s.preferredName]);else{let a=Mu(e,Hl());for(let n of s.nameSet)js(e,r,[\"isOption\",n],a,[\"pushUndefined\",s.preferredName]);for(let n=0;n<s.arity;++n){let c=Mu(e,Hl());Ca(e,a,ei.EndOfInput,En.ErrorNode,\"setOptionArityError\"),Ca(e,a,ei.EndOfPartialInput,En.ErrorNode,\"setOptionArityError\"),js(e,a,\"isOptionLike\",En.ErrorNode,\"setOptionArityError\");let f=s.arity===1?\"setStringValue\":\"pushStringValue\";js(e,a,\"isNotOptionLike\",c,f),a=c}BE(e,a,r)}}},Zx=class t{constructor({binaryName:e=\"...\"}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new t(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new kU(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:c}=a.compile();e.push(n),r.push(c)}let s=JZe(e);return zZe(s),{machine:s,contexts:r,process:(a,{partial:n}={})=>{let c=n?ei.EndOfPartialInput:ei.EndOfInput;return $Ze(s,a,{endToken:c})}}}}});function Sne(){return $x.default&&\"getColorDepth\"in $x.default.WriteStream.prototype?$x.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR===\"0\"?1:process.env.FORCE_COLOR===\"1\"||typeof process.stdout<\"u\"&&process.stdout.isTTY?8:1}function Dne(t){let e=vne;if(typeof e>\"u\"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=ye(\"async_hooks\");e=vne=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=e.getStore();return typeof p>\"u\"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=e.getStore();return typeof p>\"u\"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>e.run(t,r)}var $x,vne,bne=It(()=>{$x=et(ye(\"tty\"),1)});var ek,Pne=It(()=>{u0();ek=class t extends ot{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let s=new t(r);s.path=e.path;for(let a of e.options)switch(a.name){case\"-c\":s.commands.push(Number(a.value));break;case\"-i\":s.index=Number(a.value);break}return s}async execute(){let e=this.commands;if(typeof this.index<\"u\"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection:\n`),this.context.stdout.write(`\n`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(`\n`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.\n`)}}}});async function Qne(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Rne(t);return wa.from(r,e).runExit(s,a)}async function Tne(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Rne(t);return wa.from(r,e).run(s,a)}function Rne(t){let e,r,s,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(s=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?s=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],s=t[2]):t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],s=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],s=t[2],a=t[3];break}if(typeof s>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function kne(t){return t()}var xne,wa,Fne=It(()=>{jx();Xx();IU();bne();u0();Pne();xne=Symbol(\"clipanion/errorCommand\");wa=class t{constructor({binaryLabel:e,binaryName:r=\"...\",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Zx({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of a)s.register(n);return s}register(e){var r;let s=new Map,a=new e;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[ot.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<\"u\")for(let p of f)n.addPath(p);this.registrations.set(e,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:s,context:a,partial:n}=typeof e==\"object\"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...t.defaultContext,...a};switch(p.selectedIndex){case Od:{let E=ek.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[P,{transformer:I}]of C.specs.entries())S[P]=I(C.builder,P,p,h);return S}catch(P){throw P[xne]=S,P}}break}}async run(e,r){var s,a;let n,c={...t.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=Dne(c))!==null&&a!==void 0?a:kne,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),c=typeof e.usage.category<\"u\"?qo(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof e.usage.description<\"u\"?qo(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<\"u\"?qo(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<\"u\"?e.usage.examples.map(([E,C])=>[qo(E,{format:this.format(r),paragraphs:!1}),C.replace(/\\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:e});a&&r.push(a)}return r}usage(e=null,{colored:r,detailed:s=!1,prefix:a=\"$ \"}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<\"u\";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(P=>P.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(s=!0)}let c=e!==null&&e instanceof ot?e.constructor:e,f=\"\";if(c)if(s){let{description:p=\"\",details:h=\"\",examples:E=[]}=c.usage||{};p!==\"\"&&(f+=qo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,P=>P.toUpperCase()),f+=`\n`),(h!==\"\"||E.length>0)&&(f+=`${this.format(r).header(\"Usage\")}\n`,f+=`\n`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C}\n`,S.length>0){f+=`\n`,f+=`${this.format(r).header(\"Options\")}\n`;let P=S.reduce((I,R)=>Math.max(I,R.definition.length),0);f+=`\n`;for(let{definition:I,description:R}of S)f+=`  ${this.format(r).bold(I.padEnd(P))}    ${qo(R,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(f+=`\n`,f+=`${this.format(r).header(\"Details\")}\n`,f+=`\n`,f+=qo(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=`\n`,f+=`${this.format(r).header(\"Examples\")}\n`;for(let[P,I]of E)f+=`\n`,f+=qo(P,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[S,{index:P}]of this.registrations.entries()){if(typeof S.usage>\"u\")continue;let I=typeof S.usage.category<\"u\"?qo(S.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(I);typeof R>\"u\"&&p.set(I,R=[]);let{usage:N}=this.getUsageByIndex(P);R.push({commandClass:S,usage:N})}let h=Array.from(p.keys()).sort((S,P)=>S===null?-1:P===null?1:S.localeCompare(P,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",C=typeof this.binaryVersion<\"u\";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:f+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,f+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):f+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let S of h){let P=p.get(S).slice().sort((R,N)=>R.usage.localeCompare(N.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),I=S!==null?S.trim():\"General commands\";f+=`\n`,f+=`${this.format(r).header(`${I}`)}\n`;for(let{commandClass:R,usage:N}of P){let U=R.usage.description||\"undocumented\";f+=`\n`,f+=`  ${this.format(r).bold(N)}\n`,f+=`    ${qo(U,{format:this.format(r),paragraphs:!1})}`}}f+=`\n`,f+=qo(\"You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.\",{format:this.format(r),paragraphs:!0})}return f}error(e,r){var s,{colored:a,command:n=(s=e[xne])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!e||typeof e!=\"object\"||!(\"stack\"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let c=\"\",f=e.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");f===\"Error\"&&(f=\"Internal Error\"),c+=`${this.format(a).error(f)}: ${e.message}\n`;let p=e.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(c+=`\n`,c+=this.usage(n)):e.stack&&(c+=`${e.stack.replace(/^.*\\n/,\"\")}\n`),c}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.defaultContext.colorDepth>1)?pne:hne}getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(s.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};wa.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:Sne()}});var sB,Nne=It(()=>{u0();sB=class extends ot{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};sB.paths=[[\"--clipanion=definitions\"]]});var oB,One=It(()=>{u0();oB=class extends ot{async execute(){this.context.stdout.write(this.cli.usage())}};oB.paths=[[\"-h\"],[\"--help\"]]});function tk(t={}){return Ea({definition(e,r){var s;e.addProxy({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){return s.positionals.map(({value:a})=>a)}})}var QU=It(()=>{Bp()});var aB,Lne=It(()=>{u0();QU();aB=class extends ot{constructor(){super(...arguments),this.args=tk()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};aB.paths=[[\"--clipanion=tokens\"]]});var lB,Mne=It(()=>{u0();lB=class extends ot{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:\"<unknown>\"}\n`)}};lB.paths=[[\"-v\"],[\"--version\"]]});var TU={};Vt(TU,{DefinitionsCommand:()=>sB,HelpCommand:()=>oB,TokensCommand:()=>aB,VersionCommand:()=>lB});var _ne=It(()=>{Nne();One();Lne();Mne()});function Une(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(\",\"),f=new Set(c);return Ea({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<\"u\"?[...s]:void 0;for(let{name:P,value:I}of E.options)f.has(P)&&(C=P,S=S??[],S.push(I));return typeof S<\"u\"?Ld(C??h,S,a.validator):S}})}var Hne=It(()=>{Bp()});function jne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(\",\"),c=new Set(n);return Ea({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var qne=It(()=>{Bp()});function Gne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(\",\"),c=new Set(n);return Ea({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var Wne=It(()=>{Bp()});function Yne(t={}){return Ea({definition(e,r){var s;e.addRest({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){let a=c=>{let f=s.positionals[c];return f.extra===jl||f.extra===!1&&c<e.arity.leading.length},n=0;for(;n<s.positionals.length&&a(n);)n+=1;return s.positionals.splice(0,n).map(({value:c})=>c)}})}var Vne=It(()=>{Xx();Bp()});function sXe(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(\",\"),f=new Set(c);return Ea({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,P=s;typeof a.env<\"u\"&&C.env[a.env]&&(S=a.env,P=C.env[a.env]);for(let{name:I,value:R}of E.options)f.has(I)&&(S=I,P=R);return typeof P==\"string\"?Ld(S??h,P,a.validator):P}})}function oXe(t={}){let{required:e=!0}=t;return Ea({definition(r,s){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:s,required:t.required})},transformer(r,s,a){var n;for(let c=0;c<a.positionals.length;++c){if(a.positionals[c].extra===jl||e&&a.positionals[c].extra===!0||!e&&a.positionals[c].extra===!1)continue;let[f]=a.positionals.splice(c,1);return Ld((n=t.name)!==null&&n!==void 0?n:s,f.value,t.validator)}}})}function Kne(t,...e){return typeof t==\"string\"?sXe(t,...e):oXe(t)}var Jne=It(()=>{Xx();Bp()});var ge={};Vt(ge,{Array:()=>Une,Boolean:()=>jne,Counter:()=>Gne,Proxy:()=>tk,Rest:()=>Yne,String:()=>Kne,applyValidator:()=>Ld,cleanValidationError:()=>Wx,formatError:()=>$2,isOptionSymbol:()=>X2,makeCommandOption:()=>Ea,rerouteArguments:()=>Gf});var zne=It(()=>{Bp();QU();Hne();qne();Wne();Vne();Jne()});var cB={};Vt(cB,{Builtins:()=>TU,Cli:()=>wa,Command:()=>ot,Option:()=>ge,UsageError:()=>nt,formatMarkdownish:()=>qo,run:()=>Tne,runExit:()=>Qne});var Wt=It(()=>{Gx();IU();u0();Fne();_ne();zne()});var Zne=L((RWt,aXe)=>{aXe.exports={name:\"dotenv\",version:\"16.3.1\",description:\"Loads environment variables from .env file\",main:\"lib/main.js\",types:\"lib/main.d.ts\",exports:{\".\":{types:\"./lib/main.d.ts\",require:\"./lib/main.js\",default:\"./lib/main.js\"},\"./config\":\"./config.js\",\"./config.js\":\"./config.js\",\"./lib/env-options\":\"./lib/env-options.js\",\"./lib/env-options.js\":\"./lib/env-options.js\",\"./lib/cli-options\":\"./lib/cli-options.js\",\"./lib/cli-options.js\":\"./lib/cli-options.js\",\"./package.json\":\"./package.json\"},scripts:{\"dts-check\":\"tsc --project tests/types/tsconfig.json\",lint:\"standard\",\"lint-readme\":\"standard-markdown\",pretest:\"npm run lint && npm run dts-check\",test:\"tap tests/*.js --100 -Rspec\",prerelease:\"npm test\",release:\"standard-version\"},repository:{type:\"git\",url:\"git://github.com/motdotla/dotenv.git\"},funding:\"https://github.com/motdotla/dotenv?sponsor=1\",keywords:[\"dotenv\",\"env\",\".env\",\"environment\",\"variables\",\"config\",\"settings\"],readmeFilename:\"README.md\",license:\"BSD-2-Clause\",devDependencies:{\"@definitelytyped/dtslint\":\"^0.0.133\",\"@types/node\":\"^18.11.3\",decache:\"^4.6.1\",sinon:\"^14.0.1\",standard:\"^17.0.0\",\"standard-markdown\":\"^7.1.0\",\"standard-version\":\"^9.5.0\",tap:\"^16.3.0\",tar:\"^6.1.11\",typescript:\"^4.8.4\"},engines:{node:\">=12\"},browser:{fs:!1}}});var tie=L((FWt,vp)=>{var Xne=ye(\"fs\"),FU=ye(\"path\"),lXe=ye(\"os\"),cXe=ye(\"crypto\"),uXe=Zne(),NU=uXe.version,fXe=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function AXe(t){let e={},r=t.toString();r=r.replace(/\\r\\n?/mg,`\n`);let s;for(;(s=fXe.exec(r))!=null;){let a=s[1],n=s[2]||\"\";n=n.trim();let c=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),c==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),e[a]=n}return e}function pXe(t){let e=eie(t),r=qs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let s=$ne(t).split(\",\"),a=s.length,n;for(let c=0;c<a;c++)try{let f=s[c].trim(),p=dXe(r,f);n=qs.decrypt(p.ciphertext,p.key);break}catch(f){if(c+1>=a)throw f}return qs.parse(n)}function hXe(t){console.log(`[dotenv@${NU}][INFO] ${t}`)}function gXe(t){console.log(`[dotenv@${NU}][WARN] ${t}`)}function RU(t){console.log(`[dotenv@${NU}][DEBUG] ${t}`)}function $ne(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:\"\"}function dXe(t,e){let r;try{r=new URL(e)}catch(f){throw f.code===\"ERR_INVALID_URL\"?new Error(\"INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\"):f}let s=r.password;if(!s)throw new Error(\"INVALID_DOTENV_KEY: Missing key part\");let a=r.searchParams.get(\"environment\");if(!a)throw new Error(\"INVALID_DOTENV_KEY: Missing environment part\");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=t.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function eie(t){let e=FU.resolve(process.cwd(),\".env\");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(\".vault\")?e:`${e}.vault`}function mXe(t){return t[0]===\"~\"?FU.join(lXe.homedir(),t.slice(1)):t}function yXe(t){hXe(\"Loading env from encrypted .env.vault\");let e=qs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),qs.populate(r,e,t),{parsed:e}}function EXe(t){let e=FU.resolve(process.cwd(),\".env\"),r=\"utf8\",s=!!(t&&t.debug);t&&(t.path!=null&&(e=mXe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=qs.parse(Xne.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),qs.populate(n,a,t),{parsed:a}}catch(a){return s&&RU(`Failed to load ${e} ${a.message}`),{error:a}}}function IXe(t){let e=eie(t);return $ne(t).length===0?qs.configDotenv(t):Xne.existsSync(e)?qs._configVault(t):(gXe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),qs.configDotenv(t))}function CXe(t,e){let r=Buffer.from(e.slice(-64),\"hex\"),s=Buffer.from(t,\"base64\"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=cXe.createDecipheriv(\"aes-256-gcm\",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message===\"Invalid key length\",h=c.message===\"Unsupported state or unable to authenticate data\";if(f||p){let E=\"INVALID_DOTENV_KEY: It must be 64 characters long (or more)\";throw new Error(E)}else if(h){let E=\"DECRYPTION_FAILED: Please check your DOTENV_KEY\";throw new Error(E)}else throw console.error(\"Error: \",c.code),console.error(\"Error: \",c.message),c}}function wXe(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof e!=\"object\")throw new Error(\"OBJECT_REQUIRED: Please check the processEnv argument being passed to populate\");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),s&&RU(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):t[n]=e[n]}var qs={configDotenv:EXe,_configVault:yXe,_parseVault:pXe,config:IXe,decrypt:CXe,parse:AXe,populate:wXe};vp.exports.configDotenv=qs.configDotenv;vp.exports._configVault=qs._configVault;vp.exports._parseVault=qs._parseVault;vp.exports.config=qs.config;vp.exports.decrypt=qs.decrypt;vp.exports.parse=qs.parse;vp.exports.populate=qs.populate;vp.exports=qs});var nie=L((NWt,rie)=>{\"use strict\";rie.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Md=L((OWt,OU)=>{\"use strict\";var BXe=nie(),iie=t=>{if(t<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let e=[],r=0,s=()=>{r--,e.length>0&&e.shift()()},a=(f,p,...h)=>{r++;let E=BXe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{r<t?a(f,p,...h):e.push(a.bind(null,f,p,...h))},c=(f,...p)=>new Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),c};OU.exports=iie;OU.exports.default=iie});function Vf(t){return`YN${t.toString(10).padStart(4,\"0\")}`}function rk(t){let e=Number(t.slice(2));if(typeof Dr[e]>\"u\")throw new Error(`Unknown message name: \"${t}\"`);return e}var Dr,nk=It(()=>{Dr=(Me=>(Me[Me.UNNAMED=0]=\"UNNAMED\",Me[Me.EXCEPTION=1]=\"EXCEPTION\",Me[Me.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Me[Me.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Me[Me.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Me[Me.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Me[Me.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Me[Me.MUST_BUILD=7]=\"MUST_BUILD\",Me[Me.MUST_REBUILD=8]=\"MUST_REBUILD\",Me[Me.BUILD_FAILED=9]=\"BUILD_FAILED\",Me[Me.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Me[Me.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Me[Me.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Me[Me.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Me[Me.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Me[Me.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Me[Me.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Me[Me.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Me[Me.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Me[Me.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Me[Me.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Me[Me.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Me[Me.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Me[Me.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Me[Me.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Me[Me.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Me[Me.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Me[Me.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Me[Me.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Me[Me.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Me[Me.FETCH_FAILED=30]=\"FETCH_FAILED\",Me[Me.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Me[Me.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Me[Me.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Me[Me.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Me[Me.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Me[Me.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Me[Me.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Me[Me.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Me[Me.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Me[Me.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Me[Me.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Me[Me.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Me[Me.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Me[Me.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Me[Me.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Me[Me.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Me[Me.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Me[Me.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Me[Me.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Me[Me.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Me[Me.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Me[Me.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Me[Me.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Me[Me.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Me[Me.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Me[Me.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Me[Me.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Me[Me.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Me[Me.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Me[Me.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Me[Me.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Me[Me.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Me[Me.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Me[Me.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Me[Me.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Me[Me.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Me[Me.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Me[Me.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Me[Me.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Me[Me.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Me[Me.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Me[Me.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Me[Me.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Me[Me.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Me[Me.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Me[Me.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Me[Me.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Me[Me.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Me[Me.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Me[Me.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Me[Me.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Me[Me.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Me[Me.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Me[Me.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Me[Me.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Me[Me.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Me[Me.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Me[Me.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Me[Me.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Me[Me.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Me[Me.INVALID_PROVENANCE_ENVIRONMENT=91]=\"INVALID_PROVENANCE_ENVIRONMENT\",Me))(Dr||{})});var uB=L((MWt,sie)=>{var vXe=\"2.0.0\",SXe=Number.MAX_SAFE_INTEGER||9007199254740991,DXe=16,bXe=250,PXe=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];sie.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:DXe,MAX_SAFE_BUILD_LENGTH:bXe,MAX_SAFE_INTEGER:SXe,RELEASE_TYPES:PXe,SEMVER_SPEC_VERSION:vXe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var fB=L((_Wt,oie)=>{var xXe=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error(\"SEMVER\",...t):()=>{};oie.exports=xXe});var vE=L((Sp,aie)=>{var{MAX_SAFE_COMPONENT_LENGTH:LU,MAX_SAFE_BUILD_LENGTH:kXe,MAX_LENGTH:QXe}=uB(),TXe=fB();Sp=aie.exports={};var RXe=Sp.re=[],FXe=Sp.safeRe=[],rr=Sp.src=[],nr=Sp.t={},NXe=0,MU=\"[a-zA-Z0-9-]\",OXe=[[\"\\\\s\",1],[\"\\\\d\",QXe],[MU,kXe]],LXe=t=>{for(let[e,r]of OXe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Kr=(t,e,r)=>{let s=LXe(e),a=NXe++;TXe(t,a,e),nr[t]=a,rr[a]=e,RXe[a]=new RegExp(e,r?\"g\":void 0),FXe[a]=new RegExp(s,r?\"g\":void 0)};Kr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Kr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Kr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${MU}*`);Kr(\"MAINVERSION\",`(${rr[nr.NUMERICIDENTIFIER]})\\\\.(${rr[nr.NUMERICIDENTIFIER]})\\\\.(${rr[nr.NUMERICIDENTIFIER]})`);Kr(\"MAINVERSIONLOOSE\",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Kr(\"PRERELEASEIDENTIFIER\",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr(\"PRERELEASE\",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Kr(\"PRERELEASELOOSE\",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Kr(\"BUILDIDENTIFIER\",`${MU}+`);Kr(\"BUILD\",`(?:\\\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\\\.${rr[nr.BUILDIDENTIFIER]})*))`);Kr(\"FULLPLAIN\",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Kr(\"FULL\",`^${rr[nr.FULLPLAIN]}$`);Kr(\"LOOSEPLAIN\",`[v=\\\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Kr(\"LOOSE\",`^${rr[nr.LOOSEPLAIN]}$`);Kr(\"GTLT\",\"((?:<|>)?=?)\");Kr(\"XRANGEIDENTIFIERLOOSE\",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Kr(\"XRANGEIDENTIFIER\",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Kr(\"XRANGEPLAIN\",`[v=\\\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Kr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Kr(\"XRANGE\",`^${rr[nr.GTLT]}\\\\s*${rr[nr.XRANGEPLAIN]}$`);Kr(\"XRANGELOOSE\",`^${rr[nr.GTLT]}\\\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Kr(\"COERCEPLAIN\",`(^|[^\\\\d])(\\\\d{1,${LU}})(?:\\\\.(\\\\d{1,${LU}}))?(?:\\\\.(\\\\d{1,${LU}}))?`);Kr(\"COERCE\",`${rr[nr.COERCEPLAIN]}(?:$|[^\\\\d])`);Kr(\"COERCEFULL\",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\\\d])`);Kr(\"COERCERTL\",rr[nr.COERCE],!0);Kr(\"COERCERTLFULL\",rr[nr.COERCEFULL],!0);Kr(\"LONETILDE\",\"(?:~>?)\");Kr(\"TILDETRIM\",`(\\\\s*)${rr[nr.LONETILDE]}\\\\s+`,!0);Sp.tildeTrimReplace=\"$1~\";Kr(\"TILDE\",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Kr(\"TILDELOOSE\",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr(\"LONECARET\",\"(?:\\\\^)\");Kr(\"CARETTRIM\",`(\\\\s*)${rr[nr.LONECARET]}\\\\s+`,!0);Sp.caretTrimReplace=\"$1^\";Kr(\"CARET\",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Kr(\"CARETLOOSE\",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr(\"COMPARATORLOOSE\",`^${rr[nr.GTLT]}\\\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Kr(\"COMPARATOR\",`^${rr[nr.GTLT]}\\\\s*(${rr[nr.FULLPLAIN]})$|^$`);Kr(\"COMPARATORTRIM\",`(\\\\s*)${rr[nr.GTLT]}\\\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Sp.comparatorTrimReplace=\"$1$2$3\";Kr(\"HYPHENRANGE\",`^\\\\s*(${rr[nr.XRANGEPLAIN]})\\\\s+-\\\\s+(${rr[nr.XRANGEPLAIN]})\\\\s*$`);Kr(\"HYPHENRANGELOOSE\",`^\\\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\\\s*$`);Kr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Kr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Kr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var ik=L((UWt,lie)=>{var MXe=Object.freeze({loose:!0}),_Xe=Object.freeze({}),UXe=t=>t?typeof t!=\"object\"?MXe:t:_Xe;lie.exports=UXe});var _U=L((HWt,fie)=>{var cie=/^[0-9]+$/,uie=(t,e)=>{let r=cie.test(t),s=cie.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:t<e?-1:1},HXe=(t,e)=>uie(e,t);fie.exports={compareIdentifiers:uie,rcompareIdentifiers:HXe}});var Go=L((jWt,gie)=>{var sk=fB(),{MAX_LENGTH:Aie,MAX_SAFE_INTEGER:ok}=uB(),{safeRe:pie,t:hie}=vE(),jXe=ik(),{compareIdentifiers:SE}=_U(),UU=class t{constructor(e,r){if(r=jXe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!=\"string\")throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof e}\".`);if(e.length>Aie)throw new TypeError(`version is longer than ${Aie} characters`);sk(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=e.trim().match(r.loose?pie[hie.LOOSE]:pie[hie.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>ok||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>ok||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>ok||this.patch<0)throw new TypeError(\"Invalid patch version\");s[4]?this.prerelease=s[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<ok)return n}return a}):this.prerelease=[],this.build=s[5]?s[5].split(\".\"):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(\".\")}`),this.version}toString(){return this.version}compare(e){if(sk(\"SemVer.compare\",this.version,this.options,e),!(e instanceof t)){if(typeof e==\"string\"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(e,this.options)),SE(this.major,e.major)||SE(this.minor,e.minor)||SE(this.patch,e.patch)}comparePre(e){if(e instanceof t||(e=new t(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let s=this.prerelease[r],a=e.prerelease[r];if(sk(\"prerelease compare\",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return SE(s,a)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let s=this.build[r],a=e.build[r];if(sk(\"prerelease compare\",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return SE(s,a)}while(++r)}inc(e,r,s){switch(e){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,s);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,s);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,s),this.inc(\"pre\",r,s);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,s),this.inc(\"pre\",r,s);break;case\"major\":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case\"minor\":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case\"patch\":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case\"pre\":{let a=Number(s)?1:0;if(!r&&s===!1)throw new Error(\"invalid increment argument: identifier is empty\");if(this.prerelease.length===0)this.prerelease=[a];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]==\"number\"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(\".\")&&s===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),SE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(\".\")}`),this}};gie.exports=UU});var _d=L((qWt,mie)=>{var die=Go(),qXe=(t,e,r=!1)=>{if(t instanceof die)return t;try{return new die(t,e)}catch(s){if(!r)return null;throw s}};mie.exports=qXe});var Eie=L((GWt,yie)=>{var GXe=_d(),WXe=(t,e)=>{let r=GXe(t,e);return r?r.version:null};yie.exports=WXe});var Cie=L((WWt,Iie)=>{var YXe=_d(),VXe=(t,e)=>{let r=YXe(t.trim().replace(/^[=v]+/,\"\"),e);return r?r.version:null};Iie.exports=VXe});var vie=L((YWt,Bie)=>{var wie=Go(),KXe=(t,e,r,s,a)=>{typeof r==\"string\"&&(a=s,s=r,r=void 0);try{return new wie(t instanceof wie?t.version:t,r).inc(e,s,a).version}catch{return null}};Bie.exports=KXe});var bie=L((VWt,Die)=>{var Sie=_d(),JXe=(t,e)=>{let r=Sie(t,null,!0),s=Sie(e,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?\"major\":c.patch?\"patch\":c.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==s.major?E+\"major\":r.minor!==s.minor?E+\"minor\":r.patch!==s.patch?E+\"patch\":\"prerelease\"};Die.exports=JXe});var xie=L((KWt,Pie)=>{var zXe=Go(),ZXe=(t,e)=>new zXe(t,e).major;Pie.exports=ZXe});var Qie=L((JWt,kie)=>{var XXe=Go(),$Xe=(t,e)=>new XXe(t,e).minor;kie.exports=$Xe});var Rie=L((zWt,Tie)=>{var e$e=Go(),t$e=(t,e)=>new e$e(t,e).patch;Tie.exports=t$e});var Nie=L((ZWt,Fie)=>{var r$e=_d(),n$e=(t,e)=>{let r=r$e(t,e);return r&&r.prerelease.length?r.prerelease:null};Fie.exports=n$e});var vc=L((XWt,Lie)=>{var Oie=Go(),i$e=(t,e,r)=>new Oie(t,r).compare(new Oie(e,r));Lie.exports=i$e});var _ie=L(($Wt,Mie)=>{var s$e=vc(),o$e=(t,e,r)=>s$e(e,t,r);Mie.exports=o$e});var Hie=L((eYt,Uie)=>{var a$e=vc(),l$e=(t,e)=>a$e(t,e,!0);Uie.exports=l$e});var ak=L((tYt,qie)=>{var jie=Go(),c$e=(t,e,r)=>{let s=new jie(t,r),a=new jie(e,r);return s.compare(a)||s.compareBuild(a)};qie.exports=c$e});var Wie=L((rYt,Gie)=>{var u$e=ak(),f$e=(t,e)=>t.sort((r,s)=>u$e(r,s,e));Gie.exports=f$e});var Vie=L((nYt,Yie)=>{var A$e=ak(),p$e=(t,e)=>t.sort((r,s)=>A$e(s,r,e));Yie.exports=p$e});var AB=L((iYt,Kie)=>{var h$e=vc(),g$e=(t,e,r)=>h$e(t,e,r)>0;Kie.exports=g$e});var lk=L((sYt,Jie)=>{var d$e=vc(),m$e=(t,e,r)=>d$e(t,e,r)<0;Jie.exports=m$e});var HU=L((oYt,zie)=>{var y$e=vc(),E$e=(t,e,r)=>y$e(t,e,r)===0;zie.exports=E$e});var jU=L((aYt,Zie)=>{var I$e=vc(),C$e=(t,e,r)=>I$e(t,e,r)!==0;Zie.exports=C$e});var ck=L((lYt,Xie)=>{var w$e=vc(),B$e=(t,e,r)=>w$e(t,e,r)>=0;Xie.exports=B$e});var uk=L((cYt,$ie)=>{var v$e=vc(),S$e=(t,e,r)=>v$e(t,e,r)<=0;$ie.exports=S$e});var qU=L((uYt,ese)=>{var D$e=HU(),b$e=jU(),P$e=AB(),x$e=ck(),k$e=lk(),Q$e=uk(),T$e=(t,e,r,s)=>{switch(e){case\"===\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t===r;case\"!==\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t!==r;case\"\":case\"=\":case\"==\":return D$e(t,r,s);case\"!=\":return b$e(t,r,s);case\">\":return P$e(t,r,s);case\">=\":return x$e(t,r,s);case\"<\":return k$e(t,r,s);case\"<=\":return Q$e(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};ese.exports=T$e});var rse=L((fYt,tse)=>{var R$e=Go(),F$e=_d(),{safeRe:fk,t:Ak}=vE(),N$e=(t,e)=>{if(t instanceof R$e)return t;if(typeof t==\"number\"&&(t=String(t)),typeof t!=\"string\")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?fk[Ak.COERCEFULL]:fk[Ak.COERCE]);else{let p=e.includePrerelease?fk[Ak.COERCERTLFULL]:fk[Ak.COERCERTL],h;for(;(h=p.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||\"0\",n=r[4]||\"0\",c=e.includePrerelease&&r[5]?`-${r[5]}`:\"\",f=e.includePrerelease&&r[6]?`+${r[6]}`:\"\";return F$e(`${s}.${a}.${n}${c}${f}`,e)};tse.exports=N$e});var ise=L((AYt,nse)=>{\"use strict\";nse.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var pk=L((pYt,sse)=>{\"use strict\";sse.exports=Fn;Fn.Node=Ud;Fn.create=Fn;function Fn(t){var e=this;if(e instanceof Fn||(e=new Fn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach==\"function\")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r<s;r++)e.push(arguments[r]);return e}Fn.prototype.removeNode=function(t){if(t.list!==this)throw new Error(\"removing node which does not belong to this list\");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};Fn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};Fn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};Fn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)L$e(this,arguments[t]);return this.length};Fn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)M$e(this,arguments[t]);return this.length};Fn.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};Fn.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};Fn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,s=0;r!==null;s++)t.call(e,r.value,s,this),r=r.next};Fn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,s=this.length-1;r!==null;s--)t.call(e,r.value,s,this),r=r.prev};Fn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};Fn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};Fn.prototype.map=function(t,e){e=e||this;for(var r=new Fn,s=this.head;s!==null;)r.push(t.call(e,s.value,this)),s=s.next;return r};Fn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new Fn,s=this.tail;s!==null;)r.push(t.call(e,s.value,this)),s=s.prev;return r};Fn.prototype.reduce=function(t,e){var r,s=this.head;if(arguments.length>1)r=e;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;s!==null;a++)r=t(r,s.value,a),s=s.next;return r};Fn.prototype.reduceReverse=function(t,e){var r,s=this.tail;if(arguments.length>1)r=e;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=this.length-1;s!==null;a--)r=t(r,s.value,a),s=s.prev;return r};Fn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Fn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Fn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var s=0,a=this.head;a!==null&&s<t;s++)a=a.next;for(;a!==null&&s<e;s++,a=a.next)r.push(a.value);return r};Fn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var s=this.length,a=this.tail;a!==null&&s>e;s--)a=a.prev;for(;a!==null&&s>t;s--,a=a.prev)r.push(a.value);return r};Fn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var s=0,a=this.head;a!==null&&s<t;s++)a=a.next;for(var n=[],s=0;a&&s<e;s++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var s=0;s<r.length;s++)a=O$e(this,a,r[s]);return n};Fn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var s=r.prev;r.prev=r.next,r.next=s}return this.head=e,this.tail=t,this};function O$e(t,e,r){var s=e===t.head?new Ud(r,null,e,t):new Ud(r,e,e.next,t);return s.next===null&&(t.tail=s),s.prev===null&&(t.head=s),t.length++,s}function L$e(t,e){t.tail=new Ud(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function M$e(t,e){t.head=new Ud(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function Ud(t,e,r,s){if(!(this instanceof Ud))return new Ud(t,e,r,s);this.list=s,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{ise()(Fn)}catch{}});var use=L((hYt,cse)=>{\"use strict\";var _$e=pk(),Hd=Symbol(\"max\"),bp=Symbol(\"length\"),DE=Symbol(\"lengthCalculator\"),hB=Symbol(\"allowStale\"),jd=Symbol(\"maxAge\"),Dp=Symbol(\"dispose\"),ose=Symbol(\"noDisposeOnSet\"),Gs=Symbol(\"lruList\"),_u=Symbol(\"cache\"),lse=Symbol(\"updateAgeOnGet\"),GU=()=>1,YU=class{constructor(e){if(typeof e==\"number\"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!=\"number\"||e.max<0))throw new TypeError(\"max must be a non-negative number\");let r=this[Hd]=e.max||1/0,s=e.length||GU;if(this[DE]=typeof s!=\"function\"?GU:s,this[hB]=e.stale||!1,e.maxAge&&typeof e.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[jd]=e.maxAge||0,this[Dp]=e.dispose,this[ose]=e.noDisposeOnSet||!1,this[lse]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!=\"number\"||e<0)throw new TypeError(\"max must be a non-negative number\");this[Hd]=e||1/0,pB(this)}get max(){return this[Hd]}set allowStale(e){this[hB]=!!e}get allowStale(){return this[hB]}set maxAge(e){if(typeof e!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[jd]=e,pB(this)}get maxAge(){return this[jd]}set lengthCalculator(e){typeof e!=\"function\"&&(e=GU),e!==this[DE]&&(this[DE]=e,this[bp]=0,this[Gs].forEach(r=>{r.length=this[DE](r.value,r.key),this[bp]+=r.length})),pB(this)}get lengthCalculator(){return this[DE]}get length(){return this[bp]}get itemCount(){return this[Gs].length}rforEach(e,r){r=r||this;for(let s=this[Gs].tail;s!==null;){let a=s.prev;ase(this,e,s,r),s=a}}forEach(e,r){r=r||this;for(let s=this[Gs].head;s!==null;){let a=s.next;ase(this,e,s,r),s=a}}keys(){return this[Gs].toArray().map(e=>e.key)}values(){return this[Gs].toArray().map(e=>e.value)}reset(){this[Dp]&&this[Gs]&&this[Gs].length&&this[Gs].forEach(e=>this[Dp](e.key,e.value)),this[_u]=new Map,this[Gs]=new _$e,this[bp]=0}dump(){return this[Gs].map(e=>hk(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Gs]}set(e,r,s){if(s=s||this[jd],s&&typeof s!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=s?Date.now():0,n=this[DE](r,e);if(this[_u].has(e)){if(n>this[Hd])return bE(this,this[_u].get(e)),!1;let p=this[_u].get(e).value;return this[Dp]&&(this[ose]||this[Dp](e,p.value)),p.now=a,p.maxAge=s,p.value=r,this[bp]+=n-p.length,p.length=n,this.get(e),pB(this),!0}let c=new VU(e,r,n,a,s);return c.length>this[Hd]?(this[Dp]&&this[Dp](e,r),!1):(this[bp]+=c.length,this[Gs].unshift(c),this[_u].set(e,this[Gs].head),pB(this),!0)}has(e){if(!this[_u].has(e))return!1;let r=this[_u].get(e).value;return!hk(this,r)}get(e){return WU(this,e,!0)}peek(e){return WU(this,e,!1)}pop(){let e=this[Gs].tail;return e?(bE(this,e),e.value):null}del(e){bE(this,this[_u].get(e))}load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let a=e[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[_u].forEach((e,r)=>WU(this,r,!1))}},WU=(t,e,r)=>{let s=t[_u].get(e);if(s){let a=s.value;if(hk(t,a)){if(bE(t,s),!t[hB])return}else r&&(t[lse]&&(s.value.now=Date.now()),t[Gs].unshiftNode(s));return a.value}},hk=(t,e)=>{if(!e||!e.maxAge&&!t[jd])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[jd]&&r>t[jd]},pB=t=>{if(t[bp]>t[Hd])for(let e=t[Gs].tail;t[bp]>t[Hd]&&e!==null;){let r=e.prev;bE(t,e),e=r}},bE=(t,e)=>{if(e){let r=e.value;t[Dp]&&t[Dp](r.key,r.value),t[bp]-=r.length,t[_u].delete(r.key),t[Gs].removeNode(e)}},VU=class{constructor(e,r,s,a,n){this.key=e,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},ase=(t,e,r,s)=>{let a=r.value;hk(t,a)&&(bE(t,r),t[hB]||(a=void 0)),a&&e.call(s,a.value,a.key,t)};cse.exports=YU});var Sc=L((gYt,hse)=>{var KU=class t{constructor(e,r){if(r=H$e(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof JU)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\\s+/).join(\" \"),this.set=this.raw.split(\"||\").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!Ase(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&K$e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){let s=((this.options.includePrerelease&&Y$e)|(this.options.loose&&V$e))+\":\"+e,a=fse.get(s);if(a)return a;let n=this.options.loose,c=n?ol[Ba.HYPHENRANGELOOSE]:ol[Ba.HYPHENRANGE];e=e.replace(c,iet(this.options.includePrerelease)),vi(\"hyphen replace\",e),e=e.replace(ol[Ba.COMPARATORTRIM],q$e),vi(\"comparator trim\",e),e=e.replace(ol[Ba.TILDETRIM],G$e),vi(\"tilde trim\",e),e=e.replace(ol[Ba.CARETTRIM],W$e),vi(\"caret trim\",e);let f=e.split(\" \").map(C=>J$e(C,this.options)).join(\" \").split(/\\s+/).map(C=>net(C,this.options));n&&(f=f.filter(C=>(vi(\"loose invalid filter\",C,this.options),!!C.match(ol[Ba.COMPARATORLOOSE])))),vi(\"range list\",f);let p=new Map,h=f.map(C=>new JU(C,this.options));for(let C of h){if(Ase(C))return[C];p.set(C.value,C)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return fse.set(s,E),E}intersects(e,r){if(!(e instanceof t))throw new TypeError(\"a Range is required\");return this.set.some(s=>pse(s,r)&&e.set.some(a=>pse(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(e){if(!e)return!1;if(typeof e==\"string\")try{e=new j$e(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(set(this.set[r],e,this.options))return!0;return!1}};hse.exports=KU;var U$e=use(),fse=new U$e({max:1e3}),H$e=ik(),JU=gB(),vi=fB(),j$e=Go(),{safeRe:ol,t:Ba,comparatorTrimReplace:q$e,tildeTrimReplace:G$e,caretTrimReplace:W$e}=vE(),{FLAG_INCLUDE_PRERELEASE:Y$e,FLAG_LOOSE:V$e}=uB(),Ase=t=>t.value===\"<0.0.0-0\",K$e=t=>t.value===\"\",pse=(t,e)=>{let r=!0,s=t.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,e)),a=s.pop();return r},J$e=(t,e)=>(vi(\"comp\",t,e),t=X$e(t,e),vi(\"caret\",t),t=z$e(t,e),vi(\"tildes\",t),t=eet(t,e),vi(\"xrange\",t),t=ret(t,e),vi(\"stars\",t),t),va=t=>!t||t.toLowerCase()===\"x\"||t===\"*\",z$e=(t,e)=>t.trim().split(/\\s+/).map(r=>Z$e(r,e)).join(\" \"),Z$e=(t,e)=>{let r=e.loose?ol[Ba.TILDELOOSE]:ol[Ba.TILDE];return t.replace(r,(s,a,n,c,f)=>{vi(\"tilde\",t,s,a,n,c,f);let p;return va(a)?p=\"\":va(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:va(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(vi(\"replaceTilde pr\",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,vi(\"tilde return\",p),p})},X$e=(t,e)=>t.trim().split(/\\s+/).map(r=>$$e(r,e)).join(\" \"),$$e=(t,e)=>{vi(\"caret\",t,e);let r=e.loose?ol[Ba.CARETLOOSE]:ol[Ba.CARET],s=e.includePrerelease?\"-0\":\"\";return t.replace(r,(a,n,c,f,p)=>{vi(\"caret\",t,a,n,c,f,p);let h;return va(n)?h=\"\":va(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:va(f)?n===\"0\"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(vi(\"replaceCaret pr\",p),n===\"0\"?c===\"0\"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(vi(\"no pr\"),n===\"0\"?c===\"0\"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),vi(\"caret return\",h),h})},eet=(t,e)=>(vi(\"replaceXRanges\",t,e),t.split(/\\s+/).map(r=>tet(r,e)).join(\" \")),tet=(t,e)=>{t=t.trim();let r=e.loose?ol[Ba.XRANGELOOSE]:ol[Ba.XRANGE];return t.replace(r,(s,a,n,c,f,p)=>{vi(\"xRange\",t,s,a,n,c,f,p);let h=va(n),E=h||va(c),C=E||va(f),S=C;return a===\"=\"&&S&&(a=\"\"),p=e.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?s=\"<0.0.0-0\":s=\"*\":a&&S?(E&&(c=0),f=0,a===\">\"?(a=\">=\",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:c=+c+1),a===\"<\"&&(p=\"-0\"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),vi(\"xRange return\",s),s})},ret=(t,e)=>(vi(\"replaceStars\",t,e),t.trim().replace(ol[Ba.STAR],\"\")),net=(t,e)=>(vi(\"replaceGTE0\",t,e),t.trim().replace(ol[e.includePrerelease?Ba.GTE0PRE:Ba.GTE0],\"\")),iet=t=>(e,r,s,a,n,c,f,p,h,E,C,S,P)=>(va(s)?r=\"\":va(a)?r=`>=${s}.0.0${t?\"-0\":\"\"}`:va(n)?r=`>=${s}.${a}.0${t?\"-0\":\"\"}`:c?r=`>=${r}`:r=`>=${r}${t?\"-0\":\"\"}`,va(h)?p=\"\":va(E)?p=`<${+h+1}.0.0-0`:va(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:t?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),set=(t,e,r)=>{for(let s=0;s<t.length;s++)if(!t[s].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let s=0;s<t.length;s++)if(vi(t[s].semver),t[s].semver!==JU.ANY&&t[s].semver.prerelease.length>0){let a=t[s].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var gB=L((dYt,Ise)=>{var dB=Symbol(\"SemVer ANY\"),XU=class t{static get ANY(){return dB}constructor(e,r){if(r=gse(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\\s+/).join(\" \"),ZU(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===dB?this.value=\"\":this.value=this.operator+this.semver.version,ZU(\"comp\",this)}parse(e){let r=this.options.loose?dse[mse.COMPARATORLOOSE]:dse[mse.COMPARATOR],s=e.match(r);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),s[2]?this.semver=new yse(s[2],this.options.loose):this.semver=dB}toString(){return this.value}test(e){if(ZU(\"Comparator.test\",e,this.options.loose),this.semver===dB||e===dB)return!0;if(typeof e==\"string\")try{e=new yse(e,this.options)}catch{return!1}return zU(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new Ese(e.value,r).test(this.value):e.operator===\"\"?e.value===\"\"?!0:new Ese(this.value,r).test(e.semver):(r=gse(r),r.includePrerelease&&(this.value===\"<0.0.0-0\"||e.value===\"<0.0.0-0\")||!r.includePrerelease&&(this.value.startsWith(\"<0.0.0\")||e.value.startsWith(\"<0.0.0\"))?!1:!!(this.operator.startsWith(\">\")&&e.operator.startsWith(\">\")||this.operator.startsWith(\"<\")&&e.operator.startsWith(\"<\")||this.semver.version===e.semver.version&&this.operator.includes(\"=\")&&e.operator.includes(\"=\")||zU(this.semver,\"<\",e.semver,r)&&this.operator.startsWith(\">\")&&e.operator.startsWith(\"<\")||zU(this.semver,\">\",e.semver,r)&&this.operator.startsWith(\"<\")&&e.operator.startsWith(\">\")))}};Ise.exports=XU;var gse=ik(),{safeRe:dse,t:mse}=vE(),zU=qU(),ZU=fB(),yse=Go(),Ese=Sc()});var mB=L((mYt,Cse)=>{var oet=Sc(),aet=(t,e,r)=>{try{e=new oet(e,r)}catch{return!1}return e.test(t)};Cse.exports=aet});var Bse=L((yYt,wse)=>{var cet=Sc(),uet=(t,e)=>new cet(t,e).set.map(r=>r.map(s=>s.value).join(\" \").trim().split(\" \"));wse.exports=uet});var Sse=L((EYt,vse)=>{var fet=Go(),Aet=Sc(),pet=(t,e,r)=>{let s=null,a=null,n=null;try{n=new Aet(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new fet(s,r))}),s};vse.exports=pet});var bse=L((IYt,Dse)=>{var het=Go(),get=Sc(),det=(t,e,r)=>{let s=null,a=null,n=null;try{n=new get(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new het(s,r))}),s};Dse.exports=det});var kse=L((CYt,xse)=>{var $U=Go(),met=Sc(),Pse=AB(),yet=(t,e)=>{t=new met(t,e);let r=new $U(\"0.0.0\");if(t.test(r)||(r=new $U(\"0.0.0-0\"),t.test(r)))return r;r=null;for(let s=0;s<t.set.length;++s){let a=t.set[s],n=null;a.forEach(c=>{let f=new $U(c.semver.version);switch(c.operator){case\">\":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case\"\":case\">=\":(!n||Pse(f,n))&&(n=f);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||Pse(r,n))&&(r=n)}return r&&t.test(r)?r:null};xse.exports=yet});var Tse=L((wYt,Qse)=>{var Eet=Sc(),Iet=(t,e)=>{try{return new Eet(t,e).range||\"*\"}catch{return null}};Qse.exports=Iet});var gk=L((BYt,Ose)=>{var Cet=Go(),Nse=gB(),{ANY:wet}=Nse,Bet=Sc(),vet=mB(),Rse=AB(),Fse=lk(),Det=uk(),bet=ck(),Pet=(t,e,r,s)=>{t=new Cet(t,s),e=new Bet(e,s);let a,n,c,f,p;switch(r){case\">\":a=Rse,n=Det,c=Fse,f=\">\",p=\">=\";break;case\"<\":a=Fse,n=bet,c=Rse,f=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(vet(t,e,s))return!1;for(let h=0;h<e.set.length;++h){let E=e.set[h],C=null,S=null;if(E.forEach(P=>{P.semver===wet&&(P=new Nse(\">=0.0.0\")),C=C||P,S=S||P,a(P.semver,C.semver,s)?C=P:c(P.semver,S.semver,s)&&(S=P)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(t,S.semver))return!1;if(S.operator===p&&c(t,S.semver))return!1}return!0};Ose.exports=Pet});var Mse=L((vYt,Lse)=>{var xet=gk(),ket=(t,e,r)=>xet(t,e,\">\",r);Lse.exports=ket});var Use=L((SYt,_se)=>{var Qet=gk(),Tet=(t,e,r)=>Qet(t,e,\"<\",r);_se.exports=Tet});var qse=L((DYt,jse)=>{var Hse=Sc(),Ret=(t,e,r)=>(t=new Hse(t,r),e=new Hse(e,r),t.intersects(e,r));jse.exports=Ret});var Wse=L((bYt,Gse)=>{var Fet=mB(),Net=vc();Gse.exports=(t,e,r)=>{let s=[],a=null,n=null,c=t.sort((E,C)=>Net(E,C,r));for(let E of c)Fet(E,e,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push(\"*\"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(\" || \"),h=typeof e.raw==\"string\"?e.raw:String(e);return p.length<h.length?p:e}});var Zse=L((PYt,zse)=>{var Yse=Sc(),t4=gB(),{ANY:e4}=t4,yB=mB(),r4=vc(),Oet=(t,e,r={})=>{if(t===e)return!0;t=new Yse(t,r),e=new Yse(e,r);let s=!1;e:for(let a of t.set){for(let n of e.set){let c=Met(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},Let=[new t4(\">=0.0.0-0\")],Vse=[new t4(\">=0.0.0\")],Met=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===e4){if(e.length===1&&e[0].semver===e4)return!0;r.includePrerelease?t=Let:t=Vse}if(e.length===1&&e[0].semver===e4){if(r.includePrerelease)return!0;e=Vse}let s=new Set,a,n;for(let P of t)P.operator===\">\"||P.operator===\">=\"?a=Kse(a,P,r):P.operator===\"<\"||P.operator===\"<=\"?n=Jse(n,P,r):s.add(P.semver);if(s.size>1)return null;let c;if(a&&n){if(c=r4(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let P of s){if(a&&!yB(P,String(a),r)||n&&!yB(P,String(n),r))return null;for(let I of e)if(!yB(P,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator===\"<\"&&C.prerelease[0]===0&&(C=!1);for(let P of e){if(E=E||P.operator===\">\"||P.operator===\">=\",h=h||P.operator===\"<\"||P.operator===\"<=\",a){if(S&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===S.major&&P.semver.minor===S.minor&&P.semver.patch===S.patch&&(S=!1),P.operator===\">\"||P.operator===\">=\"){if(f=Kse(a,P,r),f===P&&f!==a)return!1}else if(a.operator===\">=\"&&!yB(a.semver,String(P),r))return!1}if(n){if(C&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===C.major&&P.semver.minor===C.minor&&P.semver.patch===C.patch&&(C=!1),P.operator===\"<\"||P.operator===\"<=\"){if(p=Jse(n,P,r),p===P&&p!==n)return!1}else if(n.operator===\"<=\"&&!yB(n.semver,String(P),r))return!1}if(!P.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},Kse=(t,e,r)=>{if(!t)return e;let s=r4(t.semver,e.semver,r);return s>0?t:s<0||e.operator===\">\"&&t.operator===\">=\"?e:t},Jse=(t,e,r)=>{if(!t)return e;let s=r4(t.semver,e.semver,r);return s<0?t:s>0||e.operator===\"<\"&&t.operator===\"<=\"?e:t};zse.exports=Oet});var fi=L((xYt,eoe)=>{var n4=vE(),Xse=uB(),_et=Go(),$se=_U(),Uet=_d(),Het=Eie(),jet=Cie(),qet=vie(),Get=bie(),Wet=xie(),Yet=Qie(),Vet=Rie(),Ket=Nie(),Jet=vc(),zet=_ie(),Zet=Hie(),Xet=ak(),$et=Wie(),ett=Vie(),ttt=AB(),rtt=lk(),ntt=HU(),itt=jU(),stt=ck(),ott=uk(),att=qU(),ltt=rse(),ctt=gB(),utt=Sc(),ftt=mB(),Att=Bse(),ptt=Sse(),htt=bse(),gtt=kse(),dtt=Tse(),mtt=gk(),ytt=Mse(),Ett=Use(),Itt=qse(),Ctt=Wse(),wtt=Zse();eoe.exports={parse:Uet,valid:Het,clean:jet,inc:qet,diff:Get,major:Wet,minor:Yet,patch:Vet,prerelease:Ket,compare:Jet,rcompare:zet,compareLoose:Zet,compareBuild:Xet,sort:$et,rsort:ett,gt:ttt,lt:rtt,eq:ntt,neq:itt,gte:stt,lte:ott,cmp:att,coerce:ltt,Comparator:ctt,Range:utt,satisfies:ftt,toComparators:Att,maxSatisfying:ptt,minSatisfying:htt,minVersion:gtt,validRange:dtt,outside:mtt,gtr:ytt,ltr:Ett,intersects:Itt,simplifyRange:Ctt,subset:wtt,SemVer:_et,re:n4.re,src:n4.src,tokens:n4.t,SEMVER_SPEC_VERSION:Xse.SEMVER_SPEC_VERSION,RELEASE_TYPES:Xse.RELEASE_TYPES,compareIdentifiers:$se.compareIdentifiers,rcompareIdentifiers:$se.rcompareIdentifiers}});var roe=L((kYt,toe)=>{\"use strict\";function Btt(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function qd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,qd)}Btt(qd,Error);qd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function vtt(t,e){e=e!==void 0?e:{};var r={},s={Expression:y},a=y,n=\"|\",c=Fe(\"|\",!1),f=\"&\",p=Fe(\"&\",!1),h=\"^\",E=Fe(\"^\",!1),C=function($,oe){return!!oe.reduce((xe,Te)=>{switch(Te[1]){case\"|\":return xe|Te[3];case\"&\":return xe&Te[3];case\"^\":return xe^Te[3]}},$)},S=\"!\",P=Fe(\"!\",!1),I=function($){return!$},R=\"(\",N=Fe(\"(\",!1),U=\")\",W=Fe(\")\",!1),te=function($){return $},ie=/^[^ \\t\\n\\r()!|&\\^]/,Ae=Ne([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),ce=function($){return e.queryPattern.test($)},me=function($){return e.checkFn($)},pe=ke(\"whitespace\"),Be=/^[ \\t\\n\\r]/,Ce=Ne([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,we=0,Ee=[{line:1,column:1}],fe=0,se=[],X=0,De;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function Re(){return t.substring(we,g)}function gt(){return _e(we,g)}function j($,oe){throw oe=oe!==void 0?oe:_e(we,g),b([ke($)],t.substring(we,g),oe)}function rt($,oe){throw oe=oe!==void 0?oe:_e(we,g),w($,oe)}function Fe($,oe){return{type:\"literal\",text:$,ignoreCase:oe}}function Ne($,oe,xe){return{type:\"class\",parts:$,inverted:oe,ignoreCase:xe}}function Pe(){return{type:\"any\"}}function Ye(){return{type:\"end\"}}function ke($){return{type:\"other\",description:$}}function it($){var oe=Ee[$],xe;if(oe)return oe;for(xe=$-1;!Ee[xe];)xe--;for(oe=Ee[xe],oe={line:oe.line,column:oe.column};xe<$;)t.charCodeAt(xe)===10?(oe.line++,oe.column=1):oe.column++,xe++;return Ee[$]=oe,oe}function _e($,oe){var xe=it($),Te=it(oe);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:oe,line:Te.line,column:Te.column}}}function x($){g<fe||(g>fe&&(fe=g,se=[]),se.push($))}function w($,oe){return new qd($,null,null,oe)}function b($,oe,xe){return new qd(qd.buildMessage($,oe),$,oe,xe)}function y(){var $,oe,xe,Te,lt,Et,qt,ir;if($=g,oe=F(),oe!==r){for(xe=[],Te=g,lt=Z(),lt!==r?(t.charCodeAt(g)===124?(Et=n,g++):(Et=r,X===0&&x(c)),Et===r&&(t.charCodeAt(g)===38?(Et=f,g++):(Et=r,X===0&&x(p)),Et===r&&(t.charCodeAt(g)===94?(Et=h,g++):(Et=r,X===0&&x(E)))),Et!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Et,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);Te!==r;)xe.push(Te),Te=g,lt=Z(),lt!==r?(t.charCodeAt(g)===124?(Et=n,g++):(Et=r,X===0&&x(c)),Et===r&&(t.charCodeAt(g)===38?(Et=f,g++):(Et=r,X===0&&x(p)),Et===r&&(t.charCodeAt(g)===94?(Et=h,g++):(Et=r,X===0&&x(E)))),Et!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Et,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);xe!==r?(we=$,oe=C(oe,xe),$=oe):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,oe,xe,Te,lt,Et;return $=g,t.charCodeAt(g)===33?(oe=S,g++):(oe=r,X===0&&x(P)),oe!==r?(xe=F(),xe!==r?(we=$,oe=I(xe),$=oe):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(oe=R,g++):(oe=r,X===0&&x(N)),oe!==r?(xe=Z(),xe!==r?(Te=y(),Te!==r?(lt=Z(),lt!==r?(t.charCodeAt(g)===41?(Et=U,g++):(Et=r,X===0&&x(W)),Et!==r?(we=$,oe=te(Te),$=oe):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,oe,xe,Te,lt;if($=g,oe=Z(),oe!==r){if(xe=g,Te=[],ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,X===0&&x(Ae)),lt!==r)for(;lt!==r;)Te.push(lt),ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,X===0&&x(Ae));else Te=r;Te!==r?xe=t.substring(xe,g):xe=Te,xe!==r?(we=g,Te=ce(xe),Te?Te=void 0:Te=r,Te!==r?(we=$,oe=me(xe),$=oe):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function Z(){var $,oe;for(X++,$=[],Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,X===0&&x(Ce));oe!==r;)$.push(oe),Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,X===0&&x(Ce));return X--,$===r&&(oe=r,X===0&&x(pe)),$}if(De=a(),De!==r&&g===t.length)return De;throw De!==r&&g<t.length&&x(Ye()),b(se,fe<t.length?t.charAt(fe):null,fe<t.length?_e(fe,fe+1):_e(fe,fe))}toe.exports={SyntaxError:qd,parse:vtt}});var noe=L(dk=>{var{parse:Stt}=roe();dk.makeParser=(t=/[a-z]+/)=>(e,r)=>Stt(e,{queryPattern:t,checkFn:r});dk.parse=dk.makeParser()});var soe=L((TYt,ioe)=>{\"use strict\";ioe.exports={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]}});var i4=L((RYt,aoe)=>{var EB=soe(),ooe={};for(let t of Object.keys(EB))ooe[EB[t]]=t;var hr={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};aoe.exports=hr;for(let t of Object.keys(hr)){if(!(\"channels\"in hr[t]))throw new Error(\"missing channels property: \"+t);if(!(\"labels\"in hr[t]))throw new Error(\"missing channel labels property: \"+t);if(hr[t].labels.length!==hr[t].channels)throw new Error(\"channel and label counts mismatch: \"+t);let{channels:e,labels:r}=hr[t];delete hr[t].channels,delete hr[t].labels,Object.defineProperty(hr[t],\"channels\",{value:e}),Object.defineProperty(hr[t],\"labels\",{value:r})}hr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(e,r,s),n=Math.max(e,r,s),c=n-a,f,p;n===a?f=0:e===n?f=(r-s)/c:r===n?f=2+(s-e)/c:s===n&&(f=4+(e-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(t){let e,r,s,a,n,c=t[0]/255,f=t[1]/255,p=t[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+e-s:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(t){let e=t[0],r=t[1],s=t[2],a=hr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,s));return s=1-1/255*Math.max(e,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(1-e,1-r,1-s),n=(1-e-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function Dtt(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}hr.rgb.keyword=function(t){let e=ooe[t];if(e)return e;let r=1/0,s;for(let a of Object.keys(EB)){let n=EB[a],c=Dtt(t,n);c<r&&(r=c,s=a)}return s};hr.keyword.rgb=function(t){return EB[t]};hr.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=e*.4124+r*.3576+s*.1805,n=e*.2126+r*.7152+s*.0722,c=e*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(t){let e=hr.rgb.xyz(t),r=e[0],s=e[1],a=e[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[e,f*100,c*100]};hr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,s=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[e,n*100,c*100]};hr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*e),f=1-s;n=6*e-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a,n,c;return a=e*3.2406+r*-1.5372+s*-.4986,n=e*-.9689+r*1.8758+s*.0415,c=e*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(t){let e=t[0],r=t[1],s=t[2];e/=95.047,r/=100,s/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(e-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(t){let e=t[0],r=t[1],s=t[2],a,n,c;n=(e+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(t){let e=t[0],r=t[1],s=t[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[e,c,a]};hr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[e,n,c]};hr.rgb.ansi16=function(t,e=null){let[r,s,a]=t,n=e===null?hr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(t){return hr.rgb.ansi16(hr.hsv.rgb(t),t[2])};hr.rgb.ansi256=function(t){let e=t[0],r=t[1],s=t[2];return e===r&&r===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,s=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,s=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,s,a]};hr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return\"000000\".substring(r.length)+r};hr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split(\"\").map(f=>f+f).join(\"\"));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.max(Math.max(e,r),s),n=Math.min(Math.min(e,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===e?p=(r-s)/c%6:a===r?p=2+(s-e)/c:p=4+(e-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=r<.5?2*e*r:2*e*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[t[0],s*100,a*100]};hr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=e*r,a=0;return s<1&&(a=(r-s)/(1-s)),[t[0],s*100,a*100]};hr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=e%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e),a=0;return s>0&&(a=e/s),[t[0],a*100,s*100]};hr.hcg.hsl=function(t){let e=t[1]/100,s=t[2]/100*(1-e)+.5*e,a=0;return s>0&&s<.5?a=e/(2*s):s>=.5&&s<1&&(a=e/(2*(1-s))),[t[0],a*100,s*100]};hr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e);return[t[0],(s-e)*100,(1-s)*100]};hr.hwb.hcg=function(t){let e=t[1]/100,s=1-t[2]/100,a=s-e,n=0;return a<1&&(n=(s-a)/(1-a)),[t[0],a*100,n*100]};hr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};hr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};hr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};hr.gray.hsl=function(t){return[0,0,t[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(t){return[0,100,t[0]]};hr.gray.cmyk=function(t){return[0,0,0,t[0]]};hr.gray.lab=function(t){return[t[0],0,0]};hr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,s=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(s.length)+s};hr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var coe=L((FYt,loe)=>{var mk=i4();function btt(){let t={},e=Object.keys(mk);for(let r=e.length,s=0;s<r;s++)t[e[s]]={distance:-1,parent:null};return t}function Ptt(t){let e=btt(),r=[t];for(e[t].distance=0;r.length;){let s=r.pop(),a=Object.keys(mk[s]);for(let n=a.length,c=0;c<n;c++){let f=a[c],p=e[f];p.distance===-1&&(p.distance=e[s].distance+1,p.parent=s,r.unshift(f))}}return e}function xtt(t,e){return function(r){return e(t(r))}}function ktt(t,e){let r=[e[t].parent,t],s=mk[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),s=xtt(mk[e[a].parent][a],s),a=e[a].parent;return s.conversion=r,s}loe.exports=function(t){let e=Ptt(t),r={},s=Object.keys(e);for(let a=s.length,n=0;n<a;n++){let c=s[n];e[c].parent!==null&&(r[c]=ktt(c,e))}return r}});var foe=L((NYt,uoe)=>{var s4=i4(),Qtt=coe(),PE={},Ttt=Object.keys(s4);function Rtt(t){let e=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),t(r))};return\"conversion\"in t&&(e.conversion=t.conversion),e}function Ftt(t){let e=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=t(r);if(typeof a==\"object\")for(let n=a.length,c=0;c<n;c++)a[c]=Math.round(a[c]);return a};return\"conversion\"in t&&(e.conversion=t.conversion),e}Ttt.forEach(t=>{PE[t]={},Object.defineProperty(PE[t],\"channels\",{value:s4[t].channels}),Object.defineProperty(PE[t],\"labels\",{value:s4[t].labels});let e=Qtt(t);Object.keys(e).forEach(s=>{let a=e[s];PE[t][s]=Ftt(a),PE[t][s].raw=Rtt(a)})});uoe.exports=PE});var IB=L((OYt,doe)=>{\"use strict\";var Aoe=(t,e)=>(...r)=>`\\x1B[${t(...r)+e}m`,poe=(t,e)=>(...r)=>{let s=t(...r);return`\\x1B[${38+e};5;${s}m`},hoe=(t,e)=>(...r)=>{let s=t(...r);return`\\x1B[${38+e};2;${s[0]};${s[1]};${s[2]}m`},yk=t=>t,goe=(t,e,r)=>[t,e,r],xE=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let s=r();return Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},o4,kE=(t,e,r,s)=>{o4===void 0&&(o4=foe());let a=s?10:0,n={};for(let[c,f]of Object.entries(o4)){let p=c===\"ansi16\"?\"ansi\":c;c===e?n[p]=t(r,a):typeof f==\"object\"&&(n[p]=t(f[e],a))}return n};function Ntt(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,s]of Object.entries(e)){for(let[a,n]of Object.entries(s))e[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},s[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:s,enumerable:!1})}return Object.defineProperty(e,\"codes\",{value:t,enumerable:!1}),e.color.close=\"\\x1B[39m\",e.bgColor.close=\"\\x1B[49m\",xE(e.color,\"ansi\",()=>kE(Aoe,\"ansi16\",yk,!1)),xE(e.color,\"ansi256\",()=>kE(poe,\"ansi256\",yk,!1)),xE(e.color,\"ansi16m\",()=>kE(hoe,\"rgb\",goe,!1)),xE(e.bgColor,\"ansi\",()=>kE(Aoe,\"ansi16\",yk,!0)),xE(e.bgColor,\"ansi256\",()=>kE(poe,\"ansi256\",yk,!0)),xE(e.bgColor,\"ansi16m\",()=>kE(hoe,\"rgb\",goe,!0)),e}Object.defineProperty(doe,\"exports\",{enumerable:!0,get:Ntt})});var yoe=L((LYt,moe)=>{\"use strict\";moe.exports=(t,e=process.argv)=>{let r=t.startsWith(\"-\")?\"\":t.length===1?\"-\":\"--\",s=e.indexOf(r+t),a=e.indexOf(\"--\");return s!==-1&&(a===-1||s<a)}});var c4=L((MYt,Ioe)=>{\"use strict\";var Ott=ye(\"os\"),Eoe=ye(\"tty\"),Dc=yoe(),{env:Ps}=process,f0;Dc(\"no-color\")||Dc(\"no-colors\")||Dc(\"color=false\")||Dc(\"color=never\")?f0=0:(Dc(\"color\")||Dc(\"colors\")||Dc(\"color=true\")||Dc(\"color=always\"))&&(f0=1);\"FORCE_COLOR\"in Ps&&(Ps.FORCE_COLOR===\"true\"?f0=1:Ps.FORCE_COLOR===\"false\"?f0=0:f0=Ps.FORCE_COLOR.length===0?1:Math.min(parseInt(Ps.FORCE_COLOR,10),3));function a4(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function l4(t,e){if(f0===0)return 0;if(Dc(\"color=16m\")||Dc(\"color=full\")||Dc(\"color=truecolor\"))return 3;if(Dc(\"color=256\"))return 2;if(t&&!e&&f0===void 0)return 0;let r=f0||0;if(Ps.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let s=Ott.release().split(\".\");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if(\"CI\"in Ps)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(s=>s in Ps)||Ps.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in Ps)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(Ps.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in Ps)return 1;if(Ps.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in Ps){let s=parseInt((Ps.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(Ps.TERM_PROGRAM){case\"iTerm.app\":return s>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(Ps.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ps.TERM)||\"COLORTERM\"in Ps?1:r}function Ltt(t){let e=l4(t,t&&t.isTTY);return a4(e)}Ioe.exports={supportsColor:Ltt,stdout:a4(l4(!0,Eoe.isatty(1))),stderr:a4(l4(!0,Eoe.isatty(2)))}});var woe=L((_Yt,Coe)=>{\"use strict\";var Mtt=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c=\"\";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},_tt=(t,e,r,s)=>{let a=0,n=\"\";do{let c=t[s-1]===\"\\r\";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\\r\n`:`\n`)+r,a=s+1,s=t.indexOf(`\n`,a)}while(s!==-1);return n+=t.substr(a),n};Coe.exports={stringReplaceAll:Mtt,stringEncaseCRLFWithFirstIndex:_tt}});var boe=L((UYt,Doe)=>{\"use strict\";var Utt=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,Boe=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,Htt=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,jtt=/\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi,qtt=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function Soe(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):qtt.get(t)||t}function Gtt(t,e){let r=[],s=e.trim().split(/\\s*,\\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(Htt))r.push(a[2].replace(jtt,(f,p,h)=>p?Soe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function Wtt(t){Boe.lastIndex=0;let e=[],r;for(;(r=Boe.exec(t))!==null;){let s=r[1];if(r[2]){let a=Gtt(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function voe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}Doe.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(Utt,(n,c,f,p,h,E)=>{if(c)a.push(Soe(c));else if(p){let C=a.join(\"\");a=[],s.push(r.length===0?C:voe(t,r)(C)),r.push({inverse:f,styles:Wtt(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");s.push(voe(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),s.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return s.join(\"\")}});var g4=L((HYt,Qoe)=>{\"use strict\";var CB=IB(),{stdout:f4,stderr:A4}=c4(),{stringReplaceAll:Ytt,stringEncaseCRLFWithFirstIndex:Vtt}=woe(),Poe=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],QE=Object.create(null),Ktt=(t,e={})=>{if(e.level>3||e.level<0)throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=f4?f4.level:0;t.level=e.level===void 0?r:e.level},p4=class{constructor(e){return xoe(e)}},xoe=t=>{let e={};return Ktt(e,t),e.template=(...r)=>Ztt(e.template,...r),Object.setPrototypeOf(e,Ek.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=p4,e.template};function Ek(t){return xoe(t)}for(let[t,e]of Object.entries(CB))QE[t]={get(){let r=Ik(this,h4(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};QE.visible={get(){let t=Ik(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var koe=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of koe)QE[t]={get(){let{level:e}=this;return function(...r){let s=h4(CB.color[Poe[e]][t](...r),CB.color.close,this._styler);return Ik(this,s,this._isEmpty)}}};for(let t of koe){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);QE[e]={get(){let{level:r}=this;return function(...s){let a=h4(CB.bgColor[Poe[r]][t](...s),CB.bgColor.close,this._styler);return Ik(this,a,this._isEmpty)}}}}var Jtt=Object.defineProperties(()=>{},{...QE,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),h4=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},Ik=(t,e,r)=>{let s=(...a)=>ztt(s,a.length===1?\"\"+a[0]:a.join(\" \"));return s.__proto__=Jtt,s._generator=t,s._styler=e,s._isEmpty=r,s},ztt=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=Ytt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=Vtt(e,a,s,n)),s+e+a},u4,Ztt=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(\" \");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(s[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return u4===void 0&&(u4=boe()),u4(t,a.join(\"\"))};Object.defineProperties(Ek.prototype,QE);var wB=Ek();wB.supportsColor=f4;wB.stderr=Ek({level:A4?A4.level:0});wB.stderr.supportsColor=A4;wB.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:\"None\",1:\"Basic\",2:\"Ansi256\",3:\"TrueColor\"};Qoe.exports=wB});var Ck=L(bc=>{\"use strict\";bc.isInteger=t=>typeof t==\"number\"?Number.isInteger(t):typeof t==\"string\"&&t.trim()!==\"\"?Number.isInteger(Number(t)):!1;bc.find=(t,e)=>t.nodes.find(r=>r.type===e);bc.exceedsLimit=(t,e,r=1,s)=>s===!1||!bc.isInteger(t)||!bc.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=s;bc.escapeNode=(t,e=0,r)=>{let s=t.nodes[e];s&&(r&&s.type===r||s.type===\"open\"||s.type===\"close\")&&s.escaped!==!0&&(s.value=\"\\\\\"+s.value,s.escaped=!0)};bc.encloseBrace=t=>t.type!==\"brace\"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);bc.isInvalidBrace=t=>t.type!==\"brace\"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;bc.isOpenOrClose=t=>t.type===\"open\"||t.type===\"close\"?!0:t.open===!0||t.close===!0;bc.reduce=t=>t.reduce((e,r)=>(r.type===\"text\"&&e.push(r.value),r.type===\"range\"&&(r.type=\"text\"),e),[]);bc.flatten=(...t)=>{let e=[],r=s=>{for(let a=0;a<s.length;a++){let n=s[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var wk=L((qYt,Roe)=>{\"use strict\";var Toe=Ck();Roe.exports=(t,e={})=>{let r=(s,a={})=>{let n=e.escapeInvalid&&Toe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=\"\";if(s.value)return(n||c)&&Toe.isOpenOrClose(s)?\"\\\\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(t)}});var Noe=L((GYt,Foe)=>{\"use strict\";Foe.exports=function(t){return typeof t==\"number\"?t-t===0:typeof t==\"string\"&&t.trim()!==\"\"?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var Goe=L((WYt,qoe)=>{\"use strict\";var Ooe=Noe(),Gd=(t,e,r)=>{if(Ooe(t)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(e===void 0||t===e)return String(t);if(Ooe(e)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let s={relaxZeros:!0,...r};typeof s.strictZeros==\"boolean\"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=t+\":\"+e+\"=\"+a+n+c+f;if(Gd.cache.hasOwnProperty(p))return Gd.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+\"|\"+e;return s.capture?`(${R})`:s.wrap===!1?R:`(?:${R})`}let C=joe(t)||joe(e),S={min:t,max:e,a:h,b:E},P=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let R=E<0?Math.abs(E):1;I=Loe(R,Math.abs(h),S,s),h=S.a=0}return E>=0&&(P=Loe(h,E,S,s)),S.negatives=I,S.positives=P,S.result=Xtt(I,P,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&P.length+I.length>1&&(S.result=`(?:${S.result})`),Gd.cache[p]=S,S.result};function Xtt(t,e,r){let s=d4(t,e,\"-\",!1,r)||[],a=d4(e,t,\"\",!1,r)||[],n=d4(t,e,\"-?\",!0,r)||[];return s.concat(n).concat(a).join(\"|\")}function $tt(t,e){let r=1,s=1,a=_oe(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=_oe(t,r);for(a=Uoe(e+1,s)-1;t<a&&a<=e;)n.add(a),s+=1,a=Uoe(e+1,s)-1;return n=[...n],n.sort(rrt),n}function ert(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let s=trt(t,e),a=s.length,n=\"\",c=0;for(let f=0;f<a;f++){let[p,h]=s[f];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=nrt(p,h,r):c++}return c&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[c],digits:a}}function Loe(t,e,r,s){let a=$tt(t,e),n=[],c=t,f;for(let p=0;p<a.length;p++){let h=a[p],E=ert(String(c),String(h),s),C=\"\";if(!r.isPadded&&f&&f.pattern===E.pattern){f.count.length>1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+Hoe(f.count),c=h+1;continue}r.isPadded&&(C=irt(h,r,s)),E.string=C+E.pattern+Hoe(E.count),n.push(E),c=h+1,f=E}return n}function d4(t,e,r,s,a){let n=[];for(let c of t){let{string:f}=c;!s&&!Moe(e,\"string\",f)&&n.push(r+f),s&&Moe(e,\"string\",f)&&n.push(r+f)}return n}function trt(t,e){let r=[];for(let s=0;s<t.length;s++)r.push([t[s],e[s]]);return r}function rrt(t,e){return t>e?1:e>t?-1:0}function Moe(t,e,r){return t.some(s=>s[e]===r)}function _oe(t,e){return Number(String(t).slice(0,-e)+\"9\".repeat(e))}function Uoe(t,e){return t-t%Math.pow(10,e)}function Hoe(t){let[e=0,r=\"\"]=t;return r||e>1?`{${e+(r?\",\"+r:\"\")}}`:\"\"}function nrt(t,e,r){return`[${t}${e-t===1?\"\":\"-\"}${e}]`}function joe(t){return/^-?(0+)\\d/.test(t)}function irt(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(s){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${s}}`:`0{${s}}`}}Gd.cache={};Gd.clearCache=()=>Gd.cache={};qoe.exports=Gd});var E4=L((YYt,Xoe)=>{\"use strict\";var srt=ye(\"util\"),Voe=Goe(),Woe=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),ort=t=>e=>t===!0?Number(e):String(e),m4=t=>typeof t==\"number\"||typeof t==\"string\"&&t!==\"\",BB=t=>Number.isInteger(+t),y4=t=>{let e=`${t}`,r=-1;if(e[0]===\"-\"&&(e=e.slice(1)),e===\"0\")return!1;for(;e[++r]===\"0\";);return r>0},art=(t,e,r)=>typeof t==\"string\"||typeof e==\"string\"?!0:r.stringify===!0,lrt=(t,e,r)=>{if(e>0){let s=t[0]===\"-\"?\"-\":\"\";s&&(t=t.slice(1)),t=s+t.padStart(s?e-1:e,\"0\")}return r===!1?String(t):t},Yoe=(t,e)=>{let r=t[0]===\"-\"?\"-\":\"\";for(r&&(t=t.slice(1),e--);t.length<e;)t=\"0\"+t;return r?\"-\"+t:t},crt=(t,e)=>{t.negatives.sort((c,f)=>c<f?-1:c>f?1:0),t.positives.sort((c,f)=>c<f?-1:c>f?1:0);let r=e.capture?\"\":\"?:\",s=\"\",a=\"\",n;return t.positives.length&&(s=t.positives.join(\"|\")),t.negatives.length&&(a=`-(${r}${t.negatives.join(\"|\")})`),s&&a?n=`${s}|${a}`:n=s||a,e.wrap?`(${r}${n})`:n},Koe=(t,e,r,s)=>{if(r)return Voe(t,e,{wrap:!1,...s});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},Joe=(t,e,r)=>{if(Array.isArray(t)){let s=r.wrap===!0,a=r.capture?\"\":\"?:\";return s?`(${a}${t.join(\"|\")})`:t.join(\"|\")}return Voe(t,e,r)},zoe=(...t)=>new RangeError(\"Invalid range arguments: \"+srt.inspect(...t)),Zoe=(t,e,r)=>{if(r.strictRanges===!0)throw zoe([t,e]);return[]},urt=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step \"${t}\" to be a number`);return[]},frt=(t,e,r=1,s={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw zoe([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=y4(f)||y4(p)||y4(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&art(t,e,s)===!1,P=s.transform||ort(S);if(s.toRegex&&r===1)return Koe(Yoe(t,C),Yoe(e,C),!0,s);let I={negatives:[],positives:[]},R=W=>I[W<0?\"negatives\":\"positives\"].push(Math.abs(W)),N=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?R(a):N.push(lrt(P(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?crt(I,s):Joe(N,null,{wrap:!1,...s}):N},Art=(t,e,r=1,s={})=>{if(!BB(t)&&t.length>1||!BB(e)&&e.length>1)return Zoe(t,e,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${t}`.charCodeAt(0),c=`${e}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return Koe(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?Joe(E,null,{wrap:!1,options:s}):E},Bk=(t,e,r,s={})=>{if(e==null&&m4(t))return[t];if(!m4(t)||!m4(e))return Zoe(t,e,s);if(typeof r==\"function\")return Bk(t,e,1,{transform:r});if(Woe(r))return Bk(t,e,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,BB(r)?BB(t)&&BB(e)?frt(t,e,r,a):Art(t,e,Math.max(Math.abs(r),1),a):r!=null&&!Woe(r)?urt(r,a):Bk(t,e,1,r)};Xoe.exports=Bk});var tae=L((VYt,eae)=>{\"use strict\";var prt=E4(),$oe=Ck(),hrt=(t,e={})=>{let r=(s,a={})=>{let n=$oe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=n===!0||c===!0,p=e.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type===\"open\")return f?p+s.value:\"(\";if(s.type===\"close\")return f?p+s.value:\")\";if(s.type===\"comma\")return s.prev.type===\"comma\"?\"\":f?s.value:\"|\";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=$oe.reduce(s.nodes),C=prt(...E,{...e,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(t)};eae.exports=hrt});var iae=L((KYt,nae)=>{\"use strict\";var grt=E4(),rae=wk(),TE=Ck(),Wd=(t=\"\",e=\"\",r=!1)=>{let s=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?TE.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)s.push(Wd(n,e,r));else for(let n of e)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),s.push(Array.isArray(n)?Wd(a,n,r):a+n);return TE.flatten(s)},drt=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!==\"brace\"&&c.type!==\"root\"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(Wd(f.pop(),rae(a,e)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){f.push(Wd(f.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let C=TE.reduce(a.nodes);if(TE.exceedsLimit(...C,e.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let S=grt(...C,e);S.length===0&&(S=rae(a,e)),f.push(Wd(f.pop(),S)),a.nodes=[];return}let p=TE.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C<a.nodes.length;C++){let S=a.nodes[C];if(S.type===\"comma\"&&a.type===\"brace\"){C===1&&h.push(\"\"),h.push(\"\");continue}if(S.type===\"close\"){f.push(Wd(f.pop(),h,p));continue}if(S.value&&S.type!==\"open\"){h.push(Wd(h.pop(),S.value));continue}S.nodes&&s(S,a)}return h};return TE.flatten(s(t))};nae.exports=drt});var oae=L((JYt,sae)=>{\"use strict\";sae.exports={MAX_LENGTH:1024*64,CHAR_0:\"0\",CHAR_9:\"9\",CHAR_UPPERCASE_A:\"A\",CHAR_LOWERCASE_A:\"a\",CHAR_UPPERCASE_Z:\"Z\",CHAR_LOWERCASE_Z:\"z\",CHAR_LEFT_PARENTHESES:\"(\",CHAR_RIGHT_PARENTHESES:\")\",CHAR_ASTERISK:\"*\",CHAR_AMPERSAND:\"&\",CHAR_AT:\"@\",CHAR_BACKSLASH:\"\\\\\",CHAR_BACKTICK:\"`\",CHAR_CARRIAGE_RETURN:\"\\r\",CHAR_CIRCUMFLEX_ACCENT:\"^\",CHAR_COLON:\":\",CHAR_COMMA:\",\",CHAR_DOLLAR:\"$\",CHAR_DOT:\".\",CHAR_DOUBLE_QUOTE:'\"',CHAR_EQUAL:\"=\",CHAR_EXCLAMATION_MARK:\"!\",CHAR_FORM_FEED:\"\\f\",CHAR_FORWARD_SLASH:\"/\",CHAR_HASH:\"#\",CHAR_HYPHEN_MINUS:\"-\",CHAR_LEFT_ANGLE_BRACKET:\"<\",CHAR_LEFT_CURLY_BRACE:\"{\",CHAR_LEFT_SQUARE_BRACKET:\"[\",CHAR_LINE_FEED:`\n`,CHAR_NO_BREAK_SPACE:\"\\xA0\",CHAR_PERCENT:\"%\",CHAR_PLUS:\"+\",CHAR_QUESTION_MARK:\"?\",CHAR_RIGHT_ANGLE_BRACKET:\">\",CHAR_RIGHT_CURLY_BRACE:\"}\",CHAR_RIGHT_SQUARE_BRACKET:\"]\",CHAR_SEMICOLON:\";\",CHAR_SINGLE_QUOTE:\"'\",CHAR_SPACE:\" \",CHAR_TAB:\"\t\",CHAR_UNDERSCORE:\"_\",CHAR_VERTICAL_LINE:\"|\",CHAR_ZERO_WIDTH_NOBREAK_SPACE:\"\\uFEFF\"}});var fae=L((zYt,uae)=>{\"use strict\";var mrt=wk(),{MAX_LENGTH:aae,CHAR_BACKSLASH:I4,CHAR_BACKTICK:yrt,CHAR_COMMA:Ert,CHAR_DOT:Irt,CHAR_LEFT_PARENTHESES:Crt,CHAR_RIGHT_PARENTHESES:wrt,CHAR_LEFT_CURLY_BRACE:Brt,CHAR_RIGHT_CURLY_BRACE:vrt,CHAR_LEFT_SQUARE_BRACKET:lae,CHAR_RIGHT_SQUARE_BRACKET:cae,CHAR_DOUBLE_QUOTE:Srt,CHAR_SINGLE_QUOTE:Drt,CHAR_NO_BREAK_SPACE:brt,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Prt}=oae(),xrt=(t,e={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");let r=e||{},s=typeof r.maxLength==\"number\"?Math.min(aae,r.maxLength):aae;if(t.length>s)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${s})`);let a={type:\"root\",input:t,nodes:[]},n=[a],c=a,f=a,p=0,h=t.length,E=0,C=0,S,P={},I=()=>t[E++],R=N=>{if(N.type===\"text\"&&f.type===\"dot\"&&(f.type=\"text\"),f&&f.type===\"text\"&&N.type===\"text\"){f.value+=N.value;return}return c.nodes.push(N),N.parent=c,N.prev=f,f=N,N};for(R({type:\"bos\"});E<h;)if(c=n[n.length-1],S=I(),!(S===Prt||S===brt)){if(S===I4){R({type:\"text\",value:(e.keepEscaping?S:\"\")+I()});continue}if(S===cae){R({type:\"text\",value:\"\\\\\"+S});continue}if(S===lae){p++;let N=!0,U;for(;E<h&&(U=I());){if(S+=U,U===lae){p++;continue}if(U===I4){S+=I();continue}if(U===cae&&(p--,p===0))break}R({type:\"text\",value:S});continue}if(S===Crt){c=R({type:\"paren\",nodes:[]}),n.push(c),R({type:\"text\",value:S});continue}if(S===wrt){if(c.type!==\"paren\"){R({type:\"text\",value:S});continue}c=n.pop(),R({type:\"text\",value:S}),c=n[n.length-1];continue}if(S===Srt||S===Drt||S===yrt){let N=S,U;for(e.keepQuotes!==!0&&(S=\"\");E<h&&(U=I());){if(U===I4){S+=U+I();continue}if(U===N){e.keepQuotes===!0&&(S+=U);break}S+=U}R({type:\"text\",value:S});continue}if(S===Brt){C++;let U={type:\"brace\",open:!0,close:!1,dollar:f.value&&f.value.slice(-1)===\"$\"||c.dollar===!0,depth:C,commas:0,ranges:0,nodes:[]};c=R(U),n.push(c),R({type:\"open\",value:S});continue}if(S===vrt){if(c.type!==\"brace\"){R({type:\"text\",value:S});continue}let N=\"close\";c=n.pop(),c.close=!0,R({type:N,value:S}),C--,c=n[n.length-1];continue}if(S===Ert&&C>0){if(c.ranges>0){c.ranges=0;let N=c.nodes.shift();c.nodes=[N,{type:\"text\",value:mrt(c)}]}R({type:\"comma\",value:S}),c.commas++;continue}if(S===Irt&&C>0&&c.commas===0){let N=c.nodes;if(C===0||N.length===0){R({type:\"text\",value:S});continue}if(f.type===\"dot\"){if(c.range=[],f.value+=S,f.type=\"range\",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type=\"text\";continue}c.ranges++,c.args=[];continue}if(f.type===\"range\"){N.pop();let U=N[N.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}R({type:\"dot\",value:S});continue}R({type:\"text\",value:S})}do if(c=n.pop(),c.type!==\"root\"){c.nodes.forEach(W=>{W.nodes||(W.type===\"open\"&&(W.isOpen=!0),W.type===\"close\"&&(W.isClose=!0),W.nodes||(W.type=\"text\"),W.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(c);N.nodes.splice(U,1,...c.nodes)}while(n.length>0);return R({type:\"eos\"}),a};uae.exports=xrt});var hae=L((ZYt,pae)=>{\"use strict\";var Aae=wk(),krt=tae(),Qrt=iae(),Trt=fae(),ql=(t,e={})=>{let r=[];if(Array.isArray(t))for(let s of t){let a=ql.create(s,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(ql.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};ql.parse=(t,e={})=>Trt(t,e);ql.stringify=(t,e={})=>Aae(typeof t==\"string\"?ql.parse(t,e):t,e);ql.compile=(t,e={})=>(typeof t==\"string\"&&(t=ql.parse(t,e)),krt(t,e));ql.expand=(t,e={})=>{typeof t==\"string\"&&(t=ql.parse(t,e));let r=Qrt(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};ql.create=(t,e={})=>t===\"\"||t.length<3?[t]:e.expand!==!0?ql.compile(t,e):ql.expand(t,e);pae.exports=ql});var vB=L((XYt,Eae)=>{\"use strict\";var Rrt=ye(\"path\"),Kf=\"\\\\\\\\/\",gae=`[^${Kf}]`,Pp=\"\\\\.\",Frt=\"\\\\+\",Nrt=\"\\\\?\",vk=\"\\\\/\",Ort=\"(?=.)\",dae=\"[^/]\",C4=`(?:${vk}|$)`,mae=`(?:^|${vk})`,w4=`${Pp}{1,2}${C4}`,Lrt=`(?!${Pp})`,Mrt=`(?!${mae}${w4})`,_rt=`(?!${Pp}{0,1}${C4})`,Urt=`(?!${w4})`,Hrt=`[^.${vk}]`,jrt=`${dae}*?`,yae={DOT_LITERAL:Pp,PLUS_LITERAL:Frt,QMARK_LITERAL:Nrt,SLASH_LITERAL:vk,ONE_CHAR:Ort,QMARK:dae,END_ANCHOR:C4,DOTS_SLASH:w4,NO_DOT:Lrt,NO_DOTS:Mrt,NO_DOT_SLASH:_rt,NO_DOTS_SLASH:Urt,QMARK_NO_DOT:Hrt,STAR:jrt,START_ANCHOR:mae},qrt={...yae,SLASH_LITERAL:`[${Kf}]`,QMARK:gae,STAR:`${gae}*?`,DOTS_SLASH:`${Pp}{1,2}(?:[${Kf}]|$)`,NO_DOT:`(?!${Pp})`,NO_DOTS:`(?!(?:^|[${Kf}])${Pp}{1,2}(?:[${Kf}]|$))`,NO_DOT_SLASH:`(?!${Pp}{0,1}(?:[${Kf}]|$))`,NO_DOTS_SLASH:`(?!${Pp}{1,2}(?:[${Kf}]|$))`,QMARK_NO_DOT:`[^.${Kf}]`,START_ANCHOR:`(?:^|[${Kf}])`,END_ANCHOR:`(?:[${Kf}]|$)`},Grt={alnum:\"a-zA-Z0-9\",alpha:\"a-zA-Z\",ascii:\"\\\\x00-\\\\x7F\",blank:\" \\\\t\",cntrl:\"\\\\x00-\\\\x1F\\\\x7F\",digit:\"0-9\",graph:\"\\\\x21-\\\\x7E\",lower:\"a-z\",print:\"\\\\x20-\\\\x7E \",punct:\"\\\\-!\\\"#$%&'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~\",space:\" \\\\t\\\\r\\\\n\\\\v\\\\f\",upper:\"A-Z\",word:\"A-Za-z0-9_\",xdigit:\"A-Fa-f0-9\"};Eae.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:Grt,REGEX_BACKSLASH:/\\\\(?![*+?^${}(|)[\\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\\].,$*+?^{}()|\\\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\\\?)((\\W)(\\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,REPLACEMENTS:{\"***\":\"*\",\"**/**\":\"**\",\"**/**/**\":\"**\"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Rrt.sep,extglobChars(t){return{\"!\":{type:\"negate\",open:\"(?:(?!(?:\",close:`))${t.STAR})`},\"?\":{type:\"qmark\",open:\"(?:\",close:\")?\"},\"+\":{type:\"plus\",open:\"(?:\",close:\")+\"},\"*\":{type:\"star\",open:\"(?:\",close:\")*\"},\"@\":{type:\"at\",open:\"(?:\",close:\")\"}}},globChars(t){return t===!0?qrt:yae}}});var SB=L(al=>{\"use strict\";var Wrt=ye(\"path\"),Yrt=process.platform===\"win32\",{REGEX_BACKSLASH:Vrt,REGEX_REMOVE_BACKSLASH:Krt,REGEX_SPECIAL_CHARS:Jrt,REGEX_SPECIAL_CHARS_GLOBAL:zrt}=vB();al.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);al.hasRegexChars=t=>Jrt.test(t);al.isRegexChar=t=>t.length===1&&al.hasRegexChars(t);al.escapeRegex=t=>t.replace(zrt,\"\\\\$1\");al.toPosixSlashes=t=>t.replace(Vrt,\"/\");al.removeBackslashes=t=>t.replace(Krt,e=>e===\"\\\\\"?\"\":e);al.supportsLookbehinds=()=>{let t=process.version.slice(1).split(\".\").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};al.isWindows=t=>t&&typeof t.windows==\"boolean\"?t.windows:Yrt===!0||Wrt.sep===\"\\\\\";al.escapeLast=(t,e,r)=>{let s=t.lastIndexOf(e,r);return s===-1?t:t[s-1]===\"\\\\\"?al.escapeLast(t,e,s-1):`${t.slice(0,s)}\\\\${t.slice(s)}`};al.removePrefix=(t,e={})=>{let r=t;return r.startsWith(\"./\")&&(r=r.slice(2),e.prefix=\"./\"),r};al.wrapOutput=(t,e={},r={})=>{let s=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${s}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var bae=L((eVt,Dae)=>{\"use strict\";var Iae=SB(),{CHAR_ASTERISK:B4,CHAR_AT:Zrt,CHAR_BACKWARD_SLASH:DB,CHAR_COMMA:Xrt,CHAR_DOT:v4,CHAR_EXCLAMATION_MARK:S4,CHAR_FORWARD_SLASH:Sae,CHAR_LEFT_CURLY_BRACE:D4,CHAR_LEFT_PARENTHESES:b4,CHAR_LEFT_SQUARE_BRACKET:$rt,CHAR_PLUS:ent,CHAR_QUESTION_MARK:Cae,CHAR_RIGHT_CURLY_BRACE:tnt,CHAR_RIGHT_PARENTHESES:wae,CHAR_RIGHT_SQUARE_BRACKET:rnt}=vB(),Bae=t=>t===Sae||t===DB,vae=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},nnt=(t,e)=>{let r=e||{},s=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=t,h=-1,E=0,C=0,S=!1,P=!1,I=!1,R=!1,N=!1,U=!1,W=!1,te=!1,ie=!1,Ae=!1,ce=0,me,pe,Be={value:\"\",depth:0,isGlob:!1},Ce=()=>h>=s,g=()=>p.charCodeAt(h+1),we=()=>(me=pe,p.charCodeAt(++h));for(;h<s;){pe=we();let De;if(pe===DB){W=Be.backslashes=!0,pe=we(),pe===D4&&(U=!0);continue}if(U===!0||pe===D4){for(ce++;Ce()!==!0&&(pe=we());){if(pe===DB){W=Be.backslashes=!0,we();continue}if(pe===D4){ce++;continue}if(U!==!0&&pe===v4&&(pe=we())===v4){if(S=Be.isBrace=!0,I=Be.isGlob=!0,Ae=!0,a===!0)continue;break}if(U!==!0&&pe===Xrt){if(S=Be.isBrace=!0,I=Be.isGlob=!0,Ae=!0,a===!0)continue;break}if(pe===tnt&&(ce--,ce===0)){U=!1,S=Be.isBrace=!0,Ae=!0;break}}if(a===!0)continue;break}if(pe===Sae){if(n.push(h),c.push(Be),Be={value:\"\",depth:0,isGlob:!1},Ae===!0)continue;if(me===v4&&h===E+1){E+=2;continue}C=h+1;continue}if(r.noext!==!0&&(pe===ent||pe===Zrt||pe===B4||pe===Cae||pe===S4)===!0&&g()===b4){if(I=Be.isGlob=!0,R=Be.isExtglob=!0,Ae=!0,pe===S4&&h===E&&(ie=!0),a===!0){for(;Ce()!==!0&&(pe=we());){if(pe===DB){W=Be.backslashes=!0,pe=we();continue}if(pe===wae){I=Be.isGlob=!0,Ae=!0;break}}continue}break}if(pe===B4){if(me===B4&&(N=Be.isGlobstar=!0),I=Be.isGlob=!0,Ae=!0,a===!0)continue;break}if(pe===Cae){if(I=Be.isGlob=!0,Ae=!0,a===!0)continue;break}if(pe===$rt){for(;Ce()!==!0&&(De=we());){if(De===DB){W=Be.backslashes=!0,we();continue}if(De===rnt){P=Be.isBracket=!0,I=Be.isGlob=!0,Ae=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&pe===S4&&h===E){te=Be.negated=!0,E++;continue}if(r.noparen!==!0&&pe===b4){if(I=Be.isGlob=!0,a===!0){for(;Ce()!==!0&&(pe=we());){if(pe===b4){W=Be.backslashes=!0,pe=we();continue}if(pe===wae){Ae=!0;break}}continue}break}if(I===!0){if(Ae=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,I=!1);let Ee=p,fe=\"\",se=\"\";E>0&&(fe=p.slice(0,E),p=p.slice(E),C-=E),Ee&&I===!0&&C>0?(Ee=p.slice(0,C),se=p.slice(C)):I===!0?(Ee=\"\",se=p):Ee=p,Ee&&Ee!==\"\"&&Ee!==\"/\"&&Ee!==p&&Bae(Ee.charCodeAt(Ee.length-1))&&(Ee=Ee.slice(0,-1)),r.unescape===!0&&(se&&(se=Iae.removeBackslashes(se)),Ee&&W===!0&&(Ee=Iae.removeBackslashes(Ee)));let X={prefix:fe,input:t,start:E,base:Ee,glob:se,isBrace:S,isBracket:P,isGlob:I,isExtglob:R,isGlobstar:N,negated:te,negatedExtglob:ie};if(r.tokens===!0&&(X.maxDepth=0,Bae(pe)||c.push(Be),X.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Re=0;Re<n.length;Re++){let gt=De?De+1:E,j=n[Re],rt=t.slice(gt,j);r.tokens&&(Re===0&&E!==0?(c[Re].isPrefix=!0,c[Re].value=fe):c[Re].value=rt,vae(c[Re]),X.maxDepth+=c[Re].depth),(Re!==0||rt!==\"\")&&f.push(rt),De=j}if(De&&De+1<t.length){let Re=t.slice(De+1);f.push(Re),r.tokens&&(c[c.length-1].value=Re,vae(c[c.length-1]),X.maxDepth+=c[c.length-1].depth)}X.slashes=n,X.parts=f}return X};Dae.exports=nnt});var kae=L((tVt,xae)=>{\"use strict\";var Sk=vB(),Gl=SB(),{MAX_LENGTH:Dk,POSIX_REGEX_SOURCE:int,REGEX_NON_SPECIAL_CHARS:snt,REGEX_SPECIAL_CHARS_BACKREF:ont,REPLACEMENTS:Pae}=Sk,ant=(t,e)=>{if(typeof e.expandRange==\"function\")return e.expandRange(...t,e);t.sort();let r=`[${t.join(\"-\")}]`;try{new RegExp(r)}catch{return t.map(a=>Gl.escapeRegex(a)).join(\"..\")}return r},RE=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`,P4=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");t=Pae[t]||t;let r={...e},s=typeof r.maxLength==\"number\"?Math.min(Dk,r.maxLength):Dk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},c=[n],f=r.capture?\"\":\"?:\",p=Gl.isWindows(e),h=Sk.globChars(p),E=Sk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:P,ONE_CHAR:I,DOTS_SLASH:R,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:W,QMARK:te,QMARK_NO_DOT:ie,STAR:Ae,START_ANCHOR:ce}=h,me=x=>`(${f}(?:(?!${ce}${x.dot?R:C}).)*?)`,pe=r.dot?\"\":N,Be=r.dot?te:ie,Ce=r.bash===!0?me(r):Ae;r.capture&&(Ce=`(${Ce})`),typeof r.noext==\"boolean\"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:\"\",output:\"\",prefix:\"\",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};t=Gl.removePrefix(t,g),a=t.length;let we=[],Ee=[],fe=[],se=n,X,De=()=>g.index===a-1,Re=g.peek=(x=1)=>t[g.index+x],gt=g.advance=()=>t[++g.index]||\"\",j=()=>t.slice(g.index+1),rt=(x=\"\",w=0)=>{g.consumed+=x,g.index+=w},Fe=x=>{g.output+=x.output!=null?x.output:x.value,rt(x.value)},Ne=()=>{let x=1;for(;Re()===\"!\"&&(Re(2)!==\"(\"||Re(3)===\"?\");)gt(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},Pe=x=>{g[x]++,fe.push(x)},Ye=x=>{g[x]--,fe.pop()},ke=x=>{if(se.type===\"globstar\"){let w=g.braces>0&&(x.type===\"comma\"||x.type===\"brace\"),b=x.extglob===!0||we.length&&(x.type===\"pipe\"||x.type===\"paren\");x.type!==\"slash\"&&x.type!==\"paren\"&&!w&&!b&&(g.output=g.output.slice(0,-se.output.length),se.type=\"star\",se.value=\"*\",se.output=Ce,g.output+=se.output)}if(we.length&&x.type!==\"paren\"&&(we[we.length-1].inner+=x.value),(x.value||x.output)&&Fe(x),se&&se.type===\"text\"&&x.type===\"text\"){se.value+=x.value,se.output=(se.output||\"\")+x.value;return}x.prev=se,c.push(x),se=x},it=(x,w)=>{let b={...E[w],conditions:1,inner:\"\"};b.prev=se,b.parens=g.parens,b.output=g.output;let y=(r.capture?\"(\":\"\")+b.open;Pe(\"parens\"),ke({type:x,value:w,output:g.output?\"\":I}),ke({type:\"paren\",extglob:!0,value:gt(),output:y}),we.push(b)},_e=x=>{let w=x.close+(r.capture?\")\":\"\"),b;if(x.type===\"negate\"){let y=Ce;if(x.inner&&x.inner.length>1&&x.inner.includes(\"/\")&&(y=me(r)),(y!==Ce||De()||/^\\)+$/.test(j()))&&(w=x.close=`)$))${y}`),x.inner.includes(\"*\")&&(b=j())&&/^\\.[^\\\\/.]+$/.test(b)){let F=P4(b,{...e,fastpaths:!1}).output;w=x.close=`)${F})${y})`}x.prev.type===\"bos\"&&(g.negatedExtglob=!0)}ke({type:\"paren\",extglob:!0,value:X,output:w}),Ye(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let x=!1,w=t.replace(ont,(b,y,F,z,Z,$)=>z===\"\\\\\"?(x=!0,b):z===\"?\"?y?y+z+(Z?te.repeat(Z.length):\"\"):$===0?Be+(Z?te.repeat(Z.length):\"\"):te.repeat(F.length):z===\".\"?C.repeat(F.length):z===\"*\"?y?y+z+(Z?Ce:\"\"):Ce:y?b:`\\\\${b}`);return x===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,b=>b.length%2===0?\"\\\\\\\\\":b?\"\\\\\":\"\")),w===t&&r.contains===!0?(g.output=t,g):(g.output=Gl.wrapOutput(w,g,e),g)}for(;!De();){if(X=gt(),X===\"\\0\")continue;if(X===\"\\\\\"){let b=Re();if(b===\"/\"&&r.bash!==!0||b===\".\"||b===\";\")continue;if(!b){X+=\"\\\\\",ke({type:\"text\",value:X});continue}let y=/^\\\\+/.exec(j()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(X+=\"\\\\\")),r.unescape===!0?X=gt():X+=gt(),g.brackets===0){ke({type:\"text\",value:X});continue}}if(g.brackets>0&&(X!==\"]\"||se.value===\"[\"||se.value===\"[^\")){if(r.posix!==!1&&X===\":\"){let b=se.value.slice(1);if(b.includes(\"[\")&&(se.posix=!0,b.includes(\":\"))){let y=se.value.lastIndexOf(\"[\"),F=se.value.slice(0,y),z=se.value.slice(y+2),Z=int[z];if(Z){se.value=F+Z,g.backtrack=!0,gt(),!n.output&&c.indexOf(se)===1&&(n.output=I);continue}}}(X===\"[\"&&Re()!==\":\"||X===\"-\"&&Re()===\"]\")&&(X=`\\\\${X}`),X===\"]\"&&(se.value===\"[\"||se.value===\"[^\")&&(X=`\\\\${X}`),r.posix===!0&&X===\"!\"&&se.value===\"[\"&&(X=\"^\"),se.value+=X,Fe({value:X});continue}if(g.quotes===1&&X!=='\"'){X=Gl.escapeRegex(X),se.value+=X,Fe({value:X});continue}if(X==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&ke({type:\"text\",value:X});continue}if(X===\"(\"){Pe(\"parens\"),ke({type:\"paren\",value:X});continue}if(X===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(RE(\"opening\",\"(\"));let b=we[we.length-1];if(b&&g.parens===b.parens+1){_e(we.pop());continue}ke({type:\"paren\",value:X,output:g.parens?\")\":\"\\\\)\"}),Ye(\"parens\");continue}if(X===\"[\"){if(r.nobracket===!0||!j().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(RE(\"closing\",\"]\"));X=`\\\\${X}`}else Pe(\"brackets\");ke({type:\"bracket\",value:X});continue}if(X===\"]\"){if(r.nobracket===!0||se&&se.type===\"bracket\"&&se.value.length===1){ke({type:\"text\",value:X,output:`\\\\${X}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(RE(\"opening\",\"[\"));ke({type:\"text\",value:X,output:`\\\\${X}`});continue}Ye(\"brackets\");let b=se.value.slice(1);if(se.posix!==!0&&b[0]===\"^\"&&!b.includes(\"/\")&&(X=`/${X}`),se.value+=X,Fe({value:X}),r.literalBrackets===!1||Gl.hasRegexChars(b))continue;let y=Gl.escapeRegex(se.value);if(g.output=g.output.slice(0,-se.value.length),r.literalBrackets===!0){g.output+=y,se.value=y;continue}se.value=`(${f}${y}|${se.value})`,g.output+=se.value;continue}if(X===\"{\"&&r.nobrace!==!0){Pe(\"braces\");let b={type:\"brace\",value:X,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};Ee.push(b),ke(b);continue}if(X===\"}\"){let b=Ee[Ee.length-1];if(r.nobrace===!0||!b){ke({type:\"text\",value:X,output:X});continue}let y=\")\";if(b.dots===!0){let F=c.slice(),z=[];for(let Z=F.length-1;Z>=0&&(c.pop(),F[Z].type!==\"brace\");Z--)F[Z].type!==\"dots\"&&z.unshift(F[Z].value);y=ant(z,r),g.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=g.output.slice(0,b.outputIndex),z=g.tokens.slice(b.tokensIndex);b.value=b.output=\"\\\\{\",X=y=\"\\\\}\",g.output=F;for(let Z of z)g.output+=Z.output||Z.value}ke({type:\"brace\",value:X,output:y}),Ye(\"braces\"),Ee.pop();continue}if(X===\"|\"){we.length>0&&we[we.length-1].conditions++,ke({type:\"text\",value:X});continue}if(X===\",\"){let b=X,y=Ee[Ee.length-1];y&&fe[fe.length-1]===\"braces\"&&(y.comma=!0,b=\"|\"),ke({type:\"comma\",value:X,output:b});continue}if(X===\"/\"){if(se.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",c.pop(),se=n;continue}ke({type:\"slash\",value:X,output:P});continue}if(X===\".\"){if(g.braces>0&&se.type===\"dot\"){se.value===\".\"&&(se.output=C);let b=Ee[Ee.length-1];se.type=\"dots\",se.output+=X,se.value+=X,b.dots=!0;continue}if(g.braces+g.parens===0&&se.type!==\"bos\"&&se.type!==\"slash\"){ke({type:\"text\",value:X,output:C});continue}ke({type:\"dot\",value:X,output:C});continue}if(X===\"?\"){if(!(se&&se.value===\"(\")&&r.noextglob!==!0&&Re()===\"(\"&&Re(2)!==\"?\"){it(\"qmark\",X);continue}if(se&&se.type===\"paren\"){let y=Re(),F=X;if(y===\"<\"&&!Gl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(se.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(j()))&&(F=`\\\\${X}`),ke({type:\"text\",value:X,output:F});continue}if(r.dot!==!0&&(se.type===\"slash\"||se.type===\"bos\")){ke({type:\"qmark\",value:X,output:ie});continue}ke({type:\"qmark\",value:X,output:te});continue}if(X===\"!\"){if(r.noextglob!==!0&&Re()===\"(\"&&(Re(2)!==\"?\"||!/[!=<:]/.test(Re(3)))){it(\"negate\",X);continue}if(r.nonegate!==!0&&g.index===0){Ne();continue}}if(X===\"+\"){if(r.noextglob!==!0&&Re()===\"(\"&&Re(2)!==\"?\"){it(\"plus\",X);continue}if(se&&se.value===\"(\"||r.regex===!1){ke({type:\"plus\",value:X,output:S});continue}if(se&&(se.type===\"bracket\"||se.type===\"paren\"||se.type===\"brace\")||g.parens>0){ke({type:\"plus\",value:X});continue}ke({type:\"plus\",value:S});continue}if(X===\"@\"){if(r.noextglob!==!0&&Re()===\"(\"&&Re(2)!==\"?\"){ke({type:\"at\",extglob:!0,value:X,output:\"\"});continue}ke({type:\"text\",value:X});continue}if(X!==\"*\"){(X===\"$\"||X===\"^\")&&(X=`\\\\${X}`);let b=snt.exec(j());b&&(X+=b[0],g.index+=b[0].length),ke({type:\"text\",value:X});continue}if(se&&(se.type===\"globstar\"||se.star===!0)){se.type=\"star\",se.star=!0,se.value+=X,se.output=Ce,g.backtrack=!0,g.globstar=!0,rt(X);continue}let x=j();if(r.noextglob!==!0&&/^\\([^?]/.test(x)){it(\"star\",X);continue}if(se.type===\"star\"){if(r.noglobstar===!0){rt(X);continue}let b=se.prev,y=b.prev,F=b.type===\"slash\"||b.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||x[0]&&x[0]!==\"/\")){ke({type:\"star\",value:X,output:\"\"});continue}let Z=g.braces>0&&(b.type===\"comma\"||b.type===\"brace\"),$=we.length&&(b.type===\"pipe\"||b.type===\"paren\");if(!F&&b.type!==\"paren\"&&!Z&&!$){ke({type:\"star\",value:X,output:\"\"});continue}for(;x.slice(0,3)===\"/**\";){let oe=t[g.index+4];if(oe&&oe!==\"/\")break;x=x.slice(3),rt(\"/**\",3)}if(b.type===\"bos\"&&De()){se.type=\"globstar\",se.value+=X,se.output=me(r),g.output=se.output,g.globstar=!0,rt(X);continue}if(b.type===\"slash\"&&b.prev.type!==\"bos\"&&!z&&De()){g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type=\"globstar\",se.output=me(r)+(r.strictSlashes?\")\":\"|$)\"),se.value+=X,g.globstar=!0,g.output+=b.output+se.output,rt(X);continue}if(b.type===\"slash\"&&b.prev.type!==\"bos\"&&x[0]===\"/\"){let oe=x[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type=\"globstar\",se.output=`${me(r)}${P}|${P}${oe})`,se.value+=X,g.output+=b.output+se.output,g.globstar=!0,rt(X+gt()),ke({type:\"slash\",value:\"/\",output:\"\"});continue}if(b.type===\"bos\"&&x[0]===\"/\"){se.type=\"globstar\",se.value+=X,se.output=`(?:^|${P}|${me(r)}${P})`,g.output=se.output,g.globstar=!0,rt(X+gt()),ke({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-se.output.length),se.type=\"globstar\",se.output=me(r),se.value+=X,g.output+=se.output,g.globstar=!0,rt(X);continue}let w={type:\"star\",value:X,output:Ce};if(r.bash===!0){w.output=\".*?\",(se.type===\"bos\"||se.type===\"slash\")&&(w.output=pe+w.output),ke(w);continue}if(se&&(se.type===\"bracket\"||se.type===\"paren\")&&r.regex===!0){w.output=X,ke(w);continue}(g.index===g.start||se.type===\"slash\"||se.type===\"dot\")&&(se.type===\"dot\"?(g.output+=U,se.output+=U):r.dot===!0?(g.output+=W,se.output+=W):(g.output+=pe,se.output+=pe),Re()!==\"*\"&&(g.output+=I,se.output+=I)),ke(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(RE(\"closing\",\"]\"));g.output=Gl.escapeLast(g.output,\"[\"),Ye(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(RE(\"closing\",\")\"));g.output=Gl.escapeLast(g.output,\"(\"),Ye(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(RE(\"closing\",\"}\"));g.output=Gl.escapeLast(g.output,\"{\"),Ye(\"braces\")}if(r.strictSlashes!==!0&&(se.type===\"star\"||se.type===\"bracket\")&&ke({type:\"maybe_slash\",value:\"\",output:`${P}?`}),g.backtrack===!0){g.output=\"\";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};P4.fastpaths=(t,e)=>{let r={...e},s=typeof r.maxLength==\"number\"?Math.min(Dk,r.maxLength):Dk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);t=Pae[t]||t;let n=Gl.isWindows(e),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:P,START_ANCHOR:I}=Sk.globChars(n),R=r.dot?C:E,N=r.dot?S:E,U=r.capture?\"\":\"?:\",W={negated:!1,prefix:\"\"},te=r.bash===!0?\".*?\":P;r.capture&&(te=`(${te})`);let ie=pe=>pe.noglobstar===!0?te:`(${U}(?:(?!${I}${pe.dot?h:c}).)*?)`,Ae=pe=>{switch(pe){case\"*\":return`${R}${p}${te}`;case\".*\":return`${c}${p}${te}`;case\"*.*\":return`${R}${te}${c}${p}${te}`;case\"*/*\":return`${R}${te}${f}${p}${N}${te}`;case\"**\":return R+ie(r);case\"**/*\":return`(?:${R}${ie(r)}${f})?${N}${p}${te}`;case\"**/*.*\":return`(?:${R}${ie(r)}${f})?${N}${te}${c}${p}${te}`;case\"**/.*\":return`(?:${R}${ie(r)}${f})?${c}${p}${te}`;default:{let Be=/^(.*?)\\.(\\w+)$/.exec(pe);if(!Be)return;let Ce=Ae(Be[1]);return Ce?Ce+c+Be[2]:void 0}}},ce=Gl.removePrefix(t,W),me=Ae(ce);return me&&r.strictSlashes!==!0&&(me+=`${f}?`),me};xae.exports=P4});var Tae=L((rVt,Qae)=>{\"use strict\";var lnt=ye(\"path\"),cnt=bae(),x4=kae(),k4=SB(),unt=vB(),fnt=t=>t&&typeof t==\"object\"&&!Array.isArray(t),Xi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(S=>Xi(S,e,r));return S=>{for(let P of E){let I=P(S);if(I)return I}return!1}}let s=fnt(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!=\"string\"&&!s)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=e||{},n=k4.isWindows(e),c=s?Xi.compileRe(t,e):Xi.makeRe(t,e,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Xi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:P,output:I}=Xi.test(E,c,e,{glob:t,posix:n}),R={glob:t,state:f,regex:c,posix:n,input:E,output:I,match:P,isMatch:S};return typeof a.onResult==\"function\"&&a.onResult(R),S===!1?(R.isMatch=!1,C?R:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(R),R.isMatch=!1,C?R:!1):(typeof a.onMatch==\"function\"&&a.onMatch(R),C?R:!0)};return r&&(h.state=f),h};Xi.test=(t,e,r,{glob:s,posix:a}={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected input to be a string\");if(t===\"\")return{isMatch:!1,output:\"\"};let n=r||{},c=n.format||(a?k4.toPosixSlashes:null),f=t===s,p=f&&c?c(t):t;return f===!1&&(p=c?c(t):t,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Xi.matchBase(t,e,r,a):f=e.exec(p)),{isMatch:!!f,match:f,output:p}};Xi.matchBase=(t,e,r,s=k4.isWindows(r))=>(e instanceof RegExp?e:Xi.makeRe(e,r)).test(lnt.basename(t));Xi.isMatch=(t,e,r)=>Xi(e,r)(t);Xi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Xi.parse(r,e)):x4(t,{...e,fastpaths:!1});Xi.scan=(t,e)=>cnt(t,e);Xi.compileRe=(t,e,r=!1,s=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?\"\":\"^\",c=a.contains?\"\":\"$\",f=`${n}(?:${t.output})${c}`;t&&t.negated===!0&&(f=`^(?!${f}).*$`);let p=Xi.toRegex(f,e);return s===!0&&(p.state=t),p};Xi.makeRe=(t,e={},r=!1,s=!1)=>{if(!t||typeof t!=\"string\")throw new TypeError(\"Expected a non-empty string\");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]===\".\"||t[0]===\"*\")&&(a.output=x4.fastpaths(t,e)),a.output||(a=x4(t,e)),Xi.compileRe(a,e,r,s)};Xi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?\"i\":\"\"))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Xi.constants=unt;Qae.exports=Xi});var Fae=L((nVt,Rae)=>{\"use strict\";Rae.exports=Tae()});var Sa=L((iVt,Mae)=>{\"use strict\";var Oae=ye(\"util\"),Lae=hae(),Jf=Fae(),Q4=SB(),Nae=t=>t===\"\"||t===\"./\",ki=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<e.length;E++){let C=Jf(String(e[E]),{...r,onResult:f},!0),S=C.state.negated||C.state.negatedExtglob;S&&c++;for(let P of t){let I=C(P,!0);(S?!I.isMatch:I.isMatch)&&(S?s.add(I.output):(s.delete(I.output),a.add(I.output)))}}let h=(c===e.length?[...n]:[...a]).filter(E=>!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for \"${e.join(\", \")}\"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\\\/g,\"\")):e}return h};ki.match=ki;ki.matcher=(t,e)=>Jf(t,e);ki.isMatch=(t,e,r)=>Jf(e,r)(t);ki.any=ki.isMatch;ki.not=(t,e,r={})=>{e=[].concat(e).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(ki(t,e,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};ki.contains=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${Oae.inspect(t)}\"`);if(Array.isArray(e))return e.some(s=>ki.contains(t,s,r));if(typeof e==\"string\"){if(Nae(t)||Nae(e))return!1;if(t.includes(e)||t.startsWith(\"./\")&&t.slice(2).includes(e))return!0}return ki.isMatch(t,e,{...r,contains:!0})};ki.matchKeys=(t,e,r)=>{if(!Q4.isObject(t))throw new TypeError(\"Expected the first argument to be an object\");let s=ki(Object.keys(t),e,r),a={};for(let n of s)a[n]=t[n];return a};ki.some=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};ki.every=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};ki.all=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${Oae.inspect(t)}\"`);return[].concat(e).every(s=>Jf(s,r)(t))};ki.capture=(t,e,r)=>{let s=Q4.isWindows(r),n=Jf.makeRe(String(t),{...r,capture:!0}).exec(s?Q4.toPosixSlashes(e):e);if(n)return n.slice(1).map(c=>c===void 0?\"\":c)};ki.makeRe=(...t)=>Jf.makeRe(...t);ki.scan=(...t)=>Jf.scan(...t);ki.parse=(t,e)=>{let r=[];for(let s of[].concat(t||[]))for(let a of Lae(String(s),e))r.push(Jf.parse(a,e));return r};ki.braces=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return e&&e.nobrace===!0||!/\\{.*\\}/.test(t)?[t]:Lae(t,e)};ki.braceExpand=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return ki.braces(t,{...e,expand:!0})};Mae.exports=ki});var Uae=L((sVt,_ae)=>{\"use strict\";_ae.exports=({onlyFirst:t=!1}={})=>{let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t?void 0:\"g\")}});var bk=L((oVt,Hae)=>{\"use strict\";var Ant=Uae();Hae.exports=t=>typeof t==\"string\"?t.replace(Ant(),\"\"):t});var qae=L((aVt,jae)=>{function pnt(){this.__data__=[],this.size=0}jae.exports=pnt});var FE=L((lVt,Gae)=>{function hnt(t,e){return t===e||t!==t&&e!==e}Gae.exports=hnt});var bB=L((cVt,Wae)=>{var gnt=FE();function dnt(t,e){for(var r=t.length;r--;)if(gnt(t[r][0],e))return r;return-1}Wae.exports=dnt});var Vae=L((uVt,Yae)=>{var mnt=bB(),ynt=Array.prototype,Ent=ynt.splice;function Int(t){var e=this.__data__,r=mnt(e,t);if(r<0)return!1;var s=e.length-1;return r==s?e.pop():Ent.call(e,r,1),--this.size,!0}Yae.exports=Int});var Jae=L((fVt,Kae)=>{var Cnt=bB();function wnt(t){var e=this.__data__,r=Cnt(e,t);return r<0?void 0:e[r][1]}Kae.exports=wnt});var Zae=L((AVt,zae)=>{var Bnt=bB();function vnt(t){return Bnt(this.__data__,t)>-1}zae.exports=vnt});var $ae=L((pVt,Xae)=>{var Snt=bB();function Dnt(t,e){var r=this.__data__,s=Snt(r,t);return s<0?(++this.size,r.push([t,e])):r[s][1]=e,this}Xae.exports=Dnt});var PB=L((hVt,ele)=>{var bnt=qae(),Pnt=Vae(),xnt=Jae(),knt=Zae(),Qnt=$ae();function NE(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var s=t[e];this.set(s[0],s[1])}}NE.prototype.clear=bnt;NE.prototype.delete=Pnt;NE.prototype.get=xnt;NE.prototype.has=knt;NE.prototype.set=Qnt;ele.exports=NE});var rle=L((gVt,tle)=>{var Tnt=PB();function Rnt(){this.__data__=new Tnt,this.size=0}tle.exports=Rnt});var ile=L((dVt,nle)=>{function Fnt(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}nle.exports=Fnt});var ole=L((mVt,sle)=>{function Nnt(t){return this.__data__.get(t)}sle.exports=Nnt});var lle=L((yVt,ale)=>{function Ont(t){return this.__data__.has(t)}ale.exports=Ont});var T4=L((EVt,cle)=>{var Lnt=typeof global==\"object\"&&global&&global.Object===Object&&global;cle.exports=Lnt});var Pc=L((IVt,ule)=>{var Mnt=T4(),_nt=typeof self==\"object\"&&self&&self.Object===Object&&self,Unt=Mnt||_nt||Function(\"return this\")();ule.exports=Unt});var Yd=L((CVt,fle)=>{var Hnt=Pc(),jnt=Hnt.Symbol;fle.exports=jnt});var gle=L((wVt,hle)=>{var Ale=Yd(),ple=Object.prototype,qnt=ple.hasOwnProperty,Gnt=ple.toString,xB=Ale?Ale.toStringTag:void 0;function Wnt(t){var e=qnt.call(t,xB),r=t[xB];try{t[xB]=void 0;var s=!0}catch{}var a=Gnt.call(t);return s&&(e?t[xB]=r:delete t[xB]),a}hle.exports=Wnt});var mle=L((BVt,dle)=>{var Ynt=Object.prototype,Vnt=Ynt.toString;function Knt(t){return Vnt.call(t)}dle.exports=Knt});var Vd=L((vVt,Ile)=>{var yle=Yd(),Jnt=gle(),znt=mle(),Znt=\"[object Null]\",Xnt=\"[object Undefined]\",Ele=yle?yle.toStringTag:void 0;function $nt(t){return t==null?t===void 0?Xnt:Znt:Ele&&Ele in Object(t)?Jnt(t):znt(t)}Ile.exports=$nt});var Wl=L((SVt,Cle)=>{function eit(t){var e=typeof t;return t!=null&&(e==\"object\"||e==\"function\")}Cle.exports=eit});var Pk=L((DVt,wle)=>{var tit=Vd(),rit=Wl(),nit=\"[object AsyncFunction]\",iit=\"[object Function]\",sit=\"[object GeneratorFunction]\",oit=\"[object Proxy]\";function ait(t){if(!rit(t))return!1;var e=tit(t);return e==iit||e==sit||e==nit||e==oit}wle.exports=ait});var vle=L((bVt,Ble)=>{var lit=Pc(),cit=lit[\"__core-js_shared__\"];Ble.exports=cit});var ble=L((PVt,Dle)=>{var R4=vle(),Sle=function(){var t=/[^.]+$/.exec(R4&&R4.keys&&R4.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}();function uit(t){return!!Sle&&Sle in t}Dle.exports=uit});var F4=L((xVt,Ple)=>{var fit=Function.prototype,Ait=fit.toString;function pit(t){if(t!=null){try{return Ait.call(t)}catch{}try{return t+\"\"}catch{}}return\"\"}Ple.exports=pit});var kle=L((kVt,xle)=>{var hit=Pk(),git=ble(),dit=Wl(),mit=F4(),yit=/[\\\\^$.*+?()[\\]{}|]/g,Eit=/^\\[object .+?Constructor\\]$/,Iit=Function.prototype,Cit=Object.prototype,wit=Iit.toString,Bit=Cit.hasOwnProperty,vit=RegExp(\"^\"+wit.call(Bit).replace(yit,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function Sit(t){if(!dit(t)||git(t))return!1;var e=hit(t)?vit:Eit;return e.test(mit(t))}xle.exports=Sit});var Tle=L((QVt,Qle)=>{function Dit(t,e){return t?.[e]}Qle.exports=Dit});var A0=L((TVt,Rle)=>{var bit=kle(),Pit=Tle();function xit(t,e){var r=Pit(t,e);return bit(r)?r:void 0}Rle.exports=xit});var xk=L((RVt,Fle)=>{var kit=A0(),Qit=Pc(),Tit=kit(Qit,\"Map\");Fle.exports=Tit});var kB=L((FVt,Nle)=>{var Rit=A0(),Fit=Rit(Object,\"create\");Nle.exports=Fit});var Mle=L((NVt,Lle)=>{var Ole=kB();function Nit(){this.__data__=Ole?Ole(null):{},this.size=0}Lle.exports=Nit});var Ule=L((OVt,_le)=>{function Oit(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}_le.exports=Oit});var jle=L((LVt,Hle)=>{var Lit=kB(),Mit=\"__lodash_hash_undefined__\",_it=Object.prototype,Uit=_it.hasOwnProperty;function Hit(t){var e=this.__data__;if(Lit){var r=e[t];return r===Mit?void 0:r}return Uit.call(e,t)?e[t]:void 0}Hle.exports=Hit});var Gle=L((MVt,qle)=>{var jit=kB(),qit=Object.prototype,Git=qit.hasOwnProperty;function Wit(t){var e=this.__data__;return jit?e[t]!==void 0:Git.call(e,t)}qle.exports=Wit});var Yle=L((_Vt,Wle)=>{var Yit=kB(),Vit=\"__lodash_hash_undefined__\";function Kit(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Yit&&e===void 0?Vit:e,this}Wle.exports=Kit});var Kle=L((UVt,Vle)=>{var Jit=Mle(),zit=Ule(),Zit=jle(),Xit=Gle(),$it=Yle();function OE(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var s=t[e];this.set(s[0],s[1])}}OE.prototype.clear=Jit;OE.prototype.delete=zit;OE.prototype.get=Zit;OE.prototype.has=Xit;OE.prototype.set=$it;Vle.exports=OE});var Zle=L((HVt,zle)=>{var Jle=Kle(),est=PB(),tst=xk();function rst(){this.size=0,this.__data__={hash:new Jle,map:new(tst||est),string:new Jle}}zle.exports=rst});var $le=L((jVt,Xle)=>{function nst(t){var e=typeof t;return e==\"string\"||e==\"number\"||e==\"symbol\"||e==\"boolean\"?t!==\"__proto__\":t===null}Xle.exports=nst});var QB=L((qVt,ece)=>{var ist=$le();function sst(t,e){var r=t.__data__;return ist(e)?r[typeof e==\"string\"?\"string\":\"hash\"]:r.map}ece.exports=sst});var rce=L((GVt,tce)=>{var ost=QB();function ast(t){var e=ost(this,t).delete(t);return this.size-=e?1:0,e}tce.exports=ast});var ice=L((WVt,nce)=>{var lst=QB();function cst(t){return lst(this,t).get(t)}nce.exports=cst});var oce=L((YVt,sce)=>{var ust=QB();function fst(t){return ust(this,t).has(t)}sce.exports=fst});var lce=L((VVt,ace)=>{var Ast=QB();function pst(t,e){var r=Ast(this,t),s=r.size;return r.set(t,e),this.size+=r.size==s?0:1,this}ace.exports=pst});var kk=L((KVt,cce)=>{var hst=Zle(),gst=rce(),dst=ice(),mst=oce(),yst=lce();function LE(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var s=t[e];this.set(s[0],s[1])}}LE.prototype.clear=hst;LE.prototype.delete=gst;LE.prototype.get=dst;LE.prototype.has=mst;LE.prototype.set=yst;cce.exports=LE});var fce=L((JVt,uce)=>{var Est=PB(),Ist=xk(),Cst=kk(),wst=200;function Bst(t,e){var r=this.__data__;if(r instanceof Est){var s=r.__data__;if(!Ist||s.length<wst-1)return s.push([t,e]),this.size=++r.size,this;r=this.__data__=new Cst(s)}return r.set(t,e),this.size=r.size,this}uce.exports=Bst});var Qk=L((zVt,Ace)=>{var vst=PB(),Sst=rle(),Dst=ile(),bst=ole(),Pst=lle(),xst=fce();function ME(t){var e=this.__data__=new vst(t);this.size=e.size}ME.prototype.clear=Sst;ME.prototype.delete=Dst;ME.prototype.get=bst;ME.prototype.has=Pst;ME.prototype.set=xst;Ace.exports=ME});var hce=L((ZVt,pce)=>{var kst=\"__lodash_hash_undefined__\";function Qst(t){return this.__data__.set(t,kst),this}pce.exports=Qst});var dce=L((XVt,gce)=>{function Tst(t){return this.__data__.has(t)}gce.exports=Tst});var yce=L(($Vt,mce)=>{var Rst=kk(),Fst=hce(),Nst=dce();function Tk(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Rst;++e<r;)this.add(t[e])}Tk.prototype.add=Tk.prototype.push=Fst;Tk.prototype.has=Nst;mce.exports=Tk});var Ice=L((e7t,Ece)=>{function Ost(t,e){for(var r=-1,s=t==null?0:t.length;++r<s;)if(e(t[r],r,t))return!0;return!1}Ece.exports=Ost});var wce=L((t7t,Cce)=>{function Lst(t,e){return t.has(e)}Cce.exports=Lst});var N4=L((r7t,Bce)=>{var Mst=yce(),_st=Ice(),Ust=wce(),Hst=1,jst=2;function qst(t,e,r,s,a,n){var c=r&Hst,f=t.length,p=e.length;if(f!=p&&!(c&&p>f))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var C=-1,S=!0,P=r&jst?new Mst:void 0;for(n.set(t,e),n.set(e,t);++C<f;){var I=t[C],R=e[C];if(s)var N=c?s(R,I,C,e,t,n):s(I,R,C,t,e,n);if(N!==void 0){if(N)continue;S=!1;break}if(P){if(!_st(e,function(U,W){if(!Ust(P,W)&&(I===U||a(I,U,r,s,n)))return P.push(W)})){S=!1;break}}else if(!(I===R||a(I,R,r,s,n))){S=!1;break}}return n.delete(t),n.delete(e),S}Bce.exports=qst});var O4=L((n7t,vce)=>{var Gst=Pc(),Wst=Gst.Uint8Array;vce.exports=Wst});var Dce=L((i7t,Sce)=>{function Yst(t){var e=-1,r=Array(t.size);return t.forEach(function(s,a){r[++e]=[a,s]}),r}Sce.exports=Yst});var Pce=L((s7t,bce)=>{function Vst(t){var e=-1,r=Array(t.size);return t.forEach(function(s){r[++e]=s}),r}bce.exports=Vst});var Rce=L((o7t,Tce)=>{var xce=Yd(),kce=O4(),Kst=FE(),Jst=N4(),zst=Dce(),Zst=Pce(),Xst=1,$st=2,eot=\"[object Boolean]\",tot=\"[object Date]\",rot=\"[object Error]\",not=\"[object Map]\",iot=\"[object Number]\",sot=\"[object RegExp]\",oot=\"[object Set]\",aot=\"[object String]\",lot=\"[object Symbol]\",cot=\"[object ArrayBuffer]\",uot=\"[object DataView]\",Qce=xce?xce.prototype:void 0,L4=Qce?Qce.valueOf:void 0;function fot(t,e,r,s,a,n,c){switch(r){case uot:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case cot:return!(t.byteLength!=e.byteLength||!n(new kce(t),new kce(e)));case eot:case tot:case iot:return Kst(+t,+e);case rot:return t.name==e.name&&t.message==e.message;case sot:case aot:return t==e+\"\";case not:var f=zst;case oot:var p=s&Xst;if(f||(f=Zst),t.size!=e.size&&!p)return!1;var h=c.get(t);if(h)return h==e;s|=$st,c.set(t,e);var E=Jst(f(t),f(e),s,a,n,c);return c.delete(t),E;case lot:if(L4)return L4.call(t)==L4.call(e)}return!1}Tce.exports=fot});var Rk=L((a7t,Fce)=>{function Aot(t,e){for(var r=-1,s=e.length,a=t.length;++r<s;)t[a+r]=e[r];return t}Fce.exports=Aot});var xc=L((l7t,Nce)=>{var pot=Array.isArray;Nce.exports=pot});var M4=L((c7t,Oce)=>{var hot=Rk(),got=xc();function dot(t,e,r){var s=e(t);return got(t)?s:hot(s,r(t))}Oce.exports=dot});var Mce=L((u7t,Lce)=>{function mot(t,e){for(var r=-1,s=t==null?0:t.length,a=0,n=[];++r<s;){var c=t[r];e(c,r,t)&&(n[a++]=c)}return n}Lce.exports=mot});var _4=L((f7t,_ce)=>{function yot(){return[]}_ce.exports=yot});var Fk=L((A7t,Hce)=>{var Eot=Mce(),Iot=_4(),Cot=Object.prototype,wot=Cot.propertyIsEnumerable,Uce=Object.getOwnPropertySymbols,Bot=Uce?function(t){return t==null?[]:(t=Object(t),Eot(Uce(t),function(e){return wot.call(t,e)}))}:Iot;Hce.exports=Bot});var qce=L((p7t,jce)=>{function vot(t,e){for(var r=-1,s=Array(t);++r<t;)s[r]=e(r);return s}jce.exports=vot});var zf=L((h7t,Gce)=>{function Sot(t){return t!=null&&typeof t==\"object\"}Gce.exports=Sot});var Yce=L((g7t,Wce)=>{var Dot=Vd(),bot=zf(),Pot=\"[object Arguments]\";function xot(t){return bot(t)&&Dot(t)==Pot}Wce.exports=xot});var TB=L((d7t,Jce)=>{var Vce=Yce(),kot=zf(),Kce=Object.prototype,Qot=Kce.hasOwnProperty,Tot=Kce.propertyIsEnumerable,Rot=Vce(function(){return arguments}())?Vce:function(t){return kot(t)&&Qot.call(t,\"callee\")&&!Tot.call(t,\"callee\")};Jce.exports=Rot});var Zce=L((m7t,zce)=>{function Fot(){return!1}zce.exports=Fot});var FB=L((RB,_E)=>{var Not=Pc(),Oot=Zce(),eue=typeof RB==\"object\"&&RB&&!RB.nodeType&&RB,Xce=eue&&typeof _E==\"object\"&&_E&&!_E.nodeType&&_E,Lot=Xce&&Xce.exports===eue,$ce=Lot?Not.Buffer:void 0,Mot=$ce?$ce.isBuffer:void 0,_ot=Mot||Oot;_E.exports=_ot});var NB=L((y7t,tue)=>{var Uot=9007199254740991,Hot=/^(?:0|[1-9]\\d*)$/;function jot(t,e){var r=typeof t;return e=e??Uot,!!e&&(r==\"number\"||r!=\"symbol\"&&Hot.test(t))&&t>-1&&t%1==0&&t<e}tue.exports=jot});var Nk=L((E7t,rue)=>{var qot=9007199254740991;function Got(t){return typeof t==\"number\"&&t>-1&&t%1==0&&t<=qot}rue.exports=Got});var iue=L((I7t,nue)=>{var Wot=Vd(),Yot=Nk(),Vot=zf(),Kot=\"[object Arguments]\",Jot=\"[object Array]\",zot=\"[object Boolean]\",Zot=\"[object Date]\",Xot=\"[object Error]\",$ot=\"[object Function]\",eat=\"[object Map]\",tat=\"[object Number]\",rat=\"[object Object]\",nat=\"[object RegExp]\",iat=\"[object Set]\",sat=\"[object String]\",oat=\"[object WeakMap]\",aat=\"[object ArrayBuffer]\",lat=\"[object DataView]\",cat=\"[object Float32Array]\",uat=\"[object Float64Array]\",fat=\"[object Int8Array]\",Aat=\"[object Int16Array]\",pat=\"[object Int32Array]\",hat=\"[object Uint8Array]\",gat=\"[object Uint8ClampedArray]\",dat=\"[object Uint16Array]\",mat=\"[object Uint32Array]\",Si={};Si[cat]=Si[uat]=Si[fat]=Si[Aat]=Si[pat]=Si[hat]=Si[gat]=Si[dat]=Si[mat]=!0;Si[Kot]=Si[Jot]=Si[aat]=Si[zot]=Si[lat]=Si[Zot]=Si[Xot]=Si[$ot]=Si[eat]=Si[tat]=Si[rat]=Si[nat]=Si[iat]=Si[sat]=Si[oat]=!1;function yat(t){return Vot(t)&&Yot(t.length)&&!!Si[Wot(t)]}nue.exports=yat});var Ok=L((C7t,sue)=>{function Eat(t){return function(e){return t(e)}}sue.exports=Eat});var Lk=L((OB,UE)=>{var Iat=T4(),oue=typeof OB==\"object\"&&OB&&!OB.nodeType&&OB,LB=oue&&typeof UE==\"object\"&&UE&&!UE.nodeType&&UE,Cat=LB&&LB.exports===oue,U4=Cat&&Iat.process,wat=function(){try{var t=LB&&LB.require&&LB.require(\"util\").types;return t||U4&&U4.binding&&U4.binding(\"util\")}catch{}}();UE.exports=wat});var Mk=L((w7t,cue)=>{var Bat=iue(),vat=Ok(),aue=Lk(),lue=aue&&aue.isTypedArray,Sat=lue?vat(lue):Bat;cue.exports=Sat});var H4=L((B7t,uue)=>{var Dat=qce(),bat=TB(),Pat=xc(),xat=FB(),kat=NB(),Qat=Mk(),Tat=Object.prototype,Rat=Tat.hasOwnProperty;function Fat(t,e){var r=Pat(t),s=!r&&bat(t),a=!r&&!s&&xat(t),n=!r&&!s&&!a&&Qat(t),c=r||s||a||n,f=c?Dat(t.length,String):[],p=f.length;for(var h in t)(e||Rat.call(t,h))&&!(c&&(h==\"length\"||a&&(h==\"offset\"||h==\"parent\")||n&&(h==\"buffer\"||h==\"byteLength\"||h==\"byteOffset\")||kat(h,p)))&&f.push(h);return f}uue.exports=Fat});var _k=L((v7t,fue)=>{var Nat=Object.prototype;function Oat(t){var e=t&&t.constructor,r=typeof e==\"function\"&&e.prototype||Nat;return t===r}fue.exports=Oat});var j4=L((S7t,Aue)=>{function Lat(t,e){return function(r){return t(e(r))}}Aue.exports=Lat});var hue=L((D7t,pue)=>{var Mat=j4(),_at=Mat(Object.keys,Object);pue.exports=_at});var due=L((b7t,gue)=>{var Uat=_k(),Hat=hue(),jat=Object.prototype,qat=jat.hasOwnProperty;function Gat(t){if(!Uat(t))return Hat(t);var e=[];for(var r in Object(t))qat.call(t,r)&&r!=\"constructor\"&&e.push(r);return e}gue.exports=Gat});var MB=L((P7t,mue)=>{var Wat=Pk(),Yat=Nk();function Vat(t){return t!=null&&Yat(t.length)&&!Wat(t)}mue.exports=Vat});var Uk=L((x7t,yue)=>{var Kat=H4(),Jat=due(),zat=MB();function Zat(t){return zat(t)?Kat(t):Jat(t)}yue.exports=Zat});var q4=L((k7t,Eue)=>{var Xat=M4(),$at=Fk(),elt=Uk();function tlt(t){return Xat(t,elt,$at)}Eue.exports=tlt});var wue=L((Q7t,Cue)=>{var Iue=q4(),rlt=1,nlt=Object.prototype,ilt=nlt.hasOwnProperty;function slt(t,e,r,s,a,n){var c=r&rlt,f=Iue(t),p=f.length,h=Iue(e),E=h.length;if(p!=E&&!c)return!1;for(var C=p;C--;){var S=f[C];if(!(c?S in e:ilt.call(e,S)))return!1}var P=n.get(t),I=n.get(e);if(P&&I)return P==e&&I==t;var R=!0;n.set(t,e),n.set(e,t);for(var N=c;++C<p;){S=f[C];var U=t[S],W=e[S];if(s)var te=c?s(W,U,S,e,t,n):s(U,W,S,t,e,n);if(!(te===void 0?U===W||a(U,W,r,s,n):te)){R=!1;break}N||(N=S==\"constructor\")}if(R&&!N){var ie=t.constructor,Ae=e.constructor;ie!=Ae&&\"constructor\"in t&&\"constructor\"in e&&!(typeof ie==\"function\"&&ie instanceof ie&&typeof Ae==\"function\"&&Ae instanceof Ae)&&(R=!1)}return n.delete(t),n.delete(e),R}Cue.exports=slt});var vue=L((T7t,Bue)=>{var olt=A0(),alt=Pc(),llt=olt(alt,\"DataView\");Bue.exports=llt});var Due=L((R7t,Sue)=>{var clt=A0(),ult=Pc(),flt=clt(ult,\"Promise\");Sue.exports=flt});var Pue=L((F7t,bue)=>{var Alt=A0(),plt=Pc(),hlt=Alt(plt,\"Set\");bue.exports=hlt});var kue=L((N7t,xue)=>{var glt=A0(),dlt=Pc(),mlt=glt(dlt,\"WeakMap\");xue.exports=mlt});var _B=L((O7t,Lue)=>{var G4=vue(),W4=xk(),Y4=Due(),V4=Pue(),K4=kue(),Oue=Vd(),HE=F4(),Que=\"[object Map]\",ylt=\"[object Object]\",Tue=\"[object Promise]\",Rue=\"[object Set]\",Fue=\"[object WeakMap]\",Nue=\"[object DataView]\",Elt=HE(G4),Ilt=HE(W4),Clt=HE(Y4),wlt=HE(V4),Blt=HE(K4),Kd=Oue;(G4&&Kd(new G4(new ArrayBuffer(1)))!=Nue||W4&&Kd(new W4)!=Que||Y4&&Kd(Y4.resolve())!=Tue||V4&&Kd(new V4)!=Rue||K4&&Kd(new K4)!=Fue)&&(Kd=function(t){var e=Oue(t),r=e==ylt?t.constructor:void 0,s=r?HE(r):\"\";if(s)switch(s){case Elt:return Nue;case Ilt:return Que;case Clt:return Tue;case wlt:return Rue;case Blt:return Fue}return e});Lue.exports=Kd});var Wue=L((L7t,Gue)=>{var J4=Qk(),vlt=N4(),Slt=Rce(),Dlt=wue(),Mue=_B(),_ue=xc(),Uue=FB(),blt=Mk(),Plt=1,Hue=\"[object Arguments]\",jue=\"[object Array]\",Hk=\"[object Object]\",xlt=Object.prototype,que=xlt.hasOwnProperty;function klt(t,e,r,s,a,n){var c=_ue(t),f=_ue(e),p=c?jue:Mue(t),h=f?jue:Mue(e);p=p==Hue?Hk:p,h=h==Hue?Hk:h;var E=p==Hk,C=h==Hk,S=p==h;if(S&&Uue(t)){if(!Uue(e))return!1;c=!0,E=!1}if(S&&!E)return n||(n=new J4),c||blt(t)?vlt(t,e,r,s,a,n):Slt(t,e,p,r,s,a,n);if(!(r&Plt)){var P=E&&que.call(t,\"__wrapped__\"),I=C&&que.call(e,\"__wrapped__\");if(P||I){var R=P?t.value():t,N=I?e.value():e;return n||(n=new J4),a(R,N,r,s,n)}}return S?(n||(n=new J4),Dlt(t,e,r,s,a,n)):!1}Gue.exports=klt});var Jue=L((M7t,Kue)=>{var Qlt=Wue(),Yue=zf();function Vue(t,e,r,s,a){return t===e?!0:t==null||e==null||!Yue(t)&&!Yue(e)?t!==t&&e!==e:Qlt(t,e,r,s,Vue,a)}Kue.exports=Vue});var Zue=L((_7t,zue)=>{var Tlt=Jue();function Rlt(t,e){return Tlt(t,e)}zue.exports=Rlt});var z4=L((U7t,Xue)=>{var Flt=A0(),Nlt=function(){try{var t=Flt(Object,\"defineProperty\");return t({},\"\",{}),t}catch{}}();Xue.exports=Nlt});var jk=L((H7t,efe)=>{var $ue=z4();function Olt(t,e,r){e==\"__proto__\"&&$ue?$ue(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}efe.exports=Olt});var Z4=L((j7t,tfe)=>{var Llt=jk(),Mlt=FE();function _lt(t,e,r){(r!==void 0&&!Mlt(t[e],r)||r===void 0&&!(e in t))&&Llt(t,e,r)}tfe.exports=_lt});var nfe=L((q7t,rfe)=>{function Ult(t){return function(e,r,s){for(var a=-1,n=Object(e),c=s(e),f=c.length;f--;){var p=c[t?f:++a];if(r(n[p],p,n)===!1)break}return e}}rfe.exports=Ult});var sfe=L((G7t,ife)=>{var Hlt=nfe(),jlt=Hlt();ife.exports=jlt});var X4=L((UB,jE)=>{var qlt=Pc(),cfe=typeof UB==\"object\"&&UB&&!UB.nodeType&&UB,ofe=cfe&&typeof jE==\"object\"&&jE&&!jE.nodeType&&jE,Glt=ofe&&ofe.exports===cfe,afe=Glt?qlt.Buffer:void 0,lfe=afe?afe.allocUnsafe:void 0;function Wlt(t,e){if(e)return t.slice();var r=t.length,s=lfe?lfe(r):new t.constructor(r);return t.copy(s),s}jE.exports=Wlt});var qk=L((W7t,ffe)=>{var ufe=O4();function Ylt(t){var e=new t.constructor(t.byteLength);return new ufe(e).set(new ufe(t)),e}ffe.exports=Ylt});var $4=L((Y7t,Afe)=>{var Vlt=qk();function Klt(t,e){var r=e?Vlt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Afe.exports=Klt});var Gk=L((V7t,pfe)=>{function Jlt(t,e){var r=-1,s=t.length;for(e||(e=Array(s));++r<s;)e[r]=t[r];return e}pfe.exports=Jlt});var dfe=L((K7t,gfe)=>{var zlt=Wl(),hfe=Object.create,Zlt=function(){function t(){}return function(e){if(!zlt(e))return{};if(hfe)return hfe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();gfe.exports=Zlt});var Wk=L((J7t,mfe)=>{var Xlt=j4(),$lt=Xlt(Object.getPrototypeOf,Object);mfe.exports=$lt});var e3=L((z7t,yfe)=>{var ect=dfe(),tct=Wk(),rct=_k();function nct(t){return typeof t.constructor==\"function\"&&!rct(t)?ect(tct(t)):{}}yfe.exports=nct});var Ife=L((Z7t,Efe)=>{var ict=MB(),sct=zf();function oct(t){return sct(t)&&ict(t)}Efe.exports=oct});var t3=L((X7t,wfe)=>{var act=Vd(),lct=Wk(),cct=zf(),uct=\"[object Object]\",fct=Function.prototype,Act=Object.prototype,Cfe=fct.toString,pct=Act.hasOwnProperty,hct=Cfe.call(Object);function gct(t){if(!cct(t)||act(t)!=uct)return!1;var e=lct(t);if(e===null)return!0;var r=pct.call(e,\"constructor\")&&e.constructor;return typeof r==\"function\"&&r instanceof r&&Cfe.call(r)==hct}wfe.exports=gct});var r3=L(($7t,Bfe)=>{function dct(t,e){if(!(e===\"constructor\"&&typeof t[e]==\"function\")&&e!=\"__proto__\")return t[e]}Bfe.exports=dct});var Yk=L((eKt,vfe)=>{var mct=jk(),yct=FE(),Ect=Object.prototype,Ict=Ect.hasOwnProperty;function Cct(t,e,r){var s=t[e];(!(Ict.call(t,e)&&yct(s,r))||r===void 0&&!(e in t))&&mct(t,e,r)}vfe.exports=Cct});var Jd=L((tKt,Sfe)=>{var wct=Yk(),Bct=jk();function vct(t,e,r,s){var a=!r;r||(r={});for(var n=-1,c=e.length;++n<c;){var f=e[n],p=s?s(r[f],t[f],f,r,t):void 0;p===void 0&&(p=t[f]),a?Bct(r,f,p):wct(r,f,p)}return r}Sfe.exports=vct});var bfe=L((rKt,Dfe)=>{function Sct(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Dfe.exports=Sct});var xfe=L((nKt,Pfe)=>{var Dct=Wl(),bct=_k(),Pct=bfe(),xct=Object.prototype,kct=xct.hasOwnProperty;function Qct(t){if(!Dct(t))return Pct(t);var e=bct(t),r=[];for(var s in t)s==\"constructor\"&&(e||!kct.call(t,s))||r.push(s);return r}Pfe.exports=Qct});var qE=L((iKt,kfe)=>{var Tct=H4(),Rct=xfe(),Fct=MB();function Nct(t){return Fct(t)?Tct(t,!0):Rct(t)}kfe.exports=Nct});var Tfe=L((sKt,Qfe)=>{var Oct=Jd(),Lct=qE();function Mct(t){return Oct(t,Lct(t))}Qfe.exports=Mct});var Mfe=L((oKt,Lfe)=>{var Rfe=Z4(),_ct=X4(),Uct=$4(),Hct=Gk(),jct=e3(),Ffe=TB(),Nfe=xc(),qct=Ife(),Gct=FB(),Wct=Pk(),Yct=Wl(),Vct=t3(),Kct=Mk(),Ofe=r3(),Jct=Tfe();function zct(t,e,r,s,a,n,c){var f=Ofe(t,r),p=Ofe(e,r),h=c.get(p);if(h){Rfe(t,r,h);return}var E=n?n(f,p,r+\"\",t,e,c):void 0,C=E===void 0;if(C){var S=Nfe(p),P=!S&&Gct(p),I=!S&&!P&&Kct(p);E=p,S||P||I?Nfe(f)?E=f:qct(f)?E=Hct(f):P?(C=!1,E=_ct(p,!0)):I?(C=!1,E=Uct(p,!0)):E=[]:Vct(p)||Ffe(p)?(E=f,Ffe(f)?E=Jct(f):(!Yct(f)||Wct(f))&&(E=jct(p))):C=!1}C&&(c.set(p,E),a(E,p,s,n,c),c.delete(p)),Rfe(t,r,E)}Lfe.exports=zct});var Hfe=L((aKt,Ufe)=>{var Zct=Qk(),Xct=Z4(),$ct=sfe(),eut=Mfe(),tut=Wl(),rut=qE(),nut=r3();function _fe(t,e,r,s,a){t!==e&&$ct(e,function(n,c){if(a||(a=new Zct),tut(n))eut(t,e,c,r,_fe,s,a);else{var f=s?s(nut(t,c),n,c+\"\",t,e,a):void 0;f===void 0&&(f=n),Xct(t,c,f)}},rut)}Ufe.exports=_fe});var n3=L((lKt,jfe)=>{function iut(t){return t}jfe.exports=iut});var Gfe=L((cKt,qfe)=>{function sut(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}qfe.exports=sut});var i3=L((uKt,Yfe)=>{var out=Gfe(),Wfe=Math.max;function aut(t,e,r){return e=Wfe(e===void 0?t.length-1:e,0),function(){for(var s=arguments,a=-1,n=Wfe(s.length-e,0),c=Array(n);++a<n;)c[a]=s[e+a];a=-1;for(var f=Array(e+1);++a<e;)f[a]=s[a];return f[e]=r(c),out(t,this,f)}}Yfe.exports=aut});var Kfe=L((fKt,Vfe)=>{function lut(t){return function(){return t}}Vfe.exports=lut});var Zfe=L((AKt,zfe)=>{var cut=Kfe(),Jfe=z4(),uut=n3(),fut=Jfe?function(t,e){return Jfe(t,\"toString\",{configurable:!0,enumerable:!1,value:cut(e),writable:!0})}:uut;zfe.exports=fut});var $fe=L((pKt,Xfe)=>{var Aut=800,put=16,hut=Date.now;function gut(t){var e=0,r=0;return function(){var s=hut(),a=put-(s-r);if(r=s,a>0){if(++e>=Aut)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Xfe.exports=gut});var s3=L((hKt,eAe)=>{var dut=Zfe(),mut=$fe(),yut=mut(dut);eAe.exports=yut});var rAe=L((gKt,tAe)=>{var Eut=n3(),Iut=i3(),Cut=s3();function wut(t,e){return Cut(Iut(t,e,Eut),t+\"\")}tAe.exports=wut});var iAe=L((dKt,nAe)=>{var But=FE(),vut=MB(),Sut=NB(),Dut=Wl();function but(t,e,r){if(!Dut(r))return!1;var s=typeof e;return(s==\"number\"?vut(r)&&Sut(e,r.length):s==\"string\"&&e in r)?But(r[e],t):!1}nAe.exports=but});var oAe=L((mKt,sAe)=>{var Put=rAe(),xut=iAe();function kut(t){return Put(function(e,r){var s=-1,a=r.length,n=a>1?r[a-1]:void 0,c=a>2?r[2]:void 0;for(n=t.length>3&&typeof n==\"function\"?(a--,n):void 0,c&&xut(r[0],r[1],c)&&(n=a<3?void 0:n,a=1),e=Object(e);++s<a;){var f=r[s];f&&t(e,f,s,n)}return e})}sAe.exports=kut});var lAe=L((yKt,aAe)=>{var Qut=Hfe(),Tut=oAe(),Rut=Tut(function(t,e,r,s){Qut(t,e,r,s)});aAe.exports=Rut});var je={};Vt(je,{AsyncActions:()=>l3,BufferStream:()=>a3,CachingStrategy:()=>IAe,DefaultStream:()=>c3,allSettledSafe:()=>Uu,assertNever:()=>f3,bufferStream:()=>WE,buildIgnorePattern:()=>Uut,convertMapsToIndexableObjects:()=>Kk,dynamicRequire:()=>kp,escapeRegExp:()=>Nut,getArrayWithDefault:()=>jB,getFactoryWithDefault:()=>Vl,getMapWithDefault:()=>A3,getSetWithDefault:()=>xp,groupBy:()=>qut,isIndexableObject:()=>o3,isPathLike:()=>Hut,isTaggedYarnVersion:()=>Fut,makeDeferred:()=>mAe,mapAndFilter:()=>Yl,mapAndFind:()=>p0,mergeIntoTarget:()=>wAe,overrideType:()=>Out,parseBoolean:()=>qB,parseInt:()=>YE,parseOptionalBoolean:()=>CAe,plural:()=>Vk,prettifyAsyncErrors:()=>GE,prettifySyncErrors:()=>p3,releaseAfterUseAsync:()=>Mut,replaceEnvVariables:()=>Jk,sortMap:()=>Ws,toMerged:()=>jut,tryParseOptionalBoolean:()=>h3,validateEnum:()=>Lut});function Fut(t){return!!(hAe.default.valid(t)&&t.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function Vk(t,{one:e,more:r,zero:s=r}){return t===0?s:t===1?e:r}function Nut(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function Out(t){}function f3(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function Lut(t,e){let r=Object.values(t);if(!r.includes(e))throw new nt(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(s=>JSON.stringify(s)).join(\", \")})`);return e}function Yl(t,e){let r=[];for(let s of t){let a=e(s);a!==gAe&&r.push(a)}return r}function p0(t,e){for(let r of t){let s=e(r);if(s!==dAe)return s}}function o3(t){return typeof t==\"object\"&&t!==null}async function Uu(t){let e=await Promise.allSettled(t),r=[];for(let s of e){if(s.status===\"rejected\")throw s.reason;r.push(s.value)}return r}function Kk(t){if(t instanceof Map&&(t=Object.fromEntries(t)),o3(t))for(let e of Object.keys(t)){let r=t[e];o3(r)&&(t[e]=Kk(r))}return t}function Vl(t,e,r){let s=t.get(e);return typeof s>\"u\"&&t.set(e,s=r()),s}function jB(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=[]),r}function xp(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Set),r}function A3(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Map),r}async function Mut(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function GE(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function p3(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function WE(t){return await new Promise((e,r)=>{let s=[];t.on(\"error\",a=>{r(a)}),t.on(\"data\",a=>{s.push(a)}),t.on(\"end\",()=>{e(Buffer.concat(s))})})}function mAe(){let t,e;return{promise:new Promise((s,a)=>{t=s,e=a}),resolve:t,reject:e}}function yAe(t){return HB(ue.fromPortablePath(t))}function EAe(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=HB.cache[physicalPath];delete HB.cache[physicalPath];let result;try{result=yAe(physicalPath);let freshCacheEntry=HB.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{HB.cache[physicalPath]=currentCacheEntry}return result}function _ut(t){let e=cAe.get(t),r=le.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let s=EAe(t);return cAe.set(t,{mtime:r.mtimeMs,instance:s}),s}function kp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return EAe(t);case 1:return _ut(t);case 2:return yAe(t);default:throw new Error(\"Unsupported caching strategy\")}}function Ws(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]<f[c]?-1:f[n]>f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function Uut(t){return t.length===0?null:t.map(e=>`(${AAe.default.makeRe(e,{windows:!1,dot:!0}).source})`).join(\"|\")}function Jk(t,{env:e}){let r=/\\${(?<variableName>[\\d\\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...s)=>{let{variableName:a,colon:n,fallback:c}=s[s.length-1],f=Object.hasOwn(e,a),p=e[a];if(p||f&&!n)return p;if(c!=null)return c;throw new nt(`Environment variable not found (${a})`)})}function qB(t){switch(t){case\"true\":case\"1\":case 1:case!0:return!0;case\"false\":case\"0\":case 0:case!1:return!1;default:throw new Error(`Couldn't parse \"${t}\" as a boolean`)}}function CAe(t){return typeof t>\"u\"?t:qB(t)}function h3(t){try{return CAe(t)}catch{return null}}function Hut(t){return!!(ue.isAbsolute(t)||t.match(/^(\\.{1,2}|~)\\//))}function wAe(t,...e){let r=c=>({value:c}),s=r(t),a=e.map(c=>r(c)),{value:n}=(0,fAe.default)(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>(0,uAe.default)(h,p))||c.push(p);return c}});return n}function jut(...t){return wAe({},...t)}function qut(t,e){let r=Object.create(null);for(let s of t){let a=s[e];r[a]??=[],r[a].push(s)}return r}function YE(t){return typeof t==\"string\"?Number.parseInt(t,10):t}var uAe,fAe,AAe,pAe,hAe,u3,gAe,dAe,a3,l3,c3,HB,cAe,IAe,kc=It(()=>{bt();Wt();uAe=et(Zue()),fAe=et(lAe()),AAe=et(Sa()),pAe=et(Md()),hAe=et(fi()),u3=ye(\"stream\");gAe=Symbol();Yl.skip=gAe;dAe=Symbol();p0.skip=dAe;a3=class extends u3.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: BufferStream only accept buffers\");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};l3=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,pAe.default)(e)}set(e,r){let s=this.deferred.get(e);typeof s>\"u\"&&this.deferred.set(e,s=mAe());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&s.resolve()},n=>{this.promises.get(e)===a&&s.reject(n)}),s.promise}reduce(e,r){let s=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},c3=class extends u3.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: DefaultStream only accept buffers\");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},HB=eval(\"require\");cAe=new Map;IAe=(s=>(s[s.NoCache=0]=\"NoCache\",s[s.FsTime=1]=\"FsTime\",s[s.Node=2]=\"Node\",s))(IAe||{})});var VE,g3,d3,BAe=It(()=>{VE=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(VE||{}),g3=(s=>(s.Dependency=\"Dependency\",s.PeerDependency=\"PeerDependency\",s.PeerDependencyMeta=\"PeerDependencyMeta\",s))(g3||{}),d3=(s=>(s.Inactive=\"inactive\",s.Redundant=\"redundant\",s.Active=\"active\",s))(d3||{})});var he={};Vt(he,{LogLevel:()=>eQ,Style:()=>Zk,Type:()=>Ct,addLogFilterSupport:()=>YB,applyColor:()=>po,applyHyperlink:()=>JE,applyStyle:()=>zd,json:()=>Zd,jsonOrPretty:()=>Yut,mark:()=>C3,pretty:()=>Ut,prettyField:()=>Zf,prettyList:()=>I3,prettyTruncatedLocatorList:()=>$k,stripAnsi:()=>KE.default,supportsColor:()=>Xk,supportsHyperlinks:()=>E3,tuple:()=>Hu});function vAe(t){let e=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let s=1024**r;return`${Math.floor(t*100/s)/100} ${e[r-1]}`}function Hu(t,e){return[e,t]}function zd(t,e,r){return t.get(\"enableColors\")&&r&2&&(e=WB.default.bold(e)),e}function po(t,e,r){if(!t.get(\"enableColors\"))return e;let s=Gut.get(r);if(s===null)return e;let a=typeof s>\"u\"?r:y3.level>=3?s[0]:s[1],n=typeof a==\"number\"?m3.ansi256(a):a.startsWith(\"#\")?m3.hex(a):m3[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(e)}function JE(t,e,r){return t.get(\"enableHyperlinks\")?Wut?`\\x1B]8;;${r}\\x1B\\\\${e}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${e}\\x1B]8;;\\x07`:e}function Ut(t,e,r){if(e===null)return po(t,\"null\",Ct.NULL);if(Object.hasOwn(zk,r))return zk[r].pretty(t,e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return po(t,e,r)}function I3(t,e,r,{separator:s=\", \"}={}){return[...e].map(a=>Ut(t,a,r)).join(s)}function Zd(t,e){if(t===null)return null;if(Object.hasOwn(zk,e))return zk[e].json(t);if(typeof t!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function Yut(t,e,[r,s]){return t?Zd(r,s):Ut(e,r,s)}function C3(t){return{Check:po(t,\"\\u2713\",\"green\"),Cross:po(t,\"\\u2718\",\"red\"),Question:po(t,\"?\",\"cyan\")}}function Zf(t,{label:e,value:[r,s]}){return`${Ut(t,e,Ct.CODE)}: ${Ut(t,r,s)}`}function $k(t,e,r){let s=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${Yr(t,h)}, `,C=w3(h).length+2;if(s.length>0&&n<C)break;s.push([E,C]),n-=C,a.shift()}if(a.length===0)return s.map(([h])=>h).join(\"\").slice(0,-2);let c=\"X\".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&n<f.length;)n+=s[s.length-1][1],p+=1,s.pop();return[s.map(([h])=>h).join(\"\"),f.replace(c,Ut(t,p,Ct.NUMBER))].join(\"\")}function YB(t,{configuration:e}){let r=e.get(\"logFilters\"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get(\"level\");if(typeof S>\"u\")continue;let P=C.get(\"code\");typeof P<\"u\"&&s.set(P,S);let I=C.get(\"text\");typeof I<\"u\"&&a.set(I,S);let R=C.get(\"pattern\");typeof R<\"u\"&&n.push([SAe.default.matcher(R,{contains:!0}),S])}n.reverse();let c=(C,S,P)=>{if(C===null||C===0)return P;let I=a.size>0||n.length>0?(0,KE.default)(S):S;if(a.size>0){let R=a.get(I);if(typeof R<\"u\")return R??P}if(n.length>0){for(let[R,N]of n)if(R(I))return N??P}if(s.size>0){let R=s.get(Vf(C));if(typeof R<\"u\")return R??P}return P},f=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(C,S,P,I){switch(c(S,P,I)){case\"info\":f.call(C,S,P);break;case\"warning\":p.call(C,S??0,P);break;case\"error\":h.call(C,S??0,P);break}};t.reportInfo=function(...C){return E(this,...C,\"info\")},t.reportWarning=function(...C){return E(this,...C,\"warning\")},t.reportError=function(...C){return E(this,...C,\"error\")}}var WB,GB,SAe,KE,DAe,Ct,Zk,y3,Xk,E3,m3,Gut,Wo,zk,Wut,eQ,Qc=It(()=>{bt();WB=et(g4()),GB=et(Nd());Wt();SAe=et(Sa()),KE=et(bk()),DAe=ye(\"util\");nk();Yo();Ct={NO_HINT:\"NO_HINT\",ID:\"ID\",NULL:\"NULL\",SCOPE:\"SCOPE\",NAME:\"NAME\",RANGE:\"RANGE\",REFERENCE:\"REFERENCE\",NUMBER:\"NUMBER\",PATH:\"PATH\",URL:\"URL\",ADDED:\"ADDED\",REMOVED:\"REMOVED\",CODE:\"CODE\",INSPECT:\"INSPECT\",DURATION:\"DURATION\",SIZE:\"SIZE\",SIZE_DIFF:\"SIZE_DIFF\",IDENT:\"IDENT\",DESCRIPTOR:\"DESCRIPTOR\",LOCATOR:\"LOCATOR\",RESOLUTION:\"RESOLUTION\",DEPENDENT:\"DEPENDENT\",PACKAGE_EXTENSION:\"PACKAGE_EXTENSION\",SETTING:\"SETTING\",MARKDOWN:\"MARKDOWN\",MARKDOWN_INLINE:\"MARKDOWN_INLINE\"},Zk=(e=>(e[e.BOLD=2]=\"BOLD\",e))(Zk||{}),y3=GB.default.GITHUB_ACTIONS?{level:2}:WB.default.supportsColor?{level:WB.default.supportsColor.level}:{level:0},Xk=y3.level!==0,E3=Xk&&!GB.default.GITHUB_ACTIONS&&!GB.default.CIRCLE&&!GB.default.GITLAB,m3=new WB.default.Instance(y3),Gut=new Map([[Ct.NO_HINT,null],[Ct.NULL,[\"#a853b5\",129]],[Ct.SCOPE,[\"#d75f00\",166]],[Ct.NAME,[\"#d7875f\",173]],[Ct.RANGE,[\"#00afaf\",37]],[Ct.REFERENCE,[\"#87afff\",111]],[Ct.NUMBER,[\"#ffd700\",220]],[Ct.PATH,[\"#d75fd7\",170]],[Ct.URL,[\"#d75fd7\",170]],[Ct.ADDED,[\"#5faf00\",70]],[Ct.REMOVED,[\"#ff3131\",160]],[Ct.CODE,[\"#87afff\",111]],[Ct.SIZE,[\"#ffd700\",220]]]),Wo=t=>t;zk={[Ct.ID]:Wo({pretty:(t,e)=>typeof e==\"number\"?po(t,`${e}`,Ct.NUMBER):po(t,e,Ct.CODE),json:t=>t}),[Ct.INSPECT]:Wo({pretty:(t,e)=>(0,DAe.inspect)(e,{depth:1/0,colors:t.get(\"enableColors\"),compact:!0,breakLength:1/0}),json:t=>t}),[Ct.NUMBER]:Wo({pretty:(t,e)=>po(t,`${e}`,Ct.NUMBER),json:t=>t}),[Ct.IDENT]:Wo({pretty:(t,e)=>$i(t,e),json:t=>cn(t)}),[Ct.LOCATOR]:Wo({pretty:(t,e)=>Yr(t,e),json:t=>cl(t)}),[Ct.DESCRIPTOR]:Wo({pretty:(t,e)=>ri(t,e),json:t=>ll(t)}),[Ct.RESOLUTION]:Wo({pretty:(t,{descriptor:e,locator:r})=>VB(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:ll(t),locator:e!==null?cl(e):null})}),[Ct.DEPENDENT]:Wo({pretty:(t,{locator:e,descriptor:r})=>B3(t,e,r),json:({locator:t,descriptor:e})=>({locator:cl(t),descriptor:ll(e)})}),[Ct.PACKAGE_EXTENSION]:Wo({pretty:(t,e)=>{switch(e.type){case\"Dependency\":return`${$i(t,e.parentDescriptor)} \\u27A4 ${po(t,\"dependencies\",Ct.CODE)} \\u27A4 ${$i(t,e.descriptor)}`;case\"PeerDependency\":return`${$i(t,e.parentDescriptor)} \\u27A4 ${po(t,\"peerDependencies\",Ct.CODE)} \\u27A4 ${$i(t,e.descriptor)}`;case\"PeerDependencyMeta\":return`${$i(t,e.parentDescriptor)} \\u27A4 ${po(t,\"peerDependenciesMeta\",Ct.CODE)} \\u27A4 ${$i(t,Da(e.selector))} \\u27A4 ${po(t,e.key,Ct.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case\"Dependency\":return`${cn(t.parentDescriptor)} > ${cn(t.descriptor)}`;case\"PeerDependency\":return`${cn(t.parentDescriptor)} >> ${cn(t.descriptor)}`;case\"PeerDependencyMeta\":return`${cn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Ct.SETTING]:Wo({pretty:(t,e)=>(t.get(e),JE(t,po(t,e,Ct.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Ct.DURATION]:Wo({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),s=Math.ceil((e-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(e/1e3),s=e-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:t=>t}),[Ct.SIZE]:Wo({pretty:(t,e)=>po(t,vAe(e),Ct.NUMBER),json:t=>t}),[Ct.SIZE_DIFF]:Wo({pretty:(t,e)=>{let r=e>=0?\"+\":\"-\",s=r===\"+\"?Ct.REMOVED:Ct.ADDED;return po(t,`${r} ${vAe(Math.max(Math.abs(e),1))}`,s)},json:t=>t}),[Ct.PATH]:Wo({pretty:(t,e)=>po(t,ue.fromPortablePath(e),Ct.PATH),json:t=>ue.fromPortablePath(t)}),[Ct.MARKDOWN]:Wo({pretty:(t,{text:e,format:r,paragraphs:s})=>qo(e,{format:r,paragraphs:s}),json:({text:t})=>t}),[Ct.MARKDOWN_INLINE]:Wo({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,s,a)=>Ut(t,s+a+s,Ct.CODE)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,s,a)=>zd(t,a,2)),e),json:t=>t})};Wut=!!process.env.KONSOLE_VERSION;eQ=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))(eQ||{})});var bAe=L(zE=>{\"use strict\";Object.defineProperty(zE,\"__esModule\",{value:!0});zE.splitWhen=zE.flatten=void 0;function Vut(t){return t.reduce((e,r)=>[].concat(e,r),[])}zE.flatten=Vut;function Kut(t,e){let r=[[]],s=0;for(let a of t)e(a)?(s++,r[s]=[]):r[s].push(a);return r}zE.splitWhen=Kut});var PAe=L(tQ=>{\"use strict\";Object.defineProperty(tQ,\"__esModule\",{value:!0});tQ.isEnoentCodeError=void 0;function Jut(t){return t.code===\"ENOENT\"}tQ.isEnoentCodeError=Jut});var xAe=L(rQ=>{\"use strict\";Object.defineProperty(rQ,\"__esModule\",{value:!0});rQ.createDirentFromStats=void 0;var v3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function zut(t,e){return new v3(t,e)}rQ.createDirentFromStats=zut});var RAe=L(cs=>{\"use strict\";Object.defineProperty(cs,\"__esModule\",{value:!0});cs.convertPosixPathToPattern=cs.convertWindowsPathToPattern=cs.convertPathToPattern=cs.escapePosixPath=cs.escapeWindowsPath=cs.escape=cs.removeLeadingDotSegment=cs.makeAbsolute=cs.unixify=void 0;var Zut=ye(\"os\"),Xut=ye(\"path\"),kAe=Zut.platform()===\"win32\",$ut=2,eft=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\()|\\\\(?![!()*+?@[\\]{|}]))/g,tft=/(\\\\?)([()[\\]{}]|^!|[!+@](?=\\())/g,rft=/^\\\\\\\\([.?])/,nft=/\\\\(?![!()+@[\\]{}])/g;function ift(t){return t.replace(/\\\\/g,\"/\")}cs.unixify=ift;function sft(t,e){return Xut.resolve(t,e)}cs.makeAbsolute=sft;function oft(t){if(t.charAt(0)===\".\"){let e=t.charAt(1);if(e===\"/\"||e===\"\\\\\")return t.slice($ut)}return t}cs.removeLeadingDotSegment=oft;cs.escape=kAe?S3:D3;function S3(t){return t.replace(tft,\"\\\\$2\")}cs.escapeWindowsPath=S3;function D3(t){return t.replace(eft,\"\\\\$2\")}cs.escapePosixPath=D3;cs.convertPathToPattern=kAe?QAe:TAe;function QAe(t){return S3(t).replace(rft,\"//$1\").replace(nft,\"/\")}cs.convertWindowsPathToPattern=QAe;function TAe(t){return D3(t)}cs.convertPosixPathToPattern=TAe});var NAe=L((RKt,FAe)=>{FAe.exports=function(e){if(typeof e!=\"string\"||e===\"\")return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var MAe=L((FKt,LAe)=>{var aft=NAe(),OAe={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},lft=function(t){if(t[0]===\"!\")return!0;for(var e=0,r=-2,s=-2,a=-2,n=-2,c=-2;e<t.length;){if(t[e]===\"*\"||t[e+1]===\"?\"&&/[\\].+)]/.test(t[e])||s!==-1&&t[e]===\"[\"&&t[e+1]!==\"]\"&&(s<e&&(s=t.indexOf(\"]\",e)),s>e&&(c===-1||c>s||(c=t.indexOf(\"\\\\\",e),c===-1||c>s)))||a!==-1&&t[e]===\"{\"&&t[e+1]!==\"}\"&&(a=t.indexOf(\"}\",e),a>e&&(c=t.indexOf(\"\\\\\",e),c===-1||c>a))||n!==-1&&t[e]===\"(\"&&t[e+1]===\"?\"&&/[:!=]/.test(t[e+2])&&t[e+3]!==\")\"&&(n=t.indexOf(\")\",e),n>e&&(c=t.indexOf(\"\\\\\",e),c===-1||c>n))||r!==-1&&t[e]===\"(\"&&t[e+1]!==\"|\"&&(r<e&&(r=t.indexOf(\"|\",e)),r!==-1&&t[r+1]!==\")\"&&(n=t.indexOf(\")\",r),n>r&&(c=t.indexOf(\"\\\\\",r),c===-1||c>n))))return!0;if(t[e]===\"\\\\\"){var f=t[e+1];e+=2;var p=OAe[f];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]===\"!\")return!0}else e++}return!1},cft=function(t){if(t[0]===\"!\")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\\]]/.test(t[e]))return!0;if(t[e]===\"\\\\\"){var r=t[e+1];e+=2;var s=OAe[r];if(s){var a=t.indexOf(s,e);a!==-1&&(e=a+1)}if(t[e]===\"!\")return!0}else e++}return!1};LAe.exports=function(e,r){if(typeof e!=\"string\"||e===\"\")return!1;if(aft(e))return!0;var s=lft;return r&&r.strict===!1&&(s=cft),s(e)}});var UAe=L((NKt,_Ae)=>{\"use strict\";var uft=MAe(),fft=ye(\"path\").posix.dirname,Aft=ye(\"os\").platform()===\"win32\",b3=\"/\",pft=/\\\\/g,hft=/[\\{\\[].*[\\}\\]]$/,gft=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,dft=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;_Ae.exports=function(e,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&Aft&&e.indexOf(b3)<0&&(e=e.replace(pft,b3)),hft.test(e)&&(e+=b3),e+=\"a\";do e=fft(e);while(uft(e)||gft.test(e));return e.replace(dft,\"$1\")}});var KAe=L(jr=>{\"use strict\";Object.defineProperty(jr,\"__esModule\",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var mft=ye(\"path\"),yft=UAe(),P3=Sa(),HAe=\"**\",Eft=\"\\\\\",Ift=/[*?]|^!/,Cft=/\\[[^[]*]/,wft=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,Bft=/[!*+?@]\\([^(]*\\)/,vft=/,|\\.\\./,Sft=/(?!^)\\/{2,}/g;function jAe(t,e={}){return!qAe(t,e)}jr.isStaticPattern=jAe;function qAe(t,e={}){return t===\"\"?!1:!!(e.caseSensitiveMatch===!1||t.includes(Eft)||Ift.test(t)||Cft.test(t)||wft.test(t)||e.extglob!==!1&&Bft.test(t)||e.braceExpansion!==!1&&Dft(t))}jr.isDynamicPattern=qAe;function Dft(t){let e=t.indexOf(\"{\");if(e===-1)return!1;let r=t.indexOf(\"}\",e+1);if(r===-1)return!1;let s=t.slice(e,r);return vft.test(s)}function bft(t){return nQ(t)?t.slice(1):t}jr.convertToPositivePattern=bft;function Pft(t){return\"!\"+t}jr.convertToNegativePattern=Pft;function nQ(t){return t.startsWith(\"!\")&&t[1]!==\"(\"}jr.isNegativePattern=nQ;function GAe(t){return!nQ(t)}jr.isPositivePattern=GAe;function xft(t){return t.filter(nQ)}jr.getNegativePatterns=xft;function kft(t){return t.filter(GAe)}jr.getPositivePatterns=kft;function Qft(t){return t.filter(e=>!x3(e))}jr.getPatternsInsideCurrentDirectory=Qft;function Tft(t){return t.filter(x3)}jr.getPatternsOutsideCurrentDirectory=Tft;function x3(t){return t.startsWith(\"..\")||t.startsWith(\"./..\")}jr.isPatternRelatedToParentDirectory=x3;function Rft(t){return yft(t,{flipBackslashes:!1})}jr.getBaseDirectory=Rft;function Fft(t){return t.includes(HAe)}jr.hasGlobStar=Fft;function WAe(t){return t.endsWith(\"/\"+HAe)}jr.endsWithSlashGlobStar=WAe;function Nft(t){let e=mft.basename(t);return WAe(t)||jAe(e)}jr.isAffectDepthOfReadingPattern=Nft;function Oft(t){return t.reduce((e,r)=>e.concat(YAe(r)),[])}jr.expandPatternsWithBraceExpansion=Oft;function YAe(t){let e=P3.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,s)=>r.length-s.length),e.filter(r=>r!==\"\")}jr.expandBraceExpansion=YAe;function Lft(t,e){let{parts:r}=P3.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith(\"/\")&&(r[0]=r[0].slice(1),r.unshift(\"\")),r}jr.getPatternParts=Lft;function VAe(t,e){return P3.makeRe(t,e)}jr.makeRe=VAe;function Mft(t,e){return t.map(r=>VAe(r,e))}jr.convertPatternsToRe=Mft;function _ft(t,e){return e.some(r=>r.test(t))}jr.matchAny=_ft;function Uft(t){return t.replace(Sft,\"/\")}jr.removeDuplicateSlashes=Uft});var XAe=L((LKt,ZAe)=>{\"use strict\";var Hft=ye(\"stream\"),JAe=Hft.PassThrough,jft=Array.prototype.slice;ZAe.exports=qft;function qft(){let t=[],e=jft.call(arguments),r=!1,s=e[e.length-1];s&&!Array.isArray(s)&&s.pipe==null?e.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=JAe(s);function f(){for(let E=0,C=arguments.length;E<C;E++)t.push(zAe(arguments[E],s));return p(),this}function p(){if(r)return;r=!0;let E=t.shift();if(!E){process.nextTick(h);return}Array.isArray(E)||(E=[E]);let C=E.length+1;function S(){--C>0||(r=!1,p())}function P(I){function R(){I.removeListener(\"merge2UnpipeEnd\",R),I.removeListener(\"end\",R),n&&I.removeListener(\"error\",N),S()}function N(U){c.emit(\"error\",U)}if(I._readableState.endEmitted)return S();I.on(\"merge2UnpipeEnd\",R),I.on(\"end\",R),n&&I.on(\"error\",N),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I<E.length;I++)P(E[I]);S()}function h(){r=!1,c.emit(\"queueDrain\"),a&&c.end()}return c.setMaxListeners(0),c.add=f,c.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),e.length&&f.apply(null,e),c}function zAe(t,e){if(Array.isArray(t))for(let r=0,s=t.length;r<s;r++)t[r]=zAe(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(JAe(e))),!t._readableState||!t.pause||!t.pipe)throw new Error(\"Only readable stream can be merged.\");t.pause()}return t}});var epe=L(iQ=>{\"use strict\";Object.defineProperty(iQ,\"__esModule\",{value:!0});iQ.merge=void 0;var Gft=XAe();function Wft(t){let e=Gft(t);return t.forEach(r=>{r.once(\"error\",s=>e.emit(\"error\",s))}),e.once(\"close\",()=>$Ae(t)),e.once(\"end\",()=>$Ae(t)),e}iQ.merge=Wft;function $Ae(t){t.forEach(e=>e.emit(\"close\"))}});var tpe=L(ZE=>{\"use strict\";Object.defineProperty(ZE,\"__esModule\",{value:!0});ZE.isEmpty=ZE.isString=void 0;function Yft(t){return typeof t==\"string\"}ZE.isString=Yft;function Vft(t){return t===\"\"}ZE.isEmpty=Vft});var Qp=L(Vo=>{\"use strict\";Object.defineProperty(Vo,\"__esModule\",{value:!0});Vo.string=Vo.stream=Vo.pattern=Vo.path=Vo.fs=Vo.errno=Vo.array=void 0;var Kft=bAe();Vo.array=Kft;var Jft=PAe();Vo.errno=Jft;var zft=xAe();Vo.fs=zft;var Zft=RAe();Vo.path=Zft;var Xft=KAe();Vo.pattern=Xft;var $ft=epe();Vo.stream=$ft;var eAt=tpe();Vo.string=eAt});var spe=L(Ko=>{\"use strict\";Object.defineProperty(Ko,\"__esModule\",{value:!0});Ko.convertPatternGroupToTask=Ko.convertPatternGroupsToTasks=Ko.groupPatternsByBaseDirectory=Ko.getNegativePatternsAsPositive=Ko.getPositivePatterns=Ko.convertPatternsToTasks=Ko.generate=void 0;var ju=Qp();function tAt(t,e){let r=rpe(t,e),s=rpe(e.ignore,e),a=npe(r),n=ipe(r,s),c=a.filter(E=>ju.pattern.isStaticPattern(E,e)),f=a.filter(E=>ju.pattern.isDynamicPattern(E,e)),p=k3(c,n,!1),h=k3(f,n,!0);return p.concat(h)}Ko.generate=tAt;function rpe(t,e){let r=t;return e.braceExpansion&&(r=ju.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(s=>s.includes(\"/\")?s:`**/${s}`)),r.map(s=>ju.pattern.removeDuplicateSlashes(s))}function k3(t,e,r){let s=[],a=ju.pattern.getPatternsOutsideCurrentDirectory(t),n=ju.pattern.getPatternsInsideCurrentDirectory(t),c=Q3(a),f=Q3(n);return s.push(...T3(c,e,r)),\".\"in f?s.push(R3(\".\",n,e,r)):s.push(...T3(f,e,r)),s}Ko.convertPatternsToTasks=k3;function npe(t){return ju.pattern.getPositivePatterns(t)}Ko.getPositivePatterns=npe;function ipe(t,e){return ju.pattern.getNegativePatterns(t).concat(e).map(ju.pattern.convertToPositivePattern)}Ko.getNegativePatternsAsPositive=ipe;function Q3(t){let e={};return t.reduce((r,s)=>{let a=ju.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},e)}Ko.groupPatternsByBaseDirectory=Q3;function T3(t,e,r){return Object.keys(t).map(s=>R3(s,t[s],e,r))}Ko.convertPatternGroupsToTasks=T3;function R3(t,e,r,s){return{dynamic:s,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(ju.pattern.convertToNegativePattern))}}Ko.convertPatternGroupToTask=R3});var ape=L(sQ=>{\"use strict\";Object.defineProperty(sQ,\"__esModule\",{value:!0});sQ.read=void 0;function rAt(t,e,r){e.fs.lstat(t,(s,a)=>{if(s!==null){ope(r,s);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){F3(r,a);return}e.fs.stat(t,(n,c)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){ope(r,n);return}F3(r,a);return}e.markSymbolicLink&&(c.isSymbolicLink=()=>!0),F3(r,c)})})}sQ.read=rAt;function ope(t,e){t(e)}function F3(t,e){t(null,e)}});var lpe=L(oQ=>{\"use strict\";Object.defineProperty(oQ,\"__esModule\",{value:!0});oQ.read=void 0;function nAt(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let s=e.fs.statSync(t);return e.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw s}}oQ.read=nAt});var cpe=L(h0=>{\"use strict\";Object.defineProperty(h0,\"__esModule\",{value:!0});h0.createFileSystemAdapter=h0.FILE_SYSTEM_ADAPTER=void 0;var aQ=ye(\"fs\");h0.FILE_SYSTEM_ADAPTER={lstat:aQ.lstat,stat:aQ.stat,lstatSync:aQ.lstatSync,statSync:aQ.statSync};function iAt(t){return t===void 0?h0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},h0.FILE_SYSTEM_ADAPTER),t)}h0.createFileSystemAdapter=iAt});var upe=L(O3=>{\"use strict\";Object.defineProperty(O3,\"__esModule\",{value:!0});var sAt=cpe(),N3=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=sAt.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};O3.default=N3});var Xd=L(g0=>{\"use strict\";Object.defineProperty(g0,\"__esModule\",{value:!0});g0.statSync=g0.stat=g0.Settings=void 0;var fpe=ape(),oAt=lpe(),L3=upe();g0.Settings=L3.default;function aAt(t,e,r){if(typeof e==\"function\"){fpe.read(t,M3(),e);return}fpe.read(t,M3(e),r)}g0.stat=aAt;function lAt(t,e){let r=M3(e);return oAt.read(t,r)}g0.statSync=lAt;function M3(t={}){return t instanceof L3.default?t:new L3.default(t)}});var hpe=L((VKt,ppe)=>{var Ape;ppe.exports=typeof queueMicrotask==\"function\"?queueMicrotask.bind(typeof window<\"u\"?window:global):t=>(Ape||(Ape=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var dpe=L((KKt,gpe)=>{gpe.exports=uAt;var cAt=hpe();function uAt(t,e){let r,s,a,n=!0;Array.isArray(t)?(r=[],s=t.length):(a=Object.keys(t),r={},s=a.length);function c(p){function h(){e&&e(p,r),e=null}n?cAt(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){t[p](function(h,E){f(p,h,E)})}):t.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var _3=L(cQ=>{\"use strict\";Object.defineProperty(cQ,\"__esModule\",{value:!0});cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var lQ=process.versions.node.split(\".\");if(lQ[0]===void 0||lQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var mpe=Number.parseInt(lQ[0],10),fAt=Number.parseInt(lQ[1],10),ype=10,AAt=10,pAt=mpe>ype,hAt=mpe===ype&&fAt>=AAt;cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=pAt||hAt});var Epe=L(uQ=>{\"use strict\";Object.defineProperty(uQ,\"__esModule\",{value:!0});uQ.createDirentFromStats=void 0;var U3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function gAt(t,e){return new U3(t,e)}uQ.createDirentFromStats=gAt});var H3=L(fQ=>{\"use strict\";Object.defineProperty(fQ,\"__esModule\",{value:!0});fQ.fs=void 0;var dAt=Epe();fQ.fs=dAt});var j3=L(AQ=>{\"use strict\";Object.defineProperty(AQ,\"__esModule\",{value:!0});AQ.joinPathSegments=void 0;function mAt(t,e,r){return t.endsWith(r)?t+e:t+r+e}AQ.joinPathSegments=mAt});var Spe=L(d0=>{\"use strict\";Object.defineProperty(d0,\"__esModule\",{value:!0});d0.readdir=d0.readdirWithFileTypes=d0.read=void 0;var yAt=Xd(),Ipe=dpe(),EAt=_3(),Cpe=H3(),wpe=j3();function IAt(t,e,r){if(!e.stats&&EAt.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Bpe(t,e,r);return}vpe(t,e,r)}d0.read=IAt;function Bpe(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:wpe.joinPathSegments(t,f.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){q3(r,n);return}let c=n.map(f=>CAt(f,e));Ipe(c,(f,p)=>{if(f!==null){pQ(r,f);return}q3(r,p)})})}d0.readdirWithFileTypes=Bpe;function CAt(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(s,a)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,t);return}t.dirent=Cpe.fs.createDirentFromStats(t.name,a),r(null,t)})}}function vpe(t,e,r){e.fs.readdir(t,(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(c=>{let f=wpe.joinPathSegments(t,c,e.pathSegmentSeparator);return p=>{yAt.stat(f,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:Cpe.fs.createDirentFromStats(c,E)};e.stats&&(C.stats=E),p(null,C)})}});Ipe(n,(c,f)=>{if(c!==null){pQ(r,c);return}q3(r,f)})})}d0.readdir=vpe;function pQ(t,e){t(e)}function q3(t,e){t(null,e)}});var kpe=L(m0=>{\"use strict\";Object.defineProperty(m0,\"__esModule\",{value:!0});m0.readdir=m0.readdirWithFileTypes=m0.read=void 0;var wAt=Xd(),BAt=_3(),Dpe=H3(),bpe=j3();function vAt(t,e){return!e.stats&&BAt.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Ppe(t,e):xpe(t,e)}m0.read=vAt;function Ppe(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:bpe.joinPathSegments(t,s.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=Dpe.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}m0.readdirWithFileTypes=Ppe;function xpe(t,e){return e.fs.readdirSync(t).map(s=>{let a=bpe.joinPathSegments(t,s,e.pathSegmentSeparator),n=wAt.statSync(a,e.fsStatSettings),c={name:s,path:a,dirent:Dpe.fs.createDirentFromStats(s,n)};return e.stats&&(c.stats=n),c})}m0.readdir=xpe});var Qpe=L(y0=>{\"use strict\";Object.defineProperty(y0,\"__esModule\",{value:!0});y0.createFileSystemAdapter=y0.FILE_SYSTEM_ADAPTER=void 0;var XE=ye(\"fs\");y0.FILE_SYSTEM_ADAPTER={lstat:XE.lstat,stat:XE.stat,lstatSync:XE.lstatSync,statSync:XE.statSync,readdir:XE.readdir,readdirSync:XE.readdirSync};function SAt(t){return t===void 0?y0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},y0.FILE_SYSTEM_ADAPTER),t)}y0.createFileSystemAdapter=SAt});var Tpe=L(W3=>{\"use strict\";Object.defineProperty(W3,\"__esModule\",{value:!0});var DAt=ye(\"path\"),bAt=Xd(),PAt=Qpe(),G3=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=PAt.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,DAt.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new bAt.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};W3.default=G3});var hQ=L(E0=>{\"use strict\";Object.defineProperty(E0,\"__esModule\",{value:!0});E0.Settings=E0.scandirSync=E0.scandir=void 0;var Rpe=Spe(),xAt=kpe(),Y3=Tpe();E0.Settings=Y3.default;function kAt(t,e,r){if(typeof e==\"function\"){Rpe.read(t,V3(),e);return}Rpe.read(t,V3(e),r)}E0.scandir=kAt;function QAt(t,e){let r=V3(e);return xAt.read(t,r)}E0.scandirSync=QAt;function V3(t={}){return t instanceof Y3.default?t:new Y3.default(t)}});var Npe=L((iJt,Fpe)=>{\"use strict\";function TAt(t){var e=new t,r=e;function s(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}Fpe.exports=TAt});var Lpe=L((sJt,K3)=>{\"use strict\";var RAt=Npe();function Ope(t,e,r){if(typeof t==\"function\"&&(r=e,e=t,t=null),!(r>=1))throw new Error(\"fastqueue concurrency must be equal to or greater than 1\");var s=RAt(FAt),a=null,n=null,c=0,f=null,p={push:R,drain:Tc,saturated:Tc,pause:E,paused:!1,get concurrency(){return r},set concurrency(Ae){if(!(Ae>=1))throw new Error(\"fastqueue concurrency must be equal to or greater than 1\");if(r=Ae,!p.paused)for(;a&&c<r;)c++,U()},running:h,resume:P,idle:I,length:C,getQueue:S,unshift:N,empty:Tc,kill:W,killAndDrain:te,error:ie};return p;function h(){return c}function E(){p.paused=!0}function C(){for(var Ae=a,ce=0;Ae;)Ae=Ae.next,ce++;return ce}function S(){for(var Ae=a,ce=[];Ae;)ce.push(Ae.value),Ae=Ae.next;return ce}function P(){if(p.paused){if(p.paused=!1,a===null){c++,U();return}for(;a&&c<r;)c++,U()}}function I(){return c===0&&p.length()===0}function R(Ae,ce){var me=s.get();me.context=t,me.release=U,me.value=Ae,me.callback=ce||Tc,me.errorHandler=f,c>=r||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function N(Ae,ce){var me=s.get();me.context=t,me.release=U,me.value=Ae,me.callback=ce||Tc,me.errorHandler=f,c>=r||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function U(Ae){Ae&&s.release(Ae);var ce=a;ce&&c<=r?p.paused?c--:(n===a&&(n=null),a=ce.next,ce.next=null,e.call(t,ce.value,ce.worked),n===null&&p.empty()):--c===0&&p.drain()}function W(){a=null,n=null,p.drain=Tc}function te(){a=null,n=null,p.drain(),p.drain=Tc}function ie(Ae){f=Ae}}function Tc(){}function FAt(){this.value=null,this.callback=Tc,this.next=null,this.release=Tc,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,s){var a=t.callback,n=t.errorHandler,c=t.value;t.value=null,t.callback=Tc,t.errorHandler&&n(r,c),a.call(t.context,r,s),t.release(t)}}function NAt(t,e,r){typeof t==\"function\"&&(r=e,e=t,t=null);function s(E,C){e.call(this,E).then(function(S){C(null,S)},C)}var a=Ope(t,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,P){n(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(Tc),C}function p(E){var C=new Promise(function(S,P){c(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(Tc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}K3.exports=Ope;K3.exports.promise=NAt});var gQ=L(Xf=>{\"use strict\";Object.defineProperty(Xf,\"__esModule\",{value:!0});Xf.joinPathSegments=Xf.replacePathSegmentSeparator=Xf.isAppliedFilter=Xf.isFatalError=void 0;function OAt(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Xf.isFatalError=OAt;function LAt(t,e){return t===null||t(e)}Xf.isAppliedFilter=LAt;function MAt(t,e){return t.split(/[/\\\\]/).join(e)}Xf.replacePathSegmentSeparator=MAt;function _At(t,e,r){return t===\"\"?e:t.endsWith(r)?t+e:t+r+e}Xf.joinPathSegments=_At});var Z3=L(z3=>{\"use strict\";Object.defineProperty(z3,\"__esModule\",{value:!0});var UAt=gQ(),J3=class{constructor(e,r){this._root=e,this._settings=r,this._root=UAt.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};z3.default=J3});var e8=L($3=>{\"use strict\";Object.defineProperty($3,\"__esModule\",{value:!0});var HAt=ye(\"events\"),jAt=hQ(),qAt=Lpe(),dQ=gQ(),GAt=Z3(),X3=class extends GAt.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=jAt.scandir,this._emitter=new HAt.EventEmitter,this._queue=qAt(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit(\"end\")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error(\"The reader is already destroyed\");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on(\"entry\",e)}onError(e){this._emitter.once(\"error\",e)}onEnd(e){this._emitter.once(\"end\",e)}_pushToQueue(e,r){let s={directory:e,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!dQ.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit(\"error\",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let s=e.path;r!==void 0&&(e.path=dQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit(\"entry\",e)}};$3.default=X3});var Mpe=L(r8=>{\"use strict\";Object.defineProperty(r8,\"__esModule\",{value:!0});var WAt=e8(),t8=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new WAt.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{YAt(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{VAt(e,this._storage)}),this._reader.read()}};r8.default=t8;function YAt(t,e){t(e)}function VAt(t,e){t(null,e)}});var _pe=L(i8=>{\"use strict\";Object.defineProperty(i8,\"__esModule\",{value:!0});var KAt=ye(\"stream\"),JAt=e8(),n8=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new JAt.default(this._root,this._settings),this._stream=new KAt.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit(\"error\",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};i8.default=n8});var Upe=L(o8=>{\"use strict\";Object.defineProperty(o8,\"__esModule\",{value:!0});var zAt=hQ(),mQ=gQ(),ZAt=Z3(),s8=class extends ZAt.default{constructor(){super(...arguments),this._scandir=zAt.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let s=this._scandir(e,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(e){if(mQ.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let s=e.path;r!==void 0&&(e.path=mQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),mQ.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&mQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};o8.default=s8});var Hpe=L(l8=>{\"use strict\";Object.defineProperty(l8,\"__esModule\",{value:!0});var XAt=Upe(),a8=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new XAt.default(this._root,this._settings)}read(){return this._reader.read()}};l8.default=a8});var jpe=L(u8=>{\"use strict\";Object.defineProperty(u8,\"__esModule\",{value:!0});var $At=ye(\"path\"),ept=hQ(),c8=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,$At.sep),this.fsScandirSettings=new ept.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};u8.default=c8});var EQ=L($f=>{\"use strict\";Object.defineProperty($f,\"__esModule\",{value:!0});$f.Settings=$f.walkStream=$f.walkSync=$f.walk=void 0;var qpe=Mpe(),tpt=_pe(),rpt=Hpe(),f8=jpe();$f.Settings=f8.default;function npt(t,e,r){if(typeof e==\"function\"){new qpe.default(t,yQ()).read(e);return}new qpe.default(t,yQ(e)).read(r)}$f.walk=npt;function ipt(t,e){let r=yQ(e);return new rpt.default(t,r).read()}$f.walkSync=ipt;function spt(t,e){let r=yQ(e);return new tpt.default(t,r).read()}$f.walkStream=spt;function yQ(t={}){return t instanceof f8.default?t:new f8.default(t)}});var IQ=L(p8=>{\"use strict\";Object.defineProperty(p8,\"__esModule\",{value:!0});var opt=ye(\"path\"),apt=Xd(),Gpe=Qp(),A8=class{constructor(e){this._settings=e,this._fsStatSettings=new apt.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return opt.resolve(this._settings.cwd,e)}_makeEntry(e,r){let s={name:r,path:r,dirent:Gpe.fs.createDirentFromStats(r,e)};return this._settings.stats&&(s.stats=e),s}_isFatalError(e){return!Gpe.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};p8.default=A8});var d8=L(g8=>{\"use strict\";Object.defineProperty(g8,\"__esModule\",{value:!0});var lpt=ye(\"stream\"),cpt=Xd(),upt=EQ(),fpt=IQ(),h8=class extends fpt.default{constructor(){super(...arguments),this._walkStream=upt.walkStream,this._stat=cpt.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let s=e.map(this._getFullEntryPath,this),a=new lpt.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;n<s.length;n++)a.write(n);return a}_getEntry(e,r,s){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,s)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};g8.default=h8});var Wpe=L(y8=>{\"use strict\";Object.defineProperty(y8,\"__esModule\",{value:!0});var Apt=EQ(),ppt=IQ(),hpt=d8(),m8=class extends ppt.default{constructor(){super(...arguments),this._walkAsync=Apt.walk,this._readerStream=new hpt.default(this._settings)}dynamic(e,r){return new Promise((s,a)=>{this._walkAsync(e,r,(n,c)=>{n===null?s(c):a(n)})})}async static(e,r){let s=[],a=this._readerStream.static(e,r);return new Promise((n,c)=>{a.once(\"error\",c),a.on(\"data\",f=>s.push(f)),a.once(\"end\",()=>n(s))})}};y8.default=m8});var Ype=L(I8=>{\"use strict\";Object.defineProperty(I8,\"__esModule\",{value:!0});var KB=Qp(),E8=class{constructor(e,r,s){this._patterns=e,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:e,segments:r,sections:s})}}_getPatternSegments(e){return KB.pattern.getPatternParts(e,this._micromatchOptions).map(s=>KB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:KB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(e){return KB.array.splitWhen(e,r=>r.dynamic&&KB.pattern.hasGlobStar(r.pattern))}};I8.default=E8});var Vpe=L(w8=>{\"use strict\";Object.defineProperty(w8,\"__esModule\",{value:!0});var gpt=Ype(),C8=class extends gpt.default{match(e){let r=e.split(\"/\"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};w8.default=C8});var Kpe=L(v8=>{\"use strict\";Object.defineProperty(v8,\"__esModule\",{value:!0});var CQ=Qp(),dpt=Vpe(),B8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(e,c,a,n)}_getMatcher(e){return new dpt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(CQ.pattern.isAffectDepthOfReadingPattern);return CQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,s,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=CQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let s=r.split(\"/\").length;if(e===\"\")return s;let a=e.split(\"/\").length;return s-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!CQ.pattern.matchAny(e,r)}};v8.default=B8});var Jpe=L(D8=>{\"use strict\";Object.defineProperty(D8,\"__esModule\",{value:!0});var $d=Qp(),S8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let s=$d.pattern.convertPatternsToRe(e,this._micromatchOptions),a=$d.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(e,r,s){let a=$d.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=e.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let s=$d.path.makeAbsolute(this._settings.cwd,e);return $d.pattern.matchAny(s,r)}_isMatchToPatterns(e,r,s){let a=$d.pattern.matchAny(e,r);return!a&&s?$d.pattern.matchAny(e+\"/\",r):a}};D8.default=S8});var zpe=L(P8=>{\"use strict\";Object.defineProperty(P8,\"__esModule\",{value:!0});var mpt=Qp(),b8=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return mpt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};P8.default=b8});var Xpe=L(k8=>{\"use strict\";Object.defineProperty(k8,\"__esModule\",{value:!0});var Zpe=Qp(),x8=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Zpe.path.makeAbsolute(this._settings.cwd,r),r=Zpe.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};k8.default=x8});var wQ=L(T8=>{\"use strict\";Object.defineProperty(T8,\"__esModule\",{value:!0});var ypt=ye(\"path\"),Ept=Kpe(),Ipt=Jpe(),Cpt=zpe(),wpt=Xpe(),Q8=class{constructor(e){this._settings=e,this.errorFilter=new Cpt.default(this._settings),this.entryFilter=new Ipt.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new Ept.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new wpt.default(this._settings)}_getRootDirectory(e){return ypt.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base===\".\"?\"\":e.base;return{basePath:r,pathSegmentSeparator:\"/\",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};T8.default=Q8});var $pe=L(F8=>{\"use strict\";Object.defineProperty(F8,\"__esModule\",{value:!0});var Bpt=Wpe(),vpt=wQ(),R8=class extends vpt.default{constructor(){super(...arguments),this._reader=new Bpt.default(this._settings)}async read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return(await this.api(r,e,s)).map(n=>s.transform(n))}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};F8.default=R8});var ehe=L(O8=>{\"use strict\";Object.defineProperty(O8,\"__esModule\",{value:!0});var Spt=ye(\"stream\"),Dpt=d8(),bpt=wQ(),N8=class extends bpt.default{constructor(){super(...arguments),this._reader=new Dpt.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e),a=this.api(r,e,s),n=new Spt.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",c=>n.emit(\"error\",c)).on(\"data\",c=>n.emit(\"data\",s.transform(c))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};O8.default=N8});var the=L(M8=>{\"use strict\";Object.defineProperty(M8,\"__esModule\",{value:!0});var Ppt=Xd(),xpt=EQ(),kpt=IQ(),L8=class extends kpt.default{constructor(){super(...arguments),this._walkSync=xpt.walkSync,this._statSync=Ppt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let s=[];for(let a of e){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(e,r,s){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};M8.default=L8});var rhe=L(U8=>{\"use strict\";Object.defineProperty(U8,\"__esModule\",{value:!0});var Qpt=the(),Tpt=wQ(),_8=class extends Tpt.default{constructor(){super(...arguments),this._reader=new Qpt.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return this.api(r,e,s).map(s.transform)}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};U8.default=_8});var nhe=L(eI=>{\"use strict\";Object.defineProperty(eI,\"__esModule\",{value:!0});eI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var $E=ye(\"fs\"),Rpt=ye(\"os\"),Fpt=Math.max(Rpt.cpus().length,1);eI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:$E.lstat,lstatSync:$E.lstatSync,stat:$E.stat,statSync:$E.statSync,readdir:$E.readdir,readdirSync:$E.readdirSync};var H8=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Fpt),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},eI.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};eI.default=H8});var BQ=L((kJt,she)=>{\"use strict\";var ihe=spe(),Npt=$pe(),Opt=ehe(),Lpt=rhe(),j8=nhe(),Rc=Qp();async function q8(t,e){qu(t);let r=G8(t,Npt.default,e),s=await Promise.all(r);return Rc.array.flatten(s)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(h,E){qu(h);let C=G8(h,Lpt.default,E);return Rc.array.flatten(C)}t.sync=e;function r(h,E){qu(h);let C=G8(h,Opt.default,E);return Rc.stream.merge(C)}t.stream=r;function s(h,E){qu(h);let C=[].concat(h),S=new j8.default(E);return ihe.generate(C,S)}t.generateTasks=s;function a(h,E){qu(h);let C=new j8.default(E);return Rc.pattern.isDynamicPattern(h,C)}t.isDynamicPattern=a;function n(h){return qu(h),Rc.path.escape(h)}t.escapePath=n;function c(h){return qu(h),Rc.path.convertPathToPattern(h)}t.convertPathToPattern=c;let f;(function(h){function E(S){return qu(S),Rc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return qu(S),Rc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=t.posix||(t.posix={}));let p;(function(h){function E(S){return qu(S),Rc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return qu(S),Rc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=t.win32||(t.win32={}))})(q8||(q8={}));function G8(t,e,r){let s=[].concat(t),a=new j8.default(r),n=ihe.generate(s,a),c=new e(a);return n.map(c.read,c)}function qu(t){if(![].concat(t).every(s=>Rc.string.isString(s)&&!Rc.string.isEmpty(s)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}she.exports=q8});var Nn={};Vt(Nn,{checksumFile:()=>SQ,checksumPattern:()=>DQ,makeHash:()=>us});function us(...t){let e=(0,vQ.createHash)(\"sha512\"),r=\"\";for(let s of t)typeof s==\"string\"?r+=s:s&&(r&&(e.update(r),r=\"\"),e.update(s));return r&&e.update(r),e.digest(\"hex\")}async function SQ(t,{baseFs:e,algorithm:r}={baseFs:le,algorithm:\"sha512\"}){let s=await e.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,vQ.createHash)(r),f=0;for(;(f=await e.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest(\"hex\")}finally{await e.closePromise(s)}}async function DQ(t,{cwd:e}){let s=(await(0,W8.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,W8.default)([t,...s],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=K.join(e,ue.toPortablePath(f)),E=await le.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await le.readlinkPromise(h))):E.isFile()&&p.push(await le.readFilePromise(h)),p.join(\"\\0\")})),c=(0,vQ.createHash)(\"sha512\");for(let f of n)c.update(f);return c.digest(\"hex\")}var vQ,W8,I0=It(()=>{bt();vQ=ye(\"crypto\"),W8=et(BQ())});var q={};Vt(q,{allPeerRequests:()=>nv,areDescriptorsEqual:()=>uhe,areIdentsEqual:()=>XB,areLocatorsEqual:()=>$B,areVirtualPackagesEquivalent:()=>Ypt,bindDescriptor:()=>Gpt,bindLocator:()=>Wpt,convertDescriptorToLocator:()=>bQ,convertLocatorToDescriptor:()=>V8,convertPackageToLocator:()=>Hpt,convertToIdent:()=>Upt,convertToManifestRange:()=>rht,copyPackage:()=>zB,devirtualizeDescriptor:()=>ZB,devirtualizeLocator:()=>rI,ensureDevirtualizedDescriptor:()=>jpt,ensureDevirtualizedLocator:()=>qpt,getIdentVendorPath:()=>Z8,isPackageCompatible:()=>TQ,isVirtualDescriptor:()=>Tp,isVirtualLocator:()=>Gu,makeDescriptor:()=>On,makeIdent:()=>ba,makeLocator:()=>Ys,makeRange:()=>kQ,parseDescriptor:()=>C0,parseFileStyleRange:()=>eht,parseIdent:()=>Da,parseLocator:()=>Rp,parseRange:()=>em,prettyDependent:()=>B3,prettyDescriptor:()=>ri,prettyIdent:()=>$i,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>w3,prettyRange:()=>iI,prettyReference:()=>tv,prettyResolution:()=>VB,prettyWorkspace:()=>rv,renamePackage:()=>K8,slugifyIdent:()=>Y8,slugifyLocator:()=>nI,sortDescriptors:()=>sI,stringifyDescriptor:()=>ll,stringifyIdent:()=>cn,stringifyLocator:()=>cl,tryParseDescriptor:()=>ev,tryParseIdent:()=>fhe,tryParseLocator:()=>xQ,tryParseRange:()=>$pt,unwrapIdentFromScope:()=>iht,virtualizeDescriptor:()=>J8,virtualizePackage:()=>z8,wrapIdentIntoScope:()=>nht});function ba(t,e){if(t?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:us(t,e),scope:t,name:e}}function On(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:us(t.identHash,e),range:e}}function Ys(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:us(t.identHash,e),reference:e}}function Upt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function bQ(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function V8(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function Hpt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function K8(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function zB(t){return K8(t,t)}function J8(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return On(t,`virtual:${e}#${t.range}`)}function z8(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return K8(t,Ys(t,`virtual:${e}#${t.reference}`))}function Tp(t){return t.range.startsWith(JB)}function Gu(t){return t.reference.startsWith(JB)}function ZB(t){if(!Tp(t))throw new Error(\"Not a virtual descriptor\");return On(t,t.range.replace(PQ,\"\"))}function rI(t){if(!Gu(t))throw new Error(\"Not a virtual descriptor\");return Ys(t,t.reference.replace(PQ,\"\"))}function jpt(t){return Tp(t)?On(t,t.range.replace(PQ,\"\")):t}function qpt(t){return Gu(t)?Ys(t,t.reference.replace(PQ,\"\")):t}function Gpt(t,e){return t.range.includes(\"::\")?t:On(t,`${t.range}::${tI.default.stringify(e)}`)}function Wpt(t,e){return t.reference.includes(\"::\")?t:Ys(t,`${t.reference}::${tI.default.stringify(e)}`)}function XB(t,e){return t.identHash===e.identHash}function uhe(t,e){return t.descriptorHash===e.descriptorHash}function $B(t,e){return t.locatorHash===e.locatorHash}function Ypt(t,e){if(!Gu(t))throw new Error(\"Invalid package type\");if(!Gu(e))throw new Error(\"Invalid package type\");if(!XB(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let s=e.dependencies.get(r.identHash);if(!s||!uhe(r,s))return!1}return!0}function Da(t){let e=fhe(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function fhe(t){let e=t.match(Vpt);if(!e)return null;let[,r,s]=e;return ba(typeof r<\"u\"?r:null,s)}function C0(t,e=!1){let r=ev(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function ev(t,e=!1){let r=e?t.match(Kpt):t.match(Jpt);if(!r)return null;let[,s,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${t})`);let c=typeof s<\"u\"?s:null,f=typeof n<\"u\"?n:\"unknown\";return On(ba(c,a),f)}function Rp(t,e=!1){let r=xQ(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function xQ(t,e=!1){let r=e?t.match(zpt):t.match(Zpt);if(!r)return null;let[,s,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${t})`);let c=typeof s<\"u\"?s:null,f=typeof n<\"u\"?n:\"unknown\";return Ys(ba(c,a),f)}function em(t,e){let r=t.match(Xpt);if(r===null)throw new Error(`Invalid range (${t})`);let s=typeof r[1]<\"u\"?r[1]:null;if(typeof e?.requireProtocol==\"string\"&&s!==e.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(e?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<\"u\"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<\"u\"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=e?.parseSelector?tI.default.parse(n):n,f=typeof r[4]<\"u\"?tI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function $pt(t,e){try{return em(t,e)}catch{return null}}function eht(t,{protocol:e}){let{selector:r,params:s}=em(t,{requireProtocol:e,requireBindings:!0});if(typeof s.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Rp(s.locator,!0),path:r}}function ohe(t){return t=t.replaceAll(\"%\",\"%25\"),t=t.replaceAll(\":\",\"%3A\"),t=t.replaceAll(\"#\",\"%23\"),t}function tht(t){return t===null?!1:Object.entries(t).length>0}function kQ({protocol:t,source:e,selector:r,params:s}){let a=\"\";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${ohe(e)}#`),a+=ohe(r),tht(s)&&(a+=`::${tI.default.stringify(s)}`),a}function rht(t){let{params:e,protocol:r,source:s,selector:a}=em(t);for(let n in e)n.startsWith(\"__\")&&delete e[n];return kQ({protocol:r,source:s,params:e,selector:a})}function cn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function nht(t,e){return t.scope?ba(e,`${t.scope}__${t.name}`):ba(e,t.name)}function iht(t,e){if(t.scope!==e)return t;let r=t.name.indexOf(\"__\");if(r===-1)return ba(null,t.name);let s=t.name.slice(0,r),a=t.name.slice(r+2);return ba(s,a)}function ll(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function cl(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Y8(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function nI(t){let{protocol:e,selector:r}=em(t.reference),s=e!==null?e.replace(sht,\"\"):\"exotic\",a=ahe.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return t.scope?`${Y8(t)}-${n}-${t.locatorHash.slice(0,c)}`:`${Y8(t)}-${n}-${t.locatorHash.slice(0,c)}`}function $i(t,e){return e.scope?`${Ut(t,`@${e.scope}/`,Ct.SCOPE)}${Ut(t,e.name,Ct.NAME)}`:`${Ut(t,e.name,Ct.NAME)}`}function QQ(t){if(t.startsWith(JB)){let e=QQ(t.substring(t.indexOf(\"#\")+1)),r=t.substring(JB.length,JB.length+Mpt);return`${e} [${r}]`}else return t.replace(oht,\"?[...]\")}function iI(t,e){return`${Ut(t,QQ(e),Ct.RANGE)}`}function ri(t,e){return`${$i(t,e)}${Ut(t,\"@\",Ct.RANGE)}${iI(t,e.range)}`}function tv(t,e){return`${Ut(t,QQ(e),Ct.REFERENCE)}`}function Yr(t,e){return`${$i(t,e)}${Ut(t,\"@\",Ct.REFERENCE)}${tv(t,e.reference)}`}function w3(t){return`${cn(t)}@${QQ(t.reference)}`}function sI(t){return Ws(t,[e=>cn(e),e=>e.range])}function rv(t,e){return $i(t,e.anchoredLocator)}function VB(t,e,r){let s=Tp(e)?ZB(e):e;return r===null?`${ri(t,s)} \\u2192 ${C3(t).Cross}`:s.identHash===r.identHash?`${ri(t,s)} \\u2192 ${tv(t,r.reference)}`:`${ri(t,s)} \\u2192 ${Yr(t,r)}`}function B3(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${iI(t,r.range)})`}function Z8(t){return`node_modules/${cn(t)}`}function TQ(t,e){return t.conditions?_pt(t.conditions,r=>{let[,s,a]=r.match(che),n=e[s];return n?n.includes(a):!0}):!0}function nv(t){let e=new Set;if(\"children\"in t)e.add(t);else for(let r of t.requests.values())e.add(r);for(let r of e)for(let s of r.children.values())e.add(s);return e}var tI,ahe,lhe,JB,Mpt,che,_pt,PQ,Vpt,Kpt,Jpt,zpt,Zpt,Xpt,sht,oht,Yo=It(()=>{tI=et(ye(\"querystring\")),ahe=et(fi()),lhe=et(noe());Qc();I0();kc();Yo();JB=\"virtual:\",Mpt=5,che=/(os|cpu|libc)=([a-z0-9_-]+)/,_pt=(0,lhe.makeParser)(che);PQ=/^[^#]*#/;Vpt=/^(?:@([^/]+?)\\/)?([^@/]+)$/;Kpt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Jpt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;zpt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Zpt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Xpt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;sht=/:$/;oht=/\\?.*/});var Ahe,phe=It(()=>{Yo();Ahe={hooks:{reduceDependency:(t,e,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of e.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==cn(r)||e.configuration.normalizeLocator(Ys(Da(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==cn(t)||e.configuration.normalizeDependency(On(Rp(c.descriptor.fullName),c.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(On(t,f)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let s=rv(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>e.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error(\"Resolutions field will be ignored\"));for(let s of r.errors)e.reportWarning(57,s.message)}}}});var yi,tm=It(()=>{yi=class t{static{this.protocol=\"workspace:\"}supportsDescriptor(e,r){return!!(e.range.startsWith(t.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(t.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[s.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.getWorkspaceByCwd(e.reference.slice(t.protocol.length));return{...e,version:s.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Or={};Vt(Or,{SemVer:()=>yhe.SemVer,clean:()=>lht,getComparator:()=>dhe,mergeComparators:()=>X8,satisfiesWithPrereleases:()=>eA,simplifyRanges:()=>$8,stringifyComparator:()=>mhe,validRange:()=>ul});function eA(t,e,r=!1){if(!t)return!1;let s=`${e}${r}`,a=hhe.get(s);if(typeof a>\"u\")try{a=new Fp.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{hhe.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Fp.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function ul(t){if(t.indexOf(\":\")!==-1)return null;let e=ghe.get(t);if(typeof e<\"u\")return e;try{e=new Fp.default.Range(t)}catch{e=null}return ghe.set(t,e),e}function lht(t){let e=aht.exec(t);return e?e[1]:null}function dhe(t){if(t.semver===Fp.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case\"\":return{gt:[\">=\",t.semver],lt:[\"<=\",t.semver]};case\">\":case\">=\":return{gt:[t.operator,t.semver],lt:null};case\"<\":case\"<=\":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function X8(t){if(t.length===0)return null;let e=null,r=null;for(let s of t){if(s.gt){let a=e!==null?Fp.default.compare(s.gt[1],e[1]):null;(a===null||a>0||a===0&&s.gt[0]===\">\")&&(e=s.gt)}if(s.lt){let a=r!==null?Fp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]===\"<\")&&(r=s.lt)}}if(e&&r){let s=Fp.default.compare(e[1],r[1]);if(s===0&&(e[0]===\">\"||r[0]===\"<\")||s>0)return null}return{gt:e,lt:r}}function mhe(t){if(t.gt&&t.lt){if(t.gt[0]===\">=\"&&t.lt[0]===\"<=\"&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===\">=\"&&t.lt[0]===\"<\"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(\" \"):\"*\"}function $8(t){let e=t.map(cht).map(s=>ul(s).set.map(a=>a.map(n=>dhe(n)))),r=e.shift().map(s=>X8(s)).filter(s=>s!==null);for(let s of e){let a=[];for(let n of r)for(let c of s){let f=X8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>mhe(s)).join(\" || \")}function cht(t){let e=t.split(\"||\");if(e.length>1){let r=new Set;for(let s of e)e.some(a=>a!==s&&Fp.default.subset(s,a))||r.add(s);if(r.size<e.length)return[...r].join(\" || \")}return t}var Fp,yhe,hhe,ghe,aht,Np=It(()=>{Fp=et(fi()),yhe=et(fi()),hhe=new Map;ghe=new Map;aht=/^(?:[\\sv=]*?)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\s*)$/});function Ehe(t){let e=t.match(/^[ \\t]+/m);return e?e[0]:\"  \"}function Ihe(t){return t.charCodeAt(0)===65279?t.slice(1):t}function Pa(t){return t.replace(/\\\\/g,\"/\")}function RQ(t,{yamlCompatibilityMode:e}){return e?h3(t):typeof t>\"u\"||typeof t==\"boolean\"?t:null}function Che(t,e){let r=e.search(/[^!]/);if(r===-1)return\"invalid\";let s=r%2===0?\"\":\"!\",a=e.slice(r);return`${s}${t}=${a}`}function eH(t,e){return e.length===1?Che(t,e[0]):`(${e.map(r=>Che(t,r)).join(\" | \")})`}var whe,Ht,oI=It(()=>{bt();Bc();whe=et(fi());tm();kc();Np();Yo();Ht=class t{constructor(){this.indent=\"  \";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName=\"package.json\"}static{this.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"]}static{this.hardDependencies=[\"dependencies\",\"devDependencies\"]}static async tryFind(e,{baseFs:r=new Yn}={}){let s=K.join(e,\"package.json\");try{return await t.fromFile(s,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(e,{baseFs:r}={}){let s=await t.tryFind(e,{baseFs:r});if(s===null)throw new Error(\"Manifest not found\");return s}static async fromFile(e,{baseFs:r=new Yn}={}){let s=new t;return await s.loadFile(e,{baseFs:r}),s}static fromText(e){let r=new t;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(Ihe(e)||\"{}\")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(r),this.indent=Ehe(e)}async loadFile(e,{baseFs:r=new Yn}){let s=await r.readFilePromise(e,\"utf8\"),a;try{a=JSON.parse(Ihe(s)||\"{}\")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=Ehe(s)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!=\"object\"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let s=[];if(this.name=null,typeof e.name==\"string\")try{this.name=Da(e.name)}catch{s.push(new Error(\"Parsing failed for the 'name' field\"))}if(typeof e.version==\"string\"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let c of e.os)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'os' field\")):n.push(c)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let c of e.cpu)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(c)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let c of e.libc)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(c)}else this.libc=null;if(typeof e.type==\"string\"?this.type=e.type:this.type=null,typeof e.packageManager==\"string\"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private==\"boolean\"?this.private=e.private:this.private=!1,typeof e.license==\"string\"?this.license=e.license:this.license=null,typeof e.languageName==\"string\"?this.languageName=e.languageName:this.languageName=null,typeof e.main==\"string\"?this.main=Pa(e.main):this.main=null,typeof e.module==\"string\"?this.module=Pa(e.module):this.module=null,e.browser!=null)if(typeof e.browser==\"string\")this.browser=Pa(e.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(e.browser))this.browser.set(Pa(n),typeof c==\"string\"?Pa(c):c)}else this.browser=null;if(this.bin=new Map,typeof e.bin==\"string\")e.bin.trim()===\"\"?s.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,Pa(e.bin)):s.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.bin==\"object\"&&e.bin!==null)for(let[n,c]of Object.entries(e.bin)){if(typeof c!=\"string\"||c.trim()===\"\"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Da(n);this.bin.set(f.name,Pa(c))}if(this.scripts=new Map,typeof e.scripts==\"object\"&&e.scripts!==null)for(let[n,c]of Object.entries(e.scripts)){if(typeof c!=\"string\"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof e.dependencies==\"object\"&&e.dependencies!==null)for(let[n,c]of Object.entries(e.dependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies==\"object\"&&e.devDependencies!==null)for(let[n,c]of Object.entries(e.devDependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies==\"object\"&&e.peerDependencies!==null)for(let[n,c]of Object.entries(e.peerDependencies)){let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!=\"string\"||!c.startsWith(yi.protocol)&&!ul(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c=\"*\");let p=On(f,c);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces==\"object\"&&e.workspaces!==null&&e.workspaces.nohoist&&s.push(new Error(\"'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead\"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces==\"object\"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!=\"string\"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta==\"object\"&&e.dependenciesMeta!==null)for(let[n,c]of Object.entries(e.dependenciesMeta)){if(typeof c!=\"object\"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=C0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta==\"object\"&&e.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(e.peerDependenciesMeta)){if(typeof c!=\"object\"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=C0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions==\"object\"&&e.resolutions!==null)for(let[n,c]of Object.entries(e.resolutions)){if(typeof c!=\"string\"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:bx(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!=\"string\"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig==\"object\"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access==\"string\"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main==\"string\"&&(this.publishConfig.main=Pa(e.publishConfig.main)),typeof e.publishConfig.module==\"string\"&&(this.publishConfig.module=Pa(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser==\"string\")this.publishConfig.browser=Pa(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(Pa(n),typeof c==\"string\"?Pa(c):c)}if(typeof e.publishConfig.registry==\"string\"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin==\"string\")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Pa(e.publishConfig.bin)]]):s.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.publishConfig.bin==\"object\"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(e.publishConfig.bin)){if(typeof c!=\"string\"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Pa(c))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!=\"string\"){s.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add(Pa(n))}}}else this.publishConfig=null;if(typeof e.installConfig==\"object\"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n===\"hoistingLimits\"?typeof e.installConfig.hoistingLimits==\"string\"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:s.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof e.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=e.installConfig.selfReferences:s.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies==\"object\"&&e.optionalDependencies!==null)for(let[n,c]of Object.entries(e.optionalDependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Da(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p);let h=On(f,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged==\"boolean\"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(e){switch(e){case\"dependencies\":return this.dependencies;case\"devDependencies\":return this.devDependencies;case\"peerDependencies\":return this.peerDependencies;default:throw new Error(`Unsupported value (\"${e}\")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(eH(\"os\",this.os)),this.cpu&&this.cpu.length>0&&e.push(eH(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&e.push(eH(\"libc\",this.libc)),e.length>0?e.join(\" & \"):null}ensureDependencyMeta(e){if(e.range!==\"unknown\"&&!whe.default.valid(e.range))throw new Error(`Invalid meta field range for '${ll(e)}'`);let r=cn(e),s=e.range!==\"unknown\"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(e){if(e.range!==\"unknown\")throw new Error(`Invalid meta field range for '${ll(e)}'`);let r=cn(e),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(e,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[e]=r,f=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=cn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n==\"string\"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(cn(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?e.dependencies=Object.assign({},...sI(s).map(n=>({[cn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...sI(a).map(n=>({[cn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...sI(this.devDependencies.values()).map(n=>({[cn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...sI(this.peerDependencies.values()).map(n=>({[cn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,c]of Ws(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of Ws(c.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=f!==null?ll(On(Da(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...Ws(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[Px(n)]:c}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,c]of this.scripts.entries())e.scripts[n]=c}else delete e.scripts;return e}}});var vhe=L((WJt,Bhe)=>{var uht=Pc(),fht=function(){return uht.Date.now()};Bhe.exports=fht});var Dhe=L((YJt,She)=>{var Aht=/\\s/;function pht(t){for(var e=t.length;e--&&Aht.test(t.charAt(e)););return e}She.exports=pht});var Phe=L((VJt,bhe)=>{var hht=Dhe(),ght=/^\\s+/;function dht(t){return t&&t.slice(0,hht(t)+1).replace(ght,\"\")}bhe.exports=dht});var aI=L((KJt,xhe)=>{var mht=Vd(),yht=zf(),Eht=\"[object Symbol]\";function Iht(t){return typeof t==\"symbol\"||yht(t)&&mht(t)==Eht}xhe.exports=Iht});var Rhe=L((JJt,The)=>{var Cht=Phe(),khe=Wl(),wht=aI(),Qhe=NaN,Bht=/^[-+]0x[0-9a-f]+$/i,vht=/^0b[01]+$/i,Sht=/^0o[0-7]+$/i,Dht=parseInt;function bht(t){if(typeof t==\"number\")return t;if(wht(t))return Qhe;if(khe(t)){var e=typeof t.valueOf==\"function\"?t.valueOf():t;t=khe(e)?e+\"\":e}if(typeof t!=\"string\")return t===0?t:+t;t=Cht(t);var r=vht.test(t);return r||Sht.test(t)?Dht(t.slice(2),r?2:8):Bht.test(t)?Qhe:+t}The.exports=bht});var Ohe=L((zJt,Nhe)=>{var Pht=Wl(),tH=vhe(),Fhe=Rhe(),xht=\"Expected a function\",kht=Math.max,Qht=Math.min;function Tht(t,e,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof t!=\"function\")throw new TypeError(xht);e=Fhe(e)||0,Pht(r)&&(E=!!r.leading,C=\"maxWait\"in r,n=C?kht(Fhe(r.maxWait)||0,e):n,S=\"trailing\"in r?!!r.trailing:S);function P(ce){var me=s,pe=a;return s=a=void 0,h=ce,c=t.apply(pe,me),c}function I(ce){return h=ce,f=setTimeout(U,e),E?P(ce):c}function R(ce){var me=ce-p,pe=ce-h,Be=e-me;return C?Qht(Be,n-pe):Be}function N(ce){var me=ce-p,pe=ce-h;return p===void 0||me>=e||me<0||C&&pe>=n}function U(){var ce=tH();if(N(ce))return W(ce);f=setTimeout(U,R(ce))}function W(ce){return f=void 0,S&&s?P(ce):(s=a=void 0,c)}function te(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:W(tH())}function Ae(){var ce=tH(),me=N(ce);if(s=arguments,a=this,p=ce,me){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,e),P(p)}return f===void 0&&(f=setTimeout(U,e)),c}return Ae.cancel=te,Ae.flush=ie,Ae}Nhe.exports=Tht});var rH=L((ZJt,Lhe)=>{var Rht=Ohe(),Fht=Wl(),Nht=\"Expected a function\";function Oht(t,e,r){var s=!0,a=!0;if(typeof t!=\"function\")throw new TypeError(Nht);return Fht(r)&&(s=\"leading\"in r?!!r.leading:s,a=\"trailing\"in r?!!r.trailing:a),Rht(t,e,{leading:s,maxWait:e,trailing:a})}Lhe.exports=Oht});function Mht(t){return typeof t.reportCode<\"u\"}var Mhe,_he,Uhe,Lht,Yt,ho,Fc=It(()=>{Mhe=et(rH()),_he=ye(\"stream\"),Uhe=ye(\"string_decoder\"),Lht=15,Yt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};ho=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return f},hasProgress:!0,hasTitle:!1,set:n,tick:c}}static progressViaTitle(){let e,r,s=new Promise(c=>{r=c}),a=(0,Mhe.default)(c=>{let f=r;s=new Promise(p=>{r=p}),e=c,f()},1e3/Lht),n=async function*(){for(;;)await s,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let s=this.reportProgress(e);try{return await r(e)}finally{s.stop()}}startProgressSync(e,r){let s=this.reportProgress(e);try{return r(e)}finally{s.stop()}}reportInfoOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),s?.reportExtra?.(this))}reportWarningOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),s?.reportExtra?.(this))}reportErrorOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),s?.reportExtra?.(this))}reportExceptionOnce(e){Mht(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new _he.PassThrough,s=new Uhe.StringDecoder,a=\"\";return r.on(\"data\",n=>{let c=s.write(n),f;do if(f=c.indexOf(`\n`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a=\"\",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on(\"end\",()=>{let n=s.end();n!==\"\"&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var lI,nH=It(()=>{Fc();Yo();lI=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||null}getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw new Yt(11,`${Yr(r.project.configuration,e)} isn't supported by any available fetcher`);return s}}});var rm,iH=It(()=>{Yo();rm=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s).getCandidates(e,r,s)}async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,s,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));return s||null}getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!s)throw new Error(`${ri(r.project.configuration,e)} isn't supported by any available resolver`);return s}tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));return s||null}getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));if(!s)throw new Error(`${Yr(r.project.configuration,e)} isn't supported by any available resolver`);return s}}});var cI,sH=It(()=>{bt();Yo();cI=class{supports(e){return!!e.reference.startsWith(\"virtual:\")}getLocalPath(e,r){let s=e.reference.indexOf(\"#\");if(s===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(s+1),n=Ys(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let s=e.reference.indexOf(\"#\");if(s===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(s+1),n=Ys(e,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,c,r)}getLocatorFilename(e){return nI(e)}async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get(\"virtualFolder\"),c=this.getLocatorFilename(e),f=fo.makeVirtualPath(n,c,a),p=new Hf(f,{baseFs:r.packageFs,pathUtils:K});return{...r,packageFs:p}}}});var FQ,Hhe=It(()=>{FQ=class t{static{this.protocol=\"virtual:\"}static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}supportsLocator(e,r){return t.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){throw new Error('Assertion failed: calling \"bindDescriptor\" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling \"getResolutionDependencies\" on a virtual descriptor is unsupported')}async getCandidates(e,r,s){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling \"getSatisfying\" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling \"resolve\" on a virtual locator is unsupported')}}});var uI,oH=It(()=>{bt();tm();uI=class{supports(e){return!!e.reference.startsWith(yi.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new Sn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(yi.protocol.length))}}});function iv(t){return typeof t==\"object\"&&t!==null&&!Array.isArray(t)}function jhe(t){return typeof t>\"u\"?3:iv(t)?0:Array.isArray(t)?1:2}function cH(t,e){return Object.hasOwn(t,e)}function Uht(t){return iv(t)&&cH(t,\"onConflict\")&&typeof t.onConflict==\"string\"}function Hht(t){if(typeof t>\"u\")return{onConflict:\"default\",value:t};if(!Uht(t))return{onConflict:\"default\",value:t};if(cH(t,\"value\"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function qhe(t,e){let r=iv(t)&&cH(t,e)?t[e]:void 0;return Hht(r)}function fI(t,e){return[t,e,Ghe]}function uH(t){return Array.isArray(t)?t[2]===Ghe:!1}function aH(t,e){if(iv(t)){let r={};for(let s of Object.keys(t))r[s]=aH(t[s],e);return fI(e,r)}return Array.isArray(t)?fI(e,t.map(r=>aH(r,e))):fI(e,t)}function lH(t,e,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=t[E],{onConflict:P,value:I}=qhe(S,r),R=jhe(I);if(R!==3){if(n??=R,R!==n||P===\"hardReset\"){p=f;break}if(R===2)return fI(C,I);if(c.unshift([C,I]),P===\"reset\"){p=E;break}P===\"extend\"&&E===s&&(s=0),f=E}}if(typeof n>\"u\")return null;let h=c.map(([E])=>E).join(\", \");switch(n){case 1:return fI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>aH(S,E)))));case 0:{let E=Object.assign({},...c.map(([,R])=>R)),C=Object.keys(E),S={},P=t.map(([R,N])=>[R,qhe(N,r).value]),I=_ht(P,([R,N])=>{let U=jhe(N);return U!==0&&U!==3});if(I!==-1){let R=P.slice(I+1);for(let N of C)S[N]=lH(R,e,N,0,R.length)}else for(let R of C)S[R]=lH(P,e,R,p,P.length);return fI(h,S)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function Whe(t){return lH(t.map(([e,r])=>[e,{\".\":r}]),[],\".\",0,t.length)}function sv(t){return uH(t)?t[1]:t}function NQ(t){let e=uH(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>NQ(r));if(iv(e)){let r={};for(let[s,a]of Object.entries(e))r[s]=NQ(a);return r}return e}function fH(t){return uH(t)?t[0]:null}var _ht,Ghe,Yhe=It(()=>{_ht=(t,e,r)=>{let s=[...t];return s.reverse(),s.findIndex(e,r)};Ghe=Symbol()});var OQ={};Vt(OQ,{getDefaultGlobalFolder:()=>pH,getHomeFolder:()=>AI,isFolderInside:()=>hH});function pH(){if(process.platform===\"win32\"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,AH.homedir)(),\"AppData\",\"Local\"));return K.resolve(t,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return K.resolve(t,\"yarn/berry\")}return K.resolve(AI(),\".yarn/berry\")}function AI(){return ue.toPortablePath((0,AH.homedir)()||\"/usr/local/share\")}function hH(t,e){let r=K.relative(e,t);return r&&!r.startsWith(\"..\")&&!K.isAbsolute(r)}var AH,LQ=It(()=>{bt();AH=ye(\"os\")});var zhe=L(pI=>{\"use strict\";var uzt=ye(\"net\"),qht=ye(\"tls\"),gH=ye(\"http\"),Vhe=ye(\"https\"),Ght=ye(\"events\"),fzt=ye(\"assert\"),Wht=ye(\"util\");pI.httpOverHttp=Yht;pI.httpsOverHttp=Vht;pI.httpOverHttps=Kht;pI.httpsOverHttps=Jht;function Yht(t){var e=new Op(t);return e.request=gH.request,e}function Vht(t){var e=new Op(t);return e.request=gH.request,e.createSocket=Khe,e.defaultPort=443,e}function Kht(t){var e=new Op(t);return e.request=Vhe.request,e}function Jht(t){var e=new Op(t);return e.request=Vhe.request,e.createSocket=Khe,e.defaultPort=443,e}function Op(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||gH.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on(\"free\",function(s,a,n,c){for(var f=Jhe(a,n,c),p=0,h=e.requests.length;p<h;++p){var E=e.requests[p];if(E.host===f.host&&E.port===f.port){e.requests.splice(p,1),E.request.onSocket(s);return}}s.destroy(),e.removeSocket(s)})}Wht.inherits(Op,Ght.EventEmitter);Op.prototype.addRequest=function(e,r,s,a){var n=this,c=dH({request:e},n.options,Jhe(r,s,a));if(n.sockets.length>=this.maxSockets){n.requests.push(c);return}n.createSocket(c,function(f){f.on(\"free\",p),f.on(\"close\",h),f.on(\"agentRemove\",h),e.onSocket(f);function p(){n.emit(\"free\",f,c)}function h(E){n.removeSocket(f),f.removeListener(\"free\",p),f.removeListener(\"close\",h),f.removeListener(\"agentRemove\",h)}})};Op.prototype.createSocket=function(e,r){var s=this,a={};s.sockets.push(a);var n=dH({},s.proxyOptions,{method:\"CONNECT\",path:e.host+\":\"+e.port,agent:!1,headers:{host:e.host+\":\"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers[\"Proxy-Authorization\"]=\"Basic \"+new Buffer(n.proxyAuth).toString(\"base64\")),w0(\"making CONNECT request\");var c=s.request(n);c.useChunkedEncodingByDefault=!1,c.once(\"response\",f),c.once(\"upgrade\",p),c.once(\"connect\",h),c.once(\"error\",E),c.end();function f(C){C.upgrade=!0}function p(C,S,P){process.nextTick(function(){h(C,S,P)})}function h(C,S,P){if(c.removeAllListeners(),S.removeAllListeners(),C.statusCode!==200){w0(\"tunneling socket could not be established, statusCode=%d\",C.statusCode),S.destroy();var I=new Error(\"tunneling socket could not be established, statusCode=\"+C.statusCode);I.code=\"ECONNRESET\",e.request.emit(\"error\",I),s.removeSocket(a);return}if(P.length>0){w0(\"got illegal response body from proxy\"),S.destroy();var I=new Error(\"got illegal response body from proxy\");I.code=\"ECONNRESET\",e.request.emit(\"error\",I),s.removeSocket(a);return}return w0(\"tunneling connection has established\"),s.sockets[s.sockets.indexOf(a)]=S,r(S)}function E(C){c.removeAllListeners(),w0(`tunneling socket could not be established, cause=%s\n`,C.message,C.stack);var S=new Error(\"tunneling socket could not be established, cause=\"+C.message);S.code=\"ECONNRESET\",e.request.emit(\"error\",S),s.removeSocket(a)}};Op.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var s=this.requests.shift();s&&this.createSocket(s,function(a){s.request.onSocket(a)})}};function Khe(t,e){var r=this;Op.prototype.createSocket.call(r,t,function(s){var a=t.request.getHeader(\"host\"),n=dH({},r.options,{socket:s,servername:a?a.replace(/:.*$/,\"\"):t.host}),c=qht.connect(0,n);r.sockets[r.sockets.indexOf(s)]=c,e(c)})}function Jhe(t,e,r){return typeof t==\"string\"?{host:t,port:e,localAddress:r}:t}function dH(t){for(var e=1,r=arguments.length;e<r;++e){var s=arguments[e];if(typeof s==\"object\")for(var a=Object.keys(s),n=0,c=a.length;n<c;++n){var f=a[n];s[f]!==void 0&&(t[f]=s[f])}}return t}var w0;process.env.NODE_DEBUG&&/\\btunnel\\b/.test(process.env.NODE_DEBUG)?w0=function(){var t=Array.prototype.slice.call(arguments);typeof t[0]==\"string\"?t[0]=\"TUNNEL: \"+t[0]:t.unshift(\"TUNNEL:\"),console.error.apply(console,t)}:w0=function(){};pI.debug=w0});var Xhe=L((pzt,Zhe)=>{Zhe.exports=zhe()});var Mp=L((Lp,MQ)=>{\"use strict\";Object.defineProperty(Lp,\"__esModule\",{value:!0});var $he=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function zht(t){return $he.includes(t)}var Zht=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Blob\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...$he];function Xht(t){return Zht.includes(t)}var $ht=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function e0t(t){return $ht.includes(t)}function hI(t){return e=>typeof e===t}var{toString:e0e}=Object.prototype,ov=t=>{let e=e0e.call(t).slice(8,-1);if(/HTML\\w+Element/.test(e)&&be.domElement(t))return\"HTMLElement\";if(Xht(e))return e},Ai=t=>e=>ov(e)===t;function be(t){if(t===null)return\"null\";switch(typeof t){case\"undefined\":return\"undefined\";case\"string\":return\"string\";case\"number\":return\"number\";case\"boolean\":return\"boolean\";case\"function\":return\"Function\";case\"bigint\":return\"bigint\";case\"symbol\":return\"symbol\";default:}if(be.observable(t))return\"Observable\";if(be.array(t))return\"Array\";if(be.buffer(t))return\"Buffer\";let e=ov(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError(\"Please don't use object wrappers for primitive types\");return\"Object\"}be.undefined=hI(\"undefined\");be.string=hI(\"string\");var t0t=hI(\"number\");be.number=t=>t0t(t)&&!be.nan(t);be.bigint=hI(\"bigint\");be.function_=hI(\"function\");be.null_=t=>t===null;be.class_=t=>be.function_(t)&&t.toString().startsWith(\"class \");be.boolean=t=>t===!0||t===!1;be.symbol=hI(\"symbol\");be.numericString=t=>be.string(t)&&!be.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));be.array=(t,e)=>Array.isArray(t)?be.function_(e)?t.every(e):!0:!1;be.buffer=t=>{var e,r,s,a;return(a=(s=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,t))!==null&&a!==void 0?a:!1};be.blob=t=>Ai(\"Blob\")(t);be.nullOrUndefined=t=>be.null_(t)||be.undefined(t);be.object=t=>!be.null_(t)&&(typeof t==\"object\"||be.function_(t));be.iterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};be.asyncIterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};be.generator=t=>{var e,r;return be.iterable(t)&&be.function_((e=t)===null||e===void 0?void 0:e.next)&&be.function_((r=t)===null||r===void 0?void 0:r.throw)};be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>Ai(\"Promise\")(t);var r0t=t=>{var e,r;return be.function_((e=t)===null||e===void 0?void 0:e.then)&&be.function_((r=t)===null||r===void 0?void 0:r.catch)};be.promise=t=>be.nativePromise(t)||r0t(t);be.generatorFunction=Ai(\"GeneratorFunction\");be.asyncGeneratorFunction=t=>ov(t)===\"AsyncGeneratorFunction\";be.asyncFunction=t=>ov(t)===\"AsyncFunction\";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty(\"prototype\");be.regExp=Ai(\"RegExp\");be.date=Ai(\"Date\");be.error=Ai(\"Error\");be.map=t=>Ai(\"Map\")(t);be.set=t=>Ai(\"Set\")(t);be.weakMap=t=>Ai(\"WeakMap\")(t);be.weakSet=t=>Ai(\"WeakSet\")(t);be.int8Array=Ai(\"Int8Array\");be.uint8Array=Ai(\"Uint8Array\");be.uint8ClampedArray=Ai(\"Uint8ClampedArray\");be.int16Array=Ai(\"Int16Array\");be.uint16Array=Ai(\"Uint16Array\");be.int32Array=Ai(\"Int32Array\");be.uint32Array=Ai(\"Uint32Array\");be.float32Array=Ai(\"Float32Array\");be.float64Array=Ai(\"Float64Array\");be.bigInt64Array=Ai(\"BigInt64Array\");be.bigUint64Array=Ai(\"BigUint64Array\");be.arrayBuffer=Ai(\"ArrayBuffer\");be.sharedArrayBuffer=Ai(\"SharedArrayBuffer\");be.dataView=Ai(\"DataView\");be.enumCase=(t,e)=>Object.values(e).includes(t);be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>Ai(\"URL\")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>!!t;be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||e0t(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(e0e.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>zht(ov(t));var n0t=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&n0t(t.length);be.inRange=(t,e)=>{if(be.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(be.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var i0t=1,s0t=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];be.domElement=t=>be.object(t)&&t.nodeType===i0t&&be.string(t.nodeName)&&!be.plainObject(t)&&s0t.every(e=>e in t);be.observable=t=>{var e,r,s,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(s=t)[\"@@observable\"])===null||a===void 0?void 0:a.call(s)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var t0e=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=t0e(0);be.oddInteger=t0e(1);be.emptyArray=t=>be.array(t)&&t.length===0;be.nonEmptyArray=t=>be.array(t)&&t.length>0;be.emptyString=t=>be.string(t)&&t.length===0;var o0t=t=>be.string(t)&&!/\\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||o0t(t);be.nonEmptyString=t=>be.string(t)&&t.length>0;be.nonEmptyStringAndNotWhitespace=t=>be.string(t)&&!be.emptyStringOrWhitespace(t);be.emptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length===0;be.nonEmptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length>0;be.emptySet=t=>be.set(t)&&t.size===0;be.nonEmptySet=t=>be.set(t)&&t.size>0;be.emptyMap=t=>be.map(t)&&t.size===0;be.nonEmptyMap=t=>be.map(t)&&t.size>0;be.propertyKey=t=>be.any([be.string,be.number,be.symbol],t);be.formData=t=>Ai(\"FormData\")(t);be.urlSearchParams=t=>Ai(\"URLSearchParams\")(t);var r0e=(t,e,r)=>{if(!be.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError(\"Invalid number of values\");return t.call(r,e)};be.any=(t,...e)=>(be.array(t)?t:[t]).some(s=>r0e(Array.prototype.some,s,e));be.all=(t,...e)=>r0e(Array.prototype.every,t,e);var _t=(t,e,r,s={})=>{if(!t){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\\`${be(c)}\\``))].join(\", \")}`:`received value of type \\`${be(r)}\\``;throw new TypeError(`Expected value which is \\`${e}\\`, ${n}.`)}};Lp.assert={undefined:t=>_t(be.undefined(t),\"undefined\",t),string:t=>_t(be.string(t),\"string\",t),number:t=>_t(be.number(t),\"number\",t),bigint:t=>_t(be.bigint(t),\"bigint\",t),function_:t=>_t(be.function_(t),\"Function\",t),null_:t=>_t(be.null_(t),\"null\",t),class_:t=>_t(be.class_(t),\"Class\",t),boolean:t=>_t(be.boolean(t),\"boolean\",t),symbol:t=>_t(be.symbol(t),\"symbol\",t),numericString:t=>_t(be.numericString(t),\"string with a number\",t),array:(t,e)=>{_t(be.array(t),\"Array\",t),e&&t.forEach(e)},buffer:t=>_t(be.buffer(t),\"Buffer\",t),blob:t=>_t(be.blob(t),\"Blob\",t),nullOrUndefined:t=>_t(be.nullOrUndefined(t),\"null or undefined\",t),object:t=>_t(be.object(t),\"Object\",t),iterable:t=>_t(be.iterable(t),\"Iterable\",t),asyncIterable:t=>_t(be.asyncIterable(t),\"AsyncIterable\",t),generator:t=>_t(be.generator(t),\"Generator\",t),asyncGenerator:t=>_t(be.asyncGenerator(t),\"AsyncGenerator\",t),nativePromise:t=>_t(be.nativePromise(t),\"native Promise\",t),promise:t=>_t(be.promise(t),\"Promise\",t),generatorFunction:t=>_t(be.generatorFunction(t),\"GeneratorFunction\",t),asyncGeneratorFunction:t=>_t(be.asyncGeneratorFunction(t),\"AsyncGeneratorFunction\",t),asyncFunction:t=>_t(be.asyncFunction(t),\"AsyncFunction\",t),boundFunction:t=>_t(be.boundFunction(t),\"Function\",t),regExp:t=>_t(be.regExp(t),\"RegExp\",t),date:t=>_t(be.date(t),\"Date\",t),error:t=>_t(be.error(t),\"Error\",t),map:t=>_t(be.map(t),\"Map\",t),set:t=>_t(be.set(t),\"Set\",t),weakMap:t=>_t(be.weakMap(t),\"WeakMap\",t),weakSet:t=>_t(be.weakSet(t),\"WeakSet\",t),int8Array:t=>_t(be.int8Array(t),\"Int8Array\",t),uint8Array:t=>_t(be.uint8Array(t),\"Uint8Array\",t),uint8ClampedArray:t=>_t(be.uint8ClampedArray(t),\"Uint8ClampedArray\",t),int16Array:t=>_t(be.int16Array(t),\"Int16Array\",t),uint16Array:t=>_t(be.uint16Array(t),\"Uint16Array\",t),int32Array:t=>_t(be.int32Array(t),\"Int32Array\",t),uint32Array:t=>_t(be.uint32Array(t),\"Uint32Array\",t),float32Array:t=>_t(be.float32Array(t),\"Float32Array\",t),float64Array:t=>_t(be.float64Array(t),\"Float64Array\",t),bigInt64Array:t=>_t(be.bigInt64Array(t),\"BigInt64Array\",t),bigUint64Array:t=>_t(be.bigUint64Array(t),\"BigUint64Array\",t),arrayBuffer:t=>_t(be.arrayBuffer(t),\"ArrayBuffer\",t),sharedArrayBuffer:t=>_t(be.sharedArrayBuffer(t),\"SharedArrayBuffer\",t),dataView:t=>_t(be.dataView(t),\"DataView\",t),enumCase:(t,e)=>_t(be.enumCase(t,e),\"EnumCase\",t),urlInstance:t=>_t(be.urlInstance(t),\"URL\",t),urlString:t=>_t(be.urlString(t),\"string with a URL\",t),truthy:t=>_t(be.truthy(t),\"truthy\",t),falsy:t=>_t(be.falsy(t),\"falsy\",t),nan:t=>_t(be.nan(t),\"NaN\",t),primitive:t=>_t(be.primitive(t),\"primitive\",t),integer:t=>_t(be.integer(t),\"integer\",t),safeInteger:t=>_t(be.safeInteger(t),\"integer\",t),plainObject:t=>_t(be.plainObject(t),\"plain object\",t),typedArray:t=>_t(be.typedArray(t),\"TypedArray\",t),arrayLike:t=>_t(be.arrayLike(t),\"array-like\",t),domElement:t=>_t(be.domElement(t),\"HTMLElement\",t),observable:t=>_t(be.observable(t),\"Observable\",t),nodeStream:t=>_t(be.nodeStream(t),\"Node.js Stream\",t),infinite:t=>_t(be.infinite(t),\"infinite number\",t),emptyArray:t=>_t(be.emptyArray(t),\"empty array\",t),nonEmptyArray:t=>_t(be.nonEmptyArray(t),\"non-empty array\",t),emptyString:t=>_t(be.emptyString(t),\"empty string\",t),emptyStringOrWhitespace:t=>_t(be.emptyStringOrWhitespace(t),\"empty string or whitespace\",t),nonEmptyString:t=>_t(be.nonEmptyString(t),\"non-empty string\",t),nonEmptyStringAndNotWhitespace:t=>_t(be.nonEmptyStringAndNotWhitespace(t),\"non-empty string and not whitespace\",t),emptyObject:t=>_t(be.emptyObject(t),\"empty object\",t),nonEmptyObject:t=>_t(be.nonEmptyObject(t),\"non-empty object\",t),emptySet:t=>_t(be.emptySet(t),\"empty set\",t),nonEmptySet:t=>_t(be.nonEmptySet(t),\"non-empty set\",t),emptyMap:t=>_t(be.emptyMap(t),\"empty map\",t),nonEmptyMap:t=>_t(be.nonEmptyMap(t),\"non-empty map\",t),propertyKey:t=>_t(be.propertyKey(t),\"PropertyKey\",t),formData:t=>_t(be.formData(t),\"FormData\",t),urlSearchParams:t=>_t(be.urlSearchParams(t),\"URLSearchParams\",t),evenInteger:t=>_t(be.evenInteger(t),\"even integer\",t),oddInteger:t=>_t(be.oddInteger(t),\"odd integer\",t),directInstanceOf:(t,e)=>_t(be.directInstanceOf(t,e),\"T\",t),inRange:(t,e)=>_t(be.inRange(t,e),\"in range\",t),any:(t,...e)=>_t(be.any(t,...e),\"predicate returns truthy for any value\",e,{multipleValues:!0}),all:(t,...e)=>_t(be.all(t,...e),\"predicate returns truthy for all values\",e,{multipleValues:!0})};Object.defineProperties(be,{class:{value:be.class_},function:{value:be.function_},null:{value:be.null_}});Object.defineProperties(Lp.assert,{class:{value:Lp.assert.class_},function:{value:Lp.assert.function_},null:{value:Lp.assert.null_}});Lp.default=be;MQ.exports=be;MQ.exports.default=be;MQ.exports.assert=Lp.assert});var n0e=L((hzt,mH)=>{\"use strict\";var _Q=class extends Error{constructor(e){super(e||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},UQ=class t{static fn(e){return(...r)=>new t((s,a,n)=>{r.push(n),e(...r).then(s,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),e(a,n,c)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new _Q(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(UQ.prototype,Promise.prototype);mH.exports=UQ;mH.exports.CancelError=_Q});var i0e=L((EH,IH)=>{\"use strict\";Object.defineProperty(EH,\"__esModule\",{value:!0});function a0t(t){return t.encrypted}var yH=(t,e)=>{let r;typeof e==\"function\"?r={connect:e}:r=e;let s=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",c=()=>{s&&r.connect(),a0t(t)&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once(\"secureConnect\",r.secureConnect)),n&&t.once(\"close\",r.close)};t.writable&&!t.connecting?c():t.connecting?t.once(\"connect\",c):t.destroyed&&n&&r.close(t._hadError)};EH.default=yH;IH.exports=yH;IH.exports.default=yH});var s0e=L((wH,BH)=>{\"use strict\";Object.defineProperty(wH,\"__esModule\",{value:!0});var l0t=i0e(),c0t=Number(process.versions.node.split(\".\")[0]),CH=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p===\"error\"&&(e.error=Date.now(),e.phases.total=e.error-e.start,c.emit=f),f(p,...h))};r(t),t.prependOnceListener(\"abort\",()=>{e.abort=Date.now(),(!e.response||c0t>=13)&&(e.phases.total=Date.now()-e.start)});let s=c=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let f=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};c.prependOnceListener(\"lookup\",f),l0t.default(c,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(c.removeListener(\"lookup\",f),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?s(t.socket):t.prependOnceListener(\"socket\",s);let a=()=>{var c;e.upload=Date.now(),e.phases.request=e.upload-(c=e.secureConnect,c??e.connect)};return(typeof t.writableFinished==\"boolean\"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))?a():t.prependOnceListener(\"finish\",a),t.prependOnceListener(\"response\",c=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,c.timings=e,r(c),c.prependOnceListener(\"end\",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};wH.default=CH;BH.exports=CH;BH.exports.default=CH});var A0e=L((gzt,DH)=>{\"use strict\";var{V4MAPPED:u0t,ADDRCONFIG:f0t,ALL:f0e,promises:{Resolver:o0e},lookup:A0t}=ye(\"dns\"),{promisify:vH}=ye(\"util\"),p0t=ye(\"os\"),gI=Symbol(\"cacheableLookupCreateConnection\"),SH=Symbol(\"cacheableLookupInstance\"),a0e=Symbol(\"expires\"),h0t=typeof f0e==\"number\",l0e=t=>{if(!(t&&typeof t.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},g0t=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},c0e=()=>{let t=!1,e=!1;for(let r of Object.values(p0t.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family===\"IPv6\"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},d0t=t=>Symbol.iterator in t,u0e={ttl:!0},m0t={all:!0},HQ=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new o0e,lookup:c=A0t}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=vH(c),this._resolver instanceof o0e?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=vH(this._resolver.resolve4.bind(this._resolver)),this._resolve6=vH(this._resolver.resolve6.bind(this._resolver))),this._iface=c0e(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,s){if(typeof r==\"function\"?(s=r,r={}):typeof r==\"number\"&&(r={family:r}),!s)throw new Error(\"Callback must be a function.\");this.lookupAsync(e,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(e,r={}){typeof r==\"number\"&&(r={family:r});let s=await this.query(e);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&u0t&&(h0t&&r.hints&f0e||a.length===0)?g0t(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&f0t){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code=\"ENOTFOUND\",a.hostname=e,a}return r.all?s:s[0]}async query(e){let r=await this._cache.get(e);if(!r){let s=this._pending[e];if(s)r=await s;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[s,a]=await Promise.all([this._resolve4(e,u0e),this._resolve6(e,u0e)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[a0e]=Date.now()+s;try{await this._cache.set(e,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}d0t(this._cache)&&this._tick(s)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,m0t);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,s),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[a0e];a>=f?this._cache.delete(n):f<s&&(s=f)}s!==1/0&&this._tick(s-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(l0e(e),gI in e)throw new Error(\"CacheableLookup has been already installed\");e[gI]=e.createConnection,e[SH]=this,e.createConnection=(r,s)=>(\"lookup\"in r||(r.lookup=this.lookup),e[gI](r,s))}uninstall(e){if(l0e(e),e[gI]){if(e[SH]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");e.createConnection=e[gI],delete e[gI],delete e[SH]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=c0e(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};DH.exports=HQ;DH.exports.default=HQ});var g0e=L((dzt,bH)=>{\"use strict\";var y0t=typeof URL>\"u\"?ye(\"url\").URL:URL,E0t=\"text/plain\",I0t=\"us-ascii\",p0e=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),C0t=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let s=r[1].split(\";\"),a=r[2],n=e?\"\":r[3],c=!1;s[s.length-1]===\"base64\"&&(s.pop(),c=!0);let f=(s.shift()||\"\").toLowerCase(),h=[...s.map(E=>{let[C,S=\"\"]=E.split(\"=\").map(P=>P.trim());return C===\"charset\"&&(S=S.toLowerCase(),S===I0t)?\"\":`${C}${S?`=${S}`:\"\"}`}).filter(Boolean)];return c&&h.push(\"base64\"),(h.length!==0||f&&f!==E0t)&&h.unshift(f),`data:${h.join(\";\")},${c?a.trim():a}${n?`#${n}`:\"\"}`},h0e=(t,e)=>{if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,\"normalizeHttps\"))throw new Error(\"options.normalizeHttps is renamed to options.forceHttp\");if(Reflect.has(e,\"normalizeHttp\"))throw new Error(\"options.normalizeHttp is renamed to options.forceHttps\");if(Reflect.has(e,\"stripFragment\"))throw new Error(\"options.stripFragment is renamed to options.stripHash\");if(t=t.trim(),/^data:/i.test(t))return C0t(t,e);let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new y0t(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash&&(a.hash=\"\"),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\\/{2,}/g,(n,c)=>/^(?!\\/)/g.test(c)?`${c}/`:\"/\")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split(\"/\"),c=n[n.length-1];p0e(c,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])p0e(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\")),t=a.toString(),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t};bH.exports=h0e;bH.exports.default=h0e});var y0e=L((mzt,m0e)=>{m0e.exports=d0e;function d0e(t,e){if(t&&e)return d0e(t)(e);if(typeof t!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(t).forEach(function(s){r[s]=t[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];var n=t.apply(this,s),c=s[s.length-1];return typeof n==\"function\"&&n!==c&&Object.keys(c).forEach(function(f){n[f]=c[f]}),n}}});var xH=L((yzt,PH)=>{var E0e=y0e();PH.exports=E0e(jQ);PH.exports.strict=E0e(I0e);jQ.proto=jQ(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return jQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return I0e(this)},configurable:!0})});function jQ(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function I0e(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||\"Function wrapped with `once`\";return e.onceError=r+\" shouldn't be called more than once\",e.called=!1,e}});var kH=L((Ezt,w0e)=>{var w0t=xH(),B0t=function(){},v0t=function(t){return t.setHeader&&typeof t.abort==\"function\"},S0t=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},C0e=function(t,e,r){if(typeof e==\"function\")return C0e(t,null,e);e||(e={}),r=w0t(r||B0t);var s=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,c=e.writable||e.writable!==!1&&t.writable,f=function(){t.writable||p()},p=function(){c=!1,n||r.call(t)},h=function(){n=!1,c||r.call(t)},E=function(I){r.call(t,I?new Error(\"exited with error code: \"+I):null)},C=function(I){r.call(t,I)},S=function(){if(n&&!(a&&a.ended))return r.call(t,new Error(\"premature close\"));if(c&&!(s&&s.ended))return r.call(t,new Error(\"premature close\"))},P=function(){t.req.on(\"finish\",p)};return v0t(t)?(t.on(\"complete\",p),t.on(\"abort\",S),t.req?P():t.on(\"request\",P)):c&&!s&&(t.on(\"end\",f),t.on(\"close\",f)),S0t(t)&&t.on(\"exit\",E),t.on(\"end\",h),t.on(\"finish\",p),e.error!==!1&&t.on(\"error\",C),t.on(\"close\",S),function(){t.removeListener(\"complete\",p),t.removeListener(\"abort\",S),t.removeListener(\"request\",P),t.req&&t.req.removeListener(\"finish\",p),t.removeListener(\"end\",f),t.removeListener(\"close\",f),t.removeListener(\"finish\",p),t.removeListener(\"exit\",E),t.removeListener(\"end\",h),t.removeListener(\"error\",C),t.removeListener(\"close\",S)}};w0e.exports=C0e});var S0e=L((Izt,v0e)=>{var D0t=xH(),b0t=kH(),QH=ye(\"fs\"),av=function(){},P0t=/^v?\\.0/.test(process.version),qQ=function(t){return typeof t==\"function\"},x0t=function(t){return!P0t||!QH?!1:(t instanceof(QH.ReadStream||av)||t instanceof(QH.WriteStream||av))&&qQ(t.close)},k0t=function(t){return t.setHeader&&qQ(t.abort)},Q0t=function(t,e,r,s){s=D0t(s);var a=!1;t.on(\"close\",function(){a=!0}),b0t(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,x0t(t))return t.close(av);if(k0t(t))return t.abort();if(qQ(t.destroy))return t.destroy();s(c||new Error(\"stream was destroyed\"))}}},B0e=function(t){t()},T0t=function(t,e){return t.pipe(e)},R0t=function(){var t=Array.prototype.slice.call(arguments),e=qQ(t[t.length-1]||av)&&t.pop()||av;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error(\"pump requires two streams per minimum\");var r,s=t.map(function(a,n){var c=n<t.length-1,f=n>0;return Q0t(a,c,f,function(p){r||(r=p),p&&s.forEach(B0e),!c&&(s.forEach(B0e),e(r))})});return t.reduce(T0t)};v0e.exports=R0t});var b0e=L((Czt,D0e)=>{\"use strict\";var{PassThrough:F0t}=ye(\"stream\");D0e.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,s=r===\"buffer\",a=!1;e?a=!(r||s):r=r||\"utf8\",s&&(r=null);let n=new F0t({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on(\"data\",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>e?f:s?Buffer.concat(f,c):f.join(\"\"),n.getBufferedLength=()=>c,n}});var P0e=L((wzt,dI)=>{\"use strict\";var N0t=S0e(),O0t=b0e(),GQ=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function WQ(t,e){if(!t)return Promise.reject(new Error(\"Expected a stream\"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=N0t(t,O0t(e),f=>{if(f){c(f);return}a()}),s.on(\"data\",()=>{s.getBufferedLength()>r&&c(new GQ)})}),s.getBufferedValue()}dI.exports=WQ;dI.exports.default=WQ;dI.exports.buffer=(t,e)=>WQ(t,{...e,encoding:\"buffer\"});dI.exports.array=(t,e)=>WQ(t,{...e,array:!0});dI.exports.MaxBufferError=GQ});var k0e=L((vzt,x0e)=>{\"use strict\";var L0t=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),M0t=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),_0t=new Set([500,502,503,504]),U0t={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},H0t={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function nm(t){let e=parseInt(t,10);return isFinite(e)?e:0}function j0t(t){return t?_0t.has(t.status):!0}function TH(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);e[a.trim()]=n===void 0?!0:n.trim().replace(/^\"|\"$/g,\"\")}return e}function q0t(t){let e=[];for(let r in t){let s=t[r];e.push(s===!0?r:r+\"=\"+s)}if(e.length)return e.join(\", \")}x0e.exports=class{constructor(e,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status=\"status\"in r?r.status:200,this._resHeaders=r.headers,this._rescc=TH(r.headers[\"cache-control\"]),this._method=\"method\"in e?e.method:\"GET\",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=TH(e.headers[\"cache-control\"]),c&&\"pre-check\"in this._rescc&&\"post-check\"in this._rescc&&(delete this._rescc[\"pre-check\"],delete this._rescc[\"post-check\"],delete this._rescc[\"no-cache\"],delete this._rescc[\"no-store\"],delete this._rescc[\"must-revalidate\"],this._resHeaders=Object.assign({},this._resHeaders,{\"cache-control\":q0t(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers[\"cache-control\"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc[\"no-cache\"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc[\"no-store\"]&&(this._method===\"GET\"||this._method===\"HEAD\"||this._method===\"POST\"&&this._hasExplicitExpiration())&&M0t.has(this._status)&&!this._rescc[\"no-store\"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc[\"max-age\"]||this._isShared&&this._rescc[\"s-maxage\"]||this._rescc.public||L0t.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc[\"s-maxage\"]||this._rescc[\"max-age\"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error(\"Request headers missing\")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=TH(e.headers[\"cache-control\"]);return r[\"no-cache\"]||/no-cache/.test(e.headers.pragma)||r[\"max-age\"]&&this.age()>r[\"max-age\"]||r[\"min-fresh\"]&&this.timeToLive()<1e3*r[\"min-fresh\"]||this.stale()&&!(r[\"max-stale\"]&&!this._rescc[\"must-revalidate\"]&&(r[\"max-stale\"]===!0||r[\"max-stale\"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method===\"HEAD\")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc[\"must-revalidate\"]||this._rescc.public||this._rescc[\"s-maxage\"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary===\"*\")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\\s*,\\s*/);for(let s of r)if(e.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let s in e)U0t[s]||(r[s]=e[s]);if(e.connection){let s=e.connection.trim().split(/\\s*,\\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(\",\").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:\"\")+'113 - \"rfc7234 5.5.4\"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return nm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc[\"no-cache\"]||this._isShared&&this._resHeaders[\"set-cookie\"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary===\"*\")return 0;if(this._isShared){if(this._rescc[\"proxy-revalidate\"])return 0;if(this._rescc[\"s-maxage\"])return nm(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return nm(this._rescc[\"max-age\"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||s<r?0:Math.max(e,(s-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let s=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(s)&&r>s)return Math.max(e,(r-s)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+nm(this._rescc[\"stale-if-error\"]),s=e+nm(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,e,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+nm(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+nm(this._rescc[\"stale-while-revalidate\"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error(\"Reinitialized\");if(!e||e.v!==1)throw Error(\"Invalid serialization\");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r[\"if-range\"],!this._requestMatches(e,!0)||!this.storable())return delete r[\"if-none-match\"],delete r[\"if-modified-since\"],r;if(this._resHeaders.etag&&(r[\"if-none-match\"]=r[\"if-none-match\"]?`${r[\"if-none-match\"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r[\"accept-ranges\"]||r[\"if-match\"]||r[\"if-unmodified-since\"]||this._method&&this._method!=\"GET\"){if(delete r[\"if-modified-since\"],r[\"if-none-match\"]){let a=r[\"if-none-match\"].split(/,/).filter(n=>!/^\\s*W\\//.test(n));a.length?r[\"if-none-match\"]=a.join(\",\").trim():delete r[\"if-none-match\"]}}else this._resHeaders[\"last-modified\"]&&!r[\"if-modified-since\"]&&(r[\"if-modified-since\"]=this._resHeaders[\"last-modified\"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&j0t(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?s=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(s=!0),!s)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!H0t[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var YQ=L((Szt,Q0e)=>{\"use strict\";Q0e.exports=t=>{let e={};for(let[r,s]of Object.entries(t))e[r.toLowerCase()]=s;return e}});var R0e=L((Dzt,T0e)=>{\"use strict\";var G0t=ye(\"stream\").Readable,W0t=YQ(),RH=class extends G0t{constructor(e,r,s,a){if(typeof e!=\"number\")throw new TypeError(\"Argument `statusCode` should be a number\");if(typeof r!=\"object\")throw new TypeError(\"Argument `headers` should be an object\");if(!(s instanceof Buffer))throw new TypeError(\"Argument `body` should be a buffer\");if(typeof a!=\"string\")throw new TypeError(\"Argument `url` should be a string\");super(),this.statusCode=e,this.headers=W0t(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};T0e.exports=RH});var N0e=L((bzt,F0e)=>{\"use strict\";var Y0t=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];F0e.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Y0t));for(let s of r)s in e||(e[s]=typeof t[s]==\"function\"?t[s].bind(t):t[s])}});var L0e=L((Pzt,O0e)=>{\"use strict\";var V0t=ye(\"stream\").PassThrough,K0t=N0e(),J0t=t=>{if(!(t&&t.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let e=new V0t;return K0t(t,e),t.pipe(e)};O0e.exports=J0t});var M0e=L(FH=>{FH.stringify=function t(e){if(typeof e>\"u\")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(\":base64:\"+e.toString(\"base64\"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e==\"object\"){var r=\"\",s=Array.isArray(e);r=s?\"[\":\"{\";var a=!0;for(var n in e){var c=typeof e[n]==\"function\"||!s&&typeof e[n]>\"u\";Object.hasOwnProperty.call(e,n)&&!c&&(a||(r+=\",\"),a=!1,s?e[n]==null?r+=\"null\":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+\":\"+t(e[n])))}return r+=s?\"]\":\"}\",r}else return typeof e==\"string\"?JSON.stringify(/^:/.test(e)?\":\"+e:e):typeof e>\"u\"?\"null\":JSON.stringify(e)};FH.parse=function(t){return JSON.parse(t,function(e,r){return typeof r==\"string\"?/^:base64:/.test(r)?Buffer.from(r.substring(8),\"base64\"):/^:/.test(r)?r.substring(1):r:r})}});var j0e=L((kzt,H0e)=>{\"use strict\";var z0t=ye(\"events\"),_0e=M0e(),Z0t=t=>{let e={redis:\"@keyv/redis\",rediss:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\",etcd:\"@keyv/etcd\",offline:\"@keyv/offline\",tiered:\"@keyv/tiered\"};if(t.adapter||t.uri){let r=t.adapter||/^[^:+]*/.exec(t.uri)[0];return new(ye(e[r]))(t)}return new Map},U0e=[\"sqlite\",\"postgres\",\"mysql\",\"mongo\",\"redis\",\"tiered\"],NH=class extends z0t{constructor(e,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:\"keyv\",serialize:_0e.stringify,deserialize:_0e.parse,...typeof e==\"string\"?{uri:e}:e,...s},!this.opts.store){let n={...this.opts};this.opts.store=Z0t(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on==\"function\"&&r&&this.opts.store.on(\"error\",n=>this.emit(\"error\",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n==\"function\"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires==\"number\"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]==\"function\"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator==\"function\"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return U0e.includes(this.opts.store.opts.dialect)||U0e.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(e){return e.split(\":\").splice(1).join(\":\")}get(e,r){let{store:s}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p==\"string\"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires==\"number\"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c==\"string\"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f==\"string\"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires==\"number\"&&Date.now()>f.expires){this.delete(e[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires==\"number\"&&Date.now()>c.expires?this.delete(e).then(()=>{}):r&&r.raw?c:c.value})}set(e,r,s){let a=this._getKeyPrefix(e);typeof s>\"u\"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s==\"number\"?Date.now()+s:null;return typeof r==\"symbol\"&&this.emit(\"error\",\"symbol cannot be serialized\"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKeyPrefixArray(e);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(e);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let r=this._getKeyPrefix(e),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has==\"function\"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect==\"function\")return e.disconnect()}};H0e.exports=NH});var W0e=L((Tzt,G0e)=>{\"use strict\";var X0t=ye(\"events\"),VQ=ye(\"url\"),$0t=g0e(),egt=P0e(),OH=k0e(),q0e=R0e(),tgt=YQ(),rgt=L0e(),ngt=j0e(),lv=class t{constructor(e,r){if(typeof e!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new ngt({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,s)=>{let a;if(typeof r==\"string\")a=LH(VQ.parse(r)),r={};else if(r instanceof VQ.URL)a=LH(VQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||\"\").split(\"?\"),P=S.length>0?`?${S.join(\"?\")}`:\"\";a=LH({...r,pathname:C,search:P})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...igt(a)},r.headers=tgt(r.headers);let n=new X0t,c=$0t(VQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,P,I=new Promise(N=>{P=()=>{S||(S=!0,N())}}),R=N=>{if(p&&!C.forceRefresh){N.status=N.statusCode;let W=OH.fromObject(p.cachePolicy).revalidatedPolicy(C,N);if(!W.modified){let te=W.policy.responseHeaders();N=new q0e(p.statusCode,te,p.body,p.url),N.cachePolicy=W.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new OH(C,N,C),N.fromCache=!1);let U;C.cache&&N.cachePolicy.storable()?(U=rgt(N),(async()=>{try{let W=egt.buffer(N);if(await Promise.race([I,new Promise(ce=>N.once(\"end\",ce))]),S)return;let te=await W,ie={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:te},Ae=C.strictTtl?N.cachePolicy.timeToLive():void 0;C.maxTtl&&(Ae=Ae?Math.min(Ae,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,Ae)}catch(W){n.emit(\"error\",new t.CacheError(W))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(W){n.emit(\"error\",new t.CacheError(W))}})(),n.emit(\"response\",U||N),typeof s==\"function\"&&s(U||N)};try{let N=e(C,R);N.once(\"error\",P),N.once(\"abort\",P),n.emit(\"request\",N)}catch(N){n.emit(\"error\",new t.RequestError(N))}};return(async()=>{let C=async P=>{await Promise.resolve();let I=P.cache?await this.cache.get(f):void 0;if(typeof I>\"u\")return E(P);let R=OH.fromObject(I.cachePolicy);if(R.satisfiesWithoutRevalidation(P)&&!P.forceRefresh){let N=R.responseHeaders(),U=new q0e(I.statusCode,N,I.body,I.url);U.cachePolicy=R,U.fromCache=!0,n.emit(\"response\",U),typeof s==\"function\"&&s(U)}else p=I,P.headers=R.revalidationHeaders(P),E(P)},S=P=>n.emit(\"error\",new t.CacheError(P));this.cache.once(\"error\",S),n.on(\"response\",()=>this.cache.removeListener(\"error\",S));try{await C(r)}catch(P){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new t.CacheError(P))}})(),n}}};function igt(t){let e={...t};return e.path=`${t.pathname||\"/\"}${t.search||\"\"}`,delete e.pathname,delete e.search,e}function LH(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||\"localhost\",port:t.port,pathname:t.pathname,search:t.search}}lv.RequestError=class extends Error{constructor(t){super(t.message),this.name=\"RequestError\",Object.assign(this,t)}};lv.CacheError=class extends Error{constructor(t){super(t.message),this.name=\"CacheError\",Object.assign(this,t)}};G0e.exports=lv});var V0e=L((Nzt,Y0e)=>{\"use strict\";var sgt=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];Y0e.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error(\"The second stream must have the `autoDestroy` option set to `false`\");let r=new Set(Object.keys(t).concat(sgt)),s={};for(let a of r)a in e||(s[a]={get(){let n=t[a];return typeof n==\"function\"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,s),t.once(\"aborted\",()=>{e.destroy(),e.emit(\"aborted\")}),t.once(\"close\",()=>{t.complete&&e.readable?e.once(\"end\",()=>{e.emit(\"close\")}):e.emit(\"close\")}),e}});var J0e=L((Ozt,K0e)=>{\"use strict\";var{Transform:ogt,PassThrough:agt}=ye(\"stream\"),MH=ye(\"zlib\"),lgt=V0e();K0e.exports=t=>{let e=(t.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(e))return t;let r=e===\"br\";if(r&&typeof MH.createBrotliDecompress!=\"function\")return t.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),t;let s=!0,a=new ogt({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new agt({autoDestroy:!1,destroy(f,p){t.destroy(),p(f)}}),c=r?MH.createBrotliDecompress():MH.createUnzip();return c.once(\"error\",f=>{if(s&&!t.readable){n.end();return}n.destroy(f)}),lgt(t,n),t.pipe(a).pipe(c).pipe(n),n}});var UH=L((Lzt,z0e)=>{\"use strict\";var _H=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError(\"`maxSize` must be a number greater than 0\");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction==\"function\")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};z0e.exports=_H});var jH=L((Mzt,ege)=>{\"use strict\";var cgt=ye(\"events\"),ugt=ye(\"tls\"),fgt=ye(\"http2\"),Agt=UH(),xa=Symbol(\"currentStreamsCount\"),Z0e=Symbol(\"request\"),Nc=Symbol(\"cachedOriginSet\"),mI=Symbol(\"gracefullyClosing\"),pgt=[\"maxDeflateDynamicTableSize\",\"maxSessionMemory\",\"maxHeaderListPairs\",\"maxOutstandingPings\",\"maxReservedRemoteStreams\",\"maxSendHeaderBlockLength\",\"paddingStrategy\",\"localAddress\",\"path\",\"rejectUnauthorized\",\"minDHSize\",\"ca\",\"cert\",\"clientCertEngine\",\"ciphers\",\"key\",\"pfx\",\"servername\",\"minVersion\",\"maxVersion\",\"secureProtocol\",\"crl\",\"honorCipherOrder\",\"ecdhCurve\",\"dhparam\",\"secureOptions\",\"sessionIdContext\"],hgt=(t,e,r)=>{let s=0,a=t.length;for(;s<a;){let n=s+a>>>1;r(t[n],e)?s=n+1:a=n}return s},ggt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,HH=(t,e)=>{for(let r of t)r[Nc].length<e[Nc].length&&r[Nc].every(s=>e[Nc].includes(s))&&r[xa]+e[xa]<=e.remoteSettings.maxConcurrentStreams&&$0e(r)},dgt=(t,e)=>{for(let r of t)e[Nc].length<r[Nc].length&&e[Nc].every(s=>r[Nc].includes(s))&&e[xa]+r[xa]<=r.remoteSettings.maxConcurrentStreams&&$0e(e)},X0e=({agent:t,isFree:e})=>{let r={};for(let s in t.sessions){let n=t.sessions[s].filter(c=>{let f=c[im.kCurrentStreamsCount]<c.remoteSettings.maxConcurrentStreams;return e?f:!f});n.length!==0&&(r[s]=n)}return r},$0e=t=>{t[mI]=!0,t[xa]===0&&t.close()},im=class t extends cgt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Agt({maxSize:a})}static normalizeOrigin(e,r){return typeof e==\"string\"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r=\"\";if(e)for(let s of pgt)e[s]&&(r+=`:${e[s]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let s=this.queue[e][r];this._sessionsCount<this.maxSessions&&!s.completed&&(s.completed=!0,s())}getSession(e,r,s){return new Promise((a,n)=>{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=t.normalizeOrigin(e,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,P;for(let I of E){let R=I.remoteSettings.maxConcurrentStreams;if(R<C)break;if(I[Nc].includes(f)){let N=I[xa];if(N>=R||I[mI]||I.destroyed)continue;P||(C=R),N>S&&(P=I,S=N)}}if(P){if(s.length!==1){for(let{reject:I}of s){let R=new Error(`Expected the length of listeners to be 1, got ${s.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);I(R)}return}s[0].resolve(P);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=fgt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[xa]=0,S[mI]=!1;let P=()=>S[xa]<S.remoteSettings.maxConcurrentStreams,I=!0;S.socket.once(\"session\",N=>{this.tlsSessionCache.set(E,N)}),S.once(\"error\",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once(\"close\",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[c];N.splice(N.indexOf(S),1),N.length===0&&delete this.sessions[c]}else{let N=new Error(\"Session closed without receiving a SETTINGS frame\");N.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of s)U(N);p()}this._tryToCreateNewSession(c,f)});let R=()=>{if(!(!(c in this.queue)||!P())){for(let N of S[Nc])if(N in this.queue[c]){let{listeners:U}=this.queue[c][N];for(;U.length!==0&&P();)U.shift().resolve(S);let W=this.queue[c];if(W[N].listeners.length===0&&(delete W[N],Object.keys(W).length===0)){delete this.queue[c];break}if(!P())break}}};S.on(\"origin\",()=>{S[Nc]=S.originSet,P()&&(R(),HH(this.sessions[c],S))}),S.once(\"remoteSettings\",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let N=new Error(\"Agent has been destroyed\");for(let U of s)U.reject(N);S.destroy();return}S[Nc]=S.originSet;{let N=this.sessions;if(c in N){let U=N[c];U.splice(hgt(U,S,ggt),0,S)}else N[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit(\"session\",S),R(),p(),S[xa]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on(\"remoteSettings\",()=>{R(),HH(this.sessions[c],S)})}),S[Z0e]=S.request,S.request=(N,U)=>{if(S[mI])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let W=S[Z0e](N,U);return S.ref(),++S[xa],S[xa]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,W.once(\"close\",()=>{if(I=P(),--S[xa],!S.destroyed&&!S.closed&&(dgt(this.sessions[c],S),P()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let te=S[xa]===0;te&&S.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||S[mI])?S.close():(HH(this.sessions[c],S),R())}}),W}}catch(S){for(let P of s)P.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(e,r,s,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(e,r){return t.connect(e,r)}static connect(e,r){r.ALPNProtocols=[\"h2\"];let s=e.port||443,a=e.hostname||e.host;return typeof r.servername>\"u\"&&(r.servername=a),ugt.connect(s,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[xa]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(e);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return X0e({agent:this,isFree:!0})}get busySessions(){return X0e({agent:this,isFree:!1})}};im.kCurrentStreamsCount=xa;im.kGracefullyClosing=mI;ege.exports={Agent:im,globalAgent:new im}});var GH=L((_zt,tge)=>{\"use strict\";var{Readable:mgt}=ye(\"stream\"),qH=class extends mgt{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage=\"\",this.httpVersion=\"2.0\",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners(\"data\"),this.resume())}_read(){this.req&&this.req._request.resume()}};tge.exports=qH});var WH=L((Uzt,rge)=>{\"use strict\";rge.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname==\"string\"&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return typeof t.port==\"string\"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var ige=L((Hzt,nge)=>{\"use strict\";nge.exports=(t,e,r)=>{for(let s of r)t.on(s,(...a)=>e.emit(s,...a))}});var oge=L((jzt,sge)=>{\"use strict\";sge.exports=t=>{switch(t){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var lge=L((Gzt,age)=>{\"use strict\";var yI=(t,e,r)=>{age.exports[e]=class extends t{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};yI(TypeError,\"ERR_INVALID_ARG_TYPE\",t=>{let e=t[0].includes(\".\")?\"property\":\"argument\",r=t[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${t[0]}\" ${e} must be ${s?\"one of\":\"of\"} type ${r}. Received ${typeof t[2]}`});yI(TypeError,\"ERR_INVALID_PROTOCOL\",t=>`Protocol \"${t[0]}\" not supported. Expected \"${t[1]}\"`);yI(Error,\"ERR_HTTP_HEADERS_SENT\",t=>`Cannot ${t[0]} headers after they are sent to the client`);yI(TypeError,\"ERR_INVALID_HTTP_TOKEN\",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);yI(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",t=>`Invalid value \"${t[0]} for header \"${t[1]}\"`);yI(TypeError,\"ERR_INVALID_CHAR\",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var zH=L((Wzt,gge)=>{\"use strict\";var ygt=ye(\"http2\"),{Writable:Egt}=ye(\"stream\"),{Agent:cge,globalAgent:Igt}=jH(),Cgt=GH(),wgt=WH(),Bgt=ige(),vgt=oge(),{ERR_INVALID_ARG_TYPE:YH,ERR_INVALID_PROTOCOL:Sgt,ERR_HTTP_HEADERS_SENT:uge,ERR_INVALID_HTTP_TOKEN:Dgt,ERR_HTTP_INVALID_HEADER_VALUE:bgt,ERR_INVALID_CHAR:Pgt}=lge(),{HTTP2_HEADER_STATUS:fge,HTTP2_HEADER_METHOD:Age,HTTP2_HEADER_PATH:pge,HTTP2_METHOD_CONNECT:xgt}=ygt.constants,Jo=Symbol(\"headers\"),VH=Symbol(\"origin\"),KH=Symbol(\"session\"),hge=Symbol(\"options\"),KQ=Symbol(\"flushedHeaders\"),cv=Symbol(\"jobs\"),kgt=/^[\\^`\\-\\w!#$%&*+.|~]+$/,Qgt=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,JH=class extends Egt{constructor(e,r,s){super({autoDestroy:!1});let a=typeof e==\"string\"||e instanceof URL;if(a&&(e=wgt(e instanceof URL?e:new URL(e))),typeof r==\"function\"||r===void 0?(s=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[KH]=r.h2session;else if(r.agent===!1)this.agent=new cge({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new cge({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=Igt;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new YH(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new Sgt(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[Jo]=Object.create(null),this[cv]=[],this.socket=null,this.connection=null,this.method=r.method||\"GET\",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!(\"authorization\"in this[Jo])&&(this[Jo].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[hge]=r,n===443?(this[VH]=`https://${c}`,\":authority\"in this[Jo]||(this[Jo][\":authority\"]=c)):(this[VH]=`https://${c}:${n}`,\":authority\"in this[Jo]||(this[Jo][\":authority\"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once(\"response\",s),this[KQ]=!1}get method(){return this[Jo][Age]}set method(e){e&&(this[Jo][Age]=e.toUpperCase())}get path(){return this[Jo][pge]}set path(e){e&&(this[Jo][pge]=e)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(e,r,s){if(this._mustNotHaveABody){s(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(e,r,s);this._request?a():this[cv].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[cv].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit(\"abort\")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[KQ]||this.destroyed)return;this[KQ]=!0;let e=this.method===xgt,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}e||Bgt(s,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once(\"finish\",()=>{c(...f)})};s.once(\"response\",a((c,f,p)=>{let h=new Cgt(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[fge],h.headers=c,h.rawHeaders=p,h.once(\"end\",()=>{this.aborted?(h.aborted=!0,h.emit(\"aborted\")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit(\"connect\",h,s,Buffer.alloc(0))?this.emit(\"close\"):s.destroy()):(s.on(\"data\",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),s.once(\"headers\",a(c=>this.emit(\"information\",{statusCode:c[fge]}))),s.once(\"trailers\",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[cv])c();this.emit(\"socket\",this.socket)};if(this[KH])try{r(this[KH].request(this[Jo]))}catch(s){this.emit(\"error\",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[VH],this[hge],this[Jo]))}catch(s){this.emit(\"error\",s)}}}getHeader(e){if(typeof e!=\"string\")throw new YH(\"name\",\"string\",e);return this[Jo][e.toLowerCase()]}get headersSent(){return this[KQ]}removeHeader(e){if(typeof e!=\"string\")throw new YH(\"name\",\"string\",e);if(this.headersSent)throw new uge(\"remove\");delete this[Jo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new uge(\"set\");if(typeof e!=\"string\"||!kgt.test(e)&&!vgt(e))throw new Dgt(\"Header name\",e);if(typeof r>\"u\")throw new bgt(r,e);if(Qgt.test(r))throw new Pgt(\"header content\",e);this[Jo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let s=()=>this._request.setTimeout(e,r);return this._request?s():this[cv].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};gge.exports=JH});var mge=L((Yzt,dge)=>{\"use strict\";var Tgt=ye(\"tls\");dge.exports=(t={},e=Tgt.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off(\"timeout\",f),n.off(\"error\",s),t.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit(\"timeout\"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await e(t,c),n.on(\"error\",s),n.once(\"timeout\",f)}catch(h){s(h)}})()})});var Ege=L((Vzt,yge)=>{\"use strict\";var Rgt=ye(\"net\");yge.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith(\"[\")?r.indexOf(\"]\")===-1?e=r:e=r.slice(1,-1):e=r.split(\":\",1)[0]),Rgt.isIP(e)?\"\":e}});var wge=L((Kzt,XH)=>{\"use strict\";var Ige=ye(\"http\"),ZH=ye(\"https\"),Fgt=mge(),Ngt=UH(),Ogt=zH(),Lgt=Ege(),Mgt=WH(),JQ=new Ngt({maxSize:100}),uv=new Map,Cge=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let s=()=>{t.emit(\"free\",e,r)};e.on(\"free\",s);let a=()=>{t.removeSocket(e,r)};e.on(\"close\",a);let n=()=>{t.removeSocket(e,r),e.off(\"close\",a),e.off(\"free\",s),e.off(\"agentRemove\",n)};e.on(\"agentRemove\",n),t.emit(\"free\",e,r)},_gt=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!JQ.has(e)){if(uv.has(e))return(await uv.get(e)).alpnProtocol;let{path:r,agent:s}=t;t.path=t.socketPath;let a=Fgt(t);uv.set(e,a);try{let{socket:n,alpnProtocol:c}=await a;if(JQ.set(e,c),t.path=r,c===\"h2\")n.destroy();else{let{globalAgent:f}=ZH,p=ZH.Agent.prototype.createConnection;s?s.createConnection===p?Cge(s,n,t):n.destroy():f.createConnection===p?Cge(f,n,t):n.destroy()}return uv.delete(e),c}catch(n){throw uv.delete(e),n}}return JQ.get(e)};XH.exports=async(t,e,r)=>{if((typeof t==\"string\"||t instanceof URL)&&(t=Mgt(new URL(t))),typeof e==\"function\"&&(r=e,e=void 0),e={ALPNProtocols:[\"h2\",\"http/1.1\"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error(\"The `ALPNProtocols` option must be an Array with at least one entry\");e.protocol=e.protocol||\"https:\";let s=e.protocol===\"https:\";e.host=e.hostname||e.host||\"localhost\",e.session=e.tlsSession,e.servername=e.servername||Lgt(e),e.port=e.port||(s?443:80),e._defaultAgent=s?ZH.globalAgent:Ige.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error(\"The `options.agent` object can contain only `http`, `https` or `http2` properties\");e.agent=a[s?\"https\":\"http\"]}return s&&await _gt(e)===\"h2\"?(a&&(e.agent=a.http2),new Ogt(e,r)):Ige.request(e,r)};XH.exports.protocolCache=JQ});var vge=L((Jzt,Bge)=>{\"use strict\";var Ugt=ye(\"http2\"),Hgt=jH(),$H=zH(),jgt=GH(),qgt=wge(),Ggt=(t,e,r)=>new $H(t,e,r),Wgt=(t,e,r)=>{let s=new $H(t,e,r);return s.end(),s};Bge.exports={...Ugt,ClientRequest:$H,IncomingMessage:jgt,...Hgt,request:Ggt,get:Wgt,auto:qgt}});var tj=L(ej=>{\"use strict\";Object.defineProperty(ej,\"__esModule\",{value:!0});var Sge=Mp();ej.default=t=>Sge.default.nodeStream(t)&&Sge.default.function_(t.getBoundary)});var xge=L(rj=>{\"use strict\";Object.defineProperty(rj,\"__esModule\",{value:!0});var bge=ye(\"fs\"),Pge=ye(\"util\"),Dge=Mp(),Ygt=tj(),Vgt=Pge.promisify(bge.stat);rj.default=async(t,e)=>{if(e&&\"content-length\"in e)return Number(e[\"content-length\"]);if(!t)return 0;if(Dge.default.string(t))return Buffer.byteLength(t);if(Dge.default.buffer(t))return t.length;if(Ygt.default(t))return Pge.promisify(t.getLength.bind(t))();if(t instanceof bge.ReadStream){let{size:r}=await Vgt(t.path);return r===0?void 0:r}}});var ij=L(nj=>{\"use strict\";Object.defineProperty(nj,\"__esModule\",{value:!0});function Kgt(t,e,r){let s={};for(let a of r)s[a]=(...n)=>{e.emit(a,...n)},t.on(a,s[a]);return()=>{for(let a of r)t.off(a,s[a])}}nj.default=Kgt});var kge=L(sj=>{\"use strict\";Object.defineProperty(sj,\"__esModule\",{value:!0});sj.default=()=>{let t=[];return{once(e,r,s){e.once(r,s),t.push({origin:e,event:r,fn:s})},unhandleAll(){for(let e of t){let{origin:r,event:s,fn:a}=e;r.removeListener(s,a)}t.length=0}}}});var Tge=L(fv=>{\"use strict\";Object.defineProperty(fv,\"__esModule\",{value:!0});fv.TimeoutError=void 0;var Jgt=ye(\"net\"),zgt=kge(),Qge=Symbol(\"reentry\"),Zgt=()=>{},zQ=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};fv.TimeoutError=zQ;fv.default=(t,e,r)=>{if(Qge in t)return Zgt;t[Qge]=!0;let s=[],{once:a,unhandleAll:n}=zgt.default(),c=(C,S,P)=>{var I;let R=setTimeout(S,C,C,P);(I=R.unref)===null||I===void 0||I.call(R);let N=()=>{clearTimeout(R)};return s.push(N),N},{host:f,hostname:p}=r,h=(C,S)=>{t.destroy(new zQ(C,S))},E=()=>{for(let C of s)C();n()};if(t.once(\"error\",C=>{if(E(),t.listenerCount(\"error\")===0)throw C}),t.once(\"close\",E),a(t,\"response\",C=>{a(C,\"end\",E)}),typeof e.request<\"u\"&&c(e.request,h,\"request\"),typeof e.socket<\"u\"){let C=()=>{h(e.socket,\"socket\")};t.setTimeout(e.socket,C),s.push(()=>{t.removeListener(\"timeout\",C)})}return a(t,\"socket\",C=>{var S;let{socketPath:P}=t;if(C.connecting){let I=!!(P??Jgt.isIP((S=p??f)!==null&&S!==void 0?S:\"\")!==0);if(typeof e.lookup<\"u\"&&!I&&typeof C.address().address>\"u\"){let R=c(e.lookup,h,\"lookup\");a(C,\"lookup\",R)}if(typeof e.connect<\"u\"){let R=()=>c(e.connect,h,\"connect\");I?a(C,\"connect\",R()):a(C,\"lookup\",N=>{N===null&&a(C,\"connect\",R())})}typeof e.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(C,\"connect\",()=>{let R=c(e.secureConnect,h,\"secureConnect\");a(C,\"secureConnect\",R)})}if(typeof e.send<\"u\"){let I=()=>c(e.send,h,\"send\");C.connecting?a(C,\"connect\",()=>{a(t,\"upload-complete\",I())}):a(t,\"upload-complete\",I())}}),typeof e.response<\"u\"&&a(t,\"upload-complete\",()=>{let C=c(e.response,h,\"response\");a(t,\"response\",C)}),E}});var Fge=L(oj=>{\"use strict\";Object.defineProperty(oj,\"__esModule\",{value:!0});var Rge=Mp();oj.default=t=>{t=t;let e={protocol:t.protocol,hostname:Rge.default.string(t.hostname)&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return Rge.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var Nge=L(aj=>{\"use strict\";Object.defineProperty(aj,\"__esModule\",{value:!0});var Xgt=ye(\"url\"),$gt=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];aj.default=(t,e)=>{var r,s;if(e.path){if(e.pathname)throw new TypeError(\"Parameters `path` and `pathname` are mutually exclusive.\");if(e.search)throw new TypeError(\"Parameters `path` and `search` are mutually exclusive.\");if(e.searchParams)throw new TypeError(\"Parameters `path` and `searchParams` are mutually exclusive.\")}if(e.search&&e.searchParams)throw new TypeError(\"Parameters `search` and `searchParams` are mutually exclusive.\");if(!t){if(!e.protocol)throw new TypeError(\"No URL protocol specified\");t=`${e.protocol}//${(s=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&s!==void 0?s:\"\"}`}let a=new Xgt.URL(t);if(e.path){let n=e.path.indexOf(\"?\");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of $gt)e[n]&&(a[n]=e[n].toString());return a}});var Oge=L(cj=>{\"use strict\";Object.defineProperty(cj,\"__esModule\",{value:!0});var lj=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e==\"object\"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e==\"object\"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e==\"object\"?this.weakMap.has(e):this.map.has(e)}};cj.default=lj});var fj=L(uj=>{\"use strict\";Object.defineProperty(uj,\"__esModule\",{value:!0});var edt=async t=>{let e=[],r=0;for await(let s of t)e.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(\"\"))};uj.default=edt});var Mge=L(sm=>{\"use strict\";Object.defineProperty(sm,\"__esModule\",{value:!0});sm.dnsLookupIpVersionToFamily=sm.isDnsLookupIpVersion=void 0;var Lge={auto:0,ipv4:4,ipv6:6};sm.isDnsLookupIpVersion=t=>t in Lge;sm.dnsLookupIpVersionToFamily=t=>{if(sm.isDnsLookupIpVersion(t))return Lge[t];throw new Error(\"Invalid DNS lookup IP version\")}});var Aj=L(ZQ=>{\"use strict\";Object.defineProperty(ZQ,\"__esModule\",{value:!0});ZQ.isResponseOk=void 0;ZQ.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Uge=L(pj=>{\"use strict\";Object.defineProperty(pj,\"__esModule\",{value:!0});var _ge=new Set;pj.default=t=>{_ge.has(t)||(_ge.add(t),process.emitWarning(`Got: ${t}`,{type:\"DeprecationWarning\"}))}});var Hge=L(hj=>{\"use strict\";Object.defineProperty(hj,\"__esModule\",{value:!0});var Di=Mp(),tdt=(t,e)=>{if(Di.default.null_(t.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Di.assert.any([Di.default.string,Di.default.undefined],t.encoding),Di.assert.any([Di.default.boolean,Di.default.undefined],t.resolveBodyOnly),Di.assert.any([Di.default.boolean,Di.default.undefined],t.methodRewriting),Di.assert.any([Di.default.boolean,Di.default.undefined],t.isStream),Di.assert.any([Di.default.string,Di.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType=\"text\");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Di.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(s=>s.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Di.default.number(r)&&(t.retry.limit=r),Di.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Di.default.number))),Di.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:s}=t;if(!Di.default.function_(s.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Di.default.function_(s.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Di.default.function_(s.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Di.default.function_(s.paginate))throw new Error(\"`options.pagination.paginate` must be implemented\")}return t.responseType===\"json\"&&t.headers.accept===void 0&&(t.headers.accept=\"application/json\"),t};hj.default=tdt});var jge=L(Av=>{\"use strict\";Object.defineProperty(Av,\"__esModule\",{value:!0});Av.retryAfterStatusCodes=void 0;Av.retryAfterStatusCodes=new Set([413,429,503]);var rdt=({attemptCount:t,retryOptions:e,error:r,retryAfter:s})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),c=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return e.maxRetryAfter===void 0||s>e.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(t-1)*1e3+f};Av.default=rdt});var gv=L(Ln=>{\"use strict\";Object.defineProperty(Ln,\"__esModule\",{value:!0});Ln.UnsupportedProtocolError=Ln.ReadError=Ln.TimeoutError=Ln.UploadError=Ln.CacheError=Ln.HTTPError=Ln.MaxRedirectsError=Ln.RequestError=Ln.setNonEnumerableProperties=Ln.knownHookEvents=Ln.withoutBody=Ln.kIsNormalizedAlready=void 0;var qge=ye(\"util\"),Gge=ye(\"stream\"),ndt=ye(\"fs\"),B0=ye(\"url\"),Wge=ye(\"http\"),gj=ye(\"http\"),idt=ye(\"https\"),sdt=s0e(),odt=A0e(),Yge=W0e(),adt=J0e(),ldt=vge(),cdt=YQ(),at=Mp(),udt=xge(),Vge=tj(),fdt=ij(),Kge=Tge(),Adt=Fge(),Jge=Nge(),pdt=Oge(),hdt=fj(),zge=Mge(),gdt=Aj(),v0=Uge(),ddt=Hge(),mdt=jge(),dj,go=Symbol(\"request\"),eT=Symbol(\"response\"),EI=Symbol(\"responseSize\"),II=Symbol(\"downloadedSize\"),CI=Symbol(\"bodySize\"),wI=Symbol(\"uploadedSize\"),XQ=Symbol(\"serverResponsesPiped\"),Zge=Symbol(\"unproxyEvents\"),Xge=Symbol(\"isFromCache\"),mj=Symbol(\"cancelTimeouts\"),$ge=Symbol(\"startedReading\"),BI=Symbol(\"stopReading\"),$Q=Symbol(\"triggerRead\"),S0=Symbol(\"body\"),pv=Symbol(\"jobs\"),ede=Symbol(\"originalResponse\"),tde=Symbol(\"retryTimeout\");Ln.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var ydt=at.default.string(process.versions.brotli);Ln.withoutBody=new Set([\"GET\",\"HEAD\"]);Ln.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function Edt(t){for(let e in t){let r=t[e];if(!at.default.string(r)&&!at.default.number(r)&&!at.default.boolean(r)&&!at.default.null_(r)&&!at.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function Idt(t){return at.default.object(t)&&!(\"statusCode\"in t)}var yj=new pdt.default,Cdt=async t=>new Promise((e,r)=>{let s=a=>{r(a)};t.pending||e(),t.once(\"error\",s),t.once(\"ready\",()=>{t.off(\"error\",s),e()})}),wdt=new Set([300,301,302,303,304,307,308]),Bdt=[\"context\",\"body\",\"json\",\"form\"];Ln.setNonEnumerableProperties=(t,e)=>{let r={};for(let s of t)if(s)for(let a of Bdt)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(e,r)};var fs=class extends Error{constructor(e,r,s){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,s instanceof aT?(Object.defineProperty(this,\"request\",{enumerable:!1,value:s}),Object.defineProperty(this,\"response\",{enumerable:!1,value:s[eT]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:s.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,at.default.string(r.stack)&&at.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(`\n`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(`\n`)}${f.reverse().join(`\n`)}`}}};Ln.RequestError=fs;var tT=class extends fs{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=\"MaxRedirectsError\"}};Ln.MaxRedirectsError=tT;var rT=class extends fs{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=\"HTTPError\"}};Ln.HTTPError=rT;var nT=class extends fs{constructor(e,r){super(e.message,e,r),this.name=\"CacheError\"}};Ln.CacheError=nT;var iT=class extends fs{constructor(e,r){super(e.message,e,r),this.name=\"UploadError\"}};Ln.UploadError=iT;var sT=class extends fs{constructor(e,r,s){super(e.message,e,s),this.name=\"TimeoutError\",this.event=e.event,this.timings=r}};Ln.TimeoutError=sT;var hv=class extends fs{constructor(e,r){super(e.message,e,r),this.name=\"ReadError\"}};Ln.ReadError=hv;var oT=class extends fs{constructor(e){super(`Unsupported protocol \"${e.url.protocol}\"`,{},e),this.name=\"UnsupportedProtocolError\"}};Ln.UnsupportedProtocolError=oT;var vdt=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],aT=class extends Gge.Duplex{constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[II]=0,this[wI]=0,this.requestInitialized=!1,this[XQ]=new Set,this.redirects=[],this[BI]=!1,this[$Q]=!1,this[pv]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on(\"pipe\",h=>{h.prependListener(\"data\",a),h.on(\"data\",n),h.prependListener(\"end\",a),h.on(\"end\",n)}),this.on(\"unpipe\",h=>{h.off(\"data\",a),h.off(\"data\",n),h.off(\"end\",a),h.off(\"end\",n)}),this.on(\"pipe\",h=>{h instanceof gj.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Ln.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,s)}catch(h){at.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof ndt.ReadStream&&await Cdt(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError(\"Missing `url` property\");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[go])===null||h===void 0||h.destroy();return}for(let C of this[pv])C();this[pv].length=0,this.requestInitialized=!0}catch(E){if(E instanceof fs){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,s){var a,n,c,f,p;let h=r;if(at.default.object(e)&&!at.default.urlInstance(e))r={...s,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...s,...r},e!==void 0&&(r.url=e),at.default.urlInstance(r.url)&&(r.url=new B0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),at.assert.any([at.default.string,at.default.undefined],r.method),at.assert.any([at.default.object,at.default.undefined],r.headers),at.assert.any([at.default.string,at.default.urlInstance,at.default.undefined],r.prefixUrl),at.assert.any([at.default.object,at.default.undefined],r.cookieJar),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.searchParams),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.cache),at.assert.any([at.default.object,at.default.number,at.default.undefined],r.timeout),at.assert.any([at.default.object,at.default.undefined],r.context),at.assert.any([at.default.object,at.default.undefined],r.hooks),at.assert.any([at.default.boolean,at.default.undefined],r.decompress),at.assert.any([at.default.boolean,at.default.undefined],r.ignoreInvalidCookies),at.assert.any([at.default.boolean,at.default.undefined],r.followRedirect),at.assert.any([at.default.number,at.default.undefined],r.maxRedirects),at.assert.any([at.default.boolean,at.default.undefined],r.throwHttpErrors),at.assert.any([at.default.boolean,at.default.undefined],r.http2),at.assert.any([at.default.boolean,at.default.undefined],r.allowGetBody),at.assert.any([at.default.string,at.default.undefined],r.localAddress),at.assert.any([zge.isDnsLookupIpVersion,at.default.undefined],r.dnsLookupIpVersion),at.assert.any([at.default.object,at.default.undefined],r.https),at.assert.any([at.default.boolean,at.default.undefined],r.rejectUnauthorized),r.https&&(at.assert.any([at.default.boolean,at.default.undefined],r.https.rejectUnauthorized),at.assert.any([at.default.function_,at.default.undefined],r.https.checkServerIdentity),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificateAuthority),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.key),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificate),at.assert.any([at.default.string,at.default.undefined],r.https.passphrase),at.assert.any([at.default.string,at.default.buffer,at.default.array,at.default.undefined],r.https.pfx)),at.assert.any([at.default.object,at.default.undefined],r.cacheOptions),at.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===s?.headers?r.headers={...r.headers}:r.headers=cdt({...s?.headers,...r.headers}),\"slashes\"in r)throw new TypeError(\"The legacy `url.Url` has been deprecated. Use `URL` instead.\");if(\"auth\"in r)throw new TypeError(\"Parameter `auth` is deprecated. Use `username` / `password` instead.\");if(\"searchParams\"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let P;if(at.default.string(r.searchParams)||r.searchParams instanceof B0.URLSearchParams)P=new B0.URLSearchParams(r.searchParams);else{Edt(r.searchParams),P=new B0.URLSearchParams;for(let I in r.searchParams){let R=r.searchParams[I];R===null?P.append(I,\"\"):R!==void 0&&P.append(I,R)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,R)=>{P.has(R)||P.append(R,I)}),r.searchParams=P}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(c=r.password)!==null&&c!==void 0?c:\"\",at.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),at.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=Jge.default(r.prefixUrl+r.url,r)}else(at.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=Jge.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:P}=r;Object.defineProperty(r,\"prefixUrl\",{set:R=>{let N=r.url;if(!N.href.startsWith(R))throw new Error(`Cannot change \\`prefixUrl\\` from ${P} to ${R}: ${N.href}`);r.url=new B0.URL(R+N.href.slice(P.length)),P=R},get:()=>P});let{protocol:I}=r.url;if(I===\"unix:\"&&(I=\"http:\",r.url=new B0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!==\"http:\"&&I!==\"https:\")throw new oT(r);r.username===\"\"?r.username=r.url.username:r.url.username=r.username,r.password===\"\"?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:P,getCookieString:I}=E;at.assert.function_(P),at.assert.function_(I),P.length===4&&I.length===0&&(P=qge.promisify(P.bind(r.cookieJar)),I=qge.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:P,getCookieString:I})}let{cache:C}=r;if(C&&(yj.has(C)||yj.set(C,new Yge((P,I)=>{let R=P[go](P,I);return at.default.promise(R)&&(R.once=(N,U)=>{if(N===\"error\")R.catch(U);else if(N===\"abort\")(async()=>{try{(await R).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return R}),R},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)dj||(dj=new odt.default),r.dnsCache=dj;else if(!at.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${at.default(r.dnsCache)}`);at.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let P of Ln.knownHookEvents)if(P in r.hooks)if(at.default.array(r.hooks[P]))r.hooks[P]=[...r.hooks[P]];else throw new TypeError(`Parameter \\`${P}\\` must be an Array, got ${at.default(r.hooks[P])}`);else r.hooks[P]=[];if(s&&!S)for(let P of Ln.knownHookEvents)s.hooks[P].length>0&&(r.hooks[P]=[...s.hooks[P],...r.hooks[P]]);if(\"family\"in r&&v0.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),s?.https&&(r.https={...s.https,...r.https}),\"rejectUnauthorized\"in r&&v0.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&v0.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&v0.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&v0.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&v0.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&v0.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&v0.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"'),\"followRedirects\"in r)throw new TypeError(\"The `followRedirects` option does not exist. Use `followRedirect` instead.\");if(r.agent){for(let P in r.agent)if(P!==\"http\"&&P!==\"https\"&&P!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${P}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Ln.setNonEnumerableProperties([s,h],r),ddt.default(r,s)}_lockWrite(){let e=()=>{throw new TypeError(\"The payload has been already provided\")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,s=!at.default.undefined(e.form),a=!at.default.undefined(e.json),n=!at.default.undefined(e.body),c=s||a||n,f=Ln.withoutBody.has(e.method)&&!(e.method===\"GET\"&&e.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \\`${e.method}\\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(e.body instanceof Gge.Readable)&&!at.default.string(e.body)&&!at.default.buffer(e.body)&&!Vge.default(e.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(s&&!at.default.object(e.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!at.default.string(r[\"content-type\"]);n?(Vge.default(e.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[S0]=e.body):s?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[S0]=new B0.URLSearchParams(e.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[S0]=e.stringifyJson(e.json));let h=await udt.default(this[S0],e.headers);at.default.undefined(r[\"content-length\"])&&at.default.undefined(r[\"transfer-encoding\"])&&!f&&!at.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[CI]=Number(r[\"content-length\"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:s}=r;this[ede]=e,r.decompress&&(e=adt(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Wge.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Xge]=n.isFromCache,this[EI]=Number(e.headers[\"content-length\"])||void 0,this[eT]=e,e.once(\"end\",()=>{this[EI]=this[II],this.emit(\"downloadProgress\",this.downloadProgress)}),e.once(\"error\",f=>{e.destroy(),this._beforeError(new hv(f,this))}),e.once(\"aborted\",()=>{this._beforeError(new hv({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let c=e.headers[\"set-cookie\"];if(at.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&wdt.has(a)){if(e.resume(),this[go]&&(this[mj](),delete this[go],this[Zge]()),(a===303&&r.method!==\"GET\"&&r.method!==\"HEAD\"||!r.methodRewriting)&&(r.method=\"GET\",\"body\"in r&&delete r.body,\"json\"in r&&delete r.json,\"form\"in r&&delete r.form,this[S0]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new tT(this));return}try{let p=Buffer.from(e.headers.location,\"binary\").toString(),h=new B0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?(\"host\"in r.headers&&delete r.headers.host,\"cookie\"in r.headers&&delete r.headers.cookie,\"authorization\"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username=\"\",r.password=\"\")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!gdt.isResponseOk(n)){this._beforeError(new rT(n));return}e.on(\"readable\",()=>{this[$Q]&&this._read()}),this.on(\"resume\",()=>{e.resume()}),this.on(\"pause\",()=>{e.pause()}),e.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",e);for(let f of this[XQ])if(!f.headersSent){for(let p in e.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=e.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:s,url:a}=r;sdt.default(e),this[mj]=Kge.default(e,s,a);let n=r.cache?\"cacheableResponse\":\"response\";e.once(n,p=>{this._onResponse(p)}),e.once(\"error\",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners(\"end\"),p=p instanceof Kge.TimeoutError?new sT(p,this.timings,this):new fs(p.message,p,this),this._beforeError(p)}),this[Zge]=fdt.default(e,this,vdt),this[go]=e,this.emit(\"uploadProgress\",this.uploadProgress);let c=this[S0],f=this.redirects.length===0?this:e;at.default.nodeStream(c)?(c.pipe(f),c.once(\"error\",p=>{this._beforeError(new iT(p,this))})):(this._unlockWrite(),at.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit(\"request\",e)}async _createCacheableRequest(e,r){return new Promise((s,a)=>{Object.assign(r,Adt.default(e)),delete r.url;let n,c=yj.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",f),s(f)});r.url=e,c.once(\"error\",a),c.once(\"request\",async f=>{n=f,s(n)})})}async _makeRequest(){var e,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(at.default.undefined(f[U]))delete f[U];else if(at.default.null_(f[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(c.decompress&&at.default.undefined(f[\"accept-encoding\"])&&(f[\"accept-encoding\"]=ydt?\"gzip, deflate, br\":\"gzip, deflate\"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());at.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let W=await U(c);if(!at.default.undefined(W)){c.request=()=>W;break}}c.body&&this[S0]!==c.body&&(this[S0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!(\"lookup\"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:W,path:te}=U.groups;Object.assign(c,{socketPath:W,path:te,host:\"\"})}}let S=C.protocol===\"https:\",P;c.http2?P=ldt.auto:P=S?idt.request:Wge.request;let I=(e=c.request)!==null&&e!==void 0?e:P,R=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?\"https\":\"http\"]),c[go]=I,delete c.request,delete c.timeout;let N=c;if(N.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,N.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{N.family=zge.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}c.https&&(\"rejectUnauthorized\"in c.https&&(N.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(N.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(N.ca=c.https.certificateAuthority),c.https.certificate&&(N.cert=c.https.certificate),c.https.key&&(N.key=c.https.key),c.https.passphrase&&(N.passphrase=c.https.passphrase),c.https.pfx&&(N.pfx=c.https.pfx));try{let U=await R(C,N);at.default.undefined(U)&&(U=P(C,N)),c.request=h,c.timeout=E,c.agent=p,c.https&&(\"rejectUnauthorized\"in c.https&&delete N.rejectUnauthorized,c.https.checkServerIdentity&&delete N.checkServerIdentity,c.https.certificateAuthority&&delete N.ca,c.https.certificate&&delete N.cert,c.https.key&&delete N.key,c.https.passphrase&&delete N.passphrase,c.https.pfx&&delete N.pfx),Idt(U)?this._onRequest(U):this.writable?(this.once(\"finish\",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof Yge.CacheError?new nT(U,this):new fs(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new fs(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[BI])return;let{options:r}=this,s=this.retryCount+1;this[BI]=!0,e instanceof fs||(e=new fs(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await hdt.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let c;try{let f;n&&\"retry-after\"in n.headers&&(f=Number(n.headers[\"retry-after\"]),Number.isNaN(f)?(f=Date.parse(n.headers[\"retry-after\"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:mdt.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new fs(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new fs(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",s,e))};this[tde]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[$Q]=!0;let e=this[eT];if(e&&!this[BI]){e.readableLength&&(this[$Q]=!1);let r;for(;(r=e.read())!==null;){this[II]+=r.length,this[$ge]=!0;let s=this.downloadProgress;s.percent<1&&this.emit(\"downloadProgress\",s),this.push(r)}}}_write(e,r,s){let a=()=>{this._writeRequest(e,r,s)};this.requestInitialized?a():this[pv].push(a)}_writeRequest(e,r,s){this[go].destroyed||(this._progressCallbacks.push(()=>{this[wI]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[go].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(go in this)){e();return}if(this[go].destroyed){e();return}this[go].end(s=>{s||(this[CI]=this[wI],this.emit(\"uploadProgress\",this.uploadProgress),this[go].emit(\"upload-complete\")),e(s)})};this.requestInitialized?r():this[pv].push(r)}_destroy(e,r){var s;this[BI]=!0,clearTimeout(this[tde]),go in this&&(this[mj](),!((s=this[eT])===null||s===void 0)&&s.complete||this[go].destroy()),e!==null&&!at.default.undefined(e)&&!(e instanceof fs)&&(e=new fs(e.message,e,this)),r(e)}get _isAboutToError(){return this[BI]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,s;return((r=(e=this[go])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[ede])===null||s===void 0)&&s.complete)}get socket(){var e,r;return(r=(e=this[go])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[EI]?e=this[II]/this[EI]:this[EI]===this[II]?e=1:e=0,{percent:e,transferred:this[II],total:this[EI]}}get uploadProgress(){let e;return this[CI]?e=this[wI]/this[CI]:this[CI]===this[wI]?e=1:e=0,{percent:e,transferred:this[wI],total:this[CI]}}get timings(){var e;return(e=this[go])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Xge]}pipe(e,r){if(this[$ge])throw new Error(\"Failed to pipe. The response has been emitted already.\");return e instanceof gj.ServerResponse&&this[XQ].add(e),super.pipe(e,r)}unpipe(e){return e instanceof gj.ServerResponse&&this[XQ].delete(e),super.unpipe(e),this}};Ln.default=aT});var dv=L(Wu=>{\"use strict\";var Sdt=Wu&&Wu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Ddt=Wu&&Wu.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Sdt(e,t,r)};Object.defineProperty(Wu,\"__esModule\",{value:!0});Wu.CancelError=Wu.ParseError=void 0;var rde=gv(),Ej=class extends rde.RequestError{constructor(e,r){let{options:s}=r.request;super(`${e.message} in \"${s.url.toString()}\"`,e,r.request),this.name=\"ParseError\"}};Wu.ParseError=Ej;var Ij=class extends rde.RequestError{constructor(e){super(\"Promise was canceled\",{},e),this.name=\"CancelError\"}get isCanceled(){return!0}};Wu.CancelError=Ij;Ddt(gv(),Wu)});var ide=L(Cj=>{\"use strict\";Object.defineProperty(Cj,\"__esModule\",{value:!0});var nde=dv(),bdt=(t,e,r,s)=>{let{rawBody:a}=t;try{if(e===\"text\")return a.toString(s);if(e===\"json\")return a.length===0?\"\":r(a.toString());if(e===\"buffer\")return a;throw new nde.ParseError({message:`Unknown body type '${e}'`,name:\"Error\"},t)}catch(n){throw new nde.ParseError(n,t)}};Cj.default=bdt});var wj=L(D0=>{\"use strict\";var Pdt=D0&&D0.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),xdt=D0&&D0.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Pdt(e,t,r)};Object.defineProperty(D0,\"__esModule\",{value:!0});var kdt=ye(\"events\"),Qdt=Mp(),Tdt=n0e(),lT=dv(),sde=ide(),ode=gv(),Rdt=ij(),Fdt=fj(),ade=Aj(),Ndt=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function lde(t){let e,r,s=new kdt.EventEmitter,a=new Tdt((c,f,p)=>{let h=E=>{let C=new ode.default(void 0,t);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new lT.CancelError(C))),e=C,C.once(\"response\",async I=>{var R;if(I.retryCount=E,I.request.aborted)return;let N;try{N=await Fdt.default(C),I.rawBody=N}catch{return}if(C._isAboutToError)return;let U=((R=I.headers[\"content-encoding\"])!==null&&R!==void 0?R:\"\").toLowerCase(),W=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:te}=C;if(W&&!te.decompress)I.body=N;else try{I.body=sde.default(I,te.responseType,te.parseJson,te.encoding)}catch(ie){if(I.body=N.toString(),ade.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,Ae]of te.hooks.afterResponse.entries())I=await Ae(I,async ce=>{let me=ode.default.normalizeArguments(void 0,{...ce,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ie);for(let Be of me.hooks.beforeRetry)await Be(me);let pe=lde(me);return p(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(ie){C._beforeError(new lT.RequestError(ie.message,ie,C));return}if(!ade.isResponseOk(I)){C._beforeError(new lT.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:R}=C;if(I instanceof lT.HTTPError&&!R.throwHttpErrors){let{response:N}=I;c(C.options.resolveBodyOnly?N.body:N);return}f(I)};C.once(\"error\",S);let P=C.options.body;C.once(\"retry\",(I,R)=>{var N,U;if(P===((N=R.request)===null||N===void 0?void 0:N.options.body)&&Qdt.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){S(R);return}h(I)}),Rdt.default(C,s,Ndt)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return sde.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=e.options;return!e.writableFinished&&c.accept===void 0&&(c.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}D0.default=lde;xdt(dv(),D0)});var cde=L(Bj=>{\"use strict\";Object.defineProperty(Bj,\"__esModule\",{value:!0});var Odt=dv();function Ldt(t,...e){let r=(async()=>{if(t instanceof Odt.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}Bj.default=Ldt});var Ade=L(vj=>{\"use strict\";Object.defineProperty(vj,\"__esModule\",{value:!0});var ude=Mp();function fde(t){for(let e of Object.values(t))(ude.default.plainObject(e)||ude.default.array(e))&&fde(e);return Object.freeze(t)}vj.default=fde});var hde=L(pde=>{\"use strict\";Object.defineProperty(pde,\"__esModule\",{value:!0})});var Sj=L(Lc=>{\"use strict\";var Mdt=Lc&&Lc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),_dt=Lc&&Lc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Mdt(e,t,r)};Object.defineProperty(Lc,\"__esModule\",{value:!0});Lc.defaultHandler=void 0;var gde=Mp(),Oc=wj(),Udt=cde(),uT=gv(),Hdt=Ade(),jdt={RequestError:Oc.RequestError,CacheError:Oc.CacheError,ReadError:Oc.ReadError,HTTPError:Oc.HTTPError,MaxRedirectsError:Oc.MaxRedirectsError,TimeoutError:Oc.TimeoutError,ParseError:Oc.ParseError,CancelError:Oc.CancelError,UnsupportedProtocolError:Oc.UnsupportedProtocolError,UploadError:Oc.UploadError},qdt=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:cT}=uT.default,dde=(...t)=>{let e;for(let r of t)e=cT(void 0,r,e);return e},Gdt=t=>t.isStream?new uT.default(void 0,t):Oc.default(t),Wdt=t=>\"defaults\"in t&&\"options\"in t.defaults,Ydt=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Lc.defaultHandler=(t,e)=>e(t);var mde=(t,e)=>{if(t)for(let r of t)r(e)},yde=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let e=(s,a={},n)=>{var c,f;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?Gdt:h);if(gde.default.plainObject(s)){let E={...s,...a};uT.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{mde(t.options.hooks.init,a),mde((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=cT(s,a,n??t.options);if(C[uT.kIsNormalizedAlready]=!0,E)throw new Oc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return Udt.default(E,t.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};e.extend=(...s)=>{let a=[t.options],n=[...t._rawHandlers],c;for(let f of s)Wdt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),\"handlers\"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Lc.defaultHandler),n.length===0&&n.push(Lc.defaultHandler),yde({options:dde(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=cT(s,a,t.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!gde.default.object(c))throw new TypeError(\"`options.pagination` must be implemented\");let f=[],{countLimit:p}=c,h=0;for(;h<c.requestLimit;){h!==0&&await qdt(c.backoff);let E=await e(void 0,void 0,n),C=await c.transform(E),S=[];for(let I of C)if(c.filter(I,f,S)&&(!c.shouldContinue(I,f,S)||(yield I,c.stackAllItems&&f.push(I),S.push(I),--p<=0)))return;let P=c.paginate(E,f,S);if(P===!1)return;P===E.request.options?n=E.request.options:P!==void 0&&(n=cT(void 0,P,n)),h++}};e.paginate=r,e.paginate.all=async(s,a)=>{let n=[];for await(let c of r(s,a))n.push(c);return n},e.paginate.each=r,e.stream=(s,a)=>e(s,{...a,isStream:!0});for(let s of Ydt)e[s]=(a,n)=>e(a,{...n,method:s}),e.stream[s]=(a,n)=>e(a,{...n,method:s,isStream:!0});return Object.assign(e,jdt),Object.defineProperty(e,\"defaults\",{value:t.mutableDefaults?t:Hdt.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=dde,e};Lc.default=yde;_dt(hde(),Lc)});var Cde=L((_p,fT)=>{\"use strict\";var Vdt=_p&&_p.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Ede=_p&&_p.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Vdt(e,t,r)};Object.defineProperty(_p,\"__esModule\",{value:!0});var Kdt=ye(\"url\"),Ide=Sj(),Jdt={options:{method:\"GET\",retry:{limit:2,methods:[\"GET\",\"PUT\",\"HEAD\",\"DELETE\",\"OPTIONS\",\"TRACE\"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[\"ETIMEDOUT\",\"ECONNRESET\",\"EADDRINUSE\",\"ECONNREFUSED\",\"EPIPE\",\"ENOTFOUND\",\"ENETUNREACH\",\"EAI_AGAIN\"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{\"user-agent\":\"got (https://github.com/sindresorhus/got)\"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:\"text\",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:\"\",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType===\"json\"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,\"link\"))return!1;let e=t.headers.link.split(\",\"),r;for(let s of e){let a=s.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Kdt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[Ide.defaultHandler],mutableDefaults:!1},Dj=Ide.default(Jdt);_p.default=Dj;fT.exports=Dj;fT.exports.default=Dj;fT.exports.__esModule=!0;Ede(Sj(),_p);Ede(wj(),_p)});var An={};Vt(An,{Method:()=>Pde,del:()=>emt,get:()=>kj,getNetworkSettings:()=>bde,post:()=>Qj,put:()=>$dt,request:()=>mv});function vde(t){let e=new URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function bj(t){return Vl(Bde,t,()=>le.readFilePromise(t).then(e=>(Bde.set(t,e),e)))}function Xdt({statusCode:t,statusMessage:e},r){let s=Ut(r,t,Ct.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return JE(r,`${s}${e?` (${e})`:\"\"}`,a)}async function AT(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(s){if(s.name!==\"HTTPError\")throw s;let a=r?.(s,e)??s.response.body?.error;a==null&&(s.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=s.message),s.code===\"ETIMEDOUT\"&&s.event===\"socket\"&&(a+=`(can be increased via ${Ut(e,\"httpTimeout\",Ct.SETTING)})`);let n=new Yt(35,a,c=>{s.response&&c.reportError(35,`  ${Zf(e,{label:\"Response Code\",value:Hu(Ct.NO_HINT,Xdt(s.response,e))})}`),s.request&&(c.reportError(35,`  ${Zf(e,{label:\"Request Method\",value:Hu(Ct.NO_HINT,s.request.options.method)})}`),c.reportError(35,`  ${Zf(e,{label:\"Request URL\",value:Hu(Ct.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,`  ${Zf(e,{label:\"Request Redirects\",value:Hu(Ct.NO_HINT,I3(e,s.request.redirects,Ct.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,`  ${Zf(e,{label:\"Request Retry Count\",value:Hu(Ct.NO_HINT,`${Ut(e,s.request.retryCount,Ct.NUMBER)} (can be increased via ${Ut(e,\"httpRetry\",Ct.SETTING)})`)})}`)});throw n.originalError=s,n}}function bde(t,e){let r=[...e.configuration.get(\"networkSettings\")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof t==\"string\"?new URL(t):t;for(let[c,f]of r)if(xj.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>\"u\"&&(s[p]=h)}for(let c of a)typeof s[c]>\"u\"&&(s[c]=e.configuration.get(c));return s}async function mv(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c=\"GET\",wrapNetworkRequest:f}){let p={target:t,body:e,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await tmt(t,e,p),E=typeof f<\"u\"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function kj(t,{configuration:e,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>AT(mv(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<\"u\"?c():Vl(wde,t,()=>c().then(p=>(wde.set(t,p),p))));return r?JSON.parse(f.toString()):f}async function $dt(t,e,{customErrorMessage:r,...s}){return(await AT(mv(t,e,{...s,method:\"PUT\"}),{customErrorMessage:r,configuration:s.configuration})).body}async function Qj(t,e,{customErrorMessage:r,...s}){return(await AT(mv(t,e,{...s,method:\"POST\"}),{customErrorMessage:r,configuration:s.configuration})).body}async function emt(t,{customErrorMessage:e,...r}){return(await AT(mv(t,null,{...r,method:\"DELETE\"}),{customErrorMessage:e,configuration:r.configuration})).body}async function tmt(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c=\"GET\"}){let f=typeof t==\"string\"?new URL(t):t,p=bde(f,{configuration:r});if(p.enableNetwork===!1)throw new Yt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol===\"http:\"&&!xj.default.isMatch(f.hostname,r.get(\"unsafeHttpWhitelist\")))throw new Yt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let E={agent:{http:p.httpProxy?Pj.default.httpOverHttp(vde(p.httpProxy)):zdt,https:p.httpsProxy?Pj.default.httpsOverHttp(vde(p.httpsProxy)):Zdt},headers:s,method:c};E.responseType=n?\"json\":\"buffer\",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e==\"string\"?E.body=e:E.json=e);let C=r.get(\"httpTimeout\"),S=r.get(\"httpRetry\"),P=r.get(\"enableStrictSsl\"),I=p.httpsCaFilePath,R=p.httpsCertFilePath,N=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>et(Cde())),W=I?await bj(I):void 0,te=R?await bj(R):void 0,ie=N?await bj(N):void 0,Ae=U.extend({timeout:{socket:C},retry:S,https:{rejectUnauthorized:P,certificateAuthority:W,certificate:te,key:ie},...E});return r.getLimit(\"networkConcurrency\")(()=>Ae(f))}var Sde,Dde,xj,Pj,wde,Bde,zdt,Zdt,Pde,pT=It(()=>{bt();Sde=ye(\"https\"),Dde=ye(\"http\"),xj=et(Sa()),Pj=et(Xhe());Fc();Qc();kc();wde=new Map,Bde=new Map,zdt=new Dde.Agent({keepAlive:!0}),Zdt=new Sde.Agent({keepAlive:!0});Pde=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(Pde||{})});var As={};Vt(As,{availableParallelism:()=>Rj,getArchitecture:()=>yv,getArchitectureName:()=>omt,getArchitectureSet:()=>Tj,getCaller:()=>umt,major:()=>rmt,openUrl:()=>nmt});function smt(){if(process.platform===\"darwin\"||process.platform===\"win32\")return null;let t;try{t=le.readFileSync(imt)}catch{}if(typeof t<\"u\"){if(t&&(t.includes(\"GLIBC\")||t.includes(\"libc\")))return\"glibc\";if(t&&t.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return p0(r,a=>{let n=a.match(s);if(!n)return p0.skip;if(n[1])return\"glibc\";if(n[2])return\"musl\";throw new Error(\"Assertion failed: Expected the libc variant to have been detected\")})??null}function yv(){return kde=kde??{os:process.platform,cpu:process.arch,libc:smt()}}function omt(t=yv()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function Tj(){let t=yv();return Qde=Qde??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function cmt(t){let e=amt.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf(\"native\")===0,s=e[2]&&e[2].indexOf(\"eval\")===0,a=lmt.exec(e[2]);return s&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||\"<unknown>\",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function umt(){let e=new Error().stack.split(`\n`)[3];return cmt(e)}function Rj(){return typeof hT.default.availableParallelism<\"u\"?hT.default.availableParallelism():Math.max(1,hT.default.cpus().length)}var hT,rmt,xde,nmt,imt,kde,Qde,amt,lmt,gT=It(()=>{bt();hT=et(ye(\"os\"));dT();kc();rmt=Number(process.versions.node.split(\".\")[0]),xde=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),nmt=typeof xde<\"u\"?async t=>{try{return await Fj(xde,[t],{cwd:K.cwd()}),!0}catch{return!1}}:void 0,imt=\"/usr/bin/ldd\";amt=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,lmt=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function _j(t,e,r,s,a){let n=sv(r);if(s.isArray||s.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>Nj(t,`${e}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>Nj(t,e,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${e}\" cannot be an array`);return Nj(t,e,r,s,a)}function Nj(t,e,r,s,a){let n=sv(r);switch(s.type){case\"ANY\":return NQ(n);case\"SHAPE\":return hmt(t,e,r,s,a);case\"MAP\":return gmt(t,e,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings \"${e}\" cannot be set to null`);if(s.values?.includes(n))return n;let f=(()=>{if(s.type===\"BOOLEAN\"&&typeof n!=\"string\")return qB(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${e}\" to be a string, got ${typeof n}`);let p=Jk(n,{env:t.env});switch(s.type){case\"ABSOLUTE_PATH\":{let h=a,E=fH(r);return E&&E[0]!==\"<\"&&(h=K.dirname(E)),K.resolve(h,ue.toPortablePath(p))}case\"LOCATOR_LOOSE\":return Rp(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return Rp(p);case\"BOOLEAN\":return qB(p);default:return p}})();if(s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(\", \")}`);return f}function hmt(t,e,r,s,a){let n=sv(r);if(typeof n!=\"object\"||Array.isArray(n))throw new nt(`Object configuration settings \"${e}\" must be an object`);let c=Uj(t,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${e}.${f}`;if(!s.properties[f])throw new nt(`Unrecognized configuration settings found: ${e}.${f} - run \"yarn config -v\" to see the list of settings supported in Yarn`);c.set(f,_j(t,h,p,s.properties[f],a))}return c}function gmt(t,e,r,s,a){let n=sv(r),c=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new nt(`Map configuration settings \"${e}\" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${e}['${h}']`,C=s.valueDefinition;c.set(h,_j(t,E,p,C,a))}return c}function Uj(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case\"SHAPE\":{if(e.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(e.properties))s.set(a,Uj(t,n));return s}case\"MAP\":return e.isArray&&!r?[]:new Map;case\"ABSOLUTE_PATH\":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(s=>K.normalize(s)):K.isAbsolute(e.default)?K.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(s=>K.resolve(t.projectCwd,s)):K.resolve(t.projectCwd,e.default);default:return e.default}}function yT(t,e,r){if(e.type===\"SECRET\"&&typeof t==\"string\"&&r.hideSecrets)return pmt;if(e.type===\"ABSOLUTE_PATH\"&&typeof t==\"string\"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let s=[];for(let a of t)s.push(yT(a,e,r));return s}if(e.type===\"MAP\"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=yT(n,e.valueDefinition,r);typeof c<\"u\"&&s.set(a,c)}return s}if(e.type===\"SHAPE\"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=e.properties[a],f=yT(n,c,r);typeof f<\"u\"&&s.set(a,f)}return s}return t}function dmt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(ET)&&(e=(0,Rde.default)(e.slice(ET.length)),t[e]=r);return t}function Lj(){let t=`${ET}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r==\"string\")return r;return Mj}async function Tde(t){try{return await le.readFilePromise(t)}catch{return Buffer.of()}}async function mmt(t,e){return Buffer.compare(...await Promise.all([Tde(t),Tde(e)]))===0}async function ymt(t,e){let[r,s]=await Promise.all([le.statPromise(t),le.statPromise(e)]);return r.dev===s.dev&&r.ino===s.ino}async function Imt({configuration:t,selfPath:e}){let r=t.get(\"yarnPath\");return t.get(\"ignorePath\")||r===null||r===e||await Emt(r,e)?null:r}var Rde,Up,Fde,Nde,Ode,Oj,fmt,Ev,Amt,Hp,ET,Mj,pmt,Iv,Lde,IT,mT,Emt,ze,Cv=It(()=>{bt();Bc();Rde=et(lne()),Up=et(Nd());Wt();Fde=et(tie()),Nde=ye(\"module\"),Ode=et(Md()),Oj=ye(\"stream\");phe();oI();nH();iH();sH();Hhe();oH();tm();Yhe();LQ();Qc();I0();pT();kc();gT();Np();Yo();fmt=function(){if(!Up.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=le.readJsonSync(t)}catch{return!1}return!(!(\"repository\"in e)||!e.repository||(e.repository.private??!0))}(),Ev=new Set([\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]),Amt=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"zipDataEpilogue\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),Hp=/^(?!v)[a-z0-9._-]+$/i,ET=\"yarn_\",Mj=\".yarnrc.yml\",pmt=\"********\",Iv=(E=>(E.ANY=\"ANY\",E.BOOLEAN=\"BOOLEAN\",E.ABSOLUTE_PATH=\"ABSOLUTE_PATH\",E.LOCATOR=\"LOCATOR\",E.LOCATOR_LOOSE=\"LOCATOR_LOOSE\",E.NUMBER=\"NUMBER\",E.STRING=\"STRING\",E.SECRET=\"SECRET\",E.SHAPE=\"SHAPE\",E.MAP=\"MAP\",E))(Iv||{}),Lde=Ct,IT=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(IT||{}),mT={lastUpdateCheck:{description:\"Last timestamp we checked whether new Yarn versions were available\",type:\"STRING\",default:null},yarnPath:{description:\"Path to the local executable that must be used over the global one\",type:\"ABSOLUTE_PATH\",default:null},ignorePath:{description:\"If true, the local executable will be ignored when using the global one\",type:\"BOOLEAN\",default:!1},globalFolder:{description:\"Folder where all system-global files are stored\",type:\"ABSOLUTE_PATH\",default:pH()},cacheFolder:{description:\"Folder where the cache files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/cache\"},compressionLevel:{description:\"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)\",type:\"NUMBER\",values:[\"mixed\",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:\"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/__virtual__\"},installStatePath:{description:\"Path of the file where the install state will be persisted\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/install-state.gz\"},immutablePatterns:{description:\"Array of glob patterns; files matching them won't be allowed to change during immutable installs\",type:\"STRING\",default:[],isArray:!0},rcFilename:{description:\"Name of the files where the configuration can be found\",type:\"STRING\",default:Lj()},enableGlobalCache:{description:\"If true, the system-wide cache folder will be used regardless of `cache-folder`\",type:\"BOOLEAN\",default:!0},cacheMigrationMode:{description:\"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.\",type:\"STRING\",values:[\"always\",\"match-spec\",\"required-only\"],default:\"always\"},enableColors:{description:\"If true, the CLI is allowed to use colors in its output\",type:\"BOOLEAN\",default:Xk,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:E3,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Up.isCI,defaultText:\"<dynamic>\"},enableMessageNames:{description:\"If true, the CLI will prefix most messages with codes suitable for search engines\",type:\"BOOLEAN\",default:!0},enableProgressBars:{description:\"If true, the CLI is allowed to show a progress bar for long-running events\",type:\"BOOLEAN\",default:!Up.isCI,defaultText:\"<dynamic>\"},enableTimers:{description:\"If true, the CLI is allowed to print the time spent executing commands\",type:\"BOOLEAN\",default:!0},enableTips:{description:\"If true, installs will print a helpful message every day of the week\",type:\"BOOLEAN\",default:!Up.isCI,defaultText:\"<dynamic>\"},preferInteractive:{description:\"If true, the CLI will automatically use the interactive mode when called from a TTY\",type:\"BOOLEAN\",default:!1},preferTruncatedLines:{description:\"If true, the CLI will truncate lines that would go beyond the size of the terminal\",type:\"BOOLEAN\",default:!1},progressBarStyle:{description:\"Which style of progress bar should be used (only when progress bars are enabled)\",type:\"STRING\",default:void 0,defaultText:\"<dynamic>\"},defaultLanguageName:{description:\"Default language mode that should be used when a package doesn't offer any insight\",type:\"STRING\",default:\"node\"},defaultProtocol:{description:\"Default resolution protocol used when resolving pure semver and tag ranges\",type:\"STRING\",default:\"npm:\"},enableTransparentWorkspaces:{description:\"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol\",type:\"BOOLEAN\",default:!0},supportedArchitectures:{description:\"Architectures that Yarn will fetch and inject into the resolver\",type:\"SHAPE\",properties:{os:{description:\"Array of supported process.platform strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},cpu:{description:\"Array of supported process.arch strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},libc:{description:\"Array of supported libc libraries, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]}}},enableMirror:{description:\"If true, the downloaded packages will be retrieved and stored in both the local and global folders\",type:\"BOOLEAN\",default:!0},enableNetwork:{description:\"If false, Yarn will refuse to use the network if required to\",type:\"BOOLEAN\",default:!0},enableOfflineMode:{description:\"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network\",type:\"BOOLEAN\",default:!1},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},unsafeHttpWhitelist:{description:\"List of the hostnames for which http queries are allowed (glob patterns are supported)\",type:\"STRING\",default:[],isArray:!0},httpTimeout:{description:\"Timeout of each http request in milliseconds\",type:\"NUMBER\",default:6e4},httpRetry:{description:\"Retry times on http failure\",type:\"NUMBER\",default:3},networkConcurrency:{description:\"Maximal number of concurrent requests\",type:\"NUMBER\",default:50},taskPoolConcurrency:{description:\"Maximal amount of concurrent heavy task processing\",type:\"NUMBER\",default:Rj()},taskPoolMode:{description:\"Execution strategy for heavy tasks\",type:\"STRING\",values:[\"async\",\"workers\"],default:\"workers\"},networkSettings:{description:\"Network settings per hostname (glob patterns are supported)\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{httpsCaFilePath:{description:\"Path to file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},enableNetwork:{description:\"If false, the package manager will refuse to use the network if required to\",type:\"BOOLEAN\",default:null},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null}}}},httpsCaFilePath:{description:\"A path to a file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null},enableStrictSsl:{description:\"If false, SSL certificate errors will be ignored\",type:\"BOOLEAN\",default:!0},logFilters:{description:\"Overrides for log levels\",type:\"SHAPE\",isArray:!0,concatenateValues:!0,properties:{code:{description:\"Code of the messages covered by this override\",type:\"STRING\",default:void 0},text:{description:\"Code of the texts covered by this override\",type:\"STRING\",default:void 0},pattern:{description:\"Code of the patterns covered by this override\",type:\"STRING\",default:void 0},level:{description:\"Log level override, set to null to remove override\",type:\"STRING\",values:Object.values(eQ),isNullable:!0,default:void 0}}},enableTelemetry:{description:\"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry\",type:\"BOOLEAN\",default:!0},telemetryInterval:{description:\"Minimal amount of time between two telemetry uploads, in days\",type:\"NUMBER\",default:7},telemetryUserId:{description:\"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.\",type:\"STRING\",default:null},enableHardenedMode:{description:\"If true, automatically enable --check-resolutions --refresh-lockfile on installs\",type:\"BOOLEAN\",default:Up.isPR&&fmt,defaultText:\"<true on public PRs>\"},enableScripts:{description:\"If true, packages are allowed to have install scripts by default\",type:\"BOOLEAN\",default:!0},enableStrictSettings:{description:\"If true, unknown settings will cause Yarn to abort\",type:\"BOOLEAN\",default:!0},enableImmutableCache:{description:\"If true, the cache is reputed immutable and actions that would modify it will throw\",type:\"BOOLEAN\",default:!1},enableCacheClean:{description:\"If false, disallows the `cache clean` command\",type:\"BOOLEAN\",default:!0},checksumBehavior:{description:\"Enumeration defining what to do when a checksum doesn't match expectations\",type:\"STRING\",default:\"throw\"},injectEnvironmentFiles:{description:\"List of all the environment files that Yarn should inject inside the process when it starts\",type:\"ABSOLUTE_PATH\",default:[\".env.yarn?\"],isArray:!0},packageExtensions:{description:\"Map of package corrections to apply on the dependency tree\",type:\"MAP\",valueDefinition:{description:\"The extension that will be applied to any package whose version matches the specified range\",type:\"SHAPE\",properties:{dependencies:{description:\"The set of dependencies that must be made available to the current package in order for it to work properly\",type:\"MAP\",valueDefinition:{description:\"A range\",type:\"STRING\"}},peerDependencies:{description:\"Inherited dependencies - the consumer of the package will be tasked to provide them\",type:\"MAP\",valueDefinition:{description:\"A semver range\",type:\"STRING\"}},peerDependenciesMeta:{description:\"Extra information related to the dependencies listed in the peerDependencies field\",type:\"MAP\",valueDefinition:{description:\"The peerDependency meta\",type:\"SHAPE\",properties:{optional:{description:\"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error\",type:\"BOOLEAN\",default:!1}}}}}}}};Emt=process.platform===\"win32\"?mmt:ymt;ze=class t{constructor(e){this.isCI=Up.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(e,r,s){let a=new t(e);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(mT);let n=typeof s<\"u\"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(e,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=dmt();delete c.rcFilename;let f=new t(e),p=await t.findRcFiles(e),h=await t.findFolderRcFile(AI());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Whe(p.map(ce=>[ce.path,ce.data])),C=vt.dot,S=new Set(Object.keys(mT)),P=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:pe})=>({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:pe}),I=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:pe,...Be})=>{let Ce={};for(let[g,we]of Object.entries(Be))S.has(g)&&(Ce[g]=we);return Ce},R=({yarnPath:ce,ignorePath:me,...pe})=>{let Be={};for(let[Ce,g]of Object.entries(pe))S.has(Ce)||(Be[Ce]=g);return Be};if(f.importSettings(P(mT)),f.useWithSource(\"<environment>\",P(c),e,{strict:!1}),E){let[ce,me]=E;f.useWithSource(ce,P(me),C,{strict:!1})}if(a){if(await Imt({configuration:f,selfPath:a})!==null)return f;f.useWithSource(\"<override>\",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let N=await t.findProjectCwd(e);f.startingCwd=e,f.projectCwd=N;let U=Object.assign(Object.create(null),process.env);f.env=U;let W=await Promise.all(f.get(\"injectEnvironmentFiles\").map(async ce=>{let me=ce.endsWith(\"?\")?await le.readFilePromise(ce.slice(0,-1),\"utf8\").catch(()=>\"\"):await le.readFilePromise(ce,\"utf8\");return(0,Fde.parse)(me)}));for(let ce of W)for(let[me,pe]of Object.entries(ce))f.env[me]=Jk(pe,{env:U});if(f.importSettings(I(mT)),f.useWithSource(\"<environment>\",I(c),e,{strict:s}),E){let[ce,me]=E;f.useWithSource(ce,I(me),C,{strict:s})}let te=ce=>\"default\"in ce?ce.default:ce,ie=new Map([[\"@@core\",Ahe]]);if(r!==null)for(let ce of r.plugins.keys())ie.set(ce,te(r.modules.get(ce)));for(let[ce,me]of ie)f.activatePlugin(ce,me);let Ae=new Map([]);if(r!==null){let ce=new Map;for(let[Be,Ce]of r.modules)ce.set(Be,()=>Ce);let me=new Set,pe=async(Be,Ce)=>{let{factory:g,name:we}=kp(Be);if(!g||me.has(we))return;let Ee=new Map(ce),fe=X=>{if((0,Nde.isBuiltin)(X))return kp(X);if(Ee.has(X))return Ee.get(X)();throw new nt(`This plugin cannot access the package referenced via ${X} which is neither a builtin, nor an exposed entry`)},se=await GE(async()=>te(await g(fe)),X=>`${X} (when initializing ${we}, defined in ${Ce})`);ce.set(we,()=>se),me.add(we),Ae.set(we,se)};if(c.plugins)for(let Be of c.plugins.split(\";\")){let Ce=K.resolve(e,ue.toPortablePath(Be));await pe(Ce,\"<environment>\")}for(let{path:Be,cwd:Ce,data:g}of p)if(n&&Array.isArray(g.plugins))for(let we of g.plugins){let Ee=typeof we!=\"string\"?we.path:we,fe=we?.spec??\"\",se=we?.checksum??\"\";if(Ev.has(fe))continue;let X=K.resolve(Ce,ue.toPortablePath(Ee));if(!await le.existsPromise(X)){if(!fe){let gt=Ut(f,K.basename(X,\".cjs\"),Ct.NAME),j=Ut(f,\".gitignore\",Ct.NAME),rt=Ut(f,f.values.get(\"rcFilename\"),Ct.NAME),Fe=Ut(f,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",Ct.URL);throw new nt(`Missing source for the ${gt} plugin - please try to remove the plugin from ${rt} then reinstall it manually. This error usually occurs because ${j} is incorrect, check ${Fe} to make sure your plugin folder isn't gitignored.`)}if(!fe.match(/^https?:/)){let gt=Ut(f,K.basename(X,\".cjs\"),Ct.NAME),j=Ut(f,f.values.get(\"rcFilename\"),Ct.NAME);throw new nt(`Failed to recognize the source for the ${gt} plugin - please try to delete the plugin from ${j} then reinstall it manually.`)}let De=await kj(fe,{configuration:f}),Re=us(De);if(se&&se!==Re){let gt=Ut(f,K.basename(X,\".cjs\"),Ct.NAME),j=Ut(f,f.values.get(\"rcFilename\"),Ct.NAME),rt=Ut(f,`yarn plugin import ${fe}`,Ct.CODE);throw new nt(`Failed to fetch the ${gt} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${j} then run ${rt} to reimport it.`)}await le.mkdirPromise(K.dirname(X),{recursive:!0}),await le.writeFilePromise(X,De)}await pe(X,Be)}}for(let[ce,me]of Ae)f.activatePlugin(ce,me);if(f.useWithSource(\"<environment>\",R(c),e,{strict:s}),E){let[ce,me]=E;f.useWithSource(ce,R(me),C,{strict:s})}return f.get(\"enableGlobalCache\")&&(f.values.set(\"cacheFolder\",`${f.get(\"globalFolder\")}/cache`),f.sources.set(\"cacheFolder\",\"<internal>\")),f}static async findRcFiles(e){let r=Lj(),s=[],a=e,n=null;for(;a!==n;){n=a;let c=K.join(n,r);if(le.existsSync(c)){let f,p;try{p=await le.readFilePromise(c,\"utf8\"),f=ls(p)}catch{let h=\"\";throw p?.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(h=\" (in particular, make sure you list the colons after each key name)\"),new nt(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=K.dirname(n)}return s}static async findFolderRcFile(e){let r=K.join(e,Er.rc),s;try{s=await le.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=ls(s);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,s=e,a=null;for(;s!==a;){if(a=s,le.existsSync(K.join(a,Er.lockfile)))return a;le.existsSync(K.join(a,Er.manifest))&&(r=a),s=K.dirname(a)}return r}static async updateConfiguration(e,r,s={}){let a=Lj(),n=K.join(e,a),c=le.existsSync(n)?ls(await le.readFilePromise(n,\"utf8\")):{},f=!1,p;if(typeof r==\"function\"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C==\"function\")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===t.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await le.changeFilePromise(n,il(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await t.updateConfiguration(e,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!=\"string\"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(e){let r=AI();return await t.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,s]of Object.entries(e))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,s),this.values.set(r,Uj(this,s))}}useWithSource(e,r,s,a){try{this.use(e,r,s,a)}catch(n){throw n.message+=` (in ${Ut(this,e,Ct.PATH)})`,n}}use(e,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let c of[\"enableStrictSettings\",...Object.keys(r)]){let f=r[c],p=fH(f);if(p&&(e=p),typeof f>\"u\"||c===\"plugins\"||e===\"<environment>\"&&Amt.has(c))continue;if(c===\"rcFilename\")throw new nt(`The rcFilename settings can only be set via ${`${ET}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=AI(),S=e[0]!==\"<\"?K.dirname(e):null;if(a&&!(S!==null?C===S:!1))throw new nt(`Unrecognized or legacy configuration settings found: ${c} - run \"yarn config -v\" to see the list of settings supported in Yarn`);this.invalid.set(c,e);continue}if(this.sources.has(c)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=_j(this,c,f,h,s)}catch(C){throw C.message+=` in ${Ut(this,e,Ct.PATH)}`,C}if(c===\"enableStrictSettings\"&&e!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else this.values.set(c,E),this.sources.set(c,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key \"${e}\"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>\"u\")throw new nt(`Couldn't find a configuration settings named \"${e}\"`);return yT(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(e,{header:r,prefix:s,report:a}){let n,c,f=le.createWriteStream(e);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${s} ${Ut(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${s} ${Ut(this,\"STDERR\",\"red\")}`);n=new Oj.PassThrough,n.pipe(p),n.pipe(f),c=new Oj.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:c}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])e.push(new s);return new rm([new FQ,new yi,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])e.push(new s);return new lI([new cI,new uI,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r.linkers||[])e.push(new s);return e}getSupportedArchitectures(){let e=yv(),r=this.get(\"supportedArchitectures\"),s=r.get(\"os\");s!==null&&(s=s.map(c=>c===\"current\"?e.os:c));let a=r.get(\"cpu\");a!==null&&(a=a.map(c=>c===\"current\"?e.cpu:c));let n=r.get(\"libc\");return n!==null&&(n=Yl(n,c=>c===\"current\"?e.libc??Yl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get(\"preferInteractive\"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!ul(s.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let c=new Ht;c.load(a,{yamlCompatibilityMode:!0});let f=jB(e,s.identHash),p=[];f.push([s.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,P]of Object.entries(C))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:S,value:P})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get(\"packageExtensions\"))r(C0(s,!0),Kk(a),{userProvided:!0});return e}normalizeLocator(e){return ul(e.reference)?Ys(e,`${this.get(\"defaultProtocol\")}${e.reference}`):Hp.test(e.reference)?Ys(e,`${this.get(\"defaultProtocol\")}${e.reference}`):e}normalizeDependency(e){return ul(e.range)?On(e,`${this.get(\"defaultProtocol\")}${e.range}`):Hp.test(e.range)?On(e,`${this.get(\"defaultProtocol\")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(e,{packageExtensions:r}){let s=zB(e),a=r.get(e.identHash);if(typeof a<\"u\"){let c=e.version;if(c!==null){for(let[f,p]of a)if(eA(c,f))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof s.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof s.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",Vl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:f3(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Da(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,On(f,\"*\"))}for(let c of s.peerDependencies.values()){if(c.scope===\"types\")continue;let f=n(c),p=ba(\"types\",f),h=cn(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||(s.peerDependencies.set(p.identHash,On(p,\"*\")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(Ws(s.dependencies,([,c])=>ll(c))),s.peerDependencies=new Map(Ws(s.peerDependencies,([,c])=>ll(c))),s}getLimit(e){return Vl(this.limits,e,()=>(0,Ode.default)(this.get(e)))}async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);n&&await n(...r)}}async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...s)}async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=e(c);f&&(a=await f(a,...s))}return a}async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);if(!n)continue;let c=await n(...r);if(typeof c<\"u\")return c}return null}}});var Gr={};Vt(Gr,{EndStrategy:()=>Gj,ExecError:()=>CT,PipeError:()=>wv,execvp:()=>Fj,pipevp:()=>Yu});function om(t){return t!==null&&typeof t.fd==\"number\"}function Hj(){}function jj(){for(let t of am)t.kill()}async function Yu(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":om(n)&&(h[0]=n),om(c)&&(h[1]=c),om(f)&&(h[2]=f);let E=(0,qj.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...s,PWD:ue.fromPortablePath(r)},stdio:h});am.add(E),am.size===1&&(process.on(\"SIGINT\",Hj),process.on(\"SIGTERM\",jj)),!om(n)&&n!==null&&n.pipe(E.stdin),om(c)||E.stdout.pipe(c,{end:!1}),om(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))om(S)||S.end()};return new Promise((S,P)=>{E.on(\"error\",I=>{am.delete(E),am.size===0&&(process.off(\"SIGINT\",Hj),process.off(\"SIGTERM\",jj)),(p===2||p===1)&&C(),P(I)}),E.on(\"close\",(I,R)=>{am.delete(E),am.size===0&&(process.off(\"SIGINT\",Hj),process.off(\"SIGTERM\",jj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:Wj(I,R)}):P(new wv({fileName:t,code:I,signal:R}))})})}async function Fj(t,e,{cwd:r,env:s=process.env,encoding:a=\"utf8\",strict:n=!1}){let c=[\"ignore\",\"pipe\",\"pipe\"],f=[],p=[],h=ue.fromPortablePath(r);typeof s.PWD<\"u\"&&(s={...s,PWD:h});let E=(0,qj.default)(t,e,{cwd:h,env:s,stdio:c});return E.stdout.on(\"data\",C=>{f.push(C)}),E.stderr.on(\"data\",C=>{p.push(C)}),await new Promise((C,S)=>{E.on(\"error\",P=>{let I=ze.create(r),R=Ut(I,t,Ct.PATH);S(new Yt(1,`Process ${R} failed to spawn`,N=>{N.reportError(1,`  ${Zf(I,{label:\"Thrown Error\",value:Hu(Ct.NO_HINT,P.message)})}`)}))}),E.on(\"close\",(P,I)=>{let R=a===\"buffer\"?Buffer.concat(f):Buffer.concat(f).toString(a),N=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);P===0||!n?C({code:Wj(P,I),stdout:R,stderr:N}):S(new CT({fileName:t,code:P,signal:I,stdout:R,stderr:N}))})})}function Wj(t,e){let r=Cmt.get(e);return typeof r<\"u\"?128+r:t??1}function wmt(t,e,{configuration:r,report:s}){s.reportError(1,`  ${Zf(r,t!==null?{label:\"Exit Code\",value:Hu(Ct.NUMBER,t)}:{label:\"Exit Signal\",value:Hu(Ct.CODE,e)})}`)}var qj,Gj,wv,CT,am,Cmt,dT=It(()=>{bt();qj=et(J_());Cv();Fc();Qc();Gj=(s=>(s[s.Never=0]=\"Never\",s[s.ErrorCode=1]=\"ErrorCode\",s[s.Always=2]=\"Always\",s))(Gj||{}),wv=class extends Yt{constructor({fileName:e,code:r,signal:s}){let a=ze.create(K.cwd()),n=Ut(a,e,Ct.PATH);super(1,`Child ${n} reported an error`,c=>{wmt(r,s,{configuration:a,report:c})}),this.code=Wj(r,s)}},CT=class extends wv{constructor({fileName:e,code:r,signal:s,stdout:a,stderr:n}){super({fileName:e,code:r,signal:s}),this.stdout=a,this.stderr=n}};am=new Set;Cmt=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function _de(t){Mde=t}function Bv(){return typeof Yj>\"u\"&&(Yj=Mde()),Yj}var Yj,Mde,Vj=It(()=>{Mde=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var Ude=L((wT,Jj)=>{var Bmt=Object.assign({},ye(\"fs\")),Kj=function(){var t=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<\"u\"?e:{},s,a;r.ready=new Promise(function(Je,st){s=Je,a=st});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p=\"./this.program\",h=function(Je,st){throw st},E=!1,C=!0,S=\"\";function P(Je){return r.locateFile?r.locateFile(Je,S):S+Je}var I,R,N,U;C&&(E?S=ye(\"path\").dirname(S)+\"/\":S=__dirname+\"/\",I=function(st,St){var lr=Me(st);return lr?St?lr:lr.toString():(N||(N=Bmt),U||(U=ye(\"path\")),st=U.normalize(st),N.readFileSync(st,St?null:\"utf8\"))},R=function(st){var St=I(st,!0);return St.buffer||(St=new Uint8Array(St)),we(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),f=process.argv.slice(2),h=function(Je){process.exit(Je)},r.inspect=function(){return\"[Emscripten Module object]\"});var W=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,Ae=function(Je){ie=Je},ce;r.wasmBinary&&(ce=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&rs(\"no native wasm support detected\");function pe(Je,st,St){switch(st=st||\"i8\",st.charAt(st.length-1)===\"*\"&&(st=\"i32\"),st){case\"i1\":return Ye[Je>>0];case\"i8\":return Ye[Je>>0];case\"i16\":return Ih((Je>>1)*2);case\"i32\":return ro((Je>>2)*4);case\"i64\":return ro((Je>>2)*4);case\"float\":return pf((Je>>2)*4);case\"double\":return Eh((Je>>3)*8);default:rs(\"invalid type for getValue: \"+st)}return null}var Be,Ce=!1,g;function we(Je,st){Je||rs(\"Assertion failed: \"+st)}function Ee(Je){var st=r[\"_\"+Je];return we(st,\"Cannot call unknown function \"+Je+\", make sure it is exported\"),st}function fe(Je,st,St,lr,ee){var Ie={string:function(qi){var Tn=0;if(qi!=null&&qi!==0){var Ga=(qi.length<<2)+1;Tn=wi(Ga),gt(qi,Tn,Ga)}return Tn},array:function(qi){var Tn=wi(qi.length);return Fe(qi,Tn),Tn}};function Oe(qi){return st===\"string\"?De(qi):st===\"boolean\"?!!qi:qi}var ht=Ee(Je),mt=[],Dt=0;if(lr)for(var tr=0;tr<lr.length;tr++){var fn=Ie[St[tr]];fn?(Dt===0&&(Dt=df()),mt[tr]=fn(lr[tr])):mt[tr]=lr[tr]}var ai=ht.apply(null,mt);return ai=Oe(ai),Dt!==0&&Ac(Dt),ai}function se(Je,st,St,lr){St=St||[];var ee=St.every(function(Oe){return Oe===\"number\"}),Ie=st!==\"string\";return Ie&&ee&&!lr?Ee(Je):function(){return fe(Je,st,St,arguments,lr)}}var X=new TextDecoder(\"utf8\");function De(Je,st){if(!Je)return\"\";for(var St=Je+st,lr=Je;!(lr>=St)&&ke[lr];)++lr;return X.decode(ke.subarray(Je,lr))}function Re(Je,st,St,lr){if(!(lr>0))return 0;for(var ee=St,Ie=St+lr-1,Oe=0;Oe<Je.length;++Oe){var ht=Je.charCodeAt(Oe);if(ht>=55296&&ht<=57343){var mt=Je.charCodeAt(++Oe);ht=65536+((ht&1023)<<10)|mt&1023}if(ht<=127){if(St>=Ie)break;st[St++]=ht}else if(ht<=2047){if(St+1>=Ie)break;st[St++]=192|ht>>6,st[St++]=128|ht&63}else if(ht<=65535){if(St+2>=Ie)break;st[St++]=224|ht>>12,st[St++]=128|ht>>6&63,st[St++]=128|ht&63}else{if(St+3>=Ie)break;st[St++]=240|ht>>18,st[St++]=128|ht>>12&63,st[St++]=128|ht>>6&63,st[St++]=128|ht&63}}return st[St]=0,St-ee}function gt(Je,st,St){return Re(Je,ke,st,St)}function j(Je){for(var st=0,St=0;St<Je.length;++St){var lr=Je.charCodeAt(St);lr>=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Je.charCodeAt(++St)&1023),lr<=127?++st:lr<=2047?st+=2:lr<=65535?st+=3:st+=4}return st}function rt(Je){var st=j(Je)+1,St=Ma(st);return St&&Re(Je,Ye,St,st),St}function Fe(Je,st){Ye.set(Je,st)}function Ne(Je,st){return Je%st>0&&(Je+=st-Je%st),Je}var Pe,Ye,ke,it,_e,x,w,b,y,F;function z(Je){Pe=Je,r.HEAP_DATA_VIEW=F=new DataView(Je),r.HEAP8=Ye=new Int8Array(Je),r.HEAP16=it=new Int16Array(Je),r.HEAP32=x=new Int32Array(Je),r.HEAPU8=ke=new Uint8Array(Je),r.HEAPU16=_e=new Uint16Array(Je),r.HEAPU32=w=new Uint32Array(Je),r.HEAPF32=b=new Float32Array(Je),r.HEAPF64=y=new Float64Array(Je)}var Z=r.INITIAL_MEMORY||16777216,$,oe=[],xe=[],Te=[],lt=!1;function Et(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Rs(oe)}function qt(){lt=!0,Rs(xe)}function ir(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Rs(Te)}function Pt(Je){oe.unshift(Je)}function gn(Je){xe.unshift(Je)}function Pr(Je){Te.unshift(Je)}var Ir=0,Nr=null,nn=null;function oi(Je){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function wo(Je){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Nr!==null&&(clearInterval(Nr),Nr=null),nn)){var st=nn;nn=null,st()}}r.preloadedImages={},r.preloadedAudios={};function rs(Je){r.onAbort&&r.onAbort(Je),Je+=\"\",te(Je),Ce=!0,g=1,Je=\"abort(\"+Je+\"). Build with -s ASSERTIONS=1 for more info.\";var st=new WebAssembly.RuntimeError(Je);throw a(st),st}var eo=\"data:application/octet-stream;base64,\";function Bo(Je){return Je.startsWith(eo)}var Hi=\"data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcNAQsCfwJ/An8gASgCBCICBEAgBCAAKAIoIAIQHiAAKAIcIQELIAEoAlAiAgsEQCAAKAIkIAAoAiggAhAeIAAoAhwhAQsgASgCTCICCwRAIAAoAiQgACgCKCACEB4gACgCHCEBCyABKAJIIgILBEAgACgCJCAAKAIoIAIQHiAAKAIcIQELIAAoAiQgACgCKCABEB4gAEEANgIcQX1BACADQfEARhshAgsgAgvrCQEIfyAAKAIwIgMgACgCDEEFayICIAIgA0sbIQggACgCACIEKAIEIQkgAUEERiEHAkADQCAEKAIQIgMgACgCoC5BKmpBA3UiAkkEQEEBIQYMAgsgCCADIAJrIgMgACgCaCAAKAJYayICIAQoAgRqIgVB//8DIAVB//8DSRsiBiADIAZJGyIDSwRAQQEhBiADQQBHIAdyRQ0CIAFFDQIgAyAFRw0CCyAAQQBBACAHIAMgBUZxIgUQOSAAIAAoAhBBBGsiBDYCECAAKAIEIARqIAM7AAAgACAAKAIQQQJqIgQ2AhAgACgCBCAEaiADQX9zOwAAIAAgACgCEEECajYCECAAKAIAEAoCfyACBEAgACgCACgCDCAAKAJIIAAoAlhqIAMgAiACIANLGyICEAcaIAAoAgAiBCAEKAIMIAJqNgIMIAQgBCgCECACazYCECAEIAQoAhQgAmo2AhQgACAAKAJYIAJqNgJYIAMgAmshAwsgAwsEQCAAKAIAIgIgAigCDCADEIMBIAAoAgAiAiACKAIMIANqNgIMIAIgAigCECADazYCECACIAIoAhQgA2o2AhQLIAAoAgAhBCAFRQ0AC0EAIQYLAkAgCSAEKAIEayICRQRAIAAoAmghAwwBCwJAIAAoAjAiAyACTQRAIABBAjYCgC4gACgCSCAEKAIAIANrIAMQBxogACAAKAIwIgM2AoQuIAAgAzYCaAwBCyACIAAoAkQgACgCaCIFa08EQCAAIAUgA2siBDYCaCAAKAJIIgUgAyAFaiAEEAcaIAAoAoAuIgNBAU0EQCAAIANBAWo2AoAuCyAAIAAoAmgiBSAAKAKELiIDIAMgBUsbNgKELiAAKAIAIQQLIAAoAkggBWogBCgCACACayACEAcaIAAgACgCaCACaiIDNgJoIAAgACgCMCAAKAKELiIEayIFIAIgAiAFSxsgBGo2AoQuCyAAIAM2AlgLIAAgAyAAKAJAIgIgAiADSRs2AkBBAyECAkAgBkUNACAAKAIAIgUoAgQhAgJAAkAgAUF7cUUNACACDQBBASECIAMgACgCWEYNAiAAKAJEIANrIQRBACECDAELIAIgACgCRCADayIETQ0AIAAoAlgiByAAKAIwIgZIDQAgACADIAZrIgM2AmggACAHIAZrNgJYIAAoAkgiAiACIAZqIAMQBxogACgCgC4iA0EBTQRAIAAgA0EBajYCgC4LIAAgACgCaCIDIAAoAoQuIgIgAiADSxs2AoQuIAAoAjAgBGohBCAAKAIAIgUoAgQhAgsCQCACIAQgAiAESRsiAkUEQCAAKAIwIQUMAQsgBSAAKAJIIANqIAIQgwEgACAAKAJoIAJqIgM2AmggACAAKAIwIgUgACgChC4iBGsiBiACIAIgBksbIARqNgKELgsgACADIAAoAkAiAiACIANJGzYCQCADIAAoAlgiBmsiAyAFIAAoAgwgACgCoC5BKmpBA3VrIgJB//8DIAJB//8DSRsiBCAEIAVLG0kEQEEAIQIgAUEERiADQQBHckUNASABRQ0BIAAoAgAoAgQNASADIARLDQELQQAhAiABQQRGBEAgACgCACgCBEUgAyAETXEhAgsgACAAKAJIIAZqIAQgAyADIARLGyIBIAIQOSAAIAAoAlggAWo2AlggACgCABAKQQJBACACGw8LIAIL/woCCn8DfiAAKQOYLiENIAAoAqAuIQQgAkEATgRAQQRBAyABLwECIggbIQlBB0GKASAIGyEFQX8hCgNAIAghByABIAsiDEEBaiILQQJ0ai8BAiEIAkACQCAGQQFqIgMgBU4NACAHIAhHDQAgAyEGDAELAkAgAyAJSARAIAAgB0ECdGoiBkHOFWohCSAGQcwVaiEKA0AgCjMBACEPAn8gBCAJLwEAIgZqIgVBP00EQCAPIASthiANhCENIAUMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIA03AAAgACAAKAIQQQhqNgIQIA8hDSAGDAELIAAoAgQgACgCEGogDyAErYYgDYQ3AAAgACAAKAIQQQhqNgIQIA9BwAAgBGutiCENIAVBQGoLIQQgA0EBayIDDQALDAELIAcEQAJAIAcgCkYEQCANIQ8gBCEFIAMhBgwBCyAAIAdBAnRqIgNBzBVqMwEAIQ8gBCADQc4Vai8BACIDaiIFQT9NBEAgDyAErYYgDYQhDwwBCyAEQcAARgRAIAAoAgQgACgCEGogDTcAACAAIAAoAhBBCGo2AhAgAyEFDAELIAAoAgQgACgCEGogDyAErYYgDYQ3AAAgACAAKAIQQQhqNgIQIAVBQGohBSAPQcAAIARrrYghDwsgADMBjBYhDgJAIAUgAC8BjhYiBGoiA0E/TQRAIA4gBa2GIA+EIQ4MAQsgBUHAAEYEQCAAKAIEIAAoAhBqIA83AAAgACAAKAIQQQhqNgIQIAQhAwwBCyAAKAIEIAAoAhBqIA4gBa2GIA+ENwAAIAAgACgCEEEIajYCECADQUBqIQMgDkHAACAFa62IIQ4LIAasQgN9IQ0gA0E9TQRAIANBAmohBCANIAOthiAOhCENDAILIANBwABGBEAgACgCBCAAKAIQaiAONwAAIAAgACgCEEEIajYCEEECIQQMAgsgACgCBCAAKAIQaiANIAOthiAOhDcAACAAIAAoAhBBCGo2AhAgA0E+ayEEIA1BwAAgA2utiCENDAELIAZBCUwEQCAAMwGQFiEOAkAgBCAALwGSFiIFaiIDQT9NBEAgDiAErYYgDYQhDgwBCyAEQcAARgRAIAAoAgQgACgCEGogDTcAACAAIAAoAhBBCGo2AhAgBSEDDAELIAAoAgQgACgCEGogDiAErYYgDYQ3AAAgACAAKAIQQQhqNgIQIANBQGohAyAOQcAAIARrrYghDgsgBqxCAn0hDSADQTxNBEAgA0EDaiEEIA0gA62GIA6EIQ0MAgsgA0HAAEYEQCAAKAIEIAAoAhBqIA43AAAgACAAKAIQQQhqNgIQQQMhBAwCCyAAKAIEIAAoAhBqIA0gA62GIA6ENwAAIAAgACgCEEEIajYCECADQT1rIQQgDUHAACADa62IIQ0MAQsgADMBlBYhDgJAIAQgAC8BlhYiBWoiA0E/TQRAIA4gBK2GIA2EIQ4MAQsgBEHAAEYEQCAAKAIEIAAoAhBqIA03AAAgACAAKAIQQQhqNgIQIAUhAwwBCyAAKAIEIAAoAhBqIA4gBK2GIA2ENwAAIAAgACgCEEEIajYCECADQUBqIQMgDkHAACAEa62IIQ4LIAatQgp9IQ0gA0E4TQRAIANBB2ohBCANIAOthiAOhCENDAELIANBwABGBEAgACgCBCAAKAIQaiAONwAAIAAgACgCEEEIajYCEEEHIQQMAQsgACgCBCAAKAIQaiANIAOthiAOhDcAACAAIAAoAhBBCGo2AhAgA0E5ayEEIA1BwAAgA2utiCENC0EAIQYCfyAIRQRAQYoBIQVBAwwBC0EGQQcgByAIRiIDGyEFQQNBBCADGwshCSAHIQoLIAIgDEcNAAsLIAAgBDYCoC4gACANNwOYLgv5BQIIfwJ+AkAgACgC8C1FBEAgACkDmC4hCyAAKAKgLiEDDAELA0AgCSIDQQNqIQkgAyAAKALsLWoiAy0AAiEFIAApA5guIQwgACgCoC4hBAJAIAMvAAAiB0UEQCABIAVBAnRqIgMzAQAhCyAEIAMvAQIiBWoiA0E/TQRAIAsgBK2GIAyEIQsMAgsgBEHAAEYEQCAAKAIEIAAoAhBqIAw3AAAgACAAKAIQQQhqNgIQIAUhAwwCCyAAKAIEIAAoAhBqIAsgBK2GIAyENwAAIAAgACgCEEEIajYCECADQUBqIQMgC0HAACAEa62IIQsMAQsgBUGAzwBqLQAAIghBAnQiBiABaiIDQYQIajMBACELIANBhghqLwEAIQMgCEEIa0ETTQRAIAUgBkGA0QBqKAIAa60gA62GIAuEIQsgBkHA0wBqKAIAIANqIQMLIAMgAiAHQQFrIgcgB0EHdkGAAmogB0GAAkkbQYDLAGotAAAiBUECdCIIaiIKLwECaiEGIAozAQAgA62GIAuEIQsgBCAFQQRJBH8gBgUgByAIQYDSAGooAgBrrSAGrYYgC4QhCyAIQcDUAGooAgAgBmoLIgVqIgNBP00EQCALIASthiAMhCELDAELIARBwABGBEAgACgCBCAAKAIQaiAMNwAAIAAgACgCEEEIajYCECAFIQMMAQsgACgCBCAAKAIQaiALIASthiAMhDcAACAAIAAoAhBBCGo2AhAgA0FAaiEDIAtBwAAgBGutiCELCyAAIAs3A5guIAAgAzYCoC4gCSAAKALwLUkNAAsLIAFBgAhqMwEAIQwCQCADIAFBgghqLwEAIgJqIgFBP00EQCAMIAOthiALhCEMDAELIANBwABGBEAgACgCBCAAKAIQaiALNwAAIAAgACgCEEEIajYCECACIQEMAQsgACgCBCAAKAIQaiAMIAOthiALhDcAACAAIAAoAhBBCGo2AhAgAUFAaiEBIAxBwAAgA2utiCEMCyAAIAw3A5guIAAgATYCoC4L8AQBA38gAEHkAWohAgNAIAIgAUECdCIDakEAOwEAIAIgA0EEcmpBADsBACABQQJqIgFBngJHDQALIABBADsBzBUgAEEAOwHYEyAAQZQWakEAOwEAIABBkBZqQQA7AQAgAEGMFmpBADsBACAAQYgWakEAOwEAIABBhBZqQQA7AQAgAEGAFmpBADsBACAAQfwVakEAOwEAIABB+BVqQQA7AQAgAEH0FWpBADsBACAAQfAVakEAOwEAIABB7BVqQQA7AQAgAEHoFWpBADsBACAAQeQVakEAOwEAIABB4BVqQQA7AQAgAEHcFWpBADsBACAAQdgVakEAOwEAIABB1BVqQQA7AQAgAEHQFWpBADsBACAAQcwUakEAOwEAIABByBRqQQA7AQAgAEHEFGpBADsBACAAQcAUakEAOwEAIABBvBRqQQA7AQAgAEG4FGpBADsBACAAQbQUakEAOwEAIABBsBRqQQA7AQAgAEGsFGpBADsBACAAQagUakEAOwEAIABBpBRqQQA7AQAgAEGgFGpBADsBACAAQZwUakEAOwEAIABBmBRqQQA7AQAgAEGUFGpBADsBACAAQZAUakEAOwEAIABBjBRqQQA7AQAgAEGIFGpBADsBACAAQYQUakEAOwEAIABBgBRqQQA7AQAgAEH8E2pBADsBACAAQfgTakEAOwEAIABB9BNqQQA7AQAgAEHwE2pBADsBACAAQewTakEAOwEAIABB6BNqQQA7AQAgAEHkE2pBADsBACAAQeATakEAOwEAIABB3BNqQQA7AQAgAEIANwL8LSAAQeQJakEBOwEAIABBADYC+C0gAEEANgLwLQuKAwIGfwR+QcgAEAkiBEUEQEEADwsgBEIANwMAIARCADcDMCAEQQA2AiggBEIANwMgIARCADcDGCAEQgA3AxAgBEIANwMIIARCADcDOCABUARAIARBCBAJIgA2AgQgAEUEQCAEEAYgAwRAIANBADYCBCADQQ42AgALQQAPCyAAQgA3AwAgBA8LAkAgAaciBUEEdBAJIgZFDQAgBCAGNgIAIAVBA3RBCGoQCSIFRQ0AIAQgATcDECAEIAU2AgQDQCAAIAynIghBBHRqIgcpAwgiDVBFBEAgBygCACIHRQRAIAMEQCADQQA2AgQgA0ESNgIACyAGEAYgBRAGIAQQBkEADwsgBiAKp0EEdGoiCSANNwMIIAkgBzYCACAFIAhBA3RqIAs3AwAgCyANfCELIApCAXwhCgsgDEIBfCIMIAFSDQALIAQgCjcDCCAEQgAgCiACGzcDGCAFIAqnQQN0aiALNwMAIAQgCzcDMCAEDwsgAwRAIANBADYCBCADQQ42AgALIAYQBiAEEAZBAAvlAQIDfwF+QX8hBQJAIAAgASACQQAQJiIERQ0AIAAgASACEIsBIgZFDQACfgJAIAJBCHENACAAKAJAIAGnQQR0aigCCCICRQ0AIAIgAxAhQQBOBEAgAykDAAwCCyAAQQhqIgAEQCAAQQA2AgQgAEEPNgIAC0F/DwsgAxAqIAMgBCgCGDYCLCADIAQpAyg3AxggAyAEKAIUNgIoIAMgBCkDIDcDICADIAQoAhA7ATAgAyAELwFSOwEyQvwBQtwBIAQtAAYbCyEHIAMgBjYCCCADIAE3AxAgAyAHQgOENwMAQQAhBQsgBQspAQF/IAAgASACIABBCGoiABAmIgNFBEBBAA8LIAMoAjBBACACIAAQJQuAAwEGfwJ/An9BMCABQYB/Sw0BGgJ/IAFBgH9PBEBBhIQBQTA2AgBBAAwBC0EAQRAgAUELakF4cSABQQtJGyIFQcwAahAJIgFFDQAaIAFBCGshAgJAIAFBP3FFBEAgAiEBDAELIAFBBGsiBigCACIHQXhxIAFBP2pBQHFBCGsiASABQUBrIAEgAmtBD0sbIgEgAmsiA2shBCAHQQNxRQRAIAIoAgAhAiABIAQ2AgQgASACIANqNgIADAELIAEgBCABKAIEQQFxckECcjYCBCABIARqIgQgBCgCBEEBcjYCBCAGIAMgBigCAEEBcXJBAnI2AgAgAiADaiIEIAQoAgRBAXI2AgQgAiADEDsLAkAgASgCBCICQQNxRQ0AIAJBeHEiAyAFQRBqTQ0AIAEgBSACQQFxckECcjYCBCABIAVqIgIgAyAFayIFQQNyNgIEIAEgA2oiAyADKAIEQQFyNgIEIAIgBRA7CyABQQhqCyIBRQsEQEEwDwsgACABNgIAQQALCwoAIABBiIQBEAQL6AIBBX8gACgCUCEBIAAvATAhBEEEIQUDQCABQQAgAS8BACICIARrIgMgAiADSRs7AQAgAUEAIAEvAQIiAiAEayIDIAIgA0kbOwECIAFBACABLwEEIgIgBGsiAyACIANJGzsBBCABQQAgAS8BBiICIARrIgMgAiADSRs7AQYgBUGAgARGRQRAIAFBCGohASAFQQRqIQUMAQsLAkAgBEUNACAEQQNxIQUgACgCTCEBIARBAWtBA08EQCAEIAVrIQADQCABQQAgAS8BACICIARrIgMgAiADSRs7AQAgAUEAIAEvAQIiAiAEayIDIAIgA0kbOwECIAFBACABLwEEIgIgBGsiAyACIANJGzsBBCABQQAgAS8BBiICIARrIgMgAiADSRs7AQYgAUEIaiEBIABBBGsiAA0ACwsgBUUNAANAIAFBACABLwEAIgAgBGsiAiAAIAJJGzsBACABQQJqIQEgBUEBayIFDQALCwuDAQEEfyACQQFOBEAgAiAAKAJIIAFqIgJqIQMgACgCUCEEA0AgBCACKAAAQbHz3fF5bEEPdkH+/wdxaiIFLwEAIgYgAUH//wNxRwRAIAAoAkwgASAAKAI4cUH//wNxQQF0aiAGOwEAIAUgATsBAAsgAUEBaiEBIAJBAWoiAiADSQ0ACwsLUAECfyABIAAoAlAgACgCSCABaigAAEGx893xeWxBD3ZB/v8HcWoiAy8BACICRwRAIAAoAkwgACgCOCABcUEBdGogAjsBACADIAE7AQALIAILugEBAX8jAEEQayICJAAgAkEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgARBYIAJBEGokAAu9AQEBfyMAQRBrIgEkACABQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgAEEANgJAIAFBEGokAEEAC70BAQF/IwBBEGsiASQAIAFBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAKAJAIQAgAUEQaiQAIAALvgEBAX8jAEEQayIEJAAgBEEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgASACIAMQVyAEQRBqJAALygEAIwBBEGsiAyQAIANBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAAoAkAgASACQdSAASgCABEAADYCQCADQRBqJAALwAEBAX8jAEEQayIDJAAgA0EAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgASACEF0hACADQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFwhACACQRBqJAAgAAu2AQEBfyMAQRBrIgAkACAAQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgAEEQaiQAQQgLwgEBAX8jAEEQayIEJAAgBEEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgASACIAMQWSEAIARBEGokACAAC8IBAQF/IwBBEGsiBCQAIARBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEgAiADEFYhACAEQRBqJAAgAAsHACAALwEwC8ABAQF/IwBBEGsiAyQAIANBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEgAhBVIQAgA0EQaiQAIAALBwAgACgCQAsaACAAIAAoAkAgASACQdSAASgCABEAADYCQAsLACAAQQA2AkBBAAsHACAAKAIgCwQAQQgLzgUCA34BfyMAQYBAaiIIJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDhECAwwFAAEECAkJCQkJCQcJBgkLIANCCFoEfiACIAEoAmQ2AgAgAiABKAJoNgIEQggFQn8LIQYMCwsgARAGDAoLIAEoAhAiAgRAIAIgASkDGCABQeQAaiICEEEiA1ANCCABKQMIIgVCf4UgA1QEQCACBEAgAkEANgIEIAJBFTYCAAsMCQsgAUEANgIQIAEgAyAFfDcDCCABIAEpAwAgA3w3AwALIAEtAHgEQCABKQMAIQUMCQtCACEDIAEpAwAiBVAEQCABQgA3AyAMCgsDQCAAIAggBSADfSIFQoDAACAFQoDAAFQbEBEiB0J/VwRAIAFB5ABqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwJCyAHUEUEQCABKQMAIgUgAyAHfCIDWA0KDAELCyABQeQAagRAIAFBADYCaCABQRE2AmQLDAcLIAEpAwggASkDICIFfSIHIAMgAyAHVhsiA1ANCAJAIAEtAHhFDQAgACAFQQAQFEF/Sg0AIAFB5ABqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwHCyAAIAIgAxARIgZCf1cEQCABQeQAagRAIAFBADYCaCABQRE2AmQLDAcLIAEgASkDICAGfCIDNwMgIAZCAFINCEIAIQYgAyABKQMIWg0IIAFB5ABqBEAgAUEANgJoIAFBETYCZAsMBgsgASkDICABKQMAIgV9IAEpAwggBX0gAiADIAFB5ABqEEQiA0IAUw0FIAEgASkDACADfDcDIAwHCyACIAFBKGoQYEEfdawhBgwGCyABMABgIQYMBQsgASkDcCEGDAQLIAEpAyAgASkDAH0hBgwDCyABQeQAagRAIAFBADYCaCABQRw2AmQLC0J/IQYMAQsgASAFNwMgCyAIQYBAayQAIAYLBwAgACgCAAsPACAAIAAoAjBBAWo2AjALGABB+IMBQgA3AgBBgIQBQQA2AgBB+IMBCwcAIABBDGoLBwAgACgCLAsHACAAKAIoCwcAIAAoAhgLFQAgACABrSACrUIghoQgAyAEEIoBCxMBAX4gABAzIgFCIIinEAAgAacLbwEBfiABrSACrUIghoQhBSMAQRBrIgEkAAJ/IABFBEAgBVBFBEAgBARAIARBADYCBCAEQRI2AgALQQAMAgtBAEIAIAMgBBA6DAELIAEgBTcDCCABIAA2AgAgAUIBIAMgBBA6CyEAIAFBEGokACAACxQAIAAgASACrSADrUIghoQgBBBSC9oCAgJ/AX4CfyABrSACrUIghoQiByAAKQMwVEEAIARBCkkbRQRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0F/DAELIAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtBfwwBCyADBH8gA0H//wNxQQhGIANBfUtyBUEBC0UEQCAAQQhqBEAgAEEANgIMIABBEDYCCAtBfwwBCyAAKAJAIgEgB6ciBUEEdGooAgAiAgR/IAIoAhAgA0YFIANBf0YLIQYgASAFQQR0aiIBIQUgASgCBCEBAkAgBgRAIAFFDQEgAUEAOwFQIAEgASgCAEF+cSIANgIAIAANASABECAgBUEANgIEQQAMAgsCQCABDQAgBSACECsiATYCBCABDQAgAEEIagRAIABBADYCDCAAQQ42AggLQX8MAgsgASAEOwFQIAEgAzYCECABIAEoAgBBAXI2AgALQQALCxwBAX4gACABIAIgAEEIahBMIgNCIIinEAAgA6cLHwEBfiAAIAEgAq0gA61CIIaEEBEiBEIgiKcQACAEpwteAQF+An5CfyAARQ0AGiAAKQMwIgIgAUEIcUUNABpCACACUA0AGiAAKAJAIQADQCACIAKnQQR0IABqQRBrKAIADQEaIAJCAX0iAkIAUg0AC0IACyICQiCIpxAAIAKnCxMAIAAgAa0gAq1CIIaEIAMQiwELnwEBAn4CfiACrSADrUIghoQhBUJ/IQQCQCAARQ0AIAAoAgQNACAAQQRqIQIgBUJ/VwRAIAIEQCACQQA2AgQgAkESNgIAC0J/DAILQgAhBCAALQAQDQAgBVANACAAKAIUIAEgBRARIgRCf1UNACAAKAIUIQAgAgRAIAIgACgCDDYCACACIAAoAhA2AgQLQn8hBAsgBAsiBEIgiKcQACAEpwueAQEBfwJ/IAAgACABrSACrUIghoQgAyAAKAIcEH8iAQRAIAEQMkF/TARAIABBCGoEQCAAIAEoAgw2AgggACABKAIQNgIMCyABEAtBAAwCC0EYEAkiBEUEQCAAQQhqBEAgAEEANgIMIABBDjYCCAsgARALQQAMAgsgBCAANgIAIARBADYCDCAEQgA3AgQgBCABNgIUIARBADoAEAsgBAsLsQICAX8BfgJ/QX8hBAJAIAAgAa0gAq1CIIaEIgZBAEEAECZFDQAgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAILIAAoAkAiASAGpyICQQR0aiIEKAIIIgUEQEEAIQQgBSADEHFBf0oNASAAQQhqBEAgAEEANgIMIABBDzYCCAtBfwwCCwJAIAQoAgAiBQRAIAUoAhQgA0YNAQsCQCABIAJBBHRqIgEoAgQiBA0AIAEgBRArIgQ2AgQgBA0AIABBCGoEQCAAQQA2AgwgAEEONgIIC0F/DAMLIAQgAzYCFCAEIAQoAgBBIHI2AgBBAAwCC0EAIQQgASACQQR0aiIBKAIEIgBFDQAgACAAKAIAQV9xIgI2AgAgAg0AIAAQICABQQA2AgQLIAQLCxQAIAAgAa0gAq1CIIaEIAQgBRBzCxIAIAAgAa0gAq1CIIaEIAMQFAtBAQF+An4gAUEAIAIbRQRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0J/DAELIAAgASACIAMQdAsiBEIgiKcQACAEpwvGAwIFfwF+An4CQAJAIAAiBC0AGEECcQRAIARBCGoEQCAEQQA2AgwgBEEZNgIICwwBCyABRQRAIARBCGoEQCAEQQA2AgwgBEESNgIICwwBCyABECIiByABakEBay0AAEEvRwRAIAdBAmoQCSIARQRAIARBCGoEQCAEQQA2AgwgBEEONgIICwwCCwJAAkAgACIGIAEiBXNBA3ENACAFQQNxBEADQCAGIAUtAAAiAzoAACADRQ0DIAZBAWohBiAFQQFqIgVBA3ENAAsLIAUoAgAiA0F/cyADQYGChAhrcUGAgYKEeHENAANAIAYgAzYCACAFKAIEIQMgBkEEaiEGIAVBBGohBSADQYGChAhrIANBf3NxQYCBgoR4cUUNAAsLIAYgBS0AACIDOgAAIANFDQADQCAGIAUtAAEiAzoAASAGQQFqIQYgBUEBaiEFIAMNAAsLIAcgACIDakEvOwAACyAEQQBCAEEAEFIiAEUEQCADEAYMAQsgBCADIAEgAxsgACACEHQhCCADEAYgCEJ/VwRAIAAQCyAIDAMLIAQgCEEDQYCA/I8EEHNBf0oNASAEIAgQchoLQn8hCAsgCAsiCEIgiKcQACAIpwsQACAAIAGtIAKtQiCGhBByCxYAIAAgAa0gAq1CIIaEIAMgBCAFEGYL3iMDD38IfgF8IwBB8ABrIgkkAAJAIAFBAE5BACAAG0UEQCACBEAgAkEANgIEIAJBEjYCAAsMAQsgACkDGCISAn5BsIMBKQMAIhNCf1EEQCAJQoOAgIBwNwMwIAlChoCAgPAANwMoIAlCgYCAgCA3AyBBsIMBQQAgCUEgahAkNwMAIAlCj4CAgHA3AxAgCUKJgICAoAE3AwAgCUKMgICA0AE3AwhBuIMBQQggCRAkNwMAQbCDASkDACETCyATC4MgE1IEQCACBEAgAkEANgIEIAJBHDYCAAsMAQsgASABQRByQbiDASkDACITIBKDIBNRGyIKQRhxQRhGBEAgAgRAIAJBADYCBCACQRk2AgALDAELIAlBOGoQKgJAIAAgCUE4ahAhBEACQCAAKAIMQQVGBEAgACgCEEEsRg0BCyACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAgsgCkEBcUUEQCACBEAgAkEANgIEIAJBCTYCAAsMAwsgAhBJIgVFDQEgBSAKNgIEIAUgADYCACAKQRBxRQ0CIAUgBSgCFEECcjYCFCAFIAUoAhhBAnI2AhgMAgsgCkECcQRAIAIEQCACQQA2AgQgAkEKNgIACwwCCyAAEDJBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQsCfyAKQQhxBEACQCACEEkiAUUNACABIAo2AgQgASAANgIAIApBEHFFDQAgASABKAIUQQJyNgIUIAEgASgCGEECcjYCGAsgAQwBCyMAQUBqIg4kACAOQQhqECoCQCAAIA5BCGoQIUF/TARAIAIEQCACIAAoAgw2AgAgAiAAKAIQNgIECwwBCyAOLQAIQQRxRQRAIAIEQCACQYoBNgIEIAJBBDYCAAsMAQsgDikDICETIAIQSSIFRQRAQQAhBQwBCyAFIAo2AgQgBSAANgIAIApBEHEEQCAFIAUoAhRBAnI2AhQgBSAFKAIYQQJyNgIYCwJAAkACQCATUARAAn8gACEBAkADQCABKQMYQoCAEINCAFINASABKAIAIgENAAtBAQwBCyABQQBCAEESEA6nCw0EIAVBCGoEQCAFQQA2AgwgBUETNgIICwwBCyMAQdAAayIBJAACQCATQhVYBEAgBUEIagRAIAVBADYCDCAFQRM2AggLDAELAkACQCAFKAIAQgAgE0KqgAQgE0KqgARUGyISfUECEBRBf0oNACAFKAIAIgMoAgxBBEYEQCADKAIQQRZGDQELIAVBCGoEQCAFIAMoAgw2AgggBSADKAIQNgIMCwwBCyAFKAIAEDMiE0J/VwRAIAUoAgAhAyAFQQhqIggEQCAIIAMoAgw2AgAgCCADKAIQNgIECwwBCyAFKAIAIBJBACAFQQhqIg8QLSIERQ0BIBJCqoAEWgRAAkAgBCkDCEIUVARAIARBADoAAAwBCyAEQhQ3AxAgBEEBOgAACwsgAQRAIAFBADYCBCABQRM2AgALIARCABATIQwCQCAELQAABH4gBCkDCCAEKQMQfQVCAAunIgdBEmtBA0sEQEJ/IRcDQCAMQQFrIQMgByAMakEVayEGAkADQCADQQFqIgNB0AAgBiADaxB6IgNFDQEgA0EBaiIMQZ8SQQMQPQ0ACwJAIAMgBCgCBGusIhIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBC0AAAR+IAQpAxAFQgALIRICQCAELQAABH4gBCkDCCAEKQMQfQVCAAtCFVgEQCABBEAgAUEANgIEIAFBEzYCAAsMAQsgBEIEEBMoAABB0JaVMEcEQCABBEAgAUEANgIEIAFBEzYCAAsMAQsCQAJAAkAgEkIUVA0AIAQoAgQgEqdqQRRrKAAAQdCWmThHDQACQCASQhR9IhQgBCIDKQMIVgRAIANBADoAAAwBCyADIBQ3AxAgA0EBOgAACyAFKAIUIRAgBSgCACEGIAMtAAAEfiAEKQMQBUIACyEWIARCBBATGiAEEAwhCyAEEAwhDSAEEB0iFEJ/VwRAIAEEQCABQRY2AgQgAUEENgIACwwECyAUQjh8IhUgEyAWfCIWVgRAIAEEQCABQQA2AgQgAUEVNgIACwwECwJAAkAgEyAUVg0AIBUgEyAEKQMIfFYNAAJAIBQgE30iFSAEKQMIVgRAIANBADoAAAwBCyADIBU3AxAgA0EBOgAAC0EAIQcMAQsgBiAUQQAQFEF/TARAIAEEQCABIAYoAgw2AgAgASAGKAIQNgIECwwFC0EBIQcgBkI4IAFBEGogARAtIgNFDQQLIANCBBATKAAAQdCWmTBHBEAgAQRAIAFBADYCBCABQRU2AgALIAdFDQQgAxAIDAQLIAMQHSEVAkAgEEEEcSIGRQ0AIBQgFXxCDHwgFlENACABBEAgAUEANgIEIAFBFTYCAAsgB0UNBCADEAgMBAsgA0IEEBMaIAMQFSIQIAsgC0H//wNGGyELIAMQFSIRIA0gDUH//wNGGyENAkAgBkUNACANIBFGQQAgCyAQRhsNACABBEAgAUEANgIEIAFBFTYCAAsgB0UNBCADEAgMBAsgCyANcgRAIAEEQCABQQA2AgQgAUEBNgIACyAHRQ0EIAMQCAwECyADEB0iGCADEB1SBEAgAQRAIAFBADYCBCABQQE2AgALIAdFDQQgAxAIDAQLIAMQHSEVIAMQHSEWIAMtAABFBEAgAQRAIAFBADYCBCABQRQ2AgALIAdFDQQgAxAIDAQLIAcEQCADEAgLAkAgFkIAWQRAIBUgFnwiGSAWWg0BCyABBEAgAUEWNgIEIAFBBDYCAAsMBAsgEyAUfCIUIBlUBEAgAQRAIAFBADYCBCABQRU2AgALDAQLAkAgBkUNACAUIBlRDQAgAQRAIAFBADYCBCABQRU2AgALDAQLIBggFUIugFgNASABBEAgAUEANgIEIAFBFTYCAAsMAwsCQCASIAQpAwhWBEAgBEEAOgAADAELIAQgEjcDECAEQQE6AAALIAUoAhQhAyAELQAABH4gBCkDCCAEKQMQfQVCAAtCFVgEQCABBEAgAUEANgIEIAFBFTYCAAsMAwsgBC0AAAR+IAQpAxAFQgALIRQgBEIEEBMaIAQQFQRAIAEEQCABQQA2AgQgAUEBNgIACwwDCyAEEAwgBBAMIgZHBEAgAQRAIAFBADYCBCABQRM2AgALDAMLIAQQFSEHIAQQFa0iFiAHrSIVfCIYIBMgFHwiFFYEQCABBEAgAUEANgIEIAFBFTYCAAsMAwsCQCADQQRxRQ0AIBQgGFENACABBEAgAUEANgIEIAFBFTYCAAsMAwsgBq0gARBqIgNFDQIgAyAWNwMgIAMgFTcDGCADQQA6ACwMAQsgGCABEGoiA0UNASADIBY3AyAgAyAVNwMYIANBAToALAsCQCASQhR8IhQgBCkDCFYEQCAEQQA6AAAMAQsgBCAUNwMQIARBAToAAAsgBBAMIQYCQCADKQMYIAMpAyB8IBIgE3xWDQACQCAGRQRAIAUtAARBBHFFDQELAkAgEkIWfCISIAQpAwhWBEAgBEEAOgAADAELIAQgEjcDECAEQQE6AAALIAQtAAAEfiAEKQMIIAQpAxB9BUIACyIUIAatIhJUDQEgBS0ABEEEcUEAIBIgFFIbDQEgBkUNACADIAQgEhATIAZBACABEDUiBjYCKCAGDQAgAxAWDAILAkAgEyADKQMgIhJYBEACQCASIBN9IhIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBCADKQMYEBMiBkUNAiAGIAMpAxgQFyIHDQEgAQRAIAFBADYCBCABQQ42AgALIAMQFgwDCyAFKAIAIBJBABAUIQcgBSgCACEGIAdBf0wEQCABBEAgASAGKAIMNgIAIAEgBigCEDYCBAsgAxAWDAMLQQAhByAGEDMgAykDIFENACABBEAgAUEANgIEIAFBEzYCAAsgAxAWDAILQgAhFAJAAkAgAykDGCIWUEUEQANAIBQgAykDCFIiC0UEQCADLQAsDQMgFkIuVA0DAn8CQCADKQMQIhVCgIAEfCISIBVaQQAgEkKAgICAAVQbRQ0AIAMoAgAgEqdBBHQQNCIGRQ0AIAMgBjYCAAJAIAMpAwgiFSASWg0AIAYgFadBBHRqIgZCADcCACAGQgA3AAUgFUIBfCIVIBJRDQADQCADKAIAIBWnQQR0aiIGQgA3AgAgBkIANwAFIBVCAXwiFSASUg0ACwsgAyASNwMIIAMgEjcDEEEBDAELIAEEQCABQQA2AgQgAUEONgIAC0EAC0UNBAtB2AAQCSIGBH8gBkIANwMgIAZBADYCGCAGQv////8PNwMQIAZBADsBDCAGQb+GKDYCCCAGQQE6AAYgBkEAOwEEIAZBADYCACAGQgA3A0ggBkGAgNiNeDYCRCAGQgA3AyggBkIANwMwIAZCADcDOCAGQUBrQQA7AQAgBkIANwNQIAYFQQALIQYgAygCACAUp0EEdGogBjYCAAJAIAYEQCAGIAUoAgAgB0EAIAEQaCISQn9VDQELIAsNBCABKAIAQRNHDQQgAQRAIAFBADYCBCABQRU2AgALDAQLIBRCAXwhFCAWIBJ9IhZCAFINAAsLIBQgAykDCFINAAJAIAUtAARBBHFFDQAgBwRAIActAAAEfyAHKQMQIAcpAwhRBUEAC0UNAgwBCyAFKAIAEDMiEkJ/VwRAIAUoAgAhBiABBEAgASAGKAIMNgIAIAEgBigCEDYCBAsgAxAWDAULIBIgAykDGCADKQMgfFINAQsgBxAIAn4gCARAAn8gF0IAVwRAIAUgCCABEEghFwsgBSADIAEQSCISIBdVCwRAIAgQFiASDAILIAMQFgwFC0IAIAUtAARBBHFFDQAaIAUgAyABEEgLIRcgAyEIDAMLIAEEQCABQQA2AgQgAUEVNgIACyAHEAggAxAWDAILIAMQFiAHEAgMAQsgAQRAIAFBADYCBCABQRU2AgALIAMQFgsCQCAMIAQoAgRrrCISIAQpAwhWBEAgBEEAOgAADAELIAQgEjcDECAEQQE6AAALIAQtAAAEfiAEKQMIIAQpAxB9BUIAC6ciB0ESa0EDSw0BCwsgBBAIIBdCf1UNAwwBCyAEEAgLIA8iAwRAIAMgASgCADYCACADIAEoAgQ2AgQLIAgQFgtBACEICyABQdAAaiQAIAgNAQsgAgRAIAIgBSgCCDYCACACIAUoAgw2AgQLDAELIAUgCCgCADYCQCAFIAgpAwg3AzAgBSAIKQMQNwM4IAUgCCgCKDYCICAIEAYgBSgCUCEIIAVBCGoiBCEBQQAhBwJAIAUpAzAiE1ANAEGAgICAeCEGAn8gE7pEAAAAAAAA6D+jRAAA4P///+9BpCIaRAAAAAAAAPBBYyAaRAAAAAAAAAAAZnEEQCAaqwwBC0EACyIDQYCAgIB4TQRAIANBAWsiA0EBdiADciIDQQJ2IANyIgNBBHYgA3IiA0EIdiADciIDQRB2IANyQQFqIQYLIAYgCCgCACIMTQ0AIAYQPCILRQRAIAEEQCABQQA2AgQgAUEONgIACwwBCwJAIAgpAwhCACAMG1AEQCAIKAIQIQ8MAQsgCCgCECEPA0AgDyAHQQJ0aigCACIBBEADQCABKAIYIQMgASALIAEoAhwgBnBBAnRqIg0oAgA2AhggDSABNgIAIAMiAQ0ACwsgB0EBaiIHIAxHDQALCyAPEAYgCCAGNgIAIAggCzYCEAsCQCAFKQMwUA0AQgAhEwJAIApBBHFFBEADQCAFKAJAIBOnQQR0aigCACgCMEEAQQAgAhAlIgFFDQQgBSgCUCABIBNBCCAEEE1FBEAgBCgCAEEKRw0DCyATQgF8IhMgBSkDMFQNAAwDCwALA0AgBSgCQCATp0EEdGooAgAoAjBBAEEAIAIQJSIBRQ0DIAUoAlAgASATQQggBBBNRQ0BIBNCAXwiEyAFKQMwVA0ACwwBCyACBEAgAiAEKAIANgIAIAIgBCgCBDYCBAsMAQsgBSAFKAIUNgIYDAELIAAgACgCMEEBajYCMCAFEEtBACEFCyAOQUBrJAAgBQsiBQ0BIAAQGhoLQQAhBQsgCUHwAGokACAFCxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwAL4CoDEX8IfgN8IwBBwMAAayIHJABBfyECAkAgAEUNAAJ/IAAtAChFBEBBACAAKAIYIAAoAhRGDQEaC0EBCyEBAkACQCAAKQMwIhRQRQRAIAAoAkAhCgNAIAogEqdBBHRqIgMtAAwhCwJAAkAgAygCCA0AIAsNACADKAIEIgNFDQEgAygCAEUNAQtBASEBCyAXIAtBAXOtQv8Bg3whFyASQgF8IhIgFFINAAsgF0IAUg0BCyAAKAIEQQhxIAFyRQ0BAn8gACgCACIDKAIkIgFBA0cEQCADKAIgBH9BfyADEBpBAEgNAhogAygCJAUgAQsEQCADEEMLQX8gA0EAQgBBDxAOQgBTDQEaIANBAzYCJAtBAAtBf0oNASAAKAIAKAIMQRZGBEAgACgCACgCEEEsRg0CCyAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLDAILIAFFDQAgFCAXVARAIABBCGoEQCAAQQA2AgwgAEEUNgIICwwCCyAXp0EDdBAJIgtFDQFCfyEWQgAhEgNAAkAgCiASp0EEdGoiBigCACIDRQ0AAkAgBigCCA0AIAYtAAwNACAGKAIEIgFFDQEgASgCAEUNAQsgFiADKQNIIhMgEyAWVhshFgsgBi0ADEUEQCAXIBlYBEAgCxAGIABBCGoEQCAAQQA2AgwgAEEUNgIICwwECyALIBmnQQN0aiASNwMAIBlCAXwhGQsgEkIBfCISIBRSDQALIBcgGVYEQCALEAYgAEEIagRAIABBADYCDCAAQRQ2AggLDAILAkACQCAAKAIAKQMYQoCACINQDQACQAJAIBZCf1INACAAKQMwIhNQDQIgE0IBgyEVIAAoAkAhAwJAIBNCAVEEQEJ/IRRCACESQgAhFgwBCyATQn6DIRlCfyEUQgAhEkIAIRYDQCADIBKnQQR0aigCACIBBEAgFiABKQNIIhMgEyAWVCIBGyEWIBQgEiABGyEUCyADIBJCAYQiGKdBBHRqKAIAIgEEQCAWIAEpA0giEyATIBZUIgEbIRYgFCAYIAEbIRQLIBJCAnwhEiAZQgJ9IhlQRQ0ACwsCQCAVUA0AIAMgEqdBBHRqKAIAIgFFDQAgFiABKQNIIhMgEyAWVCIBGyEWIBQgEiABGyEUCyAUQn9RDQBCACETIwBBEGsiBiQAAkAgACAUIABBCGoiCBBBIhVQDQAgFSAAKAJAIBSnQQR0aigCACIKKQMgIhh8IhQgGFpBACAUQn9VG0UEQCAIBEAgCEEWNgIEIAhBBDYCAAsMAQsgCi0ADEEIcUUEQCAUIRMMAQsgACgCACAUQQAQFCEBIAAoAgAhAyABQX9MBEAgCARAIAggAygCDDYCACAIIAMoAhA2AgQLDAELIAMgBkEMakIEEBFCBFIEQCAAKAIAIQEgCARAIAggASgCDDYCACAIIAEoAhA2AgQLDAELIBRCBHwgFCAGKAAMQdCWncAARhtCFEIMAn9BASEBAkAgCikDKEL+////D1YNACAKKQMgQv7///8PVg0AQQAhAQsgAQsbfCIUQn9XBEAgCARAIAhBFjYCBCAIQQQ2AgALDAELIBQhEwsgBkEQaiQAIBMiFkIAUg0BIAsQBgwFCyAWUA0BCwJ/IAAoAgAiASgCJEEBRgRAIAFBDGoEQCABQQA2AhAgAUESNgIMC0F/DAELQX8gAUEAIBZBERAOQgBTDQAaIAFBATYCJEEAC0F/Sg0BC0IAIRYCfyAAKAIAIgEoAiRBAUYEQCABQQxqBEAgAUEANgIQIAFBEjYCDAtBfwwBC0F/IAFBAEIAQQgQDkIAUw0AGiABQQE2AiRBAAtBf0oNACAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLIAsQBgwCCyAAKAJUIgIEQCACQgA3AxggAigCAEQAAAAAAAAAACACKAIMIAIoAgQRDgALIABBCGohBCAXuiEcQgAhFAJAAkACQANAIBcgFCITUgRAIBO6IByjIRsgE0IBfCIUuiAcoyEaAkAgACgCVCICRQ0AIAIgGjkDKCACIBs5AyAgAisDECAaIBuhRAAAAAAAAAAAoiAboCIaIAIrAxihY0UNACACKAIAIBogAigCDCACKAIEEQ4AIAIgGjkDGAsCfwJAIAAoAkAgCyATp0EDdGopAwAiE6dBBHRqIg0oAgAiAQRAIAEpA0ggFlQNAQsgDSgCBCEFAkACfwJAIA0oAggiAkUEQCAFRQ0BQQEgBSgCACICQQFxDQIaIAJBwABxQQZ2DAILQQEgBQ0BGgsgDSABECsiBTYCBCAFRQ0BIAJBAEcLIQZBACEJIwBBEGsiDCQAAkAgEyAAKQMwWgRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0F/IQkMAQsgACgCQCIKIBOnIgNBBHRqIg8oAgAiAkUNACACLQAEDQACQCACKQNIQhp8IhhCf1cEQCAAQQhqBEAgAEEWNgIMIABBBDYCCAsMAQtBfyEJIAAoAgAgGEEAEBRBf0wEQCAAKAIAIQIgAEEIagRAIAAgAigCDDYCCCAAIAIoAhA2AgwLDAILIAAoAgBCBCAMQQxqIABBCGoiDhAtIhBFDQEgEBAMIQEgEBAMIQggEC0AAAR/IBApAxAgECkDCFEFQQALIQIgEBAIIAJFBEAgDgRAIA5BADYCBCAOQRQ2AgALDAILAkAgCEUNACAAKAIAIAGtQQEQFEF/TARAQYSEASgCACECIA4EQCAOIAI2AgQgDkEENgIACwwDC0EAIAAoAgAgCEEAIA4QRSIBRQ0BIAEgCEGAAiAMQQhqIA4QbiECIAEQBiACRQ0BIAwoAggiAkUNACAMIAIQbSICNgIIIA8oAgAoAjQgAhBvIQIgDygCACACNgI0CyAPKAIAIgJBAToABEEAIQkgCiADQQR0aigCBCIBRQ0BIAEtAAQNASACKAI0IQIgAUEBOgAEIAEgAjYCNAwBC0F/IQkLIAxBEGokACAJQQBIDQUgACgCABAfIhhCAFMNBSAFIBg3A0ggBgRAQQAhDCANKAIIIg0hASANRQRAIAAgACATQQhBABB/IgwhASAMRQ0HCwJAAkAgASAHQQhqECFBf0wEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMAQsgBykDCCISQsAAg1AEQCAHQQA7ATggByASQsAAhCISNwMICwJAAkAgBSgCECICQX5PBEAgBy8BOCIDRQ0BIAUgAzYCECADIQIMAgsgAg0AIBJCBINQDQAgByAHKQMgNwMoIAcgEkIIhCISNwMIQQAhAgwBCyAHIBJC9////w+DIhI3AwgLIBJCgAGDUARAIAdBADsBOiAHIBJCgAGEIhI3AwgLAn8gEkIEg1AEQEJ/IRVBgAoMAQsgBSAHKQMgIhU3AyggEkIIg1AEQAJAAkACQAJAQQggAiACQX1LG0H//wNxDg0CAwMDAwMDAwEDAwMAAwtBgApBgAIgFUKUwuTzD1YbDAQLQYAKQYACIBVCg4Ow/w9WGwwDC0GACkGAAiAVQv////8PVhsMAgtBgApBgAIgFUIAUhsMAQsgBSAHKQMoNwMgQYACCyEPIAAoAgAQHyITQn9XBEAgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwBCyAFIAUvAQxB9/8DcTsBDCAAIAUgDxA3IgpBAEgNACAHLwE4IghBCCAFKAIQIgMgA0F9SxtB//8DcSICRyEGAkACQAJAAkACQAJAAkAgAiAIRwRAIANBAEchAwwBC0EAIQMgBS0AAEGAAXFFDQELIAUvAVIhCSAHLwE6IQIMAQsgBS8BUiIJIAcvAToiAkYNAQsgASABKAIwQQFqNgIwIAJB//8DcQ0BIAEhAgwCCyABIAEoAjBBAWo2AjBBACEJDAILQSZBACAHLwE6QQFGGyICRQRAIAQEQCAEQQA2AgQgBEEYNgIACyABEAsMAwsgACABIAcvATpBACAAKAIcIAIRBgAhAiABEAsgAkUNAgsgCUEARyEJIAhBAEcgBnFFBEAgAiEBDAELIAAgAiAHLwE4EIEBIQEgAhALIAFFDQELAkAgCEUgBnJFBEAgASECDAELIAAgAUEAEIABIQIgARALIAJFDQELAkAgA0UEQCACIQMMAQsgACACIAUoAhBBASAFLwFQEIIBIQMgAhALIANFDQELAkAgCUUEQCADIQEMAQsgBSgCVCIBRQRAIAAoAhwhAQsCfyAFLwFSGkEBCwRAIAQEQCAEQQA2AgQgBEEYNgIACyADEAsMAgsgACADIAUvAVJBASABQQARBgAhASADEAsgAUUNAQsgACgCABAfIhhCf1cEQCAAKAIAIQIgBARAIAQgAigCDDYCACAEIAIoAhA2AgQLDAELAkAgARAyQQBOBEACfwJAAkAgASAHQUBrQoDAABARIhJCAVMNAEIAIRkgFUIAVQRAIBW5IRoDQCAAIAdBQGsgEhAbQQBIDQMCQCASQoDAAFINACAAKAJUIgJFDQAgAiAZQoBAfSIZuSAaoxB7CyABIAdBQGtCgMAAEBEiEkIAVQ0ACwwBCwNAIAAgB0FAayASEBtBAEgNAiABIAdBQGtCgMAAEBEiEkIAVQ0ACwtBACASQn9VDQEaIAQEQCAEIAEoAgw2AgAgBCABKAIQNgIECwtBfwshAiABEBoaDAELIAQEQCAEIAEoAgw2AgAgBCABKAIQNgIEC0F/IQILIAEgB0EIahAhQX9MBEAgBARAIAQgASgCDDYCACAEIAEoAhA2AgQLQX8hAgsCf0EAIQkCQCABIgNFDQADQCADLQAaQQFxBEBB/wEhCSADQQBCAEEQEA4iFUIAUw0CIBVCBFkEQCADQQxqBEAgA0EANgIQIANBFDYCDAsMAwsgFachCQwCCyADKAIAIgMNAAsLIAlBGHRBGHUiA0F/TAsEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsgARALDAELIAEQCyACQQBIDQAgACgCABAfIRUgACgCACECIBVCf1cEQCAEBEAgBCACKAIMNgIAIAQgAigCEDYCBAsMAQsgAiATEHVBf0wEQCAAKAIAIQIgBARAIAQgAigCDDYCACAEIAIoAhA2AgQLDAELIAcpAwgiE0LkAINC5ABSBEAgBARAIARBADYCBCAEQRQ2AgALDAELAkAgBS0AAEEgcQ0AIBNCEINQRQRAIAUgBygCMDYCFAwBCyAFQRRqEAEaCyAFIAcvATg2AhAgBSAHKAI0NgIYIAcpAyAhEyAFIBUgGH03AyAgBSATNwMoIAUgBS8BDEH5/wNxIANB/wFxQQF0cjsBDCAPQQp2IQNBPyEBAkACQAJAAkAgBSgCECICQQxrDgMAAQIBCyAFQS47AQoMAgtBLSEBIAMNACAFKQMoQv7///8PVg0AIAUpAyBC/v///w9WDQBBFCEBIAJBCEYNACAFLwFSQQFGDQAgBSgCMCICBH8gAi8BBAVBAAtB//8DcSICBEAgAiAFKAIwKAIAakEBay0AAEEvRg0BC0EKIQELIAUgATsBCgsgACAFIA8QNyICQQBIDQAgAiAKRwRAIAQEQCAEQQA2AgQgBEEUNgIACwwBCyAAKAIAIBUQdUF/Sg0BIAAoAgAhAiAEBEAgBCACKAIMNgIAIAQgAigCEDYCBAsLIA0NByAMEAsMBwsgDQ0CIAwQCwwCCyAFIAUvAQxB9/8DcTsBDCAAIAVBgAIQN0EASA0FIAAgEyAEEEEiE1ANBSAAKAIAIBNBABAUQX9MBEAgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwGCyAFKQMgIRIjAEGAQGoiAyQAAkAgElBFBEAgAEEIaiECIBK6IRoDQEF/IQEgACgCACADIBJCgMAAIBJCgMAAVBsiEyACEGVBAEgNAiAAIAMgExAbQQBIDQIgACgCVCAaIBIgE30iErqhIBqjEHsgEkIAUg0ACwtBACEBCyADQYBAayQAIAFBf0oNAUEBIREgAUEcdkEIcUEIRgwCCyAEBEAgBEEANgIEIARBDjYCAAsMBAtBAAtFDQELCyARDQBBfyECAkAgACgCABAfQgBTDQAgFyEUQQAhCkIAIRcjAEHwAGsiESQAAkAgACgCABAfIhVCAFkEQCAUUEUEQANAIAAgACgCQCALIBenQQN0aigCAEEEdGoiAygCBCIBBH8gAQUgAygCAAtBgAQQNyIBQQBIBEBCfyEXDAQLIAFBAEcgCnIhCiAXQgF8IhcgFFINAAsLQn8hFyAAKAIAEB8iGEJ/VwRAIAAoAgAhASAAQQhqBEAgACABKAIMNgIIIAAgASgCEDYCDAsMAgsgEULiABAXIgZFBEAgAEEIagRAIABBADYCDCAAQQ42AggLDAILIBggFX0hEyAVQv////8PViAUQv//A1ZyIApyQQFxBEAgBkGZEkEEECwgBkIsEBggBkEtEA0gBkEtEA0gBkEAEBIgBkEAEBIgBiAUEBggBiAUEBggBiATEBggBiAVEBggBkGUEkEEECwgBkEAEBIgBiAYEBggBkEBEBILIAZBnhJBBBAsIAZBABASIAYgFEL//wMgFEL//wNUG6dB//8DcSIBEA0gBiABEA0gBkF/IBOnIBNC/v///w9WGxASIAZBfyAVpyAVQv7///8PVhsQEiAGIABBJEEgIAAtACgbaigCACIDBH8gAy8BBAVBAAtB//8DcRANIAYtAABFBEAgAEEIagRAIABBADYCDCAAQRQ2AggLIAYQCAwCCyAAIAYoAgQgBi0AAAR+IAYpAxAFQgALEBshASAGEAggAUEASA0BIAMEQCAAIAMoAgAgAzMBBBAbQQBIDQILIBMhFwwBCyAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLQn8hFwsgEUHwAGokACAXQgBTDQAgACgCABAfQj+HpyECCyALEAYgAkEASA0BAn8gACgCACIBKAIkQQFHBEAgAUEMagRAIAFBADYCECABQRI2AgwLQX8MAQsgASgCICICQQJPBEAgAUEMagRAIAFBADYCECABQR02AgwLQX8MAQsCQCACQQFHDQAgARAaQQBODQBBfwwBCyABQQBCAEEJEA5Cf1cEQCABQQI2AiRBfwwBCyABQQA2AiRBAAtFDQIgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwBCyALEAYLIAAoAlQQfCAAKAIAEENBfyECDAILIAAoAlQQfAsgABBLQQAhAgsgB0HAwABqJAAgAgtFAEHwgwFCADcDAEHogwFCADcDAEHggwFCADcDAEHYgwFCADcDAEHQgwFCADcDAEHIgwFCADcDAEHAgwFCADcDAEHAgwELoQMBCH8jAEGgAWsiAiQAIAAQMQJAAn8CQCAAKAIAIgFBAE4EQCABQbATKAIASA0BCyACIAE2AhAgAkEgakH2ESACQRBqEHZBASEGIAJBIGohBCACQSBqECIhA0EADAELIAFBAnQiAUGwEmooAgAhBQJ/AkACQCABQcATaigCAEEBaw4CAAEECyAAKAIEIQNB9IIBKAIAIQdBACEBAkACQANAIAMgAUHQ8QBqLQAARwRAQdcAIQQgAUEBaiIBQdcARw0BDAILCyABIgQNAEGw8gAhAwwBC0Gw8gAhAQNAIAEtAAAhCCABQQFqIgMhASAIDQAgAyEBIARBAWsiBA0ACwsgBygCFBogAwwBC0EAIAAoAgRrQQJ0QdjAAGooAgALIgRFDQEgBBAiIQMgBUUEQEEAIQVBASEGQQAMAQsgBRAiQQJqCyEBIAEgA2pBAWoQCSIBRQRAQegSKAIAIQUMAQsgAiAENgIIIAJBrBJBkRIgBhs2AgQgAkGsEiAFIAYbNgIAIAFBqwogAhB2IAAgATYCCCABIQULIAJBoAFqJAAgBQszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQBxogACAAKAIUIAFqNgIUIAILBgBBsIgBCwYAQayIAQsGAEGkiAELBwAgAEEEagsHACAAQQhqCyYBAX8gACgCFCIBBEAgARALCyAAKAIEIQEgAEEEahAxIAAQBiABC6kBAQN/AkAgAC0AACICRQ0AA0AgAS0AACIERQRAIAIhAwwCCwJAIAIgBEYNACACQSByIAIgAkHBAGtBGkkbIAEtAAAiAkEgciACIAJBwQBrQRpJG0YNACAALQAAIQMMAgsgAUEBaiEBIAAtAAEhAiAAQQFqIQAgAg0ACwsgA0H/AXEiAEEgciAAIABBwQBrQRpJGyABLQAAIgBBIHIgACAAQcEAa0EaSRtrC8sGAgJ+An8jAEHgAGsiByQAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDg8AAQoCAwQGBwgICAgICAUICyABQgA3AyAMCQsgACACIAMQESIFQn9XBEAgAUEIaiIBBEAgASAAKAIMNgIAIAEgACgCEDYCBAsMCAsCQCAFUARAIAEpAygiAyABKQMgUg0BIAEgAzcDGCABQQE2AgQgASgCAEUNASAAIAdBKGoQIUF/TARAIAFBCGoiAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAoLAkAgBykDKCIDQiCDUA0AIAcoAlQgASgCMEYNACABQQhqBEAgAUEANgIMIAFBBzYCCAsMCgsgA0IEg1ANASAHKQNAIAEpAxhRDQEgAUEIagRAIAFBADYCDCABQRU2AggLDAkLIAEoAgQNACABKQMoIgMgASkDICIGVA0AIAUgAyAGfSIDWA0AIAEoAjAhBANAIAECfyAFIAN9IgZC/////w8gBkL/////D1QbIganIQBBACACIAOnaiIIRQ0AGiAEIAggAEHUgAEoAgARAAALIgQ2AjAgASABKQMoIAZ8NwMoIAUgAyAGfCIDVg0ACwsgASABKQMgIAV8NwMgDAgLIAEoAgRFDQcgAiABKQMYIgM3AxggASgCMCEAIAJBADYCMCACIAM3AyAgAiAANgIsIAIgAikDAELsAYQ3AwAMBwsgA0IIWgR+IAIgASgCCDYCACACIAEoAgw2AgRCCAVCfwshBQwGCyABEAYMBQtCfyEFIAApAxgiA0J/VwRAIAFBCGoiAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAULIAdBfzYCGCAHQo+AgICAAjcDECAHQoyAgIDQATcDCCAHQomAgICgATcDACADQQggBxAkQn+FgyEFDAQLIANCD1gEQCABQQhqBEAgAUEANgIMIAFBEjYCCAsMAwsgAkUNAgJAIAAgAikDACACKAIIEBRBAE4EQCAAEDMiA0J/VQ0BCyABQQhqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwDCyABIAM3AyAMAwsgASkDICEFDAILIAFBCGoEQCABQQA2AgwgAUEcNgIICwtCfyEFCyAHQeAAaiQAIAULjAcCAn4CfyMAQRBrIgckAAJAAkACQAJAAkACQAJAAkACQAJAIAQOEQABAgMFBggICAgICAgIBwgECAsgAUJ/NwMgIAFBADoADyABQQA7AQwgAUIANwMYIAEoAqxAIAEoAqhAKAIMEQEArUIBfSEFDAgLQn8hBSABKAIADQdCACEFIANQDQcgAS0ADQ0HIAFBKGohBAJAA0ACQCAHIAMgBX03AwggASgCrEAgAiAFp2ogB0EIaiABKAKoQCgCHBEAACEIQgAgBykDCCAIQQJGGyAFfCEFAkACQAJAIAhBAWsOAwADAQILIAFBAToADSABKQMgIgNCf1cEQCABBEAgAUEANgIEIAFBFDYCAAsMBQsgAS0ADkUNBCADIAVWDQQgASADNwMYIAFBAToADyACIAQgA6cQBxogASkDGCEFDAwLIAEtAAwNAyAAIARCgMAAEBEiBkJ/VwRAIAEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwECyAGUARAIAFBAToADCABKAKsQCABKAKoQCgCGBEDACABKQMgQn9VDQEgAUIANwMgDAELAkAgASkDIEIAWQRAIAFBADoADgwBCyABIAY3AyALIAEoAqxAIAQgBiABKAKoQCgCFBEPABoLIAMgBVYNAQwCCwsgASgCAA0AIAEEQCABQQA2AgQgAUEUNgIACwsgBVBFBEAgAUEAOgAOIAEgASkDGCAFfDcDGAwIC0J/QgAgASgCABshBQwHCyABKAKsQCABKAKoQCgCEBEBAK1CAX0hBQwGCyABLQAQBEAgAS0ADQRAIAIgAS0ADwR/QQAFQQggASgCFCIAIABBfUsbCzsBMCACIAEpAxg3AyAgAiACKQMAQsgAhDcDAAwHCyACIAIpAwBCt////w+DNwMADAYLIAJBADsBMCACKQMAIQMgAS0ADQRAIAEpAxghBSACIANCxACENwMAIAIgBTcDGEIAIQUMBgsgAiADQrv///8Pg0LAAIQ3AwAMBQsgAS0ADw0EIAEoAqxAIAEoAqhAKAIIEQEArCEFDAQLIANCCFoEfiACIAEoAgA2AgAgAiABKAIENgIEQggFQn8LIQUMAwsgAUUNAiABKAKsQCABKAKoQCgCBBEDACABEDEgARAGDAILIAdBfzYCAEEQIAcQJEI/hCEFDAELIAEEQCABQQA2AgQgAUEUNgIAC0J/IQULIAdBEGokACAFC2MAQcgAEAkiAEUEQEGEhAEoAgAhASACBEAgAiABNgIEIAJBATYCAAsgAA8LIABBADoADCAAQQA6AAQgACACNgIAIABBADYCOCAAQgA3AzAgACABQQkgAUEBa0EJSRs2AgggAAu3fAIefwZ+IAIpAwAhIiAAIAE2AhwgACAiQv////8PICJC/////w9UGz4CICAAQRBqIQECfyAALQAEBEACfyAALQAMQQJ0IQpBfiEEAkACQAJAIAEiBUUNACAFKAIgRQ0AIAUoAiRFDQAgBSgCHCIDRQ0AIAMoAgAgBUcNAAJAAkAgAygCICIGQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyAGQZoFRg0AIAZBKkcNAQsgCkEFSw0AAkACQCAFKAIMRQ0AIAUoAgQiAQRAIAUoAgBFDQELIAZBmgVHDQEgCkEERg0BCyAFQeDAACgCADYCGEF+DAQLIAUoAhBFDQEgAygCJCEEIAMgCjYCJAJAIAMoAhAEQCADEDACQCAFKAIQIgYgAygCECIIIAYgCEkbIgFFDQAgBSgCDCADKAIIIAEQBxogBSAFKAIMIAFqNgIMIAMgAygCCCABajYCCCAFIAUoAhQgAWo2AhQgBSAFKAIQIAFrIgY2AhAgAyADKAIQIAFrIgg2AhAgCA0AIAMgAygCBDYCCEEAIQgLIAYEQCADKAIgIQYMAgsMBAsgAQ0AIApBAXRBd0EAIApBBEsbaiAEQQF0QXdBACAEQQRKG2pKDQAgCkEERg0ADAILAkACQAJAAkACQCAGQSpHBEAgBkGaBUcNASAFKAIERQ0DDAcLIAMoAhRFBEAgA0HxADYCIAwCCyADKAI0QQx0QYDwAWshBAJAIAMoAowBQQJODQAgAygCiAEiAUEBTA0AIAFBBUwEQCAEQcAAciEEDAELQYABQcABIAFBBkYbIARyIQQLIAMoAgQgCGogBEEgciAEIAMoAmgbIgFBH3AgAXJBH3NBCHQgAUGA/gNxQQh2cjsAACADIAMoAhBBAmoiATYCECADKAJoBEAgAygCBCABaiAFKAIwIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYAACADIAMoAhBBBGo2AhALIAVBATYCMCADQfEANgIgIAUQCiADKAIQDQcgAygCICEGCwJAAkACQAJAIAZBOUYEfyADQaABakHkgAEoAgARAQAaIAMgAygCECIBQQFqNgIQIAEgAygCBGpBHzoAACADIAMoAhAiAUEBajYCECABIAMoAgRqQYsBOgAAIAMgAygCECIBQQFqNgIQIAEgAygCBGpBCDoAAAJAIAMoAhwiAUUEQCADKAIEIAMoAhBqQQA2AAAgAyADKAIQIgFBBWo2AhAgASADKAIEakEAOgAEQQIhBCADKAKIASIBQQlHBEBBBCABQQJIQQJ0IAMoAowBQQFKGyEECyADIAMoAhAiAUEBajYCECABIAMoAgRqIAQ6AAAgAyADKAIQIgFBAWo2AhAgASADKAIEakEDOgAAIANB8QA2AiAgBRAKIAMoAhBFDQEMDQsgASgCJCELIAEoAhwhCSABKAIQIQggASgCLCENIAEoAgAhBiADIAMoAhAiAUEBajYCEEECIQQgASADKAIEaiANQQBHQQF0IAZBAEdyIAhBAEdBAnRyIAlBAEdBA3RyIAtBAEdBBHRyOgAAIAMoAgQgAygCEGogAygCHCgCBDYAACADIAMoAhAiDUEEaiIGNgIQIAMoAogBIgFBCUcEQEEEIAFBAkhBAnQgAygCjAFBAUobIQQLIAMgDUEFajYCECADKAIEIAZqIAQ6AAAgAygCHCgCDCEEIAMgAygCECIBQQFqNgIQIAEgAygCBGogBDoAACADKAIcIgEoAhAEfyADKAIEIAMoAhBqIAEoAhQ7AAAgAyADKAIQQQJqNgIQIAMoAhwFIAELKAIsBEAgBQJ/IAUoAjAhBiADKAIQIQRBACADKAIEIgFFDQAaIAYgASAEQdSAASgCABEAAAs2AjALIANBxQA2AiAgA0EANgIYDAILIAMoAiAFIAYLQcUAaw4jAAQEBAEEBAQEBAQEBAQEBAQEBAQEBAIEBAQEBAQEBAQEBAMECyADKAIcIgEoAhAiBgRAIAMoAgwiCCADKAIQIgQgAS8BFCADKAIYIg1rIglqSQRAA0AgAygCBCAEaiAGIA1qIAggBGsiCBAHGiADIAMoAgwiDTYCEAJAIAMoAhwoAixFDQAgBCANTw0AIAUCfyAFKAIwIQZBACADKAIEIARqIgFFDQAaIAYgASANIARrQdSAASgCABEAAAs2AjALIAMgAygCGCAIajYCGCAFKAIcIgYQMAJAIAUoAhAiBCAGKAIQIgEgASAESxsiAUUNACAFKAIMIAYoAgggARAHGiAFIAUoAgwgAWo2AgwgBiAGKAIIIAFqNgIIIAUgBSgCFCABajYCFCAFIAUoAhAgAWs2AhAgBiAGKAIQIAFrIgE2AhAgAQ0AIAYgBigCBDYCCAsgAygCEA0MIAMoAhghDSADKAIcKAIQIQZBACEEIAkgCGsiCSADKAIMIghLDQALCyADKAIEIARqIAYgDWogCRAHGiADIAMoAhAgCWoiDTYCEAJAIAMoAhwoAixFDQAgBCANTw0AIAUCfyAFKAIwIQZBACADKAIEIARqIgFFDQAaIAYgASANIARrQdSAASgCABEAAAs2AjALIANBADYCGAsgA0HJADYCIAsgAygCHCgCHARAIAMoAhAiBCEJA0ACQCAEIAMoAgxHDQACQCADKAIcKAIsRQ0AIAQgCU0NACAFAn8gBSgCMCEGQQAgAygCBCAJaiIBRQ0AGiAGIAEgBCAJa0HUgAEoAgARAAALNgIwCyAFKAIcIgYQMAJAIAUoAhAiBCAGKAIQIgEgASAESxsiAUUNACAFKAIMIAYoAgggARAHGiAFIAUoAgwgAWo2AgwgBiAGKAIIIAFqNgIIIAUgBSgCFCABajYCFCAFIAUoAhAgAWs2AhAgBiAGKAIQIAFrIgE2AhAgAQ0AIAYgBigCBDYCCAtBACEEQQAhCSADKAIQRQ0ADAsLIAMoAhwoAhwhBiADIAMoAhgiAUEBajYCGCABIAZqLQAAIQEgAyAEQQFqNgIQIAMoAgQgBGogAToAACABBEAgAygCECEEDAELCwJAIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0EANgIYCyADQdsANgIgCwJAIAMoAhwoAiRFDQAgAygCECIEIQkDQAJAIAQgAygCDEcNAAJAIAMoAhwoAixFDQAgBCAJTQ0AIAUCfyAFKAIwIQZBACADKAIEIAlqIgFFDQAaIAYgASAEIAlrQdSAASgCABEAAAs2AjALIAUoAhwiBhAwAkAgBSgCECIEIAYoAhAiASABIARLGyIBRQ0AIAUoAgwgBigCCCABEAcaIAUgBSgCDCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAQUUAKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAA/BQAAwAcAAJMIAAB4CAAAbwUAAJEFAAB6BQAAsgUAAFYIAAAbBwAA1gQAAAsHAADqBgAAnAUAAMgGAACyCAAAHggAACgHAABHBAAAoAYAAGAFAAAuBAAAPgcAAD8IAAD+BwAAjgYAAMkIAADeCAAA5gcAALIGAABVBQAAqAcAACAAQcgTCxEBAAAAAQAAAAEAAAABAAAAAQBB7BMLCQEAAAABAAAAAgBBmBQLAQEAQbgUCwEBAEHSFAukLDomOyZlJmYmYyZgJiIg2CXLJdklQiZAJmomayY8JrolxCWVITwgtgCnAKwlqCGRIZMhkiGQIR8ilCGyJbwlIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AAIjxwD8AOkA4gDkAOAA5QDnAOoA6wDoAO8A7gDsAMQAxQDJAOYAxgD0APYA8gD7APkA/wDWANwAogCjAKUApyCSAeEA7QDzAPoA8QDRAKoAugC/ABAjrAC9ALwAoQCrALsAkSWSJZMlAiUkJWElYiVWJVUlYyVRJVclXSVcJVslECUUJTQlLCUcJQAlPCVeJV8lWiVUJWklZiVgJVAlbCVnJWglZCVlJVklWCVSJVMlayVqJRglDCWIJYQljCWQJYAlsQPfAJMDwAOjA8MDtQDEA6YDmAOpA7QDHiLGA7UDKSJhIrEAZSJkIiAjISP3AEgisAAZIrcAGiJ/ILIAoCWgAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYFAQAAJ0HAAAsCQAAhgUAAEgFAACnBQAAAAQAADIFAAC8BQAALAkAQYDBAAv3CQwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";Bo(Hi)||(Hi=P(Hi));function to(Je){try{if(Je==Hi&&ce)return new Uint8Array(ce);var st=Me(Je);if(st)return st;if(R)return R(Je);throw\"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\"}catch(St){rs(St)}}function vo(Je,st){var St,lr,ee;try{ee=to(Je),lr=new WebAssembly.Module(ee),St=new WebAssembly.Instance(lr,st)}catch(Oe){var Ie=Oe.toString();throw te(\"failed to compile wasm module: \"+Ie),(Ie.includes(\"imported Memory\")||Ie.includes(\"memory import\"))&&te(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\"),Oe}return[St,lr]}function RA(){var Je={a:fu};function st(ee,Ie){var Oe=ee.exports;r.asm=Oe,Be=r.asm.g,z(Be.buffer),$=r.asm.W,gn(r.asm.h),wo(\"wasm-instantiate\")}if(oi(\"wasm-instantiate\"),r.instantiateWasm)try{var St=r.instantiateWasm(Je,st);return St}catch(ee){return te(\"Module.instantiateWasm callback failed with error: \"+ee),!1}var lr=vo(Hi,Je);return st(lr[0]),r.asm}function pf(Je){return F.getFloat32(Je,!0)}function Eh(Je){return F.getFloat64(Je,!0)}function Ih(Je){return F.getInt16(Je,!0)}function ro(Je){return F.getInt32(Je,!0)}function jn(Je,st){F.setInt32(Je,st,!0)}function Rs(Je){for(;Je.length>0;){var st=Je.shift();if(typeof st==\"function\"){st(r);continue}var St=st.func;typeof St==\"number\"?st.arg===void 0?$.get(St)():$.get(St)(st.arg):St(st.arg===void 0?null:st.arg)}}function no(Je,st){var St=new Date(ro((Je>>2)*4)*1e3);jn((st>>2)*4,St.getUTCSeconds()),jn((st+4>>2)*4,St.getUTCMinutes()),jn((st+8>>2)*4,St.getUTCHours()),jn((st+12>>2)*4,St.getUTCDate()),jn((st+16>>2)*4,St.getUTCMonth()),jn((st+20>>2)*4,St.getUTCFullYear()-1900),jn((st+24>>2)*4,St.getUTCDay()),jn((st+36>>2)*4,0),jn((st+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((st+28>>2)*4,ee),no.GMTString||(no.GMTString=rt(\"GMT\")),jn((st+40>>2)*4,no.GMTString),st}function lu(Je,st){return no(Je,st)}function cu(Je,st,St){ke.copyWithin(Je,st,st+St)}function uu(Je){try{return Be.grow(Je-Pe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function FA(Je){var st=ke.length;Je=Je>>>0;var St=2147483648;if(Je>St)return!1;for(var lr=1;lr<=4;lr*=2){var ee=st*(1+.2/lr);ee=Math.min(ee,Je+100663296);var Ie=Math.min(St,Ne(Math.max(Je,ee),65536)),Oe=uu(Ie);if(Oe)return!0}return!1}function NA(Je){Ae(Je)}function aa(Je){var st=Date.now()/1e3|0;return Je&&jn((Je>>2)*4,st),st}function la(){if(la.called)return;la.called=!0;var Je=new Date().getFullYear(),st=new Date(Je,0,1),St=new Date(Je,6,1),lr=st.getTimezoneOffset(),ee=St.getTimezoneOffset(),Ie=Math.max(lr,ee);jn((Sl()>>2)*4,Ie*60),jn((Cs()>>2)*4,+(lr!=ee));function Oe(fn){var ai=fn.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return ai?ai[1]:\"GMT\"}var ht=Oe(st),mt=Oe(St),Dt=rt(ht),tr=rt(mt);ee<lr?(jn((Li()>>2)*4,Dt),jn((Li()+4>>2)*4,tr)):(jn((Li()>>2)*4,tr),jn((Li()+4>>2)*4,Dt))}function OA(Je){la();var st=Date.UTC(ro((Je+20>>2)*4)+1900,ro((Je+16>>2)*4),ro((Je+12>>2)*4),ro((Je+8>>2)*4),ro((Je+4>>2)*4),ro((Je>>2)*4),0),St=new Date(st);jn((Je+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((Je+28>>2)*4,ee),St.getTime()/1e3|0}var gr=typeof atob==\"function\"?atob:function(Je){var st=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",St=\"\",lr,ee,Ie,Oe,ht,mt,Dt,tr=0;Je=Je.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Oe=st.indexOf(Je.charAt(tr++)),ht=st.indexOf(Je.charAt(tr++)),mt=st.indexOf(Je.charAt(tr++)),Dt=st.indexOf(Je.charAt(tr++)),lr=Oe<<2|ht>>4,ee=(ht&15)<<4|mt>>2,Ie=(mt&3)<<6|Dt,St=St+String.fromCharCode(lr),mt!==64&&(St=St+String.fromCharCode(ee)),Dt!==64&&(St=St+String.fromCharCode(Ie));while(tr<Je.length);return St};function So(Je){if(typeof C==\"boolean\"&&C){var st;try{st=Buffer.from(Je,\"base64\")}catch{st=new Buffer(Je,\"base64\")}return new Uint8Array(st.buffer,st.byteOffset,st.byteLength)}try{for(var St=gr(Je),lr=new Uint8Array(St.length),ee=0;ee<St.length;++ee)lr[ee]=St.charCodeAt(ee);return lr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function Me(Je){if(Bo(Je))return So(Je.slice(eo.length))}var fu={e:lu,c:cu,d:FA,a:NA,b:aa,f:OA},Cr=RA(),hf=r.___wasm_call_ctors=Cr.h,LA=r._zip_ext_count_symlinks=Cr.i,MA=r._zip_file_get_external_attributes=Cr.j,Au=r._zipstruct_statS=Cr.k,pu=r._zipstruct_stat_size=Cr.l,ac=r._zipstruct_stat_mtime=Cr.m,ve=r._zipstruct_stat_crc=Cr.n,Nt=r._zipstruct_errorS=Cr.o,lc=r._zipstruct_error_code_zip=Cr.p,Ni=r._zipstruct_stat_comp_size=Cr.q,io=r._zipstruct_stat_comp_method=Cr.r,Rt=r._zip_close=Cr.s,xn=r._zip_delete=Cr.t,ca=r._zip_dir_add=Cr.u,ji=r._zip_discard=Cr.v,Oi=r._zip_error_init_with_code=Cr.w,Oa=r._zip_get_error=Cr.x,dn=r._zip_file_get_error=Cr.y,Jn=r._zip_error_strerror=Cr.z,hu=r._zip_fclose=Cr.A,Ch=r._zip_file_add=Cr.B,La=r._free=Cr.C,Ma=r._malloc=Cr.D,Ua=r._zip_source_error=Cr.E,Xe=r._zip_source_seek=Cr.F,Ha=r._zip_file_set_external_attributes=Cr.G,gf=r._zip_file_set_mtime=Cr.H,cc=r._zip_fopen_index=Cr.I,wn=r._zip_fread=Cr.J,ua=r._zip_get_name=Cr.K,_A=r._zip_get_num_entries=Cr.L,UA=r._zip_source_read=Cr.M,fa=r._zip_name_locate=Cr.N,vl=r._zip_open_from_source=Cr.O,Mt=r._zip_set_file_compression=Cr.P,kn=r._zip_source_buffer=Cr.Q,Aa=r._zip_source_buffer_create=Cr.R,ja=r._zip_source_close=Cr.S,ns=r._zip_source_free=Cr.T,uc=r._zip_source_keep=Cr.U,gu=r._zip_source_open=Cr.V,fc=r._zip_source_tell=Cr.X,qa=r._zip_stat_index=Cr.Y,Li=r.__get_tzname=Cr.Z,Cs=r.__get_daylight=Cr._,Sl=r.__get_timezone=Cr.$,df=r.stackSave=Cr.aa,Ac=r.stackRestore=Cr.ba,wi=r.stackAlloc=Cr.ca;r.cwrap=se,r.getValue=pe;var Qn;nn=function Je(){Qn||pc(),Qn||(nn=Je)};function pc(Je){if(Je=Je||f,Ir>0||(Et(),Ir>0))return;function st(){Qn||(Qn=!0,r.calledRun=!0,!Ce&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),st()},1)):st()}if(r.run=pc,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return pc(),e}}();typeof wT==\"object\"&&typeof Jj==\"object\"?Jj.exports=Kj:typeof define==\"function\"&&define.amd?define([],function(){return Kj}):typeof wT==\"object\"&&(wT.createModule=Kj)});var jp,Hde,jde,qde=It(()=>{jp=[\"number\",\"number\"],Hde=(X=>(X[X.ZIP_ER_OK=0]=\"ZIP_ER_OK\",X[X.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",X[X.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",X[X.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",X[X.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",X[X.ZIP_ER_READ=5]=\"ZIP_ER_READ\",X[X.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",X[X.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",X[X.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",X[X.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",X[X.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",X[X.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",X[X.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",X[X.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",X[X.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",X[X.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",X[X.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",X[X.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",X[X.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",X[X.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",X[X.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",X[X.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",X[X.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",X[X.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",X[X.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",X[X.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",X[X.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",X[X.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",X[X.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",X[X.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",X[X.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",X[X.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",X))(Hde||{}),jde=t=>({get HEAPU8(){return t.HEAPU8},errors:Hde,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap(\"zip_open_from_source\",\"number\",[\"number\",\"number\",\"number\"]),close:t.cwrap(\"zip_close\",\"number\",[\"number\"]),discard:t.cwrap(\"zip_discard\",null,[\"number\"]),getError:t.cwrap(\"zip_get_error\",\"number\",[\"number\"]),getName:t.cwrap(\"zip_get_name\",\"string\",[\"number\",\"number\",\"number\"]),getNumEntries:t.cwrap(\"zip_get_num_entries\",\"number\",[\"number\",\"number\"]),delete:t.cwrap(\"zip_delete\",\"number\",[\"number\",\"number\"]),statIndex:t.cwrap(\"zip_stat_index\",\"number\",[\"number\",...jp,\"number\",\"number\"]),fopenIndex:t.cwrap(\"zip_fopen_index\",\"number\",[\"number\",...jp,\"number\"]),fread:t.cwrap(\"zip_fread\",\"number\",[\"number\",\"number\",\"number\",\"number\"]),fclose:t.cwrap(\"zip_fclose\",\"number\",[\"number\"]),dir:{add:t.cwrap(\"zip_dir_add\",\"number\",[\"number\",\"string\"])},file:{add:t.cwrap(\"zip_file_add\",\"number\",[\"number\",\"string\",\"number\",\"number\"]),getError:t.cwrap(\"zip_file_get_error\",\"number\",[\"number\"]),getExternalAttributes:t.cwrap(\"zip_file_get_external_attributes\",\"number\",[\"number\",...jp,\"number\",\"number\",\"number\"]),setExternalAttributes:t.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",...jp,\"number\",\"number\",\"number\"]),setMtime:t.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",...jp,\"number\",\"number\"]),setCompression:t.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",...jp,\"number\",\"number\"])},ext:{countSymlinks:t.cwrap(\"zip_ext_count_symlinks\",\"number\",[\"number\"])},error:{initWithCode:t.cwrap(\"zip_error_init_with_code\",null,[\"number\",\"number\"]),strerror:t.cwrap(\"zip_error_strerror\",\"string\",[\"number\"])},name:{locate:t.cwrap(\"zip_name_locate\",\"number\",[\"number\",\"string\",\"number\"])},source:{fromUnattachedBuffer:t.cwrap(\"zip_source_buffer_create\",\"number\",[\"number\",...jp,\"number\",\"number\"]),fromBuffer:t.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",...jp,\"number\"]),free:t.cwrap(\"zip_source_free\",null,[\"number\"]),keep:t.cwrap(\"zip_source_keep\",null,[\"number\"]),open:t.cwrap(\"zip_source_open\",\"number\",[\"number\"]),close:t.cwrap(\"zip_source_close\",\"number\",[\"number\"]),seek:t.cwrap(\"zip_source_seek\",\"number\",[\"number\",...jp,\"number\"]),tell:t.cwrap(\"zip_source_tell\",\"number\",[\"number\"]),read:t.cwrap(\"zip_source_read\",\"number\",[\"number\",\"number\",\"number\"]),error:t.cwrap(\"zip_source_error\",\"number\",[\"number\"])},struct:{statS:t.cwrap(\"zipstruct_statS\",\"number\",[]),statSize:t.cwrap(\"zipstruct_stat_size\",\"number\",[\"number\"]),statCompSize:t.cwrap(\"zipstruct_stat_comp_size\",\"number\",[\"number\"]),statCompMethod:t.cwrap(\"zipstruct_stat_comp_method\",\"number\",[\"number\"]),statMtime:t.cwrap(\"zipstruct_stat_mtime\",\"number\",[\"number\"]),statCrc:t.cwrap(\"zipstruct_stat_crc\",\"number\",[\"number\"]),errorS:t.cwrap(\"zipstruct_errorS\",\"number\",[]),errorCodeZip:t.cwrap(\"zipstruct_error_code_zip\",\"number\",[\"number\"])}})});function zj(t,e){let r=t.indexOf(e);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+e.length,t[s]!==K.sep);){if(t[r-1]===K.sep)return null;r=t.indexOf(e,s)}return t.length>s&&t[s]!==K.sep?null:t.slice(0,s)}var tA,Gde=It(()=>{bt();bt();rA();tA=class t extends n0{static async openPromise(e,r){let s=new t(r);try{return await e(s)}finally{s.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,s=e.readOnlyArchives,a=typeof r>\"u\"?f=>zj(f,\".zip\"):f=>{for(let p of r){let h=zj(f,p);if(h)return h}return null},n=(f,p)=>new ps(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:e.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:e.customZipImplementation};return()=>new ps(p,h)};super({...e,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var Zj,vI,Xj=It(()=>{Vj();Zj=class extends Error{constructor(e,r){super(e),this.name=\"Libzip Error\",this.code=r}},vI=class{constructor(e){this.filesShouldBeCached=!0;let r=\"buffer\"in e?e.buffer:e.baseFs.readFileSync(e.path);this.libzip=Bv();let s=this.libzip.malloc(4);try{let c=0;e.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,\"i32\")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c<a;++c)n[c]=this.libzip.getName(this.zip,c,0);if(this.listings=n,this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getSymlinkCount(){return this.symlinkCount}getListings(){return this.listings}stat(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statSize(r)>>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(e){let r=this.libzip.struct.errorCodeZip(e),s=this.libzip.error.strerror(e),a=new Zj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(e,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,e,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(e,r){if(this.libzip.file.setMtime(this.zip,e,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(e){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0,a=this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>0;return[s,a]}setExternalAttributes(e,r,s){if(this.libzip.file.setExternalAttributes(this.zip,e,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(e){return this.libzip.name.locate(this.zip,e,0)}getFileSource(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(p<a)throw new Error(\"Incomplete read\");if(p>a)throw new Error(\"Overread\");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(e){if(this.libzip.delete(this.zip,e)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(e){let r=this.libzip.dir.add(this.zip,e);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let e=this.libzip.source.tell(this.lzSource);if(e===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(e);if(!r)throw new Error(\"Couldn't allocate enough memory\");try{let s=this.libzip.source.read(this.lzSource,r,e);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(s<e)throw new Error(\"Incomplete read\");if(s>e)throw new Error(\"Overread\");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+e));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(e){let{buffer:r,byteLength:s}=this.allocateBuffer(e),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function vmt(t){if(typeof t==\"string\"&&String(+t)===t)return+t;if(typeof t==\"number\"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(Wde.types.isDate(t))return t.getTime()/1e3;throw new Error(\"Invalid time\")}function BT(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var ka,$j,Wde,e6,lm,t6,r6,Yde,ps,vT=It(()=>{bt();bt();bt();bt();bt();bt();ka=ye(\"fs\"),$j=ye(\"stream\"),Wde=ye(\"util\"),e6=et(ye(\"zlib\"));Xj();lm=3,t6=0,r6=8,Yde=\"mixed\";ps=class extends Uf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<\"u\"?a.level:Yde;let n=s.customZipImplementation??vI;if(typeof r==\"string\"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code===\"ENOENT\"&&a.create)this.stats=el.makeDefaultStats();else throw f}else this.stats=el.makeDefaultStats();typeof r==\"string\"?s.create?this.zipImpl=new n({buffer:BT(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??BT(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f<c.length;f++){let p=c[f];if(K.isAbsolute(p))continue;let h=K.resolve(vt.root,p);this.registerEntry(h,f),p.endsWith(\"/\")&&this.registerListing(h)}this.symlinkCount=this.zipImpl.getSymlinkCount(),this.ready=!0}getExtractHint(r){for(let s of this.entries.keys()){let a=this.pathUtils.extname(s);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error(\"ZipFS don't have real paths when loaded from a buffer\");return this.path}prepareClose(){if(!this.ready)throw or.EBUSY(\"archive closed, close\");Ed(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),BT();try{return this.zipImpl.getBufferAndClose()}finally{this.ready=!1}}discardAndClose(){this.prepareClose(),this.zipImpl.discard(),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error(\"ZipFS cannot be saved and must be discarded when loaded from a buffer\");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===el.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return K.resolve(vt.root,r)}async openPromise(r,s,a){return this.openSync(r,s,a)}openSync(r,s,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,s){return this.opendirSync(r,s)}opendirSync(r,s={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`opendir '${r}'`);let c=[...n],f=this.openSync(a,\"r\");return hx(this,a,c,{onClose:()=>{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>\"u\")throw or.EBADF(\"read\");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s==\"string\"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>\"u\"?or.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw or.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new $j.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),c=Object.assign(new $j.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on(\"data\",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=K.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=ka.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&ka.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>\"u\")throw or.EBADF(\"fstatSync\");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<\"u\"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,P=Math.ceil(c.size/S),I=h,R=h,N=h,U=new Date(I),W=new Date(R),te=new Date(N),ie=new Date(h),Ae=this.listings.has(s)?ka.constants.S_IFDIR:this.isSymbolicLink(n)?ka.constants.S_IFLNK:ka.constants.S_IFREG,ce=Ae===ka.constants.S_IFDIR?493:420,me=Ae|this.getUnixMode(n,ce)&511,pe=Object.assign(new el.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:P,atime:U,birthtime:W,ctime:te,mtime:ie,atimeMs:I,birthtimeMs:R,ctimeMs:N,mtimeMs:h,mode:me,crc:f});return a.bigint===!0?el.convertToBigIntStats(pe):pe}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,P=this.stats.mtimeMs,I=this.stats.mtimeMs,R=new Date(C),N=new Date(S),U=new Date(P),W=new Date(I),te=ka.constants.S_IFDIR|493,Ae=Object.assign(new el.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:R,birthtime:N,ctime:U,mtime:W,atimeMs:C,birthtimeMs:S,ctimeMs:P,mtimeMs:I,mode:te,crc:0});return a.bigint===!0?el.convertToBigIntStats(Ae):Ae}throw new Error(\"Unreachable\")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==lm?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(K.dirname(r)).add(K.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(K.dirname(r)).add(K.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(K.dirname(r))?.delete(K.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>\"u\")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=K.resolve(vt.root,s);if(c===\"/\")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,K.resolve(K.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,K.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=K.resolve(p,K.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=K.resolve(K.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=K.relative(vt.root,r),c=null;this.level!==\"mixed\"&&(c=[this.level===0?t6:r6,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==lm?!1:(a>>>16&ka.constants.S_IFMT)===ka.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===t6)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===r6){if(s.asyncDecompress)return new Promise((f,p)=>{e6.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=e6.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>\"u\")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,ka.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,lm,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error(\"Unimplemented\")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error(\"Unimplemented\")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&ka.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>\"u\")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(ka.constants.COPYFILE_EXCL|ka.constants.COPYFILE_FICLONE_FORCE)&&typeof p<\"u\")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s==\"string\"?n=s:typeof s==\"object\"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>\"u\")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error(\"Unreachable\");this.zipImpl.setMtime(a,vmt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>\"u\")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>\"u\")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(K.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,lm,(ka.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s==\"object\"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s==\"object\"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r==\"number\"&&(r=this.fdToPath(r,\"read\"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl(\"lstat\",K.join(r,f)),{name:f,path:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=K.join(f.path,f.name),h=this.listings.get(K.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl(\"lstat\",K.join(r,p,E)),{name:E,path:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(K.join(a,f));if(!(typeof p>\"u\"))for(let h of p)c.push(K.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl(\"lstat\",K.join(r,c)),{name:c,path:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),s)}watch(r,s,a){let n;switch(typeof s){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=K.resolve(vt.root,r);return sE(this,n,s,a)}unwatchFile(r,s){let a=K.resolve(vt.root,r);return yd(this,a,s)}}});function Kde(t,e,r=Buffer.alloc(0),s){let a=new ps(r),n=C=>C===e||C.startsWith(`${e}/`)?C.slice(0,e.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...t},h=new Yn(p),E=new n0({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return j2(Vde.default,new i0(E)),a}var Vde,Jde=It(()=>{bt();Vde=et(ye(\"fs\"));vT()});var zde=It(()=>{Gde();vT();Jde()});var n6,vv,ST,Zde=It(()=>{bt();vT();n6={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},vv=22,ST=class t{constructor(e){this.filesShouldBeCached=!1;if(\"buffer\"in e)throw new Error(\"Buffer based zip archives are not supported\");if(!e.readOnly)throw new Error(\"Writable zip archives are not supported\");this.baseFs=e.baseFs,this.fd=this.baseFs.openSync(e.path,\"r\");try{this.entries=t.readZipSync(this.fd,this.baseFs,e.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd=\"closed\",r}}static readZipSync(e,r,s){if(s<vv)throw new Error(\"Invalid ZIP file: EOCD not found\");let a=-1,n=Buffer.alloc(vv);if(r.readSync(e,n,0,vv,s-vv),n.readUInt32LE(0)===n6.END_OF_CENTRAL_DIRECTORY)a=0;else{let R=Math.min(65557,s);n=Buffer.alloc(R),r.readSync(e,n,0,R,Math.max(0,s-R));for(let N=n.length-4;N>=0;N--)if(n.readUInt32LE(N)===n6.END_OF_CENTRAL_DIRECTORY){a=N;break}if(a===-1)throw new Error(\"Not a zip archive\")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+vv>n.length)throw new Error(\"Zip archive inconsistent\");if(c==65535||f==4294967295||p==4294967295)throw new Error(\"Zip 64 is not supported\");if(f>s)throw new Error(\"Zip archive inconsistent\");if(c>f/46)throw new Error(\"Zip archive inconsistent\");let E=Buffer.alloc(f);if(r.readSync(e,E,0,E.length,p)!==E.length)throw new Error(\"Zip archive inconsistent\");let C=[],S=0,P=0,I=0;for(;P<c;){if(S+46>E.length)throw new Error(\"Zip archive inconsistent\");if(E.readUInt32LE(S)!==n6.CENTRAL_DIRECTORY)throw new Error(\"Zip archive inconsistent\");let N=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error(\"Encrypted zip files are not supported\");let W=E.readUInt16LE(S+10),te=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),Ae=E.readUInt16LE(S+30),ce=E.readUInt16LE(S+32),me=E.readUInt32LE(S+42),pe=E.toString(\"utf8\",S+46,S+46+ie).replaceAll(\"\\0\",\" \");if(pe.includes(\"\\0\"))throw new Error(\"Invalid ZIP file\");let Be=E.readUInt32LE(S+20),Ce=E.readUInt32LE(S+38);C.push({name:pe,os:N,mtime:ui.SAFE_TIME,crc:te,compressionMethod:W,isSymbolicLink:N===lm&&(Ce>>>16&ui.S_IFMT)===ui.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Be,externalAttributes:Ce,localHeaderOffset:me}),I+=Be,P+=1,S+=46+ie+Ae+ce}if(I>s)throw new Error(\"Zip archive inconsistent\");if(S!==E.length)throw new Error(\"Zip archive inconsistent\");return C}getExternalAttributes(e){let r=this.entries[e];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(e=>e.name)}getSymlinkCount(){let e=0;for(let r of this.entries)r.isSymbolicLink&&(e+=1);return e}stat(e){let r=this.entries[e];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(e){for(let r=0;r<this.entries.length;r++)if(this.entries[r].name===e)return r;return-1}getFileSource(e){if(this.fd===\"closed\")throw new Error(\"ZIP file is closed\");let r=this.entries[e],s=Buffer.alloc(30);this.baseFs.readSync(this.fd,s,0,s.length,r.localHeaderOffset);let a=s.readUInt16LE(26),n=s.readUInt16LE(28),c=Buffer.alloc(r.compressedSize);if(this.baseFs.readSync(this.fd,c,0,r.compressedSize,r.localHeaderOffset+30+a+n)!==r.compressedSize)throw new Error(\"Invalid ZIP file\");return{data:c,compressionMethod:r.compressionMethod}}discard(){this.fd!==\"closed\"&&(this.baseFs.closeSync(this.fd),this.fd=\"closed\")}addDirectory(e){throw new Error(\"Not implemented\")}deleteEntry(e){throw new Error(\"Not implemented\")}setMtime(e,r){throw new Error(\"Not implemented\")}getBufferAndClose(){throw new Error(\"Not implemented\")}setFileSource(e,r,s){throw new Error(\"Not implemented\")}setExternalAttributes(e,r,s){throw new Error(\"Not implemented\")}}});var Sv={};Vt(Sv,{DEFAULT_COMPRESSION_LEVEL:()=>Yde,DEFLATE:()=>r6,JsZipImpl:()=>ST,LibZipImpl:()=>vI,STORE:()=>t6,ZIP_UNIX:()=>lm,ZipFS:()=>ps,ZipOpenFS:()=>tA,getArchivePart:()=>zj,getLibzipPromise:()=>Dmt,getLibzipSync:()=>Smt,makeEmptyArchive:()=>BT,mountMemoryDrive:()=>Kde});function Smt(){return Bv()}async function Dmt(){return Bv()}var Xde,rA=It(()=>{Vj();Xde=et(Ude());qde();zde();Zde();Xj();_de(()=>{let t=(0,Xde.default)();return jde(t)})});var Dv,$de=It(()=>{bt();Wt();bv();Dv=class extends ot{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",process.cwd(),{description:\"The directory to run the command in\"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.usage={description:\"run a command using yarn's portable shell\",details:`\n      This command will run a command using Yarn's portable shell.\n\n      Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.\n\n      Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.\n\n      Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.\n\n      For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.\n    `,examples:[[\"Run a simple command\",\"$0 echo Hello\"],[\"Run a command with a glob pattern\",\"$0 echo '*.js'\"],[\"Run a command with a redirection\",\"$0 echo Hello World '>' hello.txt\"],[\"Run a command with an escaped glob pattern (The double escape is needed in Unix shells)\",`$0 echo '\"*.js\"'`],[\"Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)\",'$0 \"GREETING=Hello echo $GREETING World\"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await SI(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Kl,eme=It(()=>{Kl=class extends Error{constructor(e){super(e),this.name=\"ShellError\"}}});var PT={};Vt(PT,{fastGlobOptions:()=>nme,isBraceExpansion:()=>i6,isGlobPattern:()=>bmt,match:()=>Pmt,micromatchOptions:()=>bT});function bmt(t){if(!DT.default.scan(t,bT).isGlob)return!1;try{DT.default.parse(t,bT)}catch{return!1}return!0}function Pmt(t,{cwd:e,baseFs:r}){return(0,tme.default)(t,{...nme,cwd:ue.fromPortablePath(e),fs:Cx(rme.default,new i0(r))})}function i6(t){return DT.default.scan(t,bT).isBrace}var tme,rme,DT,bT,nme,ime=It(()=>{bt();tme=et(BQ()),rme=et(ye(\"fs\")),DT=et(Sa()),bT={strictBrackets:!0},nme={onlyDirectories:!1,onlyFiles:!1}});function s6(){}function o6(){for(let t of cm)t.kill()}function lme(t,e,r,s){return a=>{let n=a[0]instanceof nA.Transform?\"pipe\":a[0],c=a[1]instanceof nA.Transform?\"pipe\":a[1],f=a[2]instanceof nA.Transform?\"pipe\":a[2],p=(0,ome.default)(t,e,{...s,stdio:[n,c,f]});return cm.add(p),cm.size===1&&(process.on(\"SIGINT\",s6),process.on(\"SIGTERM\",o6)),a[0]instanceof nA.Transform&&a[0].pipe(p.stdin),a[1]instanceof nA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof nA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(cm.delete(p),cm.size===0&&(process.off(\"SIGINT\",s6),process.off(\"SIGTERM\",o6)),E.code){case\"ENOENT\":a[2].write(`command not found: ${t}\n`),h(127);break;case\"EACCES\":a[2].write(`permission denied: ${t}\n`),h(128);break;default:a[2].write(`uncaught error: ${E.message}\n`),h(1);break}}),p.on(\"close\",E=>{cm.delete(p),cm.size===0&&(process.off(\"SIGINT\",s6),process.off(\"SIGTERM\",o6)),h(E!==null?E:129)})})}}}function cme(t){return e=>{let r=e[0]===\"pipe\"?new nA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function xT(t,e){return l6.start(t,e)}function sme(t,e=null){let r=new nA.PassThrough,s=new ame.StringDecoder,a=\"\";return r.on(\"data\",n=>{let c=s.write(n),f;do if(f=c.indexOf(`\n`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a=\"\",t(e!==null?`${e} ${p}`:p)}while(f!==-1);a+=c}),r.on(\"end\",()=>{let n=s.end();n!==\"\"&&t(e!==null?`${e} ${n}`:n)}),r}function ume(t,{prefix:e}){return{stdout:sme(r=>t.stdout.write(`${r}\n`),t.stdout.isTTY?e:null),stderr:sme(r=>t.stderr.write(`${r}\n`),t.stderr.isTTY?e:null)}}var ome,nA,ame,cm,Mc,a6,l6,c6=It(()=>{ome=et(J_()),nA=ye(\"stream\"),ame=ye(\"string_decoder\"),cm=new Set;Mc=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},a6=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");return this.stream}},l6=class t{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(e,r=1){let s=new t(this,e),a=new a6;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let e=[\"ignore\",\"ignore\",\"ignore\"];if(this.pipe)e[0]=\"pipe\";else{if(this.stdin===null)throw new Error(\"Assertion failed: No input stream registered\");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error(\"Assertion failed: No output stream registered\");r=this.stdout,e[1]=r.get();let s;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");s=this.stderr,e[2]=s.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());return(await Promise.all(e))[0]}}});var Qv={};Vt(Qv,{EntryCommand:()=>Dv,ShellError:()=>Kl,execute:()=>SI,globUtils:()=>PT});function fme(t,e,r){let s=new Jl.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(s,{end:!1}),(e&2)===2&&r.stdin instanceof Jl.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Kl(`Bad file descriptor: \"${t}\"`)}return s}function QT(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function kmt(t,e,r){let s=[],a=new Jl.PassThrough;return a.on(\"data\",n=>s.push(n)),await TT(t,e,QT(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\\r\\n]+$/,\"\")}async function Ame(t,e,r){let s=t.map(async n=>{let c=await um(n.args,e,r);return{name:n.name,value:c.join(\" \")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function kT(t){return t.match(/[^ \\r\\n\\t]+/g)||[]}async function yme(t,e,r,s,a=s){switch(t.name){case\"$\":s(String(process.pid));break;case\"#\":s(String(e.args.length));break;case\"@\":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let c=kT(n);for(let f=0;f<c.length-1;++f)a(c[f]);s(c[c.length-1])}break;case\"*\":{let n=e.args.join(\" \");if(t.quoted)s(n);else for(let c of kT(n))a(c)}break;case\"PPID\":s(String(process.ppid));break;case\"RANDOM\":s(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),c,f=Number.isFinite(n);if(f?n>=0&&n<e.args.length&&(c=e.args[n]):Object.hasOwn(r.variables,t.name)?c=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(c=r.environment[t.name]),typeof c<\"u\"&&t.alternativeValue?c=(await um(t.alternativeValue,e,r)).join(\" \"):typeof c>\"u\"&&(t.defaultValue?c=(await um(t.defaultValue,e,r)).join(\" \"):t.alternativeValue&&(c=\"\")),typeof c>\"u\")throw f?new Kl(`Unbound argument #${n}`):new Kl(`Unbound variable \"${t.name}\"`);if(t.quoted)s(c);else{let p=kT(c);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&s(h)}}break}}async function Pv(t,e,r){if(t.type===\"number\"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: \"${t.value}\", only integers are allowed`)}else if(t.type===\"variable\"){let s=[];await yme({...t,quoted:!0},e,r,n=>s.push(n));let a=Number(s.join(\" \"));return Number.isNaN(a)?Pv({type:\"variable\",name:s.join(\" \")},e,r):Pv({type:\"number\",value:a},e,r)}else return Qmt[t.type](await Pv(t.left,e,r),await Pv(t.right,e,r))}async function um(t,e,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let P=JSON.stringify({type:E,fd:C}),I=s.get(P);typeof I>\"u\"&&s.set(P,I=[]),I.push(S)};for(let E of t){let C=!1;switch(E.type){case\"redirection\":{let S=await um(E.args,e,r);for(let P of S)h(E.subtype,E.fd,P)}break;case\"argument\":for(let S of E.segments)switch(S.type){case\"text\":c(S.text);break;case\"glob\":c(S.pattern),C=!0;break;case\"shell\":{let P=await kmt(S.shell,e,r);if(S.quoted)c(P);else{let I=kT(P);for(let R=0;R<I.length-1;++R)p(I[R]);c(I[I.length-1])}}break;case\"variable\":await yme(S,e,r,c,p);break;case\"arithmetic\":c(String(await Pv(S.arithmetic,e,r)));break}break}if(f(),C){let S=a.pop();if(typeof S>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let P=await e.glob.match(S,{cwd:r.cwd,baseFs:e.baseFs});if(P.length===0){let I=i6(S)?\". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22\":\"\";throw new Kl(`No matches found: \"${S}\"${I}`)}for(let I of P.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function xv(t,e,r){e.builtins.has(t[0])||(t=[\"command\",...t]);let s=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:s});let[n,...c]=t;if(n===\"command\")return lme(c[0],c.slice(1),e,{cwd:s,env:a});let f=e.builtins.get(n);if(typeof f>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return cme(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:P}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,e,r)}finally{r.stdin=C,r.stdout=S,r.stderr=P}})}function Tmt(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,QT(r,{stdin:a}));return{stdin:a,promise:n}}}function Rmt(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,r);return{stdin:a,promise:n}}}function pme(t,e,r,s){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=t,xv([...e,\"__ysh_run_procedure\",a],r,s)}}async function hme(t,e,r){let s=t,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case\"command\":{let p=await um(s.args,e,r),h=await Ame(s.envs,e,r);f=s.envs.length?xv(p,e,QT(c,{environment:h})):xv(p,e,c)}break;case\"subshell\":{let p=await um(s.args,e,r),h=Tmt(s.subshell,e,c);f=pme(h,p,e,c)}break;case\"group\":{let p=await um(s.args,e,r),h=Rmt(s.group,e,c);f=pme(h,p,e,c)}break;case\"envs\":{let p=await Ame(s.envs,e,r);c.environment={...c.environment,...p},f=xv([\"true\"],e,c)}break}if(typeof f>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=xT(f,{stdin:new Mc(c.stdin),stdout:new Mc(c.stdout),stderr:new Mc(c.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(f,1);break;case\"|&\":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function Fmt(t,e,r,{background:s=!1}={}){function a(n){let c=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],f=c[n%c.length];return gme.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=ume(r,{prefix:p});return r.backgroundJobs.push(hme(t,e,QT(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(AE(t))}' has ended\n`)})),0}return await hme(t,e,r)}async function Nmt(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables[\"?\"]=String(f)},c=async f=>{try{return await Fmt(f.chain,e,r,{background:s&&typeof f.then>\"u\"})}catch(p){if(!(p instanceof Kl))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await c(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case\"&&\":a===0&&n(await c(t.then.line));break;case\"||\":a!==0&&n(await c(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${t.then.type}\"`)}t=t.then.line}return a}async function TT(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of t){if(a=await Nmt(n,e,r,{background:c===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function Eme(t){switch(t.type){case\"variable\":return t.name===\"@\"||t.name===\"#\"||t.name===\"*\"||Number.isFinite(parseInt(t.name,10))||\"defaultValue\"in t&&!!t.defaultValue&&t.defaultValue.some(e=>kv(e))||\"alternativeValue\"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>kv(e));case\"arithmetic\":return u6(t.arithmetic);case\"shell\":return f6(t.shell);default:return!1}}function kv(t){switch(t.type){case\"redirection\":return t.args.some(e=>kv(e));case\"argument\":return t.segments.some(e=>Eme(e));default:throw new Error(`Assertion failed: Unsupported argument type: \"${t.type}\"`)}}function u6(t){switch(t.type){case\"variable\":return Eme(t);case\"number\":return!1;default:return u6(t.left)||u6(t.right)}}function f6(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let s;switch(r.type){case\"subshell\":s=f6(r.subshell);break;case\"command\":s=r.envs.some(a=>a.args.some(n=>kv(n)))||r.args.some(a=>kv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function SI(t,e=[],{baseFs:r=new Yn,builtins:s={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=PT}={}){let C={};for(let[I,R]of Object.entries(n))typeof R<\"u\"&&(C[I]=R);let S=new Map(xmt);for(let[I,R]of Object.entries(s))S.set(I,R);c===null&&(c=new Jl.PassThrough,c.end());let P=vx(t,E);if(!f6(P)&&P.length>0&&e.length>0){let{command:I}=P[P.length-1];for(;I.then;)I=I.then.line;let R=I.chain;for(;R.then;)R=R.then.chain;R.type===\"command\"&&(R.args=R.args.concat(e.map(N=>({type:\"argument\",segments:[{type:\"text\",text:N}]}))))}return await TT(P,{args:e,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{\"?\":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var gme,dme,Jl,mme,xmt,Qmt,bv=It(()=>{bt();Bc();gme=et(g4()),dme=ye(\"os\"),Jl=ye(\"stream\"),mme=ye(\"timers/promises\");$de();eme();ime();c6();c6();xmt=new Map([[\"cd\",async([t=(0,dme.homedir)(),...e],r,s)=>{let a=K.resolve(s.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code===\"ENOENT\"?new Kl(`cd: no such file or directory: ${t}`):c})).isDirectory())throw new Kl(`cd: not a directory: ${t}`);return s.cwd=a,0}],[\"pwd\",async(t,e,r)=>(r.stdout.write(`${ue.fromPortablePath(r.cwd)}\n`),0)],[\":\",async(t,e,r)=>0],[\"true\",async(t,e,r)=>0],[\"false\",async(t,e,r)=>1],[\"exit\",async([t,...e],r,s)=>s.exitCode=parseInt(t??s.variables[\"?\"],10)],[\"echo\",async(t,e,r)=>(r.stdout.write(`${t.join(\" \")}\n`),0)],[\"sleep\",async([t],e,r)=>{if(typeof t>\"u\")throw new Kl(\"sleep: missing operand\");let s=Number(t);if(Number.isNaN(s))throw new Kl(`sleep: invalid time interval '${t}'`);return await(0,mme.setTimeout)(1e3*s,0)}],[\"unset\",async(t,e,r)=>{for(let s of t)delete r.environment[s],delete r.variables[s];return 0}],[\"__ysh_run_procedure\",async(t,e,r)=>{let s=r.procedures[t[0]];return await xT(s,{stdin:new Mc(r.stdin),stdout:new Mc(r.stdout),stderr:new Mc(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(t,e,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;t[h]!==\"--\";){let C=t[h++],{type:S,fd:P}=JSON.parse(C),I=W=>{switch(P){case null:case 0:c.push(W);break;default:throw new Error(`Unsupported file descriptor: \"${P}\"`)}},R=W=>{switch(P){case null:case 1:f.push(W);break;case 2:p.push(W);break;default:throw new Error(`Unsupported file descriptor: \"${P}\"`)}},N=Number(t[h++]),U=h+N;for(let W=h;W<U;++h,++W)switch(S){case\"<\":I(()=>e.baseFs.createReadStream(K.resolve(r.cwd,ue.toPortablePath(t[W]))));break;case\"<<<\":I(()=>{let te=new Jl.PassThrough;return process.nextTick(()=>{te.write(`${t[W]}\n`),te.end()}),te});break;case\"<&\":I(()=>fme(Number(t[W]),1,r));break;case\">\":case\">>\":{let te=K.resolve(r.cwd,ue.toPortablePath(t[W]));R(te===\"/dev/null\"?new Jl.Writable({autoDestroy:!0,emitClose:!0,write(ie,Ae,ce){setImmediate(ce)}}):e.baseFs.createWriteStream(te,S===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":R(fme(Number(t[W]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${S}\"`)}}if(c.length>0){let C=new Jl.PassThrough;s=C;let S=P=>{if(P===c.length)C.end();else{let I=c[P]();I.pipe(C,{end:!1}),I.on(\"end\",()=>{S(P+1)})}};S(0)}if(f.length>0){let C=new Jl.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new Jl.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await xT(xv(t.slice(h+1),e,r),{stdin:new Mc(s),stdout:new Mc(a),stderr:new Mc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,P)=>{C.on(\"error\",I=>{P(I)}),C.on(\"close\",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,P)=>{C.on(\"error\",I=>{P(I)}),C.on(\"close\",()=>{S()}),C.end()}))),E}]]);Qmt={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var RT=L((y$t,Ime)=>{function Omt(t,e){for(var r=-1,s=t==null?0:t.length,a=Array(s);++r<s;)a[r]=e(t[r],r,t);return a}Ime.exports=Omt});var Dme=L((E$t,Sme)=>{var Cme=Yd(),Lmt=RT(),Mmt=xc(),_mt=aI(),Umt=1/0,wme=Cme?Cme.prototype:void 0,Bme=wme?wme.toString:void 0;function vme(t){if(typeof t==\"string\")return t;if(Mmt(t))return Lmt(t,vme)+\"\";if(_mt(t))return Bme?Bme.call(t):\"\";var e=t+\"\";return e==\"0\"&&1/t==-Umt?\"-0\":e}Sme.exports=vme});var Tv=L((I$t,bme)=>{var Hmt=Dme();function jmt(t){return t==null?\"\":Hmt(t)}bme.exports=jmt});var A6=L((C$t,Pme)=>{function qmt(t,e,r){var s=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++s<a;)n[s]=t[s+e];return n}Pme.exports=qmt});var kme=L((w$t,xme)=>{var Gmt=A6();function Wmt(t,e,r){var s=t.length;return r=r===void 0?s:r,!e&&r>=s?t:Gmt(t,e,r)}xme.exports=Wmt});var p6=L((B$t,Qme)=>{var Ymt=\"\\\\ud800-\\\\udfff\",Vmt=\"\\\\u0300-\\\\u036f\",Kmt=\"\\\\ufe20-\\\\ufe2f\",Jmt=\"\\\\u20d0-\\\\u20ff\",zmt=Vmt+Kmt+Jmt,Zmt=\"\\\\ufe0e\\\\ufe0f\",Xmt=\"\\\\u200d\",$mt=RegExp(\"[\"+Xmt+Ymt+zmt+Zmt+\"]\");function eyt(t){return $mt.test(t)}Qme.exports=eyt});var Rme=L((v$t,Tme)=>{function tyt(t){return t.split(\"\")}Tme.exports=tyt});var Hme=L((S$t,Ume)=>{var Fme=\"\\\\ud800-\\\\udfff\",ryt=\"\\\\u0300-\\\\u036f\",nyt=\"\\\\ufe20-\\\\ufe2f\",iyt=\"\\\\u20d0-\\\\u20ff\",syt=ryt+nyt+iyt,oyt=\"\\\\ufe0e\\\\ufe0f\",ayt=\"[\"+Fme+\"]\",h6=\"[\"+syt+\"]\",g6=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",lyt=\"(?:\"+h6+\"|\"+g6+\")\",Nme=\"[^\"+Fme+\"]\",Ome=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",Lme=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",cyt=\"\\\\u200d\",Mme=lyt+\"?\",_me=\"[\"+oyt+\"]?\",uyt=\"(?:\"+cyt+\"(?:\"+[Nme,Ome,Lme].join(\"|\")+\")\"+_me+Mme+\")*\",fyt=_me+Mme+uyt,Ayt=\"(?:\"+[Nme+h6+\"?\",h6,Ome,Lme,ayt].join(\"|\")+\")\",pyt=RegExp(g6+\"(?=\"+g6+\")|\"+Ayt+fyt,\"g\");function hyt(t){return t.match(pyt)||[]}Ume.exports=hyt});var qme=L((D$t,jme)=>{var gyt=Rme(),dyt=p6(),myt=Hme();function yyt(t){return dyt(t)?myt(t):gyt(t)}jme.exports=yyt});var Wme=L((b$t,Gme)=>{var Eyt=kme(),Iyt=p6(),Cyt=qme(),wyt=Tv();function Byt(t){return function(e){e=wyt(e);var r=Iyt(e)?Cyt(e):void 0,s=r?r[0]:e.charAt(0),a=r?Eyt(r,1).join(\"\"):e.slice(1);return s[t]()+a}}Gme.exports=Byt});var Vme=L((P$t,Yme)=>{var vyt=Wme(),Syt=vyt(\"toUpperCase\");Yme.exports=Syt});var d6=L((x$t,Kme)=>{var Dyt=Tv(),byt=Vme();function Pyt(t){return byt(Dyt(t).toLowerCase())}Kme.exports=Pyt});var Jme=L((k$t,FT)=>{function xyt(){var t=0,e=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,P=13,I=14,R=15,N=16,U=17,W=0,te=1,ie=2,Ae=3,ce=4;function me(g,we){return 55296<=g.charCodeAt(we)&&g.charCodeAt(we)<=56319&&56320<=g.charCodeAt(we+1)&&g.charCodeAt(we+1)<=57343}function pe(g,we){we===void 0&&(we=0);var Ee=g.charCodeAt(we);if(55296<=Ee&&Ee<=56319&&we<g.length-1){var fe=Ee,se=g.charCodeAt(we+1);return 56320<=se&&se<=57343?(fe-55296)*1024+(se-56320)+65536:fe}if(56320<=Ee&&Ee<=57343&&we>=1){var fe=g.charCodeAt(we-1),se=Ee;return 55296<=fe&&fe<=56319?(fe-55296)*1024+(se-56320)+65536:se}return Ee}function Be(g,we,Ee){var fe=[g].concat(we).concat([Ee]),se=fe[fe.length-2],X=Ee,De=fe.lastIndexOf(I);if(De>1&&fe.slice(1,De).every(function(j){return j==s})&&[s,P,U].indexOf(g)==-1)return ie;var Re=fe.lastIndexOf(a);if(Re>0&&fe.slice(1,Re).every(function(j){return j==a})&&[S,a].indexOf(se)==-1)return fe.filter(function(j){return j==a}).length%2==1?Ae:ce;if(se==t&&X==e)return W;if(se==r||se==t||se==e)return X==I&&we.every(function(j){return j==s})?ie:te;if(X==r||X==t||X==e)return te;if(se==c&&(X==c||X==f||X==h||X==E))return W;if((se==h||se==f)&&(X==f||X==p))return W;if((se==E||se==p)&&X==p)return W;if(X==s||X==R)return W;if(X==n)return W;if(se==S)return W;var gt=fe.indexOf(s)!=-1?fe.lastIndexOf(s)-1:fe.length-2;return[P,U].indexOf(fe[gt])!=-1&&fe.slice(gt+1,-1).every(function(j){return j==s})&&X==I||se==R&&[N,U].indexOf(X)!=-1?W:we.indexOf(a)!=-1?ie:se==a&&X==a?W:te}this.nextBreak=function(g,we){if(we===void 0&&(we=0),we<0)return 0;if(we>=g.length-1)return g.length;for(var Ee=Ce(pe(g,we)),fe=[],se=we+1;se<g.length;se++)if(!me(g,se-1)){var X=Ce(pe(g,se));if(Be(Ee,fe,X))return se;fe.push(X)}return g.length},this.splitGraphemes=function(g){for(var we=[],Ee=0,fe;(fe=this.nextBreak(g,Ee))<g.length;)we.push(g.slice(Ee,fe)),Ee=fe;return Ee<g.length&&we.push(g.slice(Ee)),we},this.iterateGraphemes=function(g){var we=0,Ee={next:function(){var fe,se;return(se=this.nextBreak(g,we))<g.length?(fe=g.slice(we,se),we=se,{value:fe,done:!1}):we<g.length?(fe=g.slice(we),we=g.length,{value:fe,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(Ee[Symbol.iterator]=function(){return Ee}),Ee},this.countGraphemes=function(g){for(var we=0,Ee=0,fe;(fe=this.nextBreak(g,Ee))<g.length;)Ee=fe,we++;return Ee<g.length&&we++,we};function Ce(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?S:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?s:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?c:4448<=g&&g<=4519||55216<=g&&g<=55238?f:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?E:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?P:127995<=g&&g<=127999?I:g==8205?R:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?N:128102<=g&&g<=128105?U:C}return this}typeof FT<\"u\"&&FT.exports&&(FT.exports=xyt)});var Zme=L((Q$t,zme)=>{var kyt=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,NT;function Qyt(){if(NT)return NT;if(typeof Intl.Segmenter<\"u\"){let t=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return NT=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Jme(),e=new t;return NT=r=>e.splitGraphemes(r)}}zme.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let s=r-e,a=\"\",n=0,c=0;for(;t.length>0;){let f=t.match(kyt)||[t,t,void 0],p=Qyt()(f[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(\"\"),n+=h,c+=E,typeof f[2]<\"u\"&&(a+=f[2]),t=t.slice(f[0].length)}return a}});var un,Rv=It(()=>{un=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.9.1\"});function nye(t,{configuration:e,json:r}){if(!e.get(\"enableMessageNames\"))return\"\";let a=Vf(t===null?0:t);return!r&&t===null?Ut(e,a,\"grey\"):a}function m6(t,{configuration:e,json:r}){let s=nye(t,{configuration:e,json:r});if(!s||t===null||t===0)return s;let a=Dr[t],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return JE(e,s,n)}async function DI({configuration:t,stdout:e,forceError:r},s){let a=await Ot.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<\"u\"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var tye,OT,Tyt,Xme,$me,b0,rye,eye,Ryt,Fyt,LT,Nyt,Ot,Fv=It(()=>{tye=et(Zme()),OT=et(Nd());nk();Fc();Rv();Qc();Tyt=\"\\xB7\",Xme=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],$me=80,b0=OT.default.GITHUB_ACTIONS?{start:t=>`::group::${t}\n`,end:t=>`::endgroup::\n`}:OT.default.TRAVIS?{start:t=>`travis_fold:start:${t}\n`,end:t=>`travis_fold:end:${t}\n`}:OT.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}[collapsed=true]\\r\\x1B[0K${t}\n`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}\\r\\x1B[0K`}:null,rye=b0!==null,eye=new Date,Ryt=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Fyt=t=>t,LT=Fyt({patrick:{date:[17,3],chars:[\"\\u{1F340}\",\"\\u{1F331}\"],size:40},simba:{date:[19,7],chars:[\"\\u{1F981}\",\"\\u{1F334}\"],size:40},jack:{date:[31,10],chars:[\"\\u{1F383}\",\"\\u{1F987}\"],size:40},hogsfather:{date:[31,12],chars:[\"\\u{1F389}\",\"\\u{1F384}\"],size:40},default:{chars:[\"=\",\"-\"],size:80}}),Nyt=Ryt&&Object.keys(LT).find(t=>{let e=LT[t];return!(e.date&&(e.date[0]!==eye.getDate()||e.date[1]!==eye.getMonth()+1))})||\"default\";Ot=class extends ho{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(YB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get(\"enableProgressBars\")&&!a&&s.isTTY&&s.columns>22){let S=r.get(\"progressBarStyle\")||Nyt;if(!Object.hasOwn(LT,S))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=LT[S];let P=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*P/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!=\"string\"){let h=c;c=h.message,f=f??h.name}let p=typeof f<\"u\"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,zd(r.configuration,`Yarn ${un}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s==\"function\"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,b0!==null&&!this.json&&this.includeInfos&&this.stdout.write(b0.start(r))},reportFooter:f=>{if(this.indent-=1,b0!==null&&!this.json&&this.includeInfos){this.stdout.write(b0.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&f>200?this.reportInfo(null,`\\u2514 Completed in ${Ut(this.configuration,f,Ct.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof s==\"function\"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",c=`${this.formatPrefix(n,\"blueBright\")}${s}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"warning\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"error\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${s}`,{truncate:!1})}reportFold(r,s){if(!b0)return;let a=`${b0.start(r)}${s}${b0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error(\"Unimplemented: Progress bars can't have both progress and titles.\");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r=\"\";this.errorCount>0?r=\"Failed with errors\":this.warningCount>0?r=\"Done with warnings\":r=\"Done\";let s=Ut(this.configuration,Date.now()-this.startTime,Ct.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})}\n`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write(\"\\x1B[0J\"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>$me&&(this.progressFrame=(this.progressFrame+1)%Xme.length,this.progressTime=r);let s=Xme[this.progressFrame];for(let a of this.progress.values()){let n=\"\";if(typeof a.lastScaledSize<\"u\"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"blueBright\")} ${f}${s}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},$me)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>\"u\"&&(s=this.configuration.get(\"preferTruncatedLines\")),s&&(r=(0,tye.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?nye(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,s){return this.includePrefix?`${Ut(this.configuration,\"\\u27A4\",s)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?m6(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${Tyt} `}}});var In={};Vt(In,{PackageManager:()=>oye,detectPackageManager:()=>aye,executePackageAccessibleBinary:()=>Aye,executePackageScript:()=>MT,executePackageShellcode:()=>y6,executeWorkspaceAccessibleBinary:()=>jyt,executeWorkspaceLifecycleScript:()=>uye,executeWorkspaceScript:()=>cye,getPackageAccessibleBinaries:()=>_T,getWorkspaceAccessibleBinaries:()=>fye,hasPackageScript:()=>_yt,hasWorkspaceScript:()=>E6,isNodeScript:()=>I6,makeScriptEnv:()=>Nv,maybeExecuteWorkspaceLifecycleScript:()=>Hyt,prepareExternalProject:()=>Myt});async function P0(t,e,r,s=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${s.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await le.writeFilePromise(K.format({dir:t,name:e,ext:\".cmd\"}),a)}await le.writeFilePromise(K.join(t,e),`#!/bin/sh\nexec \"${r}\" ${s.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function aye(t){let e=await Ht.tryFind(t);if(e?.packageManager){let s=xQ(e.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=s.reference.split(\".\");switch(s.name){case\"yarn\":return{packageManagerField:!0,packageManager:Number(n)===1?\"Yarn Classic\":\"Yarn\",reason:a};case\"npm\":return{packageManagerField:!0,packageManager:\"npm\",reason:a};case\"pnpm\":return{packageManagerField:!0,packageManager:\"pnpm\",reason:a}}}}let r;try{r=await le.readFilePromise(K.join(t,Er.lockfile),\"utf8\")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:\"Yarn\",reason:'\"__metadata\" key found in yarn.lock'}:{packageManager:\"Yarn Classic\",reason:'\"__metadata\" key not found in yarn.lock, must be a Yarn classic lockfile'}:le.existsSync(K.join(t,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:le.existsSync(K.join(t,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function Nv({project:t,locator:e,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<\"u\"&&(c[E.toLowerCase()!==\"path\"?E:\"PATH\"]=C);let f=ue.fromPortablePath(r);c.BERRY_BIN_FOLDER=ue.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?ue.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([P0(r,\"node\",process.execPath),...un!==null?[P0(r,\"run\",process.execPath,[p,\"run\"]),P0(r,\"yarn\",process.execPath,[p]),P0(r,\"yarnpkg\",process.execPath,[p]),P0(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),t&&(c.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),c.PROJECT_CWD=ue.fromPortablePath(t.cwd)),c.PATH=c.PATH?`${f}${ue.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${ue.sep}yarn`,c.npm_node_execpath=`${f}${ue.sep}node`,e){if(!t)throw new Error(\"Assertion failed: Missing project\");let E=t.tryWorkspaceByLocator(e),C=E?E.manifest.version??\"\":t.storedPackages.get(e.locatorHash).version??\"\";c.npm_package_name=cn(e),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let P=t.storedPackages.get(e.locatorHash);if(!P)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);let I=t.configuration.getLinkers(),R={project:t,report:new Ot({stdout:new x0.PassThrough,configuration:t.configuration})},N=I.find(U=>U.supportsPackage(P,R));if(!N)throw new Error(`The package ${Yr(t.configuration,P)} isn't supported by any of the available linkers`);S=await N.findPackageLocation(P,R)}c.npm_package_json=ue.fromPortablePath(K.join(S,Er.manifest))}let h=un!==null?`yarn/${un}`:`yarn/${kp(\"@yarnpkg/core\").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,c,async(E,C,S)=>await P0(r,E,C,S)),c}async function Myt(t,e,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Lyt(async()=>{await le.mktempPromise(async c=>{let f=K.join(c,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:ue.fromPortablePath(t),report:s}),C=n&&Gu(n)?rI(n):n,S=C?cl(C):\"an external project\";h.write(`Packing ${S} from sources\n`);let P=await aye(t),I;P!==null?(h.write(`Using ${P.packageManager} for bootstrap. Reason: ${P.reason}\n\n`),I=P.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),I=\"Yarn\");let R=I===\"Yarn\"&&!P?.packageManagerField;await le.mktempPromise(async N=>{let U=await Nv({binFolder:N,ignoreCorepack:R,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:\"0\"}}),te=new Map([[\"Yarn Classic\",async()=>{let Ae=a!==null?[\"workspace\",a]:[],ce=K.join(t,Er.manifest),me=await le.readFilePromise(ce),pe=await Yu(process.execPath,[process.argv[1],\"set\",\"version\",\"classic\",\"--only-if-needed\",\"--yarn-path\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(pe.code!==0)return pe.code;await le.writeFilePromise(ce,me),await le.appendFilePromise(K.join(t,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let Be=await Yu(\"yarn\",[\"install\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(`\n`);let Ce=await Yu(\"yarn\",[...Ae,\"pack\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return Ce.code!==0?Ce.code:0}],[\"Yarn\",async()=>{let Ae=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let ce=K.join(t,Er.lockfile);await le.existsPromise(ce)||await le.writeFilePromise(ce,\"\");let me=await Yu(\"yarn\",[...Ae,\"pack\",\"--install-if-needed\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],[\"npm\",async()=>{if(a!==null){let we=new x0.PassThrough,Ee=WE(we);we.pipe(h,{end:!1});let fe=await Yu(\"npm\",[\"--version\"],{cwd:t,env:U,stdin:p,stdout:we,stderr:E,end:0});if(we.end(),fe.code!==0)return h.end(),E.end(),fe.code;let se=(await Ee).toString().trim();if(!eA(se,\">=7.x\")){let X=ba(null,\"npm\"),De=On(X,se),Re=On(X,\">=7.x\");throw new Error(`Workspaces aren't supported by ${ri(r,De)}; please upgrade to ${ri(r,Re)} (npm has been detected as the primary package manager for ${Ut(r,t,Ct.PATH)})`)}}let Ae=a!==null?[\"--workspace\",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ce=await Yu(\"npm\",[\"install\",\"--legacy-peer-deps\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ce.code!==0)return ce.code;let me=new x0.PassThrough,pe=WE(me);me.pipe(h);let Be=await Yu(\"npm\",[\"pack\",\"--silent\",...Ae],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let Ce=(await pe).toString().trim().replace(/^.*\\n/s,\"\"),g=K.resolve(t,ue.toPortablePath(Ce));return await le.renamePromise(g,e),0}]]).get(I);if(typeof te>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let ie=await te();if(!(ie===0||typeof ie>\"u\"))throw le.detachTemp(c),new Yt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${Ut(r,f,Ct.PATH)})`)})})})}async function _yt(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(s!==null)return E6(s,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,t)} not found in the project`);return await tA.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new x0.PassThrough,configuration:c})},h=f.find(P=>P.supportsPackage(a,p));if(!h)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new Sn(E,{baseFs:n});return(await Ht.find(vt.dot,{baseFs:C})).scripts.has(e)})}async function MT(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await lye(t,{project:a,binFolder:p,cwd:s,lifecycleScript:e}),S=h.scripts.get(e);if(typeof S>\"u\")return 1;let P=async()=>await SI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,P,a,t,e,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function y6(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{env:h,cwd:E}=await lye(t,{project:a,binFolder:p,cwd:s});return await SI(e,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function Uyt(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await Nv({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:s});return await C6(e,await fye(t)),typeof r>\"u\"&&(r=K.dirname(await le.realpathPromise(K.join(t.cwd,\"package.json\")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function lye(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return Uyt(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=e.storedPackages.get(t.locatorHash);if(!c)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);return await tA.openPromise(async f=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Ot({stdout:new x0.PassThrough,configuration:p})},C=h.find(N=>N.supportsPackage(c,E));if(!C)throw new Error(`The package ${Yr(e.configuration,c)} isn't supported by any of the available linkers`);let S=await Nv({project:e,locator:t,binFolder:r,lifecycleScript:a});await C6(r,await _T(t,{project:e}));let P=await C.findPackageLocation(c,E),I=new Sn(P,{baseFs:f}),R=await Ht.find(vt.dot,{baseFs:I});return typeof s>\"u\"&&(s=P),{manifest:R,binFolder:r,env:S,cwd:s}})}async function cye(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await MT(t.anchoredLocator,e,r,{cwd:s,project:t.project,stdin:a,stdout:n,stderr:c})}function E6(t,e){return t.manifest.scripts.has(e)}async function uye(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,n=null;await le.mktempPromise(async c=>{let f=K.join(c,`${e}.log`),p=`# This file contains the result of Yarn calling the \"${e}\" lifecycle script inside a workspace (\"${ue.fromPortablePath(t.cwd)}\")\n`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Yr(a,t.anchoredLocator),header:p});s.reportInfo(36,`Calling the \"${e}\" lifecycle script`);let C=await cye(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw le.detachTemp(c),new Yt(36,`${(0,iye.default)(e)} script failed (exit code ${Ut(a,C,Ct.NUMBER)}, logs can be found here: ${Ut(a,f,Ct.PATH)}); run ${Ut(a,`yarn ${e}`,Ct.CODE)} to investigate`)})}async function Hyt(t,e,r){E6(t,e)&&await uye(t,e,r)}function I6(t){let e=K.extname(t);if(e.match(/\\.[cm]?[jt]sx?$/))return!0;if(e===\".exe\"||e===\".bin\")return!1;let r=Buffer.alloc(4),s;try{s=le.openSync(t,\"r\")}catch{return!0}try{le.readSync(s,r,0,r.length,0)}finally{le.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function _T(t,{project:e}){let r=e.configuration,s=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,t)} not found in the project`);let n=new x0.Writable,c=r.getLinkers(),f={project:e,report:new Ot({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${ri(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=e.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Yl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Yl.skip;let P=null;try{P=await S.findPackageLocation(C,f)}catch(I){if(I.code===\"LOCATOR_NOT_INSTALLED\")return Yl.skip;throw I}return{dependency:C,packageLocation:P}}));for(let E of h){if(E===Yl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[P,I]of C.bin){let R=K.resolve(S,I);s.set(P,[C,ue.fromPortablePath(R),I6(R)])}}return s}async function fye(t){return await _T(t.anchoredLocator,{project:t.project})}async function C6(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?P0(t,r,process.execPath,[s]):P0(t,r,s,[])))}async function Aye(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await _T(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${Yr(a.configuration,t)}`);return await le.mktempPromise(async C=>{let[,S]=E,P=await Nv({project:a,locator:t,binFolder:C});await C6(P.BERRY_BIN_FOLDER,h);let I=I6(ue.toPortablePath(S))?Yu(process.execPath,[...p,S,...r],{cwd:s,env:P,stdin:n,stdout:c,stderr:f}):Yu(S,r,{cwd:s,env:P,stdin:n,stdout:c,stderr:f}),R;try{R=await I}finally{await le.removePromise(P.BERRY_BIN_FOLDER)}return R.code})}async function jyt(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await Aye(t.anchoredLocator,e,r,{project:t.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var iye,sye,x0,oye,Oyt,Lyt,w6=It(()=>{bt();bt();rA();bv();iye=et(d6()),sye=et(Md()),x0=ye(\"stream\");oI();Fc();Fv();Rv();dT();Qc();kc();Np();Yo();oye=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))(oye||{});Oyt=2,Lyt=(0,sye.default)(Oyt)});var bI=L((X$t,hye)=>{\"use strict\";var pye=new Map([[\"C\",\"cwd\"],[\"f\",\"file\"],[\"z\",\"gzip\"],[\"P\",\"preservePaths\"],[\"U\",\"unlink\"],[\"strip-components\",\"strip\"],[\"stripComponents\",\"strip\"],[\"keep-newer\",\"newer\"],[\"keepNewer\",\"newer\"],[\"keep-newer-files\",\"newer\"],[\"keepNewerFiles\",\"newer\"],[\"k\",\"keep\"],[\"keep-existing\",\"keep\"],[\"keepExisting\",\"keep\"],[\"m\",\"noMtime\"],[\"no-mtime\",\"noMtime\"],[\"p\",\"preserveOwner\"],[\"L\",\"follow\"],[\"h\",\"follow\"]]);hye.exports=t=>t?Object.keys(t).map(e=>[pye.has(e)?pye.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var xI=L(($$t,Bye)=>{\"use strict\";var gye=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},qyt=ye(\"events\"),dye=ye(\"stream\"),mye=ye(\"string_decoder\").StringDecoder,qp=Symbol(\"EOF\"),Gp=Symbol(\"maybeEmitEnd\"),k0=Symbol(\"emittedEnd\"),UT=Symbol(\"emittingEnd\"),Ov=Symbol(\"emittedError\"),HT=Symbol(\"closed\"),yye=Symbol(\"read\"),jT=Symbol(\"flush\"),Eye=Symbol(\"flushChunk\"),fl=Symbol(\"encoding\"),Wp=Symbol(\"decoder\"),qT=Symbol(\"flowing\"),Lv=Symbol(\"paused\"),PI=Symbol(\"resume\"),Vs=Symbol(\"bufferLength\"),B6=Symbol(\"bufferPush\"),v6=Symbol(\"bufferShift\"),zo=Symbol(\"objectMode\"),Zo=Symbol(\"destroyed\"),S6=Symbol(\"emitData\"),Iye=Symbol(\"emitEnd\"),D6=Symbol(\"emitEnd2\"),Yp=Symbol(\"async\"),Mv=t=>Promise.resolve().then(t),Cye=global._MP_NO_ITERATOR_SYMBOLS_!==\"1\",Gyt=Cye&&Symbol.asyncIterator||Symbol(\"asyncIterator not implemented\"),Wyt=Cye&&Symbol.iterator||Symbol(\"iterator not implemented\"),Yyt=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",Vyt=t=>t instanceof ArrayBuffer||typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,Kyt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),GT=class{constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[PI](),r.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},b6=class extends GT{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}};Bye.exports=class wye extends dye{constructor(e){super(),this[qT]=!1,this[Lv]=!1,this.pipes=[],this.buffer=[],this[zo]=e&&e.objectMode||!1,this[zo]?this[fl]=null:this[fl]=e&&e.encoding||null,this[fl]===\"buffer\"&&(this[fl]=null),this[Yp]=e&&!!e.async||!1,this[Wp]=this[fl]?new mye(this[fl]):null,this[qp]=!1,this[k0]=!1,this[UT]=!1,this[HT]=!1,this[Ov]=null,this.writable=!0,this.readable=!0,this[Vs]=0,this[Zo]=!1}get bufferLength(){return this[Vs]}get encoding(){return this[fl]}set encoding(e){if(this[zo])throw new Error(\"cannot set encoding in objectMode\");if(this[fl]&&e!==this[fl]&&(this[Wp]&&this[Wp].lastNeed||this[Vs]))throw new Error(\"cannot change encoding\");this[fl]!==e&&(this[Wp]=e?new mye(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Wp].write(r)))),this[fl]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[zo]}set objectMode(e){this[zo]=this[zo]||!!e}get async(){return this[Yp]}set async(e){this[Yp]=this[Yp]||!!e}write(e,r,s){if(this[qp])throw new Error(\"write after end\");if(this[Zo])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(s=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[Yp]?Mv:n=>n();return!this[zo]&&!Buffer.isBuffer(e)&&(Kyt(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Vyt(e)?e=Buffer.from(e):typeof e!=\"string\"&&(this.objectMode=!0)),this[zo]?(this.flowing&&this[Vs]!==0&&this[jT](!0),this.flowing?this.emit(\"data\",e):this[B6](e),this[Vs]!==0&&this.emit(\"readable\"),s&&a(s),this.flowing):e.length?(typeof e==\"string\"&&!(r===this[fl]&&!this[Wp].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[fl]&&(e=this[Wp].write(e)),this.flowing&&this[Vs]!==0&&this[jT](!0),this.flowing?this.emit(\"data\",e):this[B6](e),this[Vs]!==0&&this.emit(\"readable\"),s&&a(s),this.flowing):(this[Vs]!==0&&this.emit(\"readable\"),s&&a(s),this.flowing)}read(e){if(this[Zo])return null;if(this[Vs]===0||e===0||e>this[Vs])return this[Gp](),null;this[zo]&&(e=null),this.buffer.length>1&&!this[zo]&&(this.encoding?this.buffer=[this.buffer.join(\"\")]:this.buffer=[Buffer.concat(this.buffer,this[Vs])]);let r=this[yye](e||null,this.buffer[0]);return this[Gp](),r}[yye](e,r){return e===r.length||e===null?this[v6]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Vs]-=e),this.emit(\"data\",r),!this.buffer.length&&!this[qp]&&this.emit(\"drain\"),r}end(e,r,s){return typeof e==\"function\"&&(s=e,e=null),typeof r==\"function\"&&(s=r,r=\"utf8\"),e&&this.write(e,r),s&&this.once(\"end\",s),this[qp]=!0,this.writable=!1,(this.flowing||!this[Lv])&&this[Gp](),this}[PI](){this[Zo]||(this[Lv]=!1,this[qT]=!0,this.emit(\"resume\"),this.buffer.length?this[jT]():this[qp]?this[Gp]():this.emit(\"drain\"))}resume(){return this[PI]()}pause(){this[qT]=!1,this[Lv]=!0}get destroyed(){return this[Zo]}get flowing(){return this[qT]}get paused(){return this[Lv]}[B6](e){this[zo]?this[Vs]+=1:this[Vs]+=e.length,this.buffer.push(e)}[v6](){return this.buffer.length&&(this[zo]?this[Vs]-=1:this[Vs]-=this.buffer[0].length),this.buffer.shift()}[jT](e){do;while(this[Eye](this[v6]()));!e&&!this.buffer.length&&!this[qp]&&this.emit(\"drain\")}[Eye](e){return e?(this.emit(\"data\",e),this.flowing):!1}pipe(e,r){if(this[Zo])return;let s=this[k0];return r=r||{},e===gye.stdout||e===gye.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this.pipes.push(r.proxyErrors?new b6(this,e,r):new GT(this,e,r)),this[Yp]?Mv(()=>this[PI]()):this[PI]()),e}unpipe(e){let r=this.pipes.find(s=>s.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);return e===\"data\"&&!this.pipes.length&&!this.flowing?this[PI]():e===\"readable\"&&this[Vs]!==0?super.emit(\"readable\"):Yyt(e)&&this[k0]?(super.emit(e),this.removeAllListeners(e)):e===\"error\"&&this[Ov]&&(this[Yp]?Mv(()=>r.call(this,this[Ov])):r.call(this,this[Ov])),s}get emittedEnd(){return this[k0]}[Gp](){!this[UT]&&!this[k0]&&!this[Zo]&&this.buffer.length===0&&this[qp]&&(this[UT]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[HT]&&this.emit(\"close\"),this[UT]=!1)}emit(e,r,...s){if(e!==\"error\"&&e!==\"close\"&&e!==Zo&&this[Zo])return;if(e===\"data\")return r?this[Yp]?Mv(()=>this[S6](r)):this[S6](r):!1;if(e===\"end\")return this[Iye]();if(e===\"close\"){if(this[HT]=!0,!this[k0]&&!this[Zo])return;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[Ov]=r;let n=super.emit(\"error\",r);return this[Gp](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[Gp](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...s);return this[Gp](),a}[S6](e){for(let s of this.pipes)s.dest.write(e)===!1&&this.pause();let r=super.emit(\"data\",e);return this[Gp](),r}[Iye](){this[k0]||(this[k0]=!0,this.readable=!1,this[Yp]?Mv(()=>this[D6]()):this[D6]())}[D6](){if(this[Wp]){let r=this[Wp].end();if(r){for(let s of this.pipes)s.dest.write(r);super.emit(\"data\",r)}}for(let r of this.pipes)r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}collect(){let e=[];this[zo]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",s=>{e.push(s),this[zo]||(e.dataLength+=s.length)}),r.then(()=>e)}concat(){return this[zo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this.collect().then(e=>this[zo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this[fl]?e.join(\"\"):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Zo,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",s=>r(s)),this.on(\"end\",()=>e())})}[Gyt](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[qp])return Promise.resolve({done:!0});let s=null,a=null,n=h=>{this.removeListener(\"data\",c),this.removeListener(\"end\",f),a(h)},c=h=>{this.removeListener(\"error\",n),this.removeListener(\"end\",f),this.pause(),s({value:h,done:!!this[qp]})},f=()=>{this.removeListener(\"error\",n),this.removeListener(\"data\",c),s({done:!0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,s=h,this.once(Zo,p),this.once(\"error\",n),this.once(\"end\",f),this.once(\"data\",c)})}}}[Wyt](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Zo]?(e?this.emit(\"error\",e):this.emit(Zo),this):(this[Zo]=!0,this.buffer.length=0,this[Vs]=0,typeof this.close==\"function\"&&!this[HT]&&this.close(),e?this.emit(\"error\",e):this.emit(Zo),this)}static isStream(e){return!!e&&(e instanceof wye||e instanceof dye||e instanceof qyt&&(typeof e.pipe==\"function\"||typeof e.write==\"function\"&&typeof e.end==\"function\"))}}});var Sye=L((eer,vye)=>{var Jyt=ye(\"zlib\").constants||{ZLIB_VERNUM:4736};vye.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Jyt))});var q6=L(zl=>{\"use strict\";var T6=ye(\"assert\"),Q0=ye(\"buffer\").Buffer,Pye=ye(\"zlib\"),fm=zl.constants=Sye(),zyt=xI(),Dye=Q0.concat,Am=Symbol(\"_superWrite\"),QI=class extends Error{constructor(e){super(\"zlib: \"+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code=\"ZLIB_ERROR\"),this.message=\"zlib: \"+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return\"ZlibError\"}},Zyt=Symbol(\"opts\"),_v=Symbol(\"flushFlag\"),bye=Symbol(\"finishFlushFlag\"),j6=Symbol(\"fullFlushFlag\"),Ei=Symbol(\"handle\"),WT=Symbol(\"onError\"),kI=Symbol(\"sawError\"),P6=Symbol(\"level\"),x6=Symbol(\"strategy\"),k6=Symbol(\"ended\"),ter=Symbol(\"_defaultFullFlush\"),YT=class extends zyt{constructor(e,r){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");super(e),this[kI]=!1,this[k6]=!1,this[Zyt]=e,this[_v]=e.flush,this[bye]=e.finishFlush;try{this[Ei]=new Pye[r](e)}catch(s){throw new QI(s)}this[WT]=s=>{this[kI]||(this[kI]=!0,this.close(),this.emit(\"error\",s))},this[Ei].on(\"error\",s=>this[WT](new QI(s))),this.once(\"end\",()=>this.close)}close(){this[Ei]&&(this[Ei].close(),this[Ei]=null,this.emit(\"close\"))}reset(){if(!this[kI])return T6(this[Ei],\"zlib binding closed\"),this[Ei].reset()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this[j6]),this.write(Object.assign(Q0.alloc(0),{[_v]:e})))}end(e,r,s){return e&&this.write(e,r),this.flush(this[bye]),this[k6]=!0,super.end(null,null,s)}get ended(){return this[k6]}write(e,r,s){if(typeof r==\"function\"&&(s=r,r=\"utf8\"),typeof e==\"string\"&&(e=Q0.from(e,r)),this[kI])return;T6(this[Ei],\"zlib binding closed\");let a=this[Ei]._handle,n=a.close;a.close=()=>{};let c=this[Ei].close;this[Ei].close=()=>{},Q0.concat=h=>h;let f;try{let h=typeof e[_v]==\"number\"?e[_v]:this[_v];f=this[Ei]._processChunk(e,h),Q0.concat=Dye}catch(h){Q0.concat=Dye,this[WT](new QI(h))}finally{this[Ei]&&(this[Ei]._handle=a,a.close=n,this[Ei].close=c,this[Ei].removeAllListeners(\"error\"))}this[Ei]&&this[Ei].on(\"error\",h=>this[WT](new QI(h)));let p;if(f)if(Array.isArray(f)&&f.length>0){p=this[Am](Q0.from(f[0]));for(let h=1;h<f.length;h++)p=this[Am](f[h])}else p=this[Am](Q0.from(f));return s&&s(),p}[Am](e){return super.write(e)}},Vp=class extends YT{constructor(e,r){e=e||{},e.flush=e.flush||fm.Z_NO_FLUSH,e.finishFlush=e.finishFlush||fm.Z_FINISH,super(e,r),this[j6]=fm.Z_FULL_FLUSH,this[P6]=e.level,this[x6]=e.strategy}params(e,r){if(!this[kI]){if(!this[Ei])throw new Error(\"cannot switch params when binding is closed\");if(!this[Ei].params)throw new Error(\"not supported in this implementation\");if(this[P6]!==e||this[x6]!==r){this.flush(fm.Z_SYNC_FLUSH),T6(this[Ei],\"zlib binding closed\");let s=this[Ei].flush;this[Ei].flush=(a,n)=>{this.flush(a),n()};try{this[Ei].params(e,r)}finally{this[Ei].flush=s}this[Ei]&&(this[P6]=e,this[x6]=r)}}}},R6=class extends Vp{constructor(e){super(e,\"Deflate\")}},F6=class extends Vp{constructor(e){super(e,\"Inflate\")}},Q6=Symbol(\"_portable\"),N6=class extends Vp{constructor(e){super(e,\"Gzip\"),this[Q6]=e&&!!e.portable}[Am](e){return this[Q6]?(this[Q6]=!1,e[9]=255,super[Am](e)):super[Am](e)}},O6=class extends Vp{constructor(e){super(e,\"Gunzip\")}},L6=class extends Vp{constructor(e){super(e,\"DeflateRaw\")}},M6=class extends Vp{constructor(e){super(e,\"InflateRaw\")}},_6=class extends Vp{constructor(e){super(e,\"Unzip\")}},VT=class extends YT{constructor(e,r){e=e||{},e.flush=e.flush||fm.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||fm.BROTLI_OPERATION_FINISH,super(e,r),this[j6]=fm.BROTLI_OPERATION_FLUSH}},U6=class extends VT{constructor(e){super(e,\"BrotliCompress\")}},H6=class extends VT{constructor(e){super(e,\"BrotliDecompress\")}};zl.Deflate=R6;zl.Inflate=F6;zl.Gzip=N6;zl.Gunzip=O6;zl.DeflateRaw=L6;zl.InflateRaw=M6;zl.Unzip=_6;typeof Pye.BrotliCompress==\"function\"?(zl.BrotliCompress=U6,zl.BrotliDecompress=H6):zl.BrotliCompress=zl.BrotliDecompress=class{constructor(){throw new Error(\"Brotli is not supported in this version of Node.js\")}}});var TI=L((ier,xye)=>{var Xyt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;xye.exports=Xyt!==\"win32\"?t=>t:t=>t&&t.replace(/\\\\/g,\"/\")});var KT=L((oer,kye)=>{\"use strict\";var $yt=xI(),G6=TI(),W6=Symbol(\"slurp\");kye.exports=class extends $yt{constructor(e,r,s){switch(super(),this.pause(),this.extended=r,this.globalExtended=s,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case\"File\":case\"OldFile\":case\"Link\":case\"SymbolicLink\":case\"CharacterDevice\":case\"BlockDevice\":case\"Directory\":case\"FIFO\":case\"ContiguousFile\":case\"GNUDumpDir\":break;case\"NextFileHasLongLinkpath\":case\"NextFileHasLongPath\":case\"OldGnuLongPath\":case\"GlobalExtendedHeader\":case\"ExtendedHeader\":case\"OldExtendedHeader\":this.meta=!0;break;default:this.ignore=!0}this.path=G6(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=G6(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[W6](r),s&&this[W6](s,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let s=this.remain,a=this.blockRemain;return this.remain=Math.max(0,s-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:s>=r?super.write(e):super.write(e.slice(0,s))}[W6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s===\"path\")&&(this[s]=s===\"path\"||s===\"linkpath\"?G6(e[s]):e[s])}}});var Y6=L(JT=>{\"use strict\";JT.name=new Map([[\"0\",\"File\"],[\"\",\"OldFile\"],[\"1\",\"Link\"],[\"2\",\"SymbolicLink\"],[\"3\",\"CharacterDevice\"],[\"4\",\"BlockDevice\"],[\"5\",\"Directory\"],[\"6\",\"FIFO\"],[\"7\",\"ContiguousFile\"],[\"g\",\"GlobalExtendedHeader\"],[\"x\",\"ExtendedHeader\"],[\"A\",\"SolarisACL\"],[\"D\",\"GNUDumpDir\"],[\"I\",\"Inode\"],[\"K\",\"NextFileHasLongLinkpath\"],[\"L\",\"NextFileHasLongPath\"],[\"M\",\"ContinuationFile\"],[\"N\",\"OldGnuLongPath\"],[\"S\",\"SparseFile\"],[\"V\",\"TapeVolumeHeader\"],[\"X\",\"OldExtendedHeader\"]]);JT.code=new Map(Array.from(JT.name).map(t=>[t[1],t[0]]))});var Fye=L((ler,Rye)=>{\"use strict\";var eEt=(t,e)=>{if(Number.isSafeInteger(t))t<0?rEt(t,e):tEt(t,e);else throw Error(\"cannot encode number outside of javascript safe integer range\");return e},tEt=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rEt=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var s=e.length;s>1;s--){var a=t&255;t=Math.floor(t/256),r?e[s-1]=Qye(a):a===0?e[s-1]=0:(r=!0,e[s-1]=Tye(a))}},nEt=t=>{let e=t[0],r=e===128?sEt(t.slice(1,t.length)):e===255?iEt(t):null;if(r===null)throw Error(\"invalid base256 encoding\");if(!Number.isSafeInteger(r))throw Error(\"parsed number outside of javascript safe integer range\");return r},iEt=t=>{for(var e=t.length,r=0,s=!1,a=e-1;a>-1;a--){var n=t[a],c;s?c=Qye(n):n===0?c=n:(s=!0,c=Tye(n)),c!==0&&(r-=c*Math.pow(256,e-a-1))}return r},sEt=t=>{for(var e=t.length,r=0,s=e-1;s>-1;s--){var a=t[s];a!==0&&(r+=a*Math.pow(256,e-s-1))}return r},Qye=t=>(255^t)&255,Tye=t=>(255^t)+1&255;Rye.exports={encode:eEt,parse:nEt}});var FI=L((cer,Oye)=>{\"use strict\";var V6=Y6(),RI=ye(\"path\").posix,Nye=Fye(),K6=Symbol(\"slurp\"),Zl=Symbol(\"type\"),Z6=class{constructor(e,r,s,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Zl]=\"0\",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,s,a):e&&this.set(e)}decode(e,r,s,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");if(this.path=pm(e,r,100),this.mode=T0(e,r+100,8),this.uid=T0(e,r+108,8),this.gid=T0(e,r+116,8),this.size=T0(e,r+124,12),this.mtime=J6(e,r+136,12),this.cksum=T0(e,r+148,12),this[K6](s),this[K6](a,!0),this[Zl]=pm(e,r+156,1),this[Zl]===\"\"&&(this[Zl]=\"0\"),this[Zl]===\"0\"&&this.path.substr(-1)===\"/\"&&(this[Zl]=\"5\"),this[Zl]===\"5\"&&(this.size=0),this.linkpath=pm(e,r+157,100),e.slice(r+257,r+265).toString()===\"ustar\\x0000\")if(this.uname=pm(e,r+265,32),this.gname=pm(e,r+297,32),this.devmaj=T0(e,r+329,8),this.devmin=T0(e,r+337,8),e[r+475]!==0){let c=pm(e,r+345,155);this.path=c+\"/\"+this.path}else{let c=pm(e,r+345,130);c&&(this.path=c+\"/\"+this.path),this.atime=J6(e,r+476,12),this.ctime=J6(e,r+488,12)}let n=8*32;for(let c=r;c<r+148;c++)n+=e[c];for(let c=r+156;c<r+512;c++)n+=e[c];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[K6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s===\"path\")&&(this[s]=e[s])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");let s=this.ctime||this.atime?130:155,a=oEt(this.path||\"\",s),n=a[0],c=a[1];this.needPax=a[2],this.needPax=hm(e,r,100,n)||this.needPax,this.needPax=R0(e,r+100,8,this.mode)||this.needPax,this.needPax=R0(e,r+108,8,this.uid)||this.needPax,this.needPax=R0(e,r+116,8,this.gid)||this.needPax,this.needPax=R0(e,r+124,12,this.size)||this.needPax,this.needPax=z6(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Zl].charCodeAt(0),this.needPax=hm(e,r+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",r+257,8),this.needPax=hm(e,r+265,32,this.uname)||this.needPax,this.needPax=hm(e,r+297,32,this.gname)||this.needPax,this.needPax=R0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=R0(e,r+337,8,this.devmin)||this.needPax,this.needPax=hm(e,r+345,s,c)||this.needPax,e[r+475]!==0?this.needPax=hm(e,r+345,155,c)||this.needPax:(this.needPax=hm(e,r+345,130,c)||this.needPax,this.needPax=z6(e,r+476,12,this.atime)||this.needPax,this.needPax=z6(e,r+488,12,this.ctime)||this.needPax);let f=8*32;for(let p=r;p<r+148;p++)f+=e[p];for(let p=r+156;p<r+512;p++)f+=e[p];return this.cksum=f,R0(e,r+148,8,this.cksum),this.cksumValid=!0,this.needPax}set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}get type(){return V6.name.get(this[Zl])||this[Zl]}get typeKey(){return this[Zl]}set type(e){V6.code.has(e)?this[Zl]=V6.code.get(e):this[Zl]=e}},oEt=(t,e)=>{let s=t,a=\"\",n,c=RI.parse(t).root||\".\";if(Buffer.byteLength(s)<100)n=[s,a,!1];else{a=RI.dirname(s),s=RI.basename(s);do Buffer.byteLength(s)<=100&&Buffer.byteLength(a)<=e?n=[s,a,!1]:Buffer.byteLength(s)>100&&Buffer.byteLength(a)<=e?n=[s.substr(0,99),a,!0]:(s=RI.join(RI.basename(a),s),a=RI.dirname(a));while(a!==c&&!n);n||(n=[t.substr(0,99),\"\",!0])}return n},pm=(t,e,r)=>t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*/,\"\"),J6=(t,e,r)=>aEt(T0(t,e,r)),aEt=t=>t===null?null:new Date(t*1e3),T0=(t,e,r)=>t[e]&128?Nye.parse(t.slice(e,e+r)):cEt(t,e,r),lEt=t=>isNaN(t)?null:t,cEt=(t,e,r)=>lEt(parseInt(t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),uEt={12:8589934591,8:2097151},R0=(t,e,r,s)=>s===null?!1:s>uEt[r]||s<0?(Nye.encode(s,t.slice(e,e+r)),!0):(fEt(t,e,r,s),!1),fEt=(t,e,r,s)=>t.write(AEt(s,r),e,r,\"ascii\"),AEt=(t,e)=>pEt(Math.floor(t).toString(8),e),pEt=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join(\"0\")+t+\" \")+\"\\0\",z6=(t,e,r,s)=>s===null?!1:R0(t,e,r,s.getTime()/1e3),hEt=new Array(156).join(\"\\0\"),hm=(t,e,r,s)=>s===null?!1:(t.write(s+hEt,e,r,\"utf8\"),s.length!==Buffer.byteLength(s)||s.length>r);Oye.exports=Z6});var zT=L((uer,Lye)=>{\"use strict\";var gEt=FI(),dEt=ye(\"path\"),Uv=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e===\"\")return null;let r=Buffer.byteLength(e),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new gEt({path:(\"PaxHeader/\"+dEt.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?\"GlobalExtendedHeader\":\"ExtendedHeader\",linkpath:\"\",uname:this.uname||\"\",gname:this.gname||\"\",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,\"utf8\");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField(\"path\")+this.encodeField(\"ctime\")+this.encodeField(\"atime\")+this.encodeField(\"dev\")+this.encodeField(\"ino\")+this.encodeField(\"nlink\")+this.encodeField(\"charset\")+this.encodeField(\"comment\")+this.encodeField(\"gid\")+this.encodeField(\"gname\")+this.encodeField(\"linkpath\")+this.encodeField(\"mtime\")+this.encodeField(\"size\")+this.encodeField(\"uid\")+this.encodeField(\"uname\")}encodeField(e){if(this[e]===null||this[e]===void 0)return\"\";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],s=\" \"+(e===\"dev\"||e===\"ino\"||e===\"nlink\"?\"SCHILY.\":\"\")+e+\"=\"+r+`\n`,a=Buffer.byteLength(s),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+s}};Uv.parse=(t,e,r)=>new Uv(mEt(yEt(t),e),r);var mEt=(t,e)=>e?Object.keys(t).reduce((r,s)=>(r[s]=t[s],r),e):t,yEt=t=>t.replace(/\\n$/,\"\").split(`\n`).reduce(EEt,Object.create(null)),EEt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+\" \").length);let s=e.split(\"=\"),a=s.shift().replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\");if(!a)return t;let n=s.join(\"=\");return t[a]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};Lye.exports=Uv});var NI=L((fer,Mye)=>{Mye.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)===\"/\";)r=e,e--;return r===-1?t:t.slice(0,r)}});var ZT=L((Aer,_ye)=>{\"use strict\";_ye.exports=t=>class extends t{warn(e,r,s={}){this.file&&(s.file=this.file),this.cwd&&(s.cwd=this.cwd),s.code=r instanceof Error&&r.code||e,s.tarCode=e,!this.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),this.emit(\"warn\",s.tarCode,r,s)):r instanceof Error?this.emit(\"error\",Object.assign(r,s)):this.emit(\"error\",Object.assign(new Error(`${e}: ${r}`),s))}}});var $6=L((her,Uye)=>{\"use strict\";var XT=[\"|\",\"<\",\">\",\"?\",\":\"],X6=XT.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),IEt=new Map(XT.map((t,e)=>[t,X6[e]])),CEt=new Map(X6.map((t,e)=>[t,XT[e]]));Uye.exports={encode:t=>XT.reduce((e,r)=>e.split(r).join(IEt.get(r)),t),decode:t=>X6.reduce((e,r)=>e.split(r).join(CEt.get(r)),t)}});var eq=L((ger,jye)=>{var{isAbsolute:wEt,parse:Hye}=ye(\"path\").win32;jye.exports=t=>{let e=\"\",r=Hye(t);for(;wEt(t)||r.root;){let s=t.charAt(0)===\"/\"&&t.slice(0,4)!==\"//?/\"?\"/\":r.root;t=t.substr(s.length),e+=s,r=Hye(t)}return[e,t]}});var Gye=L((der,qye)=>{\"use strict\";qye.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var uq=L((Eer,iEe)=>{\"use strict\";var Zye=xI(),Xye=zT(),$ye=FI(),sA=ye(\"fs\"),Wye=ye(\"path\"),iA=TI(),BEt=NI(),eEe=(t,e)=>e?(t=iA(t).replace(/^\\.(\\/|$)/,\"\"),BEt(e)+\"/\"+t):iA(t),vEt=16*1024*1024,Yye=Symbol(\"process\"),Vye=Symbol(\"file\"),Kye=Symbol(\"directory\"),rq=Symbol(\"symlink\"),Jye=Symbol(\"hardlink\"),Hv=Symbol(\"header\"),$T=Symbol(\"read\"),nq=Symbol(\"lstat\"),eR=Symbol(\"onlstat\"),iq=Symbol(\"onread\"),sq=Symbol(\"onreadlink\"),oq=Symbol(\"openfile\"),aq=Symbol(\"onopenfile\"),F0=Symbol(\"close\"),tR=Symbol(\"mode\"),lq=Symbol(\"awaitDrain\"),tq=Symbol(\"ondrain\"),oA=Symbol(\"prefix\"),zye=Symbol(\"hadError\"),tEe=ZT(),SEt=$6(),rEe=eq(),nEe=Gye(),rR=tEe(class extends Zye{constructor(e,r){if(r=r||{},super(r),typeof e!=\"string\")throw new TypeError(\"path is required\");this.path=iA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||\"\",this.maxReadSize=r.maxReadSize||vEt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=iA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?iA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=rEe(this.path);a&&(this.path=n,s=a)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=SEt.decode(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=iA(r.absolute||Wye.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),s&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.statCache.has(this.absolute)?this[eR](this.statCache.get(this.absolute)):this[nq]()}emit(e,...r){return e===\"error\"&&(this[zye]=!0),super.emit(e,...r)}[nq](){sA.lstat(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[eR](r)})}[eR](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=bEt(e),this.emit(\"stat\",e),this[Yye]()}[Yye](){switch(this.type){case\"File\":return this[Vye]();case\"Directory\":return this[Kye]();case\"SymbolicLink\":return this[rq]();default:return this.end()}}[tR](e){return nEe(e,this.type===\"Directory\",this.portable)}[oA](e){return eEe(e,this.prefix)}[Hv](){this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.header=new $ye({path:this[oA](this.path),linkpath:this.type===\"Link\"?this[oA](this.linkpath):this.linkpath,mode:this[tR](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:\"\",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Xye({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[oA](this.path),linkpath:this.type===\"Link\"?this[oA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Kye](){this.path.substr(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[Hv](),this.end()}[rq](){sA.readlink(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[sq](r)})}[sq](e){this.linkpath=iA(e),this[Hv](),this.end()}[Jye](e){this.type=\"Link\",this.linkpath=iA(Wye.relative(this.cwd,e)),this.stat.size=0,this[Hv](),this.end()}[Vye](){if(this.stat.nlink>1){let e=this.stat.dev+\":\"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[Jye](r)}this.linkCache.set(e,this.absolute)}if(this[Hv](),this.stat.size===0)return this.end();this[oq]()}[oq](){sA.open(this.absolute,\"r\",(e,r)=>{if(e)return this.emit(\"error\",e);this[aq](r)})}[aq](e){if(this.fd=e,this[zye])return this[F0]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[$T]()}[$T](){let{fd:e,buf:r,offset:s,length:a,pos:n}=this;sA.read(e,r,s,a,n,(c,f)=>{if(c)return this[F0](()=>this.emit(\"error\",c));this[iq](f)})}[F0](e){sA.close(this.fd,e)}[iq](e){if(e<=0&&this.remain>0){let a=new Error(\"encountered unexpected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[F0](()=>this.emit(\"error\",a))}if(e>this.remain){let a=new Error(\"did not encounter expected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[F0](()=>this.emit(\"error\",a))}if(e===this.remain)for(let a=e;a<this.length&&e<this.blockRemain;a++)this.buf[a+this.offset]=0,e++,this.remain++;let r=this.offset===0&&e===this.buf.length?this.buf:this.buf.slice(this.offset,this.offset+e);this.write(r)?this[tq]():this[lq](()=>this[tq]())}[lq](e){this.once(\"drain\",e)}write(e){if(this.blockRemain<e.length){let r=new Error(\"writing more data than expected\");return r.path=this.absolute,this.emit(\"error\",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e)}[tq](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[F0](e=>e?this.emit(\"error\",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[$T]()}}),cq=class extends rR{[nq](){this[eR](sA.lstatSync(this.absolute))}[rq](){this[sq](sA.readlinkSync(this.absolute))}[oq](){this[aq](sA.openSync(this.absolute,\"r\"))}[$T](){let e=!0;try{let{fd:r,buf:s,offset:a,length:n,pos:c}=this,f=sA.readSync(r,s,a,n,c);this[iq](f),e=!1}finally{if(e)try{this[F0](()=>{})}catch{}}}[lq](e){e()}[F0](e){sA.closeSync(this.fd),e()}},DEt=tEe(class extends Zye{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=iA(e.path),this.mode=this[tR](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=iA(e.linkpath),typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=rEe(this.path);a&&(this.path=n,s=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $ye({path:this[oA](this.path),linkpath:this.type===\"Link\"?this[oA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),s&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.header.encode()&&!this.noPax&&super.write(new Xye({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[oA](this.path),linkpath:this.type===\"Link\"?this[oA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[oA](e){return eEe(e,this.prefix)}[tR](e){return nEe(e,this.type===\"Directory\",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});rR.Sync=cq;rR.Tar=DEt;var bEt=t=>t.isFile()?\"File\":t.isDirectory()?\"Directory\":t.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\";iEe.exports=rR});var fR=L((Cer,fEe)=>{\"use strict\";var cR=class{constructor(e,r){this.path=e||\"./\",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},PEt=xI(),xEt=q6(),kEt=KT(),Eq=uq(),QEt=Eq.Sync,TEt=Eq.Tar,REt=pk(),sEe=Buffer.alloc(1024),sR=Symbol(\"onStat\"),nR=Symbol(\"ended\"),aA=Symbol(\"queue\"),OI=Symbol(\"current\"),gm=Symbol(\"process\"),iR=Symbol(\"processing\"),oEe=Symbol(\"processJob\"),lA=Symbol(\"jobs\"),fq=Symbol(\"jobDone\"),oR=Symbol(\"addFSEntry\"),aEe=Symbol(\"addTarEntry\"),gq=Symbol(\"stat\"),dq=Symbol(\"readdir\"),aR=Symbol(\"onreaddir\"),lR=Symbol(\"pipe\"),lEe=Symbol(\"entry\"),Aq=Symbol(\"entryOpt\"),mq=Symbol(\"writeEntryClass\"),uEe=Symbol(\"write\"),pq=Symbol(\"ondrain\"),uR=ye(\"fs\"),cEe=ye(\"path\"),FEt=ZT(),hq=TI(),Iq=FEt(class extends PEt{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||\"\",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=hq(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[mq]=Eq,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!=\"object\"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new xEt.Gzip(e.gzip),this.zip.on(\"data\",r=>super.write(r)),this.zip.on(\"end\",r=>super.end()),this.zip.on(\"drain\",r=>this[pq]()),this.on(\"resume\",r=>this.zip.resume())):this.on(\"drain\",this[pq]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter==\"function\"?e.filter:r=>!0,this[aA]=new REt,this[lA]=0,this.jobs=+e.jobs||4,this[iR]=!1,this[nR]=!1}[uEe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[nR]=!0,this[gm](),this}write(e){if(this[nR])throw new Error(\"write after end\");return e instanceof kEt?this[aEe](e):this[oR](e),this.flowing}[aEe](e){let r=hq(cEe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let s=new cR(e.path,r,!1);s.entry=new TEt(e,this[Aq](s)),s.entry.on(\"end\",a=>this[fq](s)),this[lA]+=1,this[aA].push(s)}this[gm]()}[oR](e){let r=hq(cEe.resolve(this.cwd,e));this[aA].push(new cR(e,r)),this[gm]()}[gq](e){e.pending=!0,this[lA]+=1;let r=this.follow?\"stat\":\"lstat\";uR[r](e.absolute,(s,a)=>{e.pending=!1,this[lA]-=1,s?this.emit(\"error\",s):this[sR](e,a)})}[sR](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[gm]()}[dq](e){e.pending=!0,this[lA]+=1,uR.readdir(e.absolute,(r,s)=>{if(e.pending=!1,this[lA]-=1,r)return this.emit(\"error\",r);this[aR](e,s)})}[aR](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[gm]()}[gm](){if(!this[iR]){this[iR]=!0;for(let e=this[aA].head;e!==null&&this[lA]<this.jobs;e=e.next)if(this[oEe](e.value),e.value.ignore){let r=e.next;this[aA].removeNode(e),e.next=r}this[iR]=!1,this[nR]&&!this[aA].length&&this[lA]===0&&(this.zip?this.zip.end(sEe):(super.write(sEe),super.end()))}}get[OI](){return this[aA]&&this[aA].head&&this[aA].head.value}[fq](e){this[aA].shift(),this[lA]-=1,this[gm]()}[oEe](e){if(!e.pending){if(e.entry){e===this[OI]&&!e.piped&&this[lR](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[sR](e,this.statCache.get(e.absolute)):this[gq](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[aR](e,this.readdirCache.get(e.absolute)):this[dq](e),!e.readdir))){if(e.entry=this[lEe](e),!e.entry){e.ignore=!0;return}e===this[OI]&&!e.piped&&this[lR](e)}}}[Aq](e){return{onwarn:(r,s,a)=>this.warn(r,s,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[lEe](e){this[lA]+=1;try{return new this[mq](e.path,this[Aq](e)).on(\"end\",()=>this[fq](e)).on(\"error\",r=>this.emit(\"error\",r))}catch(r){this.emit(\"error\",r)}}[pq](){this[OI]&&this[OI].entry&&this[OI].entry.resume()}[lR](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[oR](c+a)});let r=e.entry,s=this.zip;s?r.on(\"data\",a=>{s.write(a)||r.pause()}):r.on(\"data\",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),yq=class extends Iq{constructor(e){super(e),this[mq]=QEt}pause(){}resume(){}[gq](e){let r=this.follow?\"statSync\":\"lstatSync\";this[sR](e,uR[r](e.absolute))}[dq](e,r){this[aR](e,uR.readdirSync(e.absolute))}[lR](e){let r=e.entry,s=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[oR](c+a)}),s?r.on(\"data\",a=>{s.write(a)}):r.on(\"data\",a=>{super[uEe](a)})}};Iq.Sync=yq;fEe.exports=Iq});var GI=L(qv=>{\"use strict\";var NEt=xI(),OEt=ye(\"events\").EventEmitter,Al=ye(\"fs\"),Bq=Al.writev;if(!Bq){let t=process.binding(\"fs\"),e=t.FSReqWrap||t.FSReqCallback;Bq=(r,s,a,n)=>{let c=(p,h)=>n(p,h,s),f=new e;f.oncomplete=c,t.writeBuffers(r,s,a,f)}}var jI=Symbol(\"_autoClose\"),Vu=Symbol(\"_close\"),jv=Symbol(\"_ended\"),ni=Symbol(\"_fd\"),AEe=Symbol(\"_finished\"),O0=Symbol(\"_flags\"),Cq=Symbol(\"_flush\"),vq=Symbol(\"_handleChunk\"),Sq=Symbol(\"_makeBuf\"),dR=Symbol(\"_mode\"),AR=Symbol(\"_needDrain\"),UI=Symbol(\"_onerror\"),qI=Symbol(\"_onopen\"),wq=Symbol(\"_onread\"),MI=Symbol(\"_onwrite\"),L0=Symbol(\"_open\"),Kp=Symbol(\"_path\"),dm=Symbol(\"_pos\"),cA=Symbol(\"_queue\"),_I=Symbol(\"_read\"),pEe=Symbol(\"_readSize\"),N0=Symbol(\"_reading\"),pR=Symbol(\"_remain\"),hEe=Symbol(\"_size\"),hR=Symbol(\"_write\"),LI=Symbol(\"_writing\"),gR=Symbol(\"_defaultFlag\"),HI=Symbol(\"_errored\"),mR=class extends NEt{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!=\"string\")throw new TypeError(\"path must be a string\");this[HI]=!1,this[ni]=typeof r.fd==\"number\"?r.fd:null,this[Kp]=e,this[pEe]=r.readSize||16*1024*1024,this[N0]=!1,this[hEe]=typeof r.size==\"number\"?r.size:1/0,this[pR]=this[hEe],this[jI]=typeof r.autoClose==\"boolean\"?r.autoClose:!0,typeof this[ni]==\"number\"?this[_I]():this[L0]()}get fd(){return this[ni]}get path(){return this[Kp]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[L0](){Al.open(this[Kp],\"r\",(e,r)=>this[qI](e,r))}[qI](e,r){e?this[UI](e):(this[ni]=r,this.emit(\"open\",r),this[_I]())}[Sq](){return Buffer.allocUnsafe(Math.min(this[pEe],this[pR]))}[_I](){if(!this[N0]){this[N0]=!0;let e=this[Sq]();if(e.length===0)return process.nextTick(()=>this[wq](null,0,e));Al.read(this[ni],e,0,e.length,null,(r,s,a)=>this[wq](r,s,a))}}[wq](e,r,s){this[N0]=!1,e?this[UI](e):this[vq](r,s)&&this[_I]()}[Vu](){if(this[jI]&&typeof this[ni]==\"number\"){let e=this[ni];this[ni]=null,Al.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}[UI](e){this[N0]=!0,this[Vu](),this.emit(\"error\",e)}[vq](e,r){let s=!1;return this[pR]-=e,e>0&&(s=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[pR]<=0)&&(s=!1,this[Vu](),super.end()),s}emit(e,r){switch(e){case\"prefinish\":case\"finish\":break;case\"drain\":typeof this[ni]==\"number\"&&this[_I]();break;case\"error\":return this[HI]?void 0:(this[HI]=!0,super.emit(e,r));default:return super.emit(e,r)}}},Dq=class extends mR{[L0](){let e=!0;try{this[qI](null,Al.openSync(this[Kp],\"r\")),e=!1}finally{e&&this[Vu]()}}[_I](){let e=!0;try{if(!this[N0]){this[N0]=!0;do{let r=this[Sq](),s=r.length===0?0:Al.readSync(this[ni],r,0,r.length,null);if(!this[vq](s,r))break}while(!0);this[N0]=!1}e=!1}finally{e&&this[Vu]()}}[Vu](){if(this[jI]&&typeof this[ni]==\"number\"){let e=this[ni];this[ni]=null,Al.closeSync(e),this.emit(\"close\")}}},yR=class extends OEt{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[HI]=!1,this[LI]=!1,this[jv]=!1,this[AR]=!1,this[cA]=[],this[Kp]=e,this[ni]=typeof r.fd==\"number\"?r.fd:null,this[dR]=r.mode===void 0?438:r.mode,this[dm]=typeof r.start==\"number\"?r.start:null,this[jI]=typeof r.autoClose==\"boolean\"?r.autoClose:!0;let s=this[dm]!==null?\"r+\":\"w\";this[gR]=r.flags===void 0,this[O0]=this[gR]?s:r.flags,this[ni]===null&&this[L0]()}emit(e,r){if(e===\"error\"){if(this[HI])return;this[HI]=!0}return super.emit(e,r)}get fd(){return this[ni]}get path(){return this[Kp]}[UI](e){this[Vu](),this[LI]=!0,this.emit(\"error\",e)}[L0](){Al.open(this[Kp],this[O0],this[dR],(e,r)=>this[qI](e,r))}[qI](e,r){this[gR]&&this[O0]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[O0]=\"w\",this[L0]()):e?this[UI](e):(this[ni]=r,this.emit(\"open\",r),this[Cq]())}end(e,r){return e&&this.write(e,r),this[jv]=!0,!this[LI]&&!this[cA].length&&typeof this[ni]==\"number\"&&this[MI](null,0),this}write(e,r){return typeof e==\"string\"&&(e=Buffer.from(e,r)),this[jv]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[ni]===null||this[LI]||this[cA].length?(this[cA].push(e),this[AR]=!0,!1):(this[LI]=!0,this[hR](e),!0)}[hR](e){Al.write(this[ni],e,0,e.length,this[dm],(r,s)=>this[MI](r,s))}[MI](e,r){e?this[UI](e):(this[dm]!==null&&(this[dm]+=r),this[cA].length?this[Cq]():(this[LI]=!1,this[jv]&&!this[AEe]?(this[AEe]=!0,this[Vu](),this.emit(\"finish\")):this[AR]&&(this[AR]=!1,this.emit(\"drain\"))))}[Cq](){if(this[cA].length===0)this[jv]&&this[MI](null,0);else if(this[cA].length===1)this[hR](this[cA].pop());else{let e=this[cA];this[cA]=[],Bq(this[ni],e,this[dm],(r,s)=>this[MI](r,s))}}[Vu](){if(this[jI]&&typeof this[ni]==\"number\"){let e=this[ni];this[ni]=null,Al.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}},bq=class extends yR{[L0](){let e;if(this[gR]&&this[O0]===\"r+\")try{e=Al.openSync(this[Kp],this[O0],this[dR])}catch(r){if(r.code===\"ENOENT\")return this[O0]=\"w\",this[L0]();throw r}else e=Al.openSync(this[Kp],this[O0],this[dR]);this[qI](null,e)}[Vu](){if(this[jI]&&typeof this[ni]==\"number\"){let e=this[ni];this[ni]=null,Al.closeSync(e),this.emit(\"close\")}}[hR](e){let r=!0;try{this[MI](null,Al.writeSync(this[ni],e,0,e.length,this[dm])),r=!1}finally{if(r)try{this[Vu]()}catch{}}}};qv.ReadStream=mR;qv.ReadStreamSync=Dq;qv.WriteStream=yR;qv.WriteStreamSync=bq});var SR=L((ver,CEe)=>{\"use strict\";var LEt=ZT(),MEt=FI(),_Et=ye(\"events\"),UEt=pk(),HEt=1024*1024,jEt=KT(),gEe=zT(),qEt=q6(),Pq=Buffer.from([31,139]),_c=Symbol(\"state\"),mm=Symbol(\"writeEntry\"),Jp=Symbol(\"readEntry\"),xq=Symbol(\"nextEntry\"),dEe=Symbol(\"processEntry\"),Uc=Symbol(\"extendedHeader\"),Gv=Symbol(\"globalExtendedHeader\"),M0=Symbol(\"meta\"),mEe=Symbol(\"emitMeta\"),bi=Symbol(\"buffer\"),zp=Symbol(\"queue\"),ym=Symbol(\"ended\"),yEe=Symbol(\"emittedEnd\"),Em=Symbol(\"emit\"),pl=Symbol(\"unzip\"),ER=Symbol(\"consumeChunk\"),IR=Symbol(\"consumeChunkSub\"),kq=Symbol(\"consumeBody\"),EEe=Symbol(\"consumeMeta\"),IEe=Symbol(\"consumeHeader\"),CR=Symbol(\"consuming\"),Qq=Symbol(\"bufferConcat\"),Tq=Symbol(\"maybeEnd\"),Wv=Symbol(\"writing\"),_0=Symbol(\"aborted\"),wR=Symbol(\"onDone\"),Im=Symbol(\"sawValidEntry\"),BR=Symbol(\"sawNullBlock\"),vR=Symbol(\"sawEOF\"),GEt=t=>!0;CEe.exports=LEt(class extends _Et{constructor(e){e=e||{},super(e),this.file=e.file||\"\",this[Im]=null,this.on(wR,r=>{(this[_c]===\"begin\"||this[Im]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(wR,e.ondone):this.on(wR,r=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||HEt,this.filter=typeof e.filter==\"function\"?e.filter:GEt,this.writable=!0,this.readable=!1,this[zp]=new UEt,this[bi]=null,this[Jp]=null,this[mm]=null,this[_c]=\"begin\",this[M0]=\"\",this[Uc]=null,this[Gv]=null,this[ym]=!1,this[pl]=null,this[_0]=!1,this[BR]=!1,this[vR]=!1,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onentry==\"function\"&&this.on(\"entry\",e.onentry)}[IEe](e,r){this[Im]===null&&(this[Im]=!1);let s;try{s=new MEt(e,r,this[Uc],this[Gv])}catch(a){return this.warn(\"TAR_ENTRY_INVALID\",a)}if(s.nullBlock)this[BR]?(this[vR]=!0,this[_c]===\"begin\"&&(this[_c]=\"header\"),this[Em](\"eof\")):(this[BR]=!0,this[Em](\"nullBlock\"));else if(this[BR]=!1,!s.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:s});else if(!s.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:s});else{let a=s.type;if(/^(Symbolic)?Link$/.test(a)&&!s.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:s});else if(!/^(Symbolic)?Link$/.test(a)&&s.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:s});else{let n=this[mm]=new jEt(s,this[Uc],this[Gv]);if(!this[Im])if(n.remain){let c=()=>{n.invalid||(this[Im]=!0)};n.on(\"end\",c)}else this[Im]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Em](\"ignoredEntry\",n),this[_c]=\"ignore\",n.resume()):n.size>0&&(this[M0]=\"\",n.on(\"data\",c=>this[M0]+=c),this[_c]=\"meta\"):(this[Uc]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Em](\"ignoredEntry\",n),this[_c]=n.remain?\"ignore\":\"header\",n.resume()):(n.remain?this[_c]=\"body\":(this[_c]=\"header\",n.end()),this[Jp]?this[zp].push(n):(this[zp].push(n),this[xq]())))}}}[dEe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Jp]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",s=>this[xq]()),r=!1)):(this[Jp]=null,r=!1),r}[xq](){do;while(this[dEe](this[zp].shift()));if(!this[zp].length){let e=this[Jp];!e||e.flowing||e.size===e.remain?this[Wv]||this.emit(\"drain\"):e.once(\"drain\",s=>this.emit(\"drain\"))}}[kq](e,r){let s=this[mm],a=s.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return s.write(n),s.blockRemain||(this[_c]=\"header\",this[mm]=null,s.end()),n.length}[EEe](e,r){let s=this[mm],a=this[kq](e,r);return this[mm]||this[mEe](s),a}[Em](e,r,s){!this[zp].length&&!this[Jp]?this.emit(e,r,s):this[zp].push([e,r,s])}[mEe](e){switch(this[Em](\"meta\",this[M0]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[Uc]=gEe.parse(this[M0],this[Uc],!1);break;case\"GlobalExtendedHeader\":this[Gv]=gEe.parse(this[M0],this[Gv],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":this[Uc]=this[Uc]||Object.create(null),this[Uc].path=this[M0].replace(/\\0.*/,\"\");break;case\"NextFileHasLongLinkpath\":this[Uc]=this[Uc]||Object.create(null),this[Uc].linkpath=this[M0].replace(/\\0.*/,\"\");break;default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[_0]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e){if(this[_0])return;if(this[pl]===null&&e){if(this[bi]&&(e=Buffer.concat([this[bi],e]),this[bi]=null),e.length<Pq.length)return this[bi]=e,!0;for(let s=0;this[pl]===null&&s<Pq.length;s++)e[s]!==Pq[s]&&(this[pl]=!1);if(this[pl]===null){let s=this[ym];this[ym]=!1,this[pl]=new qEt.Unzip,this[pl].on(\"data\",n=>this[ER](n)),this[pl].on(\"error\",n=>this.abort(n)),this[pl].on(\"end\",n=>{this[ym]=!0,this[ER]()}),this[Wv]=!0;let a=this[pl][s?\"end\":\"write\"](e);return this[Wv]=!1,a}}this[Wv]=!0,this[pl]?this[pl].write(e):this[ER](e),this[Wv]=!1;let r=this[zp].length?!1:this[Jp]?this[Jp].flowing:!0;return!r&&!this[zp].length&&this[Jp].once(\"drain\",s=>this.emit(\"drain\")),r}[Qq](e){e&&!this[_0]&&(this[bi]=this[bi]?Buffer.concat([this[bi],e]):e)}[Tq](){if(this[ym]&&!this[yEe]&&!this[_0]&&!this[CR]){this[yEe]=!0;let e=this[mm];if(e&&e.blockRemain){let r=this[bi]?this[bi].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[bi]&&e.write(this[bi]),e.end()}this[Em](wR)}}[ER](e){if(this[CR])this[Qq](e);else if(!e&&!this[bi])this[Tq]();else{if(this[CR]=!0,this[bi]){this[Qq](e);let r=this[bi];this[bi]=null,this[IR](r)}else this[IR](e);for(;this[bi]&&this[bi].length>=512&&!this[_0]&&!this[vR];){let r=this[bi];this[bi]=null,this[IR](r)}this[CR]=!1}(!this[bi]||this[ym])&&this[Tq]()}[IR](e){let r=0,s=e.length;for(;r+512<=s&&!this[_0]&&!this[vR];)switch(this[_c]){case\"begin\":case\"header\":this[IEe](e,r),r+=512;break;case\"ignore\":case\"body\":r+=this[kq](e,r);break;case\"meta\":r+=this[EEe](e,r);break;default:throw new Error(\"invalid state: \"+this[_c])}r<s&&(this[bi]?this[bi]=Buffer.concat([e.slice(r),this[bi]]):this[bi]=e.slice(r))}end(e){this[_0]||(this[pl]?this[pl].end(e):(this[ym]=!0,this.write(e)))}})});var DR=L((Ser,SEe)=>{\"use strict\";var WEt=bI(),BEe=SR(),WI=ye(\"fs\"),YEt=GI(),wEe=ye(\"path\"),Rq=NI();SEe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=WEt(t);if(s.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!s.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&KEt(s,e),s.noResume||VEt(s),s.file&&s.sync?JEt(s):s.file?zEt(s,r):vEe(s)};var VEt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},KEt=(t,e)=>{let r=new Map(e.map(n=>[Rq(n),!0])),s=t.filter,a=(n,c)=>{let f=c||wEe.parse(n).root||\".\",p=n===f?!1:r.has(n)?r.get(n):a(wEe.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(Rq(n)):n=>a(Rq(n))},JEt=t=>{let e=vEe(t),r=t.file,s=!0,a;try{let n=WI.statSync(r),c=t.maxReadSize||16*1024*1024;if(n.size<c)e.end(WI.readFileSync(r));else{let f=0,p=Buffer.allocUnsafe(c);for(a=WI.openSync(r,\"r\");f<n.size;){let h=WI.readSync(a,p,0,c,f);f+=h,e.write(p.slice(0,h))}e.end()}s=!1}finally{if(s&&a)try{WI.closeSync(a)}catch{}}},zEt=(t,e)=>{let r=new BEe(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on(\"error\",f),r.on(\"end\",c),WI.stat(a,(p,h)=>{if(p)f(p);else{let E=new YEt.ReadStream(a,{readSize:s,size:h.size});E.on(\"error\",f),E.pipe(r)}})});return e?n.then(e,e):n},vEe=t=>new BEe(t)});var QEe=L((Der,kEe)=>{\"use strict\";var ZEt=bI(),bR=fR(),DEe=GI(),bEe=DR(),PEe=ye(\"path\");kEe.exports=(t,e,r)=>{if(typeof e==\"function\"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");e=Array.from(e);let s=ZEt(t);if(s.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!s.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return s.file&&s.sync?XEt(s,e):s.file?$Et(s,e,r):s.sync?eIt(s,e):tIt(s,e)};var XEt=(t,e)=>{let r=new bR.Sync(t),s=new DEe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(s),xEe(r,e)},$Et=(t,e,r)=>{let s=new bR(t),a=new DEe.WriteStream(t.file,{mode:t.mode||438});s.pipe(a);let n=new Promise((c,f)=>{a.on(\"error\",f),a.on(\"close\",c),s.on(\"error\",f)});return Fq(s,e),r?n.then(r,r):n},xEe=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?bEe({file:PEe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},Fq=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return bEe({file:PEe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>Fq(t,e));t.add(r)}t.end()},eIt=(t,e)=>{let r=new bR.Sync(t);return xEe(r,e),r},tIt=(t,e)=>{let r=new bR(t);return Fq(r,e),r}});var Nq=L((ber,MEe)=>{\"use strict\";var rIt=bI(),TEe=fR(),Xl=ye(\"fs\"),REe=GI(),FEe=DR(),NEe=ye(\"path\"),OEe=FI();MEe.exports=(t,e,r)=>{let s=rIt(t);if(!s.file)throw new TypeError(\"file is required\");if(s.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),s.sync?nIt(s,e):sIt(s,e,r)};var nIt=(t,e)=>{let r=new TEe.Sync(t),s=!0,a,n;try{try{a=Xl.openSync(t.file,\"r+\")}catch(p){if(p.code===\"ENOENT\")a=Xl.openSync(t.file,\"w+\");else throw p}let c=Xl.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;n<c.size;n+=512){for(let E=0,C=0;E<512;E+=C){if(C=Xl.readSync(a,f,E,f.length-E,n+E),n===0&&f[0]===31&&f[1]===139)throw new Error(\"cannot append to compressed archives\");if(!C)break e}let p=new OEe(f);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>c.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}s=!1,iIt(t,r,n,a,e)}finally{if(s)try{Xl.closeSync(a)}catch{}}},iIt=(t,e,r,s,a)=>{let n=new REe.WriteStreamSync(t.file,{fd:s,start:r});e.pipe(n),oIt(e,a)},sIt=(t,e,r)=>{e=Array.from(e);let s=new TEe(t),a=(c,f,p)=>{let h=(I,R)=>{I?Xl.close(c,N=>p(I)):p(null,R)},E=0;if(f===0)return h(null,0);let C=0,S=Buffer.alloc(512),P=(I,R)=>{if(I)return h(I);if(C+=R,C<512&&R)return Xl.read(c,S,C,S.length-C,E+C,P);if(E===0&&S[0]===31&&S[1]===139)return h(new Error(\"cannot append to compressed archives\"));if(C<512)return h(null,E);let N=new OEe(S);if(!N.cksumValid)return h(null,E);let U=512*Math.ceil(N.size/512);if(E+U+512>f||(E+=U+512,E>=f))return h(null,E);t.mtimeCache&&t.mtimeCache.set(N.path,N.mtime),C=0,Xl.read(c,S,0,512,E,P)};Xl.read(c,S,0,512,E,P)},n=new Promise((c,f)=>{s.on(\"error\",f);let p=\"r+\",h=(E,C)=>{if(E&&E.code===\"ENOENT\"&&p===\"r+\")return p=\"w+\",Xl.open(t.file,p,h);if(E)return f(E);Xl.fstat(C,(S,P)=>{if(S)return Xl.close(C,()=>f(S));a(C,P.size,(I,R)=>{if(I)return f(I);let N=new REe.WriteStream(t.file,{fd:C,start:R});s.pipe(N),N.on(\"error\",f),N.on(\"close\",c),LEe(s,e)})})};Xl.open(t.file,p,h)});return r?n.then(r,r):n},oIt=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?FEe({file:NEe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},LEe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return FEe({file:NEe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>LEe(t,e));t.add(r)}t.end()}});var UEe=L((Per,_Ee)=>{\"use strict\";var aIt=bI(),lIt=Nq();_Ee.exports=(t,e,r)=>{let s=aIt(t);if(!s.file)throw new TypeError(\"file is required\");if(s.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),cIt(s),lIt(s,e,r)};var cIt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,s)=>e(r,s)&&!(t.mtimeCache.get(r)>s.mtime):(r,s)=>!(t.mtimeCache.get(r)>s.mtime)}});var qEe=L((xer,jEe)=>{var{promisify:HEe}=ye(\"util\"),U0=ye(\"fs\"),uIt=t=>{if(!t)t={mode:511,fs:U0};else if(typeof t==\"object\")t={mode:511,fs:U0,...t};else if(typeof t==\"number\")t={mode:t,fs:U0};else if(typeof t==\"string\")t={mode:parseInt(t,8),fs:U0};else throw new TypeError(\"invalid options argument\");return t.mkdir=t.mkdir||t.fs.mkdir||U0.mkdir,t.mkdirAsync=HEe(t.mkdir),t.stat=t.stat||t.fs.stat||U0.stat,t.statAsync=HEe(t.stat),t.statSync=t.statSync||t.fs.statSync||U0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||U0.mkdirSync,t};jEe.exports=uIt});var WEe=L((ker,GEe)=>{var fIt=process.platform,{resolve:AIt,parse:pIt}=ye(\"path\"),hIt=t=>{if(/\\0/.test(t))throw Object.assign(new TypeError(\"path must be a string without null bytes\"),{path:t,code:\"ERR_INVALID_ARG_VALUE\"});if(t=AIt(t),fIt===\"win32\"){let e=/[*|\"<>?:]/,{root:r}=pIt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error(\"Illegal characters in path.\"),{path:t,code:\"EINVAL\"})}return t};GEe.exports=hIt});var zEe=L((Qer,JEe)=>{var{dirname:YEe}=ye(\"path\"),VEe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(s=>s.isDirectory()?r:void 0,s=>s.code===\"ENOENT\"?VEe(t,YEe(e),e):void 0),KEe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(s){return s.code===\"ENOENT\"?KEe(t,YEe(e),e):void 0}};JEe.exports={findMade:VEe,findMadeSync:KEe}});var Mq=L((Ter,XEe)=>{var{dirname:ZEe}=ye(\"path\"),Oq=(t,e,r)=>{e.recursive=!1;let s=ZEe(t);return s===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!==\"EISDIR\")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code===\"ENOENT\")return Oq(s,e).then(n=>Oq(t,e,n));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},Lq=(t,e,r)=>{let s=ZEe(t);if(e.recursive=!1,s===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!==\"EISDIR\")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code===\"ENOENT\")return Lq(t,e,Lq(s,e,r));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};XEe.exports={mkdirpManual:Oq,mkdirpManualSync:Lq}});var tIe=L((Rer,eIe)=>{var{dirname:$Ee}=ye(\"path\"),{findMade:gIt,findMadeSync:dIt}=zEe(),{mkdirpManual:mIt,mkdirpManualSync:yIt}=Mq(),EIt=(t,e)=>(e.recursive=!0,$Ee(t)===t?e.mkdirAsync(t,e):gIt(e,t).then(s=>e.mkdirAsync(t,e).then(()=>s).catch(a=>{if(a.code===\"ENOENT\")return mIt(t,e);throw a}))),IIt=(t,e)=>{if(e.recursive=!0,$Ee(t)===t)return e.mkdirSync(t,e);let s=dIt(e,t);try{return e.mkdirSync(t,e),s}catch(a){if(a.code===\"ENOENT\")return yIt(t,e);throw a}};eIe.exports={mkdirpNative:EIt,mkdirpNativeSync:IIt}});var sIe=L((Fer,iIe)=>{var rIe=ye(\"fs\"),CIt=process.version,_q=CIt.replace(/^v/,\"\").split(\".\"),nIe=+_q[0]>10||+_q[0]==10&&+_q[1]>=12,wIt=nIe?t=>t.mkdir===rIe.mkdir:()=>!1,BIt=nIe?t=>t.mkdirSync===rIe.mkdirSync:()=>!1;iIe.exports={useNative:wIt,useNativeSync:BIt}});var fIe=L((Ner,uIe)=>{var YI=qEe(),VI=WEe(),{mkdirpNative:oIe,mkdirpNativeSync:aIe}=tIe(),{mkdirpManual:lIe,mkdirpManualSync:cIe}=Mq(),{useNative:vIt,useNativeSync:SIt}=sIe(),KI=(t,e)=>(t=VI(t),e=YI(e),vIt(e)?oIe(t,e):lIe(t,e)),DIt=(t,e)=>(t=VI(t),e=YI(e),SIt(e)?aIe(t,e):cIe(t,e));KI.sync=DIt;KI.native=(t,e)=>oIe(VI(t),YI(e));KI.manual=(t,e)=>lIe(VI(t),YI(e));KI.nativeSync=(t,e)=>aIe(VI(t),YI(e));KI.manualSync=(t,e)=>cIe(VI(t),YI(e));uIe.exports=KI});var yIe=L((Oer,mIe)=>{\"use strict\";var Hc=ye(\"fs\"),Cm=ye(\"path\"),bIt=Hc.lchown?\"lchown\":\"chown\",PIt=Hc.lchownSync?\"lchownSync\":\"chownSync\",pIe=Hc.lchown&&!process.version.match(/v1[1-9]+\\./)&&!process.version.match(/v10\\.[6-9]/),AIe=(t,e,r)=>{try{return Hc[PIt](t,e,r)}catch(s){if(s.code!==\"ENOENT\")throw s}},xIt=(t,e,r)=>{try{return Hc.chownSync(t,e,r)}catch(s){if(s.code!==\"ENOENT\")throw s}},kIt=pIe?(t,e,r,s)=>a=>{!a||a.code!==\"EISDIR\"?s(a):Hc.chown(t,e,r,s)}:(t,e,r,s)=>s,Uq=pIe?(t,e,r)=>{try{return AIe(t,e,r)}catch(s){if(s.code!==\"EISDIR\")throw s;xIt(t,e,r)}}:(t,e,r)=>AIe(t,e,r),QIt=process.version,hIe=(t,e,r)=>Hc.readdir(t,e,r),TIt=(t,e)=>Hc.readdirSync(t,e);/^v4\\./.test(QIt)&&(hIe=(t,e,r)=>Hc.readdir(t,r));var PR=(t,e,r,s)=>{Hc[bIt](t,e,r,kIt(t,e,r,a=>{s(a&&a.code!==\"ENOENT\"?a:null)}))},gIe=(t,e,r,s,a)=>{if(typeof e==\"string\")return Hc.lstat(Cm.resolve(t,e),(n,c)=>{if(n)return a(n.code!==\"ENOENT\"?n:null);c.name=e,gIe(t,c,r,s,a)});if(e.isDirectory())Hq(Cm.resolve(t,e.name),r,s,n=>{if(n)return a(n);let c=Cm.resolve(t,e.name);PR(c,r,s,a)});else{let n=Cm.resolve(t,e.name);PR(n,r,s,a)}},Hq=(t,e,r,s)=>{hIe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return s();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return s(a)}if(a||!n.length)return PR(t,e,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return PR(t,e,r,s)}};n.forEach(h=>gIe(t,h,e,r,p))})},RIt=(t,e,r,s)=>{if(typeof e==\"string\")try{let a=Hc.lstatSync(Cm.resolve(t,e));a.name=e,e=a}catch(a){if(a.code===\"ENOENT\")return;throw a}e.isDirectory()&&dIe(Cm.resolve(t,e.name),r,s),Uq(Cm.resolve(t,e.name),r,s)},dIe=(t,e,r)=>{let s;try{s=TIt(t,{withFileTypes:!0})}catch(a){if(a.code===\"ENOENT\")return;if(a.code===\"ENOTDIR\"||a.code===\"ENOTSUP\")return Uq(t,e,r);throw a}return s&&s.length&&s.forEach(a=>RIt(t,a,e,r)),Uq(t,e,r)};mIe.exports=Hq;Hq.sync=dIe});var wIe=L((Ler,jq)=>{\"use strict\";var EIe=fIe(),jc=ye(\"fs\"),xR=ye(\"path\"),IIe=yIe(),Ku=TI(),kR=class extends Error{constructor(e,r){super(\"Cannot extract through symbolic link\"),this.path=r,this.symlink=e}get name(){return\"SylinkError\"}},QR=class extends Error{constructor(e,r){super(r+\": Cannot cd into '\"+e+\"'\"),this.path=e,this.code=r}get name(){return\"CwdError\"}},TR=(t,e)=>t.get(Ku(e)),Yv=(t,e,r)=>t.set(Ku(e),r),FIt=(t,e)=>{jc.stat(t,(r,s)=>{(r||!s.isDirectory())&&(r=new QR(t,r&&r.code||\"ENOTDIR\")),e(r)})};jq.exports=(t,e,r)=>{t=Ku(t);let s=e.umask,a=e.mode|448,n=(a&s)!==0,c=e.uid,f=e.gid,p=typeof c==\"number\"&&typeof f==\"number\"&&(c!==e.processUid||f!==e.processGid),h=e.preserve,E=e.unlink,C=e.cache,S=Ku(e.cwd),P=(N,U)=>{N?r(N):(Yv(C,t,!0),U&&p?IIe(U,c,f,W=>P(W)):n?jc.chmod(t,a,r):r())};if(C&&TR(C,t)===!0)return P();if(t===S)return FIt(t,P);if(h)return EIe(t,{mode:a}).then(N=>P(null,N),P);let R=Ku(xR.relative(S,t)).split(\"/\");RR(S,R,a,C,E,S,null,P)};var RR=(t,e,r,s,a,n,c,f)=>{if(!e.length)return f(null,c);let p=e.shift(),h=Ku(xR.resolve(t+\"/\"+p));if(TR(s,h))return RR(h,e,r,s,a,n,c,f);jc.mkdir(h,r,CIe(h,e,r,s,a,n,c,f))},CIe=(t,e,r,s,a,n,c,f)=>p=>{p?jc.lstat(t,(h,E)=>{if(h)h.path=h.path&&Ku(h.path),f(h);else if(E.isDirectory())RR(t,e,r,s,a,n,c,f);else if(a)jc.unlink(t,C=>{if(C)return f(C);jc.mkdir(t,r,CIe(t,e,r,s,a,n,c,f))});else{if(E.isSymbolicLink())return f(new kR(t,t+\"/\"+e.join(\"/\")));f(p)}}):(c=c||t,RR(t,e,r,s,a,n,c,f))},NIt=t=>{let e=!1,r=\"ENOTDIR\";try{e=jc.statSync(t).isDirectory()}catch(s){r=s.code}finally{if(!e)throw new QR(t,r)}};jq.exports.sync=(t,e)=>{t=Ku(t);let r=e.umask,s=e.mode|448,a=(s&r)!==0,n=e.uid,c=e.gid,f=typeof n==\"number\"&&typeof c==\"number\"&&(n!==e.processUid||c!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,C=Ku(e.cwd),S=N=>{Yv(E,t,!0),N&&f&&IIe.sync(N,n,c),a&&jc.chmodSync(t,s)};if(E&&TR(E,t)===!0)return S();if(t===C)return NIt(C),S();if(p)return S(EIe.sync(t,s));let I=Ku(xR.relative(C,t)).split(\"/\"),R=null;for(let N=I.shift(),U=C;N&&(U+=\"/\"+N);N=I.shift())if(U=Ku(xR.resolve(U)),!TR(E,U))try{jc.mkdirSync(U,s),R=R||U,Yv(E,U,!0)}catch{let te=jc.lstatSync(U);if(te.isDirectory()){Yv(E,U,!0);continue}else if(h){jc.unlinkSync(U),jc.mkdirSync(U,s),R=R||U,Yv(E,U,!0);continue}else if(te.isSymbolicLink())return new kR(U,U+\"/\"+I.join(\"/\"))}return S(R)}});var Gq=L((Mer,BIe)=>{var qq=Object.create(null),{hasOwnProperty:OIt}=Object.prototype;BIe.exports=t=>(OIt.call(qq,t)||(qq[t]=t.normalize(\"NFKD\")),qq[t])});var bIe=L((_er,DIe)=>{var vIe=ye(\"assert\"),LIt=Gq(),MIt=NI(),{join:SIe}=ye(\"path\"),_It=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,UIt=_It===\"win32\";DIe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split(\"/\").slice(0,-1).reduce((C,S)=>(C.length&&(S=SIe(C[C.length-1],S)),C.push(S||\"/\"),C),[]),s=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error(\"function does not have any path reservations\");return{paths:E.paths.map(C=>t.get(C)),dirs:[...E.dirs].map(C=>t.get(C))}},n=h=>{let{paths:E,dirs:C}=a(h);return E.every(S=>S[0]===h)&&C.every(S=>S[0]instanceof Set&&S[0].has(h))},c=h=>s.has(h)||!n(h)?!1:(s.add(h),h(()=>f(h)),!0),f=h=>{if(!s.has(h))return!1;let{paths:E,dirs:C}=e.get(h),S=new Set;return E.forEach(P=>{let I=t.get(P);vIe.equal(I[0],h),I.length===1?t.delete(P):(I.shift(),typeof I[0]==\"function\"?S.add(I[0]):I[0].forEach(R=>S.add(R)))}),C.forEach(P=>{let I=t.get(P);vIe(I[0]instanceof Set),I[0].size===1&&I.length===1?t.delete(P):I[0].size===1?(I.shift(),S.add(I[0])):I[0].delete(h)}),s.delete(h),S.forEach(P=>c(P)),!0};return{check:n,reserve:(h,E)=>{h=UIt?[\"win32 parallelization disabled\"]:h.map(S=>LIt(MIt(SIe(S))).toLowerCase());let C=new Set(h.map(S=>r(S)).reduce((S,P)=>S.concat(P)));return e.set(E,{dirs:C,paths:h}),h.forEach(S=>{let P=t.get(S);P?P.push(E):t.set(S,[E])}),C.forEach(S=>{let P=t.get(S);P?P[P.length-1]instanceof Set?P[P.length-1].add(E):P.push(new Set([E])):t.set(S,[new Set([E])])}),c(E)}}}});var kIe=L((Uer,xIe)=>{var HIt=process.platform,jIt=HIt===\"win32\",qIt=global.__FAKE_TESTING_FS__||ye(\"fs\"),{O_CREAT:GIt,O_TRUNC:WIt,O_WRONLY:YIt,UV_FS_O_FILEMAP:PIe=0}=qIt.constants,VIt=jIt&&!!PIe,KIt=512*1024,JIt=PIe|WIt|GIt|YIt;xIe.exports=VIt?t=>t<KIt?JIt:\"w\":()=>\"w\"});var $q=L((Her,GIe)=>{\"use strict\";var zIt=ye(\"assert\"),ZIt=SR(),Mn=ye(\"fs\"),XIt=GI(),Zp=ye(\"path\"),HIe=wIe(),QIe=$6(),$It=bIe(),eCt=eq(),$l=TI(),tCt=NI(),rCt=Gq(),TIe=Symbol(\"onEntry\"),Vq=Symbol(\"checkFs\"),RIe=Symbol(\"checkFs2\"),OR=Symbol(\"pruneCache\"),Kq=Symbol(\"isReusable\"),qc=Symbol(\"makeFs\"),Jq=Symbol(\"file\"),zq=Symbol(\"directory\"),LR=Symbol(\"link\"),FIe=Symbol(\"symlink\"),NIe=Symbol(\"hardlink\"),OIe=Symbol(\"unsupported\"),LIe=Symbol(\"checkPath\"),H0=Symbol(\"mkdir\"),Xo=Symbol(\"onError\"),FR=Symbol(\"pending\"),MIe=Symbol(\"pend\"),JI=Symbol(\"unpend\"),Wq=Symbol(\"ended\"),Yq=Symbol(\"maybeClose\"),Zq=Symbol(\"skip\"),Vv=Symbol(\"doChown\"),Kv=Symbol(\"uid\"),Jv=Symbol(\"gid\"),zv=Symbol(\"checkedCwd\"),jIe=ye(\"crypto\"),qIe=kIe(),nCt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Zv=nCt===\"win32\",iCt=(t,e)=>{if(!Zv)return Mn.unlink(t,e);let r=t+\".DELETE.\"+jIe.randomBytes(16).toString(\"hex\");Mn.rename(t,r,s=>{if(s)return e(s);Mn.unlink(r,e)})},sCt=t=>{if(!Zv)return Mn.unlinkSync(t);let e=t+\".DELETE.\"+jIe.randomBytes(16).toString(\"hex\");Mn.renameSync(t,e),Mn.unlinkSync(e)},_Ie=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,UIe=t=>rCt(tCt($l(t))).toLowerCase(),oCt=(t,e)=>{e=UIe(e);for(let r of t.keys()){let s=UIe(r);(s===e||s.indexOf(e+\"/\")===0)&&t.delete(r)}},aCt=t=>{for(let e of t.keys())t.delete(e)},Xv=class extends ZIt{constructor(e){if(e||(e={}),e.ondone=r=>{this[Wq]=!0,this[Yq]()},super(e),this[zv]=!1,this.reservations=$It(),this.transform=typeof e.transform==\"function\"?e.transform:null,this.writable=!0,this.readable=!1,this[FR]=0,this[Wq]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid==\"number\"||typeof e.gid==\"number\"){if(typeof e.uid!=\"number\"||typeof e.gid!=\"number\")throw new TypeError(\"cannot set owner without number uid and gid\");if(e.preserveOwner)throw new TypeError(\"cannot preserve owner in archive and also set owner explicitly\");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!=\"number\"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Zv,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=$l(Zp.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask==\"number\"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on(\"entry\",r=>this[TIe](r))}warn(e,r,s={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(s.recoverable=!1),super.warn(e,r,s)}[Yq](){this[Wq]&&this[FR]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\"))}[LIe](e){if(this.strip){let r=$l(e.path).split(\"/\");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join(\"/\"),e.type===\"Link\"){let s=$l(e.linkpath).split(\"/\");if(s.length>=this.strip)e.linkpath=s.slice(this.strip).join(\"/\");else return!1}}if(!this.preservePaths){let r=$l(e.path),s=r.split(\"/\");if(s.includes(\"..\")||Zv&&/^[a-z]:\\.\\.$/i.test(s[0]))return this.warn(\"TAR_ENTRY_ERROR\",\"path contains '..'\",{entry:e,path:r}),!1;let[a,n]=eCt(r);a&&(e.path=n,this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Zp.isAbsolute(e.path)?e.absolute=$l(Zp.resolve(e.path)):e.absolute=$l(Zp.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+\"/\")!==0&&e.absolute!==this.cwd)return this.warn(\"TAR_ENTRY_ERROR\",\"path escaped extraction target\",{entry:e,path:$l(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!==\"Directory\"&&e.type!==\"GNUDumpDir\")return!1;if(this.win32){let{root:r}=Zp.win32.parse(e.absolute);e.absolute=r+QIe.encode(e.absolute.substr(r.length));let{root:s}=Zp.win32.parse(e.path);e.path=s+QIe.encode(e.path.substr(s.length))}return!0}[TIe](e){if(!this[LIe](e))return e.resume();switch(zIt.equal(typeof e.absolute,\"string\"),e.type){case\"Directory\":case\"GNUDumpDir\":e.mode&&(e.mode=e.mode|448);case\"File\":case\"OldFile\":case\"ContiguousFile\":case\"Link\":case\"SymbolicLink\":return this[Vq](e);case\"CharacterDevice\":case\"BlockDevice\":case\"FIFO\":default:return this[OIe](e)}}[Xo](e,r){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:r}),this[JI](),r.resume())}[H0](e,r,s){HIe($l(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},s)}[Vv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid==\"number\"&&e.uid!==this.processUid||typeof e.gid==\"number\"&&e.gid!==this.processGid)||typeof this.uid==\"number\"&&this.uid!==this.processUid||typeof this.gid==\"number\"&&this.gid!==this.processGid}[Kv](e){return _Ie(this.uid,e.uid,this.processUid)}[Jv](e){return _Ie(this.gid,e.gid,this.processGid)}[Jq](e,r){let s=e.mode&4095||this.fmode,a=new XIt.WriteStream(e.absolute,{flags:qIe(e.size),mode:s,autoClose:!1});a.on(\"error\",p=>{a.fd&&Mn.close(a.fd,()=>{}),a.write=()=>!0,this[Xo](p,e),r()});let n=1,c=p=>{if(p){a.fd&&Mn.close(a.fd,()=>{}),this[Xo](p,e),r();return}--n===0&&Mn.close(a.fd,h=>{h?this[Xo](h,e):this[JI](),r()})};a.on(\"finish\",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let C=e.atime||new Date,S=e.mtime;Mn.futimes(E,C,S,P=>P?Mn.utimes(h,C,S,I=>c(I&&P)):c())}if(this[Vv](e)){n++;let C=this[Kv](e),S=this[Jv](e);Mn.fchown(E,C,S,P=>P?Mn.chown(h,C,S,I=>c(I&&P)):c())}c()});let f=this.transform&&this.transform(e)||e;f!==e&&(f.on(\"error\",p=>{this[Xo](p,e),r()}),e.pipe(f)),f.pipe(a)}[zq](e,r){let s=e.mode&4095||this.dmode;this[H0](e.absolute,s,a=>{if(a){this[Xo](a,e),r();return}let n=1,c=f=>{--n===0&&(r(),this[JI](),e.resume())};e.mtime&&!this.noMtime&&(n++,Mn.utimes(e.absolute,e.atime||new Date,e.mtime,c)),this[Vv](e)&&(n++,Mn.chown(e.absolute,this[Kv](e),this[Jv](e),c)),c()})}[OIe](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[FIe](e,r){this[LR](e,e.linkpath,\"symlink\",r)}[NIe](e,r){let s=$l(Zp.resolve(this.cwd,e.linkpath));this[LR](e,s,\"link\",r)}[MIe](){this[FR]++}[JI](){this[FR]--,this[Yq]()}[Zq](e){this[JI](),e.resume()}[Kq](e,r){return e.type===\"File\"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!Zv}[Vq](e){this[MIe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,s=>this[RIe](e,s))}[OR](e){e.type===\"SymbolicLink\"?aCt(this.dirCache):e.type!==\"Directory\"&&oCt(this.dirCache,e.absolute)}[RIe](e,r){this[OR](e);let s=f=>{this[OR](e),r(f)},a=()=>{this[H0](this.cwd,this.dmode,f=>{if(f){this[Xo](f,e),s();return}this[zv]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let f=$l(Zp.dirname(e.absolute));if(f!==this.cwd)return this[H0](f,this.dmode,p=>{if(p){this[Xo](p,e),s();return}c()})}c()},c=()=>{Mn.lstat(e.absolute,(f,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[Zq](e),s();return}if(f||this[Kq](e,p))return this[qc](null,e,s);if(p.isDirectory()){if(e.type===\"Directory\"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=C=>this[qc](C,e,s);return h?Mn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return Mn.rmdir(e.absolute,h=>this[qc](h,e,s))}if(e.absolute===this.cwd)return this[qc](null,e,s);iCt(e.absolute,h=>this[qc](h,e,s))})};this[zv]?n():a()}[qc](e,r,s){if(e){this[Xo](e,r),s();return}switch(r.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[Jq](r,s);case\"Link\":return this[NIe](r,s);case\"SymbolicLink\":return this[FIe](r,s);case\"Directory\":case\"GNUDumpDir\":return this[zq](r,s)}}[LR](e,r,s,a){Mn[s](r,e.absolute,n=>{n?this[Xo](n,e):(this[JI](),e.resume()),a()})}},NR=t=>{try{return[null,t()]}catch(e){return[e,null]}},Xq=class extends Xv{[qc](e,r){return super[qc](e,r,()=>{})}[Vq](e){if(this[OR](e),!this[zv]){let n=this[H0](this.cwd,this.dmode);if(n)return this[Xo](n,e);this[zv]=!0}if(e.absolute!==this.cwd){let n=$l(Zp.dirname(e.absolute));if(n!==this.cwd){let c=this[H0](n,this.dmode);if(c)return this[Xo](c,e)}}let[r,s]=NR(()=>Mn.lstatSync(e.absolute));if(s&&(this.keep||this.newer&&s.mtime>e.mtime))return this[Zq](e);if(r||this[Kq](e,s))return this[qc](null,e);if(s.isDirectory()){if(e.type===\"Directory\"){let c=!this.noChmod&&e.mode&&(s.mode&4095)!==e.mode,[f]=c?NR(()=>{Mn.chmodSync(e.absolute,e.mode)}):[];return this[qc](f,e)}let[n]=NR(()=>Mn.rmdirSync(e.absolute));this[qc](n,e)}let[a]=e.absolute===this.cwd?[]:NR(()=>sCt(e.absolute));this[qc](a,e)}[Jq](e,r){let s=e.mode&4095||this.fmode,a=f=>{let p;try{Mn.closeSync(n)}catch(h){p=h}(f||p)&&this[Xo](f||p,e),r()},n;try{n=Mn.openSync(e.absolute,qIe(e.size),s)}catch(f){return a(f)}let c=this.transform&&this.transform(e)||e;c!==e&&(c.on(\"error\",f=>this[Xo](f,e)),e.pipe(c)),c.on(\"data\",f=>{try{Mn.writeSync(n,f,0,f.length)}catch(p){a(p)}}),c.on(\"end\",f=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{Mn.futimesSync(n,h,E)}catch(C){try{Mn.utimesSync(e.absolute,h,E)}catch{p=C}}}if(this[Vv](e)){let h=this[Kv](e),E=this[Jv](e);try{Mn.fchownSync(n,h,E)}catch(C){try{Mn.chownSync(e.absolute,h,E)}catch{p=p||C}}}a(p)})}[zq](e,r){let s=e.mode&4095||this.dmode,a=this[H0](e.absolute,s);if(a){this[Xo](a,e),r();return}if(e.mtime&&!this.noMtime)try{Mn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[Vv](e))try{Mn.chownSync(e.absolute,this[Kv](e),this[Jv](e))}catch{}r(),e.resume()}[H0](e,r){try{return HIe.sync($l(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(s){return s}}[LR](e,r,s,a){try{Mn[s+\"Sync\"](r,e.absolute),a(),e.resume()}catch(n){return this[Xo](n,e)}}};Xv.Sync=Xq;GIe.exports=Xv});var JIe=L((jer,KIe)=>{\"use strict\";var lCt=bI(),MR=$q(),YIe=ye(\"fs\"),VIe=GI(),WIe=ye(\"path\"),eG=NI();KIe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=lCt(t);if(s.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!s.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&cCt(s,e),s.file&&s.sync?uCt(s):s.file?fCt(s,r):s.sync?ACt(s):pCt(s)};var cCt=(t,e)=>{let r=new Map(e.map(n=>[eG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||WIe.parse(n).root||\".\",p=n===f?!1:r.has(n)?r.get(n):a(WIe.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(eG(n)):n=>a(eG(n))},uCt=t=>{let e=new MR.Sync(t),r=t.file,s=YIe.statSync(r),a=t.maxReadSize||16*1024*1024;new VIe.ReadStreamSync(r,{readSize:a,size:s.size}).pipe(e)},fCt=(t,e)=>{let r=new MR(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on(\"error\",f),r.on(\"close\",c),YIe.stat(a,(p,h)=>{if(p)f(p);else{let E=new VIe.ReadStream(a,{readSize:s,size:h.size});E.on(\"error\",f),E.pipe(r)}})});return e?n.then(e,e):n},ACt=t=>new MR.Sync(t),pCt=t=>new MR(t)});var zIe=L(xs=>{\"use strict\";xs.c=xs.create=QEe();xs.r=xs.replace=Nq();xs.t=xs.list=DR();xs.u=xs.update=UEe();xs.x=xs.extract=JIe();xs.Pack=fR();xs.Unpack=$q();xs.Parse=SR();xs.ReadEntry=KT();xs.WriteEntry=uq();xs.Header=FI();xs.Pax=zT();xs.types=Y6()});var tG,ZIe,j0,$v,eS,XIe=It(()=>{tG=et(Md()),ZIe=ye(\"worker_threads\"),j0=Symbol(\"kTaskInfo\"),$v=class{constructor(e,r){this.fn=e;this.limit=(0,tG.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},eS=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,tG.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new ZIe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return e.on(\"message\",r=>{if(!e[j0])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");e[j0].resolve(r),e[j0]=null,e.unref(),this.workers.push(e)}),e.on(\"error\",r=>{e[j0]?.reject(r),e[j0]=null}),e.on(\"exit\",r=>{r!==0&&e[j0]?.reject(new Error(`Worker exited with code ${r}`)),e[j0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[j0]={resolve:s,reject:a},r.postMessage(e)})})}}});var eCe=L((Yer,$Ie)=>{var rG;$Ie.exports.getContent=()=>(typeof rG>\"u\"&&(rG=ye(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),rG)});var hs={};Vt(hs,{convertToZip:()=>mCt,convertToZipWorker:()=>sG,extractArchiveTo:()=>sCe,getDefaultTaskPool:()=>nCe,getTaskPoolForConfiguration:()=>iCe,makeArchiveFromDirectory:()=>dCt});function hCt(t,e){switch(t){case\"async\":return new $v(sG,{poolSize:e});case\"workers\":return new eS((0,iG.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function nCe(){return typeof nG>\"u\"&&(nG=hCt(\"workers\",As.availableParallelism())),nG}function iCe(t){return typeof t>\"u\"?nCe():Vl(gCt,t,()=>{let e=t.get(\"taskPoolMode\"),r=t.get(\"taskPoolConcurrency\");switch(e){case\"async\":return new $v(sG,{poolSize:r});case\"workers\":return new eS((0,iG.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function sG(t){let{tmpFile:e,tgz:r,compressionLevel:s,extractBufferOpts:a}=t,n=new ps(e,{create:!0,level:s,stats:el.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await sCe(c,n,a),n.saveAndClose(),e}async function dCt(t,{baseFs:e=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new ps(null,{level:s});else{let f=await le.mktempPromise(),p=K.join(f,\"archive.zip\");n=new ps(p,{create:!0,level:s})}let c=K.resolve(vt.root,r);return await n.copyPromise(c,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function mCt(t,e={}){let r=await le.mktempPromise(),s=K.join(r,\"archive.zip\"),a=e.compressionLevel??e.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??iCe(e.configuration)).run({tmpFile:s,tgz:t,compressionLevel:a,extractBufferOpts:n}),new ps(s,{level:e.compressionLevel})}async function*yCt(t){let e=new rCe.default.Parse,r=new tCe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on(\"entry\",s=>{r.write(s)}),e.on(\"error\",s=>{r.destroy(s)}),e.on(\"close\",()=>{r.destroyed||r.end()}),e.end(t);for await(let s of r){let a=s;yield a,a.resume()}}async function sCe(t,e,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let c=n.path.split(/\\//g);return!!(c.some(f=>f===\"..\")||c.length<=r)}for await(let n of yCt(t)){if(a(n))continue;let c=K.normalize(ue.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(c.length<=r)continue;let f=c.slice(r).join(\"/\"),p=K.join(s,f),h=420;switch((n.type===\"Directory\"||(n.mode??0)&73)&&(h|=73),n.type){case\"Directory\":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,ui.SAFE_TIME,ui.SAFE_TIME);break;case\"OldFile\":case\"File\":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),e.writeFileSync(p,await WE(n),{mode:h}),e.utimesSync(p,ui.SAFE_TIME,ui.SAFE_TIME);break;case\"SymbolicLink\":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,ui.SAFE_TIME,ui.SAFE_TIME);break}}return e}var tCe,rCe,iG,nG,gCt,oCe=It(()=>{Ve();bt();rA();tCe=ye(\"stream\"),rCe=et(zIe());XIe();kc();iG=et(eCe());gCt=new WeakMap});var lCe=L((oG,aCe)=>{(function(t,e){typeof oG==\"object\"?aCe.exports=e():typeof define==\"function\"&&define.amd?define(e):t.treeify=e()})(oG,function(){function t(a,n){var c=n?\"\\u2514\":\"\\u251C\";return a?c+=\"\\u2500 \":c+=\"\\u2500\\u2500\\u2510\",c}function e(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]==\"function\"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C=\"\",S=0,P,I,R=f.slice(0);if(R.push([n,c])&&f.length>0&&(f.forEach(function(U,W){W>0&&(C+=(U[1]?\" \":\"\\u2502\")+\"  \"),!I&&U[0]===n&&(I=!0)}),C+=t(a,c)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(C+=\": \"+n),I&&(C+=\" (circular ref.)\"),E(C)),!I&&typeof n==\"object\"){var N=e(n,h);N.forEach(function(U){P=++S===N.length,r(U,n[U],P,R,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!=\"function\"?c:!1;r(\".\",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f=\"\";return r(\".\",a,!1,[],n,c,function(p){f+=p+`\n`}),f},s})});var ks={};Vt(ks,{emitList:()=>ECt,emitTree:()=>ACe,treeNodeToJson:()=>fCe,treeNodeToTreeify:()=>uCe});function uCe(t,{configuration:e}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,P=[];typeof E<\"u\"&&P.push(zd(e,E,2)),typeof C<\"u\"&&P.push(Ut(e,C[0],C[1])),P.length===0&&P.push(zd(e,`${p}`,2));let I=P.join(\": \").trim(),R=`\\0${s++}\\0`,N=c[`${R}${I}`]={};typeof S<\"u\"&&a(S,N)}};if(typeof t.children>\"u\")throw new Error(\"The root node must only contain children\");return a(t.children,r),r}function fCe(t){let e=r=>{if(typeof r.children>\"u\"){if(typeof r.value>\"u\")throw new Error(\"Assertion failed: Expected a value to be set if the children are missing\");return Zd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[ICt(n)]=e(c));return typeof r.value>\"u\"?a:{value:Zd(r.value[0],r.value[1]),children:a}};return e(t)}function ECt(t,{configuration:e,stdout:r,json:s}){let a=t.map(n=>({value:n}));ACe({children:a},{configuration:e,stdout:r,json:s})}function ACe(t,{configuration:e,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of c)f&&r.write(`${JSON.stringify(fCe(f))}\n`);return}let n=(0,cCe.asTree)(uCe(t,{configuration:e}),!1,!1);if(n=n.replace(/\\0[0-9]+\\0/g,\"\"),a>=1&&(n=n.replace(/^([├└]─)/gm,`\\u2502\n$1`).replace(/^│\\n/,\"\")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\\n]+\\n)(([│ ]).{2}[├└].{2}[^\\n]*\\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3  \\u2502 \n$2`).replace(/^│\\n/,\"\");if(a>=3)throw new Error(\"Only the first two levels are accepted by treeUtils.emitTree\");r.write(n)}function ICt(t){return typeof t==\"string\"?t.replace(/^\\0[0-9]+\\0/,\"\"):t}var cCe,pCe=It(()=>{cCe=et(lCe());Qc()});var _R,hCe=It(()=>{_R=class{constructor(e){this.releaseFunction=e;this.map=new Map}addOrCreate(e,r){let s=this.map.get(e);if(typeof s<\"u\"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(e)}`);return s.refCount++,{value:s.value,release:()=>this.release(e)}}else{let a=r();return this.map.set(e,{refCount:1,value:a}),{value:a,release:()=>this.release(e)}}}release(e){let r=this.map.get(e);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(e)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(e)}`);s==1?(this.map.delete(e),this.releaseFunction(r.value)):r.refCount--}}});function tS(t){let e=t.match(CCt);if(!e?.groups)throw new Error(\"Assertion failed: Expected the checksum to match the requested pattern\");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var gCe,aG,lG,UR,Jr,CCt,cG=It(()=>{Ve();bt();bt();rA();gCe=ye(\"crypto\"),aG=et(ye(\"fs\"));hCe();Fc();I0();kc();Yo();lG=YE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),UR=YE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Jr=class t{constructor(e,{configuration:r,immutable:s=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new _R(e=>{e.discardAndClose()});this.cacheId=`-${(0,gCe.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=t.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(e,{immutable:r,check:s}={}){let a=new t(e.get(\"cacheFolder\"),{configuration:e,immutable:r,check:s});return await a.setup(),a}static getCacheKey(e){let r=e.get(\"compressionLevel\"),s=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[UR,s].join(\"\"),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get(\"enableMirror\"))return null;let e=`${this.configuration.get(\"globalFolder\")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${nI(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=tS(r).hash.slice(0,10);return`${nI(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:s}=tS(e);if(r===null||r<lG)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<UR&&a===\"always\"||s!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(e,r){return this.mirrorCwd===null?K.resolve(this.cwd,this.getVersionFilename(e)):r===null?K.resolve(this.cwd,this.getVersionFilename(e)):K.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?K.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await le.existsPromise(this.cwd))throw new Yt(56,\"Cache path does not exist.\")}else{await le.mkdirPromise(this.cwd,{recursive:!0});let e=K.resolve(this.cwd,\".gitignore\");await le.changeFilePromise(e,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await le.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:s,onMiss:a,loader:n,...c}){let f=this.getLocatorMirrorPath(e),p=new Yn,h=()=>{let pe=new ps,Be=K.join(vt.root,Z8(e));return pe.mkdirSync(Be,{recursive:!0}),pe.writeJsonSync(K.join(Be,Er.manifest),{name:cn(e),mocked:!0}),pe},E=async(pe,{isColdHit:Be,controlPath:Ce=null})=>{if(Ce===null&&c.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?tS(r).cacheKey:this.cacheKey,we=!c.skipIntegrityCheck||!r?`${g}/${await SQ(pe)}`:r;if(Ce!==null){let fe=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await SQ(Ce)}`:r;if(we!==fe)throw new Yt(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let Ee=null;switch(r!==null&&we!==r&&(this.check?Ee=\"throw\":tS(r).cacheKey!==tS(we).cacheKey?Ee=\"update\":Ee=this.configuration.get(\"checksumBehavior\")),Ee){case null:case\"update\":return{isValid:!0,hash:we};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new Yt(18,\"The remote archive doesn't match the expected checksum\")}},C=async pe=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,e)}`);let Be=await n(),Ce=Be.getRealPath();Be.saveAndClose(),await le.chmodPromise(Ce,420);let g=await E(pe,{controlPath:Ce,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},S=async()=>{if(f===null||!await le.existsPromise(f)){let pe=await n(),Be=pe.getRealPath();return pe.saveAndClose(),{source:\"loader\",path:Be}}return{source:\"mirror\",path:f}},P=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,e)}`);if(this.immutable)throw new Yt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}`);let{path:pe,source:Be}=await S(),{hash:Ce}=await E(pe,{isColdHit:!0}),g=this.getLocatorPath(e,Ce),we=[];Be!==\"mirror\"&&f!==null&&we.push(async()=>{let fe=`${f}${this.cacheId}`;await le.copyFilePromise(pe,fe,aG.default.constants.COPYFILE_FICLONE),await le.chmodPromise(fe,420),await le.renamePromise(fe,f)}),(!c.mirrorWriteOnly||f===null)&&we.push(async()=>{let fe=`${g}${this.cacheId}`;await le.copyFilePromise(pe,fe,aG.default.constants.COPYFILE_FICLONE),await le.chmodPromise(fe,420),await le.renamePromise(fe,g)});let Ee=c.mirrorWriteOnly?f??g:g;return await Promise.all(we.map(fe=>fe())),[!1,Ee,Ce]},I=async()=>{let Be=(async()=>{let Ce=c.unstablePackages?.has(e.locatorHash),g=Ce||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,we=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Ee=!!c.mockedPackages?.has(e.locatorHash)&&(!this.check||!we),fe=Ee||we,se=fe?s:a;if(se&&se(),fe){let X=null,De=g;if(!Ee)if(this.check)X=await C(De);else{let Re=await E(De,{isColdHit:!1});if(Re.isValid)X=Re.hash;else return P()}return[Ee,De,X]}else{if(this.immutable&&Ce)throw new Yt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}; consider defining ${he.pretty(this.configuration,\"supportedArchitectures\",he.Type.CODE)} to cache packages for multiple systems`);return P()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let pe;pe=this.mutexes.get(e.locatorHash);)await pe;let[R,N,U]=await I();R||this.markedFiles.add(N);let W=()=>this.refCountedZipFsCache.addOrCreate(N,()=>R?h():new ps(N,{baseFs:p,readOnly:!0})),te,ie=new oE(()=>p3(()=>(te=W(),te.value),pe=>`Failed to open the cache entry for ${Yr(this.configuration,e)}: ${pe}`),K),Ae=new Hf(N,{baseFs:ie,pathUtils:K}),ce=()=>{te?.release()},me=c.unstablePackages?.has(e.locatorHash)?null:U;return[Ae,ce,me]}},CCt=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var HR,dCe=It(()=>{HR=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(HR||{})});var wCt,zI,uG=It(()=>{bt();Bc();Np();Yo();wCt=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(t,e,r,s)=>`${r}#commit=${s}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(t,e,r=\"\",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(t,e,r=\"\",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\\/\\/[^/]+\\/(?:[^/]+\\/)*(?:@.+(?:\\/|(?:%2f)))?([^/]+)\\/(?:-|download)\\/\\1-[^/]+\\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.pkg\\.github\\.com\\/download\\/(?:@[^/]+)\\/(?:[^/]+)\\/(?:[^/]+)\\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.fontawesome\\.com\\/(?:@[^/]+)\\/([^/]+)\\/-\\/([^/]+)\\/\\1-\\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\\/\\/[^/]+\\/.*\\/(@[^/]+)\\/([^/]+)\\/-\\/\\1\\/\\2-(?:[.\\d\\w-]+)\\.tgz(?:#|$)/,(t,e)=>kQ({protocol:\"npm:\",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],zI=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let s=K.join(e.cwd,Er.lockfile);if(!le.existsSync(s))return;let a=await le.readFilePromise(s,\"utf8\"),n=ls(a);if(Object.hasOwn(n,\"__metadata\"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=ev(f);if(!p){r.reportWarning(14,`Failed to parse the string \"${f}\" into a proper descriptor`);continue}let h=ul(p.range)?On(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,R]of wCt){let N=C.match(I);if(N){S=R(E,...N);break}}if(!S){r.reportWarning(14,`${ri(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${C}\")`);continue}let P=h;try{let I=em(h.range),R=ev(I.selector,!0);R&&(P=R)}catch{}c.set(h.descriptorHash,Ys(P,S))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!this.resolutions)throw new Error(\"Assertion failed: The resolution store should have been setup\");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error(\"Assertion failed: The resolution should have been registered\");let n=V8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var uA,mCe=It(()=>{Fc();Fv();Qc();uA=class extends ho{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;YB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s==\"function\"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s==\"function\"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${s}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"redBright\")} This might be caused by packages being missing from the lockfile, in which case running \"yarn install\" might help.\n`))}formatNameWithHyperlink(r){return m6(r,{configuration:this.configuration,json:!1})}}});var ZI,fG=It(()=>{Yo();ZI=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(bQ(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error(\"The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){let a=s.project.storedResolutions.get(e.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(bQ(e).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.originalPackages.get(e.locatorHash);if(!s)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return s}}});function Xp(){}function BCt(t,e,r,s,a){for(var n=0,c=e.length,f=0,p=0;n<c;n++){var h=e[n];if(h.removed){if(h.value=t.join(s.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var C=e[n-1];e[n-1]=e[n],e[n]=C}}else{if(!h.added&&a){var E=r.slice(f,f+h.count);E=E.map(function(P,I){var R=s[p+I];return R.length>P.length?R:P}),h.value=t.join(E)}else h.value=t.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=e[c-1];return c>1&&typeof S.value==\"string\"&&(S.added||S.removed)&&t.equals(\"\",S.value)&&(e[c-2].value+=S.value,e.pop()),e}function vCt(t){return{newPos:t.newPos,components:t.components.slice(0)}}function SCt(t,e){if(typeof t==\"function\")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function ICe(t,e,r){return r=SCt(r,{ignoreWhitespace:!0}),dG.diff(t,e,r)}function DCt(t,e,r){return mG.diff(t,e,r)}function jR(t){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?jR=function(e){return typeof e}:jR=function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},jR(t)}function AG(t){return xCt(t)||kCt(t)||QCt(t)||TCt()}function xCt(t){if(Array.isArray(t))return pG(t)}function kCt(t){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(t))return Array.from(t)}function QCt(t,e){if(t){if(typeof t==\"string\")return pG(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r===\"Object\"&&t.constructor&&(r=t.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(t);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return pG(t,e)}}function pG(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,s=new Array(e);r<e;r++)s[r]=t[r];return s}function TCt(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function hG(t,e,r,s,a){e=e||[],r=r||[],s&&(t=s(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var c;if(RCt.call(t)===\"[object Array]\"){for(e.push(t),c=new Array(t.length),r.push(c),n=0;n<t.length;n+=1)c[n]=hG(t[n],e,r,s,a);return e.pop(),r.pop(),c}if(t&&t.toJSON&&(t=t.toJSON()),jR(t)===\"object\"&&t!==null){e.push(t),c={},r.push(c);var f=[],p;for(p in t)t.hasOwnProperty(p)&&f.push(p);for(f.sort(),n=0;n<f.length;n+=1)p=f[n],c[p]=hG(t[p],e,r,s,p);e.pop(),r.pop()}else c=t;return c}function CCe(t,e,r,s,a,n,c){c||(c={}),typeof c.context>\"u\"&&(c.context=4);var f=DCt(r,s,c);if(!f)return;f.push({value:\"\",lines:[]});function p(U){return U.map(function(W){return\" \"+W})}for(var h=[],E=0,C=0,S=[],P=1,I=1,R=function(W){var te=f[W],ie=te.lines||te.value.replace(/\\n$/,\"\").split(`\n`);if(te.lines=ie,te.added||te.removed){var Ae;if(!E){var ce=f[W-1];E=P,C=I,ce&&(S=c.context>0?p(ce.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(Ae=S).push.apply(Ae,AG(ie.map(function(fe){return(te.added?\"+\":\"-\")+fe}))),te.added?I+=ie.length:P+=ie.length}else{if(E)if(ie.length<=c.context*2&&W<f.length-2){var me;(me=S).push.apply(me,AG(p(ie)))}else{var pe,Be=Math.min(ie.length,c.context);(pe=S).push.apply(pe,AG(p(ie.slice(0,Be))));var Ce={oldStart:E,oldLines:P-E+Be,newStart:C,newLines:I-C+Be,lines:S};if(W>=f.length-2&&ie.length<=c.context){var g=/\\n$/.test(r),we=/\\n$/.test(s),Ee=ie.length==0&&S.length>Ce.oldLines;!g&&Ee&&r.length>0&&S.splice(Ce.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!Ee||!we)&&S.push(\"\\\\ No newline at end of file\")}h.push(Ce),E=0,C=0,S=[]}P+=ie.length,I+=ie.length}},N=0;N<f.length;N++)R(N);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var Btr,yCe,ECe,dG,mG,bCt,PCt,RCt,rS,gG,yG=It(()=>{Xp.prototype={diff:function(e,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s==\"function\"&&(a=s,s={}),this.options=s;var n=this;function c(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=e.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,e,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function P(){for(var R=-1*h;R<=h;R+=2){var N=void 0,U=C[R-1],W=C[R+1],te=(W?W.newPos:0)-R;U&&(C[R-1]=void 0);var ie=U&&U.newPos+1<f,Ae=W&&0<=te&&te<p;if(!ie&&!Ae){C[R]=void 0;continue}if(!ie||Ae&&U.newPos<W.newPos?(N=vCt(W),n.pushComponent(N.components,void 0,!0)):(N=U,N.newPos++,n.pushComponent(N.components,!0,void 0)),te=n.extractCommon(N,r,e,R),N.newPos+1>=f&&te+1>=p)return c(BCt(n,N.components,r,e,n.useLongestToken));C[R]=N}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();P()||R()},0)})();else for(;h<=E;){var I=P();if(I)return I}},pushComponent:function(e,r,s){var a=e[e.length-1];a&&a.added===r&&a.removed===s?e[e.length-1]={count:a.count+1,added:r,removed:s}:e.push({count:1,added:r,removed:s})},extractCommon:function(e,r,s,a){for(var n=r.length,c=s.length,f=e.newPos,p=f-a,h=0;f+1<n&&p+1<c&&this.equals(r[f+1],s[p+1]);)f++,p++,h++;return h&&e.components.push({count:h}),e.newPos=f,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],s=0;s<e.length;s++)e[s]&&r.push(e[s]);return r},castInput:function(e){return e},tokenize:function(e){return e.split(\"\")},join:function(e){return e.join(\"\")}};Btr=new Xp;yCe=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,ECe=/\\S/,dG=new Xp;dG.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!ECe.test(t)&&!ECe.test(e)};dG.tokenize=function(t){for(var e=t.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&yCe.test(e[r])&&yCe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};mG=new Xp;mG.tokenize=function(t){var e=[],r=t.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var s=0;s<r.length;s++){var a=r[s];s%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};bCt=new Xp;bCt.tokenize=function(t){return t.split(/(\\S.+?[.!?])(?=\\s+|$)/)};PCt=new Xp;PCt.tokenize=function(t){return t.split(/([{}:;,]|\\s+)/)};RCt=Object.prototype.toString,rS=new Xp;rS.useLongestToken=!0;rS.tokenize=mG.tokenize;rS.castInput=function(t){var e=this.options,r=e.undefinedReplacement,s=e.stringifyReplacer,a=s===void 0?function(n,c){return typeof c>\"u\"?r:c}:s;return typeof t==\"string\"?t:JSON.stringify(hG(t,null,null,a),a,\"  \")};rS.equals=function(t,e){return Xp.prototype.equals.call(rS,t.replace(/,([\\r\\n])/g,\"$1\"),e.replace(/,([\\r\\n])/g,\"$1\"))};gG=new Xp;gG.tokenize=function(t){return t.slice()};gG.join=gG.removeEmpty=function(t){return t}});var BCe=L((Str,wCe)=>{var FCt=xc(),NCt=aI(),OCt=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,LCt=/^\\w*$/;function MCt(t,e){if(FCt(t))return!1;var r=typeof t;return r==\"number\"||r==\"symbol\"||r==\"boolean\"||t==null||NCt(t)?!0:LCt.test(t)||!OCt.test(t)||e!=null&&t in Object(e)}wCe.exports=MCt});var DCe=L((Dtr,SCe)=>{var vCe=kk(),_Ct=\"Expected a function\";function EG(t,e){if(typeof t!=\"function\"||e!=null&&typeof e!=\"function\")throw new TypeError(_Ct);var r=function(){var s=arguments,a=e?e.apply(this,s):s[0],n=r.cache;if(n.has(a))return n.get(a);var c=t.apply(this,s);return r.cache=n.set(a,c)||n,c};return r.cache=new(EG.Cache||vCe),r}EG.Cache=vCe;SCe.exports=EG});var PCe=L((btr,bCe)=>{var UCt=DCe(),HCt=500;function jCt(t){var e=UCt(t,function(s){return r.size===HCt&&r.clear(),s}),r=e.cache;return e}bCe.exports=jCt});var IG=L((Ptr,xCe)=>{var qCt=PCe(),GCt=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,WCt=/\\\\(\\\\)?/g,YCt=qCt(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(\"\"),t.replace(GCt,function(r,s,a,n){e.push(a?n.replace(WCt,\"$1\"):s||r)}),e});xCe.exports=YCt});var wm=L((xtr,kCe)=>{var VCt=xc(),KCt=BCe(),JCt=IG(),zCt=Tv();function ZCt(t,e){return VCt(t)?t:KCt(t,e)?[t]:JCt(zCt(t))}kCe.exports=ZCt});var XI=L((ktr,QCe)=>{var XCt=aI(),$Ct=1/0;function ewt(t){if(typeof t==\"string\"||XCt(t))return t;var e=t+\"\";return e==\"0\"&&1/t==-$Ct?\"-0\":e}QCe.exports=ewt});var qR=L((Qtr,TCe)=>{var twt=wm(),rwt=XI();function nwt(t,e){e=twt(e,t);for(var r=0,s=e.length;t!=null&&r<s;)t=t[rwt(e[r++])];return r&&r==s?t:void 0}TCe.exports=nwt});var CG=L((Ttr,FCe)=>{var iwt=Yk(),swt=wm(),owt=NB(),RCe=Wl(),awt=XI();function lwt(t,e,r,s){if(!RCe(t))return t;e=swt(e,t);for(var a=-1,n=e.length,c=n-1,f=t;f!=null&&++a<n;){var p=awt(e[a]),h=r;if(p===\"__proto__\"||p===\"constructor\"||p===\"prototype\")return t;if(a!=c){var E=f[p];h=s?s(E,p,f):void 0,h===void 0&&(h=RCe(E)?E:owt(e[a+1])?[]:{})}iwt(f,p,h),f=f[p]}return t}FCe.exports=lwt});var OCe=L((Rtr,NCe)=>{var cwt=qR(),uwt=CG(),fwt=wm();function Awt(t,e,r){for(var s=-1,a=e.length,n={};++s<a;){var c=e[s],f=cwt(t,c);r(f,c)&&uwt(n,fwt(c,t),f)}return n}NCe.exports=Awt});var MCe=L((Ftr,LCe)=>{function pwt(t,e){return t!=null&&e in Object(t)}LCe.exports=pwt});var wG=L((Ntr,_Ce)=>{var hwt=wm(),gwt=TB(),dwt=xc(),mwt=NB(),ywt=Nk(),Ewt=XI();function Iwt(t,e,r){e=hwt(e,t);for(var s=-1,a=e.length,n=!1;++s<a;){var c=Ewt(e[s]);if(!(n=t!=null&&r(t,c)))break;t=t[c]}return n||++s!=a?n:(a=t==null?0:t.length,!!a&&ywt(a)&&mwt(c,a)&&(dwt(t)||gwt(t)))}_Ce.exports=Iwt});var HCe=L((Otr,UCe)=>{var Cwt=MCe(),wwt=wG();function Bwt(t,e){return t!=null&&wwt(t,e,Cwt)}UCe.exports=Bwt});var qCe=L((Ltr,jCe)=>{var vwt=OCe(),Swt=HCe();function Dwt(t,e){return vwt(t,e,function(r,s){return Swt(t,s)})}jCe.exports=Dwt});var VCe=L((Mtr,YCe)=>{var GCe=Yd(),bwt=TB(),Pwt=xc(),WCe=GCe?GCe.isConcatSpreadable:void 0;function xwt(t){return Pwt(t)||bwt(t)||!!(WCe&&t&&t[WCe])}YCe.exports=xwt});var zCe=L((_tr,JCe)=>{var kwt=Rk(),Qwt=VCe();function KCe(t,e,r,s,a){var n=-1,c=t.length;for(r||(r=Qwt),a||(a=[]);++n<c;){var f=t[n];e>0&&r(f)?e>1?KCe(f,e-1,r,s,a):kwt(a,f):s||(a[a.length]=f)}return a}JCe.exports=KCe});var XCe=L((Utr,ZCe)=>{var Twt=zCe();function Rwt(t){var e=t==null?0:t.length;return e?Twt(t,1):[]}ZCe.exports=Rwt});var BG=L((Htr,$Ce)=>{var Fwt=XCe(),Nwt=i3(),Owt=s3();function Lwt(t){return Owt(Nwt(t,void 0,Fwt),t+\"\")}$Ce.exports=Lwt});var vG=L((jtr,ewe)=>{var Mwt=qCe(),_wt=BG(),Uwt=_wt(function(t,e){return t==null?{}:Mwt(t,e)});ewe.exports=Uwt});var GR,twe=It(()=>{Fc();GR=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.resolver.bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){throw new Yt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(e,r,s,a){throw new Yt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async resolve(e,r){throw new Yt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var Wi,SG=It(()=>{Fc();Wi=class extends ho{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,s){return(typeof r==\"function\"?r:s)()}async startTimerPromise(e,r,s){return await(typeof r==\"function\"?r:s)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var rwe,$I,DG=It(()=>{bt();rwe=et(BQ());oI();tm();Qc();I0();Np();Yo();$I=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ht.tryFind(this.cwd)??new Ht,this.relativeCwd=K.relative(this.project.cwd,this.cwd)||vt.dot;let e=this.manifest.name?this.manifest.name:ba(null,`${this.computeCandidateName()}-${us(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=On(e,`${yi.protocol}${this.relativeCwd}`),this.anchoredLocator=Ys(e,`${yi.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,rwe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});s.sort(),await s.reduce(async(a,n)=>{let c=K.resolve(this.cwd,ue.toPortablePath(n)),f=await le.existsPromise(K.join(c,\"package.json\"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${rv(this.project.configuration,this)} (${Ut(this.project.configuration,K.join(this.cwd,Er.manifest),Ct.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return e}accepts(e){let r=e.indexOf(\":\"),s=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(s===yi.protocol&&K.normalize(a)===this.relativeCwd||s===yi.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=ul(a);return n?s===yi.protocol?n.test(this.manifest.version??\"0.0.0\"):this.project.configuration.get(\"enableTransparentWorkspaces\")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?\"root-workspace\":`${K.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:e=Ht.hardDependencies}={}){let r=new Set,s=a=>{for(let n of e)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ht.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)e.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&$B(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=K.join(this.cwd,Ht.fileName),s=`${JSON.stringify(e,null,this.manifest.indent)}\n`;await le.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=e}}});function Ywt({project:t,allDescriptors:e,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=new Map(t.workspaces.map(ce=>{let me=ce.anchoredLocator.locatorHash,pe=s.get(me);if(typeof pe>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[me,zB(pe)]})),W=()=>{let ce=le.mktempSync(),me=K.join(ce,\"stacktrace.log\"),pe=String(C.length+1).length,Be=C.map((Ce,g)=>`${`${g+1}.`.padStart(pe,\" \")} ${cl(Ce)}\n`).join(\"\");throw le.writeFileSync(me,Be),le.detachTemp(ce),new Yt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(me)}`)},te=ce=>{let me=r.get(ce.descriptorHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let pe=s.get(me);if(!pe)throw new Error(\"Assertion failed: The package could not be found\");return pe},ie=(ce,me,pe,{top:Be,optional:Ce})=>{C.length>1e3&&W(),C.push(me);let g=Ae(ce,me,pe,{top:Be,optional:Ce});return C.pop(),g},Ae=(ce,me,pe,{top:Be,optional:Ce})=>{if(Ce||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=s.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Yr(t.configuration,me)}) should have been registered`);let we=new Set,Ee=new Map,fe=[],se=[],X=[],De=[];for(let Re of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Re.identHash)&&g.locatorHash!==Be)continue;if(Tp(Re))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");h.delete(Re.descriptorHash);let gt=Ce;if(!gt){let ke=g.dependenciesMeta.get(cn(Re));if(typeof ke<\"u\"){let it=ke.get(null);typeof it<\"u\"&&it.optional&&(gt=!0)}}let j=r.get(Re.descriptorHash);if(!j)throw new Error(`Assertion failed: The resolution (${ri(t.configuration,Re)}) should have been registered`);let rt=U.get(j)||s.get(j);if(!rt)throw new Error(`Assertion failed: The package (${j}, resolved from ${ri(t.configuration,Re)}) should have been registered`);if(rt.peerDependencies.size===0){ie(Re,rt,new Map,{top:Be,optional:gt});continue}let Fe,Ne,Pe=new Set,Ye=new Map;fe.push(()=>{Fe=J8(Re,me.locatorHash),Ne=z8(rt,me.locatorHash),g.dependencies.set(Re.identHash,Fe),r.set(Fe.descriptorHash,Ne.locatorHash),e.set(Fe.descriptorHash,Fe),s.set(Ne.locatorHash,Ne),xp(R,Ne.locatorHash).add(Fe.descriptorHash),we.add(Ne.locatorHash)}),se.push(()=>{N.set(Ne.locatorHash,Ye);for(let ke of Ne.peerDependencies.values()){let _e=Vl(Ee,ke.identHash,()=>{let x=pe.get(ke.identHash)??null,w=g.dependencies.get(ke.identHash);return!w&&XB(me,ke)&&(ce.identHash===me.identHash?w=ce:(w=On(me,ce.range),e.set(w.descriptorHash,w),r.set(w.descriptorHash,me.locatorHash),h.delete(w.descriptorHash),x=null)),w||(w=On(ke,\"missing:\")),{subject:me,ident:ke,provided:w,root:!x,requests:new Map,hash:`p${us(me.locatorHash,ke.identHash).slice(0,5)}`}}).provided;if(_e.range===\"missing:\"&&Ne.dependencies.has(ke.identHash)){Ne.peerDependencies.delete(ke.identHash);continue}if(Ye.set(ke.identHash,{requester:Ne,descriptor:ke,meta:Ne.peerDependenciesMeta.get(cn(ke)),children:new Map}),Ne.dependencies.set(ke.identHash,_e),Tp(_e)){let x=r.get(_e.descriptorHash);xp(I,x).add(Ne.locatorHash)}S.set(_e.identHash,_e),_e.range===\"missing:\"&&Pe.add(_e.identHash)}Ne.dependencies=new Map(Ws(Ne.dependencies,([ke,it])=>cn(it)))}),X.push(()=>{if(!s.has(Ne.locatorHash))return;let ke=E.get(rt.locatorHash);typeof ke==\"number\"&&ke>=2&&W();let it=E.get(rt.locatorHash),_e=typeof it<\"u\"?it+1:1;E.set(rt.locatorHash,_e),ie(Fe,Ne,Ye,{top:Be,optional:gt}),E.set(rt.locatorHash,_e-1)}),De.push(()=>{let ke=r.get(Fe.descriptorHash);if(typeof ke>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let it=N.get(ke);if(typeof it>\"u\")throw new Error(\"Assertion failed: Expected the peer requests to be registered\");for(let _e of Ee.values()){let x=it.get(_e.ident.identHash);x&&(_e.requests.set(Fe.descriptorHash,x),p.set(_e.hash,_e),_e.root||pe.get(_e.ident.identHash)?.children.set(Fe.descriptorHash,x))}if(s.has(Ne.locatorHash))for(let _e of Pe)Ne.dependencies.delete(_e)})}for(let Re of[...fe,...se])Re();for(let Re of we){we.delete(Re);let gt=s.get(Re),j=us(rI(gt).locatorHash,...Array.from(gt.dependencies.values(),Pe=>{let Ye=Pe.range!==\"missing:\"?r.get(Pe.descriptorHash):\"missing:\";if(typeof Ye>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${ri(t.configuration,Pe)} to have been registered`);return Ye===Be?`${Ye} (top)`:Ye})),rt=P.get(j);if(typeof rt>\"u\"){P.set(j,gt);continue}let Fe=xp(R,rt.locatorHash);for(let Pe of R.get(gt.locatorHash)??[])r.set(Pe,rt.locatorHash),Fe.add(Pe);s.delete(gt.locatorHash),a.delete(gt.locatorHash),we.delete(gt.locatorHash);let Ne=I.get(gt.locatorHash);if(Ne!==void 0){let Pe=xp(I,rt.locatorHash);for(let Ye of Ne)Pe.add(Ye),we.add(Ye)}}for(let Re of[...X,...De])Re()};for(let ce of t.workspaces){let me=ce.anchoredLocator;h.delete(ce.anchoredDescriptor.descriptorHash),ie(ce.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}for(let ce of p.values()){if(!ce.root)continue;let me=s.get(ce.subject.locatorHash);if(typeof me>\"u\")continue;for(let Be of ce.requests.values()){let Ce=`p${us(ce.subject.locatorHash,cn(ce.ident),Be.requester.locatorHash).slice(0,5)}`;c.set(Ce,{subject:ce.subject.locatorHash,requested:ce.ident,rootRequester:Be.requester.locatorHash,allRequesters:Array.from(nv(Be),g=>g.requester.locatorHash)})}let pe=[...nv(ce)];if(ce.provided.range!==\"missing:\"){let Be=te(ce.provided),Ce=Be.version??\"0.0.0\",g=Ee=>{if(Ee.startsWith(yi.protocol)){if(!t.tryWorkspaceByLocator(Be))return null;Ee=Ee.slice(yi.protocol.length),(Ee===\"^\"||Ee===\"~\")&&(Ee=\"*\")}return Ee},we=!0;for(let Ee of pe){let fe=g(Ee.descriptor.range);if(fe===null){we=!1;continue}if(!eA(Ce,fe)){we=!1;let se=`p${us(ce.subject.locatorHash,cn(ce.ident),Ee.requester.locatorHash).slice(0,5)}`;f.push({type:1,subject:me,requested:ce.ident,requester:Ee.requester,version:Ce,hash:se,requirementCount:pe.length})}}if(!we){let Ee=pe.map(fe=>g(fe.descriptor.range));f.push({type:3,node:ce,range:Ee.includes(null)?null:$8(Ee),hash:ce.hash})}}else{let Be=!0;for(let Ce of pe)if(!Ce.meta?.optional){Be=!1;let g=`p${us(ce.subject.locatorHash,cn(ce.ident),Ce.requester.locatorHash).slice(0,5)}`;f.push({type:0,subject:me,requested:ce.ident,requester:Ce.requester,hash:g})}Be||f.push({type:2,node:ce,hash:ce.hash})}}}function*Vwt(t){let e=new Map;if(\"children\"in t)e.set(t,t);else for(let r of t.requests.values())e.set(r,r);for(let[r,s]of e){yield{request:r,root:s};for(let a of r.children.values())e.has(a)||e.set(a,s)}}function Kwt(t,e){let r=[],s=[],a=!1;for(let n of t.peerWarnings)if(!(n.type===1||n.type===0)){if(!t.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=t.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let f=t.storedPackages.get(c);if(typeof f>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let p=p0(Vwt(n.node),({request:C,root:S})=>eA(f.version??\"0.0.0\",C.descriptor.range)?p0.skip:C===S?$i(t.configuration,C.requester):`${$i(t.configuration,C.requester)} (via ${$i(t.configuration,S.requester)})`),h=[...nv(n.node)].length>1?\"and other dependencies request\":\"requests\",E=n.range?iI(t.configuration,n.range):Ut(t.configuration,\"but they have non-overlapping ranges!\",\"redBright\");r.push(`${$i(t.configuration,n.node.ident)} is listed by your project with version ${tv(t.configuration,f.version??\"0.0.0\")} (${Ut(t.configuration,n.hash,Ct.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?\" and other dependencies\":\"\";s.push(`${Yr(t.configuration,n.node.subject)} doesn't provide ${$i(t.configuration,n.node.ident)} (${Ut(t.configuration,n.hash,Ct.CODE)}), requested by ${$i(t.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${Ut(t.configuration,\"yarn explain peer-requirements <hash>\",Ct.CODE)} for details, where ${Ut(t.configuration,\"<hash>\",Ct.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of Ws(r,c=>KE.default(c)))e.reportWarning(60,n);for(let n of Ws(s,c=>KE.default(c)))e.reportWarning(2,n)}),a&&e.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${Ut(t.configuration,\"yarn explain peer-requirements\",Ct.CODE)} for details.`)}var WR,YR,VR,swe,xG,PG,kG,KR,Hwt,jwt,nwe,qwt,Gwt,Wwt,ec,bG,JR,iwe,Tt,owe=It(()=>{bt();bt();Bc();Wt();WR=ye(\"crypto\");yG();YR=et(vG()),VR=et(Md()),swe=et(fi()),xG=ye(\"util\"),PG=et(ye(\"v8\")),kG=et(ye(\"zlib\"));cG();Cv();uG();fG();oI();iH();Fc();twe();Fv();SG();tm();DG();LQ();Qc();I0();kc();gT();w6();Np();Yo();KR=YE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),Hwt=3,jwt=/ *, */g,nwe=/\\/$/,qwt=32,Gwt=(0,xG.promisify)(kG.default.gzip),Wwt=(0,xG.promisify)(kG.default.gunzip),ec=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))(ec||{}),bG={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},JR=(a=>(a[a.NotProvided=0]=\"NotProvided\",a[a.NotCompatible=1]=\"NotCompatible\",a[a.NodeNotProvided=2]=\"NodeNotProvided\",a[a.NodeNotCompatible=3]=\"NodeNotCompatible\",a))(JR||{}),iwe=t=>us(`${Hwt}`,t),Tt=class t{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new nt(`No project found in ${r}`);let s=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,le.existsSync(K.join(n,Er.manifest))){s=n;break}a=K.dirname(n)}let c=new t(e.projectCwd,{configuration:e});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,R)=>I+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=Ut(e,c.cwd,Ct.PATH),E=Ut(e,K.relative(c.cwd,s),Ct.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,P=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new nt(`The nearest package directory (${Ut(e,s,Ct.PATH)}) doesn't seem to be part of the project declared in ${Ut(e,c.cwd,Ct.PATH)}.\n\n${[C,S,P].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=K.join(this.cwd,Er.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(le.existsSync(e)){let s=await le.readFilePromise(e,\"utf8\");this.lockFileChecksum=iwe(s);let a=ls(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<KR;for(let f of Object.keys(a)){if(f===\"__metadata\")continue;let p=a[f];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Rp(p.resolution,!0),E=new Ht;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,P=p.linkType.toUpperCase(),I=p.conditions??null,R=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,W=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let Ae=typeof c<\"u\"&&!p.checksum.includes(\"/\")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,Ae)}let ie={...h,version:C,languageName:S,linkType:P,conditions:I,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:W,bin:te};this.originalPackages.set(ie.locatorHash,ie);for(let Ae of f.split(jwt)){let ce=C0(Ae);n<=6&&(ce=this.configuration.normalizeDependency(ce),ce=On(ce,ce.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(ce.descriptorHash,ce),this.storedResolutions.set(ce.descriptorHash,h.locatorHash)}}}else s.includes(\"yarn lockfile v1\")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,VR.default)(4),s=async(a,n)=>{if(e.has(n))return a;e.add(n);let c=new $I(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${$i(this.configuration,e.anchoredLocator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){K.isAbsolute(e)||(e=K.resolve(this.cwd,e)),e=K.normalize(e).replace(/\\/+$/,\"\");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let s of this.workspaces)K.relative(s.cwd,e).startsWith(\"../\")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>\"u\"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(yi.protocol)){let s=e.range.slice(yi.protocol.length);if(s!==\"^\"&&s!==\"~\"&&s!==\"*\"&&!ul(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(e);return r===null||(Tp(e)&&(e=ZB(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${ri(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Gu(e)&&(e=rI(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if(\"descriptorHash\"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<\"u\"&&!s.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in e){this.deleteLocator(e.locatorHash);for(let[r,s]of this.storedResolutions)s===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(s,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,s]of e.dependencies)Tp(s)&&e.dependencies.set(r,ZB(s))}getDependencyMeta(e,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(cn(e));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!swe.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(e,{strict:r=!1}={}){let s=new Wi,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(e,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(nwe,\"\")!==e.replace(nwe,\"\"))continue;return f}}return null}async loadUserConfig(){let e=K.join(this.cwd,\".pnp.cjs\");await le.existsPromise(e)&&kp(e).setup();let r=K.join(this.cwd,\"yarn.config.cjs\");return await le.existsPromise(r)?kp(r):null}async preparePackage(e,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!XB(f,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error(\"Workspaces must have been setup before calling this function\");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new zI(a);await n.setup(this,{report:e.report});let c=e.lockfileOnly?[new GR(a)]:[n,a],f=new rm([new ZI(a),...c]),p=new rm([...c]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:f}:{project:this,report:e.report,resolver:f,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,W=new Set,te=[],ie=Tj(),Ae=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(ho.progressViaTitle(),async se=>{let X=async rt=>{let Fe=await GE(async()=>await f.resolve(rt,E),ke=>`${Yr(this.configuration,rt)}: ${ke}`);if(!$B(rt,Fe))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,rt)} to ${Yr(this.configuration,Fe)})`);I.set(Fe.locatorHash,Fe),!r.delete(Fe.locatorHash)&&!this.tryWorkspaceByLocator(Fe)&&s.push(Fe);let Pe=await this.preparePackage(Fe,{resolver:f,resolveOptions:E}),Ye=Uu([...Pe.dependencies.values()].map(ke=>j(ke)));return te.push(Ye),Ye.catch(()=>{}),S.set(Pe.locatorHash,Pe),Pe},De=async rt=>{let Fe=R.get(rt.locatorHash);if(typeof Fe<\"u\")return Fe;let Ne=Promise.resolve().then(()=>X(rt));return R.set(rt.locatorHash,Ne),Ne},Re=async(rt,Fe)=>{let Ne=await j(Fe);return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,Ne.locatorHash),Ne},gt=async rt=>{se.setTitle(ri(this.configuration,rt));let Fe=this.resolutionAliases.get(rt.descriptorHash);if(typeof Fe<\"u\")return Re(rt,this.storedDescriptors.get(Fe));let Ne=f.getResolutionDependencies(rt,E),Pe=Object.fromEntries(await Uu(Object.entries(Ne).map(async([it,_e])=>{let x=f.bindDescriptor(_e,U,E),w=await j(x);return W.add(w.locatorHash),[it,w]}))),ke=(await GE(async()=>await f.getCandidates(rt,Pe,E),it=>`${ri(this.configuration,rt)}: ${it}`))[0];if(typeof ke>\"u\")throw new Yt(82,`${ri(this.configuration,rt)}: No candidates found`);if(e.checkResolutions){let{locators:it}=await p.getSatisfying(rt,Pe,[ke],{...E,resolver:p});if(!it.find(_e=>_e.locatorHash===ke.locatorHash))throw new Yt(78,`Invalid resolution ${VB(this.configuration,rt,ke)}`)}return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,ke.locatorHash),De(ke)},j=rt=>{let Fe=N.get(rt.descriptorHash);if(typeof Fe<\"u\")return Fe;C.set(rt.descriptorHash,rt);let Ne=Promise.resolve().then(()=>gt(rt));return N.set(rt.descriptorHash,Ne),Ne};for(let rt of this.workspaces){let Fe=rt.anchoredDescriptor;te.push(j(Fe))}for(;te.length>0;){let rt=[...te];te.length=0,await Uu(rt)}});let ce=Yl(r.values(),se=>this.tryWorkspaceByLocator(se)?Yl.skip:se);if(s.length>0||ce.length>0){let se=new Set(this.workspaces.flatMap(rt=>{let Fe=S.get(rt.anchoredLocator.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(Fe.dependencies.values(),Ne=>{let Pe=P.get(Ne.descriptorHash);if(!Pe)throw new Error(\"Assertion failed: The resolution should have been registered\");return Pe})})),X=rt=>se.has(rt.locatorHash)?\"0\":\"1\",De=rt=>cl(rt),Re=Ws(s,[X,De]),gt=Ws(ce,[X,De]),j=e.report.getRecommendedLength();Re.length>0&&e.report.reportInfo(85,`${Ut(this.configuration,\"+\",Ct.ADDED)} ${$k(this.configuration,Re,j)}`),gt.length>0&&e.report.reportInfo(85,`${Ut(this.configuration,\"-\",Ct.REMOVED)} ${$k(this.configuration,gt,j)}`)}let me=new Set(this.resolutionAliases.values()),pe=new Set(S.keys()),Be=new Set,Ce=new Map,g=[],we=new Map;Ywt({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:pe,peerRequirements:Ce,peerWarnings:g,peerRequirementNodes:we,allDescriptors:C,allResolutions:P,allPackages:S});for(let se of W)pe.delete(se);for(let se of me)C.delete(se),P.delete(se);let Ee=new Set,fe=new Set;for(let se of S.values())se.conditions!=null&&pe.has(se.locatorHash)&&(TQ(se,Ae)||(TQ(se,ie)&&e.report.reportWarningOnce(77,`${Yr(this.configuration,se)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ut(this.configuration,\"supportedArchitectures\",Ct.SETTING)} setting`),fe.add(se.locatorHash)),Ee.add(se.locatorHash));this.storedResolutions=P,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Be,this.conditionalLocators=Ee,this.disabledLocators=fe,this.originalPackages=I,this.optionalBuilds=pe,this.peerRequirements=Ce,this.peerWarnings=g,this.peerRequirementNodes=we}async fetchEverything({cache:e,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(Ws(this.storedResolutions.values(),[I=>{let R=this.storedPackages.get(I);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");return cl(R)}])));a===\"update-lockfile\"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=ho.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,VR.default)(qwt);if(await Uu(h.map(I=>S(async()=>{let R=this.storedPackages.get(I);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");if(Gu(R))return;let N;try{N=await f.fetch(R,p)}catch(U){U.message=`${Yr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(R.locatorHash,N.checksum):this.storedChecksums.delete(R.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let P=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||P){let R=(await Promise.all([...r.cacheMisses].map(async ce=>{let me=this.storedPackages.get(ce),pe=this.storedChecksums.get(ce)??null,Be=e.getLocatorPath(me,pe);return(await le.statPromise(Be)).size}))).reduce((ce,me)=>ce+me,0)-(P?.size??0),N=r.cacheMisses.size,U=P?.count??0,W=`${Vk(N,{zero:\"No new packages\",one:\"A package was\",more:`${Ut(this.configuration,N,Ct.NUMBER)} packages were`})} added to the project`,te=`${Vk(U,{zero:\"none were\",one:\"one was\",more:`${Ut(this.configuration,U,Ct.NUMBER)} were`})} removed`,ie=R!==0?` (${Ut(this.configuration,R,Ct.SIZE_DIFF)})`:\"\",Ae=U>0?N>0?`${W}, and ${te}${ie}.`:`${W}, but ${te}${ie}.`:`${W}${ie}.`;r.reportInfo(13,Ae)}}async linkEverything({cache:e,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(Ee=>{let fe=Ee.makeInstaller(h),se=Ee.getCustomDataKey(),X=this.linkersCustomData.get(se);return typeof X<\"u\"&&fe.attachCustomData(X),[Ee,fe]})),C=new Map,S=new Map,P=new Map,I=new Map(await Uu([...this.accessibleLocators].map(async Ee=>{let fe=this.storedPackages.get(Ee);if(!fe)throw new Error(\"Assertion failed: The locator should have been registered\");return[Ee,await c.fetch(fe,f)]}))),R=[],N=new Set,U=[];for(let Ee of this.accessibleLocators){let fe=this.storedPackages.get(Ee);if(typeof fe>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let se=I.get(fe.locatorHash);if(typeof se>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let X=[],De=gt=>{X.push(gt)},Re=this.tryWorkspaceByLocator(fe);if(Re!==null){let gt=[],{scripts:j}=Re.manifest;for(let Fe of[\"preinstall\",\"install\",\"postinstall\"])j.has(Fe)&&gt.push({type:0,script:Fe});try{for(let[Fe,Ne]of E)if(Fe.supportsPackage(fe,h)&&(await Ne.installPackage(fe,se,{holdFetchResult:De})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{X.length===0?se.releaseFs?.():R.push(Uu(X).catch(()=>{}).then(()=>{se.releaseFs?.()}))}let rt=K.join(se.packageFs.getRealPath(),se.prefixPath);S.set(fe.locatorHash,rt),!Gu(fe)&&gt.length>0&&P.set(fe.locatorHash,{buildDirectives:gt,buildLocations:[rt]})}else{let gt=p.find(Fe=>Fe.supportsPackage(fe,h));if(!gt)throw new Yt(12,`${Yr(this.configuration,fe)} isn't supported by any available linker`);let j=E.get(gt);if(!j)throw new Error(\"Assertion failed: The installer should have been registered\");let rt;try{rt=await j.installPackage(fe,se,{holdFetchResult:De})}finally{X.length===0?se.releaseFs?.():R.push(Uu(X).then(()=>{}).then(()=>{se.releaseFs?.()}))}C.set(fe.locatorHash,gt),S.set(fe.locatorHash,rt.packageLocation),rt.buildRequest&&rt.packageLocation&&(rt.buildRequest.skipped?(N.add(fe.locatorHash),this.skippedBuilds.has(fe.locatorHash)||U.push([fe,rt.buildRequest.explain])):P.set(fe.locatorHash,{buildDirectives:rt.buildRequest.directives,buildLocations:[rt.packageLocation]}))}}let W=new Map;for(let Ee of this.accessibleLocators){let fe=this.storedPackages.get(Ee);if(!fe)throw new Error(\"Assertion failed: The locator should have been registered\");let se=this.tryWorkspaceByLocator(fe)!==null,X=async(De,Re)=>{let gt=S.get(fe.locatorHash);if(typeof gt>\"u\")throw new Error(`Assertion failed: The package (${Yr(this.configuration,fe)}) should have been registered`);let j=[];for(let rt of fe.dependencies.values()){let Fe=this.storedResolutions.get(rt.descriptorHash);if(typeof Fe>\"u\")throw new Error(`Assertion failed: The resolution (${ri(this.configuration,rt)}, from ${Yr(this.configuration,fe)})should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>\"u\")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ri(this.configuration,rt)}) should have been registered`);let Pe=this.tryWorkspaceByLocator(Ne)===null?C.get(Fe):null;if(typeof Pe>\"u\")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ri(this.configuration,rt)}) should have been registered`);Pe===De||Pe===null?S.get(Ne.locatorHash)!==null&&j.push([rt,Ne]):!se&&gt!==null&&jB(W,Fe).push(gt)}gt!==null&&await Re.attachInternalDependencies(fe,j)};if(se)for(let[De,Re]of E)De.supportsPackage(fe,h)&&await X(De,Re);else{let De=C.get(fe.locatorHash);if(!De)throw new Error(\"Assertion failed: The linker should have been found\");let Re=E.get(De);if(!Re)throw new Error(\"Assertion failed: The installer should have been registered\");await X(De,Re)}}for(let[Ee,fe]of W){let se=this.storedPackages.get(Ee);if(!se)throw new Error(\"Assertion failed: The package should have been registered\");let X=C.get(se.locatorHash);if(!X)throw new Error(\"Assertion failed: The linker should have been found\");let De=E.get(X);if(!De)throw new Error(\"Assertion failed: The installer should have been registered\");await De.attachExternalDependents(se,fe)}let te=new Map;for(let[Ee,fe]of E){let se=await fe.finalizeInstall();for(let X of se?.records??[])X.buildRequest.skipped?(N.add(X.locator.locatorHash),this.skippedBuilds.has(X.locator.locatorHash)||U.push([X.locator,X.buildRequest.explain])):P.set(X.locator.locatorHash,{buildDirectives:X.buildRequest.directives,buildLocations:X.buildLocations});typeof se?.customData<\"u\"&&te.set(Ee.getCustomDataKey(),se.customData)}if(this.linkersCustomData=te,await Uu(R),a===\"skip-build\")return;for(let[,Ee]of Ws(U,([fe])=>cl(fe)))Ee(r);let ie=new Set(P.keys()),Ae=(0,WR.createHash)(\"sha512\");Ae.update(process.versions.node),await this.configuration.triggerHook(Ee=>Ee.globalHashGeneration,this,Ee=>{Ae.update(\"\\0\"),Ae.update(Ee)});let ce=Ae.digest(\"hex\"),me=new Map,pe=Ee=>{let fe=me.get(Ee.locatorHash);if(typeof fe<\"u\")return fe;let se=this.storedPackages.get(Ee.locatorHash);if(typeof se>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let X=(0,WR.createHash)(\"sha512\");X.update(Ee.locatorHash),me.set(Ee.locatorHash,\"<recursive>\");for(let De of se.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(typeof Re>\"u\")throw new Error(`Assertion failed: The resolution (${ri(this.configuration,De)}) should have been registered`);let gt=this.storedPackages.get(Re);if(typeof gt>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");X.update(pe(gt))}return fe=X.digest(\"hex\"),me.set(Ee.locatorHash,fe),fe},Be=(Ee,fe)=>{let se=(0,WR.createHash)(\"sha512\");se.update(ce),se.update(pe(Ee));for(let X of fe)se.update(X);return se.digest(\"hex\")},Ce=new Map,g=!1,we=Ee=>{let fe=new Set([Ee.locatorHash]);for(let se of fe){let X=this.storedPackages.get(se);if(!X)throw new Error(\"Assertion failed: The package should have been registered\");for(let De of X.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(!Re)throw new Error(`Assertion failed: The resolution (${ri(this.configuration,De)}) should have been registered`);if(Re!==Ee.locatorHash&&ie.has(Re))return!1;let gt=this.storedPackages.get(Re);if(!gt)throw new Error(\"Assertion failed: The package should have been registered\");let j=this.tryWorkspaceByLocator(gt);if(j){if(j.anchoredLocator.locatorHash!==Ee.locatorHash&&ie.has(j.anchoredLocator.locatorHash))return!1;fe.add(j.anchoredLocator.locatorHash)}fe.add(Re)}}return!0};for(;ie.size>0;){let Ee=ie.size,fe=[];for(let se of ie){let X=this.storedPackages.get(se);if(!X)throw new Error(\"Assertion failed: The package should have been registered\");if(!we(X))continue;let De=P.get(X.locatorHash);if(!De)throw new Error(\"Assertion failed: The build directive should have been registered\");let Re=Be(X,De.buildLocations);if(this.storedBuildState.get(X.locatorHash)===Re){Ce.set(X.locatorHash,Re),ie.delete(se);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(X.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,X)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,X)} must be built because it never has been before or the last one failed`);let gt=De.buildLocations.map(async j=>{if(!K.isAbsolute(j))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${j})`);for(let rt of De.buildDirectives){let Fe=`# This file contains the result of Yarn building a package (${cl(X)})\n`;switch(rt.type){case 0:Fe+=`# Script name: ${rt.script}\n`;break;case 1:Fe+=`# Script code: ${rt.script}\n`;break}let Ne=null;if(!await le.mktempPromise(async Ye=>{let ke=K.join(Ye,\"build.log\"),{stdout:it,stderr:_e}=this.configuration.getSubprocessStreams(ke,{header:Fe,prefix:Yr(this.configuration,X),report:r}),x;try{switch(rt.type){case 0:x=await MT(X,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:_e});break;case 1:x=await y6(X,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:_e});break}}catch(y){_e.write(y.stack),x=1}if(it.end(),_e.end(),x===0)return!0;le.detachTemp(Ye);let w=`${Yr(this.configuration,X)} couldn't be built successfully (exit code ${Ut(this.configuration,x,Ct.NUMBER)}, logs can be found here: ${Ut(this.configuration,ke,Ct.PATH)})`,b=this.optionalBuilds.has(X.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),rye&&r.reportFold(ue.fromPortablePath(ke),le.readFileSync(ke,\"utf8\")),b}))return!1}return!0});fe.push(...gt,Promise.allSettled(gt).then(j=>{ie.delete(se),j.every(rt=>rt.status===\"fulfilled\"&&rt.value===!0)&&Ce.set(X.locatorHash,Re)}))}if(await Uu(fe),Ee===ie.size){let se=Array.from(ie).map(X=>{let De=this.storedPackages.get(X);if(!De)throw new Error(\"Assertion failed: The package should have been registered\");return Yr(this.configuration,De)}).join(\", \");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${se})`);break}}this.storedBuildState=Ce,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Ot.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get(\"nodeLinker\");ze.telemetry?.reportInstall(r);let s=!1;if(await e.report.startTimerPromise(\"Project validation\",{skipIfEmpty:!0},async()=>{this.configuration.get(\"enableOfflineMode\")&&e.report.reportWarning(90,\"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it\"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status=\"inactive\";let n=K.join(this.cwd,Er.lockfile),c=null;if(e.immutable)try{c=await le.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new Yt(28,\"The lockfile would have been created by this install, which is explicitly forbidden.\"):E}await e.report.startTimerPromise(\"Resolution step\",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise(\"Post-resolution validation\",{skipIfEmpty:!0},async()=>{Kwt(this,e.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let P=Ut(this.configuration,S,Ct.PACKAGE_EXTENSION);switch(S.status){case\"inactive\":e.report.reportWarning(68,`${P}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":e.report.reportWarning(69,`${P}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=Id(c,this.generateLockfile());if(E!==c){let C=CCe(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){e.report.reportSeparator();for(let S of C.hunks){e.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let P of S.lines)P.startsWith(\"+\")?e.report.reportError(28,Ut(this.configuration,P,Ct.ADDED)):P.startsWith(\"-\")?e.report.reportError(28,Ut(this.configuration,P,Ct.REMOVED)):e.report.reportInfo(null,Ut(this.configuration,P,\"grey\"))}e.report.reportSeparator()}throw new Yt(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status===\"active\"&&ze.telemetry?.reportPackageExtension(Zd(S,Ct.PACKAGE_EXTENSION));await e.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(e)});let f=e.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(f.map(async E=>DQ(E,{cwd:this.cwd})));(typeof e.persistProject>\"u\"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise(\"Link step\",async()=>{if(e.mode===\"update-lockfile\"){e.report.reportWarning(73,`Skipped due to ${Ut(this.configuration,\"mode=update-lockfile\",Ct.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(f.map(async C=>DQ(C,{cwd:this.cwd})));for(let C=0;C<f.length;++C)p[C]!==E[C]&&e.report.reportError(64,`The checksum for ${f[C]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let h=!1;await e.report.startTimerPromise(\"Post-install validation\",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=e.get(c);f||e.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Jr.getCacheKey(this.configuration);r.__metadata={version:KR,cacheKey:s};for(let[n,c]of e.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(S)}let h=p.map(C=>ll(C)).sort().join(\", \"),E=new Ht;E.version=f.linkType===\"HARD\"?f.version:\"0.0.0-use.local\",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:cl(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running \"yarn install\" inside your project.\n`,`# Manual changes might be lost - proceed with caution!\n`].join(\"\")}\n`+il(r)}async persistLockfile(){let e=K.join(this.cwd,Er.lockfile),r=\"\";try{r=await le.readFilePromise(e,\"utf8\")}catch{}let s=this.generateLockfile(),a=Id(r,s);a!==r&&(await le.writeFilePromise(e,a),this.lockFileChecksum=iwe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let c of Object.values(bG))e.push(...c);let r=(0,YR.default)(this,e),s=PG.default.serialize(r),a=us(s);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await le.mkdirPromise(K.dirname(n),{recursive:!0}),await le.writeFilePromise(n,await Gwt(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let c=await Wwt(await le.readFilePromise(a));n=PG.default.deserialize(c),this.installStateChecksum=us(c)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,(0,YR.default)(n,bG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,YR.default)(n,bG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Wi}),await this.persistInstallStateFile()}async persist(){let e=(0,VR.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get(\"enableGlobalCache\"))return null;let s=new Set([\".gitignore\"]);if(!hH(e.cwd,this.cwd)||!await le.existsPromise(e.cwd))return null;let a=[];for(let c of await le.readdirPromise(e.cwd)){if(s.has(c))continue;let f=K.resolve(e.cwd,c);e.markedFiles.has(f)||(e.immutable?r.reportError(56,`${Ut(this.configuration,K.basename(f),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(le.lstatPromise(f).then(async p=>(await le.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function Jwt(t){let s=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),c=n+a,f=t.state.lastTips??s*864e5,p=f+864e5+8*36e5-t.timeZone,h=c<=t.timeNow,E=p<=t.timeNow,C=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(C={},C.lastUpdate=h?t.timeNow:n,C.lastTips=f,C.blocks=h?{}:t.state.blocks,C.displayedTips=t.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var eC,awe=It(()=>{bt();Rv();I0();pT();kc();Np();eC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let s=this.getRegistryPath();this.isNew=!le.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),s=f=>f&&un?eA(un,f):!1,a=e.map((f,p)=>p).filter(f=>e[f]&&s(e[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),e[c]}reportVersion(e){this.reportValue(\"version\",e.replace(/-git\\..*/,\"-git\"))}reportCommandName(e){this.reportValue(\"commandName\",e||\"<none>\")}reportPluginName(e){this.reportValue(\"pluginName\",e)}reportProject(e){this.reportEnumerator(\"projectCount\",e)}reportInstall(e){this.reportHit(\"installCount\",e)}reportPackageExtension(e){this.reportValue(\"packageExtension\",e)}reportWorkspaceCount(e){this.reportValue(\"workspaceCount\",String(e))}reportDependencyCount(e){this.reportValue(\"dependencyCount\",String(e))}reportValue(e,r){xp(this.values,e).add(r)}reportEnumerator(e,r){xp(this.enumerators,e).add(us(r))}reportHit(e,r=\"*\"){let s=A3(this.hits,e),a=Vl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let e=this.configuration.get(\"globalFolder\");return K.join(e,\"telemetry.json\")}sendReport(e){let r=this.getRegistryPath(),s;try{s=le.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=Jwt({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{le.mkdirSync(K.dirname(r),{recursive:!0}),le.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=C=>Qj(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let P=S;P.userId=C,P.reportType=\"primary\";for(let N of Object.keys(P.enumerators??{}))P.enumerators[N]=P.enumerators[N].length;E(P);let I=new Map,R=20;for(let[N,U]of Object.entries(P.values))U.length>0&&I.set(N,U.slice(0,R));for(;I.size>0;){let N={};N.userId=C,N.reportType=\"secondary\",N.metrics={};for(let[U,W]of I)N.metrics[U]=W.shift(),W.length===0&&I.delete(U);E(N)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=le.readJsonSync(e)}catch{r={}}let s=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of[\"values\",\"enumerators\"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),le.mkdirSync(K.dirname(e),{recursive:!0}),le.writeJsonSync(e,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var nS={};Vt(nS,{BuildDirectiveType:()=>HR,CACHE_CHECKPOINT:()=>lG,CACHE_VERSION:()=>UR,Cache:()=>Jr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>Mj,FormatType:()=>Lde,InstallMode:()=>ec,LEGACY_PLUGINS:()=>Ev,LOCKFILE_VERSION:()=>KR,LegacyMigrationResolver:()=>zI,LightReport:()=>uA,LinkType:()=>VE,LockfileResolver:()=>ZI,Manifest:()=>Ht,MessageName:()=>Dr,MultiFetcher:()=>lI,PackageExtensionStatus:()=>d3,PackageExtensionType:()=>g3,PeerWarningType:()=>JR,Project:()=>Tt,Report:()=>ho,ReportError:()=>Yt,SettingsType:()=>Iv,StreamReport:()=>Ot,TAG_REGEXP:()=>Hp,TelemetryManager:()=>eC,ThrowReport:()=>Wi,VirtualFetcher:()=>cI,WindowsLinkType:()=>IT,Workspace:()=>$I,WorkspaceFetcher:()=>uI,WorkspaceResolver:()=>yi,YarnVersion:()=>un,execUtils:()=>Gr,folderUtils:()=>OQ,formatUtils:()=>he,hashUtils:()=>Nn,httpUtils:()=>An,miscUtils:()=>je,nodeUtils:()=>As,parseMessageName:()=>rk,reportOptionDeprecations:()=>DI,scriptUtils:()=>In,semverUtils:()=>Or,stringifyMessageName:()=>Vf,structUtils:()=>q,tgzUtils:()=>hs,treeUtils:()=>ks});var Ve=It(()=>{dT();LQ();Qc();I0();pT();kc();gT();w6();Np();Yo();oCe();pCe();cG();Cv();Cv();dCe();uG();mCe();fG();oI();nk();nH();owe();Fc();Fv();awe();SG();sH();oH();tm();DG();Rv();BAe()});var pwe=L((hnr,sS)=>{\"use strict\";var Zwt=process.env.TERM_PROGRAM===\"Hyper\",Xwt=process.platform===\"win32\",uwe=process.platform===\"linux\",QG={ballotDisabled:\"\\u2612\",ballotOff:\"\\u2610\",ballotOn:\"\\u2611\",bullet:\"\\u2022\",bulletWhite:\"\\u25E6\",fullBlock:\"\\u2588\",heart:\"\\u2764\",identicalTo:\"\\u2261\",line:\"\\u2500\",mark:\"\\u203B\",middot:\"\\xB7\",minus:\"\\uFF0D\",multiplication:\"\\xD7\",obelus:\"\\xF7\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",pencilUpRight:\"\\u2710\",percent:\"%\",pilcrow2:\"\\u2761\",pilcrow:\"\\xB6\",plusMinus:\"\\xB1\",section:\"\\xA7\",starsOff:\"\\u2606\",starsOn:\"\\u2605\",upDownArrow:\"\\u2195\"},fwe=Object.assign({},QG,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),Awe=Object.assign({},QG,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:uwe?\"\\u25B8\":\"\\u276F\",pointerSmall:uwe?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});sS.exports=Xwt&&!Zwt?fwe:Awe;Reflect.defineProperty(sS.exports,\"common\",{enumerable:!1,value:QG});Reflect.defineProperty(sS.exports,\"windows\",{enumerable:!1,value:fwe});Reflect.defineProperty(sS.exports,\"other\",{enumerable:!1,value:Awe})});var Ju=L((gnr,TG)=>{\"use strict\";var $wt=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),e1t=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,hwe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(t.enabled=process.env.FORCE_COLOR!==\"0\");let e=n=>{let c=n.open=`\\x1B[${n.codes[0]}m`,f=n.close=`\\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\\\u001b\\\\[${n.codes[1]}m`,\"g\");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\\r*\\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n==\"function\"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===\"\"||n==null)return\"\";if(t.enabled===!1)return n;if(t.visible===!1)return\"\";let f=\"\"+n,p=f.includes(`\n`),h=c.length;for(h>0&&c.includes(\"unstyle\")&&(c=[...new Set([\"unstyle\",...c])].reverse());h-- >0;)f=r(t.styles[c[h]],f,p);return f},a=(n,c,f)=>{t.styles[n]=e({name:n,codes:c}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a(\"reset\",[0,0],\"modifier\"),a(\"bold\",[1,22],\"modifier\"),a(\"dim\",[2,22],\"modifier\"),a(\"italic\",[3,23],\"modifier\"),a(\"underline\",[4,24],\"modifier\"),a(\"inverse\",[7,27],\"modifier\"),a(\"hidden\",[8,28],\"modifier\"),a(\"strikethrough\",[9,29],\"modifier\"),a(\"black\",[30,39],\"color\"),a(\"red\",[31,39],\"color\"),a(\"green\",[32,39],\"color\"),a(\"yellow\",[33,39],\"color\"),a(\"blue\",[34,39],\"color\"),a(\"magenta\",[35,39],\"color\"),a(\"cyan\",[36,39],\"color\"),a(\"white\",[37,39],\"color\"),a(\"gray\",[90,39],\"color\"),a(\"grey\",[90,39],\"color\"),a(\"bgBlack\",[40,49],\"bg\"),a(\"bgRed\",[41,49],\"bg\"),a(\"bgGreen\",[42,49],\"bg\"),a(\"bgYellow\",[43,49],\"bg\"),a(\"bgBlue\",[44,49],\"bg\"),a(\"bgMagenta\",[45,49],\"bg\"),a(\"bgCyan\",[46,49],\"bg\"),a(\"bgWhite\",[47,49],\"bg\"),a(\"blackBright\",[90,39],\"bright\"),a(\"redBright\",[91,39],\"bright\"),a(\"greenBright\",[92,39],\"bright\"),a(\"yellowBright\",[93,39],\"bright\"),a(\"blueBright\",[94,39],\"bright\"),a(\"magentaBright\",[95,39],\"bright\"),a(\"cyanBright\",[96,39],\"bright\"),a(\"whiteBright\",[97,39],\"bright\"),a(\"bgBlackBright\",[100,49],\"bgBright\"),a(\"bgRedBright\",[101,49],\"bgBright\"),a(\"bgGreenBright\",[102,49],\"bgBright\"),a(\"bgYellowBright\",[103,49],\"bgBright\"),a(\"bgBlueBright\",[104,49],\"bgBright\"),a(\"bgMagentaBright\",[105,49],\"bgBright\"),a(\"bgCyanBright\",[106,49],\"bgBright\"),a(\"bgWhiteBright\",[107,49],\"bgBright\"),t.ansiRegex=e1t,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&t.ansiRegex.test(n)),t.alias=(n,c)=>{let f=typeof c==\"string\"?t[c]:c;if(typeof f!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");f.stack||(Reflect.defineProperty(f,\"name\",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},t.theme=n=>{if(!$wt(n))throw new TypeError(\"Expected theme to be an object\");for(let c of Object.keys(n))t.alias(c,n[c]);return t},t.alias(\"unstyle\",n=>typeof n==\"string\"&&n!==\"\"?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,\"\")):\"\"),t.alias(\"noop\",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=pwe(),t.define=a,t};TG.exports=hwe();TG.exports.create=hwe});var $o=L(pn=>{\"use strict\";var t1t=Object.prototype.toString,Gc=Ju(),gwe=!1,RG=[],dwe={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};pn.longest=(t,e)=>t.reduce((r,s)=>Math.max(r,e?s[e].length:s.length),0);pn.hasColor=t=>!!t&&Gc.hasColor(t);var ZR=pn.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);pn.nativeType=t=>t1t.call(t).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");pn.isAsyncFn=t=>pn.nativeType(t)===\"asyncfunction\";pn.isPrimitive=t=>t!=null&&typeof t!=\"object\"&&typeof t!=\"function\";pn.resolve=(t,e,...r)=>typeof e==\"function\"?e.call(t,...r):e;pn.scrollDown=(t=[])=>[...t.slice(1),t[0]];pn.scrollUp=(t=[])=>[t.pop(),...t];pn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,s)=>r.index>s.index?1:r.index<s.index?-1:0),e};pn.swap=(t,e,r)=>{let s=t.length,a=r===s?0:r<0?s-1:r,n=t[e];t[e]=t[a],t[a]=n};pn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[0]),process.platform===\"win32\"?r-1:r};pn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[1]),r};pn.wordWrap=(t,e={})=>{if(!t)return t;typeof e==\"number\"&&(e={width:e});let{indent:r=\"\",newline:s=`\n`+r,width:a=80}=e,n=(s+r).match(/[^\\S\\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,f=t.trim(),p=new RegExp(c,\"g\"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\\n$/,\"\")),e.padEnd&&(h=h.map(E=>E.padEnd(a,\" \"))),e.padStart&&(h=h.map(E=>E.padStart(a,\" \"))),r+h.join(s)};pn.unmute=t=>{let e=t.stack.find(s=>Gc.keys.color.includes(s));return e?Gc[e]:t.stack.find(s=>s.slice(2)===\"bg\")?Gc[e.slice(2)]:s=>s};pn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):\"\";pn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>Gc.keys.color.includes(s));if(e){let s=Gc[\"bg\"+pn.pascal(e)];return s?s.black:t}let r=t.stack.find(s=>s.slice(0,2)===\"bg\");return r?Gc[r.slice(2).toLowerCase()]||t:Gc.none};pn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>Gc.keys.color.includes(s)),r=t.stack.find(s=>s.slice(0,2)===\"bg\");if(e&&!r)return Gc[dwe[e]||e];if(r){let s=r.slice(2).toLowerCase(),a=dwe[s];return a&&Gc[\"bg\"+pn.pascal(a)]||t}return Gc.none};pn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),s=e>=12?\"pm\":\"am\";e=e%12;let a=e===0?12:e,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+s};pn.set=(t={},e=\"\",r)=>e.split(\".\").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!pn.isObject(f)&&n<c.length-1&&(f={}),s[a]=f},t);pn.get=(t={},e=\"\",r)=>{let s=t[e]==null?e.split(\".\").reduce((a,n)=>a&&a[n],t):t[e];return s??r};pn.mixin=(t,e)=>{if(!ZR(t))return e;if(!ZR(e))return t;for(let r of Object.keys(e)){let s=Object.getOwnPropertyDescriptor(e,r);if(s.hasOwnProperty(\"value\"))if(t.hasOwnProperty(r)&&ZR(s.value)){let a=Object.getOwnPropertyDescriptor(t,r);ZR(a.value)?t[r]=pn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,s)}else Reflect.defineProperty(t,r,s);else Reflect.defineProperty(t,r,s)}return t};pn.merge=(...t)=>{let e={};for(let r of t)pn.mixin(e,r);return e};pn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a==\"function\"?pn.define(t,s,a.bind(e)):pn.define(t,s,a)}};pn.onExit=t=>{let e=(r,s)=>{gwe||(gwe=!0,RG.forEach(a=>a()),r===!0&&process.exit(128+s))};RG.length===0&&(process.once(\"SIGTERM\",e.bind(null,!0,15)),process.once(\"SIGINT\",e.bind(null,!0,2)),process.once(\"exit\",e)),RG.push(t)};pn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};pn.defineExport=(t,e,r)=>{let s;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var mwe=L(iC=>{\"use strict\";iC.ctrl={a:\"first\",b:\"backward\",c:\"cancel\",d:\"deleteForward\",e:\"last\",f:\"forward\",g:\"reset\",i:\"tab\",k:\"cutForward\",l:\"reset\",n:\"newItem\",m:\"cancel\",j:\"submit\",p:\"search\",r:\"remove\",s:\"save\",u:\"undo\",w:\"cutLeft\",x:\"toggleCursor\",v:\"paste\"};iC.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};iC.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};iC.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};iC.keys={pageup:\"pageUp\",pagedown:\"pageDown\",home:\"home\",end:\"end\",cancel:\"cancel\",delete:\"deleteForward\",backspace:\"delete\",down:\"down\",enter:\"submit\",escape:\"cancel\",left:\"left\",space:\"space\",number:\"number\",return:\"submit\",right:\"right\",tab:\"next\",up:\"up\"}});var Iwe=L((ynr,Ewe)=>{\"use strict\";var ywe=ye(\"readline\"),r1t=mwe(),n1t=/^(?:\\x1b)([a-zA-Z0-9])$/,i1t=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,s1t={OP:\"f1\",OQ:\"f2\",OR:\"f3\",OS:\"f4\",\"[11~\":\"f1\",\"[12~\":\"f2\",\"[13~\":\"f3\",\"[14~\":\"f4\",\"[[A\":\"f1\",\"[[B\":\"f2\",\"[[C\":\"f3\",\"[[D\":\"f4\",\"[[E\":\"f5\",\"[15~\":\"f5\",\"[17~\":\"f6\",\"[18~\":\"f7\",\"[19~\":\"f8\",\"[20~\":\"f9\",\"[21~\":\"f10\",\"[23~\":\"f11\",\"[24~\":\"f12\",\"[A\":\"up\",\"[B\":\"down\",\"[C\":\"right\",\"[D\":\"left\",\"[E\":\"clear\",\"[F\":\"end\",\"[H\":\"home\",OA:\"up\",OB:\"down\",OC:\"right\",OD:\"left\",OE:\"clear\",OF:\"end\",OH:\"home\",\"[1~\":\"home\",\"[2~\":\"insert\",\"[3~\":\"delete\",\"[4~\":\"end\",\"[5~\":\"pageup\",\"[6~\":\"pagedown\",\"[[5~\":\"pageup\",\"[[6~\":\"pagedown\",\"[7~\":\"home\",\"[8~\":\"end\",\"[a\":\"up\",\"[b\":\"down\",\"[c\":\"right\",\"[d\":\"left\",\"[e\":\"clear\",\"[2$\":\"insert\",\"[3$\":\"delete\",\"[5$\":\"pageup\",\"[6$\":\"pagedown\",\"[7$\":\"home\",\"[8$\":\"end\",Oa:\"up\",Ob:\"down\",Oc:\"right\",Od:\"left\",Oe:\"clear\",\"[2^\":\"insert\",\"[3^\":\"delete\",\"[5^\":\"pageup\",\"[6^\":\"pagedown\",\"[7^\":\"home\",\"[8^\":\"end\",\"[Z\":\"tab\"};function o1t(t){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(t)}function a1t(t){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(t)}var XR=(t=\"\",e={})=>{let r,s={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=\"\\x1B\"+String(t)):t=String(t):t!==void 0&&typeof t!=\"string\"?t=String(t):t||(t=s.sequence||\"\"),s.sequence=s.sequence||t||s.name,t===\"\\r\")s.raw=void 0,s.name=\"return\";else if(t===`\n`)s.name=\"enter\";else if(t===\"\t\")s.name=\"tab\";else if(t===\"\\b\"||t===\"\\x7F\"||t===\"\\x1B\\x7F\"||t===\"\\x1B\\b\")s.name=\"backspace\",s.meta=t.charAt(0)===\"\\x1B\";else if(t===\"\\x1B\"||t===\"\\x1B\\x1B\")s.name=\"escape\",s.meta=t.length===2;else if(t===\" \"||t===\"\\x1B \")s.name=\"space\",s.meta=t.length===2;else if(t<=\"\u001a\")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>=\"0\"&&t<=\"9\")s.name=\"number\";else if(t.length===1&&t>=\"a\"&&t<=\"z\")s.name=t;else if(t.length===1&&t>=\"A\"&&t<=\"Z\")s.name=t.toLowerCase(),s.shift=!0;else if(r=n1t.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=i1t.exec(t)){let a=[...t];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=s1t[n],s.shift=o1t(n)||s.shift,s.ctrl=a1t(n)||s.ctrl}return s};XR.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let s=ywe.createInterface({terminal:!0,input:r});ywe.emitKeypressEvents(r,s);let a=(f,p)=>e(f,XR(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),s.pause(),s.close()}};XR.action=(t,e,r)=>{let s={...r1t,...r};return e.ctrl?(e.action=s.ctrl[e.name],e):e.option&&s.option?(e.action=s.option[e.name],e):e.shift?(e.action=s.shift[e.name],e):(e.action=s.keys[e.name],e)};Ewe.exports=XR});var wwe=L((Enr,Cwe)=>{\"use strict\";Cwe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(e)for(let r of Object.keys(e)){let s=e[r];typeof s==\"number\"&&(s={interval:s}),l1t(t,r,s)}};function l1t(t,e,r={}){let s=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,t.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,\"interval\",{value:n}),t.once(\"close\",()=>s.stop()),s.stop}});var vwe=L((Inr,Bwe)=>{\"use strict\";var{define:c1t,width:u1t}=$o(),FG=class{constructor(e){let r=e.options;c1t(this,\"_prompt\",e),this.type=e.type,this.name=e.name,this.message=\"\",this.header=\"\",this.footer=\"\",this.error=\"\",this.hint=\"\",this.input=\"\",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt=\"\",this.buffer=\"\",this.width=u1t(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r==\"function\"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading==\"boolean\"?this._loading:this.loadingChoices?\"choices\":!1}get status(){return this.cancelled?\"cancelled\":this.submitted?\"submitted\":\"pending\"}};Bwe.exports=FG});var Dwe=L((Cnr,Swe)=>{\"use strict\";var NG=$o(),mo=Ju(),OG={default:mo.noop,noop:mo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||NG.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||NG.complement(this.primary)},primary:mo.cyan,success:mo.green,danger:mo.magenta,strong:mo.bold,warning:mo.yellow,muted:mo.dim,disabled:mo.gray,dark:mo.dim.gray,underline:mo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};OG.merge=(t={})=>{t.styles&&typeof t.styles.enabled==\"boolean\"&&(mo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible==\"boolean\"&&(mo.visible=t.styles.visible);let e=NG.merge({},OG,t.styles);delete e.merge;for(let r of Object.keys(mo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>mo[r]});for(let r of Object.keys(mo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>mo[r]});return e};Swe.exports=OG});var Pwe=L((wnr,bwe)=>{\"use strict\";var LG=process.platform===\"win32\",$p=Ju(),f1t=$o(),MG={...$p.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:$p.symbols.check,leftAngle:\"\\u2039\",mark:\"\\u203B\",minus:\"\\u2212\",multiplication:\"\\xD7\",obelus:\"\\xF7\",percent:\"%\",pilcrow:\"\\xB6\",pilcrow2:\"\\u2761\",pencilUpRight:\"\\u2710\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",plus:\"+\",plusMinus:\"\\xB1\",pointRight:\"\\u261E\",rightAngle:\"\\u203A\",section:\"\\xA7\",hexagon:{off:\"\\u2B21\",on:\"\\u2B22\",disabled:\"\\u2B22\"},ballot:{on:\"\\u2611\",off:\"\\u2610\",disabled:\"\\u2612\"},stars:{on:\"\\u2605\",off:\"\\u2606\",disabled:\"\\u2606\"},folder:{on:\"\\u25BC\",off:\"\\u25B6\",disabled:\"\\u25B6\"},prefix:{pending:$p.symbols.question,submitted:$p.symbols.check,cancelled:$p.symbols.cross},separator:{pending:$p.symbols.pointerSmall,submitted:$p.symbols.middot,cancelled:$p.symbols.middot},radio:{off:LG?\"( )\":\"\\u25EF\",on:LG?\"(*)\":\"\\u25C9\",disabled:LG?\"(|)\":\"\\u24BE\"},numbers:[\"\\u24EA\",\"\\u2460\",\"\\u2461\",\"\\u2462\",\"\\u2463\",\"\\u2464\",\"\\u2465\",\"\\u2466\",\"\\u2467\",\"\\u2468\",\"\\u2469\",\"\\u246A\",\"\\u246B\",\"\\u246C\",\"\\u246D\",\"\\u246E\",\"\\u246F\",\"\\u2470\",\"\\u2471\",\"\\u2472\",\"\\u2473\",\"\\u3251\",\"\\u3252\",\"\\u3253\",\"\\u3254\",\"\\u3255\",\"\\u3256\",\"\\u3257\",\"\\u3258\",\"\\u3259\",\"\\u325A\",\"\\u325B\",\"\\u325C\",\"\\u325D\",\"\\u325E\",\"\\u325F\",\"\\u32B1\",\"\\u32B2\",\"\\u32B3\",\"\\u32B4\",\"\\u32B5\",\"\\u32B6\",\"\\u32B7\",\"\\u32B8\",\"\\u32B9\",\"\\u32BA\",\"\\u32BB\",\"\\u32BC\",\"\\u32BD\",\"\\u32BE\",\"\\u32BF\"]};MG.merge=t=>{let e=f1t.merge({},$p.symbols,MG,t.symbols);return delete e.merge,e};bwe.exports=MG});var kwe=L((Bnr,xwe)=>{\"use strict\";var A1t=Dwe(),p1t=Pwe(),h1t=$o();xwe.exports=t=>{t.options=h1t.merge({},t.options.theme,t.options),t.symbols=p1t.merge(t.options),t.styles=A1t.merge(t.options)}});var Nwe=L((Rwe,Fwe)=>{\"use strict\";var Qwe=process.env.TERM_PROGRAM===\"Apple_Terminal\",g1t=Ju(),_G=$o(),zu=Fwe.exports=Rwe,Mi=\"\\x1B[\",Twe=\"\\x07\",UG=!1,q0=zu.code={bell:Twe,beep:Twe,beginning:`${Mi}G`,down:`${Mi}J`,esc:Mi,getPosition:`${Mi}6n`,hide:`${Mi}?25l`,line:`${Mi}2K`,lineEnd:`${Mi}K`,lineStart:`${Mi}1K`,restorePosition:Mi+(Qwe?\"8\":\"u\"),savePosition:Mi+(Qwe?\"7\":\"s\"),screen:`${Mi}2J`,show:`${Mi}?25h`,up:`${Mi}1J`},Bm=zu.cursor={get hidden(){return UG},hide(){return UG=!0,q0.hide},show(){return UG=!1,q0.show},forward:(t=1)=>`${Mi}${t}C`,backward:(t=1)=>`${Mi}${t}D`,nextLine:(t=1)=>`${Mi}E`.repeat(t),prevLine:(t=1)=>`${Mi}F`.repeat(t),up:(t=1)=>t?`${Mi}${t}A`:\"\",down:(t=1)=>t?`${Mi}${t}B`:\"\",right:(t=1)=>t?`${Mi}${t}C`:\"\",left:(t=1)=>t?`${Mi}${t}D`:\"\",to(t,e){return e?`${Mi}${e+1};${t+1}H`:`${Mi}${t+1}G`},move(t=0,e=0){let r=\"\";return r+=t<0?Bm.left(-t):t>0?Bm.right(t):\"\",r+=e<0?Bm.up(-e):e>0?Bm.down(e):\"\",r},restore(t={}){let{after:e,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=t;if(s=_G.isPrimitive(s)?String(s):\"\",a=_G.isPrimitive(a)?String(a):\"\",f=_G.isPrimitive(f)?String(f):\"\",c){let p=zu.cursor.up(c)+zu.cursor.to(n.length),h=a.length-r;return h>0&&(p+=zu.cursor.left(h)),p}if(f||e){let p=!a&&s?-s.length:-a.length+r;return e&&(p-=e.length),a===\"\"&&s&&!n.includes(s)&&(p+=s.length),zu.cursor.move(p)}}},HG=zu.erase={screen:q0.screen,up:q0.up,down:q0.down,line:q0.line,lineEnd:q0.lineEnd,lineStart:q0.lineStart,lines(t){let e=\"\";for(let r=0;r<t;r++)e+=zu.erase.line+(r<t-1?zu.cursor.up(1):\"\");return t&&(e+=zu.code.beginning),e}};zu.clear=(t=\"\",e=process.stdout.columns)=>{if(!e)return HG.line+Bm.to(0);let r=n=>[...g1t.unstyle(n)].length,s=t.split(/\\r?\\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(HG.line+Bm.prevLine()).repeat(a-1)+HG.line+Bm.to(0)}});var sC=L((vnr,Lwe)=>{\"use strict\";var d1t=ye(\"events\"),Owe=Ju(),jG=Iwe(),m1t=wwe(),y1t=vwe(),E1t=kwe(),hl=$o(),vm=Nwe(),qG=class t extends d1t{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,E1t(this),m1t(this),this.state=new y1t(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=C1t(this.options.margin),this.setMaxListeners(0),I1t(this)}async keypress(e,r={}){this.keypressed=!0;let s=jG.action(e,jG(e,r),this.options.actions);this.state.keypress=s,this.emit(\"keypress\",e,s),this.emit(\"state\",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,e,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(vm.code.beep)}cursorHide(){this.stdout.write(vm.cursor.hide()),hl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(vm.cursor.show())}write(e){e&&(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer=\"\",!(!r&&!e||this.options.show===!1)&&this.stdout.write(vm.cursor.down(e)+vm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:s}=this.sections(),{cursor:a,initial:n=\"\",input:c=\"\",value:f=\"\"}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:e,size:p,value:f},E=vm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:s}=this.state;s=Owe.unstyle(s);let a=Owe.unstyle(e),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],S=(s+(r?\" \"+r:\"\")).length,P=S<h.length?h.slice(S+1):\"\";return{header:c,prompt:h,after:P,rest:p.slice(1),last:E}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=`\n`+this.symbols.pointer+\" \";typeof e==\"string\"?r+=e.trim():r+=\"Invalid input\",this.state.error=`\n`+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit(\"submit\",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel==\"function\"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit(\"cancel\",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(vm.cursor.down(e.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=jG.listen(this,this.keypress.bind(this)),this.once(\"close\",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip==\"function\"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:s}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial==\"function\"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun==\"function\"&&await r.onRun.call(this,this),typeof r.onSubmit==\"function\"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error(\"expected prompt to have a custom render method\")}run(){return new Promise(async(e,r)=>{if(this.once(\"submit\",e),this.once(\"cancel\",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit(\"run\")})}async element(e,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[e];n.timer=p;let h=a[e]||n[e]||c[e],E=r&&r[e]!=null?r[e]:await h;if(E===\"\")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[e]?this.resolve(h,n,r,s):C}async prefix(){let e=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,hl.isObject(e)&&(e=e[s.status]||e.pending),hl.hasColor(e)?e:(this.styles[s.status]||this.styles.pending)(e)}async message(){let e=await this.element(\"message\");return hl.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=e[s.status]||e.pending||s.separator,n=await this.resolve(a,s);return hl.isObject(n)&&(n=n[s.status]||n.pending),hl.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let s=await this.element(\"pointer\",e,r);if(typeof s==\"string\"&&hl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?\"on\":\"off\"]||s,this.state),p=hl.hasColor(f)?f:c(f);return n?p:\" \".repeat(f.length)}}async indicator(e,r){let s=await this.element(\"indicator\",e,r);if(typeof s==\"string\"&&hl.hasColor(s))return s;if(s){let a=this.styles,n=e.enabled===!0,c=n?a.success:a.dark,f=s[n?\"on\":\"off\"]||s;return hl.hasColor(f)?f:c(f)}return\"\"}body(){return null}footer(){if(this.state.status===\"pending\")return this.element(\"footer\")}header(){if(this.state.status===\"pending\")return this.element(\"header\")}async hint(){if(this.state.status===\"pending\"&&!this.isValue(this.state.input)){let e=await this.element(\"hint\");return hl.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?\"\":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==\"\"}resolve(e,...r){return hl.resolve(this,e,...r)}get base(){return t.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||hl.height(this.stdout,25)}get width(){return this.options.columns||hl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,s=[r,e].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return e=>new this(e).run()}};function I1t(t){let e=a=>t[a]===void 0||typeof t[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],s=[\"body\",\"footer\",\"error\",\"header\",\"hint\",\"indicator\",\"message\",\"prefix\",\"separator\",\"skip\"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n==\"function\"&&e(a)?s.includes(a)||(t[a]=n.bind(t)):typeof t[a]!=\"function\"&&(t[a]=n)}}function C1t(t){typeof t==\"number\"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`\n`:\" \",s=[];for(let a=0;a<4;a++){let n=r(a);e[a]?s.push(n.repeat(e[a])):s.push(\"\")}return s}Lwe.exports=qG});var Uwe=L((Snr,_we)=>{\"use strict\";var w1t=$o(),Mwe={default(t,e){return e},checkbox(t,e){throw new Error(\"checkbox role is not implemented yet\")},editable(t,e){throw new Error(\"editable role is not implemented yet\")},expandable(t,e){throw new Error(\"expandable role is not implemented yet\")},heading(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||\"\",e},input(t,e){throw new Error(\"input role is not implemented yet\")},option(t,e){return Mwe.default(t,e)},radio(t,e){throw new Error(\"radio role is not implemented yet\")},separator(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};_we.exports=(t,e={})=>{let r=w1t.merge({},Mwe,e.roles);return r[t]||r.default}});var oS=L((Dnr,qwe)=>{\"use strict\";var B1t=Ju(),v1t=sC(),S1t=Uwe(),$R=$o(),{reorder:GG,scrollUp:D1t,scrollDown:b1t,isObject:Hwe,swap:P1t}=$R,WG=class extends v1t{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=\"\"}async initialize(){typeof this.options.initial==\"function\"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!=\"function\"&&this.selectable.length===0)throw new Error(\"At least one choice must be selectable\");Hwe(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r==\"string\"&&(r=this.findIndex(r)),typeof r==\"number\"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c==\"function\"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p<c.length;p++){let h=c[p]=await this.toChoice(c[p],a++,f);s.push(h),h.choices&&await n(h.choices,h)}return s};return n(e,r).then(c=>(this.state.loadingChoices=!1,c))}async toChoice(e,r,s){if(typeof e==\"function\"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e==\"string\"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=S1t(e.role,this.options)(this,e),typeof e.disabled==\"string\"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint=\"(disabled)\"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||\"\",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input=\"\",e.index=r,e.cursor=0,$R.define(e,\"parent\",s),e.level=s?s.level+1:1,e.indent==null&&(e.indent=s?s.indent+\"  \":e.indent||\"\"),e.path=s?s.path+\".\"+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,B1t.unstyle(e.message).length));let c={...e};return e.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))e[h]=c[h];e.input=f,e.value=p},a==null&&typeof e.initial==\"function\"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit(\"choice\",e,r,this),typeof e.onChoice==\"function\"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,s){let a=await this.toChoice(e,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,s){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input=\"\",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?\"  \".repeat(e.level-1):\"\":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!=\"boolean\"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!=\"boolean\"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let s=e.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return jwe(this,this.choices),this.emit(\"toggle\",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=GG(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num=\"\",s(p)};if(n===\"0\"||n.length===1&&+(n+\"0\")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=GG(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=GG(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():e>r&&s===0?this.scrollUp():(this.index=(s-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():e>r&&s===r-1?this.scrollDown():(this.index=(s+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=D1t(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=b1t(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){P1t(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(s=>e[s]===!0)?!0:e&&e.role===\"heading\"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(s=>!this.isDisabled(s));return e.enabled&&r.every(s=>this.isEnabled(s))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r=\"value\"){return[].concat(e||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(e,r){let a=typeof e==\"function\"?e:(f,p)=>[f.name,p].includes(e),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(e,r){if(Hwe(e))return r?e[r]:e;let a=typeof e==\"function\"?e:(c,f)=>[c.name,f].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=$R.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r==\"string\"||typeof r==\"number\"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return jwe(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:s}=this,a=e.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!=\"string\"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function jwe(t,e){if(e instanceof Promise)return e;if(typeof e==\"function\"){if($R.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!t.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}qwe.exports=WG});var G0=L((bnr,Gwe)=>{\"use strict\";var x1t=oS(),YG=$o(),VG=class extends x1t{constructor(e){super(e),this.emptyError=this.options.emptyError||\"No items were selected\"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):\"\"}indicator(e,r){return this.multiple?super.indicator(e,r):\"\"}choiceMessage(e,r){let s=this.resolve(e.message,this.state,e,r);return e.role===\"heading\"&&!YG.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,e,r)}choiceSeparator(){return\":\"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||\"\"),c=await this.resolve(e.hint,this.state,e,r);c&&!YG.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(\" \");return e.role===\"heading\"?h():e.disabled?(YG.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading===\"choices\")return this.styles.warning(\"Loading choices\");if(this.state.submitted)return\"\";let e=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(e);r.length||r.push(this.styles.danger(\"No matching choices\"));let s=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(`\n`)}format(){return!this.state.submitted||this.state.cancelled?\"\":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(\", \"):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,s=\"\",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,\"\"].join(\" \"),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=\" \"+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};Gwe.exports=VG});var Ywe=L((Pnr,Wwe)=>{\"use strict\";var k1t=G0(),Q1t=(t,e)=>{let r=t.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=e(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},KG=class extends k1t{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+e+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest==\"function\")return this.options.suggest.call(this,e,r);let s=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return\"\"}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(\", \");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!==\"pending\")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Q1t(this.input,e),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Wwe.exports=KG});var zG=L((xnr,Vwe)=>{\"use strict\";var JG=$o();Vwe.exports=(t,e={})=>{t.cursorHide();let{input:r=\"\",initial:s=\"\",pos:a,showCursor:n=!0,color:c}=e,f=c||t.styles.placeholder,p=JG.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,C=\" \",S=h(C);if(t.blink&&t.blink.off===!0&&(h=R=>R,S=\"\"),n&&a===0&&s===\"\"&&r===\"\")return h(C);if(n&&a===0&&(r===s||r===\"\"))return h(s[0])+f(s.slice(1));s=JG.isPrimitive(s)?`${s}`:\"\",r=JG.isPrimitive(r)?`${r}`:\"\";let P=s&&s.startsWith(r)&&s!==r,I=P?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=\"\"),n===!1&&(I=\"\"),P){let R=t.styles.unstyle(E+I);return E+I+f(s.slice(R.length))}return E+I}});var eF=L((knr,Kwe)=>{\"use strict\";var T1t=Ju(),R1t=G0(),F1t=zG(),ZG=class extends R1t{constructor(e){super({...e,multiple:!0}),this.type=\"form\",this.initial=this.options.initial,this.align=[this.options.align,\"right\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+e+a.slice(s),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:s}=e;return e.value=e.input=s.slice(0,r-1)+s.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:s}=e;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:s}=e;return r&&r.startsWith(s)&&s!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input=\"\",e.cursor=0,this.render()):this.alert()}separator(){return\"\"}format(e){return this.state.submitted?\"\":super.format(e)}pointer(){return\"\"}indicator(e){return e.input?\"\\u29BF\":\"\\u2299\"}async choiceSeparator(e,r){let s=await this.resolve(e.separator,this.state,e,r)||\":\";return s?\" \"+this.styles.disabled(s):\"\"}async renderChoice(e,r){await this.onChoice(e,r);let{state:s,styles:a}=this,{cursor:n,initial:c=\"\",name:f,hint:p,input:h=\"\"}=e,{muted:E,submitted:C,primary:S,danger:P}=a,I=p,R=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),W=e.message;this.align===\"right\"&&(W=W.padStart(this.longest+1,\" \")),this.align===\"left\"&&(W=W.padEnd(this.longest+1,\" \"));let te=this.values[f]=h||c,ie=h?\"success\":\"dark\";await N.call(e,te,this.state)!==!0&&(ie=\"danger\");let Ae=a[ie],ce=Ae(await this.indicator(e,r))+(e.pad||\"\"),me=this.indent(e),pe=()=>[me,ce,W+U,h,I].filter(Boolean).join(\" \");if(s.submitted)return W=T1t.unstyle(W),h=C(h),I=\"\",pe();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=F1t(this,{input:h,initial:c,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[f]=await e.result.call(this,te,e,r)),R&&(W=S(W)),e.error?h+=(h?\" \":\"\")+P(e.error.trim()):e.hint&&(h+=(h?\" \":\"\")+E(e.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Kwe.exports=ZG});var XG=L((Qnr,zwe)=>{\"use strict\";var N1t=eF(),O1t=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},Jwe=(t=O1t)=>{class e extends N1t{constructor(s){super(s)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return Jwe(s)}}return e};zwe.exports=Jwe()});var $we=L((Tnr,Xwe)=>{\"use strict\";var L1t=XG();function M1t(t,e){return t.username===this.options.username&&t.password===this.options.password}var Zwe=(t=M1t)=>{let e=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends L1t.create(t){constructor(a){super({...a,choices:e})}static create(a){return Zwe(a)}}return r};Xwe.exports=Zwe()});var tF=L((Rnr,e1e)=>{\"use strict\";var _1t=sC(),{isPrimitive:U1t,hasColor:H1t}=$o(),$G=class extends _1t{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:s}=this;return s.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return U1t(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status===\"pending\"){let e=await this.element(\"hint\");return H1t(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(\" \");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=\" \"+C),f+=\" \"+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(`\n`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};e1e.exports=$G});var r1e=L((Fnr,t1e)=>{\"use strict\";var j1t=tF(),e5=class extends j1t{constructor(e){super(e),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};t1e.exports=e5});var i1e=L((Nnr,n1e)=>{\"use strict\";var q1t=G0(),G1t=eF(),oC=G1t.prototype,t5=class extends q1t{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(e,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(e===\"a\"||e===\"i\")?super[e]():oC.dispatch.call(this,e,r)}append(e,r){return oC.append.call(this,e,r)}delete(e,r){return oC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?oC.next.call(this):super.next()}prev(){return this.focused.editable?oC.prev.call(this):super.prev()}async indicator(e,r){let s=e.indicator||\"\",a=e.editable?s:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||\"\"}indent(e){return e.role===\"heading\"?\"\":e.editable?\" \":\"  \"}async renderChoice(e,r){return e.indent=\"\",e.editable?oC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return\"\"}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!=\"function\"||r.role===\"heading\")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(s=r.enabled===!0),e=await r.validate(s,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e==\"string\"?e:\"Invalid Input\"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role===\"heading\"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||\"\":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};n1e.exports=t5});var Sm=L((Onr,s1e)=>{\"use strict\";var W1t=sC(),Y1t=zG(),{isPrimitive:V1t}=$o(),r5=class extends W1t{constructor(e){super(e),this.initial=V1t(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!s||s.name!==\"return\")?this.append(`\n`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value=\"\",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+e+`${s}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),s=this.input.slice(e),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):\"\";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):Y1t(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(\" \");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=\" \"+p),n+=\" \"+f,this.clear(e),this.write([c,n,h].filter(Boolean).join(`\n`)),this.restore()}};s1e.exports=r5});var a1e=L((Lnr,o1e)=>{\"use strict\";var K1t=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),rF=t=>K1t(t).filter(Boolean);o1e.exports=(t,e={},r=\"\")=>{let{past:s=[],present:a=\"\"}=e,n,c;switch(t){case\"prev\":case\"undo\":return n=s.slice(0,s.length-1),c=s[s.length-1]||\"\",{past:rF([r,...n]),present:c};case\"next\":case\"redo\":return n=s.slice(1),c=s[0]||\"\",{past:rF([...n,r]),present:c};case\"save\":return{past:rF([...s,r]),present:\"\"};case\"remove\":return c=rF(s.filter(f=>f!==r)),a=\"\",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: \"${t}\"`)}}});var i5=L((Mnr,c1e)=>{\"use strict\";var J1t=Sm(),l1e=a1e(),n5=class extends J1t{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=l1e(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion(\"prev\")}altDown(){return this.completion(\"next\")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=l1e(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};c1e.exports=n5});var f1e=L((_nr,u1e)=>{\"use strict\";var z1t=Sm(),s5=class extends z1t{format(){return\"\"}};u1e.exports=s5});var p1e=L((Unr,A1e)=>{\"use strict\";var Z1t=Sm(),o5=class extends Z1t{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||\"\"}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(\", \")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};A1e.exports=o5});var g1e=L((Hnr,h1e)=>{\"use strict\";var X1t=G0(),a5=class extends X1t{constructor(e){super({...e,multiple:!0})}};h1e.exports=a5});var c5=L((jnr,d1e)=>{\"use strict\";var $1t=Sm(),l5=class extends $1t{constructor(e={}){super({style:\"number\",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:\"\",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e===\".\"&&this.input.includes(\".\")?this.alert(\"invalid number\"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(e){let r=e||this.minor,s=this.toNumber(this.input);return s<this.min-r?this.alert():(this.input=`${s-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format==\"function\"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=\"\"){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};d1e.exports=l5});var y1e=L((qnr,m1e)=>{m1e.exports=c5()});var I1e=L((Gnr,E1e)=>{\"use strict\";var e2t=Sm(),u5=class extends e2t{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):\"\"}};E1e.exports=u5});var B1e=L((Wnr,w1e)=>{\"use strict\";var t2t=Ju(),r2t=oS(),C1e=$o(),f5=class extends r2t{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||\"left\"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||`\n   `;let r=e.startNumber||1;typeof this.scale==\"number\"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s<this.scale.length;s++)r.scale.push({index:s})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,s){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return\"\"}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(\", \"):\"\"}pointer(){return\"\"}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?\"\":[\"\",...this.scale.map(s=>`   ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(`\n`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading==\"function\"&&(r=this.options.renderScaleHeading.call(this,e));let s=this.scaleLength-r.join(\"\").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),f=\" \".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(e,r,s){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,e,r,s);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let s=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!C1e.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),f=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),C=this.margin[1]+this.margin[3];this.scaleLength=t2t.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let P=C1e.wordWrap(h,{width:this.widths[0],newline:f}).split(`\n`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),P=P.map(I=>this.styles.info(I))),P[0]+=E,this.linebreak&&P.push(\"\"),[p+a,P.join(`\n`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return\"\";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=\"\";this.options.promptLine!==!1&&(c=[s,n,a,\"\"].join(\" \"),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),P=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=\" \"+E),e&&!p&&!C.trim()&&this.multiple&&P!=null&&(c+=this.styles.danger(P)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(`\n`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};w1e.exports=f5});var D1e=L((Ynr,S1e)=>{\"use strict\";var v1e=Ju(),n2t=(t=\"\")=>typeof t==\"string\"?t.replace(/^['\"]|['\"]$/g,\"\"):\"\",p5=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=n2t(e.initial||this.field.initial||\"\"),this.message=e.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},i2t=async(t={},e={},r=s=>s)=>{let s=new Set,a=t.fields||[],n=t.template,c=[],f=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],P=I=>{I.line=h,c.push(I)};for(P({type:\"bos\",value:\"\"});E<n.length-1;){let I=C();if(/^[^\\S\\n ]$/.test(I)){P({type:\"text\",value:I});continue}if(I===`\n`){P({type:\"newline\",value:I}),h++;continue}if(I===\"\\\\\"){I+=C(),P({type:\"text\",value:I});continue}if((I===\"$\"||I===\"#\"||I===\"{\")&&S()===\"{\"){let N=C();I+=N;let U={type:\"template\",open:I,inner:\"\",close:\"\",value:I},W;for(;W=C();){if(W===\"}\"){S()===\"}\"&&(W+=C()),U.value+=W,U.close=W;break}W===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=W),U.value+=W,U.inner+=W}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,e.hasOwnProperty(U.key)&&(U.initial=e[U.key]),U=r(U),P(U),p.push(U.key),s.add(U.key);let te=f.find(ie=>ie.name===U.key);U.field=a.find(ie=>ie.name===U.key),te||(te=new p5(U),f.push(te)),te.lines.push(U.line-1);continue}let R=c[c.length-1];R.type===\"text\"&&R.line===h?R.value+=I:P({type:\"text\",value:I})}return P({type:\"eos\",value:\"\"}),{input:n,tabstops:c,unique:s,keys:p,items:f}};S1e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),s={...e.values,...e.initial},{tabstops:a,items:n,keys:c}=await i2t(e,s),f=A5(\"result\",t,e),p=A5(\"format\",t,e),h=A5(\"validate\",t,e,!0),E=t.isValue.bind(t);return async(C={},S=!1)=>{let P=0;C.required=r,C.items=n,C.keys=c,C.output=\"\";let I=async(W,te,ie,Ae)=>{let ce=await h(W,te,ie,Ae);return ce===!1?\"Invalid field \"+ie.name:ce};for(let W of a){let te=W.value,ie=W.key;if(W.type!==\"template\"){te&&(C.output+=te);continue}if(W.type===\"template\"){let Ae=n.find(Ce=>Ce.name===ie);e.required===!0&&C.required.add(Ae.name);let ce=[Ae.input,C.values[Ae.value],Ae.value,te].find(E),pe=(Ae.field||{}).message||W.inner;if(S){let Ce=await I(C.values[ie],C,Ae,P);if(Ce&&typeof Ce==\"string\"||Ce===!1){C.invalid.set(ie,Ce);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,Ae,P);C.output+=v1e.unstyle(g);continue}Ae.placeholder=!1;let Be=te;te=await p(te,C,Ae,P),ce!==te?(C.values[ie]=ce,te=t.styles.typing(ce),C.missing.delete(pe)):(C.values[ie]=void 0,ce=`<${pe}>`,te=t.styles.primary(ce),Ae.placeholder=!0,C.required.has(ie)&&C.missing.add(pe)),C.missing.has(pe)&&C.validating&&(te=t.styles.warning(ce)),C.invalid.has(ie)&&C.validating&&(te=t.styles.danger(ce)),P===C.index&&(Be!==te?te=t.styles.underline(te):te=t.styles.heading(v1e.unstyle(te))),P++}te&&(C.output+=te)}let R=C.output.split(`\n`).map(W=>\" \"+W),N=n.length,U=0;for(let W of n)C.invalid.has(W.name)&&W.lines.forEach(te=>{R[te][0]===\" \"&&(R[te]=C.styles.danger(C.symbols.bullet)+R[te].slice(1))}),t.isValue(C.values[W.name])&&U++;return C.completed=(U/N*100).toFixed(0),C.output=R.join(`\n`),C.output}};function A5(t,e,r,s){return(a,n,c,f)=>typeof c.field[t]==\"function\"?c.field[t].call(e,a,n,c,f):[s,a].find(p=>e.isValue(p))}});var P1e=L((Vnr,b1e)=>{\"use strict\";var s2t=Ju(),o2t=D1e(),a2t=sC(),h5=class extends a2t{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await o2t(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),s=e.input.slice(0,this.cursor-1);this.input=e.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,`\n`].find(W=>W!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),C=await this.error()||\"\",S=await this.hint()||\"\",P=s?\"\":await this.interpolate(this.state),I=this.state.key=r[e]||\"\",R=await this.format(I),N=await this.footer();R&&(h+=\" \"+R),S&&!R&&this.state.completed===0&&(h+=\" \"+S),this.clear(a);let U=[E,h,P,N,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!=\"function\"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:s,values:a}=this.state;if(e.size){let f=\"\";for(let[p,h]of e)f+=`Invalid ${p}: ${h}\n`;return this.state.error=f,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let c=s2t.unstyle(s).split(`\n`).map(f=>f.slice(1)).join(`\n`);return this.value={values:a,result:c},super.submit()}};b1e.exports=h5});var k1e=L((Knr,x1e)=>{\"use strict\";var l2t=\"(Use <shift>+<up/down> to sort)\",c2t=G0(),g5=class extends c2t{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,l2t].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(e,r){let s=await super.renderChoice(e,r),a=this.symbols.identicalTo+\" \",n=this.index===r&&this.sorting?this.styles.muted(a):\"  \";return this.options.drag===!1&&(n=\"\"),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};x1e.exports=g5});var T1e=L((Jnr,Q1e)=>{\"use strict\";var u2t=oS(),d5=class extends u2t{constructor(e={}){if(super(e),this.emptyError=e.emptyError||\"No items were selected\",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=[\"\",\"4 - Strongly Agree\",\"3 - Agree\",\"2 - Neutral\",\"1 - Disagree\",\"0 - Strongly Disagree\",\"\"];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(`\n   `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let s of r)s.scale=f2t(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],s=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return\"\"}pointer(){return\"\"}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return\"   \"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=this.term===\"Hyper\",n=a?9:8,c=a?\"\":\" \",f=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=te=>(te?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+c,E=r+1+\".\",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(e.message,this.state,e,r),P=this.indent(e),I=P+e.scale.map((te,ie)=>h(ie===e.scaleIdx)).join(f),R=te=>te===e.scaleIdx?C(te):te,N=P+e.scale.map((te,ie)=>R(ie)).join(p),U=()=>[E,S].filter(Boolean).join(\" \"),W=()=>[U(),I,N,\" \"].filter(Boolean).join(`\n`);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),W()}async renderChoices(){if(this.state.submitted)return\"\";let e=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger(\"No matching choices\")),r.join(`\n`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(\", \"):\"\"}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(\" \");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=\" \"+p),h&&!c.includes(h)&&(c+=\" \"+h),e&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(`\n`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function f2t(t,e={}){if(Array.isArray(e.scale))return e.scale.map(s=>({...s}));let r=[];for(let s=1;s<t+1;s++)r.push({i:s,selected:!1});return r}Q1e.exports=d5});var F1e=L((znr,R1e)=>{R1e.exports=i5()});var O1e=L((Znr,N1e)=>{\"use strict\";var A2t=tF(),m5=class extends A2t{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||\"no\",this.enabled=this.options.enabled||\"yes\",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e=\"\",r){switch(e.toLowerCase()){case\" \":return this.toggle();case\"1\":case\"y\":case\"t\":return this.enable();case\"0\":case\"n\":case\"f\":return this.disable();default:return this.alert()}}format(){let e=s=>this.styles.primary.underline(s);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(\" / \"))}async render(){let{size:e}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(\" \");this.state.prompt=h,f&&!h.includes(f)&&(h+=\" \"+f),this.clear(e),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};N1e.exports=m5});var M1e=L((Xnr,L1e)=>{\"use strict\";var p2t=G0(),y5=class extends p2t{constructor(e){if(super(e),typeof this.options.correctChoice!=\"number\"||this.options.correctChoice<0)throw new Error(\"Please specify the index of the correct answer from the list of choices\")}async toChoices(e,r){let s=await super.toChoices(e,r);if(s.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>s.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return s}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};L1e.exports=y5});var U1e=L(E5=>{\"use strict\";var _1e=$o(),Qs=(t,e)=>{_1e.defineExport(E5,t,e),_1e.defineExport(E5,t.toLowerCase(),e)};Qs(\"AutoComplete\",()=>Ywe());Qs(\"BasicAuth\",()=>$we());Qs(\"Confirm\",()=>r1e());Qs(\"Editable\",()=>i1e());Qs(\"Form\",()=>eF());Qs(\"Input\",()=>i5());Qs(\"Invisible\",()=>f1e());Qs(\"List\",()=>p1e());Qs(\"MultiSelect\",()=>g1e());Qs(\"Numeral\",()=>y1e());Qs(\"Password\",()=>I1e());Qs(\"Scale\",()=>B1e());Qs(\"Select\",()=>G0());Qs(\"Snippet\",()=>P1e());Qs(\"Sort\",()=>k1e());Qs(\"Survey\",()=>T1e());Qs(\"Text\",()=>F1e());Qs(\"Toggle\",()=>O1e());Qs(\"Quiz\",()=>M1e())});var j1e=L((eir,H1e)=>{H1e.exports={ArrayPrompt:oS(),AuthPrompt:XG(),BooleanPrompt:tF(),NumberPrompt:c5(),StringPrompt:Sm()}});var lS=L((tir,G1e)=>{\"use strict\";var q1e=ye(\"assert\"),C5=ye(\"events\"),W0=$o(),Zu=class extends C5{constructor(e,r){super(),this.options=W0.merge({},e),this.answers={...r}}register(e,r){if(W0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}q1e.equal(typeof r,\"function\",\"expected a function\");let s=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r==\"function\"&&(r=await r.call(this)),await this.ask(W0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(e){typeof e==\"function\"&&(e=await e.call(this));let r=W0.merge({},this.options,e),{type:s,name:a}=e,{set:n,get:c}=W0;if(typeof s==\"function\"&&(s=await s.call(this,e,this.answers)),!s)return this.answers[a];q1e(this.prompts[s],`Prompt \"${s}\" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on(\"submit\",E=>{this.emit(\"answer\",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill===\"show\"&&await f.submit()):p=f.value=await f.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sC()}static get prompts(){return U1e()}static get types(){return j1e()}static get prompt(){let e=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(e.emit(...c),n(...c)),a.prompt(r)};return W0.mixinEmitter(e,new C5),e}};W0.mixinEmitter(Zu,new C5);var I5=Zu.prompts;for(let t of Object.keys(I5)){let e=t.toLowerCase(),r=s=>new I5[t](s).run();Zu.prompt[e]=r,Zu[e]=r,Zu[t]||Reflect.defineProperty(Zu,t,{get:()=>I5[t]})}var aS=t=>{W0.defineExport(Zu,t,()=>Zu.types[t])};aS(\"ArrayPrompt\");aS(\"AuthPrompt\");aS(\"BooleanPrompt\");aS(\"NumberPrompt\");aS(\"StringPrompt\");G1e.exports=Zu});var AS=L((Lir,Z1e)=>{var I2t=qR();function C2t(t,e,r){var s=t==null?void 0:I2t(t,e);return s===void 0?r:s}Z1e.exports=C2t});var e2e=L((qir,$1e)=>{function w2t(t,e){for(var r=-1,s=t==null?0:t.length;++r<s&&e(t[r],r,t)!==!1;);return t}$1e.exports=w2t});var r2e=L((Gir,t2e)=>{var B2t=Jd(),v2t=Uk();function S2t(t,e){return t&&B2t(e,v2t(e),t)}t2e.exports=S2t});var i2e=L((Wir,n2e)=>{var D2t=Jd(),b2t=qE();function P2t(t,e){return t&&D2t(e,b2t(e),t)}n2e.exports=P2t});var o2e=L((Yir,s2e)=>{var x2t=Jd(),k2t=Fk();function Q2t(t,e){return x2t(t,k2t(t),e)}s2e.exports=Q2t});var b5=L((Vir,a2e)=>{var T2t=Rk(),R2t=Wk(),F2t=Fk(),N2t=_4(),O2t=Object.getOwnPropertySymbols,L2t=O2t?function(t){for(var e=[];t;)T2t(e,F2t(t)),t=R2t(t);return e}:N2t;a2e.exports=L2t});var c2e=L((Kir,l2e)=>{var M2t=Jd(),_2t=b5();function U2t(t,e){return M2t(t,_2t(t),e)}l2e.exports=U2t});var P5=L((Jir,u2e)=>{var H2t=M4(),j2t=b5(),q2t=qE();function G2t(t){return H2t(t,q2t,j2t)}u2e.exports=G2t});var A2e=L((zir,f2e)=>{var W2t=Object.prototype,Y2t=W2t.hasOwnProperty;function V2t(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]==\"string\"&&Y2t.call(t,\"index\")&&(r.index=t.index,r.input=t.input),r}f2e.exports=V2t});var h2e=L((Zir,p2e)=>{var K2t=qk();function J2t(t,e){var r=e?K2t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}p2e.exports=J2t});var d2e=L((Xir,g2e)=>{var z2t=/\\w*$/;function Z2t(t){var e=new t.constructor(t.source,z2t.exec(t));return e.lastIndex=t.lastIndex,e}g2e.exports=Z2t});var C2e=L(($ir,I2e)=>{var m2e=Yd(),y2e=m2e?m2e.prototype:void 0,E2e=y2e?y2e.valueOf:void 0;function X2t(t){return E2e?Object(E2e.call(t)):{}}I2e.exports=X2t});var B2e=L((esr,w2e)=>{var $2t=qk(),eBt=h2e(),tBt=d2e(),rBt=C2e(),nBt=$4(),iBt=\"[object Boolean]\",sBt=\"[object Date]\",oBt=\"[object Map]\",aBt=\"[object Number]\",lBt=\"[object RegExp]\",cBt=\"[object Set]\",uBt=\"[object String]\",fBt=\"[object Symbol]\",ABt=\"[object ArrayBuffer]\",pBt=\"[object DataView]\",hBt=\"[object Float32Array]\",gBt=\"[object Float64Array]\",dBt=\"[object Int8Array]\",mBt=\"[object Int16Array]\",yBt=\"[object Int32Array]\",EBt=\"[object Uint8Array]\",IBt=\"[object Uint8ClampedArray]\",CBt=\"[object Uint16Array]\",wBt=\"[object Uint32Array]\";function BBt(t,e,r){var s=t.constructor;switch(e){case ABt:return $2t(t);case iBt:case sBt:return new s(+t);case pBt:return eBt(t,r);case hBt:case gBt:case dBt:case mBt:case yBt:case EBt:case IBt:case CBt:case wBt:return nBt(t,r);case oBt:return new s;case aBt:case uBt:return new s(t);case lBt:return tBt(t);case cBt:return new s;case fBt:return rBt(t)}}w2e.exports=BBt});var S2e=L((tsr,v2e)=>{var vBt=_B(),SBt=zf(),DBt=\"[object Map]\";function bBt(t){return SBt(t)&&vBt(t)==DBt}v2e.exports=bBt});var x2e=L((rsr,P2e)=>{var PBt=S2e(),xBt=Ok(),D2e=Lk(),b2e=D2e&&D2e.isMap,kBt=b2e?xBt(b2e):PBt;P2e.exports=kBt});var Q2e=L((nsr,k2e)=>{var QBt=_B(),TBt=zf(),RBt=\"[object Set]\";function FBt(t){return TBt(t)&&QBt(t)==RBt}k2e.exports=FBt});var N2e=L((isr,F2e)=>{var NBt=Q2e(),OBt=Ok(),T2e=Lk(),R2e=T2e&&T2e.isSet,LBt=R2e?OBt(R2e):NBt;F2e.exports=LBt});var x5=L((ssr,_2e)=>{var MBt=Qk(),_Bt=e2e(),UBt=Yk(),HBt=r2e(),jBt=i2e(),qBt=X4(),GBt=Gk(),WBt=o2e(),YBt=c2e(),VBt=q4(),KBt=P5(),JBt=_B(),zBt=A2e(),ZBt=B2e(),XBt=e3(),$Bt=xc(),evt=FB(),tvt=x2e(),rvt=Wl(),nvt=N2e(),ivt=Uk(),svt=qE(),ovt=1,avt=2,lvt=4,O2e=\"[object Arguments]\",cvt=\"[object Array]\",uvt=\"[object Boolean]\",fvt=\"[object Date]\",Avt=\"[object Error]\",L2e=\"[object Function]\",pvt=\"[object GeneratorFunction]\",hvt=\"[object Map]\",gvt=\"[object Number]\",M2e=\"[object Object]\",dvt=\"[object RegExp]\",mvt=\"[object Set]\",yvt=\"[object String]\",Evt=\"[object Symbol]\",Ivt=\"[object WeakMap]\",Cvt=\"[object ArrayBuffer]\",wvt=\"[object DataView]\",Bvt=\"[object Float32Array]\",vvt=\"[object Float64Array]\",Svt=\"[object Int8Array]\",Dvt=\"[object Int16Array]\",bvt=\"[object Int32Array]\",Pvt=\"[object Uint8Array]\",xvt=\"[object Uint8ClampedArray]\",kvt=\"[object Uint16Array]\",Qvt=\"[object Uint32Array]\",Ii={};Ii[O2e]=Ii[cvt]=Ii[Cvt]=Ii[wvt]=Ii[uvt]=Ii[fvt]=Ii[Bvt]=Ii[vvt]=Ii[Svt]=Ii[Dvt]=Ii[bvt]=Ii[hvt]=Ii[gvt]=Ii[M2e]=Ii[dvt]=Ii[mvt]=Ii[yvt]=Ii[Evt]=Ii[Pvt]=Ii[xvt]=Ii[kvt]=Ii[Qvt]=!0;Ii[Avt]=Ii[L2e]=Ii[Ivt]=!1;function iF(t,e,r,s,a,n){var c,f=e&ovt,p=e&avt,h=e&lvt;if(r&&(c=a?r(t,s,a,n):r(t)),c!==void 0)return c;if(!rvt(t))return t;var E=$Bt(t);if(E){if(c=zBt(t),!f)return GBt(t,c)}else{var C=JBt(t),S=C==L2e||C==pvt;if(evt(t))return qBt(t,f);if(C==M2e||C==O2e||S&&!a){if(c=p||S?{}:XBt(t),!f)return p?YBt(t,jBt(c,t)):WBt(t,HBt(c,t))}else{if(!Ii[C])return a?t:{};c=ZBt(t,C,f)}}n||(n=new MBt);var P=n.get(t);if(P)return P;n.set(t,c),nvt(t)?t.forEach(function(N){c.add(iF(N,e,r,N,t,n))}):tvt(t)&&t.forEach(function(N,U){c.set(U,iF(N,e,r,U,t,n))});var I=h?p?KBt:VBt:p?svt:ivt,R=E?void 0:I(t);return _Bt(R||t,function(N,U){R&&(U=N,N=t[U]),UBt(c,U,iF(N,e,r,U,t,n))}),c}_2e.exports=iF});var k5=L((osr,U2e)=>{var Tvt=x5(),Rvt=1,Fvt=4;function Nvt(t){return Tvt(t,Rvt|Fvt)}U2e.exports=Nvt});var Q5=L((asr,H2e)=>{var Ovt=CG();function Lvt(t,e,r){return t==null?t:Ovt(t,e,r)}H2e.exports=Lvt});var Y2e=L((psr,W2e)=>{var Mvt=Object.prototype,_vt=Mvt.hasOwnProperty;function Uvt(t,e){return t!=null&&_vt.call(t,e)}W2e.exports=Uvt});var K2e=L((hsr,V2e)=>{var Hvt=Y2e(),jvt=wG();function qvt(t,e){return t!=null&&jvt(t,e,Hvt)}V2e.exports=qvt});var z2e=L((gsr,J2e)=>{function Gvt(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}J2e.exports=Gvt});var X2e=L((dsr,Z2e)=>{var Wvt=qR(),Yvt=A6();function Vvt(t,e){return e.length<2?t:Wvt(t,Yvt(e,0,-1))}Z2e.exports=Vvt});var R5=L((msr,$2e)=>{var Kvt=wm(),Jvt=z2e(),zvt=X2e(),Zvt=XI();function Xvt(t,e){return e=Kvt(e,t),t=zvt(t,e),t==null||delete t[Zvt(Jvt(e))]}$2e.exports=Xvt});var F5=L((ysr,eBe)=>{var $vt=R5();function eSt(t,e){return t==null?!0:$vt(t,e)}eBe.exports=eSt});var sBe=L((Vsr,nSt)=>{nSt.exports={name:\"@yarnpkg/cli\",version:\"4.9.1\",license:\"BSD-2-Clause\",main:\"./sources/index.ts\",exports:{\".\":\"./sources/index.ts\",\"./polyfills\":\"./sources/polyfills.ts\",\"./package.json\":\"./package.json\"},dependencies:{\"@yarnpkg/core\":\"workspace:^\",\"@yarnpkg/fslib\":\"workspace:^\",\"@yarnpkg/libzip\":\"workspace:^\",\"@yarnpkg/parsers\":\"workspace:^\",\"@yarnpkg/plugin-compat\":\"workspace:^\",\"@yarnpkg/plugin-constraints\":\"workspace:^\",\"@yarnpkg/plugin-dlx\":\"workspace:^\",\"@yarnpkg/plugin-essentials\":\"workspace:^\",\"@yarnpkg/plugin-exec\":\"workspace:^\",\"@yarnpkg/plugin-file\":\"workspace:^\",\"@yarnpkg/plugin-git\":\"workspace:^\",\"@yarnpkg/plugin-github\":\"workspace:^\",\"@yarnpkg/plugin-http\":\"workspace:^\",\"@yarnpkg/plugin-init\":\"workspace:^\",\"@yarnpkg/plugin-interactive-tools\":\"workspace:^\",\"@yarnpkg/plugin-jsr\":\"workspace:^\",\"@yarnpkg/plugin-link\":\"workspace:^\",\"@yarnpkg/plugin-nm\":\"workspace:^\",\"@yarnpkg/plugin-npm\":\"workspace:^\",\"@yarnpkg/plugin-npm-cli\":\"workspace:^\",\"@yarnpkg/plugin-pack\":\"workspace:^\",\"@yarnpkg/plugin-patch\":\"workspace:^\",\"@yarnpkg/plugin-pnp\":\"workspace:^\",\"@yarnpkg/plugin-pnpm\":\"workspace:^\",\"@yarnpkg/plugin-stage\":\"workspace:^\",\"@yarnpkg/plugin-typescript\":\"workspace:^\",\"@yarnpkg/plugin-version\":\"workspace:^\",\"@yarnpkg/plugin-workspace-tools\":\"workspace:^\",\"@yarnpkg/shell\":\"workspace:^\",\"ci-info\":\"^4.0.0\",clipanion:\"^4.0.0-rc.2\",semver:\"^7.1.2\",tslib:\"^2.4.0\",typanion:\"^3.14.0\"},devDependencies:{\"@types/semver\":\"^7.1.0\",\"@yarnpkg/builder\":\"workspace:^\",\"@yarnpkg/monorepo\":\"workspace:^\",\"@yarnpkg/pnpify\":\"workspace:^\"},peerDependencies:{\"@yarnpkg/core\":\"workspace:^\"},scripts:{postpack:\"rm -rf lib\",prepack:'run build:compile \"$(pwd)\"',\"build:cli+hook\":\"run build:pnp:hook && builder build bundle\",\"build:cli\":\"builder build bundle\",\"run:cli\":\"builder run\",\"update-local\":\"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/\"},publishConfig:{main:\"./lib/index.js\",bin:null,exports:{\".\":\"./lib/index.js\",\"./package.json\":\"./package.json\"}},files:[\"/lib/**/*\",\"!/lib/pluginConfiguration.*\",\"!/lib/cli.*\"],\"@yarnpkg/builder\":{bundles:{standard:[\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-jsr\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]}},repository:{type:\"git\",url:\"git+https://github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var q5=L((Dcr,mBe)=>{\"use strict\";mBe.exports=function(e,r){r===!0&&(r=0);var s=\"\";if(typeof e==\"string\")try{s=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(s=e.protocol);var a=s.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var EBe=L((bcr,yBe)=>{\"use strict\";var BSt=q5();function vSt(t){var e={protocols:[],protocol:null,port:null,resource:\"\",host:\"\",user:\"\",password:\"\",pathname:\"\",hash:\"\",search:\"\",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=BSt(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||\"\",e.password=r.password||\"\",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=[\"file\"],e.protocol=e.protocols[0],e.port=\"\",e.resource=\"\",e.user=\"\",e.pathname=\"\",e.hash=\"\",e.search=\"\",e.href=t,e.query={},e.parse_failed=!0}return e}yBe.exports=vSt});var wBe=L((Pcr,CBe)=>{\"use strict\";var SSt=EBe();function DSt(t){return t&&typeof t==\"object\"&&\"default\"in t?t:{default:t}}var bSt=DSt(SSt),PSt=\"text/plain\",xSt=\"us-ascii\",IBe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),kSt=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(\";\");n=e?\"\":n;let f=!1;c[c.length-1]===\"base64\"&&(c.pop(),f=!0);let p=(c.shift()||\"\").toLowerCase(),E=[...c.map(C=>{let[S,P=\"\"]=C.split(\"=\").map(I=>I.trim());return S===\"charset\"&&(P=P.toLowerCase(),P===xSt)?\"\":`${S}${P?`=${P}`:\"\"}`}).filter(Boolean)];return f&&E.push(\"base64\"),(E.length>0||p&&p!==PSt)&&E.unshift(p),`data:${E.join(\";\")},${f?a.trim():a}${n?`#${n}`:\"\"}`};function QSt(t,e){if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return kSt(t,e);if(/^view-source:/i.test(t))throw new Error(\"`view-source:` is not supported as it is a non-standard protocol\");let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash?a.hash=\"\":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,\"\")),a.pathname){let c=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,f=0,p=\"\";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,P=a.pathname.slice(f,S);p+=P.replace(/\\/{2,}/g,\"/\"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\\/{2,}/g,\"/\"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let c=a.pathname.split(\"/\"),f=c[c.length-1];IBe(f,e.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let c of[...a.searchParams.keys()])IBe(c,e.removeQueryParameters)&&a.searchParams.delete(c);if(e.removeQueryParameters===!0&&(a.search=\"\"),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\"));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname===\"/\"&&!n.endsWith(\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&e.removeSingleSlash&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t}var G5=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=t,c};(typeof t!=\"string\"||!t.trim())&&s(\"Invalid url.\"),t.length>G5.MAX_INPUT_LENGTH&&s(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),e&&(typeof e!=\"object\"&&(e={stripHash:!1}),t=QSt(t,e));let a=bSt.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=[\"ssh\"],a.protocol=\"ssh\",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s(\"URL parsing failed.\")}return a};G5.MAX_INPUT_LENGTH=2048;CBe.exports=G5});var SBe=L((xcr,vBe)=>{\"use strict\";var TSt=q5();function BBe(t){if(Array.isArray(t))return t.indexOf(\"ssh\")!==-1||t.indexOf(\"rsync\")!==-1;if(typeof t!=\"string\")return!1;var e=TSt(t);if(t=t.substring(t.indexOf(\"://\")+3),BBe(e))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!t.match(r)&&t.indexOf(\"@\")<t.indexOf(\":\")}vBe.exports=BBe});var PBe=L((kcr,bBe)=>{\"use strict\";var RSt=wBe(),DBe=SBe();function FSt(t){var e=RSt(t);return e.token=\"\",e.password===\"x-oauth-basic\"?e.token=e.user:e.user===\"x-token-auth\"&&(e.token=e.password),DBe(e.protocols)||e.protocols.length===0&&DBe(t)?e.protocol=\"ssh\":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol=\"file\",e.protocols=[\"file\"]),e.href=e.href.replace(/\\/$/,\"\"),e}bBe.exports=FSt});var kBe=L((Qcr,xBe)=>{\"use strict\";var NSt=PBe();function W5(t){if(typeof t!=\"string\")throw new Error(\"The url must be a string.\");var e=/^([a-z\\d-]{1,39})\\/([-\\.\\w]{1,100})$/i;e.test(t)&&(t=\"https://github.com/\"+t);var r=NSt(t),s=r.resource.split(\".\"),a=null;switch(r.toString=function(N){return W5.stringify(this,N)},r.source=s.length>2?s.slice(1-s.length).join(\".\"):r.source=r.resource,r.git_suffix=/\\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\\/)|(\\/$)/g,\"\").replace(/\\.git$/,\"\")),r.owner=decodeURIComponent(r.user),r.source){case\"git.cloudforge.com\":r.owner=r.user,r.organization=s[0],r.source=\"cloudforge.com\";break;case\"visualstudio.com\":if(r.resource===\"vs-ssh.visualstudio.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+\"/\"+a[3]);break}else{a=r.name.split(\"/\"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name);break}case\"dev.azure.com\":case\"azure.com\":if(r.resource===\"ssh.dev.azure.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split(\"/\"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\\/+/g,\"\")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,\"\"));break}default:a=r.name.split(\"/\");var n=a.length-1;if(a.length>=2){var c=a.indexOf(\"-\",2),f=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),C=a.indexOf(\"raw\",2),S=a.indexOf(\"edit\",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join(\"/\"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref=\"\",r.filepathtype=\"\",r.filepath=\"\";var P=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>P+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[P+1])>=0&&(r.filepathtype=a[P+1],r.ref=a[P+2],a.length>P+3&&(r.filepath=a.slice(P+3).join(\"/\"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+=\"/\"),r.full_name+=r.name)),r.owner.startsWith(\"scm/\")&&(r.source=\"bitbucket-server\",r.owner=r.owner.replace(\"scm/\",\"\"),r.organization=r.owner,r.full_name=r.owner+\"/\"+r.name);var I=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,R=I.exec(r.pathname);return R!=null&&(r.source=\"bitbucket-server\",R[1]===\"users\"?r.owner=\"~\"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split(\"/\"),a.length>1&&([\"raw\",\"browse\"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join(\"/\"))):a[1]===\"commits\"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+\"/\"+r.name,r.query.at?r.ref=r.query.at:r.ref=\"\"),r}W5.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join(\"+\"):t.protocol);var r=t.port?\":\"+t.port:\"\",s=t.user||\"git\",a=t.git_suffix?\".git\":\"\";switch(e){case\"ssh\":return r?\"ssh://\"+s+\"@\"+t.resource+r+\"/\"+t.full_name+a:s+\"@\"+t.resource+\":\"+t.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return e+\"://\"+s+\"@\"+t.resource+r+\"/\"+t.full_name+a;case\"http\":case\"https\":var n=t.token?OSt(t):t.user&&(t.protocols.includes(\"http\")||t.protocols.includes(\"https\"))?t.user+\"@\":\"\";return e+\"://\"+n+t.resource+r+\"/\"+LSt(t)+a;default:return t.href}};function OSt(t){switch(t.source){case\"bitbucket.org\":return\"x-token-auth:\"+t.token+\"@\";default:return t.token+\"@\"}}function LSt(t){switch(t.source){case\"bitbucket-server\":return\"scm/\"+t.full_name;default:return\"\"+t.full_name}}xBe.exports=W5});var YBe=L((ufr,WBe)=>{var KSt=RT(),JSt=Gk(),zSt=xc(),ZSt=aI(),XSt=IG(),$St=XI(),eDt=Tv();function tDt(t){return zSt(t)?KSt(t,$St):ZSt(t)?[t]:JSt(XSt(eDt(t)))}WBe.exports=tDt});function sDt(t,e){return e===1&&iDt.has(t[0])}function ES(t){let e=Array.isArray(t)?t:(0,JBe.default)(t);return e.map((s,a)=>rDt.test(s)?`[${s}]`:nDt.test(s)&&!sDt(e,a)?`.${s}`:`[${JSON.stringify(s)}]`).join(\"\").replace(/^\\./,\"\")}function oDt(t,e){let r=[];if(e.methodName!==null&&r.push(he.pretty(t,e.methodName,he.Type.CODE)),e.file!==null){let s=[];s.push(he.pretty(t,e.file,he.Type.PATH)),e.line!==null&&(s.push(he.pretty(t,e.line,he.Type.NUMBER)),e.column!==null&&s.push(he.pretty(t,e.column,he.Type.NUMBER))),r.push(`(${s.join(he.pretty(t,\":\",\"grey\"))})`)}return r.join(\" \")}function lF(t,{manifestUpdates:e,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...e]){let h=r.get(f)?.map(P=>({text:P,fixable:!1}))??[],E=!1,C=t.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[P,I]of p){if(I.size>1){let R=[...I].map(([N,U])=>{let W=he.pretty(t.configuration,N,he.Type.INSPECT),te=U.size>0?oDt(t.configuration,U.values().next().value):null;return te!==null?`\n${W} at ${te}`:`\n${W}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${he.pretty(t.configuration,P,he.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=I,N=(0,VBe.default)(S,P);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!s){let U=typeof N>\"u\"?`Missing field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}`:typeof R>\"u\"?`Extraneous field ${he.pretty(t.configuration,P,he.Type.CODE)} currently set to ${he.pretty(t.configuration,N,he.Type.INSPECT)}`:`Invalid field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}, found ${he.pretty(t.configuration,N,he.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>\"u\"?(0,zBe.default)(S,P):(0,KBe.default)(S,P,R),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function ZBe(t,{configuration:e}){let r={children:[]};for(let[s,a]of t){let n=[];for(let f of a){let p=f.text.split(/\\n/);f.fixable&&(p[0]=`${he.pretty(e,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:he.tuple(he.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:he.tuple(he.Type.NO_HINT,h)}))})}let c={value:he.tuple(he.Type.LOCATOR,s.anchoredLocator),children:je.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=je.sortMap(r.children,s=>s.value[1]),r}var VBe,KBe,JBe,zBe,VC,rDt,nDt,iDt,IS=It(()=>{Ve();VBe=et(AS()),KBe=et(Q5()),JBe=et(YBe()),zBe=et(F5()),VC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let s=Object.hasOwn(e,r)?e[r]:void 0;if(typeof s>\"u\")continue;je.getArrayWithDefault(this.indexes[r],s).push(e)}return e}find(e){if(typeof e>\"u\")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<\"u\"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},rDt=/^[0-9]+$/,nDt=/^[a-zA-Z0-9_]+$/,iDt=new Set([\"scripts\",...Ht.allDependencies])});var XBe=L((wfr,s9)=>{var aDt;(function(t){var e=function(){return{\"append/2\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"L\")]),new t.type.Term(\"foldl\",[new t.type.Term(\"append\",[]),new t.type.Var(\"X\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"L\")]))],\"append/3\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"X\"),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"append\",[new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"S\")]))],\"member/2\":[new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"_\")])]),null),new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]))],\"permutation/2\":[new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"permutation\",[new t.type.Var(\"T\"),new t.type.Var(\"P\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"P\")]),new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"Y\")]),new t.type.Var(\"S\")])])]))],\"maplist/2\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"X\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"Xs\")])]))],\"maplist/3\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\")])]))],\"maplist/4\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\")])]))],\"maplist/5\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\")])]))],\"maplist/6\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\")])]))],\"maplist/7\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\")])]))],\"maplist/8\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")]),new t.type.Term(\".\",[new t.type.Var(\"G\"),new t.type.Var(\"Gs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\"),new t.type.Var(\"G\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\"),new t.type.Var(\"Gs\")])]))],\"include/3\":[new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"A\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"A\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"F\"),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"F\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Var(\"S\")])]),new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"S\")])])])])]))],\"exclude/3\":[new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"E\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"Q\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"R\"),new t.type.Var(\"Q\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"!\",[]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"E\")])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"E\")])])])])])])]))],\"foldl/4\":[new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"I\"),new t.type.Var(\"I\")]),null),new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"I\"),new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"I\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])])])]),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P2\"),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P2\")]),new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"R\")])])])])]))],\"select/3\":[new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Ys\")]))],\"sum_list/2\":[new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"sum_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"+\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"max_list/2\":[new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"max_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"min_list/2\":[new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"min_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"=<\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"prod_list/2\":[new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"prod_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"*\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"last/2\":[new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\")]),new t.type.Term(\"last\",[new t.type.Var(\"Xs\"),new t.type.Var(\"X\")]))],\"prefix/2\":[new t.type.Rule(new t.type.Term(\"prefix\",[new t.type.Var(\"Part\"),new t.type.Var(\"Whole\")]),new t.type.Term(\"append\",[new t.type.Var(\"Part\"),new t.type.Var(\"_\"),new t.type.Var(\"Whole\")]))],\"nth0/3\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/3\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth0/4\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/4\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth/5\":[new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"N\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"O\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Y\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\",\",[new t.type.Term(\"is\",[new t.type.Var(\"M\"),new t.type.Term(\"+\",[new t.type.Var(\"N\"),new t.type.Num(1,!1)])]),new t.type.Term(\"nth\",[new t.type.Var(\"M\"),new t.type.Var(\"O\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Y\"),new t.type.Var(\"Ys\")])]))],\"length/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(!t.type.is_variable(f)&&!t.type.is_integer(f))s.throw_error(t.error.type(\"integer\",f,n.indicator));else if(t.type.is_integer(f)&&f.value<0)s.throw_error(t.error.domain(\"not_less_than_zero\",f,n.indicator));else{var p=new t.type.Term(\"length\",[c,new t.type.Num(0,!1),f]);t.type.is_integer(f)&&(p=new t.type.Term(\",\",[p,new t.type.Term(\"!\",[])])),s.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},\"length/3\":[new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"N\"),new t.type.Var(\"N\")]),null),new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"X\")]),new t.type.Var(\"A\"),new t.type.Var(\"N\")]),new t.type.Term(\",\",[new t.type.Term(\"succ\",[new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"length\",[new t.type.Var(\"X\"),new t.type.Var(\"B\"),new t.type.Var(\"N\")])]))],\"replicate/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(f))s.throw_error(t.error.type(\"integer\",f,n.indicator));else if(f.value<0)s.throw_error(t.error.domain(\"not_less_than_zero\",f,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=new t.type.Term(\"[]\"),E=0;E<f.value;E++)h=new t.type.Term(\".\",[c,h]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else{for(var p=[],h=c;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var E=p.sort(t.compare),C=E.length-1;C>0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new t.type.Term(\"[]\"),C=E.length-1;C>=0;C--)S=new t.type.Term(\".\",[E[C],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[S,f])),a.substitution,a)])}}},\"msort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else{for(var p=[],h=c;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var E=p.sort(t.compare),C=new t.type.Term(\"[]\"),S=E.length-1;S>=0;S--)C=new t.type.Term(\".\",[E[S],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[C,f])),a.substitution,a)])}}},\"keysort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else{for(var p=[],h,E=c;E.indicator===\"./2\";){if(h=E.args[0],t.type.is_variable(h)){s.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!==\"-/2\"){s.throw_error(t.error.type(\"pair\",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var C=p.sort(t.compare),S=new t.type.Term(\"[]\"),P=C.length-1;P>=0;P--)S=new t.type.Term(\".\",[new t.type.Term(\"-\",[C[P],C[P].pair]),S]),delete C[P].pair;s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[S,f])),a.substitution,a)])}}},\"take/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type(\"integer\",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator===\"./2\";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new t.type.Term(\"[]\"),h=E.length-1;h>=0;h--)S=new t.type.Term(\".\",[E[h],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[S,p])),a.substitution,a)])}}},\"drop/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type(\"integer\",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator===\"./2\";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[C,p])),a.substitution,a)])}},\"reverse/2\":function(s,a,n){var c=n.args[0],f=n.args[1],p=t.type.is_instantiated_list(c),h=t.type.is_instantiated_list(f);if(t.type.is_variable(c)&&t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(c)&&!t.type.is_fully_list(c))s.throw_error(t.error.type(\"list\",c,n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else if(!p&&!h)s.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new t.type.Term(\"[]\",[]);E.indicator===\"./2\";)C=new t.type.Term(\".\",[E.args[0],C]),E=E.args[1];s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[C,p?f:c])),a.substitution,a)])}},\"list_to_set/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!==\"[]/0\")s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var E=[],C=new t.type.Term(\"[]\",[]),S,P=0;P<h.length;P++){S=!1;for(var I=0;I<E.length&&!S;I++)S=t.compare(h[P],E[I])===0;S||E.push(h[P])}for(P=E.length-1;P>=0;P--)C=new t.type.Term(\".\",[E[P],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[f,C])),a.substitution,a)])}}}}},r=[\"append/2\",\"append/3\",\"member/2\",\"permutation/2\",\"maplist/2\",\"maplist/3\",\"maplist/4\",\"maplist/5\",\"maplist/6\",\"maplist/7\",\"maplist/8\",\"include/3\",\"exclude/3\",\"foldl/4\",\"sum_list/2\",\"max_list/2\",\"min_list/2\",\"prod_list/2\",\"last/2\",\"prefix/2\",\"nth0/3\",\"nth1/3\",\"nth0/4\",\"nth1/4\",\"length/2\",\"replicate/3\",\"select/3\",\"sort/2\",\"msort/2\",\"keysort/2\",\"take/3\",\"drop/3\",\"reverse/2\",\"list_to_set/2\"];typeof s9<\"u\"?s9.exports=function(s){t=s,new t.type.Module(\"lists\",e(),r)}:new t.type.Module(\"lists\",e(),r)})(aDt)});var pve=L($r=>{\"use strict\";var Pm=process.platform===\"win32\",o9=\"aes-256-cbc\",lDt=\"sha256\",tve=\"The current environment doesn't support interactive reading from TTY.\",ii=ye(\"fs\"),$Be=process.binding(\"tty_wrap\").TTY,l9=ye(\"child_process\"),K0=ye(\"path\"),c9={prompt:\"> \",hideEchoBack:!1,mask:\"*\",limit:[],limitMessage:\"Input another, please.$<( [)limit(])>\",defaultInput:\"\",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:\"utf8\",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},eh=\"none\",$u,JC,eve=!1,V0,uF,a9,cDt=0,h9=\"\",bm=[],fF,rve=!1,u9=!1,CS=!1;function nve(t){function e(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(s){return\"#\"+s.charCodeAt(0)+\";\"})}return uF.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?t[a]&&s.push(\"--\"+a):r[a]===\"string\"&&t[a]&&s.push(\"--\"+a,e(t[a]))}),s}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function uDt(t,e){function r(U){var W,te=\"\",ie;for(a9=a9||ye(\"os\").tmpdir();;){W=K0.join(a9,U+te);try{ie=ii.openSync(W,\"wx\")}catch(Ae){if(Ae.code===\"EEXIST\"){te++;continue}else throw Ae}ii.closeSync(ie);break}return W}var s,a,n,c={},f,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),C=r(\"readline-sync.exit\"),S=r(\"readline-sync.done\"),P=ye(\"crypto\"),I,R,N;I=P.createHash(lDt),I.update(\"\"+process.pid+cDt+++Math.random()),N=I.digest(\"hex\"),R=P.createDecipher(o9,N),s=nve(t),Pm?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+V0+\"%Q%\"+s.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+C+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+o9+\"%Q% %Q%\"+N+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+S+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+V0+'\"'+s.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+C+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+o9+'\" \"'+N+'\" >\"'+h+'\"; echo 1 >\"'+S+'\"']),CS&&CS(\"_execFileSync\",s);try{l9.spawn(a,n,e)}catch(U){c.error=new Error(U.message),c.error.method=\"_execFileSync - spawn\",c.error.program=a,c.error.args=n}for(;ii.readFileSync(S,{encoding:t.encoding}).trim()!==\"1\";);return(f=ii.readFileSync(C,{encoding:t.encoding}).trim())===\"0\"?c.input=R.update(ii.readFileSync(h,{encoding:\"binary\"}),\"hex\",t.encoding)+R.final(t.encoding):(p=ii.readFileSync(E,{encoding:t.encoding}).trim(),c.error=new Error(tve+(p?`\n`+p:\"\")),c.error.method=\"_execFileSync\",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),ii.unlinkSync(h),ii.unlinkSync(E),ii.unlinkSync(C),ii.unlinkSync(S),c}function fDt(t){var e,r={},s,a={env:process.env,encoding:t.encoding};if(V0||(Pm?process.env.PSModulePath?(V0=\"powershell.exe\",uF=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(V0=\"cscript.exe\",uF=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(V0=\"/bin/sh\",uF=[__dirname+\"/read.sh\"])),Pm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),l9.execFileSync){e=nve(t),CS&&CS(\"execFileSync\",e);try{r.input=l9.execFileSync(V0,e,a)}catch(n){s=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(tve+(s?`\n`+s:\"\")),r.error.method=\"execFileSync\",r.error.program=V0,r.error.args=e,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=uDt(t,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),t.display=\"\"),r}function f9(t){var e=\"\",r=t.display,s=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=fDt(t);if(n.error)throw n.error;return n.input}return u9&&u9(t),function(){var n,c,f;function p(){return n||(n=process.binding(\"fs\"),c=process.binding(\"constants\")),n}if(typeof eh==\"string\")if(eh=null,Pm){if(f=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),eh=process.stdin.fd,JC=process.stdin._handle;else try{eh=p().open(\"CONIN$\",c.O_RDWR,parseInt(\"0666\",8)),JC=new $Be(eh,!0)}catch{}if(process.stdout.isTTY)$u=process.stdout.fd;else{try{$u=ii.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof $u!=\"number\")try{$u=p().open(\"CONOUT$\",c.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{eh=ii.openSync(\"/dev/tty\",\"r\"),JC=process.stdin._handle}catch{}}else try{eh=ii.openSync(\"/dev/tty\",\"r\"),JC=new $Be(eh,!1)}catch{}if(process.stdout.isTTY)$u=process.stdout.fd;else try{$u=ii.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,c,f=!t.hideEchoBack&&!t.keyIn,p,h,E,C,S;fF=\"\";function P(I){return I===eve?!0:JC.setRawMode(I)!==0?!1:(eve=I,!0)}if(rve||!JC||typeof $u!=\"number\"&&(t.display||!f)){e=a();return}if(t.display&&(ii.writeSync($u,t.display),t.display=\"\"),!t.displayOnly){if(!P(!f)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(c=new RegExp(\"[^\"+t.limit+\"]\",\"g\"+(t.caseSensitive?\"\":\"i\")));;){E=0;try{E=ii.readSync(eh,p,0,h)}catch(I){if(I.code!==\"EOF\"){P(!1),e+=a();return}}if(E>0?(C=p.toString(t.encoding,0,E),fF+=C):(C=`\n`,fF+=\"\\0\"),C&&typeof(S=(C.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(C=S,n=!0),C&&(C=C.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),C&&c&&(C=C.replace(c,\"\")),C&&(f||(t.hideEchoBack?t.mask&&ii.writeSync($u,new Array(C.length+1).join(t.mask)):ii.writeSync($u,C)),e+=C),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!f&&!s&&ii.writeSync($u,`\n`),P(!1)}}(),t.print&&!s&&t.print(r+(t.displayOnly?\"\":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`\n`),t.encoding),t.displayOnly?\"\":h9=t.keepWhitespace||t.keyIn?e:e.trim()}function ADt(t,e){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!e||e(a))&&r.push(a))}return s(t),r}function g9(t){return t.replace(/[\\x00-\\x7f]/g,function(e){return\"\\\\x\"+(\"00\"+e.charCodeAt().toString(16)).substr(-2)})}function Ks(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]==\"boolean\"&&(r=t.shift(),r&&(e=Object.keys(c9),t.unshift(c9))),t.reduce(function(s,a){return a==null||(a.hasOwnProperty(\"noEchoBack\")&&!a.hasOwnProperty(\"hideEchoBack\")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty(\"noTrim\")&&!a.hasOwnProperty(\"keepWhitespace\")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":c=c!=null?c+\"\":\"\",c&&n!==\"limitMessage\"&&(c=c.replace(/[\\r\\n]/g,\"\")),s[n]=c;break;case\"bufferSize\":!isNaN(c=parseInt(c,10))&&typeof c==\"number\"&&(s[n]=c);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":s[n]=!!c;break;case\"limit\":case\"trueValue\":case\"falseValue\":s[n]=ADt(c,function(f){var p=typeof f;return p===\"string\"||p===\"number\"||p===\"function\"||f instanceof RegExp}).map(function(f){return typeof f==\"string\"?f.replace(/[\\r\\n]/g,\"\"):f});break;case\"print\":case\"phContent\":case\"preCheck\":s[n]=typeof c==\"function\"?c:void 0;break;case\"prompt\":case\"display\":s[n]=c??\"\";break}})),s},{})}function A9(t,e,r){return e.some(function(s){var a=typeof s;return a===\"string\"?r?t===s:t.toLowerCase()===s.toLowerCase():a===\"number\"?parseFloat(t)===s:a===\"function\"?s(t):s instanceof RegExp?s.test(t):!1})}function d9(t,e){var r=K0.normalize(Pm?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return t=K0.normalize(t),e?t.replace(/^~(?=\\/|\\\\|$)/,r):t.replace(new RegExp(\"^\"+g9(r)+\"(?=\\\\/|\\\\\\\\|$)\",Pm?\"i\":\"\"),\"~\")}function zC(t,e){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",s=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(c,f,p,h,E,C){var S;return f||typeof(S=e(E))!=\"string\"?p:S?(h||\"\")+S+(C||\"\"):\"\"}return t.replace(s,n).replace(a,n)}function ive(t,e,r){var s,a=[],n=-1,c=0,f=\"\",p;function h(E,C){return C.length>3?(E.push(C[0]+\"...\"+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=t.reduce(function(E,C){return E.concat((C+\"\").split(\"\"))},[]).reduce(function(E,C){var S,P;return e||(C=C.toLowerCase()),S=/^\\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(P=C.charCodeAt(0),S&&S===n&&P===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=P),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function sve(t,e){return t.join(t.length>2?\", \":e?\" / \":\"/\")}function ove(t,e){var r,s,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!=\"string\")switch(t){case\"hideEchoBack\":case\"mask\":case\"defaultInput\":case\"caseSensitive\":case\"keepWhitespace\":case\"encoding\":case\"bufferSize\":case\"history\":case\"cd\":r=e.hasOwnProperty(t)?typeof e[t]==\"boolean\"?e[t]?\"on\":\"off\":e[t]+\"\":\"\";break;case\"limit\":case\"trueValue\":case\"falseValue\":s=e[e.hasOwnProperty(t+\"Src\")?t+\"Src\":t],e.keyIn?(a=ive(s,e.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f===\"string\"||f===\"number\"}),r=sve(s,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=e[e.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||t!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=h9;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),t===\"CWD\"?r=K0.basename(r):t===\"cwdHome\"&&(r=d9(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+t.replace(/^./,function(c){return c.toUpperCase()})+\"String\"]();break;default:typeof(n=(t.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=bm[bm.length-n]||\"\")}return r}function ave(t){var e=/^(.)-(.)$/.exec(t),r=\"\",s,a,n,c;if(!e)return null;for(s=e[1].charCodeAt(0),a=e[2].charCodeAt(0),c=s<a?1:-1,n=s;n!==a+c;n+=c)r+=String.fromCharCode(n);return r}function p9(t){var e=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,s=\"\",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||\"\",r[1]&&(a.push(s),s=\"\"),s+=n;return s&&a.push(s),a}function lve(t,e){return e.trueValue.length&&A9(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&A9(t,e.falseValue,e.caseSensitive)?!1:t}function cve(t){var e,r,s,a,n,c,f;function p(E){return ove(E,t)}function h(E){t.display+=(/[^\\r\\n]$/.test(t.display)?`\n`:\"\")+E}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit=\"\",t.display=zC(t.display+\"\",p);;){if(e=f9(t),r=!1,s=\"\",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(e))?(n=bm[0]||\"\",a[1]?r=!0:e=n,h(n+`\n`),r||(t.displayOnly=!0,f9(t),t.displayOnly=!1)):e&&e!==bm[bm.length-1]&&(bm=[e])),!r&&t.cd&&e)switch(c=p9(e),c[0].toLowerCase()){case\"cd\":if(c[1])try{process.chdir(d9(c[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(f=t.preCheck(e,t),e=f.res,f.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||A9(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(s=zC(t.limitMessage,p))}h((s?s+`\n`:\"\")+zC(t.displaySrc+\"\",p))}return lve(e,t)}$r._DBG_set_useExt=function(t){rve=t};$r._DBG_set_checkOptions=function(t){u9=t};$r._DBG_set_checkMethod=function(t){CS=t};$r._DBG_clearHistory=function(){h9=\"\",bm=[]};$r.setDefaultOptions=function(t){return c9=Ks(!0,t),Ks(!0)};$r.question=function(t,e){return cve(Ks(Ks(!0,e),{display:t}))};$r.prompt=function(t){var e=Ks(!0,t);return e.display=e.prompt,cve(e)};$r.keyIn=function(t,e){var r=Ks(Ks(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(s){var a=typeof s;return a===\"string\"||a===\"number\"}).map(function(s){return zC(s+\"\",ave)}),r.limit=g9(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(s){r[s]=r[s].reduce(function(a,n){var c=typeof n;return c===\"string\"||c===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=zC(r.display+\"\",function(s){return ove(s,r)}),lve(f9(r),r)};$r.questionEMail=function(t,e){return t==null&&(t=\"Input e-mail address: \"),$r.question(t,Ks({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:\"Input valid e-mail address, please.\",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};$r.questionNewPassword=function(t,e){var r,s,a,n=Ks({hideEchoBack:!0,mask:\"*\",limitMessage:`It can include: $<charlist>\nAnd the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(P){return P===\"charlist\"?r.text:P===\"length\"?s+\"...\"+a:null}}),c,f,p,h,E,C,S;for(e=e||{},c=zC(e.charlist?e.charlist+\"\":\"$<!-~>\",ave),(isNaN(s=parseInt(e.min,10))||typeof s!=\"number\")&&(s=12),(isNaN(a=parseInt(e.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+g9(c)+\"]{\"+s+\",\"+a+\"}$\"),r=ive([c],n.caseSensitive,!0),r.text=sve(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:\"Reinput a same one to confirm it: \",p=e.unmatchMessage!=null?e.unmatchMessage:\"It differs from first one. Hit only the Enter key if you want to retry from first one.\",t==null&&(t=\"Input new password: \"),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(t,n),n.limit=[C,\"\"],n.limitMessage=p,S=$r.question(f,n);return C};function uve(t,e,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s==\"number\"}return $r.question(t,Ks({limitMessage:\"Input valid number, please.\"},e,{limit:a,cd:!1})),s}$r.questionInt=function(t,e){return uve(t,e,function(r){return parseInt(r,10)})};$r.questionFloat=function(t,e){return uve(t,e,parseFloat)};$r.questionPath=function(t,e){var r,s=\"\",a=Ks({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var c,f,p;n=d9(n,!0),s=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(C,S){var P=K0.resolve(C+=S+K0.sep);if(!ii.existsSync(P))ii.mkdirSync(P);else if(!ii.statSync(P).isDirectory())throw new Error(\"Non directory already exists: \"+P);return C},\"\")}try{if(c=ii.existsSync(n),r=c?ii.realpathSync(n):K0.resolve(n),!e.hasOwnProperty(\"exists\")&&!c||typeof e.exists==\"boolean\"&&e.exists!==c)return s=(c?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!c&&e.create&&(e.isDirectory?h(r):(h(K0.dirname(r)),ii.closeSync(ii.openSync(r,\"w\"))),r=ii.realpathSync(r)),c&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=ii.statSync(r),e.isFile&&!f.isFile())return s=\"Not file: \"+r,!1;if(e.isDirectory&&!f.isDirectory())return s=\"Not directory: \"+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return s=\"Size \"+f.size+\" is out of range: \"+r,!1}if(typeof e.validate==\"function\"&&(p=e.validate(r))!==!0)return typeof p==\"string\"&&(s=p),!1}catch(E){return s=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?s:n!==\"min\"&&n!==\"max\"?null:e.hasOwnProperty(n)?e[n]+\"\":\"\"}});return e=e||{},t==null&&(t='Input path (you can \"cd\" and \"pwd\"): '),$r.question(t,a),r};function fve(t,e){var r={},s={};return typeof t==\"object\"?(Object.keys(t).forEach(function(a){typeof t[a]==\"function\"&&(s[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=p9(a),n=r.args[0]||\"\",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty(\"_\")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return e.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=p9(a),r.hRes=typeof t==\"function\"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(t,e){var r=Ks({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),s=fve(t,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(t,e){for(var r=Ks({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t($r.prompt(r)););};$r.promptCLLoop=function(t,e){var r=Ks({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),s=fve(t,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(t){return $r.prompt(Ks({hideEchoBack:!1,history:!0},t,{prompt:function(){return Pm?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function Ave(t,e,r){var s;return t==null&&(t=\"Are you sure? \"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),s=$r.keyIn(t,Ks(e,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof s==\"boolean\"?s:\"\"}$r.keyInYN=function(t,e){return Ave(t,e)};$r.keyInYNStrict=function(t,e){return Ave(t,e,\"yn\")};$r.keyInPause=function(t,e){t==null&&(t=\"Continue...\"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s+$/,\"\")+\" (Hit any key)\"),$r.keyIn(t,Ks({limit:null},e,{hideEchoBack:!0,mask:\"\"}))};$r.keyInSelect=function(t,e,r){var s=Ks({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p===\"itemsCount\"?t.length+\"\":p===\"firstItem\"?(t[0]+\"\").trim():p===\"lastItem\"?(t[t.length-1]+\"\").trim():null}}),a=\"\",n={},c=49,f=`\n`;if(!Array.isArray(t)||!t.length||t.length>35)throw\"`items` must be Array (max length: 35).\";return t.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,f+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),s.limit=a,f+=`\n`,e==null&&(e=\"Choose one from list: \"),(e+=\"\")&&((!r||r.guide!==!1)&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),f+=e),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return fF};function wS(t,e){var r;return e.length&&(r={},r[t]=e[0]),$r.setDefaultOptions(r)[t]}$r.setPrint=function(){return wS(\"print\",arguments)};$r.setPrompt=function(){return wS(\"prompt\",arguments)};$r.setEncoding=function(){return wS(\"encoding\",arguments)};$r.setMask=function(){return wS(\"mask\",arguments)};$r.setBufferSize=function(){return wS(\"bufferSize\",arguments)}});var m9=L((vfr,tc)=>{(function(){var t={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:b,get:function(z,Z){return Z===this.text.length||Z>this.text.length?\"end_of_file\":this.text.substring(Z,Z+z)},put:function(z,Z){return Z===\"end_of_file\"?(this.text+=z,!0):Z===\"past_end_of_file\"?null:(this.text=this.text.substring(0,Z)+z+this.text.substring(Z+z.length),!0)},get_byte:function(z){if(z===\"end_of_stream\")return-1;var Z=Math.floor(z/2);if(this.text.length<=Z)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,Z){var $=Z===\"end_of_stream\"?this.text.length:Math.floor(Z/2);if(this.text.length<$)return null;var oe=this.text.length===$?-1:n(this.text[Math.floor(Z/2)],0);return Z%2===0?(oe=oe/256>>>0,oe=(oe&255)<<8|z&255):(oe=oe&255,oe=(z&255)<<8|oe&255),this.text.length===$?this.text+=c(oe):this.text=this.text.substring(0,$)+c(oe)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y===\"write\"&&(F.text=\"\"),F}},tau_user_input={buffer:\"\",get:function(w,b){for(var y;tau_user_input.buffer.length<w;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,w),tau_user_input.buffer=tau_user_input.buffer.substr(w),y}},tau_user_output={put:function(w,b){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,b,y){var F=ye(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(Z,$){var oe=new Buffer(Z);return F.readSync(z,oe,0,Z,$),oe.toString()},put:function(Z,$){var oe=Buffer.from(Z);if($===\"end_of_file\")F.writeSync(z,oe);else{if($===\"past_end_of_file\")return null;F.writeSync(z,oe,0,oe.length,$)}return!0},get_byte:function(Z){return null},put_byte:function(Z,$){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,b){for(var y,F=pve();nodejs_user_input.buffer.length<w;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,w),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(w),y}},nodejs_user_output={put:function(w,b){return process.stdout.write(w),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(w,b){return w.indexOf(b)}:e=function(w,b){for(var y=w.length,F=0;F<y;F++)if(b===w[F])return F;return-1};var r=function(w,b){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=b(y,w[z]);return y}},s;Array.prototype.map?s=function(w,b){return w.map(b)}:s=function(w,b){for(var y=[],F=w.length,z=0;z<F;z++)y.push(b(w[z]));return y};var a;Array.prototype.filter?a=function(w,b){return w.filter(b)}:a=function(w,b){for(var y=[],F=w.length,z=0;z<F;z++)b(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,b){return w.codePointAt(b)}:n=function(w,b){return w.charCodeAt(b)};var c;String.fromCodePoint?c=function(){return String.fromCodePoint.apply(null,arguments)}:c=function(){return String.fromCharCode.apply(null,arguments)};var f=0,p=1,h=/(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)|\\\\x([0-9a-fA-F]+)\\\\|\\\\([0-7]+)\\\\|(\\\\\\\\)|(\\\\')|('')|(\\\\\")|(\\\\`)|(\\\\.)|(.)/g,E={\"\\\\a\":7,\"\\\\b\":8,\"\\\\f\":12,\"\\\\n\":10,\"\\\\r\":13,\"\\\\t\":9,\"\\\\v\":11};function C(w){var b=[],y=!1;return w.replace(h,function(F,z,Z,$,oe,xe,Te,lt,Et,qt,ir,Pt,gn,Pr,Ir,Nr,nn){switch(!0){case Et!==void 0:return b.push(parseInt(Et,16)),\"\";case qt!==void 0:return b.push(parseInt(qt,8)),\"\";case ir!==void 0:case Pt!==void 0:case gn!==void 0:case Pr!==void 0:case Ir!==void 0:return b.push(n(F.substr(1),0)),\"\";case nn!==void 0:return b.push(n(nn,0)),\"\";case Nr!==void 0:y=!0;default:return b.push(E[F]),\"\"}}),y?null:b}function S(w,b){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function($,oe){return c(parseInt(oe,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function($,oe){return c(parseInt(oe,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),Z=w.charAt(F+1);if(z===b&&Z===b)F++,y+=b;else if(z===\"\\\\\")if([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"'\",'\"',\"\\\\\",\"a\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\"].indexOf(Z)!==-1)switch(F+=1,Z){case\"a\":y+=\"a\";break;case\"b\":y+=\"\\b\";break;case\"f\":y+=\"\\f\";break;case\"n\":y+=`\n`;break;case\"r\":y+=\"\\r\";break;case\"t\":y+=\"\t\";break;case\"v\":y+=\"\\v\";break;case\"'\":y+=\"'\";break;case'\"':y+='\"';break;case\"\\\\\":y+=\"\\\\\";break}else return null;else y+=z}return y}function P(w){for(var b=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":b+=\"\\\\'\";break;case\"\\\\\":b+=\"\\\\\\\\\";break;case\"\\b\":b+=\"\\\\b\";break;case\"\\f\":b+=\"\\\\f\";break;case`\n`:b+=\"\\\\n\";break;case\"\\r\":b+=\"\\\\r\";break;case\"\t\":b+=\"\\\\t\";break;case\"\\v\":b+=\"\\\\v\";break;default:b+=w.charAt(y);break}return b}function I(w){var b=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(b,16);case\"0b\":return parseInt(b,2);case\"0o\":return parseInt(b,8);case\"0'\":return C(b)[0];default:return parseFloat(w)}}var R={whitespace:/^\\s*(?:(?:%.*)|(?:\\/\\*(?:\\n|\\r|.)*?\\*\\/)|(?:\\s+))\\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\\!|,|;|[a-z][0-9a-zA-Z_]*|[#\\$\\&\\*\\+\\-\\.\\/\\:\\<\\=\\>\\?\\@\\^\\~\\\\]+|'(?:[^']*?(?:\\\\(?:x?\\d+)?\\\\)*(?:'')*(?:\\\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\\\[abfnrtv\\\\'\"`]|\\\\x?\\d+\\\\|[^\\\\])|\\d+(?:\\.\\d+(?:[eE][+-]?\\d+)?)?)/,string:/^(?:\"([^\"]|\"\"|\\\\\")*\"|`([^`]|``|\\\\`)*`)/,l_brace:/^(?:\\[)/,r_brace:/^(?:\\])/,l_bracket:/^(?:\\{)/,r_bracket:/^(?:\\})/,bar:/^(?:\\|)/,l_paren:/^(?:\\()/,r_paren:/^(?:\\))/};function N(w,b){return w.get_flag(\"char_conversion\").id===\"on\"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text=\"\",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,Z=[],$=!1;if(w){var oe=this.tokens[w-1];y=oe.len,b=N(this.thread,this.text.substr(oe.len)),F=oe.line,z=oe.start}else b=this.text;if(/^\\s*$/.test(b))return null;for(;b!==\"\";){var xe=[],Te=!1;if(/^\\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\\n/,\"\"),$=!0;continue}for(var lt in R)if(R.hasOwnProperty(lt)){var Et=R[lt].exec(b);Et&&xe.push({value:Et[0],name:lt,matches:Et})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:\"lexical\",line:F,start:z}]);var oe=r(xe,function(Pr,Ir){return Pr.value.length>=Ir.value.length?Pr:Ir});switch(oe.start=z,oe.line=F,b=b.replace(oe.value,\"\"),z+=oe.value.length,y+=oe.value.length,oe.name){case\"atom\":oe.raw=oe.value,oe.value.charAt(0)===\"'\"&&(oe.value=S(oe.value.substr(1,oe.value.length-2),\"'\"),oe.value===null&&(oe.name=\"lexical\",oe.value=\"unknown escape sequence\"));break;case\"number\":oe.float=oe.value.substring(0,2)!==\"0x\"&&oe.value.match(/[.eE]/)!==null&&oe.value!==\"0'.\",oe.value=I(oe.value),oe.blank=Te;break;case\"string\":var qt=oe.value.charAt(0);oe.value=S(oe.value.substr(1,oe.value.length-2),qt),oe.value===null&&(oe.name=\"lexical\",oe.value=\"unknown escape sequence\");break;case\"whitespace\":var ir=Z[Z.length-1];ir&&(ir.space=!0),Te=!0;continue;case\"r_bracket\":Z.length>0&&Z[Z.length-1].name===\"l_bracket\"&&(oe=Z.pop(),oe.name=\"atom\",oe.value=\"{}\",oe.raw=\"{}\",oe.space=!1);break;case\"r_brace\":Z.length>0&&Z[Z.length-1].name===\"l_brace\"&&(oe=Z.pop(),oe.name=\"atom\",oe.value=\"[]\",oe.raw=\"[]\",oe.space=!1);break}oe.len=y,Z.push(oe),Te=!1}var Pt=this.set_last_tokens(Z);return Pt.length===0?null:Pt};function W(w,b,y,F,z){if(!b[y])return{type:f,value:x.error.syntax(b[y-1],\"expression expected\",!0)};var Z;if(F===\"0\"){var $=b[y];switch($.name){case\"number\":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case\"variable\":return{type:p,len:y+1,value:new x.type.Var($.value)};case\"string\":var oe;switch(w.get_flag(\"double_quotes\").id){case\"atom\":oe=new j($.value,[]);break;case\"codes\":oe=new j(\"[]\",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(\".\",[new x.type.Num(n($.value,xe),!1),oe]);break;case\"chars\":oe=new j(\"[]\",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(\".\",[new x.type.Term($.value.charAt(xe),[]),oe]);break}return{type:p,len:y+1,value:oe};case\"l_paren\":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name===\"r_paren\"?(Pt.len++,Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],\") or operator expected\",!b[Pt.len])};case\"l_bracket\":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name===\"r_bracket\"?(Pt.len++,Pt.value=new j(\"{}\",[Pt.value]),Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],\"} or operator expected\",!b[Pt.len])}}var Te=te(w,b,y,z);return Te.type===p||Te.derived||(Te=ie(w,b,y),Te.type===p||Te.derived)?Te:{type:f,derived:!1,value:x.error.syntax(b[y],\"unexpected token\")}}var lt=w.__get_max_priority(),Et=w.__get_next_priority(F),qt=y;if(b[y].name===\"atom\"&&b[y+1]&&(b[y].space||b[y+1].name!==\"l_paren\")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf(\"fy\")>-1){var Pt=W(w,b,y,F,z);if(Pt.type!==f)return $.value===\"-\"&&!$.space&&x.type.is_number(Pt.value)?{value:new x.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}else if(ir&&ir.indexOf(\"fx\")>-1){var Pt=W(w,b,y,Et,z);if(Pt.type!==f)return{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}}y=qt;var Pt=W(w,b,y,Et,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name===\"atom\"&&w.__lookup_operator_classes(F,$.value)||b[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var gn=Et,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf(\"xf\")>-1)return{value:new x.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf(\"xfx\")>-1){var Ir=W(w,b,y+1,gn,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf(\"xfy\")>-1){var Ir=W(w,b,y+1,Pr,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name===\"atom\"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf(\"yf\")>-1)Pt={value:new x.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf(\"yfx\")>-1){var Ir=W(w,b,++y,gn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,Pt={value:new x.type.Term($.value,[Pt.value,Ir.value]),len:y,type:p}}else break}else break}}else Z={type:f,value:x.error.syntax(b[Pt.len-1],\"operator expected\")};return Pt}return Pt}function te(w,b,y,F){if(!b[y]||b[y].name===\"atom\"&&b[y].raw===\".\"&&!F&&(b[y].space||!b[y+1]||b[y+1].name!==\"l_paren\"))return{type:f,derived:!1,value:x.error.syntax(b[y-1],\"unfounded token\")};var z=b[y],Z=[];if(b[y].name===\"atom\"&&b[y].raw!==\",\"){if(y++,b[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,Z)};if(b[y]&&b[y].name===\"l_paren\"){if(b[y+1]&&b[y+1].name===\"r_paren\")return{type:f,derived:!0,value:x.error.syntax(b[y+1],\"argument expected\")};var $=W(w,b,++y,\"999\",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],\"argument expected\",!b[y])};for(Z.push($.value),y=$.len;b[y]&&b[y].name===\"atom\"&&b[y].value===\",\";){if($=W(w,b,y+1,\"999\",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};Z.push($.value),y=$.len}if(b[y]&&b[y].name===\"r_paren\")y++;else return{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],\", or ) expected\",!b[y])}}return{type:p,len:y,value:new x.type.Term(z.value,Z)}}return{type:f,derived:!1,value:x.error.syntax(b[y],\"term expected\")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:x.error.syntax(b[y-1],\"[ expected\")};if(b[y]&&b[y].name===\"l_brace\"){var F=W(w,b,++y,\"999\",!0),z=[F.value],Z=void 0;if(F.type===f)return b[y]&&b[y].name===\"r_brace\"?{type:p,len:y+1,value:new x.type.Term(\"[]\",[])}:{type:f,derived:!0,value:x.error.syntax(b[y],\"] expected\")};for(y=F.len;b[y]&&b[y].name===\"atom\"&&b[y].value===\",\";){if(F=W(w,b,y+1,\"999\",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name===\"bar\"){if($=!0,F=W(w,b,y+1,\"999\",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};Z=F.value,y=F.len}return b[y]&&b[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,Z)}:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],$?\"] expected\":\", or | or ] expected\",!b[y])}}return{type:f,derived:!1,value:x.error.syntax(b[y],\"list expected\")}}function Ae(w,b,y){var F=b[y].line,z=W(w,b,y,w.__get_max_priority(),!1),Z=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name===\"atom\"&&b[y].raw===\".\")if(y++,x.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(Z=new x.type.Rule(z.value.args[0],Ce(z.value.args[1])),$={value:Z,len:y,type:p}):z.value.indicator===\"-->/2\"?(Z=pe(new x.type.Rule(z.value.args[0],z.value.args[1]),w),Z.body=Ce(Z.body),$={value:Z,len:y,type:x.type.is_rule(Z)?p:f}):(Z=new x.type.Rule(z.value,null),$={value:Z,len:y,type:p}),Z){var oe=Z.singleton_variables();oe.length>0&&w.throw_warning(x.warning.singleton(oe,Z.head.indicator,F))}return $}else return{type:f,value:x.error.syntax(b[y],\"callable expected\")};else return{type:f,value:x.error.syntax(b[y]?b[y]:b[y-1],\". or operator expected\")};return z}function ce(w,b,y){y=y||{},y.from=y.from?y.from:\"$tau-js\",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},Z;F.new_text(b);var $=0,oe=F.get_tokens($);do{if(oe===null||!oe[$])break;var xe=Ae(w,oe,$);if(xe.type===f)return new j(\"throw\",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator===\"?-/1\"){var Te=new it(w.session);Te.add_goal(xe.value.head.args[0]),Te.answer(function(Et){x.type.is_error(Et)?w.throw_warning(Et.args[0]):(Et===!1||Et===null)&&w.throw_warning(x.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var lt=!0}else if(xe.value.body===null&&xe.value.head.indicator===\":-/1\"){var lt=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator===\"char_conversion/2\"&&(oe=F.get_tokens($),$=0)}else{Z=xe.value.head.indicator,y.reconsult!==!1&&z[Z]!==!0&&!w.is_multifile_predicate(Z)&&(w.session.rules[Z]=a(w.session.rules[Z]||[],function(qt){return qt.dynamic}),z[Z]=!0);var lt=w.add_rule(xe.value,y);$=xe.len}if(!lt)return lt}while(!0);return!0}function me(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var Z=W(w,z,0,w.__get_max_priority(),!1);if(Z.type!==f){var $=Z.len,oe=$;if(z[$]&&z[$].name===\"atom\"&&z[$].raw===\".\")w.add_goal(Ce(Z.value));else{var xe=z[$];return new j(\"throw\",[x.error.syntax(xe||z[$-1],\". or operator expected\",!xe)])}F=Z.len+1}else return new j(\"throw\",[Z.value])}while(!0);return!0}function pe(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Be(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new j(w.head.id,w.head.args),w)}function Be(w,b,y){var F;if(x.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:b,error:!1};if(x.type.is_term(w)&&w.indicator===\",/2\"){var z=Be(w.args[0],b,y);if(z.error)return z;var Z=Be(w.args[1],z.variable,y);return Z.error?Z:{value:new j(\",\",[z.value,Z.value]),variable:Z.variable,error:!1}}else{if(x.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:b,error:!1};if(x.type.is_empty_list(w))return{value:new j(\"true\",[]),variable:b,error:!1};if(x.type.is_list(w)){F=y.next_free_variable();for(var $=w,oe;$.indicator===\"./2\";)oe=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation(\"DCG\"),variable:b,error:!0}:x.type.is_empty_list($)?(oe.args[1]=F,{value:new j(\"=\",[b,w]),variable:F,error:!1}):{value:x.error.type(\"list\",w,\"DCG\"),variable:b,error:!0}}else return x.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new j(w.id,w.args),{value:w,variable:F,error:!1}):{value:x.error.type(\"callable\",w,\"DCG\"),variable:b,error:!0}}}function Ce(w){return x.type.is_variable(w)?new j(\"call\",[w]):x.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new j(w.id,[Ce(w.args[0]),Ce(w.args[1])]):w}function g(w,b){for(var y=b||new x.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new x.type.Term(\".\",[w[F],y]);return y}function we(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function Ee(w){for(var b={},y=[],F=0;F<w.length;F++)w[F]in b||(y.push(w[F]),b[w[F]]=!0);return y}function fe(w,b,y,F){if(w.session.rules[y]!==null){for(var z=0;z<w.session.rules[y].length;z++)if(w.session.rules[y][z]===F){w.session.rules[y].splice(z,1),w.success(b);break}}}function se(w){return function(b,y,F){var z=F.args[0],Z=F.args.slice(1,w);if(x.type.is_variable(z))b.throw_error(x.error.instantiation(b.level));else if(!x.type.is_callable(z))b.throw_error(x.error.type(\"callable\",z,b.level));else{var $=new j(z.id,z.args.concat(Z));b.prepend([new Pe(y.goal.replace($),y.substitution,y)])}}}function X(w){for(var b=w.length-1;b>=0;b--)if(w.charAt(b)===\"/\")return new j(\"/\",[new j(w.substring(0,b)),new Re(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Re(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var gt=0;function j(w,b,y){this.ref=y||++gt,this.id=w,this.args=b||[],this.indicator=w+\"/\"+this.args.length}var rt=0;function Fe(w,b,y,F,z,Z){this.id=rt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=Z!==void 0?Z:\"eof_code\",this.position=this.mode===\"append\"?\"end_of_stream\":0,this.output=this.mode===\"write\"||this.mode===\"append\",this.input=this.mode===\"read\"}function Ne(w){w=w||{},this.links=w}function Pe(w,b,y){b=b||new Ne,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function Ye(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function ke(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new it(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Fe(typeof tc<\"u\"&&tc.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Fe(typeof tc<\"u\"&&tc.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof tc<\"u\"&&tc.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{\":-\":[\"fx\",\"xfx\"],\"-->\":[\"xfx\"],\"?-\":[\"fx\"]},1100:{\";\":[\"xfy\"]},1050:{\"->\":[\"xfy\"]},1e3:{\",\":[\"xfy\"]},900:{\"\\\\+\":[\"fy\"]},700:{\"=\":[\"xfx\"],\"\\\\=\":[\"xfx\"],\"==\":[\"xfx\"],\"\\\\==\":[\"xfx\"],\"@<\":[\"xfx\"],\"@=<\":[\"xfx\"],\"@>\":[\"xfx\"],\"@>=\":[\"xfx\"],\"=..\":[\"xfx\"],is:[\"xfx\"],\"=:=\":[\"xfx\"],\"=\\\\=\":[\"xfx\"],\"<\":[\"xfx\"],\"=<\":[\"xfx\"],\">\":[\"xfx\"],\">=\":[\"xfx\"]},600:{\":\":[\"xfy\"]},500:{\"+\":[\"yfx\"],\"-\":[\"yfx\"],\"/\\\\\":[\"yfx\"],\"\\\\/\":[\"yfx\"]},400:{\"*\":[\"yfx\"],\"/\":[\"yfx\"],\"//\":[\"yfx\"],rem:[\"yfx\"],mod:[\"yfx\"],\"<<\":[\"yfx\"],\">>\":[\"yfx\"]},200:{\"**\":[\"xfx\"],\"^\":[\"xfy\"],\"-\":[\"fy\"],\"+\":[\"fy\"],\"\\\\\":[\"fy\"]}}}function it(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level=\"top_level/0\",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function _e(w,b,y){this.id=w,this.rules=b,this.exports=y,x.module[w]=this}_e.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&e(w.variables(),this.id)!==-1&&!x.type.is_variable(w))return null;var y={};return y[this.id]=w,new Ne(y)},Re.prototype.unify=function(w,b){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Ne:null},j.prototype.unify=function(w,b){if(x.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Ne,F=0;F<this.args.length;F++){var z=x.unify(this.args[F].apply(y),w.args[F].apply(y),b);if(z===null)return null;for(var Z in z.links)y.links[Z]=z.links[Z];y=y.apply(z)}return y}return null},Fe.prototype.unify=function(w,b){return x.type.is_stream(w)&&this.id===w.id?new Ne:null},De.prototype.toString=function(w){return this.id},Re.prototype.toString=function(w){return this.is_float&&e(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},j.prototype.toString=function(w,b,y){if(w=w||{},w.quoted=w.quoted===void 0?!0:w.quoted,w.ignore_ops=w.ignore_ops===void 0?!1:w.ignore_ops,w.numbervars=w.numbervars===void 0?!1:w.numbervars,b=b===void 0?1200:b,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&x.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),Z=F%26;return\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Z]+(z!==0?z:\"\")}switch(this.indicator){case\"[]/0\":case\"{}/0\":case\"!/0\":return this.id;case\"{}/1\":return\"{\"+this.args[0].toString(w)+\"}\";case\"./2\":for(var $=\"[\"+this.args[0].toString(w),oe=this.args[1];oe.indicator===\"./2\";)$+=\", \"+oe.args[0].toString(w),oe=oe.args[1];return oe.indicator!==\"[]/0\"&&($+=\"|\"+oe.toString(w)),$+=\"]\",$;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var xe=this.id,Te=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Te===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!==\"{}\"&&xe!==\"[]\"&&(xe=\"'\"+P(xe)+\"'\"),xe+(this.args.length?\"(\"+s(this.args,function(ir){return ir.toString(w)}).join(\", \")+\")\":\"\");var lt=Te.priority>b.priority||Te.priority===b.priority&&(Te.class===\"xfy\"&&this.indicator!==b.indicator||Te.class===\"yfx\"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Te.class===\"yfx\"&&y===\"right\"||this.indicator===b.indicator&&Te.class===\"xfy\"&&y===\"left\");Te.indicator=this.indicator;var Et=lt?\"(\":\"\",qt=lt?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Te.class)!==-1?Et+xe+\" \"+this.args[0].toString(w,Te)+qt:[\"yf\",\"xf\"].indexOf(Te.class)!==-1?Et+this.args[0].toString(w,Te)+\" \"+xe+qt:Et+this.args[0].toString(w,Te,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Te,\"right\")+qt}},Fe.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},Ne.prototype.toString=function(w){var b=\"{\";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!==\"{\"&&(b+=\", \"),b+=y+\"/\"+this.links[y].toString(w));return b+=\"}\",b},Pe.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},Ye.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},ke.prototype.toString=function(w){for(var b=\"\",y=0;y<this.modules.length;y++)b+=\":- use_module(library(\"+this.modules[y]+`)).\n`;b+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)b+=this.rules[key][y].toString(w),b+=`\n`;return b},De.prototype.clone=function(){return new De(this.id)},Re.prototype.clone=function(){return new Re(this.value,this.is_float)},j.prototype.clone=function(){return new j(this.id,s(this.args,function(w){return w.clone()}))},Fe.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},Ne.prototype.clone=function(){var w={};for(var b in this.links)this.links.hasOwnProperty(b)&&(w[b]=this.links[b].clone());return new Ne(w)},Pe.prototype.clone=function(){return new Pe(this.goal.clone(),this.substitution.clone(),this.parent)},Ye.prototype.clone=function(){return new Ye(this.head.clone(),this.body!==null?this.body.clone():null)},De.prototype.equals=function(w){return x.type.is_variable(w)&&this.id===w.id},Re.prototype.equals=function(w){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},j.prototype.equals=function(w){if(!x.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var b=0;b<this.args.length;b++)if(!this.args[b].equals(w.args[b]))return!1;return!0},Fe.prototype.equals=function(w){return x.type.is_stream(w)&&this.id===w.id},Ne.prototype.equals=function(w){var b;if(!x.type.is_substitution(w))return!1;for(b in this.links)if(this.links.hasOwnProperty(b)&&(!w.links[b]||!this.links[b].equals(w.links[b])))return!1;for(b in w.links)if(w.links.hasOwnProperty(b)&&!this.links[b])return!1;return!0},Pe.prototype.equals=function(w){return x.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},Ye.prototype.equals=function(w){return x.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},De.prototype.rename=function(w){return w.get_free_variable(this)},Re.prototype.rename=function(w){return this},j.prototype.rename=function(w){return new j(this.id,s(this.args,function(b){return b.rename(w)}))},Fe.prototype.rename=function(w){return this},Ye.prototype.rename=function(w){return new Ye(this.head.rename(w),this.body!==null?this.body.rename(w):null)},De.prototype.variables=function(){return[this.id]},Re.prototype.variables=function(){return[]},j.prototype.variables=function(){return[].concat.apply([],s(this.args,function(w){return w.variables()}))},Fe.prototype.variables=function(){return[]},Ye.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},De.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},Re.prototype.apply=function(w){return this},j.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var b=[],y=this;y.indicator===\"./2\";)b.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=b.length-1;z>=0;z--)F=new j(\".\",[b[z],F]);return F}return new j(this.id,s(this.args,function(Z){return Z.apply(w)}),this.ref)},Fe.prototype.apply=function(w){return this},Ye.prototype.apply=function(w){return new Ye(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Ne.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new Ne(y)},j.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},j.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new j(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new j(\",\",[w,this.args[1]]):w},j.prototype.search=function(w){if(x.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;b<this.args.length;b++)if(x.type.is_term(this.args[b])&&this.args[b].search(w))return!0;return!1},ke.prototype.get_current_input=function(){return this.current_input},it.prototype.get_current_input=function(){return this.session.get_current_input()},ke.prototype.get_current_output=function(){return this.current_output},it.prototype.get_current_output=function(){return this.session.get_current_output()},ke.prototype.set_current_input=function(w){this.current_input=w},it.prototype.set_current_input=function(w){return this.session.set_current_input(w)},ke.prototype.set_current_output=function(w){this.current_input=w},it.prototype.set_current_output=function(w){return this.session.set_current_output(w)},ke.prototype.get_stream_by_alias=function(w){return this.streams[w]},it.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},ke.prototype.file_system_open=function(w,b,y){return this.file_system.open(w,b,y)},it.prototype.file_system_open=function(w,b,y){return this.session.file_system_open(w,b,y)},ke.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},it.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},ke.prototype.parse=function(w){return this.thread.parse(w)},it.prototype.parse=function(w){var b=new U(this);b.new_text(w);var y=b.get_tokens();if(y===null)return!1;var F=W(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},ke.prototype.get_flag=function(w){return this.flag[w]},it.prototype.get_flag=function(w){return this.session.get_flag(w)},ke.prototype.add_rule=function(w,b){return b=b||{},b.from=b.from?b.from:\"$tau-js\",this.src_predicates[w.head.indicator]=b.from,this.rules[w.head.indicator]||(this.rules[w.head.indicator]=[]),this.rules[w.head.indicator].push(w),this.public_predicates.hasOwnProperty(w.head.indicator)||(this.public_predicates[w.head.indicator]=!1),!0},it.prototype.add_rule=function(w,b){return this.session.add_rule(w,b)},ke.prototype.run_directive=function(w){this.thread.run_directive(w)},it.prototype.run_directive=function(w){return x.type.is_directive(w)?(x.directive[w.indicator](this,w),!0):!1},ke.prototype.__get_max_priority=function(){return\"1200\"},it.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},ke.prototype.__get_next_priority=function(w){var b=0;w=parseInt(w);for(var y in this.__operators)if(this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>b&&F<w&&(b=F)}return b.toString()},it.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},ke.prototype.__lookup_operator_classes=function(w,b){return this.__operators.hasOwnProperty(w)&&this.__operators[w][b]instanceof Array&&this.__operators[w][b]||!1},it.prototype.__lookup_operator_classes=function(w,b){return this.session.__lookup_operator_classes(w,b)},ke.prototype.lookup_operator=function(w,b){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(b===0||this.__operators[y][w][F].length===b+1)return{priority:y,class:this.__operators[y][w][F]}}return null},it.prototype.lookup_operator=function(w,b){return this.session.lookup_operator(w,b)},ke.prototype.throw_warning=function(w){this.thread.throw_warning(w)},it.prototype.throw_warning=function(w){this.warnings.push(w)},ke.prototype.get_warnings=function(){return this.thread.get_warnings()},it.prototype.get_warnings=function(){return this.warnings},ke.prototype.add_goal=function(w,b){this.thread.add_goal(w,b)},it.prototype.add_goal=function(w,b,y){y=y||null,b===!0&&(this.points=[]);for(var F=w.variables(),z={},Z=0;Z<F.length;Z++)z[F[Z]]=new De(F[Z]);this.points.push(new Pe(w,new Ne(z),y))},ke.prototype.consult=function(w,b){return this.thread.consult(w,b)},it.prototype.consult=function(w,b){var y=\"\";if(typeof w==\"string\"){y=w;var F=y.length;if(y.substring(F-3,F)===\".pl\"&&document.getElementById(y)){var z=document.getElementById(y),Z=z.getAttribute(\"type\");Z!==null&&Z.replace(/ /g,\"\").toLowerCase()===\"text/prolog\"&&(y=z.text)}}else if(w.nodeName)switch(w.nodeName.toLowerCase()){case\"input\":case\"textarea\":y=w.value;break;default:y=w.innerHTML;break}else return!1;return this.warnings=[],ce(this,y,b)},ke.prototype.query=function(w){return this.thread.query(w)},it.prototype.query=function(w){return this.points=[],this.debugger_points=[],me(this,w)},ke.prototype.head_point=function(){return this.thread.head_point()},it.prototype.head_point=function(){return this.points[this.points.length-1]},ke.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},it.prototype.get_free_variable=function(w){var b=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(b=this.head_point().substitution.domain());e(b,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new De(x.format_variable(this.session.rename));this.session.renamed_variables[w.id]=x.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},ke.prototype.next_free_variable=function(){return this.thread.next_free_variable()},it.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(x.format_variable(this.session.rename))},ke.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},it.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},ke.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},it.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},ke.prototype.prepend=function(w){return this.thread.prepend(w)},it.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},ke.prototype.success=function(w,b){return this.thread.success(w,b)},it.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new Pe(w.goal.replace(null),w.substitution,y)])},ke.prototype.throw_error=function(w){return this.thread.throw_error(w)},it.prototype.throw_error=function(w){this.prepend([new Pe(new j(\"throw\",[w]),new Ne,null,null)])},ke.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},it.prototype.step_rule=function(w,b){var y=b.indicator;if(w===\"user\"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z<F.length;z++){var Z=x.module[F[z]];if(Z.rules.hasOwnProperty(y)&&(Z.rules.hasOwnProperty(this.level)||Z.exports_predicate(y)))return x.module[F[z]].rules[y]}return null},ke.prototype.step=function(){return this.thread.step()},it.prototype.step=function(){if(this.points.length!==0){var w=!1,b=this.points.pop();if(this.debugger&&this.debugger_states.push(b),x.type.is_term(b.goal)){var y=b.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var Z=b;Z.parent!==null&&Z.parent.goal.search(y);)Z=Z.parent;if(this.level=Z.parent===null?\"top_level/0\":Z.parent.goal.select().indicator,x.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&x.type.is_builtin(y))this.__call_indicator=y.indicator,w=x.predicate[y.indicator](this,b,y);else{var $=this.step_rule(F,y);if($===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(x.error.existence(\"procedure\",y.indicator,this.level)):this.get_flag(\"unknown\").id===\"warning\"&&this.throw_warning(\"unknown procedure \"+y.indicator+\" (from \"+this.level+\")\"));else if($ instanceof Function)w=$(this,b,y);else{for(var oe in $)if($.hasOwnProperty(oe)){var xe=$[oe];this.session.renamed_variables={},xe=xe.rename(this);var Te=this.get_flag(\"occurs_check\").indicator===\"true/0\",lt=new Pe,Et=x.unify(y,xe.head,Te);Et!==null&&(lt.goal=b.goal.replace(xe.body),lt.goal!==null&&(lt.goal=lt.goal.apply(Et)),lt.substitution=b.substitution.apply(Et),lt.parent=b,z.push(lt))}this.prepend(z)}}}}else x.type.is_variable(b.goal)?this.throw_error(x.error.instantiation(this.level)):this.throw_error(x.error.type(\"callable\",b.goal,this.level));return w}},ke.prototype.answer=function(w){return this.thread.answer(w)},it.prototype.answer=function(w){w=w||function(b){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},ke.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},it.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(Z){w(Z),Z!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},ke.prototype.again=function(w){return this.thread.again(w)},it.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},ke.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new it(this),Z=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var oe=z.points[$],xe=b.apply(oe.substitution),Te=y.replace(oe.goal);Te!==null&&(Te=Te.apply(oe.substitution)),Z.push(new Ye(xe,Te))}var lt=this.rules[b.indicator],Et=e(lt,w);return Z.length>0&&Et!==-1?(lt.splice.apply(lt,[Et,1].concat(Z)),!0):!1},it.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return x.error.instantiation(w.level)},Re.prototype.interpret=function(w){return this},j.prototype.interpret=function(w){return x.type.is_unitary_list(this)?this.args[0].interpret(w):x.operate(w,this)},De.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},Re.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.value<w.value||this.value===w.value&&this.is_float&&!w.is_float)return-1;if(this.value>w.value)return 1},j.prototype.compare=function(w){if(this.args.length<w.args.length||this.args.length===w.args.length&&this.id<w.id)return-1;if(this.args.length>w.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;b<this.args.length;b++){var y=x.compare(this.args[b],w.args[b]);if(y!==0)return y}return 0},Ne.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},Ne.prototype.filter=function(w){var b={};for(var y in this.links)if(this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(b[y]=F)}return new Ne(b)},Ne.prototype.exclude=function(w){var b={};for(var y in this.links)this.links.hasOwnProperty(y)&&e(w,y)===-1&&(b[y]=this.links[y]);return new Ne(b)},Ne.prototype.add=function(w,b){this.links[w]=b},Ne.prototype.domain=function(w){var b=w===!0?function(z){return z}:function(z){return new De(z)},y=[];for(var F in this.links)y.push(b(F));return y},De.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},Re.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},j.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+s(this.args,function(w){return w.compile()})+\"])\"},Ye.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},ke.prototype.compile=function(){var w,b=[],y;for(var F in this.rules)if(this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var Z=0;Z<z.length;Z++)y.push(z[Z].compile());w+=y.join(),w+=\"]\",b.push(w)}return\"{\"+b.join()+\"};\"},De.prototype.toJavaScript=function(){},Re.prototype.toJavaScript=function(){return this.value},j.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(x.type.is_list(this)){for(var w=[],b=this,y;b.indicator===\"./2\";){if(y=b.args[0].toJavaScript(),y===void 0)return;w.push(y),b=b.args[1]}if(b.indicator===\"[]/0\")return w}},Ye.prototype.singleton_variables=function(){var w=this.head.variables(),b={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)b[w[F]]===void 0&&(b[w[F]]=0),b[w[F]]++;for(var z in b)z!==\"_\"&&b[z]===1&&y.push(z);return y};var x={__env:typeof tc<\"u\"&&tc.exports?global:window,module:{},version:t,parser:{tokenizer:U,expression:W},utils:{str_indicator:X,codePointAt:n,fromCodePoint:c},statistics:{getCountTerms:function(){return gt}},fromJavaScript:{test:{boolean:function(w){return w===!0||w===!1},number:function(w){return typeof w==\"number\"},string:function(w){return typeof w==\"string\"},list:function(w){return w instanceof Array},variable:function(w){return w===void 0},any:function(w){return!0}},conversion:{boolean:function(w){return new j(w?\"true\":\"false\",[])},number:function(w){return new Re(w,w%1!==0)},string:function(w){return new j(w,[])},list:function(w){for(var b=[],y,F=0;F<w.length;F++){if(y=x.fromJavaScript.apply(w[F]),y===void 0)return;b.push(y)}return g(b)},variable:function(w){return new De(\"_\")},any:function(w){}},apply:function(w){for(var b in x.fromJavaScript.test)if(b!==\"any\"&&x.fromJavaScript.test[b](w))return x.fromJavaScript.conversion[b](w);return x.fromJavaScript.conversion.any(w)}},type:{Var:De,Num:Re,Term:j,Rule:Ye,State:Pe,Stream:Fe,Module:_e,Thread:it,Session:ke,Substitution:Ne,order:[De,Re,j,Fe],compare:function(w,b){var y=e(x.type.order,w.constructor),F=e(x.type.order,b.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===Re){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Ne},is_state:function(w){return w instanceof Pe},is_rule:function(w){return w instanceof Ye},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Fe},is_anonymous_var:function(w){return w instanceof De&&w.id===\"_\"},is_callable:function(w){return w instanceof j},is_number:function(w){return w instanceof Re},is_integer:function(w){return w instanceof Re&&!w.is_float},is_float:function(w){return w instanceof Re&&w.is_float},is_term:function(w){return w instanceof j},is_atom:function(w){return w instanceof j&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof j){for(var b=0;b<w.args.length;b++)if(!x.type.is_ground(w.args[b]))return!1}return!0},is_atomic:function(w){return w instanceof j&&w.args.length===0||w instanceof Re},is_compound:function(w){return w instanceof j&&w.args.length>0},is_list:function(w){return w instanceof j&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof j&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof j&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof j&&w.indicator===\"./2\";)w=w.args[1];return w instanceof De||w instanceof j&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof j&&w.indicator===\"./2\";)w=w.args[1];return w instanceof j&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof j&&w.indicator===\"./2\"&&w.args[1]instanceof j&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof j&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof j&&x.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof j&&x.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof j&&x.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof j&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof j&&w.indicator===\"//2\"&&w.args[0]instanceof j&&w.args[0].args.length===0&&w.args[1]instanceof Re&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof j&&w.args.length===0&&x.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!x.type.is_flag(w))return!1;for(var y in x.flag[w.id].allowed)if(x.flag[w.id].allowed.hasOwnProperty(y)&&x.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return x.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return x.type.is_term(w)&&(w.indicator===\"alias/1\"&&x.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))},is_stream_position:function(w){return x.type.is_integer(w)&&w.value>=0||x.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return x.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(x.type.is_variable(w.args[0])||x.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"read\"||w.args[0].id===\"write\"||w.args[0].id===\"append\"))||w.indicator===\"eof_action/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))||w.indicator===\"end_of_stream/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"at\"||w.args[0].id===\"past\"||w.args[0].id===\"not\")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return x.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return x.type.is_term(w)&&(w.indicator===\"quoted/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return x.type.is_term(w)&&w.indicator===\"force/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return x.type.is_flag(w)&&x.flag[w.id].changeable},is_module:function(w){return w instanceof j&&w.indicator===\"library/1\"&&w.args[0]instanceof j&&w.args[0].args.length===0&&x.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{\"e/0\":{type_args:null,type_result:!0,fn:function(w){return Math.E}},\"pi/0\":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},\"tau/0\":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},\"epsilon/0\":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},\"+/1\":{type_args:null,type_result:null,fn:function(w,b){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,b){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):x.error.evaluation(\"undefined\",b.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},\"-/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},\"*/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},\"//2\":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w<<b}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{\"dynamic/1\":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(x.error.type(\"predicate_indicator\",y,b.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type(\"atom\",y.args[0],b.indicator));else if(!x.type.is_integer(y.args[1]))w.throw_error(x.error.type(\"integer\",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+\"/\"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,b){var y=b.args[0];x.type.is_variable(y)?w.throw_error(x.error.instantiation(b.indicator)):!x.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(x.error.type(\"predicate_indicator\",y,b.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+\"/\"+b.args[0].args[1].value]=!0:w.throw_error(x.error.type(\"integer\",y.args[1],b.indicator)):w.throw_error(x.error.type(\"atom\",y.args[0],b.indicator))},\"set_prolog_flag/2\":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(x.error.permission(\"modify\",\"flag\",y)):w.throw_error(x.error.domain(\"flag_value\",new j(\"+\",[y,F]),b.indicator)):w.throw_error(x.error.domain(\"prolog_flag\",y,b.indicator)):w.throw_error(x.error.type(\"atom\",y,b.indicator))},\"use_module/1\":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_term(y))w.throw_error(x.error.type(\"term\",y,b.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},\"char_conversion/2\":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(x.error.type(\"character\",F,b.indicator)):w.throw_error(x.error.type(\"character\",y,b.indicator))},\"op/3\":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_integer(y))w.throw_error(x.error.type(\"integer\",y,b.indicator));else if(!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,b.indicator));else if(!x.type.is_atom(z))w.throw_error(x.error.type(\"atom\",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(x.error.domain(\"operator_priority\",y,b.indicator));else if(z.id===\",\")w.throw_error(x.error.permission(\"modify\",\"operator\",z,b.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(x.error.permission(\"modify\",\"operator\",z,b.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(x.error.domain(\"operator_specifier\",F,b.indicator));else{var Z={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var oe=w.session.__operators[$][z.id];oe&&(e(oe,\"fx\")!==-1&&(Z.prefix={priority:$,type:\"fx\"}),e(oe,\"fy\")!==-1&&(Z.prefix={priority:$,type:\"fy\"}),e(oe,\"xf\")!==-1&&(Z.postfix={priority:$,type:\"xf\"}),e(oe,\"yf\")!==-1&&(Z.postfix={priority:$,type:\"yf\"}),e(oe,\"xfx\")!==-1&&(Z.infix={priority:$,type:\"xfx\"}),e(oe,\"xfy\")!==-1&&(Z.infix={priority:$,type:\"xfy\"}),e(oe,\"yfx\")!==-1&&(Z.infix={priority:$,type:\"yfx\"}))}var xe;switch(F.id){case\"fy\":case\"fx\":xe=\"prefix\";break;case\"yf\":case\"xf\":xe=\"postfix\";break;default:xe=\"infix\";break}if(((Z.prefix&&xe===\"prefix\"||Z.postfix&&xe===\"postfix\"||Z.infix&&xe===\"infix\")&&Z[xe].type!==F.id||Z.infix&&xe===\"postfix\"||Z.postfix&&xe===\"infix\")&&y.value!==0)w.throw_error(x.error.permission(\"create\",\"operator\",z,b.indicator));else return Z[xe]&&(we(w.session.__operators[Z[xe].priority][z.id],F.id),w.session.__operators[Z[xe].priority][z.id].length===0&&delete w.session.__operators[Z[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{\"op/3\":function(w,b,y){x.directive[\"op/3\"](w,y)&&w.success(b)},\"current_op/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=[];for(var oe in w.session.__operators)for(var xe in w.session.__operators[oe])for(var Te=0;Te<w.session.__operators[oe][xe].length;Te++)$.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[new Re(oe,!1),F]),new j(\",\",[new j(\"=\",[new j(w.session.__operators[oe][xe][Te],[]),z]),new j(\"=\",[new j(xe,[]),Z])])])),b.substitution,b));w.prepend($)},\";/2\":function(w,b,y){if(x.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(Te){return Te.substitution},w.session.format_error=function(Te){return Te.goal},w.points=[new Pe(y.args[0].args[0],b.substitution,b)];var $=function(Te){w.points=F,w.session.format_success=z,w.session.format_error=Z,Te===!1?w.prepend([new Pe(b.goal.replace(y.args[1]),b.substitution,b)]):x.type.is_error(Te)?w.throw_error(Te.args[0]):Te===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new Pe(b.goal.replace(y.args[0].args[1]).apply(Te),b.substitution.apply(Te),b)])};w.__calls.unshift($)}else{var oe=new Pe(b.goal.replace(y.args[0]),b.substitution,b),xe=new Pe(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([oe,xe])}},\"!/0\":function(w,b,y){var F,z,Z=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id===\"call\"&&$.search(y)){F=z;break}}for(var oe=w.points.length-1;oe>=0;oe--){for(var xe=w.points[oe],Te=xe.parent;Te!==null&&Te!==F.parent;)Te=Te.parent;Te===null&&Te!==F.parent&&Z.push(xe)}w.points=Z.reverse(),w.success(b)},\"\\\\+/1\":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(w.level)):x.type.is_callable(F)?w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\",\",[new j(\"call\",[F]),new j(\"!\",[])]),new j(\"fail\",[])])),b.substitution,b),new Pe(b.goal.replace(null),b.substitution,b)]):w.throw_error(x.error.type(\"callable\",F,w.level))},\"->/2\":function(w,b,y){var F=b.goal.replace(new j(\",\",[y.args[0],new j(\",\",[new j(\"!\"),y.args[1]])]));w.prepend([new Pe(F,b.substitution,b)])},\"fail/0\":function(w,b,y){},\"false/0\":function(w,b,y){},\"true/0\":function(w,b,y){w.success(b)},\"call/1\":se(1),\"call/2\":se(2),\"call/3\":se(3),\"call/4\":se(4),\"call/5\":se(5),\"call/6\":se(6),\"call/7\":se(7),\"call/8\":se(8),\"once/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"call\",[F]),new j(\"!\",[])])),b.substitution,b)])},\"forall/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"\\\\+\",[new j(\",\",[new j(\"call\",[F]),new j(\"\\\\+\",[new j(\"call\",[z])])])])),b.substitution,b)])},\"repeat/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(null),b.substitution,b),b])},\"throw/1\":function(w,b,y){x.type.is_variable(y.args[0])?w.throw_error(x.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,b,y){var F=w.points;w.points=[],w.prepend([new Pe(y.args[0],b.substitution,b)]);var z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(oe){return oe.substitution},w.session.format_error=function(oe){return oe.goal};var $=function(oe){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=Z,x.type.is_error(oe)){for(var Te=[],lt=w.points.length-1;lt>=0;lt--){for(var ir=w.points[lt],Et=ir.parent;Et!==null&&Et!==b.parent;)Et=Et.parent;Et===null&&Et!==b.parent&&Te.push(ir)}w.points=Te;var qt=w.get_flag(\"occurs_check\").indicator===\"true/0\",ir=new Pe,Pt=x.unify(oe.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(oe.args[0])}else if(oe!==!1){for(var gn=oe===null?[]:[new Pe(b.goal.apply(oe).replace(null),b.substitution.apply(oe),b)],Pr=[],lt=xe.length-1;lt>=0;lt--){Pr.push(xe[lt]);var Ir=xe[lt].goal!==null?xe[lt].goal.select():null;if(x.type.is_term(Ir)&&Ir.indicator===\"!/0\")break}var Nr=s(Pr,function(nn){return nn.goal===null&&(nn.goal=new j(\"true\",[])),nn=new Pe(b.goal.replace(new j(\"catch\",[nn.goal,y.args[1],y.args[2]])),b.substitution.apply(nn.substitution),nn.parent),nn.exclude=y.args[0].variables(),nn}).reverse();w.prepend(Nr),w.prepend(gn),oe===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},\"=/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new Pe,Z=x.unify(y.args[0],y.args[1],F);Z!==null&&(z.goal=b.goal.apply(Z).replace(null),z.substitution=b.substitution.apply(Z),z.parent=b,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,b,y){var F=new Pe,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},\"\\\\=/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=x.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},\"subsumes_term/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},\"findall/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))w.throw_error(x.error.type(\"callable\",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else{var $=w.next_free_variable(),oe=new j(\",\",[z,new j(\"=\",[$,F])]),xe=w.points,Te=w.session.limit,lt=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(oe,!0,b);var Et=[],qt=function(ir){if(ir!==!1&&ir!==null&&!x.type.is_error(ir))w.__calls.unshift(qt),Et.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Te,w.session.format_success=lt,x.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new j(\"[]\"),gn=Et.length-1;gn>=0;gn--)Pt=new j(\".\",[Et[gn],Pt]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[Z,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},\"bagof/3\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(Z))w.throw_error(x.error.type(\"callable\",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type(\"list\",$,y.indicator));else{var oe=w.next_free_variable(),xe;Z.indicator===\"^/2\"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=Z.variables().filter(function(Nr){return e(xe,Nr)===-1}),lt=new j(\"[]\"),Et=Te.length-1;Et>=0;Et--)lt=new j(\".\",[new De(Te[Et]),lt]);var qt=new j(\",\",[Z,new j(\"=\",[oe,new j(\",\",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Nr){return Nr.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Nr){if(Nr!==!1&&Nr!==null&&!x.type.is_error(Nr)){w.__calls.unshift(Ir);var nn=!1,oi=Nr.links[oe.id].args[0],wo=Nr.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var eo=Pr[rs];if(eo.variables.equals(oi)){eo.answers.push(wo),nn=!0;break}}nn||Pr.push({variables:oi,answers:[wo]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Nr))w.throw_error(Nr.args[0]);else if(w.current_limit>0){for(var Bo=[],Hi=0;Hi<Pr.length;Hi++){Nr=Pr[Hi].answers;for(var to=new j(\"[]\"),vo=Nr.length-1;vo>=0;vo--)to=new j(\".\",[Nr[vo],to]);Bo.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[lt,Pr[Hi].variables]),new j(\"=\",[$,to])])),b.substitution,b))}w.prepend(Bo)}};w.__calls.unshift(Ir)}},\"setof/3\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(Z))w.throw_error(x.error.type(\"callable\",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type(\"list\",$,y.indicator));else{var oe=w.next_free_variable(),xe;Z.indicator===\"^/2\"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=Z.variables().filter(function(Nr){return e(xe,Nr)===-1}),lt=new j(\"[]\"),Et=Te.length-1;Et>=0;Et--)lt=new j(\".\",[new De(Te[Et]),lt]);var qt=new j(\",\",[Z,new j(\"=\",[oe,new j(\",\",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Nr){return Nr.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Nr){if(Nr!==!1&&Nr!==null&&!x.type.is_error(Nr)){w.__calls.unshift(Ir);var nn=!1,oi=Nr.links[oe.id].args[0],wo=Nr.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var eo=Pr[rs];if(eo.variables.equals(oi)){eo.answers.push(wo),nn=!0;break}}nn||Pr.push({variables:oi,answers:[wo]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Nr))w.throw_error(Nr.args[0]);else if(w.current_limit>0){for(var Bo=[],Hi=0;Hi<Pr.length;Hi++){Nr=Pr[Hi].answers.sort(x.compare);for(var to=new j(\"[]\"),vo=Nr.length-1;vo>=0;vo--)to=new j(\".\",[Nr[vo],to]);Bo.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[lt,Pr[Hi].variables]),new j(\"=\",[$,to])])),b.substitution,b))}w.prepend(Bo)}};w.__calls.unshift(Ir)}},\"functor/3\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(Z)||x.type.is_variable($)))w.throw_error(x.error.instantiation(\"functor/3\"));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!x.type.is_variable(Z)&&!x.type.is_atomic(Z))w.throw_error(x.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(x.type.is_integer(Z)&&x.type.is_integer($)&&$.value!==0)w.throw_error(x.error.type(\"atom\",y.args[1],\"functor/3\"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var oe=[],xe=0;xe<$.value;xe++)oe.push(w.next_free_variable());var Te=x.type.is_integer(Z)?Z:new j(Z.id,oe);w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,Te])),b.substitution,b)])}}else{var lt=x.type.is_integer(z)?z:new j(z.id,[]),Et=x.type.is_integer(z)?new Re(0,!1):new Re(z.args.length,!1),qt=new j(\",\",[new j(\"=\",[lt,Z]),new j(\"=\",[Et,$])]);w.prepend([new Pe(b.goal.replace(qt),b.substitution,b)])}},\"arg/3\":function(w,b,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))w.throw_error(x.error.type(\"compound\",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new j(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new Pe(b.goal.replace(z),b.substitution,b)])}}},\"=../2\":function(w,b,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))w.throw_error(x.error.type(\"list\",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var Z=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)Z.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):Z.length===0&&x.type.is_compound(y.args[1].args[0])?w.throw_error(x.error.type(\"atomic\",y.args[1].args[0],y.indicator)):Z.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?w.throw_error(x.error.type(\"atom\",y.args[1].args[0],y.indicator)):Z.length===0?w.prepend([new Pe(b.goal.replace(new j(\"=\",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j(y.args[1].args[0].id,Z),y.args[0]])),b.substitution,b)])}}else{if(x.type.is_atomic(y.args[0]))F=new j(\".\",[y.args[0],new j(\"[]\")]);else{F=new j(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new j(\".\",[y.args[0].args[z],F]);F=new j(\".\",[new j(y.args[0].id),F])}w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,y.args[1]])),b.substitution,b)])}},\"copy_term/2\":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,y.args[1]])),b.substitution,b.parent)])},\"term_variables/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))w.throw_error(x.error.type(\"list\",z,y.indicator));else{var Z=g(s(Ee(F.variables()),function($){return new De($)}));w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,Z])),b.substitution,b)])}},\"clause/2\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))w.throw_error(x.error.type(\"callable\",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var Z=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},Z=Z.rename(w),Z.body===null&&(Z.body=new j(\"true\"));var $=new j(\",\",[new j(\"=\",[Z.head,y.args[0]]),new j(\"=\",[Z.body,y.args[1]])]);F.push(new Pe(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(x.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,b,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(x.error.type(\"predicate_indicator\",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))w.throw_error(x.error.type(\"atom\",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))w.throw_error(x.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var Z in w.session.rules)if(w.session.rules.hasOwnProperty(Z)){var $=Z.lastIndexOf(\"/\"),oe=Z.substr(0,$),xe=parseInt(Z.substr($+1,Z.length-($+1))),Te=new j(\"/\",[new j(oe),new Re(xe,!1)]),lt=new j(\"=\",[Te,F]);z.push(new Pe(b.goal.replace(lt),b.substitution,b))}w.prepend(z)}},\"asserta/1\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new Ye(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(x.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new Ye(F,z,!0)),w.success(b)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(x.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new j(\"true\")),typeof b.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var Z=[],$=0;$<w.session.rules[F.indicator].length;$++){w.session.renamed_variables={};var oe=w.session.rules[F.indicator][$],xe=oe.rename(w);xe.body===null&&(xe.body=new j(\"true\",[]));var Te=w.get_flag(\"occurs_check\").indicator===\"true/0\",lt=x.unify(new j(\",\",[F,z]),new j(\",\",[xe.head,xe.body]),Te);if(lt!==null){var Et=new Pe(b.goal.replace(new j(\",\",[new j(\"retract\",[new j(\":-\",[F,z])]),new j(\",\",[new j(\"=\",[F,xe.head]),new j(\"=\",[z,xe.body])])])),b.substitution,b);Et.retract=oe,Z.push(Et)}}w.prepend(Z)}}else w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else fe(w,b,F.indicator,b.retract)}},\"retractall/1\":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_callable(F)?w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"retract\",[new x.type.Term(\":-\",[F,new De(\"_\")])]),new j(\"fail\",[])])),b.substitution,b),new Pe(b.goal.replace(null),b.substitution,b)]):w.throw_error(x.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,b,y){if(x.type.is_variable(y.args[0])||x.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(x.type.is_variable(y.args[0].args[0])||x.type.is_variable(y.args[0].args[1])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(x.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!x.type.is_atom(y.args[0].args[0]))w.throw_error(x.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!x.type.is_integer(y.args[0].args[1]))w.throw_error(x.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(x.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(x.error.representation(\"max_arity\",y.indicator));else{var F=y.args[0].args[0].id+\"/\"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type(\"atom\",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))w.throw_error(x.error.type(\"integer\",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new Re(y.args[0].id.length,!1);w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,y.args[1]])),b.substitution,b)])}},\"atom_concat/3\":function(w,b,y){var F,z,Z=y.args[0],$=y.args[1],oe=y.args[2];if(x.type.is_variable(oe)&&(x.type.is_variable(Z)||x.type.is_variable($)))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type(\"atom\",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))w.throw_error(x.error.type(\"atom\",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_atom(oe))w.throw_error(x.error.type(\"atom\",oe,y.indicator));else{var xe=x.type.is_variable(Z),Te=x.type.is_variable($);if(!xe&&!Te)z=new j(\"=\",[oe,new j(Z.id+$.id)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Te)F=oe.id.substr(0,oe.id.length-$.id.length),F+$.id===oe.id&&(z=new j(\"=\",[Z,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else if(Te&&!xe)F=oe.id.substr(Z.id.length),Z.id+F===oe.id&&(z=new j(\"=\",[$,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else{for(var lt=[],Et=0;Et<=oe.id.length;Et++){var qt=new j(oe.id.substr(0,Et)),ir=new j(oe.id.substr(Et));z=new j(\",\",[new j(\"=\",[qt,Z]),new j(\"=\",[ir,$])]),lt.push(new Pe(b.goal.replace(z),b.substitution,b))}w.prepend(lt)}}},\"sub_atom/5\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2],oe=y.args[3],xe=y.args[4];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type(\"integer\",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type(\"integer\",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_integer(oe))w.throw_error(x.error.type(\"integer\",oe,y.indicator));else if(x.type.is_integer(Z)&&Z.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",Z,y.indicator));else if(x.type.is_integer($)&&$.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",$,y.indicator));else if(x.type.is_integer(oe)&&oe.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",oe,y.indicator));else{var Te=[],lt=[],Et=[];if(x.type.is_variable(Z))for(F=0;F<=z.id.length;F++)Te.push(F);else Te.push(Z.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)lt.push(F);else lt.push($.value);if(x.type.is_variable(oe))for(F=0;F<=z.id.length;F++)Et.push(F);else Et.push(oe.value);var qt=[];for(var ir in Te)if(Te.hasOwnProperty(ir)){F=Te[ir];for(var Pt in lt)if(lt.hasOwnProperty(Pt)){var gn=lt[Pt],Pr=z.id.length-F-gn;if(e(Et,Pr)!==-1&&F+gn+Pr===z.id.length){var Ir=z.id.substr(F,gn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+gn,Pr)){var Nr=new j(\"=\",[new j(Ir),xe]),nn=new j(\"=\",[Z,new Re(F)]),oi=new j(\"=\",[$,new Re(gn)]),wo=new j(\"=\",[oe,new Re(Pr)]),rs=new j(\",\",[new j(\",\",[new j(\",\",[nn,oi]),wo]),Nr]);qt.push(new Pe(b.goal.replace(rs),b.substitution,b))}}}}w.prepend(qt)}},\"atom_chars/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te=\"\";oe.indicator===\"./2\";){if(x.type.is_character(oe.args[0]))Te+=oe.args[0].id;else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type(\"character\",oe.args[0],y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type(\"list\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j(Te),F])),b.substitution,b)])}else{for(var Z=new j(\"[]\"),$=F.id.length-1;$>=0;$--)Z=new j(\".\",[new j(F.id.charAt($)),Z]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,Z])),b.substitution,b)])}},\"atom_codes/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te=\"\";oe.indicator===\"./2\";){if(x.type.is_character_code(oe.args[0]))Te+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.representation(\"character_code\",y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type(\"list\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j(Te),F])),b.substitution,b)])}else{for(var Z=new j(\"[]\"),$=F.id.length-1;$>=0;$--)Z=new j(\".\",[new Re(n(F.id,$),!1),Z]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,Z])),b.substitution,b)])}},\"char_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))w.throw_error(x.error.type(\"character\",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))w.throw_error(x.error.representation(\"character_code\",y.indicator));else if(x.type.is_variable(z)){var Z=new Re(n(F.id,0),!1);w.prepend([new Pe(b.goal.replace(new j(\"=\",[Z,z])),b.substitution,b)])}else{var $=new j(c(z.value));w.prepend([new Pe(b.goal.replace(new j(\"=\",[$,F])),b.substitution,b)])}},\"number_chars/2\":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type(\"number\",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(Z)){var oe=Z,xe=!0;for(F=\"\";oe.indicator===\"./2\";){if(x.type.is_character(oe.args[0]))F+=oe.args[0].id;else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type(\"character\",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type(\"list\",Z,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Et=new j(\"[]\"),qt=F.length-1;qt>=0;qt--)Et=new j(\".\",[new j(F.charAt(qt)),Et]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[Z,Et])),b.substitution,b)])}}},\"number_codes/2\":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type(\"number\",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(Z)){var oe=Z,xe=!0;for(F=\"\";oe.indicator===\"./2\";){if(x.type.is_character_code(oe.args[0]))F+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type(\"character_code\",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type(\"list\",Z,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Et=new j(\"[]\"),qt=F.length-1;qt>=0;qt--)Et=new j(\".\",[new Re(n(F,qt),!1),Et]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[Z,Et])),b.substitution,b)])}}},\"upcase_atom/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type(\"atom\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,new j(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type(\"atom\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,new j(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"atomic_list_concat\",[F,new j(\"\",[]),z])),b.substitution,b)])},\"atomic_list_concat/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))w.throw_error(x.error.type(\"list\",F,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type(\"atom\",Z,y.indicator));else if(x.type.is_variable(Z)){for(var oe=\"\",xe=F;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(!x.type.is_atom(xe.args[0])&&!x.type.is_number(xe.args[0])){w.throw_error(x.error.type(\"atomic\",xe.args[0],y.indicator));return}oe!==\"\"&&(oe+=z.id),x.type.is_atom(xe.args[0])?oe+=xe.args[0].id:oe+=\"\"+xe.args[0].value,xe=xe.args[1]}oe=new j(oe,[]),x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(xe)||xe.indicator!==\"[]/0\"?w.throw_error(x.error.type(\"list\",F,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[oe,Z])),b.substitution,b)])}else{var $=g(s(Z.id.split(z.id),function(Te){return new j(Te,[])}));w.prepend([new Pe(b.goal.replace(new j(\"=\",[$,F])),b.substitution,b)])}},\"@=</2\":function(w,b,y){x.compare(y.args[0],y.args[1])<=0&&w.success(b)},\"==/2\":function(w,b,y){x.compare(y.args[0],y.args[1])===0&&w.success(b)},\"\\\\==/2\":function(w,b,y){x.compare(y.args[0],y.args[1])!==0&&w.success(b)},\"@</2\":function(w,b,y){x.compare(y.args[0],y.args[1])<0&&w.success(b)},\"@>/2\":function(w,b,y){x.compare(y.args[0],y.args[1])>0&&w.success(b)},\"@>=/2\":function(w,b,y){x.compare(y.args[0],y.args[1])>=0&&w.success(b)},\"compare/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(x.type.domain(\"order\",F,y.indicator));else{var $=x.compare(z,Z);$=$===0?\"=\":$===-1?\"<\":\">\",w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,new j($,[])])),b.substitution,b)])}},\"is/2\":function(w,b,y){var F=y.args[1].interpret(w);x.type.is_number(F)?w.prepend([new Pe(b.goal.replace(new j(\"=\",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},\"between/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))w.throw_error(x.error.type(\"integer\",F,y.indicator));else if(!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type(\"integer\",Z,y.indicator));else if(x.type.is_variable(Z)){var $=[new Pe(b.goal.replace(new j(\"=\",[Z,F])),b.substitution,b)];F.value<z.value&&$.push(new Pe(b.goal.replace(new j(\"between\",[new Re(F.value+1,!1),z,Z])),b.substitution,b)),w.prepend($)}else F.value<=Z.value&&z.value>=Z.value&&w.success(b)},\"succ/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?w.throw_error(x.error.type(\"integer\",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?w.throw_error(x.error.type(\"integer\",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?w.throw_error(x.error.domain(\"not_less_than_zero\",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?w.throw_error(x.error.domain(\"not_less_than_zero\",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,new Re(z.value-1,!1)])),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,new Re(F.value+1,!1)])),b.substitution,b)]))},\"=:=/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},\"=\\\\=/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},\"</2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F<0&&w.success(b)},\"=</2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F<=0&&w.success(b)},\">/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},\">=/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},\"var/1\":function(w,b,y){x.type.is_variable(y.args[0])&&w.success(b)},\"atom/1\":function(w,b,y){x.type.is_atom(y.args[0])&&w.success(b)},\"atomic/1\":function(w,b,y){x.type.is_atomic(y.args[0])&&w.success(b)},\"compound/1\":function(w,b,y){x.type.is_compound(y.args[0])&&w.success(b)},\"integer/1\":function(w,b,y){x.type.is_integer(y.args[0])&&w.success(b)},\"float/1\":function(w,b,y){x.type.is_float(y.args[0])&&w.success(b)},\"number/1\":function(w,b,y){x.type.is_number(y.args[0])&&w.success(b)},\"nonvar/1\":function(w,b,y){x.type.is_variable(y.args[0])||w.success(b)},\"ground/1\":function(w,b,y){y.variables().length===0&&w.success(b)},\"acyclic_term/1\":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),Z=0;Z<z.length;Z++)if(b.substitution.links[z[Z]]!==void 0&&!b.substitution.links[z[Z]].equals(F.links[z[Z]]))return;w.success(b)},\"callable/1\":function(w,b,y){x.type.is_callable(y.args[0])&&w.success(b)},\"is_list/1\":function(w,b,y){for(var F=y.args[0];x.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];x.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(b)},\"current_input/1\":function(w,b,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream\",F,y.indicator)):(x.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,w.get_current_input()])),b.substitution,b)]))},\"current_output/1\":function(w,b,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):(x.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,w.get_current_output()])),b.substitution,b)]))},\"set_input/1\":function(w,b,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):x.type.is_stream(z)?z.output===!0?w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(b)):w.throw_error(x.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,b,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):x.type.is_stream(z)?z.input===!0?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(b)):w.throw_error(x.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];w.prepend([new Pe(b.goal.replace(new j(\"open\",[F,z,Z,new j(\"[]\",[])])),b.substitution,b)])},\"open/4\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=y.args[3];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_atom(z))w.throw_error(x.error.type(\"atom\",z,y.indicator));else if(!x.type.is_list($))w.throw_error(x.error.type(\"list\",$,y.indicator));else if(!x.type.is_variable(Z))w.throw_error(x.error.type(\"variable\",Z,y.indicator));else if(!x.type.is_atom(F)&&!x.type.is_streamable(F))w.throw_error(x.error.domain(\"source_sink\",F,y.indicator));else if(!x.type.is_io_mode(z))w.throw_error(x.error.domain(\"io_mode\",z,y.indicator));else{for(var oe={},xe=$,Te;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_stream_option(Te)){w.throw_error(x.error.domain(\"stream_option\",Te,y.indicator));return}oe[Te.id]=Te.args[0].id,xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",$,y.indicator));return}else{var lt=oe.alias;if(lt&&w.get_stream_by_alias(lt)){w.throw_error(x.error.permission(\"open\",\"source_sink\",new j(\"alias\",[new j(lt,[])]),y.indicator));return}oe.type||(oe.type=\"text\");var Et;if(x.type.is_atom(F)?Et=w.file_system_open(F.id,oe.type,z.id):Et=F.stream(oe.type,z.id),Et===!1){w.throw_error(x.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(Et===null){w.throw_error(x.error.existence(\"source_sink\",F,y.indicator));return}var qt=new Fe(Et,z.id,oe.alias,oe.type,oe.reposition===\"true\",oe.eof_action);lt?w.session.streams[lt]=qt:w.session.streams[qt.id]=qt,w.prepend([new Pe(b.goal.replace(new j(\"=\",[Z,qt])),b.substitution,b)])}}},\"close/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\"close\",[F,new j(\"[]\",[])])),b.substitution,b)])},\"close/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(z))w.throw_error(x.error.type(\"list\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else{for(var $={},oe=z,xe;x.type.is_term(oe)&&oe.indicator===\"./2\";){if(xe=oe.args[0],x.type.is_variable(xe)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_close_option(xe)){w.throw_error(x.error.domain(\"close_option\",xe,y.indicator));return}$[xe.id]=xe.args[0].id===\"true\",oe=oe.args[1]}if(oe.indicator!==\"[]/0\"){x.type.is_variable(oe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",z,y.indicator));return}else{if(Z===w.session.standard_input||Z===w.session.standard_output){w.success(b);return}else Z===w.session.current_input?w.session.current_input=w.session.standard_input:Z===w.session.current_output&&(w.session.current_output=w.session.current_output);Z.alias!==null?delete w.session.streams[Z.alias]:delete w.session.streams[Z.id],Z.output&&Z.stream.flush();var Te=Z.stream.close();Z.stream=null,($.force===!0||Te===!0)&&w.success(b)}}},\"flush_output/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"flush_output\",[new De(\"S\")])])),b.substitution,b)])},\"flush_output/1\":function(w,b,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(z)||z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(x.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(b))},\"stream_property/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_variable(F)&&(!x.type.is_stream(Z)||Z.stream===null))w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_stream_property(z))w.throw_error(x.error.domain(\"stream_property\",z,y.indicator));else{var $=[],oe=[];if(!x.type.is_variable(F))$.push(Z);else for(var xe in w.session.streams)$.push(w.session.streams[xe]);for(var Te=0;Te<$.length;Te++){var lt=[];$[Te].filename&&lt.push(new j(\"file_name\",[new j($[Te].file_name,[])])),lt.push(new j(\"mode\",[new j($[Te].mode,[])])),lt.push(new j($[Te].input?\"input\":\"output\",[])),$[Te].alias&&lt.push(new j(\"alias\",[new j($[Te].alias,[])])),lt.push(new j(\"position\",[typeof $[Te].position==\"number\"?new Re($[Te].position,!1):new j($[Te].position,[])])),lt.push(new j(\"end_of_stream\",[new j($[Te].position===\"end_of_stream\"?\"at\":$[Te].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),lt.push(new j(\"eof_action\",[new j($[Te].eof_action,[])])),lt.push(new j(\"reposition\",[new j($[Te].reposition?\"true\":\"false\",[])])),lt.push(new j(\"type\",[new j($[Te].type,[])]));for(var Et=0;Et<lt.length;Et++)oe.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[x.type.is_variable(F)?F:Z,$[Te]]),new j(\"=\",[z,lt[Et]])])),b.substitution,b))}w.prepend(oe)}},\"at_end_of_stream/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\",\",[new j(\"stream_property\",[new De(\"S\"),new j(\"end_of_stream\",[new De(\"E\")])]),new j(\",\",[new j(\"!\",[]),new j(\";\",[new j(\"=\",[new De(\"E\"),new j(\"at\",[])]),new j(\"=\",[new De(\"E\"),new j(\"past\",[])])])])])])),b.substitution,b)])},\"at_end_of_stream/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"stream_property\",[F,new j(\"end_of_stream\",[new De(\"E\")])]),new j(\",\",[new j(\"!\",[]),new j(\";\",[new j(\"=\",[new De(\"E\"),new j(\"at\",[])]),new j(\"=\",[new De(\"E\"),new j(\"past\",[])])])])])),b.substitution,b)])},\"set_stream_position/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(Z)||Z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):x.type.is_stream_position(z)?Z.reposition===!1?w.throw_error(x.error.permission(\"reposition\",\"stream\",F,y.indicator)):(x.type.is_integer(z)?Z.position=z.value:Z.position=z.id,w.success(b)):w.throw_error(x.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"get_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))w.throw_error(x.error.type(\"in_character\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else{if($=Z.stream.get(1,Z.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}Z.position++}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j($,[]),z])),b.substitution,b)])}},\"get_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"get_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=-1,Z.position=\"past_end_of_stream\";else{if($=Z.stream.get(1,Z.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}$=n($,0),Z.position++}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"peek_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"peek_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))w.throw_error(x.error.type(\"in_character\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else if($=Z.stream.get(1,Z.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j($,[]),z])),b.substitution,b)])}},\"peek_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"peek_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=-1,Z.position=\"past_end_of_stream\";else{if($=Z.stream.get(1,Z.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}$=n($,0)}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"put_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_character(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(Z)||Z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):Z.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):Z.type===\"binary\"?w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator)):Z.stream.put(z.id,Z.position)&&(typeof Z.position==\"number\"&&Z.position++,w.success(b)):w.throw_error(x.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(z)?x.type.is_character_code(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(Z)||Z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):Z.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):Z.type===\"binary\"?w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator)):Z.stream.put_char(c(z.value),Z.position)&&(typeof Z.position==\"number\"&&Z.position++,w.success(b)):w.throw_error(x.error.representation(\"character_code\",y.indicator)):w.throw_error(x.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_char\",[new De(\"S\"),new j(`\n`,[])])])),b.substitution,b)])},\"nl/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\"put_char\",[F,new j(`\n`,[])])),b.substitution,b)])},\"get_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"get_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))w.throw_error(x.error.type(\"in_byte\",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"text\")w.throw_error(x.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else{if($=Z.stream.get_byte(Z.position),$===null){w.throw_error(x.error.representation(\"byte\",y.indicator));return}Z.position++}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"peek_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"peek_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))w.throw_error(x.error.type(\"in_byte\",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"text\")w.throw_error(x.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else if($=Z.stream.get_byte(Z.position),$===null){w.throw_error(x.error.representation(\"byte\",y.indicator));return}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"put_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_byte(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(Z)||Z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):Z.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):Z.type===\"text\"?w.throw_error(x.error.permission(\"output\",\"text_stream\",F,y.indicator)):Z.stream.put_byte(z.value,Z.position)&&(typeof Z.position==\"number\"&&Z.position++,w.success(b)):w.throw_error(x.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"read_term\",[new De(\"S\"),F,new j(\"[]\",[])])])),b.substitution,b)])},\"read/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"read_term\",[F,z,new j(\"[]\",[])])),b.substitution,b)])},\"read_term/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"read_term\",[new De(\"S\"),F,z])])),b.substitution,b)])},\"read_term/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if($.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if($.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if($.position===\"past_end_of_stream\"&&$.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var oe={},xe=Z,Te;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_read_option(Te)){w.throw_error(x.error.domain(\"read_option\",Te,y.indicator));return}oe[Te.id]=Te.args[0],xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",Z,y.indicator));return}else{for(var lt,Et,qt,ir=\"\",Pt=[],gn=null;gn===null||gn.name!==\"atom\"||gn.value!==\".\"||qt.type===f&&x.flatten_error(new j(\"throw\",[qt.value])).found===\"token_not_found\";){if(lt=$.stream.get(1,$.position),lt===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}if(lt===\"end_of_file\"||lt===\"past_end_of_file\"){qt?w.throw_error(x.error.syntax(Pt[qt.len-1],\". or expression expected\",!1)):w.throw_error(x.error.syntax(null,\"token not found\",!0));return}$.position++,ir+=lt,Et=new U(w),Et.new_text(ir),Pt=Et.get_tokens(),gn=Pt!==null&&Pt.length>0?Pt[Pt.length-1]:null,Pt!==null&&(qt=W(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&gn.value===\".\"){qt=qt.value.rename(w);var Pr=new j(\"=\",[z,qt]);if(oe.variables){var Ir=g(s(Ee(qt.variables()),function(Nr){return new De(Nr)}));Pr=new j(\",\",[Pr,new j(\"=\",[oe.variables,Ir])])}if(oe.variable_names){var Ir=g(s(Ee(qt.variables()),function(nn){var oi;for(oi in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(oi)&&w.session.renamed_variables[oi]===nn)break;return new j(\"=\",[new j(oi,[]),new De(nn)])}));Pr=new j(\",\",[Pr,new j(\"=\",[oe.variable_names,Ir])])}if(oe.singletons){var Ir=g(s(new Ye(qt,null).singleton_variables(),function(nn){var oi;for(oi in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(oi)&&w.session.renamed_variables[oi]===nn)break;return new j(\"=\",[new j(oi,[]),new De(nn)])}));Pr=new j(\",\",[Pr,new j(\"=\",[oe.singletons,Ir])])}w.prepend([new Pe(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(x.error.syntax(Pt[qt.len],\"unexpected token\",!1)):w.throw_error(qt.value)}}},\"write/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"write\",[new De(\"S\"),F])])),b.substitution,b)])},\"write/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"write_term\",[F,z,new j(\".\",[new j(\"quoted\",[new j(\"false\",[])]),new j(\".\",[new j(\"ignore_ops\",[new j(\"false\")]),new j(\".\",[new j(\"numbervars\",[new j(\"true\")]),new j(\"[]\",[])])])])])),b.substitution,b)])},\"writeq/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"writeq\",[new De(\"S\"),F])])),b.substitution,b)])},\"writeq/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"write_term\",[F,z,new j(\".\",[new j(\"quoted\",[new j(\"true\",[])]),new j(\".\",[new j(\"ignore_ops\",[new j(\"false\")]),new j(\".\",[new j(\"numbervars\",[new j(\"true\")]),new j(\"[]\",[])])])])])),b.substitution,b)])},\"write_canonical/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"write_canonical\",[new De(\"S\"),F])])),b.substitution,b)])},\"write_canonical/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"write_term\",[F,z,new j(\".\",[new j(\"quoted\",[new j(\"true\",[])]),new j(\".\",[new j(\"ignore_ops\",[new j(\"true\")]),new j(\".\",[new j(\"numbervars\",[new j(\"false\")]),new j(\"[]\",[])])])])])),b.substitution,b)])},\"write_term/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"write_term\",[new De(\"S\"),F,z])])),b.substitution,b)])},\"write_term/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if($.input)w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator));else if($.type===\"binary\")w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if($.position===\"past_end_of_stream\"&&$.eof_action===\"error\")w.throw_error(x.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var oe={},xe=Z,Te;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Te)){w.throw_error(x.error.domain(\"write_option\",Te,y.indicator));return}oe[Te.id]=Te.args[0].id===\"true\",xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",Z,y.indicator));return}else{oe.session=w.session;var lt=z.toString(oe);$.stream.put(lt,$.position),typeof $.position==\"number\"&&($.position+=lt.length),w.success(b)}}},\"halt/0\":function(w,b,y){w.points=[]},\"halt/1\":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?w.points=[]:w.throw_error(x.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))w.throw_error(x.error.domain(\"prolog_flag\",F,y.indicator));else{var Z=[];for(var $ in x.flag)if(x.flag.hasOwnProperty($)){var oe=new j(\",\",[new j(\"=\",[new j($),F]),new j(\"=\",[w.get_flag($),z])]);Z.push(new Pe(b.goal.replace(oe),b.substitution,b))}w.prepend(Z)}},\"set_prolog_flag/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(x.error.permission(\"modify\",\"flag\",F)):w.throw_error(x.error.domain(\"flag_value\",new j(\"+\",[F,z]),y.indicator)):w.throw_error(x.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(x.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new j(\"true\"),new j(\"false\")],value:new j(\"true\"),changeable:!1},max_integer:{allowed:[new Re(Number.MAX_SAFE_INTEGER)],value:new Re(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Re(Number.MIN_SAFE_INTEGER)],value:new Re(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new j(\"down\"),new j(\"toward_zero\")],value:new j(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new j(\"on\"),new j(\"off\")],value:new j(\"on\"),changeable:!0},debug:{allowed:[new j(\"on\"),new j(\"off\")],value:new j(\"off\"),changeable:!0},max_arity:{allowed:[new j(\"unbounded\")],value:new j(\"unbounded\"),changeable:!1},unknown:{allowed:[new j(\"error\"),new j(\"fail\"),new j(\"warning\")],value:new j(\"error\"),changeable:!0},double_quotes:{allowed:[new j(\"chars\"),new j(\"codes\"),new j(\"atom\")],value:new j(\"codes\"),changeable:!0},occurs_check:{allowed:[new j(\"false\"),new j(\"true\")],value:new j(\"false\"),changeable:!0},dialect:{allowed:[new j(\"tau\")],value:new j(\"tau\"),changeable:!1},version_data:{allowed:[new j(\"tau\",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)])],value:new j(\"tau\",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)]),changeable:!1},nodejs:{allowed:[new j(\"yes\"),new j(\"no\")],value:new j(typeof tc<\"u\"&&tc.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var Z=F.pop();if(w=Z.left,b=Z.right,x.type.is_term(w)&&x.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$<w.args.length;$++)F.push({left:w.args[$],right:b.args[$]})}else if(x.type.is_number(w)&&x.type.is_number(b)){if(w.value!==b.value||w.is_float!==b.is_float)return null}else if(x.type.is_variable(w)){if(x.type.is_variable(b)&&w.id===b.id)continue;if(y===!0&&b.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var oe=new Ne;oe.add(w.id,b);for(var $=0;$<F.length;$++)F[$].left=F[$].left.apply(oe),F[$].right=F[$].right.apply(oe);for(var $ in z)z[$]=z[$].apply(oe);z[w.id]=b}}else if(x.type.is_variable(b))F.push({left:b,right:w});else if(w.unify!==void 0){if(!w.unify(b))return null}else return null}return new Ne(z)},compare:function(w,b){var y=x.type.compare(w,b);return y!==0?y:w.compare(b)},arithmetic_compare:function(w,b,y){var F=b.interpret(w);if(x.type.is_number(F)){var z=y.interpret(w);return x.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,b){if(x.type.is_operator(b)){for(var y=x.type.is_operator(b),F=[],z,Z=!1,$=0;$<b.args.length;$++){if(z=b.args[$].interpret(w),x.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return x.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;Z=Z||z.is_float}return F.push(w),z=x.arithmetic.evaluation[b.indicator].fn.apply(this,F),Z=y.type_result===null?Z:y.type_result,x.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?x.error.evaluation(\"overflow\",w.__call_indicator):Z===!1&&w.get_flag(\"bounded\").id===\"true\"&&(z>w.get_flag(\"max_integer\").value||z<w.get_flag(\"min_integer\").value)?x.error.evaluation(\"int_overflow\",w.__call_indicator):new Re(z,Z)}else return x.error.type(\"evaluable\",b.indicator,w.__call_indicator)},error:{existence:function(w,b,y){return typeof b==\"string\"&&(b=X(b)),new j(\"error\",[new j(\"existence_error\",[new j(w),b]),X(y)])},type:function(w,b,y){return new j(\"error\",[new j(\"type_error\",[new j(w),b]),X(y)])},instantiation:function(w){return new j(\"error\",[new j(\"instantiation_error\"),X(w)])},domain:function(w,b,y){return new j(\"error\",[new j(\"domain_error\",[new j(w),b]),X(y)])},representation:function(w,b){return new j(\"error\",[new j(\"representation_error\",[new j(w)]),X(b)])},permission:function(w,b,y,F){return new j(\"error\",[new j(\"permission_error\",[new j(w),new j(b),y]),X(F)])},evaluation:function(w,b){return new j(\"error\",[new j(\"evaluation_error\",[new j(w)]),X(b)])},syntax:function(w,b,y){w=w||{value:\"\",line:0,column:0,matches:[\"\"],start:0};var F=y&&w.matches.length>0?w.start+w.matches[0].length:w.start,z=y?new j(\"token_not_found\"):new j(\"found\",[new j(w.value.toString())]),Z=new j(\".\",[new j(\"line\",[new Re(w.line+1)]),new j(\".\",[new j(\"column\",[new Re(F+1)]),new j(\".\",[z,new j(\"[]\",[])])])]);return new j(\"error\",[new j(\"syntax_error\",[new j(b)]),Z])},syntax_by_predicate:function(w,b){return new j(\"error\",[new j(\"syntax_error\",[new j(w)]),X(b)])}},warning:{singleton:function(w,b,y){for(var F=new j(\"[]\"),z=w.length-1;z>=0;z--)F=new j(\".\",[new De(w[z]),F]);return new j(\"warning\",[new j(\"singleton_variables\",[F,X(b)]),new j(\".\",[new j(\"line\",[new Re(y,!1)]),new j(\"[]\")])])},failed_goal:function(w,b){return new j(\"warning\",[new j(\"failed_goal\",[w]),new j(\".\",[new j(\"line\",[new Re(b,!1)]),new j(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,b,F){b instanceof ke&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,x.type.is_error(w))return\"uncaught exception: \"+w.args[0].toString();if(w===!1)return\"false.\";if(w===null)return\"limit exceeded ;\";var z=0,Z=\"\";if(x.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Te,lt){return!x.type.is_variable(lt)||$.indexOf(lt.id)!==-1&&Te!==lt.id})}for(var oe in w.links)w.links.hasOwnProperty(oe)&&(z++,Z!==\"\"&&(Z+=\", \"),Z+=oe.toString(F)+\" = \"+w.links[oe].toString(F));var xe=typeof b>\"u\"||b.points.length>0?\" ;\":\".\";return z===0?\"true\"+xe:Z+xe},flatten_error:function(w){if(!x.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type===\"syntax_error\"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type===\"type_error\"||b.type===\"domain_error\"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id===\"token_not_found\"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type===\"permission_error\"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type===\"evaluation_error\"?b.evaluation_type=w.args[0].args[0].id:b.type===\"representation_error\"?b.representation=w.args[0].args[0].id:b.type===\"existence_error\"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new x.type.Session(w)}};typeof tc<\"u\"?tc.exports=x:window.pl=x})()});function hve(t,e,r){t.prepend(r.map(s=>new gl.default.type.State(e.goal.replace(s),e.substitution,e)))}function y9(t){let e=dve.get(t.session);if(e==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return e}function mve(t,e){dve.set(t,e),t.consult(`:- use_module(library(${gDt.id})).`)}var E9,gl,gve,J0,pDt,hDt,dve,gDt,yve=It(()=>{Ve();E9=et(AS()),gl=et(m9()),gve=et(ye(\"vm\")),{is_atom:J0,is_variable:pDt,is_instantiated_list:hDt}=gl.default.type;dve=new WeakMap;gDt=new gl.default.type.Module(\"constraints\",{\"project_workspaces_by_descriptor/3\":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(gl.default.error.instantiation(r.indicator));return}let c=q.parseIdent(s.id),f=q.makeDescriptor(c,a.id),h=y9(t).tryWorkspaceByDescriptor(f);pDt(n)&&h!==null&&hve(t,e,[new gl.default.type.Term(\"=\",[n,new gl.default.type.Term(String(h.relativeCwd))])]),J0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},\"workspace_field/3\":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(gl.default.error.instantiation(r.indicator));return}let f=y9(t).tryWorkspaceByCwd(s.id);if(f==null)return;let p=(0,E9.default)(f.manifest.raw,a.id);typeof p>\"u\"||hve(t,e,[new gl.default.type.Term(\"=\",[n,new gl.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},\"workspace_field_test/3\":(t,e,r)=>{let[s,a,n]=r.args;t.prepend([new gl.default.type.State(e.goal.replace(new gl.default.type.Term(\"workspace_field_test\",[s,a,n,new gl.default.type.Term(\"[]\",[])])),e.substitution,e)])},\"workspace_field_test/4\":(t,e,r)=>{let[s,a,n,c]=r.args;if(!J0(s)||!J0(a)||!J0(n)||!hDt(c)){t.throw_error(gl.default.error.instantiation(r.indicator));return}let p=y9(t).tryWorkspaceByCwd(s.id);if(p==null)return;let h=(0,E9.default)(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[S,P]of c.toJavaScript().entries())E[`$${S}`]=P;gve.default.runInNewContext(n.id,E)&&t.success(e)}},[\"project_workspaces_by_descriptor/3\",\"workspace_field/3\",\"workspace_field_test/3\",\"workspace_field_test/4\"])});var BS={};Vt(BS,{Constraints:()=>C9,DependencyType:()=>wve});function yo(t){if(t instanceof ZC.default.type.Num)return t.value;if(t instanceof ZC.default.type.Term)switch(t.indicator){case\"throw/1\":return yo(t.args[0]);case\"error/1\":return yo(t.args[0]);case\"error/2\":if(t.args[0]instanceof ZC.default.type.Term&&t.args[0].indicator===\"syntax_error/1\")return Object.assign(yo(t.args[0]),...yo(t.args[1]));{let e=yo(t.args[0]);return e.message+=` (in ${yo(t.args[1])})`,e}case\"syntax_error/1\":return new Yt(43,`Syntax error: ${yo(t.args[0])}`);case\"existence_error/2\":return new Yt(44,`Existence error: ${yo(t.args[0])} ${yo(t.args[1])} not found`);case\"instantiation_error/0\":return new Yt(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:yo(t.args[0])};case\"column/1\":return{column:yo(t.args[0])};case\"found/1\":return{found:yo(t.args[0])};case\"./2\":return[yo(t.args[0])].concat(yo(t.args[1]));case\"//2\":return`${yo(t.args[0])}/${yo(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function Ive(t){let e;try{e=yo(t)}catch(r){throw typeof r==\"string\"?new Yt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<\"u\"&&typeof e.column<\"u\"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function xm(t){return t.id===\"null\"?null:`${t.toJavaScript()}`}function dDt(t){if(t.id===\"null\")return null;{let e=t.toJavaScript();if(typeof e!=\"string\")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function z0(t){return typeof t==\"string\"?`'${t}'`:\"[]\"}var Cve,ZC,wve,Eve,I9,C9,vS=It(()=>{Ve();Ve();bt();Cve=et(XBe()),ZC=et(m9());IS();yve();(0,Cve.default)(ZC.default);wve=(s=>(s.Dependencies=\"dependencies\",s.DevDependencies=\"devDependencies\",s.PeerDependencies=\"peerDependencies\",s))(wve||{}),Eve=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];I9=class{constructor(e,r){let s=1e3*e.workspaces.length;this.session=ZC.default.create(s),mve(this.session,e),this.session.consult(\":- use_module(library(lists)).\"),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw Ive(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new Yt(79,\"Resolution limit exceeded\");if(!s)break;if(s.id===\"throw\")throw Ive(s);yield s}}};C9=class t{constructor(e){this.source=\"\";this.project=e;let r=e.configuration.get(\"constraintsPath\");le.existsSync(r)&&(this.source=le.readFileSync(r,\"utf8\"))}static async find(e){return new t(e)}getProjectDatabase(){let e=\"\";for(let r of Eve)e+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;e+=`workspace(${z0(s)}).\n`,e+=`workspace_ident(${z0(s)}, ${z0(q.stringifyIdent(r.anchoredLocator))}).\n`,e+=`workspace_version(${z0(s)}, ${z0(r.manifest.version)}).\n`;for(let a of Eve)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${z0(s)}, ${z0(q.stringifyIdent(n))}, ${z0(n.range)}, ${a}).\n`}return e+=`workspace(_) :- false.\n`,e+=`workspace_ident(_, _) :- false.\n`,e+=`workspace_version(_, _) :- false.\n`,e+=`workspace_has_dependency(_, _, _, _) :- false.\n`,e}getDeclarations(){let e=\"\";return e+=`gen_enforced_dependency(_, _, _, _) :- false.\n`,e+=`gen_enforced_field(_, _, _) :- false.\n`,e}get fullSource(){return`${this.getProjectDatabase()}\n${this.source}\n${this.getDeclarations()}`}createSession(){return new I9(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of e){let p=ES([f,q.stringifyIdent(n)]),h=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=ES(n),p=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let s of e.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=K.resolve(this.project.cwd,xm(s.links.WorkspaceCwd)),n=xm(s.links.DependencyIdent),c=xm(s.links.DependencyRange),f=xm(s.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=q.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return je.sortMap(r,[({dependencyRange:s})=>s!==null?\"0\":\"1\",({workspace:s})=>q.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>q.stringifyIdent(s)])}async genEnforcedFields(e){let r=[];for await(let s of e.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=K.resolve(this.project.cwd,xm(s.links.WorkspaceCwd)),n=xm(s.links.FieldPath),c=dDt(s.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return je.sortMap(r,[({workspace:s})=>q.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(e){let r=this.createSession();for await(let s of r.makeQuery(e)){let a={};for(let[n,c]of Object.entries(s.links))n!==\"_\"&&(a[n]=xm(c));yield a}}}});var Qve=L(gF=>{\"use strict\";Object.defineProperty(gF,\"__esModule\",{value:!0});function US(t){let e=[...t.caches],r=e.shift();return r===void 0?kve():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>US({caches:e}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>US({caches:e}).set(s,a))},delete(s){return r.delete(s).catch(()=>US({caches:e}).delete(s))},clear(){return r.clear().catch(()=>US({caches:e}).clear())}}}function kve(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}gF.createFallbackableCache=US;gF.createNullCache=kve});var Rve=L((ihr,Tve)=>{Tve.exports=Qve()});var Fve=L(N9=>{\"use strict\";Object.defineProperty(N9,\"__esModule\",{value:!0});function NDt(t={serializable:!0}){let e={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}N9.createInMemoryCache=NDt});var Ove=L((ohr,Nve)=>{Nve.exports=Fve()});var Mve=L(ef=>{\"use strict\";Object.defineProperty(ef,\"__esModule\",{value:!0});function ODt(t,e,r){let s={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers(){return t===O9.WithinHeaders?s:{}},queryParameters(){return t===O9.WithinQueryParameters?s:{}}}}function LDt(t){let e=0,r=()=>(e++,new Promise(s=>{setTimeout(()=>{s(t(r))},Math.min(100*e,1e3))}));return t(r)}function Lve(t,e=(r,s)=>Promise.resolve()){return Object.assign(t,{wait(r){return Lve(t.then(s=>Promise.all([e(s,r),s])).then(s=>s[1]))}})}function MDt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function _Dt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function UDt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var HDt=\"4.22.1\",jDt=t=>()=>t.transporter.requester.destroy(),O9={WithinQueryParameters:0,WithinHeaders:1};ef.AuthMode=O9;ef.addMethods=_Dt;ef.createAuth=ODt;ef.createRetryablePromise=LDt;ef.createWaitablePromise=Lve;ef.destroy=jDt;ef.encode=UDt;ef.shuffle=MDt;ef.version=HDt});var HS=L((lhr,_ve)=>{_ve.exports=Mve()});var Uve=L(L9=>{\"use strict\";Object.defineProperty(L9,\"__esModule\",{value:!0});var qDt={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};L9.MethodEnum=qDt});var jS=L((uhr,Hve)=>{Hve.exports=Uve()});var rSe=L(Yi=>{\"use strict\";Object.defineProperty(Yi,\"__esModule\",{value:!0});var qve=jS();function M9(t,e){let r=t||{},s=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var qS={Read:1,Write:2,Any:3},aw={Up:1,Down:2,Timeouted:3},Gve=2*60*1e3;function U9(t,e=aw.Up){return{...t,status:e,lastUpdate:Date.now()}}function Wve(t){return t.status===aw.Up||Date.now()-t.lastUpdate>Gve}function Yve(t){return t.status===aw.Timeouted&&Date.now()-t.lastUpdate<=Gve}function H9(t){return typeof t==\"string\"?{protocol:\"https\",url:t,accept:qS.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||qS.Any}}function GDt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(U9(r))))).then(r=>{let s=r.filter(f=>Wve(f)),a=r.filter(f=>Yve(f)),n=[...s,...a],c=n.length>0?n.map(f=>H9(f)):e;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var WDt=({isTimedOut:t,status:e})=>!t&&~~e===0,YDt=t=>{let e=t.status;return t.isTimedOut||WDt(t)||~~(e/100)!==2&&~~(e/100)!==4},VDt=({status:t})=>~~(t/100)===2,KDt=(t,e)=>YDt(t)?e.onRetry(t):VDt(t)?e.onSuccess(t):e.onFail(t);function jve(t,e,r,s){let a=[],n=Zve(r,s),c=Xve(t,s),f=r.method,p=r.method!==qve.MethodEnum.Get?{}:{...r.data,...s.data},h={\"x-algolia-agent\":t.userAgent.value,...t.queryParameters,...p,...s.queryParameters},E=0,C=(S,P)=>{let I=S.pop();if(I===void 0)throw tSe(_9(a));let R={data:n,headers:c,method:f,url:Jve(I,r.path,h),connectTimeout:P(E,t.timeouts.connect),responseTimeout:P(E,s.timeout)},N=W=>{let te={request:R,response:W,host:I,triesLeft:S.length};return a.push(te),te},U={onSuccess:W=>Vve(W),onRetry(W){let te=N(W);return W.isTimedOut&&E++,Promise.all([t.logger.info(\"Retryable failure\",j9(te)),t.hostsCache.set(I,U9(I,W.isTimedOut?aw.Timeouted:aw.Down))]).then(()=>C(S,P))},onFail(W){throw N(W),Kve(W,_9(a))}};return t.requester.send(R).then(W=>KDt(W,U))};return GDt(t.hostsCache,e).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function JDt(t){let{hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=t,C={hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>H9(S)),read(S,P){let I=M9(P,C.timeouts.read),R=()=>jve(C,C.hosts.filter(W=>(W.accept&qS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return R();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,R()).then(W=>Promise.all([C.requestsCache.delete(U),W]),W=>Promise.all([C.requestsCache.delete(U),Promise.reject(W)])).then(([W,te])=>te)),{miss:W=>C.responsesCache.set(U,W)})},write(S,P){return jve(C,C.hosts.filter(I=>(I.accept&qS.Write)!==0),S,M9(P,C.timeouts.write))}};return C}function zDt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return e.value.indexOf(s)===-1&&(e.value=`${e.value}${s}`),e}};return e}function Vve(t){try{return JSON.parse(t.content)}catch(e){throw eSe(e.message,t)}}function Kve({content:t,status:e},r){let s=t;try{s=JSON.parse(t).message}catch{}return $ve(s,e,r)}function ZDt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function Jve(t,e,r){let s=zve(r),a=`${t.protocol}://${t.url}/${e.charAt(0)===\"/\"?e.substr(1):e}`;return s.length&&(a+=`?${s}`),a}function zve(t){let e=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(t).map(r=>ZDt(\"%s=%s\",r,e(t[r])?JSON.stringify(t[r]):t[r])).join(\"&\")}function Zve(t,e){if(t.method===qve.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function Xve(t,e){let r={...t.headers,...e.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function _9(t){return t.map(e=>j9(e))}function j9(t){let e=t.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function $ve(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}function eSe(t,e){return{name:\"DeserializationError\",message:t,response:e}}function tSe(t){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:t}}Yi.CallEnum=qS;Yi.HostStatusEnum=aw;Yi.createApiError=$ve;Yi.createDeserializationError=eSe;Yi.createMappedRequestOptions=M9;Yi.createRetryError=tSe;Yi.createStatefulHost=U9;Yi.createStatelessHost=H9;Yi.createTransporter=JDt;Yi.createUserAgent=zDt;Yi.deserializeFailure=Kve;Yi.deserializeSuccess=Vve;Yi.isStatefulHostTimeouted=Yve;Yi.isStatefulHostUp=Wve;Yi.serializeData=Zve;Yi.serializeHeaders=Xve;Yi.serializeQueryParameters=zve;Yi.serializeUrl=Jve;Yi.stackFrameWithoutCredentials=j9;Yi.stackTraceWithoutCredentials=_9});var GS=L((Ahr,nSe)=>{nSe.exports=rSe()});var iSe=L(X0=>{\"use strict\";Object.defineProperty(X0,\"__esModule\",{value:!0});var lw=HS(),XDt=GS(),WS=jS(),$Dt=t=>{let e=t.region||\"us\",r=lw.createAuth(lw.AuthMode.WithinHeaders,t.appId,t.apiKey),s=XDt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return lw.addMethods({appId:a,transporter:s},t.methods)},ebt=t=>(e,r)=>t.transporter.write({method:WS.MethodEnum.Post,path:\"2/abtests\",data:e},r),tbt=t=>(e,r)=>t.transporter.write({method:WS.MethodEnum.Delete,path:lw.encode(\"2/abtests/%s\",e)},r),rbt=t=>(e,r)=>t.transporter.read({method:WS.MethodEnum.Get,path:lw.encode(\"2/abtests/%s\",e)},r),nbt=t=>e=>t.transporter.read({method:WS.MethodEnum.Get,path:\"2/abtests\"},e),ibt=t=>(e,r)=>t.transporter.write({method:WS.MethodEnum.Post,path:lw.encode(\"2/abtests/%s/stop\",e)},r);X0.addABTest=ebt;X0.createAnalyticsClient=$Dt;X0.deleteABTest=tbt;X0.getABTest=rbt;X0.getABTests=nbt;X0.stopABTest=ibt});var oSe=L((hhr,sSe)=>{sSe.exports=iSe()});var lSe=L(YS=>{\"use strict\";Object.defineProperty(YS,\"__esModule\",{value:!0});var q9=HS(),sbt=GS(),aSe=jS(),obt=t=>{let e=t.region||\"us\",r=q9.createAuth(q9.AuthMode.WithinHeaders,t.appId,t.apiKey),s=sbt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return q9.addMethods({appId:t.appId,transporter:s},t.methods)},abt=t=>e=>t.transporter.read({method:aSe.MethodEnum.Get,path:\"1/strategies/personalization\"},e),lbt=t=>(e,r)=>t.transporter.write({method:aSe.MethodEnum.Post,path:\"1/strategies/personalization\",data:e},r);YS.createPersonalizationClient=obt;YS.getPersonalizationStrategy=abt;YS.setPersonalizationStrategy=lbt});var uSe=L((dhr,cSe)=>{cSe.exports=lSe()});var vSe=L(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Kt=HS(),dl=GS(),br=jS(),cbt=ye(\"crypto\");function dF(t){let e=r=>t.request(r).then(s=>{if(t.batch!==void 0&&t.batch(s.hits),!t.shouldStop(s))return s.cursor?e({cursor:s.cursor}):e({page:(r.page||0)+1})});return e({})}var ubt=t=>{let e=t.appId,r=Kt.createAuth(t.authMode!==void 0?t.authMode:Kt.AuthMode.WithinHeaders,e,t.apiKey),s=dl.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:dl.CallEnum.Read},{url:`${e}.algolia.net`,accept:dl.CallEnum.Write}].concat(Kt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),\"content-type\":\"application/x-www-form-urlencoded\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:s,appId:e,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Kt.addMethods(a,t.methods)};function fSe(){return{name:\"MissingObjectIDError\",message:\"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option.\"}}function ASe(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function pSe(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var fbt=t=>(e,r)=>{let{queryParameters:s,...a}=r||{},n={acl:e,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Kt.createRetryablePromise(h=>VS(t)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:\"1/keys\",data:n},a),c)},Abt=t=>(e,r,s)=>{let a=dl.createMappedRequestOptions(s);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:br.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},pbt=t=>(e,r,s)=>t.transporter.write({method:br.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},s),hbt=t=>(e,r)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(s,a)=>cw(t)(s.taskID,a)),mF=t=>(e,r,s)=>{let a=(n,c)=>KS(t)(e,{methods:{waitTask:gs}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},s),a)},gbt=t=>(e,r,s)=>mF(t)(e,r,{...s,scope:[EF.Rules]}),dbt=t=>(e,r,s)=>mF(t)(e,r,{...s,scope:[EF.Settings]}),mbt=t=>(e,r,s)=>mF(t)(e,r,{...s,scope:[EF.Synonyms]}),ybt=t=>(e,r)=>e.method===br.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),Ebt=t=>(e,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>VS(t)(e,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/keys/%s\",e)},r),s)},Ibt=t=>(e,r,s)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>cw(t)(n.taskID,c))},Cbt=()=>(t,e)=>{let r=dl.serializeQueryParameters(e),s=cbt.createHmac(\"sha256\",t).update(r).digest(\"hex\");return Buffer.from(s+r).toString(\"base64\")},VS=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/keys/%s\",e)},r),hSe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/task/%s\",e.toString())},r),wbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},e),Bbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/logs\"},e),vbt=()=>t=>{let e=Buffer.from(t,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,s=e.match(r);if(s===null)throw pSe();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},Sbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping/top\"},e),Dbt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/clusters/mapping/%s\",e)},r),bbt=t=>e=>{let{retrieveMappings:r,...s}=e||{};return r===!0&&(s.getClusters=!0),t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},s)},KS=t=>(e,r={})=>{let s={transporter:t.transporter,appId:t.appId,indexName:e};return Kt.addMethods(s,r.methods)},Pbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/keys\"},e),xbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters\"},e),kbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/indexes\"},e),Qbt=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping\"},e),Tbt=t=>(e,r,s)=>{let a=(n,c)=>KS(t)(e,{methods:{waitTask:gs}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},s),a)},Rbt=t=>(e,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>KS(t)(c,{methods:{waitTask:gs}}).waitTask(a.taskID[c],n)));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:e}},r),s)},Fbt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:e}},r),Nbt=t=>(e,r)=>{let s=e.map(a=>({...a,params:dl.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:s},cacheable:!0},r)},Obt=t=>(e,r)=>Promise.all(e.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return KS(t)(s.indexName,{methods:{searchForFacetValues:CSe}}).searchForFacetValues(a,n,{...r,...c})})),Lbt=t=>(e,r)=>{let s=dl.createMappedRequestOptions(r);return s.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:br.MethodEnum.Delete,path:\"1/clusters/mapping\"},s)},Mbt=t=>(e,r,s)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>cw(t)(n.taskID,c))},_bt=t=>(e,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>VS(t)(e,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/keys/%s/restore\",e)},r),s)},Ubt=t=>(e,r,s)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>cw(t)(n.taskID,c))},Hbt=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},s),jbt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:e}},r),qbt=t=>(e,r)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:e},r),(s,a)=>cw(t)(s.taskID,a)),Gbt=t=>(e,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((P,I)=>P===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Kt.createRetryablePromise(S=>VS(t)(e,C).then(P=>p(P)?Promise.resolve():S()));return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Kt.encode(\"1/keys/%s\",e),data:c},n),h)},cw=t=>(e,r)=>Kt.createRetryablePromise(s=>hSe(t)(e,r).then(a=>a.status!==\"published\"?s():void 0)),gSe=t=>(e,r)=>{let s=(a,n)=>gs(t)(a.taskID,n);return Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),s)},Wbt=t=>e=>dF({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/browse\",t.indexName),data:r},e)}),Ybt=t=>e=>{let r={hitsPerPage:1e3,...e};return dF({shouldStop:s=>s.hits.length<r.hitsPerPage,...r,request(s){return wSe(t)(\"\",{...r,...s}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Vbt=t=>e=>{let r={hitsPerPage:1e3,...e};return dF({shouldStop:s=>s.hits.length<r.hitsPerPage,...r,request(s){return BSe(t)(\"\",{...r,...s}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},yF=t=>(e,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E<e.length&&(h.push(e[E]),h.length!==(a||1e3));E++);return h.length===0?Promise.resolve(c):gSe(t)(h.map(C=>({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Kt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>gs(t)(E,h))))},Kbt=t=>e=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/clear\",t.indexName)},e),(r,s)=>gs(t)(r.taskID,s)),Jbt=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=dl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/rules/clear\",t.indexName)},a),(n,c)=>gs(t)(n.taskID,c))},zbt=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=dl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/synonyms/clear\",t.indexName)},a),(n,c)=>gs(t)(n.taskID,c))},Zbt=t=>(e,r)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(s,a)=>gs(t)(s.taskID,a)),Xbt=t=>e=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/indexes/%s\",t.indexName)},e),(r,s)=>gs(t)(r.taskID,s)),$bt=t=>(e,r)=>Kt.createWaitablePromise(dSe(t)([e],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>gs(t)(s.taskID,a)),dSe=t=>(e,r)=>{let s=e.map(a=>({objectID:a}));return yF(t)(s,Qm.DeleteObject,r)},ePt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=dl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},n),(c,f)=>gs(t)(c.taskID,f))},tPt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=dl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},n),(c,f)=>gs(t)(c.taskID,f))},rPt=t=>e=>mSe(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),nPt=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},s),iPt=t=>(e,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>ISe(t)(s||\"\",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw ASe();return f()});return f()},sPt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/%s\",t.indexName,e)},r),oPt=()=>(t,e)=>{for(let[r,s]of Object.entries(t.hits))if(s.objectID===e)return parseInt(r,10);return-1},aPt=t=>(e,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=e.map(c=>({indexName:t.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return t.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},lPt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},r),mSe=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e),cPt=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r),ySe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r),uPt=t=>(e,r)=>Kt.createWaitablePromise(ESe(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>gs(t)(s.taskID,a)),ESe=t=>(e,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?Qm.PartialUpdateObject:Qm.PartialUpdateObjectNoCreate;return yF(t)(e,n,a)},fPt=t=>(e,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,R,N,U)=>Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/operation\",I),data:{operation:N,destination:R}},U),(W,te)=>gs(t)(W.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=G9({appId:t.appId,transporter:t.transporter,indexName:h}),C=[],S=f(t.indexName,h,\"copy\",{...c,scope:[\"settings\",\"synonyms\",\"rules\"]});C.push(S);let P=(s?S.wait(c):S).then(()=>{let I=E(e,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,t.indexName,\"move\",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,R,N])=>({objectIDs:R.objectIDs,taskIDs:[I.taskID,...R.taskIDs,N.taskID]}));return Kt.createWaitablePromise(P,(I,R)=>Promise.all(C.map(N=>N.wait(R))))},APt=t=>(e,r)=>W9(t)(e,{...r,clearExistingRules:!0}),pPt=t=>(e,r)=>Y9(t)(e,{...r,clearExistingSynonyms:!0}),hPt=t=>(e,r)=>Kt.createWaitablePromise(G9(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>gs(t)(s.taskID,a)),G9=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?Qm.AddObject:Qm.UpdateObject;if(n===Qm.UpdateObject){for(let c of e)if(c.objectID===void 0)return Kt.createWaitablePromise(Promise.reject(fSe()))}return yF(t)(e,n,a)},gPt=t=>(e,r)=>W9(t)([e],r),W9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=dl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/rules/batch\",t.indexName),data:e},c),(f,p)=>gs(t)(f.taskID,p))},dPt=t=>(e,r)=>Y9(t)([e],r),Y9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=dl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},f),(p,h)=>gs(t)(p.taskID,h))},ISe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r),CSe=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},s),wSe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r),BSe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r),mPt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=dl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Kt.encode(\"1/indexes/%s/settings\",t.indexName),data:e},n),(c,f)=>gs(t)(c.taskID,f))},gs=t=>(e,r)=>Kt.createRetryablePromise(s=>ySe(t)(e,r).then(a=>a.status!==\"published\"?s():void 0)),yPt={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",Inference:\"inference\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},Qm={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},EF={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},EPt={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},IPt={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=yPt;Ft.BatchActionEnum=Qm;Ft.ScopeEnum=EF;Ft.StrategyEnum=EPt;Ft.SynonymEnum=IPt;Ft.addApiKey=fbt;Ft.assignUserID=Abt;Ft.assignUserIDs=pbt;Ft.batch=gSe;Ft.browseObjects=Wbt;Ft.browseRules=Ybt;Ft.browseSynonyms=Vbt;Ft.chunkedBatch=yF;Ft.clearDictionaryEntries=hbt;Ft.clearObjects=Kbt;Ft.clearRules=Jbt;Ft.clearSynonyms=zbt;Ft.copyIndex=mF;Ft.copyRules=gbt;Ft.copySettings=dbt;Ft.copySynonyms=mbt;Ft.createBrowsablePromise=dF;Ft.createMissingObjectIDError=fSe;Ft.createObjectNotFoundError=ASe;Ft.createSearchClient=ubt;Ft.createValidUntilNotFoundError=pSe;Ft.customRequest=ybt;Ft.deleteApiKey=Ebt;Ft.deleteBy=Zbt;Ft.deleteDictionaryEntries=Ibt;Ft.deleteIndex=Xbt;Ft.deleteObject=$bt;Ft.deleteObjects=dSe;Ft.deleteRule=ePt;Ft.deleteSynonym=tPt;Ft.exists=rPt;Ft.findAnswers=nPt;Ft.findObject=iPt;Ft.generateSecuredApiKey=Cbt;Ft.getApiKey=VS;Ft.getAppTask=hSe;Ft.getDictionarySettings=wbt;Ft.getLogs=Bbt;Ft.getObject=sPt;Ft.getObjectPosition=oPt;Ft.getObjects=aPt;Ft.getRule=lPt;Ft.getSecuredApiKeyRemainingValidity=vbt;Ft.getSettings=mSe;Ft.getSynonym=cPt;Ft.getTask=ySe;Ft.getTopUserIDs=Sbt;Ft.getUserID=Dbt;Ft.hasPendingMappings=bbt;Ft.initIndex=KS;Ft.listApiKeys=Pbt;Ft.listClusters=xbt;Ft.listIndices=kbt;Ft.listUserIDs=Qbt;Ft.moveIndex=Tbt;Ft.multipleBatch=Rbt;Ft.multipleGetObjects=Fbt;Ft.multipleQueries=Nbt;Ft.multipleSearchForFacetValues=Obt;Ft.partialUpdateObject=uPt;Ft.partialUpdateObjects=ESe;Ft.removeUserID=Lbt;Ft.replaceAllObjects=fPt;Ft.replaceAllRules=APt;Ft.replaceAllSynonyms=pPt;Ft.replaceDictionaryEntries=Mbt;Ft.restoreApiKey=_bt;Ft.saveDictionaryEntries=Ubt;Ft.saveObject=hPt;Ft.saveObjects=G9;Ft.saveRule=gPt;Ft.saveRules=W9;Ft.saveSynonym=dPt;Ft.saveSynonyms=Y9;Ft.search=ISe;Ft.searchDictionaryEntries=Hbt;Ft.searchForFacetValues=CSe;Ft.searchRules=wSe;Ft.searchSynonyms=BSe;Ft.searchUserIDs=jbt;Ft.setDictionarySettings=qbt;Ft.setSettings=mPt;Ft.updateApiKey=Gbt;Ft.waitAppTask=cw;Ft.waitTask=gs});var DSe=L((yhr,SSe)=>{SSe.exports=vSe()});var bSe=L(IF=>{\"use strict\";Object.defineProperty(IF,\"__esModule\",{value:!0});function CPt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var wPt={Debug:1,Info:2,Error:3};IF.LogLevelEnum=wPt;IF.createNullLogger=CPt});var xSe=L((Ihr,PSe)=>{PSe.exports=bSe()});var RSe=L(V9=>{\"use strict\";Object.defineProperty(V9,\"__esModule\",{value:!0});var kSe=ye(\"http\"),QSe=ye(\"https\"),BPt=ye(\"url\"),TSe={keepAlive:!0},vPt=new kSe.Agent(TSe),SPt=new QSe.Agent(TSe);function DPt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:s={}}={}){let a=e||t||vPt,n=r||t||SPt;return{send(c){return new Promise(f=>{let p=BPt.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},C=(p.protocol===\"https:\"?QSe:kSe).request(E,R=>{let N=[];R.on(\"data\",U=>{N=N.concat(U)}),R.on(\"end\",()=>{clearTimeout(P),clearTimeout(I),f({status:R.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),S=(R,N)=>setTimeout(()=>{C.abort(),f({status:0,content:N,isTimedOut:!0})},R*1e3),P=S(c.connectTimeout,\"Connection timeout\"),I;C.on(\"error\",R=>{clearTimeout(P),clearTimeout(I),f({status:0,content:R.message,isTimedOut:!1})}),C.once(\"response\",()=>{clearTimeout(P),I=S(c.responseTimeout,\"Socket timeout\")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}V9.createNodeHttpRequester=DPt});var NSe=L((whr,FSe)=>{FSe.exports=RSe()});var _Se=L((Bhr,MSe)=>{\"use strict\";var OSe=Rve(),bPt=Ove(),uw=oSe(),J9=HS(),K9=uSe(),jt=DSe(),PPt=xSe(),xPt=NSe(),kPt=GS();function LSe(t,e,r){let s={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:xPt.createNodeHttpRequester(),logger:PPt.createNullLogger(),responsesCache:OSe.createNullCache(),requestsCache:OSe.createNullCache(),hostsCache:bPt.createInMemoryCache(),userAgent:kPt.createUserAgent(J9.version).add({segment:\"Node.js\",version:process.versions.node})},a={...s,...r},n=()=>c=>K9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:K9.getPersonalizationStrategy,setPersonalizationStrategy:K9.setPersonalizationStrategy}});return jt.createSearchClient({...a,methods:{search:jt.multipleQueries,searchForFacetValues:jt.multipleSearchForFacetValues,multipleBatch:jt.multipleBatch,multipleGetObjects:jt.multipleGetObjects,multipleQueries:jt.multipleQueries,copyIndex:jt.copyIndex,copySettings:jt.copySettings,copyRules:jt.copyRules,copySynonyms:jt.copySynonyms,moveIndex:jt.moveIndex,listIndices:jt.listIndices,getLogs:jt.getLogs,listClusters:jt.listClusters,multipleSearchForFacetValues:jt.multipleSearchForFacetValues,getApiKey:jt.getApiKey,addApiKey:jt.addApiKey,listApiKeys:jt.listApiKeys,updateApiKey:jt.updateApiKey,deleteApiKey:jt.deleteApiKey,restoreApiKey:jt.restoreApiKey,assignUserID:jt.assignUserID,assignUserIDs:jt.assignUserIDs,getUserID:jt.getUserID,searchUserIDs:jt.searchUserIDs,listUserIDs:jt.listUserIDs,getTopUserIDs:jt.getTopUserIDs,removeUserID:jt.removeUserID,hasPendingMappings:jt.hasPendingMappings,generateSecuredApiKey:jt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:jt.getSecuredApiKeyRemainingValidity,destroy:J9.destroy,clearDictionaryEntries:jt.clearDictionaryEntries,deleteDictionaryEntries:jt.deleteDictionaryEntries,getDictionarySettings:jt.getDictionarySettings,getAppTask:jt.getAppTask,replaceDictionaryEntries:jt.replaceDictionaryEntries,saveDictionaryEntries:jt.saveDictionaryEntries,searchDictionaryEntries:jt.searchDictionaryEntries,setDictionarySettings:jt.setDictionarySettings,waitAppTask:jt.waitAppTask,customRequest:jt.customRequest,initIndex:c=>f=>jt.initIndex(c)(f,{methods:{batch:jt.batch,delete:jt.deleteIndex,findAnswers:jt.findAnswers,getObject:jt.getObject,getObjects:jt.getObjects,saveObject:jt.saveObject,saveObjects:jt.saveObjects,search:jt.search,searchForFacetValues:jt.searchForFacetValues,waitTask:jt.waitTask,setSettings:jt.setSettings,getSettings:jt.getSettings,partialUpdateObject:jt.partialUpdateObject,partialUpdateObjects:jt.partialUpdateObjects,deleteObject:jt.deleteObject,deleteObjects:jt.deleteObjects,deleteBy:jt.deleteBy,clearObjects:jt.clearObjects,browseObjects:jt.browseObjects,getObjectPosition:jt.getObjectPosition,findObject:jt.findObject,exists:jt.exists,saveSynonym:jt.saveSynonym,saveSynonyms:jt.saveSynonyms,getSynonym:jt.getSynonym,searchSynonyms:jt.searchSynonyms,browseSynonyms:jt.browseSynonyms,deleteSynonym:jt.deleteSynonym,clearSynonyms:jt.clearSynonyms,replaceAllObjects:jt.replaceAllObjects,replaceAllSynonyms:jt.replaceAllSynonyms,searchRules:jt.searchRules,getRule:jt.getRule,deleteRule:jt.deleteRule,saveRule:jt.saveRule,saveRules:jt.saveRules,replaceAllRules:jt.replaceAllRules,browseRules:jt.browseRules,clearRules:jt.clearRules}}),initAnalytics:()=>c=>uw.createAnalyticsClient({...s,...c,methods:{addABTest:uw.addABTest,getABTest:uw.getABTest,getABTests:uw.getABTests,stopABTest:uw.stopABTest,deleteABTest:uw.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(c))}})}LSe.version=J9.version;MSe.exports=LSe});var Z9=L((vhr,z9)=>{var USe=_Se();z9.exports=USe;z9.exports.default=USe});var eW=L((Dhr,qSe)=>{\"use strict\";var jSe=Object.getOwnPropertySymbols,TPt=Object.prototype.hasOwnProperty,RPt=Object.prototype.propertyIsEnumerable;function FPt(t){if(t==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function NPt(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",Object.getOwnPropertyNames(t)[0]===\"5\")return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(s.join(\"\")!==\"0123456789\")return!1;var a={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}qSe.exports=NPt()?Object.assign:function(t,e){for(var r,s=FPt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var c in r)TPt.call(r,c)&&(s[c]=r[c]);if(jSe){a=jSe(r);for(var f=0;f<a.length;f++)RPt.call(r,a[f])&&(s[a[f]]=r[a[f]])}}return s}});var sDe=L(Dn=>{\"use strict\";var rW=eW(),fw=60103,YSe=60106;Dn.Fragment=60107;Dn.StrictMode=60108;Dn.Profiler=60114;var VSe=60109,KSe=60110,JSe=60112;Dn.Suspense=60113;var zSe=60115,ZSe=60116;typeof Symbol==\"function\"&&Symbol.for&&(Wc=Symbol.for,fw=Wc(\"react.element\"),YSe=Wc(\"react.portal\"),Dn.Fragment=Wc(\"react.fragment\"),Dn.StrictMode=Wc(\"react.strict_mode\"),Dn.Profiler=Wc(\"react.profiler\"),VSe=Wc(\"react.provider\"),KSe=Wc(\"react.context\"),JSe=Wc(\"react.forward_ref\"),Dn.Suspense=Wc(\"react.suspense\"),zSe=Wc(\"react.memo\"),ZSe=Wc(\"react.lazy\"));var Wc,GSe=typeof Symbol==\"function\"&&Symbol.iterator;function OPt(t){return t===null||typeof t!=\"object\"?null:(t=GSe&&t[GSe]||t[\"@@iterator\"],typeof t==\"function\"?t:null)}function JS(t){for(var e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+t,r=1;r<arguments.length;r++)e+=\"&args[]=\"+encodeURIComponent(arguments[r]);return\"Minified React error #\"+t+\"; visit \"+e+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var XSe={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},$Se={};function Aw(t,e,r){this.props=t,this.context=e,this.refs=$Se,this.updater=r||XSe}Aw.prototype.isReactComponent={};Aw.prototype.setState=function(t,e){if(typeof t!=\"object\"&&typeof t!=\"function\"&&t!=null)throw Error(JS(85));this.updater.enqueueSetState(this,t,e,\"setState\")};Aw.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")};function eDe(){}eDe.prototype=Aw.prototype;function nW(t,e,r){this.props=t,this.context=e,this.refs=$Se,this.updater=r||XSe}var iW=nW.prototype=new eDe;iW.constructor=nW;rW(iW,Aw.prototype);iW.isPureReactComponent=!0;var sW={current:null},tDe=Object.prototype.hasOwnProperty,rDe={key:!0,ref:!0,__self:!0,__source:!0};function nDe(t,e,r){var s,a={},n=null,c=null;if(e!=null)for(s in e.ref!==void 0&&(c=e.ref),e.key!==void 0&&(n=\"\"+e.key),e)tDe.call(e,s)&&!rDe.hasOwnProperty(s)&&(a[s]=e[s]);var f=arguments.length-2;if(f===1)a.children=r;else if(1<f){for(var p=Array(f),h=0;h<f;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(s in f=t.defaultProps,f)a[s]===void 0&&(a[s]=f[s]);return{$$typeof:fw,type:t,key:n,ref:c,props:a,_owner:sW.current}}function LPt(t,e){return{$$typeof:fw,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function oW(t){return typeof t==\"object\"&&t!==null&&t.$$typeof===fw}function MPt(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+t.replace(/[=:]/g,function(r){return e[r]})}var WSe=/\\/+/g;function tW(t,e){return typeof t==\"object\"&&t!==null&&t.key!=null?MPt(\"\"+t.key):e.toString(36)}function wF(t,e,r,s,a){var n=typeof t;(n===\"undefined\"||n===\"boolean\")&&(t=null);var c=!1;if(t===null)c=!0;else switch(n){case\"string\":case\"number\":c=!0;break;case\"object\":switch(t.$$typeof){case fw:case YSe:c=!0}}if(c)return c=t,a=a(c),t=s===\"\"?\".\"+tW(c,0):s,Array.isArray(a)?(r=\"\",t!=null&&(r=t.replace(WSe,\"$&/\")+\"/\"),wF(a,e,r,\"\",function(h){return h})):a!=null&&(oW(a)&&(a=LPt(a,r+(!a.key||c&&c.key===a.key?\"\":(\"\"+a.key).replace(WSe,\"$&/\")+\"/\")+t)),e.push(a)),1;if(c=0,s=s===\"\"?\".\":s+\":\",Array.isArray(t))for(var f=0;f<t.length;f++){n=t[f];var p=s+tW(n,f);c+=wF(n,e,r,p,a)}else if(p=OPt(t),typeof p==\"function\")for(t=p.call(t),f=0;!(n=t.next()).done;)n=n.value,p=s+tW(n,f++),c+=wF(n,e,r,p,a);else if(n===\"object\")throw e=\"\"+t,Error(JS(31,e===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":e));return c}function CF(t,e,r){if(t==null)return t;var s=[],a=0;return wF(t,s,\"\",\"\",function(n){return e.call(r,n,a++)}),s}function _Pt(t){if(t._status===-1){var e=t._result;e=e(),t._status=0,t._result=e,e.then(function(r){t._status===0&&(r=r.default,t._status=1,t._result=r)},function(r){t._status===0&&(t._status=2,t._result=r)})}if(t._status===1)return t._result;throw t._result}var iDe={current:null};function th(){var t=iDe.current;if(t===null)throw Error(JS(321));return t}var UPt={ReactCurrentDispatcher:iDe,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:sW,IsSomeRendererActing:{current:!1},assign:rW};Dn.Children={map:CF,forEach:function(t,e,r){CF(t,function(){e.apply(this,arguments)},r)},count:function(t){var e=0;return CF(t,function(){e++}),e},toArray:function(t){return CF(t,function(e){return e})||[]},only:function(t){if(!oW(t))throw Error(JS(143));return t}};Dn.Component=Aw;Dn.PureComponent=nW;Dn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=UPt;Dn.cloneElement=function(t,e,r){if(t==null)throw Error(JS(267,t));var s=rW({},t.props),a=t.key,n=t.ref,c=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,c=sW.current),e.key!==void 0&&(a=\"\"+e.key),t.type&&t.type.defaultProps)var f=t.type.defaultProps;for(p in e)tDe.call(e,p)&&!rDe.hasOwnProperty(p)&&(s[p]=e[p]===void 0&&f!==void 0?f[p]:e[p])}var p=arguments.length-2;if(p===1)s.children=r;else if(1<p){f=Array(p);for(var h=0;h<p;h++)f[h]=arguments[h+2];s.children=f}return{$$typeof:fw,type:t.type,key:a,ref:n,props:s,_owner:c}};Dn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:KSe,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:VSe,_context:t},t.Consumer=t};Dn.createElement=nDe;Dn.createFactory=function(t){var e=nDe.bind(null,t);return e.type=t,e};Dn.createRef=function(){return{current:null}};Dn.forwardRef=function(t){return{$$typeof:JSe,render:t}};Dn.isValidElement=oW;Dn.lazy=function(t){return{$$typeof:ZSe,_payload:{_status:-1,_result:t},_init:_Pt}};Dn.memo=function(t,e){return{$$typeof:zSe,type:t,compare:e===void 0?null:e}};Dn.useCallback=function(t,e){return th().useCallback(t,e)};Dn.useContext=function(t,e){return th().useContext(t,e)};Dn.useDebugValue=function(){};Dn.useEffect=function(t,e){return th().useEffect(t,e)};Dn.useImperativeHandle=function(t,e,r){return th().useImperativeHandle(t,e,r)};Dn.useLayoutEffect=function(t,e){return th().useLayoutEffect(t,e)};Dn.useMemo=function(t,e){return th().useMemo(t,e)};Dn.useReducer=function(t,e,r){return th().useReducer(t,e,r)};Dn.useRef=function(t){return th().useRef(t)};Dn.useState=function(t){return th().useState(t)};Dn.version=\"17.0.2\"});var hn=L((Phr,oDe)=>{\"use strict\";oDe.exports=sDe()});var lW=L((xhr,aW)=>{\"use strict\";var Cn=aW.exports;aW.exports.default=Cn;var Zn=\"\\x1B[\",zS=\"\\x1B]\",pw=\"\\x07\",BF=\";\",aDe=process.env.TERM_PROGRAM===\"Apple_Terminal\";Cn.cursorTo=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof e!=\"number\"?Zn+(t+1)+\"G\":Zn+(e+1)+\";\"+(t+1)+\"H\"};Cn.cursorMove=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return t<0?r+=Zn+-t+\"D\":t>0&&(r+=Zn+t+\"C\"),e<0?r+=Zn+-e+\"A\":e>0&&(r+=Zn+e+\"B\"),r};Cn.cursorUp=(t=1)=>Zn+t+\"A\";Cn.cursorDown=(t=1)=>Zn+t+\"B\";Cn.cursorForward=(t=1)=>Zn+t+\"C\";Cn.cursorBackward=(t=1)=>Zn+t+\"D\";Cn.cursorLeft=Zn+\"G\";Cn.cursorSavePosition=aDe?\"\\x1B7\":Zn+\"s\";Cn.cursorRestorePosition=aDe?\"\\x1B8\":Zn+\"u\";Cn.cursorGetPosition=Zn+\"6n\";Cn.cursorNextLine=Zn+\"E\";Cn.cursorPrevLine=Zn+\"F\";Cn.cursorHide=Zn+\"?25l\";Cn.cursorShow=Zn+\"?25h\";Cn.eraseLines=t=>{let e=\"\";for(let r=0;r<t;r++)e+=Cn.eraseLine+(r<t-1?Cn.cursorUp():\"\");return t&&(e+=Cn.cursorLeft),e};Cn.eraseEndLine=Zn+\"K\";Cn.eraseStartLine=Zn+\"1K\";Cn.eraseLine=Zn+\"2K\";Cn.eraseDown=Zn+\"J\";Cn.eraseUp=Zn+\"1J\";Cn.eraseScreen=Zn+\"2J\";Cn.scrollUp=Zn+\"S\";Cn.scrollDown=Zn+\"T\";Cn.clearScreen=\"\\x1Bc\";Cn.clearTerminal=process.platform===\"win32\"?`${Cn.eraseScreen}${Zn}0f`:`${Cn.eraseScreen}${Zn}3J${Zn}H`;Cn.beep=pw;Cn.link=(t,e)=>[zS,\"8\",BF,BF,e,pw,t,zS,\"8\",BF,BF,pw].join(\"\");Cn.image=(t,e={})=>{let r=`${zS}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=\";preserveAspectRatio=0\"),r+\":\"+t.toString(\"base64\")+pw};Cn.iTerm={setCwd:(t=process.cwd())=>`${zS}50;CurrentDir=${t}${pw}`,annotation:(t,e={})=>{let r=`${zS}1337;`,s=typeof e.x<\"u\",a=typeof e.y<\"u\";if((s||a)&&!(s&&a&&typeof e.length<\"u\"))throw new Error(\"`x`, `y` and `length` must be defined when `x` or `y` is defined\");return t=t.replace(/\\|/g,\"\"),r+=e.isHidden?\"AddHiddenAnnotation=\":\"AddAnnotation=\",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join(\"|\"):r+=t,r+pw}}});var cDe=L((khr,cW)=>{\"use strict\";var lDe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};cW.exports=lDe;cW.exports.default=lDe});var fDe=L((Qhr,SF)=>{\"use strict\";var HPt=cDe(),vF=new WeakMap,uDe=(t,e={})=>{if(typeof t!=\"function\")throw new TypeError(\"Expected a function\");let r,s=0,a=t.displayName||t.name||\"<anonymous>\",n=function(...c){if(vF.set(n,++s),s===1)r=t.apply(this,c),t=null;else if(e.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return HPt(n,t),vF.set(n,s),n};SF.exports=uDe;SF.exports.default=uDe;SF.exports.callCount=t=>{if(!vF.has(t))throw new Error(`The given function \\`${t.name}\\` is not wrapped by the \\`onetime\\` package`);return vF.get(t)}});var ADe=L((Thr,DF)=>{DF.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&DF.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&DF.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var AW=L((Rhr,dw)=>{var Qi=global.process,Tm=function(t){return t&&typeof t==\"object\"&&typeof t.removeListener==\"function\"&&typeof t.emit==\"function\"&&typeof t.reallyExit==\"function\"&&typeof t.listeners==\"function\"&&typeof t.kill==\"function\"&&typeof t.pid==\"number\"&&typeof t.on==\"function\"};Tm(Qi)?(pDe=ye(\"assert\"),hw=ADe(),hDe=/^win/i.test(Qi.platform),ZS=ye(\"events\"),typeof ZS!=\"function\"&&(ZS=ZS.EventEmitter),Qi.__signal_exit_emitter__?Js=Qi.__signal_exit_emitter__:(Js=Qi.__signal_exit_emitter__=new ZS,Js.count=0,Js.emitted={}),Js.infinite||(Js.setMaxListeners(1/0),Js.infinite=!0),dw.exports=function(t,e){if(!Tm(global.process))return function(){};pDe.equal(typeof t,\"function\",\"a callback must be provided for exit handler\"),gw===!1&&uW();var r=\"exit\";e&&e.alwaysLast&&(r=\"afterexit\");var s=function(){Js.removeListener(r,t),Js.listeners(\"exit\").length===0&&Js.listeners(\"afterexit\").length===0&&bF()};return Js.on(r,t),s},bF=function(){!gw||!Tm(global.process)||(gw=!1,hw.forEach(function(e){try{Qi.removeListener(e,PF[e])}catch{}}),Qi.emit=xF,Qi.reallyExit=fW,Js.count-=1)},dw.exports.unload=bF,Rm=function(e,r,s){Js.emitted[e]||(Js.emitted[e]=!0,Js.emit(e,r,s))},PF={},hw.forEach(function(t){PF[t]=function(){if(Tm(global.process)){var r=Qi.listeners(t);r.length===Js.count&&(bF(),Rm(\"exit\",null,t),Rm(\"afterexit\",null,t),hDe&&t===\"SIGHUP\"&&(t=\"SIGINT\"),Qi.kill(Qi.pid,t))}}}),dw.exports.signals=function(){return hw},gw=!1,uW=function(){gw||!Tm(global.process)||(gw=!0,Js.count+=1,hw=hw.filter(function(e){try{return Qi.on(e,PF[e]),!0}catch{return!1}}),Qi.emit=dDe,Qi.reallyExit=gDe)},dw.exports.load=uW,fW=Qi.reallyExit,gDe=function(e){Tm(global.process)&&(Qi.exitCode=e||0,Rm(\"exit\",Qi.exitCode,null),Rm(\"afterexit\",Qi.exitCode,null),fW.call(Qi,Qi.exitCode))},xF=Qi.emit,dDe=function(e,r){if(e===\"exit\"&&Tm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=xF.apply(this,arguments);return Rm(\"exit\",Qi.exitCode,null),Rm(\"afterexit\",Qi.exitCode,null),s}else return xF.apply(this,arguments)}):dw.exports=function(){return function(){}};var pDe,hw,hDe,ZS,Js,bF,Rm,PF,gw,uW,fW,gDe,xF,dDe});var yDe=L((Fhr,mDe)=>{\"use strict\";var jPt=fDe(),qPt=AW();mDe.exports=jPt(()=>{qPt(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var pW=L(mw=>{\"use strict\";var GPt=yDe(),kF=!1;mw.show=(t=process.stderr)=>{t.isTTY&&(kF=!1,t.write(\"\\x1B[?25h\"))};mw.hide=(t=process.stderr)=>{t.isTTY&&(GPt(),kF=!0,t.write(\"\\x1B[?25l\"))};mw.toggle=(t,e)=>{t!==void 0&&(kF=t),kF?mw.show(e):mw.hide(e)}});var wDe=L(XS=>{\"use strict\";var CDe=XS&&XS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(XS,\"__esModule\",{value:!0});var EDe=CDe(lW()),IDe=CDe(pW()),WPt=(t,{showCursor:e=!1}={})=>{let r=0,s=\"\",a=!1,n=c=>{!e&&!a&&(IDe.default.hide(),a=!0);let f=c+`\n`;f!==s&&(s=f,t.write(EDe.default.eraseLines(r)+f),r=f.split(`\n`).length)};return n.clear=()=>{t.write(EDe.default.eraseLines(r)),s=\"\",r=0},n.done=()=>{s=\"\",r=0,e||(IDe.default.show(),a=!1)},n};XS.default={create:WPt}});var BDe=L((Lhr,YPt)=>{YPt.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY_BUILD_BASE\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}}]});var DDe=L(rc=>{\"use strict\";var SDe=BDe(),AA=process.env;Object.defineProperty(rc,\"_vendors\",{value:SDe.map(function(t){return t.constant})});rc.name=null;rc.isPR=null;SDe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(s){return vDe(s)});if(rc[t.constant]=r,r)switch(rc.name=t.name,typeof t.pr){case\"string\":rc.isPR=!!AA[t.pr];break;case\"object\":\"env\"in t.pr?rc.isPR=t.pr.env in AA&&AA[t.pr.env]!==t.pr.ne:\"any\"in t.pr?rc.isPR=t.pr.any.some(function(s){return!!AA[s]}):rc.isPR=vDe(t.pr);break;default:rc.isPR=null}});rc.isCI=!!(AA.CI||AA.CONTINUOUS_INTEGRATION||AA.BUILD_NUMBER||AA.RUN_ID||rc.name);function vDe(t){return typeof t==\"string\"?!!AA[t]:Object.keys(t).every(function(e){return AA[e]===t[e]})}});var PDe=L((_hr,bDe)=>{\"use strict\";bDe.exports=DDe().isCI});var kDe=L((Uhr,xDe)=>{\"use strict\";var VPt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};xDe.exports=(t,{include:e,exclude:r}={})=>{let s=a=>{let n=c=>typeof c==\"string\"?a===c:c.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of VPt(t.constructor.prototype)){if(n===\"constructor\"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value==\"function\"&&(t[n]=t[n].bind(t))}return t}});var ODe=L(Vn=>{\"use strict\";var Ew,tD,FF,IW;typeof performance==\"object\"&&typeof performance.now==\"function\"?(QDe=performance,Vn.unstable_now=function(){return QDe.now()}):(hW=Date,TDe=hW.now(),Vn.unstable_now=function(){return hW.now()-TDe});var QDe,hW,TDe;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(yw=null,gW=null,dW=function(){if(yw!==null)try{var t=Vn.unstable_now();yw(!0,t),yw=null}catch(e){throw setTimeout(dW,0),e}},Ew=function(t){yw!==null?setTimeout(Ew,0,t):(yw=t,setTimeout(dW,0))},tD=function(t,e){gW=setTimeout(t,e)},FF=function(){clearTimeout(gW)},Vn.unstable_shouldYield=function(){return!1},IW=Vn.unstable_forceFrameRate=function(){}):(RDe=window.setTimeout,FDe=window.clearTimeout,typeof console<\"u\"&&(NDe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"),typeof NDe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")),$S=!1,eD=null,QF=-1,mW=5,yW=0,Vn.unstable_shouldYield=function(){return Vn.unstable_now()>=yW},IW=function(){},Vn.unstable_forceFrameRate=function(t){0>t||125<t?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):mW=0<t?Math.floor(1e3/t):5},EW=new MessageChannel,TF=EW.port2,EW.port1.onmessage=function(){if(eD!==null){var t=Vn.unstable_now();yW=t+mW;try{eD(!0,t)?TF.postMessage(null):($S=!1,eD=null)}catch(e){throw TF.postMessage(null),e}}else $S=!1},Ew=function(t){eD=t,$S||($S=!0,TF.postMessage(null))},tD=function(t,e){QF=RDe(function(){t(Vn.unstable_now())},e)},FF=function(){FDe(QF),QF=-1});var yw,gW,dW,RDe,FDe,NDe,$S,eD,QF,mW,yW,EW,TF;function CW(t,e){var r=t.length;t.push(e);e:for(;;){var s=r-1>>>1,a=t[s];if(a!==void 0&&0<RF(a,e))t[s]=e,t[r]=a,r=s;else break e}}function tf(t){return t=t[0],t===void 0?null:t}function NF(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var s=0,a=t.length;s<a;){var n=2*(s+1)-1,c=t[n],f=n+1,p=t[f];if(c!==void 0&&0>RF(c,r))p!==void 0&&0>RF(p,c)?(t[s]=p,t[f]=r,s=f):(t[s]=c,t[n]=r,s=n);else if(p!==void 0&&0>RF(p,r))t[s]=p,t[f]=r,s=f;else break e}}return e}return null}function RF(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var pA=[],$0=[],KPt=1,Yc=null,ea=3,OF=!1,Fm=!1,rD=!1;function wW(t){for(var e=tf($0);e!==null;){if(e.callback===null)NF($0);else if(e.startTime<=t)NF($0),e.sortIndex=e.expirationTime,CW(pA,e);else break;e=tf($0)}}function BW(t){if(rD=!1,wW(t),!Fm)if(tf(pA)!==null)Fm=!0,Ew(vW);else{var e=tf($0);e!==null&&tD(BW,e.startTime-t)}}function vW(t,e){Fm=!1,rD&&(rD=!1,FF()),OF=!0;var r=ea;try{for(wW(e),Yc=tf(pA);Yc!==null&&(!(Yc.expirationTime>e)||t&&!Vn.unstable_shouldYield());){var s=Yc.callback;if(typeof s==\"function\"){Yc.callback=null,ea=Yc.priorityLevel;var a=s(Yc.expirationTime<=e);e=Vn.unstable_now(),typeof a==\"function\"?Yc.callback=a:Yc===tf(pA)&&NF(pA),wW(e)}else NF(pA);Yc=tf(pA)}if(Yc!==null)var n=!0;else{var c=tf($0);c!==null&&tD(BW,c.startTime-e),n=!1}return n}finally{Yc=null,ea=r,OF=!1}}var JPt=IW;Vn.unstable_IdlePriority=5;Vn.unstable_ImmediatePriority=1;Vn.unstable_LowPriority=4;Vn.unstable_NormalPriority=3;Vn.unstable_Profiling=null;Vn.unstable_UserBlockingPriority=2;Vn.unstable_cancelCallback=function(t){t.callback=null};Vn.unstable_continueExecution=function(){Fm||OF||(Fm=!0,Ew(vW))};Vn.unstable_getCurrentPriorityLevel=function(){return ea};Vn.unstable_getFirstCallbackNode=function(){return tf(pA)};Vn.unstable_next=function(t){switch(ea){case 1:case 2:case 3:var e=3;break;default:e=ea}var r=ea;ea=e;try{return t()}finally{ea=r}};Vn.unstable_pauseExecution=function(){};Vn.unstable_requestPaint=JPt;Vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=ea;ea=t;try{return e()}finally{ea=r}};Vn.unstable_scheduleCallback=function(t,e,r){var s=Vn.unstable_now();switch(typeof r==\"object\"&&r!==null?(r=r.delay,r=typeof r==\"number\"&&0<r?s+r:s):r=s,t){case 1:var a=-1;break;case 2:a=250;break;case 5:a=1073741823;break;case 4:a=1e4;break;default:a=5e3}return a=r+a,t={id:KPt++,callback:e,priorityLevel:t,startTime:r,expirationTime:a,sortIndex:-1},r>s?(t.sortIndex=r,CW($0,t),tf(pA)===null&&t===tf($0)&&(rD?FF():rD=!0,tD(BW,r-s))):(t.sortIndex=a,CW(pA,t),Fm||OF||(Fm=!0,Ew(vW))),t};Vn.unstable_wrapCallback=function(t){var e=ea;return function(){var r=ea;ea=e;try{return t.apply(this,arguments)}finally{ea=r}}}});var SW=L((jhr,LDe)=>{\"use strict\";LDe.exports=ODe()});var MDe=L((qhr,nD)=>{nD.exports=function(e){var r={},s=eW(),a=hn(),n=SW();function c(v){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+v,Q=1;Q<arguments.length;Q++)D+=\"&args[]=\"+encodeURIComponent(arguments[Q]);return\"Minified React error #\"+v+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var f=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,p=60103,h=60106,E=60107,C=60108,S=60114,P=60109,I=60110,R=60112,N=60113,U=60120,W=60115,te=60116,ie=60121,Ae=60129,ce=60130,me=60131;if(typeof Symbol==\"function\"&&Symbol.for){var pe=Symbol.for;p=pe(\"react.element\"),h=pe(\"react.portal\"),E=pe(\"react.fragment\"),C=pe(\"react.strict_mode\"),S=pe(\"react.profiler\"),P=pe(\"react.provider\"),I=pe(\"react.context\"),R=pe(\"react.forward_ref\"),N=pe(\"react.suspense\"),U=pe(\"react.suspense_list\"),W=pe(\"react.memo\"),te=pe(\"react.lazy\"),ie=pe(\"react.block\"),pe(\"react.scope\"),Ae=pe(\"react.debug_trace_mode\"),ce=pe(\"react.offscreen\"),me=pe(\"react.legacy_hidden\")}var Be=typeof Symbol==\"function\"&&Symbol.iterator;function Ce(v){return v===null||typeof v!=\"object\"?null:(v=Be&&v[Be]||v[\"@@iterator\"],typeof v==\"function\"?v:null)}function g(v){if(v==null)return null;if(typeof v==\"function\")return v.displayName||v.name||null;if(typeof v==\"string\")return v;switch(v){case E:return\"Fragment\";case h:return\"Portal\";case S:return\"Profiler\";case C:return\"StrictMode\";case N:return\"Suspense\";case U:return\"SuspenseList\"}if(typeof v==\"object\")switch(v.$$typeof){case I:return(v.displayName||\"Context\")+\".Consumer\";case P:return(v._context.displayName||\"Context\")+\".Provider\";case R:var D=v.render;return D=D.displayName||D.name||\"\",v.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case W:return g(v.type);case ie:return g(v._render);case te:D=v._payload,v=v._init;try{return g(v(D))}catch{}}return null}function we(v){var D=v,Q=v;if(v.alternate)for(;D.return;)D=D.return;else{v=D;do D=v,D.flags&1026&&(Q=D.return),v=D.return;while(v)}return D.tag===3?Q:null}function Ee(v){if(we(v)!==v)throw Error(c(188))}function fe(v){var D=v.alternate;if(!D){if(D=we(v),D===null)throw Error(c(188));return D!==v?null:v}for(var Q=v,H=D;;){var V=Q.return;if(V===null)break;var ne=V.alternate;if(ne===null){if(H=V.return,H!==null){Q=H;continue}break}if(V.child===ne.child){for(ne=V.child;ne;){if(ne===Q)return Ee(V),v;if(ne===H)return Ee(V),D;ne=ne.sibling}throw Error(c(188))}if(Q.return!==H.return)Q=V,H=ne;else{for(var Se=!1,Ue=V.child;Ue;){if(Ue===Q){Se=!0,Q=V,H=ne;break}if(Ue===H){Se=!0,H=V,Q=ne;break}Ue=Ue.sibling}if(!Se){for(Ue=ne.child;Ue;){if(Ue===Q){Se=!0,Q=ne,H=V;break}if(Ue===H){Se=!0,H=ne,Q=V;break}Ue=Ue.sibling}if(!Se)throw Error(c(189))}}if(Q.alternate!==H)throw Error(c(190))}if(Q.tag!==3)throw Error(c(188));return Q.stateNode.current===Q?v:D}function se(v){if(v=fe(v),!v)return null;for(var D=v;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===v)break;for(;!D.sibling;){if(!D.return||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function X(v){if(v=fe(v),!v)return null;for(var D=v;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===v)break;for(;!D.sibling;){if(!D.return||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function De(v,D){for(var Q=v.alternate;D!==null;){if(D===v||D===Q)return!0;D=D.return}return!1}var Re=e.getPublicInstance,gt=e.getRootHostContext,j=e.getChildHostContext,rt=e.prepareForCommit,Fe=e.resetAfterCommit,Ne=e.createInstance,Pe=e.appendInitialChild,Ye=e.finalizeInitialChildren,ke=e.prepareUpdate,it=e.shouldSetTextContent,_e=e.createTextInstance,x=e.scheduleTimeout,w=e.cancelTimeout,b=e.noTimeout,y=e.isPrimaryRenderer,F=e.supportsMutation,z=e.supportsPersistence,Z=e.supportsHydration,$=e.getInstanceFromNode,oe=e.makeOpaqueHydratingObject,xe=e.makeClientId,Te=e.beforeActiveInstanceBlur,lt=e.afterActiveInstanceBlur,Et=e.preparePortalMount,qt=e.supportsTestSelectors,ir=e.findFiberRoot,Pt=e.getBoundingRect,gn=e.getTextContent,Pr=e.isHiddenSubtree,Ir=e.matchAccessibilityRole,Nr=e.setFocusIfFocusable,nn=e.setupIntersectionObserver,oi=e.appendChild,wo=e.appendChildToContainer,rs=e.commitTextUpdate,eo=e.commitMount,Bo=e.commitUpdate,Hi=e.insertBefore,to=e.insertInContainerBefore,vo=e.removeChild,RA=e.removeChildFromContainer,pf=e.resetTextContent,Eh=e.hideInstance,Ih=e.hideTextInstance,ro=e.unhideInstance,jn=e.unhideTextInstance,Rs=e.clearContainer,no=e.cloneInstance,lu=e.createContainerChildSet,cu=e.appendChildToContainerChildSet,uu=e.finalizeContainerChildren,FA=e.replaceContainerChildren,NA=e.cloneHiddenInstance,aa=e.cloneHiddenTextInstance,la=e.canHydrateInstance,OA=e.canHydrateTextInstance,gr=e.isSuspenseInstancePending,So=e.isSuspenseInstanceFallback,Me=e.getNextHydratableSibling,fu=e.getFirstHydratableChild,Cr=e.hydrateInstance,hf=e.hydrateTextInstance,LA=e.getNextHydratableInstanceAfterSuspenseInstance,MA=e.commitHydratedContainer,Au=e.commitHydratedSuspenseInstance,pu;function ac(v){if(pu===void 0)try{throw Error()}catch(Q){var D=Q.stack.trim().match(/\\n( *(at )?)/);pu=D&&D[1]||\"\"}return`\n`+pu+v}var ve=!1;function Nt(v,D){if(!v||ve)return\"\";ve=!0;var Q=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(D)if(D=function(){throw Error()},Object.defineProperty(D.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(D,[])}catch(At){var H=At}Reflect.construct(v,[],D)}else{try{D.call()}catch(At){H=At}v.call(D.prototype)}else{try{throw Error()}catch(At){H=At}v()}}catch(At){if(At&&H&&typeof At.stack==\"string\"){for(var V=At.stack.split(`\n`),ne=H.stack.split(`\n`),Se=V.length-1,Ue=ne.length-1;1<=Se&&0<=Ue&&V[Se]!==ne[Ue];)Ue--;for(;1<=Se&&0<=Ue;Se--,Ue--)if(V[Se]!==ne[Ue]){if(Se!==1||Ue!==1)do if(Se--,Ue--,0>Ue||V[Se]!==ne[Ue])return`\n`+V[Se].replace(\" at new \",\" at \");while(1<=Se&&0<=Ue);break}}}finally{ve=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:\"\")?ac(v):\"\"}var lc=[],Ni=-1;function io(v){return{current:v}}function Rt(v){0>Ni||(v.current=lc[Ni],lc[Ni]=null,Ni--)}function xn(v,D){Ni++,lc[Ni]=v.current,v.current=D}var ca={},ji=io(ca),Oi=io(!1),Oa=ca;function dn(v,D){var Q=v.type.contextTypes;if(!Q)return ca;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Jn(v){return v=v.childContextTypes,v!=null}function hu(){Rt(Oi),Rt(ji)}function Ch(v,D,Q){if(ji.current!==ca)throw Error(c(168));xn(ji,D),xn(Oi,Q)}function La(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!=\"function\")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||\"Unknown\",V));return s({},Q,H)}function Ma(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||ca,Oa=ji.current,xn(ji,v),xn(Oi,Oi.current),!0}function Ua(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=La(v,D,Oa),H.__reactInternalMemoizedMergedChildContext=v,Rt(Oi),Rt(ji),xn(ji,v)):Rt(Oi),xn(Oi,Q)}var Xe=null,Ha=null,gf=n.unstable_now;gf();var cc=0,wn=8;function ua(v){if(1&v)return wn=15,1;if(2&v)return wn=14,2;if(4&v)return wn=13,4;var D=24&v;return D!==0?(wn=12,D):v&32?(wn=11,32):(D=192&v,D!==0?(wn=10,D):v&256?(wn=9,256):(D=3584&v,D!==0?(wn=8,D):v&4096?(wn=7,4096):(D=4186112&v,D!==0?(wn=6,D):(D=62914560&v,D!==0?(wn=5,D):v&67108864?(wn=4,67108864):v&134217728?(wn=3,134217728):(D=805306368&v,D!==0?(wn=2,D):1073741824&v?(wn=1,1073741824):(wn=8,v))))))}function _A(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function UA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function fa(v,D){var Q=v.pendingLanes;if(Q===0)return wn=0;var H=0,V=0,ne=v.expiredLanes,Se=v.suspendedLanes,Ue=v.pingedLanes;if(ne!==0)H=ne,V=wn=15;else if(ne=Q&134217727,ne!==0){var At=ne&~Se;At!==0?(H=ua(At),V=wn):(Ue&=ne,Ue!==0&&(H=ua(Ue),V=wn))}else ne=Q&~Se,ne!==0?(H=ua(ne),V=wn):Ue!==0&&(H=ua(Ue),V=wn);if(H===0)return 0;if(H=31-ns(H),H=Q&((0>H?0:1<<H)<<1)-1,D!==0&&D!==H&&!(D&Se)){if(ua(D),V<=wn)return D;wn=V}if(D=v.entangledLanes,D!==0)for(v=v.entanglements,D&=H;0<D;)Q=31-ns(D),V=1<<Q,H|=v[Q],D&=~V;return H}function vl(v){return v=v.pendingLanes&-1073741825,v!==0?v:v&1073741824?1073741824:0}function Mt(v,D){switch(v){case 15:return 1;case 14:return 2;case 12:return v=kn(24&~D),v===0?Mt(10,D):v;case 10:return v=kn(192&~D),v===0?Mt(8,D):v;case 8:return v=kn(3584&~D),v===0&&(v=kn(4186112&~D),v===0&&(v=512)),v;case 2:return D=kn(805306368&~D),D===0&&(D=268435456),D}throw Error(c(358,v))}function kn(v){return v&-v}function Aa(v){for(var D=[],Q=0;31>Q;Q++)D.push(v);return D}function ja(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-ns(D),v[D]=Q}var ns=Math.clz32?Math.clz32:fc,uc=Math.log,gu=Math.LN2;function fc(v){return v===0?32:31-(uc(v)/gu|0)|0}var qa=n.unstable_runWithPriority,Li=n.unstable_scheduleCallback,Cs=n.unstable_cancelCallback,Sl=n.unstable_shouldYield,df=n.unstable_requestPaint,Ac=n.unstable_now,wi=n.unstable_getCurrentPriorityLevel,Qn=n.unstable_ImmediatePriority,pc=n.unstable_UserBlockingPriority,Je=n.unstable_NormalPriority,st=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},ee=df!==void 0?df:function(){},Ie=null,Oe=null,ht=!1,mt=Ac(),Dt=1e4>mt?Ac:function(){return Ac()-mt};function tr(){switch(wi()){case Qn:return 99;case pc:return 98;case Je:return 97;case st:return 96;case St:return 95;default:throw Error(c(332))}}function fn(v){switch(v){case 99:return Qn;case 98:return pc;case 97:return Je;case 96:return st;case 95:return St;default:throw Error(c(332))}}function ai(v,D){return v=fn(v),qa(v,D)}function qi(v,D,Q){return v=fn(v),Li(v,D,Q)}function Tn(){if(Oe!==null){var v=Oe;Oe=null,Cs(v)}Ga()}function Ga(){if(!ht&&Ie!==null){ht=!0;var v=0;try{var D=Ie;ai(99,function(){for(;v<D.length;v++){var Q=D[v];do Q=Q(!0);while(Q!==null)}}),Ie=null}catch(Q){throw Ie!==null&&(Ie=Ie.slice(v+1)),Li(Qn,Tn),Q}finally{ht=!1}}}var my=f.ReactCurrentBatchConfig;function t2(v,D){return v===D&&(v!==0||1/v===1/D)||v!==v&&D!==D}var Do=typeof Object.is==\"function\"?Object.is:t2,yy=Object.prototype.hasOwnProperty;function wh(v,D){if(Do(v,D))return!0;if(typeof v!=\"object\"||v===null||typeof D!=\"object\"||D===null)return!1;var Q=Object.keys(v),H=Object.keys(D);if(Q.length!==H.length)return!1;for(H=0;H<Q.length;H++)if(!yy.call(D,Q[H])||!Do(v[Q[H]],D[Q[H]]))return!1;return!0}function r2(v){switch(v.tag){case 5:return ac(v.type);case 16:return ac(\"Lazy\");case 13:return ac(\"Suspense\");case 19:return ac(\"SuspenseList\");case 0:case 2:case 15:return v=Nt(v.type,!1),v;case 11:return v=Nt(v.type.render,!1),v;case 22:return v=Nt(v.type._render,!1),v;case 1:return v=Nt(v.type,!0),v;default:return\"\"}}function bo(v,D){if(v&&v.defaultProps){D=s({},D),v=v.defaultProps;for(var Q in v)D[Q]===void 0&&(D[Q]=v[Q]);return D}return D}var Bh=io(null),vh=null,du=null,Sh=null;function Ng(){Sh=du=vh=null}function Og(v,D){v=v.type._context,y?(xn(Bh,v._currentValue),v._currentValue=D):(xn(Bh,v._currentValue2),v._currentValue2=D)}function Lg(v){var D=Bh.current;Rt(Bh),v=v.type._context,y?v._currentValue=D:v._currentValue2=D}function Ey(v,D){for(;v!==null;){var Q=v.alternate;if((v.childLanes&D)===D){if(Q===null||(Q.childLanes&D)===D)break;Q.childLanes|=D}else v.childLanes|=D,Q!==null&&(Q.childLanes|=D);v=v.return}}function mf(v,D){vh=v,Sh=du=null,v=v.dependencies,v!==null&&v.firstContext!==null&&(v.lanes&D&&(Ke=!0),v.firstContext=null)}function Po(v,D){if(Sh!==v&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(Sh=v,D=1073741823),D={context:v,observedBits:D,next:null},du===null){if(vh===null)throw Error(c(308));du=D,vh.dependencies={lanes:0,firstContext:D,responders:null}}else du=du.next=D;return y?v._currentValue:v._currentValue2}var Dl=!1;function Dh(v){v.updateQueue={baseState:v.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function Mg(v,D){v=v.updateQueue,D.updateQueue===v&&(D.updateQueue={baseState:v.baseState,firstBaseUpdate:v.firstBaseUpdate,lastBaseUpdate:v.lastBaseUpdate,shared:v.shared,effects:v.effects})}function bl(v,D){return{eventTime:v,lane:D,tag:0,payload:null,callback:null,next:null}}function Pl(v,D){if(v=v.updateQueue,v!==null){v=v.shared;var Q=v.pending;Q===null?D.next=D:(D.next=Q.next,Q.next=D),v.pending=D}}function Iy(v,D){var Q=v.updateQueue,H=v.alternate;if(H!==null&&(H=H.updateQueue,Q===H)){var V=null,ne=null;if(Q=Q.firstBaseUpdate,Q!==null){do{var Se={eventTime:Q.eventTime,lane:Q.lane,tag:Q.tag,payload:Q.payload,callback:Q.callback,next:null};ne===null?V=ne=Se:ne=ne.next=Se,Q=Q.next}while(Q!==null);ne===null?V=ne=D:ne=ne.next=D}else V=ne=D;Q={baseState:H.baseState,firstBaseUpdate:V,lastBaseUpdate:ne,shared:H.shared,effects:H.effects},v.updateQueue=Q;return}v=Q.lastBaseUpdate,v===null?Q.firstBaseUpdate=D:v.next=D,Q.lastBaseUpdate=D}function HA(v,D,Q,H){var V=v.updateQueue;Dl=!1;var ne=V.firstBaseUpdate,Se=V.lastBaseUpdate,Ue=V.shared.pending;if(Ue!==null){V.shared.pending=null;var At=Ue,Gt=At.next;At.next=null,Se===null?ne=Gt:Se.next=Gt,Se=At;var vr=v.alternate;if(vr!==null){vr=vr.updateQueue;var Lr=vr.lastBaseUpdate;Lr!==Se&&(Lr===null?vr.firstBaseUpdate=Gt:Lr.next=Gt,vr.lastBaseUpdate=At)}}if(ne!==null){Lr=V.baseState,Se=0,vr=Gt=At=null;do{Ue=ne.lane;var Xt=ne.eventTime;if((H&Ue)===Ue){vr!==null&&(vr=vr.next={eventTime:Xt,lane:0,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null});e:{var zn=v,mi=ne;switch(Ue=D,Xt=Q,mi.tag){case 1:if(zn=mi.payload,typeof zn==\"function\"){Lr=zn.call(Xt,Lr,Ue);break e}Lr=zn;break e;case 3:zn.flags=zn.flags&-4097|64;case 0:if(zn=mi.payload,Ue=typeof zn==\"function\"?zn.call(Xt,Lr,Ue):zn,Ue==null)break e;Lr=s({},Lr,Ue);break e;case 2:Dl=!0}}ne.callback!==null&&(v.flags|=32,Ue=V.effects,Ue===null?V.effects=[ne]:Ue.push(ne))}else Xt={eventTime:Xt,lane:Ue,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},vr===null?(Gt=vr=Xt,At=Lr):vr=vr.next=Xt,Se|=Ue;if(ne=ne.next,ne===null){if(Ue=V.shared.pending,Ue===null)break;ne=Ue.next,Ue.next=null,V.lastBaseUpdate=Ue,V.shared.pending=null}}while(!0);vr===null&&(At=Lr),V.baseState=At,V.firstBaseUpdate=Gt,V.lastBaseUpdate=vr,$g|=Se,v.lanes=Se,v.memoizedState=Lr}}function Cy(v,D,Q){if(v=D.effects,D.effects=null,v!==null)for(D=0;D<v.length;D++){var H=v[D],V=H.callback;if(V!==null){if(H.callback=null,H=Q,typeof V!=\"function\")throw Error(c(191,V));V.call(H)}}}var wy=new a.Component().refs;function jA(v,D,Q,H){D=v.memoizedState,Q=Q(H,D),Q=Q==null?D:s({},D,Q),v.memoizedState=Q,v.lanes===0&&(v.updateQueue.baseState=Q)}var qA={isMounted:function(v){return(v=v._reactInternals)?we(v)===v:!1},enqueueSetState:function(v,D,Q){v=v._reactInternals;var H=To(),V=vs(v),ne=bl(H,V);ne.payload=D,Q!=null&&(ne.callback=Q),Pl(v,ne),Rl(v,V,H)},enqueueReplaceState:function(v,D,Q){v=v._reactInternals;var H=To(),V=vs(v),ne=bl(H,V);ne.tag=1,ne.payload=D,Q!=null&&(ne.callback=Q),Pl(v,ne),Rl(v,V,H)},enqueueForceUpdate:function(v,D){v=v._reactInternals;var Q=To(),H=vs(v),V=bl(Q,H);V.tag=2,D!=null&&(V.callback=D),Pl(v,V),Rl(v,H,Q)}};function Y(v,D,Q,H,V,ne,Se){return v=v.stateNode,typeof v.shouldComponentUpdate==\"function\"?v.shouldComponentUpdate(H,ne,Se):D.prototype&&D.prototype.isPureReactComponent?!wh(Q,H)||!wh(V,ne):!0}function xt(v,D,Q){var H=!1,V=ca,ne=D.contextType;return typeof ne==\"object\"&&ne!==null?ne=Po(ne):(V=Jn(D)?Oa:ji.current,H=D.contextTypes,ne=(H=H!=null)?dn(v,V):ca),D=new D(Q,ne),v.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=qA,v.stateNode=D,D._reactInternals=v,H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=V,v.__reactInternalMemoizedMaskedChildContext=ne),D}function GA(v,D,Q,H){v=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(Q,H),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(Q,H),D.state!==v&&qA.enqueueReplaceState(D,D.state,null)}function xo(v,D,Q,H){var V=v.stateNode;V.props=Q,V.state=v.memoizedState,V.refs=wy,Dh(v);var ne=D.contextType;typeof ne==\"object\"&&ne!==null?V.context=Po(ne):(ne=Jn(D)?Oa:ji.current,V.context=dn(v,ne)),HA(v,Q,V,H),V.state=v.memoizedState,ne=D.getDerivedStateFromProps,typeof ne==\"function\"&&(jA(v,D,ne,Q),V.state=v.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof V.getSnapshotBeforeUpdate==\"function\"||typeof V.UNSAFE_componentWillMount!=\"function\"&&typeof V.componentWillMount!=\"function\"||(D=V.state,typeof V.componentWillMount==\"function\"&&V.componentWillMount(),typeof V.UNSAFE_componentWillMount==\"function\"&&V.UNSAFE_componentWillMount(),D!==V.state&&qA.enqueueReplaceState(V,V.state,null),HA(v,Q,V,H),V.state=v.memoizedState),typeof V.componentDidMount==\"function\"&&(v.flags|=4)}var yf=Array.isArray;function dt(v,D,Q){if(v=Q.ref,v!==null&&typeof v!=\"function\"&&typeof v!=\"object\"){if(Q._owner){if(Q=Q._owner,Q){if(Q.tag!==1)throw Error(c(309));var H=Q.stateNode}if(!H)throw Error(c(147,v));var V=\"\"+v;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===V?D.ref:(D=function(ne){var Se=H.refs;Se===wy&&(Se=H.refs={}),ne===null?delete Se[V]:Se[V]=ne},D._stringRef=V,D)}if(typeof v!=\"string\")throw Error(c(284));if(!Q._owner)throw Error(c(290,v))}return v}function mu(v,D){if(v.type!==\"textarea\")throw Error(c(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D))}function By(v){function D($e,qe){if(v){var pt=$e.lastEffect;pt!==null?(pt.nextEffect=qe,$e.lastEffect=qe):$e.firstEffect=$e.lastEffect=qe,qe.nextEffect=null,qe.flags=8}}function Q($e,qe){if(!v)return null;for(;qe!==null;)D($e,qe),qe=qe.sibling;return null}function H($e,qe){for($e=new Map;qe!==null;)qe.key!==null?$e.set(qe.key,qe):$e.set(qe.index,qe),qe=qe.sibling;return $e}function V($e,qe){return $e=bu($e,qe),$e.index=0,$e.sibling=null,$e}function ne($e,qe,pt){return $e.index=pt,v?(pt=$e.alternate,pt!==null?(pt=pt.index,pt<qe?($e.flags=2,qe):pt):($e.flags=2,qe)):qe}function Se($e){return v&&$e.alternate===null&&($e.flags=2),$e}function Ue($e,qe,pt,Zt){return qe===null||qe.tag!==6?(qe=k2(pt,$e.mode,Zt),qe.return=$e,qe):(qe=V(qe,pt),qe.return=$e,qe)}function At($e,qe,pt,Zt){return qe!==null&&qe.elementType===pt.type?(Zt=V(qe,pt.props),Zt.ref=dt($e,qe,pt),Zt.return=$e,Zt):(Zt=od(pt.type,pt.key,pt.props,null,$e.mode,Zt),Zt.ref=dt($e,qe,pt),Zt.return=$e,Zt)}function Gt($e,qe,pt,Zt){return qe===null||qe.tag!==4||qe.stateNode.containerInfo!==pt.containerInfo||qe.stateNode.implementation!==pt.implementation?(qe=Ro(pt,$e.mode,Zt),qe.return=$e,qe):(qe=V(qe,pt.children||[]),qe.return=$e,qe)}function vr($e,qe,pt,Zt,Sr){return qe===null||qe.tag!==7?(qe=Qf(pt,$e.mode,Zt,Sr),qe.return=$e,qe):(qe=V(qe,pt),qe.return=$e,qe)}function Lr($e,qe,pt){if(typeof qe==\"string\"||typeof qe==\"number\")return qe=k2(\"\"+qe,$e.mode,pt),qe.return=$e,qe;if(typeof qe==\"object\"&&qe!==null){switch(qe.$$typeof){case p:return pt=od(qe.type,qe.key,qe.props,null,$e.mode,pt),pt.ref=dt($e,null,qe),pt.return=$e,pt;case h:return qe=Ro(qe,$e.mode,pt),qe.return=$e,qe}if(yf(qe)||Ce(qe))return qe=Qf(qe,$e.mode,pt,null),qe.return=$e,qe;mu($e,qe)}return null}function Xt($e,qe,pt,Zt){var Sr=qe!==null?qe.key:null;if(typeof pt==\"string\"||typeof pt==\"number\")return Sr!==null?null:Ue($e,qe,\"\"+pt,Zt);if(typeof pt==\"object\"&&pt!==null){switch(pt.$$typeof){case p:return pt.key===Sr?pt.type===E?vr($e,qe,pt.props.children,Zt,Sr):At($e,qe,pt,Zt):null;case h:return pt.key===Sr?Gt($e,qe,pt,Zt):null}if(yf(pt)||Ce(pt))return Sr!==null?null:vr($e,qe,pt,Zt,null);mu($e,pt)}return null}function zn($e,qe,pt,Zt,Sr){if(typeof Zt==\"string\"||typeof Zt==\"number\")return $e=$e.get(pt)||null,Ue(qe,$e,\"\"+Zt,Sr);if(typeof Zt==\"object\"&&Zt!==null){switch(Zt.$$typeof){case p:return $e=$e.get(Zt.key===null?pt:Zt.key)||null,Zt.type===E?vr(qe,$e,Zt.props.children,Sr,Zt.key):At(qe,$e,Zt,Sr);case h:return $e=$e.get(Zt.key===null?pt:Zt.key)||null,Gt(qe,$e,Zt,Sr)}if(yf(Zt)||Ce(Zt))return $e=$e.get(pt)||null,vr(qe,$e,Zt,Sr,null);mu(qe,Zt)}return null}function mi($e,qe,pt,Zt){for(var Sr=null,Xn=null,kr=qe,Rn=qe=0,Un=null;kr!==null&&Rn<pt.length;Rn++){kr.index>Rn?(Un=kr,kr=null):Un=kr.sibling;var zr=Xt($e,kr,pt[Rn],Zt);if(zr===null){kr===null&&(kr=Un);break}v&&kr&&zr.alternate===null&&D($e,kr),qe=ne(zr,qe,Rn),Xn===null?Sr=zr:Xn.sibling=zr,Xn=zr,kr=Un}if(Rn===pt.length)return Q($e,kr),Sr;if(kr===null){for(;Rn<pt.length;Rn++)kr=Lr($e,pt[Rn],Zt),kr!==null&&(qe=ne(kr,qe,Rn),Xn===null?Sr=kr:Xn.sibling=kr,Xn=kr);return Sr}for(kr=H($e,kr);Rn<pt.length;Rn++)Un=zn(kr,$e,Rn,pt[Rn],Zt),Un!==null&&(v&&Un.alternate!==null&&kr.delete(Un.key===null?Rn:Un.key),qe=ne(Un,qe,Rn),Xn===null?Sr=Un:Xn.sibling=Un,Xn=Un);return v&&kr.forEach(function(li){return D($e,li)}),Sr}function Za($e,qe,pt,Zt){var Sr=Ce(pt);if(typeof Sr!=\"function\")throw Error(c(150));if(pt=Sr.call(pt),pt==null)throw Error(c(151));for(var Xn=Sr=null,kr=qe,Rn=qe=0,Un=null,zr=pt.next();kr!==null&&!zr.done;Rn++,zr=pt.next()){kr.index>Rn?(Un=kr,kr=null):Un=kr.sibling;var li=Xt($e,kr,zr.value,Zt);if(li===null){kr===null&&(kr=Un);break}v&&kr&&li.alternate===null&&D($e,kr),qe=ne(li,qe,Rn),Xn===null?Sr=li:Xn.sibling=li,Xn=li,kr=Un}if(zr.done)return Q($e,kr),Sr;if(kr===null){for(;!zr.done;Rn++,zr=pt.next())zr=Lr($e,zr.value,Zt),zr!==null&&(qe=ne(zr,qe,Rn),Xn===null?Sr=zr:Xn.sibling=zr,Xn=zr);return Sr}for(kr=H($e,kr);!zr.done;Rn++,zr=pt.next())zr=zn(kr,$e,Rn,zr.value,Zt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Rn:zr.key),qe=ne(zr,qe,Rn),Xn===null?Sr=zr:Xn.sibling=zr,Xn=zr);return v&&kr.forEach(function(Pu){return D($e,Pu)}),Sr}return function($e,qe,pt,Zt){var Sr=typeof pt==\"object\"&&pt!==null&&pt.type===E&&pt.key===null;Sr&&(pt=pt.props.children);var Xn=typeof pt==\"object\"&&pt!==null;if(Xn)switch(pt.$$typeof){case p:e:{for(Xn=pt.key,Sr=qe;Sr!==null;){if(Sr.key===Xn){switch(Sr.tag){case 7:if(pt.type===E){Q($e,Sr.sibling),qe=V(Sr,pt.props.children),qe.return=$e,$e=qe;break e}break;default:if(Sr.elementType===pt.type){Q($e,Sr.sibling),qe=V(Sr,pt.props),qe.ref=dt($e,Sr,pt),qe.return=$e,$e=qe;break e}}Q($e,Sr);break}else D($e,Sr);Sr=Sr.sibling}pt.type===E?(qe=Qf(pt.props.children,$e.mode,Zt,pt.key),qe.return=$e,$e=qe):(Zt=od(pt.type,pt.key,pt.props,null,$e.mode,Zt),Zt.ref=dt($e,qe,pt),Zt.return=$e,$e=Zt)}return Se($e);case h:e:{for(Sr=pt.key;qe!==null;){if(qe.key===Sr)if(qe.tag===4&&qe.stateNode.containerInfo===pt.containerInfo&&qe.stateNode.implementation===pt.implementation){Q($e,qe.sibling),qe=V(qe,pt.children||[]),qe.return=$e,$e=qe;break e}else{Q($e,qe);break}else D($e,qe);qe=qe.sibling}qe=Ro(pt,$e.mode,Zt),qe.return=$e,$e=qe}return Se($e)}if(typeof pt==\"string\"||typeof pt==\"number\")return pt=\"\"+pt,qe!==null&&qe.tag===6?(Q($e,qe.sibling),qe=V(qe,pt),qe.return=$e,$e=qe):(Q($e,qe),qe=k2(pt,$e.mode,Zt),qe.return=$e,$e=qe),Se($e);if(yf(pt))return mi($e,qe,pt,Zt);if(Ce(pt))return Za($e,qe,pt,Zt);if(Xn&&mu($e,pt),typeof pt>\"u\"&&!Sr)switch($e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g($e.type)||\"Component\"))}return Q($e,qe)}}var _g=By(!0),n2=By(!1),bh={},ur=io(bh),zi=io(bh),Ef=io(bh);function Wa(v){if(v===bh)throw Error(c(174));return v}function Ug(v,D){xn(Ef,D),xn(zi,v),xn(ur,bh),v=gt(D),Rt(ur),xn(ur,v)}function yu(){Rt(ur),Rt(zi),Rt(Ef)}function If(v){var D=Wa(Ef.current),Q=Wa(ur.current);D=j(Q,v.type,D),Q!==D&&(xn(zi,v),xn(ur,D))}function wt(v){zi.current===v&&(Rt(ur),Rt(zi))}var gi=io(0);function WA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||So(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Ya=null,pa=null,Va=!1;function Hg(v,D){var Q=za(5,null,null,0);Q.elementType=\"DELETED\",Q.type=\"DELETED\",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Ph(v,D){switch(v.tag){case 5:return D=la(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=OA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function jg(v){if(Va){var D=pa;if(D){var Q=D;if(!Ph(v,D)){if(D=Me(Q),!D||!Ph(v,D)){v.flags=v.flags&-1025|2,Va=!1,Ya=v;return}Hg(Ya,Q)}Ya=v,pa=fu(D)}else v.flags=v.flags&-1025|2,Va=!1,Ya=v}}function vy(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Ya=v}function YA(v){if(!Z||v!==Ya)return!1;if(!Va)return vy(v),Va=!0,!1;var D=v.type;if(v.tag!==5||D!==\"head\"&&D!==\"body\"&&!it(D,v.memoizedProps))for(D=pa;D;)Hg(v,D),D=Me(D);if(vy(v),v.tag===13){if(!Z)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));pa=LA(v)}else pa=Ya?Me(v.stateNode):null;return!0}function qg(){Z&&(pa=Ya=null,Va=!1)}var Eu=[];function Iu(){for(var v=0;v<Eu.length;v++){var D=Eu[v];y?D._workInProgressVersionPrimary=null:D._workInProgressVersionSecondary=null}Eu.length=0}var Cf=f.ReactCurrentDispatcher,Fs=f.ReactCurrentBatchConfig,Cu=0,qn=null,is=null,xi=null,VA=!1,wf=!1;function mn(){throw Error(c(321))}function Gg(v,D){if(D===null)return!1;for(var Q=0;Q<D.length&&Q<v.length;Q++)if(!Do(v[Q],D[Q]))return!1;return!0}function Wg(v,D,Q,H,V,ne){if(Cu=ne,qn=D,D.memoizedState=null,D.updateQueue=null,D.lanes=0,Cf.current=v===null||v.memoizedState===null?O:J,v=Q(H,V),wf){ne=0;do{if(wf=!1,!(25>ne))throw Error(c(301));ne+=1,xi=is=null,D.updateQueue=null,Cf.current=re,v=Q(H,V)}while(wf)}if(Cf.current=kt,D=is!==null&&is.next!==null,Cu=0,xi=is=qn=null,VA=!1,D)throw Error(c(300));return v}function ss(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return xi===null?qn.memoizedState=xi=v:xi=xi.next=v,xi}function xl(){if(is===null){var v=qn.alternate;v=v!==null?v.memoizedState:null}else v=is.next;var D=xi===null?qn.memoizedState:xi.next;if(D!==null)xi=D,is=v;else{if(v===null)throw Error(c(310));is=v,v={memoizedState:is.memoizedState,baseState:is.baseState,baseQueue:is.baseQueue,queue:is.queue,next:null},xi===null?qn.memoizedState=xi=v:xi=xi.next=v}return xi}function ko(v,D){return typeof D==\"function\"?D(v):D}function Bf(v){var D=xl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=is,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var Se=V.next;V.next=ne.next,ne.next=Se}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var Ue=Se=ne=null,At=V;do{var Gt=At.lane;if((Cu&Gt)===Gt)Ue!==null&&(Ue=Ue.next={lane:0,action:At.action,eagerReducer:At.eagerReducer,eagerState:At.eagerState,next:null}),H=At.eagerReducer===v?At.eagerState:v(H,At.action);else{var vr={lane:Gt,action:At.action,eagerReducer:At.eagerReducer,eagerState:At.eagerState,next:null};Ue===null?(Se=Ue=vr,ne=H):Ue=Ue.next=vr,qn.lanes|=Gt,$g|=Gt}At=At.next}while(At!==null&&At!==V);Ue===null?ne=H:Ue.next=Se,Do(H,D.memoizedState)||(Ke=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=Ue,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function vf(v){var D=xl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var Se=V=V.next;do ne=v(ne,Se.action),Se=Se.next;while(Se!==V);Do(ne,D.memoizedState)||(Ke=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function kl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(Cu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,Eu.push(D))),v)return Q(D._source);throw Eu.push(D),Error(c(350))}function yn(v,D,Q,H){var V=oo;if(V===null)throw Error(c(349));var ne=D._getVersion,Se=ne(D._source),Ue=Cf.current,At=Ue.useState(function(){return kl(V,D,Q)}),Gt=At[1],vr=At[0];At=xi;var Lr=v.memoizedState,Xt=Lr.refs,zn=Xt.getSnapshot,mi=Lr.source;Lr=Lr.subscribe;var Za=qn;return v.memoizedState={refs:Xt,source:D,subscribe:H},Ue.useEffect(function(){Xt.getSnapshot=Q,Xt.setSnapshot=Gt;var $e=ne(D._source);if(!Do(Se,$e)){$e=Q(D._source),Do(vr,$e)||(Gt($e),$e=vs(Za),V.mutableReadLanes|=$e&V.pendingLanes),$e=V.mutableReadLanes,V.entangledLanes|=$e;for(var qe=V.entanglements,pt=$e;0<pt;){var Zt=31-ns(pt),Sr=1<<Zt;qe[Zt]|=$e,pt&=~Sr}}},[Q,D,H]),Ue.useEffect(function(){return H(D._source,function(){var $e=Xt.getSnapshot,qe=Xt.setSnapshot;try{qe($e(D._source));var pt=vs(Za);V.mutableReadLanes|=pt&V.pendingLanes}catch(Zt){qe(function(){throw Zt})}})},[D,H]),Do(zn,Q)&&Do(mi,D)&&Do(Lr,H)||(v={pending:null,dispatch:null,lastRenderedReducer:ko,lastRenderedState:vr},v.dispatch=Gt=Th.bind(null,qn,v),At.queue=v,At.baseQueue=null,vr=kl(V,D,Q),At.memoizedState=At.baseState=vr),vr}function Qo(v,D,Q){var H=xl();return yn(H,v,D,Q)}function wu(v){var D=ss();return typeof v==\"function\"&&(v=v()),D.memoizedState=D.baseState=v,v=D.queue={pending:null,dispatch:null,lastRenderedReducer:ko,lastRenderedState:v},v=v.dispatch=Th.bind(null,qn,v),[D.memoizedState,v]}function ha(v,D,Q,H){return v={tag:v,create:D,destroy:Q,deps:H,next:null},D=qn.updateQueue,D===null?(D={lastEffect:null},qn.updateQueue=D,D.lastEffect=v.next=v):(Q=D.lastEffect,Q===null?D.lastEffect=v.next=v:(H=Q.next,Q.next=v,v.next=H,D.lastEffect=v)),v}function Ns(v){var D=ss();return v={current:v},D.memoizedState=v}function xh(){return xl().memoizedState}function KA(v,D,Q,H){var V=ss();qn.flags|=v,V.memoizedState=ha(1|D,Q,void 0,H===void 0?null:H)}function Sf(v,D,Q,H){var V=xl();H=H===void 0?null:H;var ne=void 0;if(is!==null){var Se=is.memoizedState;if(ne=Se.destroy,H!==null&&Gg(H,Se.deps)){ha(D,Q,ne,H);return}}qn.flags|=v,V.memoizedState=ha(1|D,Q,ne,H)}function so(v,D){return KA(516,4,v,D)}function Xr(v,D){return Sf(516,4,v,D)}function kh(v,D){return Sf(4,2,v,D)}function JA(v,D){if(typeof D==\"function\")return v=v(),D(v),function(){D(null)};if(D!=null)return v=v(),D.current=v,function(){D.current=null}}function Sy(v,D,Q){return Q=Q!=null?Q.concat([v]):null,Sf(4,2,JA.bind(null,D,v),Q)}function Yg(){}function Qh(v,D){var Q=xl();D=D===void 0?null:D;var H=Q.memoizedState;return H!==null&&D!==null&&Gg(D,H[1])?H[0]:(Q.memoizedState=[v,D],v)}function hc(v,D){var Q=xl();D=D===void 0?null:D;var H=Q.memoizedState;return H!==null&&D!==null&&Gg(D,H[1])?H[0]:(v=v(),Q.memoizedState=[v,D],v)}function Dy(v,D){var Q=tr();ai(98>Q?98:Q,function(){v(!0)}),ai(97<Q?97:Q,function(){var H=Fs.transition;Fs.transition=1;try{v(!1),D()}finally{Fs.transition=H}})}function Th(v,D,Q){var H=To(),V=vs(v),ne={lane:V,action:Q,eagerReducer:null,eagerState:null,next:null},Se=D.pending;if(Se===null?ne.next=ne:(ne.next=Se.next,Se.next=ne),D.pending=ne,Se=v.alternate,v===qn||Se!==null&&Se===qn)wf=VA=!0;else{if(v.lanes===0&&(Se===null||Se.lanes===0)&&(Se=D.lastRenderedReducer,Se!==null))try{var Ue=D.lastRenderedState,At=Se(Ue,Q);if(ne.eagerReducer=Se,ne.eagerState=At,Do(At,Ue))return}catch{}finally{}Rl(v,V,H)}}var kt={readContext:Po,useCallback:mn,useContext:mn,useEffect:mn,useImperativeHandle:mn,useLayoutEffect:mn,useMemo:mn,useReducer:mn,useRef:mn,useState:mn,useDebugValue:mn,useDeferredValue:mn,useTransition:mn,useMutableSource:mn,useOpaqueIdentifier:mn,unstable_isNewReconciler:!1},O={readContext:Po,useCallback:function(v,D){return ss().memoizedState=[v,D===void 0?null:D],v},useContext:Po,useEffect:so,useImperativeHandle:function(v,D,Q){return Q=Q!=null?Q.concat([v]):null,KA(4,2,JA.bind(null,D,v),Q)},useLayoutEffect:function(v,D){return KA(4,2,v,D)},useMemo:function(v,D){var Q=ss();return D=D===void 0?null:D,v=v(),Q.memoizedState=[v,D],v},useReducer:function(v,D,Q){var H=ss();return D=Q!==void 0?Q(D):D,H.memoizedState=H.baseState=D,v=H.queue={pending:null,dispatch:null,lastRenderedReducer:v,lastRenderedState:D},v=v.dispatch=Th.bind(null,qn,v),[H.memoizedState,v]},useRef:Ns,useState:wu,useDebugValue:Yg,useDeferredValue:function(v){var D=wu(v),Q=D[0],H=D[1];return so(function(){var V=Fs.transition;Fs.transition=1;try{H(v)}finally{Fs.transition=V}},[v]),Q},useTransition:function(){var v=wu(!1),D=v[0];return v=Dy.bind(null,v[1]),Ns(v),[v,D]},useMutableSource:function(v,D,Q){var H=ss();return H.memoizedState={refs:{getSnapshot:D,setSnapshot:null},source:v,subscribe:Q},yn(H,v,D,Q)},useOpaqueIdentifier:function(){if(Va){var v=!1,D=oe(function(){throw v||(v=!0,Q(xe())),Error(c(355))}),Q=wu(D)[1];return!(qn.mode&2)&&(qn.flags|=516,ha(5,function(){Q(xe())},void 0,null)),D}return D=xe(),wu(D),D},unstable_isNewReconciler:!1},J={readContext:Po,useCallback:Qh,useContext:Po,useEffect:Xr,useImperativeHandle:Sy,useLayoutEffect:kh,useMemo:hc,useReducer:Bf,useRef:xh,useState:function(){return Bf(ko)},useDebugValue:Yg,useDeferredValue:function(v){var D=Bf(ko),Q=D[0],H=D[1];return Xr(function(){var V=Fs.transition;Fs.transition=1;try{H(v)}finally{Fs.transition=V}},[v]),Q},useTransition:function(){var v=Bf(ko)[0];return[xh().current,v]},useMutableSource:Qo,useOpaqueIdentifier:function(){return Bf(ko)[0]},unstable_isNewReconciler:!1},re={readContext:Po,useCallback:Qh,useContext:Po,useEffect:Xr,useImperativeHandle:Sy,useLayoutEffect:kh,useMemo:hc,useReducer:vf,useRef:xh,useState:function(){return vf(ko)},useDebugValue:Yg,useDeferredValue:function(v){var D=vf(ko),Q=D[0],H=D[1];return Xr(function(){var V=Fs.transition;Fs.transition=1;try{H(v)}finally{Fs.transition=V}},[v]),Q},useTransition:function(){var v=vf(ko)[0];return[xh().current,v]},useMutableSource:Qo,useOpaqueIdentifier:function(){return vf(ko)[0]},unstable_isNewReconciler:!1},de=f.ReactCurrentOwner,Ke=!1;function ft(v,D,Q,H){D.child=v===null?n2(D,null,Q,H):_g(D,v.child,Q,H)}function dr(v,D,Q,H,V){Q=Q.render;var ne=D.ref;return mf(D,V),H=Wg(v,D,Q,H,ne,V),v!==null&&!Ke?(D.updateQueue=v.updateQueue,D.flags&=-517,v.lanes&=~V,Gn(v,D,V)):(D.flags|=1,ft(v,D,H,V),D.child)}function Br(v,D,Q,H,V,ne){if(v===null){var Se=Q.type;return typeof Se==\"function\"&&!P2(Se)&&Se.defaultProps===void 0&&Q.compare===null&&Q.defaultProps===void 0?(D.tag=15,D.type=Se,_n(v,D,Se,H,V,ne)):(v=od(Q.type,null,H,D,D.mode,ne),v.ref=D.ref,v.return=D,D.child=v)}return Se=v.child,!(V&ne)&&(V=Se.memoizedProps,Q=Q.compare,Q=Q!==null?Q:wh,Q(V,H)&&v.ref===D.ref)?Gn(v,D,ne):(D.flags|=1,v=bu(Se,H),v.ref=D.ref,v.return=D,D.child=v)}function _n(v,D,Q,H,V,ne){if(v!==null&&wh(v.memoizedProps,H)&&v.ref===D.ref)if(Ke=!1,(ne&V)!==0)v.flags&16384&&(Ke=!0);else return D.lanes=v.lanes,Gn(v,D,ne);return zA(v,D,Q,H,ne)}function di(v,D,Q){var H=D.pendingProps,V=H.children,ne=v!==null?v.memoizedState:null;if(H.mode===\"hidden\"||H.mode===\"unstable-defer-without-hiding\")if(!(D.mode&4))D.memoizedState={baseLanes:0},Gy(D,Q);else if(Q&1073741824)D.memoizedState={baseLanes:0},Gy(D,ne!==null?ne.baseLanes:Q);else return v=ne!==null?ne.baseLanes|Q:Q,D.lanes=D.childLanes=1073741824,D.memoizedState={baseLanes:v},Gy(D,v),null;else ne!==null?(H=ne.baseLanes|Q,D.memoizedState=null):H=Q,Gy(D,H);return ft(v,D,V,Q),D.child}function ws(v,D){var Q=D.ref;(v===null&&Q!==null||v!==null&&v.ref!==Q)&&(D.flags|=128)}function zA(v,D,Q,H,V){var ne=Jn(Q)?Oa:ji.current;return ne=dn(D,ne),mf(D,V),Q=Wg(v,D,Q,H,ne,V),v!==null&&!Ke?(D.updateQueue=v.updateQueue,D.flags&=-517,v.lanes&=~V,Gn(v,D,V)):(D.flags|=1,ft(v,D,Q,V),D.child)}function wP(v,D,Q,H,V){if(Jn(Q)){var ne=!0;Ma(D)}else ne=!1;if(mf(D,V),D.stateNode===null)v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),xt(D,Q,H),xo(D,Q,H,V),H=!0;else if(v===null){var Se=D.stateNode,Ue=D.memoizedProps;Se.props=Ue;var At=Se.context,Gt=Q.contextType;typeof Gt==\"object\"&&Gt!==null?Gt=Po(Gt):(Gt=Jn(Q)?Oa:ji.current,Gt=dn(D,Gt));var vr=Q.getDerivedStateFromProps,Lr=typeof vr==\"function\"||typeof Se.getSnapshotBeforeUpdate==\"function\";Lr||typeof Se.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof Se.componentWillReceiveProps!=\"function\"||(Ue!==H||At!==Gt)&&GA(D,Se,H,Gt),Dl=!1;var Xt=D.memoizedState;Se.state=Xt,HA(D,H,Se,V),At=D.memoizedState,Ue!==H||Xt!==At||Oi.current||Dl?(typeof vr==\"function\"&&(jA(D,Q,vr,H),At=D.memoizedState),(Ue=Dl||Y(D,Q,Ue,H,Xt,At,Gt))?(Lr||typeof Se.UNSAFE_componentWillMount!=\"function\"&&typeof Se.componentWillMount!=\"function\"||(typeof Se.componentWillMount==\"function\"&&Se.componentWillMount(),typeof Se.UNSAFE_componentWillMount==\"function\"&&Se.UNSAFE_componentWillMount()),typeof Se.componentDidMount==\"function\"&&(D.flags|=4)):(typeof Se.componentDidMount==\"function\"&&(D.flags|=4),D.memoizedProps=H,D.memoizedState=At),Se.props=H,Se.state=At,Se.context=Gt,H=Ue):(typeof Se.componentDidMount==\"function\"&&(D.flags|=4),H=!1)}else{Se=D.stateNode,Mg(v,D),Ue=D.memoizedProps,Gt=D.type===D.elementType?Ue:bo(D.type,Ue),Se.props=Gt,Lr=D.pendingProps,Xt=Se.context,At=Q.contextType,typeof At==\"object\"&&At!==null?At=Po(At):(At=Jn(Q)?Oa:ji.current,At=dn(D,At));var zn=Q.getDerivedStateFromProps;(vr=typeof zn==\"function\"||typeof Se.getSnapshotBeforeUpdate==\"function\")||typeof Se.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof Se.componentWillReceiveProps!=\"function\"||(Ue!==Lr||Xt!==At)&&GA(D,Se,H,At),Dl=!1,Xt=D.memoizedState,Se.state=Xt,HA(D,H,Se,V);var mi=D.memoizedState;Ue!==Lr||Xt!==mi||Oi.current||Dl?(typeof zn==\"function\"&&(jA(D,Q,zn,H),mi=D.memoizedState),(Gt=Dl||Y(D,Q,Gt,H,Xt,mi,At))?(vr||typeof Se.UNSAFE_componentWillUpdate!=\"function\"&&typeof Se.componentWillUpdate!=\"function\"||(typeof Se.componentWillUpdate==\"function\"&&Se.componentWillUpdate(H,mi,At),typeof Se.UNSAFE_componentWillUpdate==\"function\"&&Se.UNSAFE_componentWillUpdate(H,mi,At)),typeof Se.componentDidUpdate==\"function\"&&(D.flags|=4),typeof Se.getSnapshotBeforeUpdate==\"function\"&&(D.flags|=256)):(typeof Se.componentDidUpdate!=\"function\"||Ue===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=4),typeof Se.getSnapshotBeforeUpdate!=\"function\"||Ue===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=256),D.memoizedProps=H,D.memoizedState=mi),Se.props=H,Se.state=mi,Se.context=At,H=Gt):(typeof Se.componentDidUpdate!=\"function\"||Ue===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=4),typeof Se.getSnapshotBeforeUpdate!=\"function\"||Ue===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=256),H=!1)}return i2(v,D,Q,H,ne,V)}function i2(v,D,Q,H,V,ne){ws(v,D);var Se=(D.flags&64)!==0;if(!H&&!Se)return V&&Ua(D,Q,!1),Gn(v,D,ne);H=D.stateNode,de.current=D;var Ue=Se&&typeof Q.getDerivedStateFromError!=\"function\"?null:H.render();return D.flags|=1,v!==null&&Se?(D.child=_g(D,v.child,null,ne),D.child=_g(D,null,Ue,ne)):ft(v,D,Ue,ne),D.memoizedState=H.state,V&&Ua(D,Q,!0),D.child}function by(v){var D=v.stateNode;D.pendingContext?Ch(v,D.pendingContext,D.pendingContext!==D.context):D.context&&Ch(v,D.context,!1),Ug(v,D.containerInfo)}var Rh={dehydrated:null,retryLane:0};function s2(v,D,Q){var H=D.pendingProps,V=gi.current,ne=!1,Se;return(Se=(D.flags&64)!==0)||(Se=v!==null&&v.memoizedState===null?!1:(V&2)!==0),Se?(ne=!0,D.flags&=-65):v!==null&&v.memoizedState===null||H.fallback===void 0||H.unstable_avoidThisFallback===!0||(V|=1),xn(gi,V&1),v===null?(H.fallback!==void 0&&jg(D),v=H.children,V=H.fallback,ne?(v=Ka(D,v,V,Q),D.child.memoizedState={baseLanes:Q},D.memoizedState=Rh,v):typeof H.unstable_expectedLoadTime==\"number\"?(v=Ka(D,v,V,Q),D.child.memoizedState={baseLanes:Q},D.memoizedState=Rh,D.lanes=33554432,v):(Q=x2({mode:\"visible\",children:v},D.mode,Q,null),Q.return=D,D.child=Q)):v.memoizedState!==null?ne?(H=ZA(v,D,H.children,H.fallback,Q),ne=D.child,V=v.child.memoizedState,ne.memoizedState=V===null?{baseLanes:Q}:{baseLanes:V.baseLanes|Q},ne.childLanes=v.childLanes&~Q,D.memoizedState=Rh,H):(Q=o2(v,D,H.children,Q),D.memoizedState=null,Q):ne?(H=ZA(v,D,H.children,H.fallback,Q),ne=D.child,V=v.child.memoizedState,ne.memoizedState=V===null?{baseLanes:Q}:{baseLanes:V.baseLanes|Q},ne.childLanes=v.childLanes&~Q,D.memoizedState=Rh,H):(Q=o2(v,D,H.children,Q),D.memoizedState=null,Q)}function Ka(v,D,Q,H){var V=v.mode,ne=v.child;return D={mode:\"hidden\",children:D},!(V&2)&&ne!==null?(ne.childLanes=0,ne.pendingProps=D):ne=x2(D,V,0,null),Q=Qf(Q,V,H,null),ne.return=v,Q.return=v,ne.sibling=Q,v.child=ne,Q}function o2(v,D,Q,H){var V=v.child;return v=V.sibling,Q=bu(V,{mode:\"visible\",children:Q}),!(D.mode&2)&&(Q.lanes=H),Q.return=D,Q.sibling=null,v!==null&&(v.nextEffect=null,v.flags=8,D.firstEffect=D.lastEffect=v),D.child=Q}function ZA(v,D,Q,H,V){var ne=D.mode,Se=v.child;v=Se.sibling;var Ue={mode:\"hidden\",children:Q};return!(ne&2)&&D.child!==Se?(Q=D.child,Q.childLanes=0,Q.pendingProps=Ue,Se=Q.lastEffect,Se!==null?(D.firstEffect=Q.firstEffect,D.lastEffect=Se,Se.nextEffect=null):D.firstEffect=D.lastEffect=null):Q=bu(Se,Ue),v!==null?H=bu(v,H):(H=Qf(H,ne,V,null),H.flags|=2),H.return=D,Q.return=D,Q.sibling=H,D.child=Q,H}function Fh(v,D){v.lanes|=D;var Q=v.alternate;Q!==null&&(Q.lanes|=D),Ey(v.return,D)}function Py(v,D,Q,H,V,ne){var Se=v.memoizedState;Se===null?v.memoizedState={isBackwards:D,rendering:null,renderingStartTime:0,last:H,tail:Q,tailMode:V,lastEffect:ne}:(Se.isBackwards=D,Se.rendering=null,Se.renderingStartTime=0,Se.last=H,Se.tail=Q,Se.tailMode=V,Se.lastEffect=ne)}function BP(v,D,Q){var H=D.pendingProps,V=H.revealOrder,ne=H.tail;if(ft(v,D,H.children,Q),H=gi.current,H&2)H=H&1|2,D.flags|=64;else{if(v!==null&&v.flags&64)e:for(v=D.child;v!==null;){if(v.tag===13)v.memoizedState!==null&&Fh(v,Q);else if(v.tag===19)Fh(v,Q);else if(v.child!==null){v.child.return=v,v=v.child;continue}if(v===D)break e;for(;v.sibling===null;){if(v.return===null||v.return===D)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}H&=1}if(xn(gi,H),!(D.mode&2))D.memoizedState=null;else switch(V){case\"forwards\":for(Q=D.child,V=null;Q!==null;)v=Q.alternate,v!==null&&WA(v)===null&&(V=Q),Q=Q.sibling;Q=V,Q===null?(V=D.child,D.child=null):(V=Q.sibling,Q.sibling=null),Py(D,!1,V,Q,ne,D.lastEffect);break;case\"backwards\":for(Q=null,V=D.child,D.child=null;V!==null;){if(v=V.alternate,v!==null&&WA(v)===null){D.child=V;break}v=V.sibling,V.sibling=Q,Q=V,V=v}Py(D,!0,Q,null,ne,D.lastEffect);break;case\"together\":Py(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function Gn(v,D,Q){if(v!==null&&(D.dependencies=v.dependencies),$g|=D.lanes,Q&D.childLanes){if(v!==null&&D.child!==v.child)throw Error(c(153));if(D.child!==null){for(v=D.child,Q=bu(v,v.pendingProps),D.child=Q,Q.return=D;v.sibling!==null;)v=v.sibling,Q=Q.sibling=bu(v,v.pendingProps),Q.return=D;Q.sibling=null}return D.child}return null}function os(v){v.flags|=4}var Ql,Tl,Bu,ga;if(F)Ql=function(v,D){for(var Q=D.child;Q!==null;){if(Q.tag===5||Q.tag===6)Pe(v,Q.stateNode);else if(Q.tag!==4&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}},Tl=function(){},Bu=function(v,D,Q,H,V){if(v=v.memoizedProps,v!==H){var ne=D.stateNode,Se=Wa(ur.current);Q=ke(ne,Q,v,H,V,Se),(D.updateQueue=Q)&&os(D)}},ga=function(v,D,Q,H){Q!==H&&os(D)};else if(z){Ql=function(v,D,Q,H){for(var V=D.child;V!==null;){if(V.tag===5){var ne=V.stateNode;Q&&H&&(ne=NA(ne,V.type,V.memoizedProps,V)),Pe(v,ne)}else if(V.tag===6)ne=V.stateNode,Q&&H&&(ne=aa(ne,V.memoizedProps,V)),Pe(v,ne);else if(V.tag!==4){if(V.tag===13&&V.flags&4&&(ne=V.memoizedState!==null)){var Se=V.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,Ql(v,Se,!0,ne)),ne=Se.sibling,ne!==null)){ne.return=V,V=ne;continue}}if(V.child!==null){V.child.return=V,V=V.child;continue}}if(V===D)break;for(;V.sibling===null;){if(V.return===null||V.return===D)return;V=V.return}V.sibling.return=V.return,V=V.sibling}};var XA=function(v,D,Q,H){for(var V=D.child;V!==null;){if(V.tag===5){var ne=V.stateNode;Q&&H&&(ne=NA(ne,V.type,V.memoizedProps,V)),cu(v,ne)}else if(V.tag===6)ne=V.stateNode,Q&&H&&(ne=aa(ne,V.memoizedProps,V)),cu(v,ne);else if(V.tag!==4){if(V.tag===13&&V.flags&4&&(ne=V.memoizedState!==null)){var Se=V.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,XA(v,Se,!0,ne)),ne=Se.sibling,ne!==null)){ne.return=V,V=ne;continue}}if(V.child!==null){V.child.return=V,V=V.child;continue}}if(V===D)break;for(;V.sibling===null;){if(V.return===null||V.return===D)return;V=V.return}V.sibling.return=V.return,V=V.sibling}};Tl=function(v){var D=v.stateNode;if(v.firstEffect!==null){var Q=D.containerInfo,H=lu(Q);XA(H,v,!1,!1),D.pendingChildren=H,os(v),uu(Q,H)}},Bu=function(v,D,Q,H,V){var ne=v.stateNode,Se=v.memoizedProps;if((v=D.firstEffect===null)&&Se===H)D.stateNode=ne;else{var Ue=D.stateNode,At=Wa(ur.current),Gt=null;Se!==H&&(Gt=ke(Ue,Q,Se,H,V,At)),v&&Gt===null?D.stateNode=ne:(ne=no(ne,Gt,Q,Se,H,D,v,Ue),Ye(ne,Q,H,V,At)&&os(D),D.stateNode=ne,v?os(D):Ql(ne,D,!1,!1))}},ga=function(v,D,Q,H){Q!==H?(v=Wa(Ef.current),Q=Wa(ur.current),D.stateNode=_e(H,v,Q,D),os(D)):D.stateNode=v.stateNode}}else Tl=function(){},Bu=function(){},ga=function(){};function $A(v,D){if(!Va)switch(v.tailMode){case\"hidden\":D=v.tail;for(var Q=null;D!==null;)D.alternate!==null&&(Q=D),D=D.sibling;Q===null?v.tail=null:Q.sibling=null;break;case\"collapsed\":Q=v.tail;for(var H=null;Q!==null;)Q.alternate!==null&&(H=Q),Q=Q.sibling;H===null?D||v.tail===null?v.tail=null:v.tail.sibling=null:H.sibling=null}}function XL(v,D,Q){var H=D.pendingProps;switch(D.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Jn(D.type)&&hu(),null;case 3:return yu(),Rt(Oi),Rt(ji),Iu(),H=D.stateNode,H.pendingContext&&(H.context=H.pendingContext,H.pendingContext=null),(v===null||v.child===null)&&(YA(D)?os(D):H.hydrate||(D.flags|=256)),Tl(D),null;case 5:wt(D);var V=Wa(Ef.current);if(Q=D.type,v!==null&&D.stateNode!=null)Bu(v,D,Q,H,V),v.ref!==D.ref&&(D.flags|=128);else{if(!H){if(D.stateNode===null)throw Error(c(166));return null}if(v=Wa(ur.current),YA(D)){if(!Z)throw Error(c(175));v=Cr(D.stateNode,D.type,D.memoizedProps,V,v,D),D.updateQueue=v,v!==null&&os(D)}else{var ne=Ne(Q,H,V,v,D);Ql(ne,D,!1,!1),D.stateNode=ne,Ye(ne,Q,H,V,v)&&os(D)}D.ref!==null&&(D.flags|=128)}return null;case 6:if(v&&D.stateNode!=null)ga(v,D,v.memoizedProps,H);else{if(typeof H!=\"string\"&&D.stateNode===null)throw Error(c(166));if(v=Wa(Ef.current),V=Wa(ur.current),YA(D)){if(!Z)throw Error(c(176));hf(D.stateNode,D.memoizedProps,D)&&os(D)}else D.stateNode=_e(H,v,V,D)}return null;case 13:return Rt(gi),H=D.memoizedState,D.flags&64?(D.lanes=Q,D):(H=H!==null,V=!1,v===null?D.memoizedProps.fallback!==void 0&&YA(D):V=v.memoizedState!==null,H&&!V&&D.mode&2&&(v===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||gi.current&1?Bs===0&&(Bs=3):((Bs===0||Bs===3)&&(Bs=4),oo===null||!($g&134217727)&&!(Lh&134217727)||Mh(oo,Os))),z&&H&&(D.flags|=4),F&&(H||V)&&(D.flags|=4),null);case 4:return yu(),Tl(D),v===null&&Et(D.stateNode.containerInfo),null;case 10:return Lg(D),null;case 17:return Jn(D.type)&&hu(),null;case 19:if(Rt(gi),H=D.memoizedState,H===null)return null;if(V=(D.flags&64)!==0,ne=H.rendering,ne===null)if(V)$A(H,!1);else{if(Bs!==0||v!==null&&v.flags&64)for(v=D.child;v!==null;){if(ne=WA(v),ne!==null){for(D.flags|=64,$A(H,!1),v=ne.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),H.lastEffect===null&&(D.firstEffect=null),D.lastEffect=H.lastEffect,v=Q,H=D.child;H!==null;)V=H,Q=v,V.flags&=2,V.nextEffect=null,V.firstEffect=null,V.lastEffect=null,ne=V.alternate,ne===null?(V.childLanes=0,V.lanes=Q,V.child=null,V.memoizedProps=null,V.memoizedState=null,V.updateQueue=null,V.dependencies=null,V.stateNode=null):(V.childLanes=ne.childLanes,V.lanes=ne.lanes,V.child=ne.child,V.memoizedProps=ne.memoizedProps,V.memoizedState=ne.memoizedState,V.updateQueue=ne.updateQueue,V.type=ne.type,Q=ne.dependencies,V.dependencies=Q===null?null:{lanes:Q.lanes,firstContext:Q.firstContext}),H=H.sibling;return xn(gi,gi.current&1|2),D.child}v=v.sibling}H.tail!==null&&Dt()>I2&&(D.flags|=64,V=!0,$A(H,!1),D.lanes=33554432)}else{if(!V)if(v=WA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),$A(H,!0),H.tail===null&&H.tailMode===\"hidden\"&&!ne.alternate&&!Va)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*Dt()-H.renderingStartTime>I2&&Q!==1073741824&&(D.flags|=64,V=!0,$A(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=Dt(),v.sibling=null,D=gi.current,xn(gi,V?D&1|2:D&1),v):null;case 23:case 24:return D2(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!==\"unstable-defer-without-hiding\"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function $L(v){switch(v.tag){case 1:Jn(v.type)&&hu();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(yu(),Rt(Oi),Rt(ji),Iu(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Rt(gi),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Rt(gi),null;case 4:return yu(),null;case 10:return Lg(v),null;case 23:case 24:return D2(),null;default:return null}}function Vg(v,D){try{var Q=\"\",H=D;do Q+=r2(H),H=H.return;while(H);var V=Q}catch(ne){V=`\nError generating stack: `+ne.message+`\n`+ne.stack}return{value:v,source:D,stack:V}}function Kg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var eM=typeof WeakMap==\"function\"?WeakMap:Map;function a2(v,D,Q){Q=bl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){Uy||(Uy=!0,C2=H),Kg(v,D)},Q}function Jg(v,D,Q){Q=bl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H==\"function\"){var V=D.value;Q.payload=function(){return Kg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch==\"function\"&&(Q.callback=function(){typeof H!=\"function\"&&(gc===null?gc=new Set([this]):gc.add(this),Kg(v,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:\"\"})}),Q}var tM=typeof WeakSet==\"function\"?WeakSet:Set;function l2(v){var D=v.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(Q){kf(v,Q)}else D.current=null}function xy(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:bo(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Rs(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Nh(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function vP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(MP(Q,v),uM(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:bo(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&Cy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Re(Q.child.stateNode);break;case 1:v=Q.child.stateNode}Cy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&eo(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:Z&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&Au(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function SP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?Eh(H):ro(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?Ih(H):jn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function ky(v,D){if(Ha&&typeof Ha.onCommitFiberUnmount==\"function\")try{Ha.onCommitFiberUnmount(Xe,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)MP(D,Q);else{H=D;try{V()}catch(ne){kf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(l2(D),v=D.stateNode,typeof v.componentWillUnmount==\"function\")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){kf(D,ne)}break;case 5:l2(D);break;case 4:F?xP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=lu(D),FA(D,v))}}function DP(v,D){for(var Q=D;;)if(ky(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Qy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function bP(v){return v.tag===5||v.tag===3||v.tag===4}function PP(v){if(F){e:{for(var D=v.return;D!==null;){if(bP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(pf(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||bP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?c2(v,Q,D):u2(v,Q,D)}}function c2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?to(Q,v,D):wo(Q,v);else if(H!==4&&(v=v.child,v!==null))for(c2(v,D,Q),v=v.sibling;v!==null;)c2(v,D,Q),v=v.sibling}function u2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?Hi(Q,v,D):oi(Q,v);else if(H!==4&&(v=v.child,v!==null))for(u2(v,D,Q),v=v.sibling;v!==null;)u2(v,D,Q),v=v.sibling}function xP(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)DP(v,Q),ne?RA(V,Q.stateNode):vo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(ky(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function f2(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:Nh(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Bo(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,rs(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:Z&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,MA(D.containerInfo)));return;case 12:return;case 13:kP(D),zg(D);return;case 19:zg(D);return;case 17:return;case 23:case 24:SP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:Nh(3,D);return;case 12:return;case 13:kP(D),zg(D);return;case 19:zg(D);return;case 3:Z&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,MA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,FA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function kP(v){v.memoizedState!==null&&(E2=Dt(),F&&SP(v.child,!0))}function zg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new tM),D.forEach(function(H){var V=AM.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function rM(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ty=0,Ry=1,Fy=2,Zg=3,Ny=4;if(typeof Symbol==\"function\"&&Symbol.for){var Xg=Symbol.for;Ty=Xg(\"selector.component\"),Ry=Xg(\"selector.has_pseudo_class\"),Fy=Xg(\"selector.role\"),Zg=Xg(\"selector.test_id\"),Ny=Xg(\"selector.text\")}function Oy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps[\"data-testname\"]!=\"string\")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Df(v,D){switch(D.$$typeof){case Ty:if(v.type===D.value)return!0;break;case Ry:e:{D=D.value,v=[v,0];for(var Q=0;Q<v.length;){var H=v[Q++],V=v[Q++],ne=D[V];if(H.tag!==5||!Pr(H)){for(;ne!=null&&Df(H,ne);)V++,ne=D[V];if(V===D.length){D=!0;break e}else for(H=H.child;H!==null;)v.push(H,V),H=H.sibling}}D=!1}return D;case Fy:if(v.tag===5&&Ir(v.stateNode,D.value))return!0;break;case Ny:if((v.tag===5||v.tag===6)&&(v=gn(v),v!==null&&0<=v.indexOf(D.value)))return!0;break;case Zg:if(v.tag===5&&(v=v.memoizedProps[\"data-testname\"],typeof v==\"string\"&&v.toLowerCase()===D.value.toLowerCase()))return!0;break;default:throw Error(c(365,D))}return!1}function bf(v){switch(v.$$typeof){case Ty:return\"<\"+(g(v.value)||\"Unknown\")+\">\";case Ry:return\":has(\"+(bf(v)||\"\")+\")\";case Fy:return'[role=\"'+v.value+'\"]';case Ny:return'\"'+v.value+'\"';case Zg:return'[data-testname=\"'+v.value+'\"]';default:throw Error(c(365,v))}}function A2(v,D){var Q=[];v=[v,0];for(var H=0;H<v.length;){var V=v[H++],ne=v[H++],Se=D[ne];if(V.tag!==5||!Pr(V)){for(;Se!=null&&Df(V,Se);)ne++,Se=D[ne];if(ne===D.length)Q.push(V);else for(V=V.child;V!==null;)v.push(V,ne),V=V.sibling}}return Q}function p2(v,D){if(!qt)throw Error(c(363));v=Oy(v),v=A2(v,D),D=[],v=Array.from(v);for(var Q=0;Q<v.length;){var H=v[Q++];if(H.tag===5)Pr(H)||D.push(H.stateNode);else for(H=H.child;H!==null;)v.push(H),H=H.sibling}return D}var Ly=null;function nM(v){if(Ly===null)try{var D=(\"require\"+Math.random()).slice(0,7);Ly=(nD&&nD[D]).call(nD,\"timers\").setImmediate}catch{Ly=function(H){var V=new MessageChannel;V.port1.onmessage=H,V.port2.postMessage(void 0)}}return Ly(v)}var iM=Math.ceil,My=f.ReactCurrentDispatcher,h2=f.ReactCurrentOwner,g2=f.IsSomeRendererActing,xr=0,oo=null,Zi=null,Os=0,ep=0,d2=io(0),Bs=0,_y=null,Oh=0,$g=0,Lh=0,m2=0,y2=null,E2=0,I2=1/0;function Pf(){I2=Dt()+500}var sr=null,Uy=!1,C2=null,gc=null,xf=!1,ed=null,td=90,w2=[],B2=[],vu=null,rd=0,v2=null,Hy=-1,Su=0,jy=0,nd=null,id=!1;function To(){return xr&48?Dt():Hy!==-1?Hy:Hy=Dt()}function vs(v){if(v=v.mode,!(v&2))return 1;if(!(v&4))return tr()===99?1:2;if(Su===0&&(Su=Oh),my.transition!==0){jy!==0&&(jy=y2!==null?y2.pendingLanes:0),v=Su;var D=4186112&~jy;return D&=-D,D===0&&(v=4186112&~v,D=v&-v,D===0&&(D=8192)),D}return v=tr(),xr&4&&v===98?v=Mt(12,Su):(v=_A(v),v=Mt(v,Su)),v}function Rl(v,D,Q){if(50<rd)throw rd=0,v2=null,Error(c(185));if(v=qy(v,D),v===null)return null;ja(v,D,Q),v===oo&&(Lh|=D,Bs===4&&Mh(v,Os));var H=tr();D===1?xr&8&&!(xr&48)?S2(v):(da(v,Q),xr===0&&(Pf(),Tn())):(!(xr&4)||H!==98&&H!==99||(vu===null?vu=new Set([v]):vu.add(v)),da(v,Q)),y2=v}function qy(v,D){v.lanes|=D;var Q=v.alternate;for(Q!==null&&(Q.lanes|=D),Q=v,v=v.return;v!==null;)v.childLanes|=D,Q=v.alternate,Q!==null&&(Q.childLanes|=D),Q=v,v=v.return;return Q.tag===3?Q.stateNode:null}function da(v,D){for(var Q=v.callbackNode,H=v.suspendedLanes,V=v.pingedLanes,ne=v.expirationTimes,Se=v.pendingLanes;0<Se;){var Ue=31-ns(Se),At=1<<Ue,Gt=ne[Ue];if(Gt===-1){if(!(At&H)||At&V){Gt=D,ua(At);var vr=wn;ne[Ue]=10<=vr?Gt+250:6<=vr?Gt+5e3:-1}}else Gt<=D&&(v.expiredLanes|=At);Se&=~At}if(H=fa(v,v===oo?Os:0),D=wn,H===0)Q!==null&&(Q!==lr&&Cs(Q),v.callbackNode=null,v.callbackPriority=0);else{if(Q!==null){if(v.callbackPriority===D)return;Q!==lr&&Cs(Q)}D===15?(Q=S2.bind(null,v),Ie===null?(Ie=[Q],Oe=Li(Qn,Ga)):Ie.push(Q),Q=lr):D===14?Q=qi(99,S2.bind(null,v)):(Q=UA(D),Q=qi(Q,QP.bind(null,v))),v.callbackPriority=D,v.callbackNode=Q}}function QP(v){if(Hy=-1,jy=Su=0,xr&48)throw Error(c(327));var D=v.callbackNode;if(Du()&&v.callbackNode!==D)return null;var Q=fa(v,v===oo?Os:0);if(Q===0)return null;var H=Q,V=xr;xr|=16;var ne=NP();(oo!==v||Os!==H)&&(Pf(),_h(v,H));do try{aM();break}catch(Ue){FP(v,Ue)}while(!0);if(Ng(),My.current=ne,xr=V,Zi!==null?H=0:(oo=null,Os=0,H=Bs),Oh&Lh)_h(v,0);else if(H!==0){if(H===2&&(xr|=64,v.hydrate&&(v.hydrate=!1,Rs(v.containerInfo)),Q=vl(v),Q!==0&&(H=sd(v,Q))),H===1)throw D=_y,_h(v,0),Mh(v,Q),da(v,Dt()),D;switch(v.finishedWork=v.current.alternate,v.finishedLanes=Q,H){case 0:case 1:throw Error(c(345));case 2:tp(v);break;case 3:if(Mh(v,Q),(Q&62914560)===Q&&(H=E2+500-Dt(),10<H)){if(fa(v,0)!==0)break;if(V=v.suspendedLanes,(V&Q)!==Q){To(),v.pingedLanes|=v.suspendedLanes&V;break}v.timeoutHandle=x(tp.bind(null,v),H);break}tp(v);break;case 4:if(Mh(v,Q),(Q&4186112)===Q)break;for(H=v.eventTimes,V=-1;0<Q;){var Se=31-ns(Q);ne=1<<Se,Se=H[Se],Se>V&&(V=Se),Q&=~ne}if(Q=V,Q=Dt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*iM(Q/1960))-Q,10<Q){v.timeoutHandle=x(tp.bind(null,v),Q);break}tp(v);break;case 5:tp(v);break;default:throw Error(c(329))}}return da(v,Dt()),v.callbackNode===D?QP.bind(null,v):null}function Mh(v,D){for(D&=~m2,D&=~Lh,v.suspendedLanes|=D,v.pingedLanes&=~D,v=v.expirationTimes;0<D;){var Q=31-ns(D),H=1<<Q;v[Q]=-1,D&=~H}}function S2(v){if(xr&48)throw Error(c(327));if(Du(),v===oo&&v.expiredLanes&Os){var D=Os,Q=sd(v,D);Oh&Lh&&(D=fa(v,D),Q=sd(v,D))}else D=fa(v,0),Q=sd(v,D);if(v.tag!==0&&Q===2&&(xr|=64,v.hydrate&&(v.hydrate=!1,Rs(v.containerInfo)),D=vl(v),D!==0&&(Q=sd(v,D))),Q===1)throw Q=_y,_h(v,0),Mh(v,D),da(v,Dt()),Q;return v.finishedWork=v.current.alternate,v.finishedLanes=D,tp(v),da(v,Dt()),null}function sM(){if(vu!==null){var v=vu;vu=null,v.forEach(function(D){D.expiredLanes|=24&D.pendingLanes,da(D,Dt())})}Tn()}function TP(v,D){var Q=xr;xr|=1;try{return v(D)}finally{xr=Q,xr===0&&(Pf(),Tn())}}function RP(v,D){var Q=xr;if(Q&48)return v(D);xr|=1;try{if(v)return ai(99,v.bind(null,D))}finally{xr=Q,Tn()}}function Gy(v,D){xn(d2,ep),ep|=D,Oh|=D}function D2(){ep=d2.current,Rt(d2)}function _h(v,D){v.finishedWork=null,v.finishedLanes=0;var Q=v.timeoutHandle;if(Q!==b&&(v.timeoutHandle=b,w(Q)),Zi!==null)for(Q=Zi.return;Q!==null;){var H=Q;switch(H.tag){case 1:H=H.type.childContextTypes,H!=null&&hu();break;case 3:yu(),Rt(Oi),Rt(ji),Iu();break;case 5:wt(H);break;case 4:yu();break;case 13:Rt(gi);break;case 19:Rt(gi);break;case 10:Lg(H);break;case 23:case 24:D2()}Q=Q.return}oo=v,Zi=bu(v.current,null),Os=ep=Oh=D,Bs=0,_y=null,m2=Lh=$g=0}function FP(v,D){do{var Q=Zi;try{if(Ng(),Cf.current=kt,VA){for(var H=qn.memoizedState;H!==null;){var V=H.queue;V!==null&&(V.pending=null),H=H.next}VA=!1}if(Cu=0,xi=is=qn=null,wf=!1,h2.current=null,Q===null||Q.return===null){Bs=1,_y=D,Zi=null;break}e:{var ne=v,Se=Q.return,Ue=Q,At=D;if(D=Os,Ue.flags|=2048,Ue.firstEffect=Ue.lastEffect=null,At!==null&&typeof At==\"object\"&&typeof At.then==\"function\"){var Gt=At;if(!(Ue.mode&2)){var vr=Ue.alternate;vr?(Ue.updateQueue=vr.updateQueue,Ue.memoizedState=vr.memoizedState,Ue.lanes=vr.lanes):(Ue.updateQueue=null,Ue.memoizedState=null)}var Lr=(gi.current&1)!==0,Xt=Se;do{var zn;if(zn=Xt.tag===13){var mi=Xt.memoizedState;if(mi!==null)zn=mi.dehydrated!==null;else{var Za=Xt.memoizedProps;zn=Za.fallback===void 0?!1:Za.unstable_avoidThisFallback!==!0?!0:!Lr}}if(zn){var $e=Xt.updateQueue;if($e===null){var qe=new Set;qe.add(Gt),Xt.updateQueue=qe}else $e.add(Gt);if(!(Xt.mode&2)){if(Xt.flags|=64,Ue.flags|=16384,Ue.flags&=-2981,Ue.tag===1)if(Ue.alternate===null)Ue.tag=17;else{var pt=bl(-1,1);pt.tag=2,Pl(Ue,pt)}Ue.lanes|=1;break e}At=void 0,Ue=D;var Zt=ne.pingCache;if(Zt===null?(Zt=ne.pingCache=new eM,At=new Set,Zt.set(Gt,At)):(At=Zt.get(Gt),At===void 0&&(At=new Set,Zt.set(Gt,At))),!At.has(Ue)){At.add(Ue);var Sr=UP.bind(null,ne,Gt,Ue);Gt.then(Sr,Sr)}Xt.flags|=4096,Xt.lanes=D;break e}Xt=Xt.return}while(Xt!==null);At=Error((g(Ue.type)||\"A React component\")+` suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`)}Bs!==5&&(Bs=2),At=Vg(At,Ue),Xt=Se;do{switch(Xt.tag){case 3:ne=At,Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Xn=a2(Xt,ne,D);Iy(Xt,Xn);break e;case 1:ne=At;var kr=Xt.type,Rn=Xt.stateNode;if(!(Xt.flags&64)&&(typeof kr.getDerivedStateFromError==\"function\"||Rn!==null&&typeof Rn.componentDidCatch==\"function\"&&(gc===null||!gc.has(Rn)))){Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Un=Jg(Xt,ne,D);Iy(Xt,Un);break e}}Xt=Xt.return}while(Xt!==null)}LP(Q)}catch(zr){D=zr,Zi===Q&&Q!==null&&(Zi=Q=Q.return);continue}break}while(!0)}function NP(){var v=My.current;return My.current=kt,v===null?kt:v}function sd(v,D){var Q=xr;xr|=16;var H=NP();oo===v&&Os===D||_h(v,D);do try{oM();break}catch(V){FP(v,V)}while(!0);if(Ng(),xr=Q,My.current=H,Zi!==null)throw Error(c(261));return oo=null,Os=0,Bs}function oM(){for(;Zi!==null;)OP(Zi)}function aM(){for(;Zi!==null&&!Sl();)OP(Zi)}function OP(v){var D=HP(v.alternate,v,ep);v.memoizedProps=v.pendingProps,D===null?LP(v):Zi=D,h2.current=null}function LP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=$L(D),Q!==null){Q.flags&=2047,Zi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=XL(Q,D,ep),Q!==null){Zi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||ep&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1<D.flags&&(v.lastEffect!==null?v.lastEffect.nextEffect=D:v.firstEffect=D,v.lastEffect=D))}if(D=D.sibling,D!==null){Zi=D;return}Zi=D=v}while(D!==null);Bs===0&&(Bs=5)}function tp(v){var D=tr();return ai(99,lM.bind(null,v,D)),null}function lM(v,D){do Du();while(ed!==null);if(xr&48)throw Error(c(327));var Q=v.finishedWork;if(Q===null)return null;if(v.finishedWork=null,v.finishedLanes=0,Q===v.current)throw Error(c(177));v.callbackNode=null;var H=Q.lanes|Q.childLanes,V=H,ne=v.pendingLanes&~V;v.pendingLanes=V,v.suspendedLanes=0,v.pingedLanes=0,v.expiredLanes&=V,v.mutableReadLanes&=V,v.entangledLanes&=V,V=v.entanglements;for(var Se=v.eventTimes,Ue=v.expirationTimes;0<ne;){var At=31-ns(ne),Gt=1<<At;V[At]=0,Se[At]=-1,Ue[At]=-1,ne&=~Gt}if(vu!==null&&!(H&24)&&vu.has(v)&&vu.delete(v),v===oo&&(Zi=oo=null,Os=0),1<Q.flags?Q.lastEffect!==null?(Q.lastEffect.nextEffect=Q,H=Q.firstEffect):H=Q:H=Q.firstEffect,H!==null){V=xr,xr|=32,h2.current=null,nd=rt(v.containerInfo),id=!1,sr=H;do try{cM()}catch(qe){if(sr===null)throw Error(c(330));kf(sr,qe),sr=sr.nextEffect}while(sr!==null);nd=null,sr=H;do try{for(Se=v;sr!==null;){var vr=sr.flags;if(vr&16&&F&&pf(sr.stateNode),vr&128){var Lr=sr.alternate;if(Lr!==null){var Xt=Lr.ref;Xt!==null&&(typeof Xt==\"function\"?Xt(null):Xt.current=null)}}switch(vr&1038){case 2:PP(sr),sr.flags&=-3;break;case 6:PP(sr),sr.flags&=-3,f2(sr.alternate,sr);break;case 1024:sr.flags&=-1025;break;case 1028:sr.flags&=-1025,f2(sr.alternate,sr);break;case 4:f2(sr.alternate,sr);break;case 8:Ue=Se,ne=sr,F?xP(Ue,ne):DP(Ue,ne);var zn=ne.alternate;Qy(ne),zn!==null&&Qy(zn)}sr=sr.nextEffect}}catch(qe){if(sr===null)throw Error(c(330));kf(sr,qe),sr=sr.nextEffect}while(sr!==null);id&&lt(),Fe(v.containerInfo),v.current=Q,sr=H;do try{for(vr=v;sr!==null;){var mi=sr.flags;if(mi&36&&vP(vr,sr.alternate,sr),mi&128){Lr=void 0;var Za=sr.ref;if(Za!==null){var $e=sr.stateNode;switch(sr.tag){case 5:Lr=Re($e);break;default:Lr=$e}typeof Za==\"function\"?Za(Lr):Za.current=Lr}}sr=sr.nextEffect}}catch(qe){if(sr===null)throw Error(c(330));kf(sr,qe),sr=sr.nextEffect}while(sr!==null);sr=null,ee(),xr=V}else v.current=Q;if(xf)xf=!1,ed=v,td=D;else for(sr=H;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr.flags&8&&(mi=sr,mi.sibling=null,mi.stateNode=null),sr=D;if(H=v.pendingLanes,H===0&&(gc=null),H===1?v===v2?rd++:(rd=0,v2=v):rd=0,Q=Q.stateNode,Ha&&typeof Ha.onCommitFiberRoot==\"function\")try{Ha.onCommitFiberRoot(Xe,Q,void 0,(Q.current.flags&64)===64)}catch{}if(da(v,Dt()),Uy)throw Uy=!1,v=C2,C2=null,v;return xr&8||Tn(),null}function cM(){for(;sr!==null;){var v=sr.alternate;id||nd===null||(sr.flags&8?De(sr,nd)&&(id=!0,Te()):sr.tag===13&&rM(v,sr)&&De(sr,nd)&&(id=!0,Te()));var D=sr.flags;D&256&&xy(v,sr),!(D&512)||xf||(xf=!0,qi(97,function(){return Du(),null})),sr=sr.nextEffect}}function Du(){if(td!==90){var v=97<td?97:td;return td=90,ai(v,fM)}return!1}function uM(v,D){w2.push(D,v),xf||(xf=!0,qi(97,function(){return Du(),null}))}function MP(v,D){B2.push(D,v),xf||(xf=!0,qi(97,function(){return Du(),null}))}function fM(){if(ed===null)return!1;var v=ed;if(ed=null,xr&48)throw Error(c(331));var D=xr;xr|=32;var Q=B2;B2=[];for(var H=0;H<Q.length;H+=2){var V=Q[H],ne=Q[H+1],Se=V.destroy;if(V.destroy=void 0,typeof Se==\"function\")try{Se()}catch(At){if(ne===null)throw Error(c(330));kf(ne,At)}}for(Q=w2,w2=[],H=0;H<Q.length;H+=2){V=Q[H],ne=Q[H+1];try{var Ue=V.create;V.destroy=Ue()}catch(At){if(ne===null)throw Error(c(330));kf(ne,At)}}for(Ue=v.current.firstEffect;Ue!==null;)v=Ue.nextEffect,Ue.nextEffect=null,Ue.flags&8&&(Ue.sibling=null,Ue.stateNode=null),Ue=v;return xr=D,Tn(),!0}function _P(v,D,Q){D=Vg(Q,D),D=a2(v,D,1),Pl(v,D),D=To(),v=qy(v,1),v!==null&&(ja(v,1,D),da(v,D))}function kf(v,D){if(v.tag===3)_P(v,v,D);else for(var Q=v.return;Q!==null;){if(Q.tag===3){_P(Q,v,D);break}else if(Q.tag===1){var H=Q.stateNode;if(typeof Q.type.getDerivedStateFromError==\"function\"||typeof H.componentDidCatch==\"function\"&&(gc===null||!gc.has(H))){v=Vg(D,v);var V=Jg(Q,v,1);if(Pl(Q,V),V=To(),Q=qy(Q,1),Q!==null)ja(Q,1,V),da(Q,V);else if(typeof H.componentDidCatch==\"function\"&&(gc===null||!gc.has(H)))try{H.componentDidCatch(D,v)}catch{}break}}Q=Q.return}}function UP(v,D,Q){var H=v.pingCache;H!==null&&H.delete(D),D=To(),v.pingedLanes|=v.suspendedLanes&Q,oo===v&&(Os&Q)===Q&&(Bs===4||Bs===3&&(Os&62914560)===Os&&500>Dt()-E2?_h(v,0):m2|=Q),da(v,D)}function AM(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Su===0&&(Su=Oh),D=kn(62914560&~Su),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=To(),v=qy(v,D),v!==null&&(ja(v,D,Q),da(v,Q))}var HP;HP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Oi.current)Ke=!0;else if(Q&H)Ke=!!(v.flags&16384);else{switch(Ke=!1,D.tag){case 3:by(D),qg();break;case 5:If(D);break;case 1:Jn(D.type)&&Ma(D);break;case 4:Ug(D,D.stateNode.containerInfo);break;case 10:Og(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?s2(v,D,Q):(xn(gi,gi.current&1),D=Gn(v,D,Q),D!==null?D.sibling:null);xn(gi,gi.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return BP(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),xn(gi,gi.current),H)break;return null;case 23:case 24:return D.lanes=0,di(v,D,Q)}return Gn(v,D,Q)}else Ke=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=dn(D,ji.current),mf(D,Q),V=Wg(null,D,H,v,V,Q),D.flags|=1,typeof V==\"object\"&&V!==null&&typeof V.render==\"function\"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Jn(H)){var ne=!0;Ma(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Dh(D);var Se=H.getDerivedStateFromProps;typeof Se==\"function\"&&jA(D,H,Se,v),V.updater=qA,D.stateNode=V,V._reactInternals=D,xo(D,H,v,Q),D=i2(null,D,H,!0,ne,Q)}else D.tag=0,ft(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=hM(V),v=bo(V,v),ne){case 0:D=zA(null,D,V,v,Q);break e;case 1:D=wP(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=Br(null,D,V,bo(V.type,v),H,Q);break e}throw Error(c(306,V,\"\"))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:bo(H,V),zA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:bo(H,V),wP(v,D,H,V,Q);case 3:if(by(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Mg(v,D),HA(D,H,null,Q),H=D.memoizedState.element,H===V)qg(),D=Gn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(Z?(pa=fu(D.stateNode.containerInfo),Ya=D,ne=Va=!0):ne=!1),ne){if(Z&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V<v.length;V+=2)ne=v[V],Se=v[V+1],y?ne._workInProgressVersionPrimary=Se:ne._workInProgressVersionSecondary=Se,Eu.push(ne);for(Q=n2(D,null,H,Q),D.child=Q;Q;)Q.flags=Q.flags&-3|1024,Q=Q.sibling}else ft(v,D,H,Q),qg();D=D.child}return D;case 5:return If(D),v===null&&jg(D),H=D.type,V=D.pendingProps,ne=v!==null?v.memoizedProps:null,Se=V.children,it(H,V)?Se=null:ne!==null&&it(H,ne)&&(D.flags|=16),ws(v,D),ft(v,D,Se,Q),D.child;case 6:return v===null&&jg(D),null;case 13:return s2(v,D,Q);case 4:return Ug(D,D.stateNode.containerInfo),H=D.pendingProps,v===null?D.child=_g(D,null,H,Q):ft(v,D,H,Q),D.child;case 11:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:bo(H,V),dr(v,D,H,V,Q);case 7:return ft(v,D,D.pendingProps,Q),D.child;case 8:return ft(v,D,D.pendingProps.children,Q),D.child;case 12:return ft(v,D,D.pendingProps.children,Q),D.child;case 10:e:{if(H=D.type._context,V=D.pendingProps,Se=D.memoizedProps,ne=V.value,Og(D,ne),Se!==null){var Ue=Se.value;if(ne=Do(Ue,ne)?0:(typeof H._calculateChangedBits==\"function\"?H._calculateChangedBits(Ue,ne):1073741823)|0,ne===0){if(Se.children===V.children&&!Oi.current){D=Gn(v,D,Q);break e}}else for(Ue=D.child,Ue!==null&&(Ue.return=D);Ue!==null;){var At=Ue.dependencies;if(At!==null){Se=Ue.child;for(var Gt=At.firstContext;Gt!==null;){if(Gt.context===H&&Gt.observedBits&ne){Ue.tag===1&&(Gt=bl(-1,Q&-Q),Gt.tag=2,Pl(Ue,Gt)),Ue.lanes|=Q,Gt=Ue.alternate,Gt!==null&&(Gt.lanes|=Q),Ey(Ue.return,Q),At.lanes|=Q;break}Gt=Gt.next}}else Se=Ue.tag===10&&Ue.type===D.type?null:Ue.child;if(Se!==null)Se.return=Ue;else for(Se=Ue;Se!==null;){if(Se===D){Se=null;break}if(Ue=Se.sibling,Ue!==null){Ue.return=Se.return,Se=Ue;break}Se=Se.return}Ue=Se}}ft(v,D,V.children,Q),D=D.child}return D;case 9:return V=D.type,ne=D.pendingProps,H=ne.children,mf(D,Q),V=Po(V,ne.unstable_observedBits),H=H(V),D.flags|=1,ft(v,D,H,Q),D.child;case 14:return V=D.type,ne=bo(V,D.pendingProps),ne=bo(V.type,ne),Br(v,D,V,ne,H,Q);case 15:return _n(v,D,D.type,D.pendingProps,H,Q);case 17:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:bo(H,V),v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),D.tag=1,Jn(H)?(v=!0,Ma(D)):v=!1,mf(D,Q),xt(D,H,V),xo(D,H,V,Q),i2(null,D,H,!0,v,Q);case 19:return BP(v,D,Q);case 23:return di(v,D,Q);case 24:return di(v,D,Q)}throw Error(c(156,D.tag))};var Wy={current:!1},Ls=n.unstable_flushAllWithoutAsserting,jP=typeof Ls==\"function\";function b2(){if(Ls!==void 0)return Ls();for(var v=!1;Du();)v=!0;return v}function ma(v){try{b2(),nM(function(){b2()?ma(v):v()})}catch(D){v(D)}}var Ja=0,Yy=!1;function pM(v,D,Q,H){this.tag=v,this.key=Q,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=H,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function za(v,D,Q,H){return new pM(v,D,Q,H)}function P2(v){return v=v.prototype,!(!v||!v.isReactComponent)}function hM(v){if(typeof v==\"function\")return P2(v)?1:0;if(v!=null){if(v=v.$$typeof,v===R)return 11;if(v===W)return 14}return 2}function bu(v,D){var Q=v.alternate;return Q===null?(Q=za(v.tag,D,v.key,v.mode),Q.elementType=v.elementType,Q.type=v.type,Q.stateNode=v.stateNode,Q.alternate=v,v.alternate=Q):(Q.pendingProps=D,Q.type=v.type,Q.flags=0,Q.nextEffect=null,Q.firstEffect=null,Q.lastEffect=null),Q.childLanes=v.childLanes,Q.lanes=v.lanes,Q.child=v.child,Q.memoizedProps=v.memoizedProps,Q.memoizedState=v.memoizedState,Q.updateQueue=v.updateQueue,D=v.dependencies,Q.dependencies=D===null?null:{lanes:D.lanes,firstContext:D.firstContext},Q.sibling=v.sibling,Q.index=v.index,Q.ref=v.ref,Q}function od(v,D,Q,H,V,ne){var Se=2;if(H=v,typeof v==\"function\")P2(v)&&(Se=1);else if(typeof v==\"string\")Se=5;else e:switch(v){case E:return Qf(Q.children,V,ne,D);case Ae:Se=8,V|=16;break;case C:Se=8,V|=1;break;case S:return v=za(12,Q,D,V|8),v.elementType=S,v.type=S,v.lanes=ne,v;case N:return v=za(13,Q,D,V),v.type=N,v.elementType=N,v.lanes=ne,v;case U:return v=za(19,Q,D,V),v.elementType=U,v.lanes=ne,v;case ce:return x2(Q,V,ne,D);case me:return v=za(24,Q,D,V),v.elementType=me,v.lanes=ne,v;default:if(typeof v==\"object\"&&v!==null)switch(v.$$typeof){case P:Se=10;break e;case I:Se=9;break e;case R:Se=11;break e;case W:Se=14;break e;case te:Se=16,H=null;break e;case ie:Se=22;break e}throw Error(c(130,v==null?v:typeof v,\"\"))}return D=za(Se,Q,D,V),D.elementType=v,D.type=H,D.lanes=ne,D}function Qf(v,D,Q,H){return v=za(7,v,H,D),v.lanes=Q,v}function x2(v,D,Q,H){return v=za(23,v,H,D),v.elementType=ce,v.lanes=Q,v}function k2(v,D,Q){return v=za(6,v,null,D),v.lanes=Q,v}function Ro(v,D,Q){return D=za(4,v.children!==null?v.children:[],v.key,D),D.lanes=Q,D.stateNode={containerInfo:v.containerInfo,pendingChildren:null,implementation:v.implementation},D}function gM(v,D,Q){this.tag=D,this.containerInfo=v,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=b,this.pendingContext=this.context=null,this.hydrate=Q,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Aa(0),this.expirationTimes=Aa(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Aa(0),Z&&(this.mutableSourceEagerHydrationData=null)}function qP(v){var D=v._reactInternals;if(D===void 0)throw typeof v.render==\"function\"?Error(c(188)):Error(c(268,Object.keys(v)));return v=se(D),v===null?null:v.stateNode}function GP(v,D){if(v=v.memoizedState,v!==null&&v.dehydrated!==null){var Q=v.retryLane;v.retryLane=Q!==0&&Q<D?Q:D}}function Vy(v,D){GP(v,D),(v=v.alternate)&&GP(v,D)}function dM(v){return v=se(v),v===null?null:v.stateNode}function mM(){return null}return r.IsThisRendererActing=Wy,r.act=function(v){function D(){Ja--,g2.current=Q,Wy.current=H}Yy===!1&&(Yy=!0,console.error(\"act(...) is not supported in production builds of React, and might not behave as expected.\")),Ja++;var Q=g2.current,H=Wy.current;g2.current=!0,Wy.current=!0;try{var V=TP(v)}catch(ne){throw D(),ne}if(V!==null&&typeof V==\"object\"&&typeof V.then==\"function\")return{then:function(ne,Se){V.then(function(){1<Ja||jP===!0&&Q===!0?(D(),ne()):ma(function(Ue){D(),Ue?Se(Ue):ne()})},function(Ue){D(),Se(Ue)})}};try{Ja!==1||jP!==!1&&Q!==!1||b2(),D()}catch(ne){throw D(),ne}return{then:function(ne){ne()}}},r.attemptContinuousHydration=function(v){if(v.tag===13){var D=To();Rl(v,67108864,D),Vy(v,67108864)}},r.attemptHydrationAtCurrentPriority=function(v){if(v.tag===13){var D=To(),Q=vs(v);Rl(v,Q,D),Vy(v,Q)}},r.attemptSynchronousHydration=function(v){switch(v.tag){case 3:var D=v.stateNode;if(D.hydrate){var Q=ua(D.pendingLanes);D.expiredLanes|=Q&D.pendingLanes,da(D,Dt()),!(xr&48)&&(Pf(),Tn())}break;case 13:var H=To();RP(function(){return Rl(v,1,H)}),Vy(v,4)}},r.attemptUserBlockingHydration=function(v){if(v.tag===13){var D=To();Rl(v,4,D),Vy(v,4)}},r.batchedEventUpdates=function(v,D){var Q=xr;xr|=2;try{return v(D)}finally{xr=Q,xr===0&&(Pf(),Tn())}},r.batchedUpdates=TP,r.createComponentSelector=function(v){return{$$typeof:Ty,value:v}},r.createContainer=function(v,D,Q){return v=new gM(v,D,Q),D=za(3,null,null,D===2?7:D===1?3:0),v.current=D,D.stateNode=v,Dh(D),v},r.createHasPsuedoClassSelector=function(v){return{$$typeof:Ry,value:v}},r.createPortal=function(v,D,Q){var H=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:h,key:H==null?null:\"\"+H,children:v,containerInfo:D,implementation:Q}},r.createRoleSelector=function(v){return{$$typeof:Fy,value:v}},r.createTestNameSelector=function(v){return{$$typeof:Zg,value:v}},r.createTextSelector=function(v){return{$$typeof:Ny,value:v}},r.deferredUpdates=function(v){return ai(97,v)},r.discreteUpdates=function(v,D,Q,H,V){var ne=xr;xr|=4;try{return ai(98,v.bind(null,D,Q,H,V))}finally{xr=ne,xr===0&&(Pf(),Tn())}},r.findAllNodes=p2,r.findBoundingRects=function(v,D){if(!qt)throw Error(c(363));D=p2(v,D),v=[];for(var Q=0;Q<D.length;Q++)v.push(Pt(D[Q]));for(D=v.length-1;0<D;D--){Q=v[D];for(var H=Q.x,V=H+Q.width,ne=Q.y,Se=ne+Q.height,Ue=D-1;0<=Ue;Ue--)if(D!==Ue){var At=v[Ue],Gt=At.x,vr=Gt+At.width,Lr=At.y,Xt=Lr+At.height;if(H>=Gt&&ne>=Lr&&V<=vr&&Se<=Xt){v.splice(D,1);break}else if(H!==Gt||Q.width!==At.width||Xt<ne||Lr>Se){if(!(ne!==Lr||Q.height!==At.height||vr<H||Gt>V)){Gt>H&&(At.width+=Gt-H,At.x=H),vr<V&&(At.width=V-Gt),v.splice(D,1);break}}else{Lr>ne&&(At.height+=Lr-ne,At.y=ne),Xt<Se&&(At.height=Se-Lr),v.splice(D,1);break}}}return v},r.findHostInstance=qP,r.findHostInstanceWithNoPortals=function(v){return v=X(v),v===null?null:v.tag===20?v.stateNode.instance:v.stateNode},r.findHostInstanceWithWarning=function(v){return qP(v)},r.flushControlled=function(v){var D=xr;xr|=1;try{ai(99,v)}finally{xr=D,xr===0&&(Pf(),Tn())}},r.flushDiscreteUpdates=function(){!(xr&49)&&(sM(),Du())},r.flushPassiveEffects=Du,r.flushSync=RP,r.focusWithin=function(v,D){if(!qt)throw Error(c(363));for(v=Oy(v),D=A2(v,D),D=Array.from(D),v=0;v<D.length;){var Q=D[v++];if(!Pr(Q)){if(Q.tag===5&&Nr(Q.stateNode))return!0;for(Q=Q.child;Q!==null;)D.push(Q),Q=Q.sibling}}return!1},r.getCurrentUpdateLanePriority=function(){return cc},r.getFindAllNodesFailureDescription=function(v,D){if(!qt)throw Error(c(363));var Q=0,H=[];v=[Oy(v),0];for(var V=0;V<v.length;){var ne=v[V++],Se=v[V++],Ue=D[Se];if((ne.tag!==5||!Pr(ne))&&(Df(ne,Ue)&&(H.push(bf(Ue)),Se++,Se>Q&&(Q=Se)),Se<D.length))for(ne=ne.child;ne!==null;)v.push(ne,Se),ne=ne.sibling}if(Q<D.length){for(v=[];Q<D.length;Q++)v.push(bf(D[Q]));return`findAllNodes was able to match part of the selector:\n  `+(H.join(\" > \")+`\n\nNo matching component was found for:\n  `)+v.join(\" > \")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Re(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:dM,findFiberByHostInstance:v.findFiberByHostInstance||mM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{Xe=D.inject(v),Ha=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=p2(v,D);var V=nn(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=cc;try{return cc=v,D()}finally{cc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(Pf(),Tn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=To(),Se=vs(V);e:if(Q){Q=Q._reactInternals;t:{if(we(Q)!==Q||Q.tag!==1)throw Error(c(170));var Ue=Q;do{switch(Ue.tag){case 3:Ue=Ue.stateNode.context;break t;case 1:if(Jn(Ue.type)){Ue=Ue.stateNode.__reactInternalMemoizedMergedChildContext;break t}}Ue=Ue.return}while(Ue!==null);throw Error(c(171))}if(Q.tag===1){var At=Q.type;if(Jn(At)){Q=La(Q,At,Ue);break e}}Q=Ue}else Q=ca;return D.context===null?D.context=Q:D.pendingContext=Q,D=bl(ne,Se),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),Pl(V,D),Rl(V,Se,ne),Se},r}});var UDe=L((Ghr,_De)=>{\"use strict\";_De.exports=MDe()});var jDe=L((Whr,HDe)=>{\"use strict\";var zPt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};HDe.exports=zPt});var YDe=L((Yhr,WDe)=>{\"use strict\";var ZPt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},LF=function(){function t(e,r){for(var s=0;s<r.length;s++){var a=r[s];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,s){return r&&t(e.prototype,r),s&&t(e,s),e}}();function DW(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function bW(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var rf=jDe(),XPt=function(){function t(e,r,s,a,n,c){bW(this,t),this.left=e,this.right=r,this.top=s,this.bottom=a,this.width=n,this.height=c}return LF(t,[{key:\"fromJS\",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:\"toString\",value:function(){return\"<Layout#\"+this.left+\":\"+this.right+\";\"+this.top+\":\"+this.bottom+\";\"+this.width+\":\"+this.height+\">\"}}]),t}(),qDe=function(){LF(t,null,[{key:\"fromJS\",value:function(r){var s=r.width,a=r.height;return new t(s,a)}}]);function t(e,r){bW(this,t),this.width=e,this.height=r}return LF(t,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),t}(),GDe=function(){function t(e,r){bW(this,t),this.unit=e,this.value=r}return LF(t,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case rf.UNIT_POINT:return String(this.value);case rf.UNIT_PERCENT:return this.value+\"%\";case rf.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),t}();WDe.exports=function(t,e){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S<E;S++)C[S]=arguments[S];return p.call.apply(p,[this,h].concat(C))}}for(var s=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var f,p=s[n],h=(f={},DW(f,rf.UNIT_POINT,e.Node.prototype[p]),DW(f,rf.UNIT_PERCENT,e.Node.prototype[p+\"Percent\"]),DW(f,rf.UNIT_AUTO,e.Node.prototype[p+\"Auto\"]),f);r(e.Node.prototype,p,function(E){for(var C=arguments.length,S=Array(C>1?C-1:0),P=1;P<C;P++)S[P-1]=arguments[P];var I=S.pop(),R=void 0,N=void 0;if(I===\"auto\")R=rf.UNIT_AUTO,N=void 0;else if(I instanceof GDe)R=I.unit,N=I.valueOf();else if(R=typeof I==\"string\"&&I.endsWith(\"%\")?rf.UNIT_PERCENT:rf.UNIT_POINT,N=parseFloat(I),!Number.isNaN(I)&&Number.isNaN(N))throw new Error(\"Invalid value \"+I+\" for \"+p);if(!h[R])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+I+\"'\");if(N!==void 0){var U;return(U=h[R]).call.apply(U,[this].concat(S,[N]))}else{var W;return(W=h[R]).call.apply(W,[this].concat(S))}})},n=0;n<s.length;n++)a();return r(e.Config.prototype,\"free\",function(){e.Config.destroy(this)}),r(e.Node,\"create\",function(c,f){return f?e.Node.createWithConfig(f):e.Node.createDefault()}),r(e.Node.prototype,\"free\",function(){e.Node.destroy(this)}),r(e.Node.prototype,\"freeRecursive\",function(){for(var c=0,f=this.getChildCount();c<f;++c)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,\"setMeasureFunc\",function(c,f){return f?c.call(this,function(){return qDe.fromJS(f.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,\"calculateLayout\",function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:rf.DIRECTION_LTR;return c.call(this,f,p,h)}),ZPt({Config:e.Config,Node:e.Node,Layout:t(\"Layout\",XPt),Size:t(\"Size\",qDe),Value:t(\"Value\",GDe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},rf)}});var VDe=L((exports,module)=>{(function(t,e){typeof define==\"function\"&&define.amd?define([],function(){return e}):typeof module==\"object\"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module==\"function\"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall(\"nbind_init\")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<\"u\"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT===\"WEB\")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT===\"WORKER\")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT===\"NODE\")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT===\"SHELL\")ENVIRONMENT_IS_SHELL=!0;else throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else ENVIRONMENT_IS_WEB=typeof window==\"object\",ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\",ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof ye==\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}(\"\")),nodePath||(nodePath={}(\"\")),e=nodePath.normalize(e);var s=nodeFS.readFileSync(e);return r?s:s.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"):Module.thisProgram=\"unknown-program\"),Module.arguments=process.argv.slice(2),typeof module<\"u\"&&(module.exports=Module),Module.inspect=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<\"u\"&&(Module.printErr=printErr),typeof read<\"u\"?Module.read=read:Module.read=function(){throw\"no read() available\"},Module.readBinary=function(e){if(typeof readbuffer==\"function\")return new Uint8Array(readbuffer(e));var r=read(e,\"binary\");return assert(typeof r==\"object\"),r},typeof scriptArgs<\"u\"?Module.arguments=scriptArgs:typeof arguments<\"u\"&&(Module.arguments=arguments),typeof quit==\"function\"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,s){var a=new XMLHttpRequest;a.open(\"GET\",e,!0),a.responseType=\"arraybuffer\",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<\"u\"&&(Module.arguments=arguments),typeof console<\"u\")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<\"u\"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>\"u\"&&(Module.setWindowTitle=function(t){document.title=t})}else throw\"Unknown runtime environment. Where are we?\";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(t[t.length-1]===\"*\")return Runtime.QUANTUM_SIZE;if(t[0]===\"i\"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e===\"double\"||e===\"i64\"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t==\"i64\"||t==\"double\")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module[\"dynCall_\"+t].apply(null,[e].concat(r)):Module[\"dynCall_\"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var s=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort(\"Assertion failed: \"+e)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(t){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,s,a,n){var c=getCFunc(e),f=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[s[h]];E?(p===0&&(p=Runtime.stackSave()),f[h]=E(a[h])):f[h]=a[h]}var C=c.apply(null,f);if(r===\"string\"&&(C=Pointer_stringify(C)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return C};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t===\"number\"}),numericRet=returnType!==\"string\";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return\"$\"+e}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!==\"number\"){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,s){switch(r=r||\"i8\",r.charAt(r.length-1)===\"*\"&&(r=\"i32\"),r){case\"i1\":HEAP8[t>>0]=e;break;case\"i8\":HEAP8[t>>0]=e;break;case\"i16\":HEAP16[t>>1]=e;break;case\"i32\":HEAP32[t>>2]=e;break;case\"i64\":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case\"float\":HEAPF32[t>>2]=e;break;case\"double\":HEAPF64[t>>3]=e;break;default:abort(\"invalid type for setValue: \"+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||\"i8\",e.charAt(e.length-1)===\"*\"&&(e=\"i32\"),e){case\"i1\":return HEAP8[t>>0];case\"i8\":return HEAP8[t>>0];case\"i16\":return HEAP16[t>>1];case\"i32\":return HEAP32[t>>2];case\"i64\":return HEAP32[t>>2];case\"float\":return HEAPF32[t>>2];case\"double\":return HEAPF64[t>>3];default:abort(\"invalid type for setValue: \"+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,s){var a,n;typeof t==\"number\"?(a=!0,n=t):(a=!1,n=t.length);var c=typeof e==\"string\"?e:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:e.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s<p;s+=4)HEAP32[s>>2]=0;for(p=f+n;s<p;)HEAP8[s++>>0]=0;return f}if(c===\"i8\")return t.subarray||t.slice?HEAPU8.set(t,f):HEAPU8.set(new Uint8Array(t),f),f;for(var h=0,E,C,S;h<n;){var P=t[h];if(typeof P==\"function\"&&(P=Runtime.getFunctionIndex(P)),E=c||e[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(f+h,P,E),S!==E&&(C=Runtime.getNativeTypeSize(E),S=E),h+=C}return f}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return\"\";for(var r=0,s,a=0;s=HEAPU8[t+a>>0],r|=s,!(s==0&&!e||(a++,e&&a==e)););e||(e=a);var n=\"\";if(r<128){for(var c=1024,f;e>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,c))),n=n?n+f:f,t+=c,e-=c;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e=\"\";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var s,a,n,c,f,p,h=\"\";;){if(s=t[e++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=t[e++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=t[e++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=t[e++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=t[e++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=t[e++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c<t.length;++c){var f=t.charCodeAt(c);if(f>=55296&&f<=57343&&(f=65536+((f&1023)<<10)|t.charCodeAt(++c)&1023),f<=127){if(r>=n)break;e[r++]=f}else if(f<=2047){if(r+1>=n)break;e[r++]=192|f>>6,e[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;e[r++]=224|f>>12,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;e[r++]=240|f>>18,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;e[r++]=248|f>>24,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else{if(r+5>=n)break;e[r++]=252|f>>30,e[r++]=128|f>>24&63,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var s=t.charCodeAt(r);s>=55296&&s<=57343&&(s=65536+((s&1023)<<10)|t.charCodeAt(++r)&1023),s<=127?++e:s<=2047?e+=2:s<=65535?e+=3:s<=2097151?e+=4:s<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=e(a,0,0,n);if(getValue(n,\"i32\")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return t}return Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"),t}function demangleAll(t){var e=/__Z[\\w\\d_]+/g;return t.replace(e,function(r){var s=demangle(r);return r===s?r:r+\" [\"+s+\"]\"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return\"(no stack trace available)\"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=`\n`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e==\"function\"){e();continue}var r=e.func;typeof r==\"number\"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var s=r>0?r:lengthBytesUTF8(t)+1,a=new Array(s),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var s=t[r];s>255&&(s&=255),e.push(String.fromCharCode(s))}return e.join(\"\")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var s,a;r&&(a=e+lengthBytesUTF8(t),s=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var s=0;s<t.length;++s)HEAP8[e++>>0]=t.charCodeAt(s);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var s=e>>>16,a=e&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,s,a,n,c,f){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,s,a,n,c,f){return ASM_CONSTS[t](e,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiidddddd(t,e,r,s,a,n,c,f,p){return ASM_CONSTS[t](e,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(t,e,r,s,a,n,c){return ASM_CONSTS[t](e,r,s,a,n,c)}function _emscripten_asm_const_iiii(t,e,r,s){return ASM_CONSTS[t](e,r,s)}function _emscripten_asm_const_iiiid(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiiiii(t,e,r,s,a,n){return ASM_CONSTS[t](e,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr(\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\"),abort(-1)}function __decorate(t,e,r,s){var a=arguments.length,n=a<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,r):s,c;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(t,e,r,s);else for(var f=t.length-1;f>=0;f--)(c=t[f])&&(n=(a<3?c(n):a>3?c(e,r,n):c(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,s){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method=\"timeout\";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method=\"rAF\";else if(t==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,\"*\")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\"),Browser.mainLoop.func=t,Browser.mainLoop.arg=s;var n;typeof s<\"u\"?n=function(){Module.dynCall_vi(t,s)}:n=function(){Module.dynCall_v(t)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),c<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(c<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method===\"timeout\"&&Module.ctx&&(Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\"),Browser.mainLoop.method=\"\"),Browser.mainLoop.runIter(n),!(c<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL==\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw\"SimulateInfiniteLoop\"}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||\"Please wait...\",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+\" (\"+(r-e)+\"/\"+r+\")\"):Module.setStatus(t):Module.setStatus(\"\")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r==\"object\"&&r.stack&&Module.printErr(\"exception thrown: \"+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder<\"u\"?MozBlobBuilder:typeof WebKitBlobBuilder<\"u\"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log(\"warning: no BlobBuilder\"),Browser.URLObject=typeof window<\"u\"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>\"u\"&&(console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\"),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(P){Runtime.warnOnce(\"Blob constructor present but fails: \"+P+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,\"Image \"+c+\" could not be decoded\");var I=document.createElement(\"canvas\");I.width=S.width,I.height=S.height;var R=I.getContext(\"2d\");R.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log(\"Image \"+C+\" could not be decoded\"),p&&p()},S.src=C},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}},e.handle=function(n,c,f,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[c]=R,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var P=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener(\"canplaythrough\",function(){E(I)},!1),I.onerror=function(N){if(h)return;console.log(\"warning: browser could not fully decode audio \"+c+\", trying slower base64 approach\");function U(W){for(var te=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",ie=\"=\",Ae=\"\",ce=0,me=0,pe=0;pe<W.length;pe++)for(ce=ce<<8|W[pe],me+=8;me>=6;){var Be=ce>>me-6&63;me-=6,Ae+=te[Be]}return me==2?(Ae+=te[(ce&3)<<4],Ae+=ie+ie):me==4&&(Ae+=te[(ce&15)<<2],Ae+=ie),Ae}I.src=\"data:audio/x-\"+c.substr(-3)+\";base64,\"+U(n),E(I)},I.src=P,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener(\"pointerlockchange\",r,!1),document.addEventListener(\"mozpointerlockchange\",r,!1),document.addEventListener(\"webkitpointerlockchange\",r,!1),document.addEventListener(\"mspointerlockchange\",r,!1),Module.elementPointerLock&&s.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,s){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(t,c),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext(\"2d\");return a?(r&&(e||assert(typeof GLctx>\"u\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>\"u\"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>\"u\"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>\"u\"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener(\"fullscreenchange\",a,!1),document.addEventListener(\"mozfullscreenchange\",a,!1),document.addEventListener(\"webkitfullscreenchange\",a,!1),document.addEventListener(\"MSFullscreenChange\",a,!1));var n=document.createElement(\"div\");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\"),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>\"u\"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:\"image/jpeg\",jpeg:\"image/jpeg\",png:\"image/png\",bmp:\"image/bmp\",ogg:\"audio/ogg\",wav:\"audio/wav\",mp3:\"audio/mpeg\"}[t.substr(t.lastIndexOf(\".\")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case\"DOMMouseScroll\":e=t.detail;break;case\"mousewheel\":e=t.wheelDelta;break;case\"wheel\":e=t.deltaY;break;default:throw\"unrecognized mouse wheel event: \"+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!=\"mousemove\"&&\"mozMovementX\"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<\"u\"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<\"u\"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<\"u\"?window.scrollY:window.pageYOffset;if(t.type===\"touchstart\"||t.type===\"touchend\"||t.type===\"touchmove\"){var c=t.touch;if(c===void 0)return;var f=c.pageX-(a+e.left),p=c.pageY-(n+e.top);f=f*(r/e.width),p=p*(s/e.height);var h={x:f,y:p};if(t.type===\"touchstart\")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(t.type===\"touchend\"||t.type===\"touchmove\"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=t.pageX-(a+e.left),S=t.pageY-(n+e.top);C=C*(r/e.width),S=S*(s/e.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(t,e,r,s){var a=s?\"\":\"al \"+t;Module.readAsync(t,function(n){assert(n,'Loading data file \"'+t+'\" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file \"'+t+'\" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var s=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a<Module.forcedAspectRatio?s=Math.round(a*Module.forcedAspectRatio):a=Math.round(s/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/s,screen.height/a);s=Math.round(s*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=s&&(t.width=s),t.height!=a&&(t.height=a),typeof t.style<\"u\"&&(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<\"u\"&&(s!=e||a!=r?(t.style.setProperty(\"width\",s+\"px\",\"important\"),t.style.setProperty(\"height\",a+\"px\",\"important\")):(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>\"u\"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>\"u\"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function r(p,h,E,C,S,P){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p=\"X const\")}var R;return P?R=E.replace(\"X\",p).replace(\"Y\",S):R=p.replace(\"X\",E).replace(\"Y\",S),R.replace(/([*&]) (?=[*&])/g,\"$1\")}function s(p,h,E,C,S){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(C?\" with flag \"+C:\"\")+\" in \"+S)}function a(p,h,E,C,S,P,I,R){P===void 0&&(P=\"X\"),R===void 0&&(R=1);var N=E(p);if(N)return N;var U=C(p),W=U.placeholderFlag,te=e[W];I&&te&&(P=r(I[2],I[0],P,te[0],\"?\",!0));var ie;W==0&&(ie=\"Unbound\"),W>=10&&(ie=\"Corrupt\"),R>20&&(ie=\"Deeply nested\"),ie&&s(ie,p,P,W,S||\"?\");var Ae=U.paramList[0],ce=a(Ae,h,E,C,S,P,te,R+1),me,pe={flags:te[0],id:p,name:\"\",paramList:[ce]},Be=[],Ce=\"?\";switch(U.placeholderFlag){case 1:me=ce.spec;break;case 2:if((ce.flags&15360)==1024&&ce.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:me=ce.spec,ce.flags&15360;break;case 8:Ce=\"\"+U.paramList[1],pe.paramList.push(U.paramList[1]);break;case 9:for(var g=0,we=U.paramList[1];g<we.length;g++){var Ee=we[g],fe=a(Ee,h,E,C,S,P,te,R+1);Be.push(fe.name),pe.paramList.push(fe)}Ce=Be.join(\", \");break;default:break}if(pe.name=r(te[2],te[0],ce.name,ce.flags,Ce),me){for(var se=0,X=Object.keys(me);se<X.length;se++){var De=X[se];pe[De]=pe[De]||me[De]}pe.flags|=me.flags}return n(h,pe)}function n(p,h){var E=h.flags,C=E&896,S=E&15360;return!h.name&&S==1024&&(h.ptrSize==1?h.name=(E&16?\"\":(E&8?\"un\":\"\")+\"signed \")+\"char\":h.name=(E&8?\"u\":\"\")+(E&32?\"float\":\"int\")+(h.ptrSize*8+\"_t\")),h.ptrSize==8&&!(E&32)&&(S=64),S==2048&&(C==512||C==640?S=4096:C&&(S=3072)),p(S,h)}var c=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),f={Type:c,getComplexType:a,makeType:n,structureList:e};return t.output=f,t.output||f}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),s={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,s)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),s=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[s]=_nbind.makeJSCaller(r),s}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function s(){this.constructor=t}s.prototype=e.prototype,t.prototype=new s}function __nbind_register_class(t,e,r,s,a,n,c){var f=_nbind.readAsciiString(c),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:f},C=_nbind.makeType(_nbind.constructType,E);C.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),C.destroy=_nbind.makeMethodCaller(C.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:C.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(C.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),C.upcastList=Array.prototype.slice.call(HEAPU32.subarray(s/4,s/4+a))),Module[C.name]=C.makeBound(p),_nbind.BindClass.list.push(C)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,s,a){return a?s:s.toLowerCase()})}function __nbind_register_function(t,e,r,s,a,n,c,f,p,h){var E=_nbind.getType(t),C=_nbind.readPolicyList(e),S=_nbind.readTypeIdList(r,s),P;if(c==5)P=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(S.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(S.slice(1))}];else{var I=_nbind.readAsciiString(f),R=(E.name&&E.name+\".\")+I;(c==3||c==4)&&(I=_removeAccessorPrefix(I)),P=[{boundID:t,direct:n,name:I,ptr:a,title:R,typeList:S}]}for(var N=0,U=P;N<U.length;N++){var W=U[N];W.signatureType=c,W.policyTbl=C,W.num=p,W.flags=h,E.addMethod(W)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError(\"Unknown value type \"+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,\"__nbindValueConstructor\")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error(\"Object \"+r+\" has no fromJS function\");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var s={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,s)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>\"u\"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c<a;c++){for(var f=HEAP32[s+c*8>>2],p=HEAP32[s+(c*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[f+h]);n+=p}return n}catch(E){return(typeof FS>\"u\"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var s=HEAPU32[t.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],s=new r(e);return typeIdTbl[e.id]=s,_nbind.typeNameTbl[e.name]=s,s}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r==\"number\"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply(\"\",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",void:\"v\"},s=t.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+s];if(!a)throw new Error(\"dynCall_\"+s+\" not found for \"+e+\"(\"+t.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,s){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,s)):(r.arity=s,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a==\"number\")return a;throw new Error(\"Type mismatch\")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error(\"Type mismatch\")}if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a==\"boolean\")return a;throw new Error(\"Type mismatch\")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var P=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[P/4],C=HEAPU32[P/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:C};S&&(R.__nbindShared=S,_nbind.mark(h));for(var N=0,U=Object.keys(R);N<U.length;N++){var W=U[N];I.value=R[W],Object.defineProperty(h,W,I)}return _defineHidden(0)(h,\"__nbindState\"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,\"__nbindShared\"),disableMember(this,\"__nbindPtr\")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,\"__nbindConstructor\",void 0),__decorate([_defineHidden()],r.prototype,\"__nbindValueConstructor\",void 0),__decorate([_defineHidden(t)],r.prototype,\"__nbindPolicies\",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;return s.wireRead=function(a){return _nbind.popValue(a,s.ptrType)},s.wireWrite=function(a){return pushPointer(a,s.ptrType,!0)},s.pendingSuperCount=0,s.ready=!1,s.methodTbl={},r.paramList?(s.classType=r.paramList[0].classType,s.proto=s.classType.proto):s.classType=s,s}return e.prototype.makeBound=function(r){var s=_nbind.makeBound(r,this);return this.proto=s,this.ptrType.proto=s,s},e.prototype.addMethod=function(r){var s=this.methodTbl[r.name]||[];s.push(r),this.methodTbl[r.name]=s},e.prototype.registerMethods=function(r,s){for(var a,n=0,c=Object.keys(r.methodTbl);n<c.length;n++)for(var f=c[n],p=r.methodTbl[f],h=0,E=p;h<E.length;h++){var C=E[h],S=void 0,P=void 0;if(S=this.proto.prototype,!(s&&C.signatureType!=1))switch(C.signatureType){case 1:S=this.proto;case 5:P=_nbind.makeCaller(C),_nbind.addMethod(S,C.name,P,C.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,C);break;case 3:Object.defineProperty(S,C.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,C),set:a});break;case 2:P=_nbind.makeMethodCaller(r.ptrType,C),_nbind.addMethod(S,C.name,P,C.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,s,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,c,f=0,p=r.superIdList||[];f<p.length;f++){var h=p[f],E=_nbind.getType(h);n++<s||s<0?c=-1:c=0,this.registerSuperMethods(E,c,a)}this.registerMethods(r,s<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var s=function(){this.constructor=r};s.prototype=this.superList[0].proto.prototype,r.prototype=new s}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,s){if(r==this)return s;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],s));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error(\"Type mismatch\")}var s=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)s=_nbind.callUpcast(a.upcastList[0],s),a=a.superList[0];else if(s=a.upcastStep(n,s),!s)throw new Error(\"Type mismatch\");return s}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;s.classType=r.paramList[0].classType,s.proto=s.classType.proto;var a=r.flags&1,n=(s.flags&896)==256&&r.flags&2,c=a?pushPointer:pushMutablePointer,f=n?_nbind.popValue:popPointer;return s.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?c(E,s):0}:function(E){return c(E,s)}},s.wireRead=function(p){return f(p,s)},s.wireWrite=function(p){return c(p,s)},s}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],s=HEAPU32[t/4+1];return s?new e.proto(_nbind.ptrMarker,e.flags,s,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;s.readResources=[_nbind.resources.pool],s.classType=r.paramList[0].classType,s.proto=s.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return s.wireRead=function(c){return popShared(c,s)},s.wireWrite=function(c){return n(c,s)},s}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(s){return typeof s!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(s).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError(\"Value type JavaScript class is missing or not registered\"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error(\"Invalid value slot \"+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t==\"number\"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return\"(_nbind.pushValue(new \"+r+\"))\"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error(\"Type mismatch\");var s=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*s);HEAPU32[a/4]=r;var n=e.memberType.heap,c=(a+4)/s,f=e.memberType.wireWrite,p=0;if(f)for(;p<r;)n[c++]=f(t[p++]);else for(;p<r;)n[c++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],s=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,c=0;if(n)for(;c<r;)s[c++]=n(a[t++]);else for(;c<r;)s[c++]=a[t++];return s}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;return s.wireRead=function(a){return popArray(a,s)},s.wireWrite=function(a){return pushArray(a,s)},s.readResources=[_nbind.resources.pool],s.writeResources=[_nbind.resources.pool],s.memberType=r.paramList[0],r.paramList[1]&&(s.size=r.paramList[1]),s}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t=\"\";else throw new Error(\"Type mismatch\");if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t),s=_nbind.Pool.lalloc(4+r+1);return HEAPU32[s/4]=r,Module.stringToUTF8Array(t,HEAPU8,s+4,r+1),s}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushString(a,s)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return\"a\"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,s){return r||s.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,s){return r||!!s.needsWireRead(e)},!1)}function makeWireRead(t,e,r,s){var a=t.length;return r.makeWireRead?r.makeWireRead(s,t,a):r.wireRead?(t[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+s+\"))\"):s}function makeWireWrite(t,e,r,s){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(s,e,t,n):a=r.wireWrite,a?typeof a==\"string\"?a:(t[n]=a,\"(convertParamList[\"+n+\"](\"+s+\"))\"):s}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(\",\")+\")\"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(\",\")+\")\"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,\"callback\"),s=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),c=s.needsWireWrite(null);if(!c&&!n)switch(e){case 0:return function(f,p){return _nbind.externalList[p].data()};case 1:return function(f,p,h){return _nbind.externalList[p].data(h)};case 2:return function(f,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(f,p,h,E,C){return _nbind.externalList[p].data(h,E,C)};default:break}return buildJSCallerFunction(s,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,s=e.typeList.slice(0);s.splice(1,0,\"uint32_t\",e.boundID);var a=_nbind.getTypes(s,e.title),n=a[0],c=a.slice(3),f=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(c,e.policyTbl),h=e.ptr,E=e.num,C=_nbind.getDynCall(a,e.title),S=~e.flags&1;function P(){throw new Error(\"Calling a non-const method on a const object\")}if(!f&&!p)switch(r){case 0:return function(){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t))};case 1:return function(I){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t),I)};case 2:return function(I,R){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t),I,R)};case 3:return function(I,R,N){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t),I,R,N)};default:break}return buildCallerFunction(C,t,h,E,e.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,c,S,P)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),s=r[0],a=r.slice(1),n=s.needsWireRead(t.policyTbl),c=anyNeedsWireWrite(a,t.policyTbl),f=t.direct,p=t.ptr;if(t.direct&&!n&&!c){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(f)};case 1:return function(P){return h(f,P)};case 2:return function(P,I){return h(f,P,I)};case 3:return function(P,I,R){return h(f,P,I,R)};default:break}p=0}var E;if(p){var C=t.typeList.slice(0);C.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(C,t.title),E=\"ptr,num\"}else p=f,E=\"ptr\";var S=_nbind.getDynCall(r,t.title);return buildCallerFunction(S,null,p,t.num,t.policyTbl,c,E,s,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function s(){return r[arguments.length].apply(this,arguments)}return s.addMethod=function(a,n){r[n]=a},s.addMethod(t,e),s}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var s=this;this.makeOpen=function(){return Object.keys(s.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(s.closeTbl).join(\"\")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,s=Object.keys(e.openTbl);r<s.length;r++){var a=s[r];this.openTbl[a]=!0}for(var n=0,c=Object.keys(e.closeTbl);n<c.length;n++){var a=c[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,s=Object.keys(e.openTbl);r<s.length;r++){var a=s[r];delete this.openTbl[a]}for(var n=0,c=Object.keys(e.closeTbl);n<c.length;n++){var a=c[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,s=0,a=t;s<a.length;s++)for(var n=a[s],c=0,f=n.readResources||[];c<f.length;c++){var p=f[c];r.add(p)}for(var h=0,E=e;h<E.length;h++)for(var n=E[h],C=0,S=n.writeResources||[];C<S.length;C++){var p=S[C];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=function(t){__extends(e,t);function e(r,s){var a=t.call(this,r)||this;return a.ptr=s,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!=\"object\")throw new Error(\"Type mismatch\");var r=t,s=r.byteLength||r.length;if(!s&&s!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(s),c=a/4;return HEAPU32[c++]=s,HEAPU32[c++]=n,HEAPU32[c++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushBuffer(a,s)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var s=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(s instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(s instanceof a){var c=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,s){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,s)},Module.requestFullscreen=function t(e,r,s){Browser.requestFullscreen(e,r,s)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,s){Browser.setCanvasSize(e,r,s)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,s,a){return Browser.createContext(e,r,s,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<\"u\"?_emscripten_get_now=dateNow:typeof self==\"object\"&&self.performance&&typeof self.performance.now==\"function\"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance==\"object\"&&typeof performance.now==\"function\"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,s,a,n){try{Module.dynCall_viiiii(t,e,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,s){try{return Module.dynCall_fiff(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,s,a){try{Module.dynCall_viddi(t,e,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,s){try{Module.dynCall_vidd(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,s){try{return Module.dynCall_iiii(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,s){try{return Module.dynCall_diii(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,s,a,n){try{Module.dynCall_viiddi(t,e,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,s,a,n,c){try{Module.dynCall_viiiiii(t,e,r,s,a,n,c)}catch(f){if(typeof f!=\"number\"&&f!==\"longjmp\")throw f;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,s,a,n){try{return Module.dynCall_iiiiii(t,e,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,s,a){try{Module.dynCall_viiid(t,e,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,s,a,n,c){try{Module.dynCall_viififi(t,e,r,s,a,n,c)}catch(f){if(typeof f!=\"number\"&&f!==\"longjmp\")throw f;Module.setThrew(1,0)}}function invoke_viii(t,e,r,s){try{Module.dynCall_viii(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,s){try{Module.dynCall_viid(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,s,a){try{Module.dynCall_viiii(t,e,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var s=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),c=new t.Uint8Array(r),f=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),C=e.DYNAMICTOP_PTR|0,S=e.tempDoublePtr|0,P=e.ABORT|0,I=e.STACKTOP|0,R=e.STACK_MAX|0,N=e.cttz_i8|0,U=e.___dso_handle|0,W=0,te=0,ie=0,Ae=0,ce=t.NaN,me=t.Infinity,pe=0,Be=0,Ce=0,g=0,we=0,Ee=0,fe=t.Math.floor,se=t.Math.abs,X=t.Math.sqrt,De=t.Math.pow,Re=t.Math.cos,gt=t.Math.sin,j=t.Math.tan,rt=t.Math.acos,Fe=t.Math.asin,Ne=t.Math.atan,Pe=t.Math.atan2,Ye=t.Math.exp,ke=t.Math.log,it=t.Math.ceil,_e=t.Math.imul,x=t.Math.min,w=t.Math.max,b=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,Z=e.enlargeMemory,$=e.getTotalMemory,oe=e.abortOnCannotGrowMemory,xe=e.invoke_viiiii,Te=e.invoke_vif,lt=e.invoke_vid,Et=e.invoke_fiff,qt=e.invoke_vi,ir=e.invoke_vii,Pt=e.invoke_ii,gn=e.invoke_viddi,Pr=e.invoke_vidd,Ir=e.invoke_iiii,Nr=e.invoke_diii,nn=e.invoke_di,oi=e.invoke_iid,wo=e.invoke_iii,rs=e.invoke_viiddi,eo=e.invoke_viiiiii,Bo=e.invoke_dii,Hi=e.invoke_i,to=e.invoke_iiiiii,vo=e.invoke_viiid,RA=e.invoke_viififi,pf=e.invoke_viii,Eh=e.invoke_v,Ih=e.invoke_viid,ro=e.invoke_idd,jn=e.invoke_viiii,Rs=e._emscripten_asm_const_iiiii,no=e._emscripten_asm_const_iiidddddd,lu=e._emscripten_asm_const_iiiid,cu=e.__nbind_reference_external,uu=e._emscripten_asm_const_iiiiiiii,FA=e._removeAccessorPrefix,NA=e._typeModule,aa=e.__nbind_register_pool,la=e.__decorate,OA=e._llvm_stackrestore,gr=e.___cxa_atexit,So=e.__extends,Me=e.__nbind_get_value_object,fu=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=e._emscripten_set_main_loop_timing,hf=e.__nbind_register_primitive,LA=e.__nbind_register_type,MA=e._emscripten_memcpy_big,Au=e.__nbind_register_function,pu=e.___setErrNo,ac=e.__nbind_register_class,ve=e.__nbind_finish,Nt=e._abort,lc=e._nbind_value,Ni=e._llvm_stacksave,io=e.___syscall54,Rt=e._defineHidden,xn=e._emscripten_set_main_loop,ca=e._emscripten_get_now,ji=e.__nbind_register_callback_signature,Oi=e._emscripten_asm_const_iiiiii,Oa=e.__nbind_free_external,dn=e._emscripten_asm_const_iiii,Jn=e._emscripten_asm_const_iiididi,hu=e.___syscall6,Ch=e._atexit,La=e.___syscall140,Ma=e.___syscall146,Ua=y(0);let Xe=y(0);function Ha(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function gf(){return I|0}function cc(o){o=o|0,I=o}function wn(o,l){o=o|0,l=l|0,I=o,R=l}function ua(o,l){o=o|0,l=l|0,W||(W=o,te=l)}function _A(o){o=o|0,Ee=o}function UA(){return Ee|0}function fa(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function vl(o){o=o|0,ht(o+948|0)}function Mt(o){return o=y(o),((SP(o)|0)&2147483647)>>>0>2139095040|0}function kn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function Aa(o){o=o|0;var l=0;return l=ex(1e3)|0,ja(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function ja(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Yg(o,5,3197,A)),I=d}function ns(){return Aa(956)|0}function uc(o){o=o|0;var l=0;return l=Jt(1e3)|0,gu(l,o),ja(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function gu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,Dy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(qa(u+948|0,o)|0,n[l>>2]=0),u=Li(o)|0,u|0){l=0;do n[(Cs(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),Sl(u),tx(o),n[2276]=(n[2276]|0)+-1}function qa(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(F2(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Li(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Cs(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function Sl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,ky(l,d,d,o+8|0),DP(o,l),Qy(l)),I=A}function df(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;_=Li(o)|0;do if(_|0){if((n[(Cs(o,0)|0)+944>>2]|0)==(o|0)){if(!(qa(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,T=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=uc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,T||S_[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(_|0));if(u>>>0<_>>>0){T=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[T>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(F2(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(_|0))}}while(!1)}function Ac(o){o=o|0;var l=0,u=0,A=0,d=0;wi(o,(Li(o)|0)==0,2491),wi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),Sl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function wi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Qo(o,5,3197,A)),I=d}function Qn(){return n[2276]|0}function pc(){var o=0;return o=ex(20)|0,Je((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Je(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,Qo(0,5,3197,u)),I=A}function st(o){o=o|0,tx(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(wi(o,(Li(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,wi(o,(n[l+944>>2]|0)==0,2709),wi(o,(n[o+964>>2]|0)==0,2763),ee(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],Ie(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function ee(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Li(o)|0,u|0&&(n[(Cs(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=uc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||S_[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function Ie(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0;tt=I,I=I+64|0,G=tt+52|0,k=tt+48|0,ae=tt+28|0,We=tt+24|0,Le=tt+20|0,Qe=tt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}bP(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=O(o)|0,d>>>0<A>>>0&&sn(o),M=n[o>>2]|0,_=(n[B>>2]|0)-M|0,m=_>>1,ky(Qe,_>>2>>>0<d>>>1>>>0?m>>>0<A>>>0?A:m:d,l-M>>2,o+8|0),M=Qe+8|0,A=n[M>>2]|0,m=Qe+12|0,_=n[m>>2]|0,B=_,T=A;do if((A|0)==(_|0)){if(_=Qe+4|0,A=n[_>>2]|0,Ze=n[Qe>>2]|0,d=Ze,A>>>0<=Ze>>>0){A=B-d>>1,A=A|0?A:1,ky(ae,A,A>>>2,n[Qe+16>>2]|0),n[We>>2]=n[_>>2],n[Le>>2]=n[M>>2],n[k>>2]=n[We>>2],n[G>>2]=n[Le>>2],c2(ae,k,G),A=n[Qe>>2]|0,n[Qe>>2]=n[ae>>2],n[ae>>2]=A,A=ae+4|0,Ze=n[_>>2]|0,n[_>>2]=n[A>>2],n[A>>2]=Ze,A=ae+8|0,Ze=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Ze,A=ae+12|0,Ze=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Ze,Qy(ae),A=n[M>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=T-m|0,m=d>>2,m&&(F2(k|0,A|0,d|0)|0,A=n[_>>2]|0),Ze=k+(m<<2)|0,n[M>>2]=Ze,n[_>>2]=A+(B<<2),A=Ze}while(!1);n[A>>2]=n[u>>2],n[M>>2]=(n[M>>2]|0)+4,l=PP(o,Qe,l)|0,Qy(Qe)}while(!1);return I=tt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(ce),o=n[o+944>>2]|0}while(o|0)}function ht(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),yt(u))}function mt(o){return o=o|0,n[o+944>>2]|0}function Dt(o){o=o|0,wi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function fn(o,l){o=o|0,l=l|0,qYe(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function ai(o){o=o|0;var l=Xe;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=Xe;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Tn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ga(o){return o=o|0,n[o+980>>2]|0}function my(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function t2(o){return o=o|0,n[o+4>>2]|0}function Do(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yy(o){return o=o|0,n[o+8>>2]|0}function wh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function r2(o){return o=o|0,n[o+12>>2]|0}function bo(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Bh(o){return o=o|0,n[o+16>>2]|0}function vh(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function du(o){return o=o|0,n[o+20>>2]|0}function Sh(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ng(o){return o=o|0,n[o+24>>2]|0}function Og(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Lg(o){return o=o|0,n[o+28>>2]|0}function Ey(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function mf(o){return o=o|0,n[o+32>>2]|0}function Po(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Dl(o){return o=o|0,n[o+36>>2]|0}function Dh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Mg(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function bl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Pl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Iy(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function HA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Cy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function wy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function jA(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function qA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Y(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function GA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(ce),n[u>>2]=3,Oe(o))}function xo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yf(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function dt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function mu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function By(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function _g(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function n2(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function bh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(ce),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ef(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function Wa(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(ce),n[l>>2]=3,Oe(o))}function Ug(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function yu(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function If(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function gi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function WA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ya(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function pa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Va(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Hg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Ph(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function jg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function vy(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function YA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function qg(o){return o=o|0,y(h[o+396>>2])}function Eu(o){return o=o|0,y(h[o+400>>2])}function Iu(o){return o=o|0,y(h[o+404>>2])}function Cf(o){return o=o|0,y(h[o+408>>2])}function Fs(o){return o=o|0,y(h[o+412>>2])}function Cu(o){return o=o|0,y(h[o+416>>2])}function qn(o){return o=o|0,y(h[o+420>>2])}function is(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function xi(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function VA(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function wf(o,l){o=o|0,l=l|0;var u=0,A=Xe;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(se(y(A-y(h[l>>2]))))<y(999999974e-13)):o=1:o=0,o|0}function mn(o,l){o=y(o),l=y(l);var u=0;return Mt(o)|0?u=Mt(l)|0:u=y(se(y(o-l)))<y(999999974e-13),u|0}function Gg(o,l){o=o|0,l=l|0,Wg(o,l)}function Wg(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u+4|0,n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,fu(A|0,o|0,l|0,0),Qo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),AVe(A),I=u}function ss(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=Xe;o=y(o*l),d=y(E_(o,y(1)));do if(mn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),mn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=mn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function xl(o,l,u,A,d,m,B,k,T,_,M,G,ae){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),T=y(T),_=y(_),M=y(M),G=y(G),ae=ae|0;var We=0,Le=Xe,Qe=Xe,tt=Xe,Ze=Xe,ct=Xe,He=Xe;return T<y(0)|_<y(0)?ae=0:(ae|0&&(Le=y(h[ae+4>>2]),Le!=y(0))?(tt=y(ss(l,Le,0,0)),Ze=y(ss(A,Le,0,0)),Qe=y(ss(m,Le,0,0)),Le=y(ss(k,Le,0,0))):(Qe=m,tt=l,Le=k,Ze=A),(d|0)==(o|0)?We=mn(Qe,tt)|0:We=0,(B|0)==(u|0)?ae=mn(Le,Ze)|0:ae=0,!We&&(ct=y(l-M),!(ko(o,ct,T)|0))&&!(Bf(o,ct,d,T)|0)?We=vf(o,ct,d,m,T)|0:We=1,!ae&&(He=y(A-G),!(ko(u,He,_)|0))&&!(Bf(u,He,B,_)|0)?ae=vf(u,He,B,k,_)|0:ae=1,ae=We&ae),ae|0}function ko(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=mn(l,u)|0:o=0,o|0}function Bf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=mn(l,A)|0:o=0,o|0}function vf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=mn(l,d)|0:o=0,o|0}function kl(o,l,u,A,d,m,B,k,T,_,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,_=_|0,M=M|0;var G=0,ae=0,We=0,Le=0,Qe=Xe,tt=Xe,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=Xe,Fo=Xe,No=Xe,Oo=0,$a=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,qr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ct=cr,Ge=(n[2279]|0)+1|0,n[2279]=Ge,Tr=o+984|0,s[Tr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Ze=4,(Ze|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Qe=y(yn(o,2,B)),tt=y(yn(o,0,B)),G=o+916|0,No=y(h[G>>2]),Fo=y(h[o+920>>2]),Hn=y(h[o+932>>2]),xl(d,l,m,u,n[o+924>>2]|0,No,n[o+928>>2]|0,Fo,Hn,y(h[o+936>>2]),Qe,tt,M)|0)Ze=22;else if(We=n[o+520>>2]|0,!We)Ze=21;else for(ae=0;;){if(G=o+524+(ae*24|0)|0,Hn=y(h[G>>2]),Fo=y(h[o+524+(ae*24|0)+4>>2]),No=y(h[o+524+(ae*24|0)+16>>2]),xl(d,l,m,u,n[o+524+(ae*24|0)+8>>2]|0,Hn,n[o+524+(ae*24|0)+12>>2]|0,Fo,No,y(h[o+524+(ae*24|0)+20>>2]),Qe,tt,M)|0){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=We>>>0){Ze=21;break}}else{if(T){if(G=o+916|0,!(mn(y(h[G>>2]),l)|0)){Ze=21;break}if(!(mn(y(h[o+920>>2]),u)|0)){Ze=21;break}if((n[o+924>>2]|0)!=(d|0)){Ze=21;break}G=(n[o+928>>2]|0)==(m|0)?G:0,Ze=22;break}if(We=n[o+520>>2]|0,!We)Ze=21;else for(ae=0;;){if(G=o+524+(ae*24|0)|0,mn(y(h[G>>2]),l)|0&&mn(y(h[o+524+(ae*24|0)+4>>2]),u)|0&&(n[o+524+(ae*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(ae*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=We>>>0){Ze=21;break}}}while(!1);do if((Ze|0)==21)s[11697]|0?(G=0,Ze=28):(G=0,Ze=31);else if((Ze|0)==22){if(ae=(s[11697]|0)!=0,!((G|0)!=0&(Hr^1)))if(ae){Ze=28;break}else{Ze=31;break}Le=G+16|0,n[o+908>>2]=n[Le>>2],We=G+20|0,n[o+912>>2]=n[We>>2],(s[11698]|0)==0|ae^1||(n[ct>>2]=wu(Ge)|0,n[ct+4>>2]=Ge,Qo(o,4,2972,ct),ae=n[o+972>>2]|0,ae|0&&op[ae&127](o),d=ha(d,T)|0,m=ha(m,T)|0,$a=+y(h[Le>>2]),Oo=+y(h[We>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=$a,E[Lt+32>>3]=Oo,n[Lt+40>>2]=_,Qo(o,4,2989,Lt))}while(!1);return(Ze|0)==28&&(ae=wu(Ge)|0,n[Le>>2]=ae,n[Le+4>>2]=Ge,n[Le+8>>2]=Hr?3047:11699,Qo(o,4,3038,Le),ae=n[o+972>>2]|0,ae|0&&op[ae&127](o),Lt=ha(d,T)|0,Ze=ha(m,T)|0,n[He>>2]=Lt,n[He+4>>2]=Ze,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=_,Qo(o,4,3049,He),Ze=31),(Ze|0)==31&&(Ns(o,l,u,A,d,m,B,k,T,M),s[11697]|0&&(ae=n[2279]|0,Lt=wu(ae)|0,n[qr>>2]=Lt,n[qr+4>>2]=ae,n[qr+8>>2]=Hr?3047:11699,Qo(o,4,3083,qr),ae=n[o+972>>2]|0,ae|0&&op[ae&127](o),Lt=ha(d,T)|0,qr=ha(m,T)|0,Oo=+y(h[o+908>>2]),$a=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=qr,E[fr+8>>3]=Oo,E[fr+16>>3]=$a,n[fr+24>>2]=_,Qo(o,4,3092,fr)),n[o+516>>2]=A,G||(ae=o+520|0,G=n[ae>>2]|0,(G|0)==16&&(s[11697]|0&&Qo(o,4,3124,$t),n[ae>>2]=0,G=0),T?G=o+916|0:(n[ae>>2]=G+1,G=o+524+(G*24|0)|0),h[G>>2]=l,h[G+4>>2]=u,n[G+8>>2]=d,n[G+12>>2]=m,n[G+16>>2]=n[o+908>>2],n[G+20>>2]=n[o+912>>2],G=0)),T&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Tr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(G|0)==0|0}function yn(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return A=y(J(o,l,u)),y(A+y(re(o,l,u)))}function Qo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,Qh(A,o,l,u,d),I=m}function wu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function ha(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Ns(o,l,u,A,d,m,B,k,T,_){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,_=_|0;var M=0,G=0,ae=0,We=0,Le=Xe,Qe=Xe,tt=Xe,Ze=Xe,ct=Xe,He=Xe,Ge=Xe,Lt=0,qr=0,fr=0,$t=Xe,Tr=Xe,Hr=0,cr=Xe,Hn=0,Fo=0,No=0,Oo=0,$a=0,Kh=0,Jh=0,dc=0,zh=0,Ff=0,Nf=0,Zh=0,Xh=0,$h=0,on=0,mc=0,e0=0,ku=0,t0=Xe,r0=Xe,Of=Xe,Lf=Xe,Qu=Xe,ao=0,Ml=0,ya=0,yc=0,lp=0,cp=Xe,Mf=Xe,up=Xe,fp=Xe,lo=Xe,_s=Xe,Ec=0,Wn=Xe,Ap=Xe,Lo=Xe,Tu=Xe,Mo=Xe,Ru=Xe,pp=0,hp=0,Fu=Xe,co=Xe,Ic=0,gp=0,dp=0,mp=0,Fr=Xe,ci=0,Us=0,_o=0,uo=0,Mr=0,Ar=0,Cc=0,zt=Xe,yp=0,Bi=0;Cc=I,I=I+16|0,ao=Cc+12|0,Ml=Cc+8|0,ya=Cc+4|0,yc=Cc,wi(o,(d|0)==0|(Mt(l)|0)^1,3326),wi(o,(m|0)==0|(Mt(u)|0)^1,3406),Us=ft(o,A)|0,n[o+496>>2]=Us,Mr=dr(2,Us)|0,Ar=dr(0,Us)|0,h[o+440>>2]=y(J(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(J(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(Br(o,Mr)),h[o+468>>2]=y(_n(o,Mr)),h[o+452>>2]=y(Br(o,Ar)),h[o+460>>2]=y(_n(o,Ar)),h[o+488>>2]=y(di(o,Mr,B)),h[o+492>>2]=y(ws(o,Mr,B)),h[o+476>>2]=y(di(o,Ar,B)),h[o+484>>2]=y(ws(o,Ar,B));do if(n[o+964>>2]|0)zA(o,l,u,d,m,B,k);else{if(_o=o+948|0,uo=(n[o+952>>2]|0)-(n[_o>>2]|0)>>2,!uo){wP(o,l,u,d,m,B,k);break}if(!T&&i2(o,l,u,d,m,B,k)|0)break;ee(o),mc=o+508|0,s[mc>>0]=0,Mr=dr(n[o+4>>2]|0,Us)|0,Ar=by(Mr,Us)|0,ci=de(Mr)|0,e0=n[o+8>>2]|0,gp=o+28|0,ku=(n[gp>>2]|0)!=0,Mo=ci?B:k,Fu=ci?k:B,t0=y(Rh(o,Mr,B)),r0=y(s2(o,Mr,B)),Le=y(Rh(o,Ar,B)),Ru=y(Ka(o,Mr,B)),co=y(Ka(o,Ar,B)),fr=ci?d:m,Ic=ci?m:d,Fr=ci?Ru:co,ct=ci?co:Ru,Tu=y(yn(o,2,B)),Ze=y(yn(o,0,B)),Qe=y(y(Xr(o+364|0,B))-Fr),tt=y(y(Xr(o+380|0,B))-Fr),He=y(y(Xr(o+372|0,k))-ct),Ge=y(y(Xr(o+388|0,k))-ct),Of=ci?Qe:He,Lf=ci?tt:Ge,Tu=y(l-Tu),l=y(Tu-Fr),Mt(l)|0?Fr=l:Fr=y($n(y(hd(l,tt)),Qe)),Ap=y(u-Ze),l=y(Ap-ct),Mt(l)|0?Lo=l:Lo=y($n(y(hd(l,Ge)),He)),Qe=ci?Fr:Lo,Wn=ci?Lo:Fr;e:do if((fr|0)==1)for(A=0,G=0;;){if(M=Cs(o,G)|0,!A)y(ZA(M))>y(0)&&y(Fh(M))>y(0)?A=M:A=0;else if(o2(M)|0){We=0;break e}if(G=G+1|0,G>>>0>=uo>>>0){We=A;break}}else We=0;while(!1);Lt=We+500|0,qr=We+504|0,A=0,M=0,l=y(0),ae=0;do{if(G=n[(n[_o>>2]|0)+(ae<<2)>>2]|0,(n[G+36>>2]|0)==1)Py(G),s[G+985>>0]=1,s[G+984>>0]=0;else{Sf(G),T&&kh(G,ft(G,Us)|0,Qe,Wn,Fr);do if((n[G+24>>2]|0)!=1)if((G|0)==(We|0)){n[Lt>>2]=n[2278],h[qr>>2]=y(0);break}else{BP(o,G,Fr,d,Lo,Fr,Lo,m,Us,_);break}else M|0&&(n[M+960>>2]=G),n[G+960>>2]=0,M=G,A=A|0?A:G;while(!1);_s=y(h[G+504>>2]),l=y(l+y(_s+y(yn(G,Mr,Fr))))}ae=ae+1|0}while((ae|0)!=(uo|0));for(No=l>Qe,Ec=ku&((fr|0)==2&No)?1:fr,Hn=(Ic|0)==1,$a=Hn&(T^1),Kh=(Ec|0)==1,Jh=(Ec|0)==2,dc=976+(Mr<<2)|0,zh=(Ic|2|0)==2,$h=Hn&(ku^1),Ff=1040+(Ar<<2)|0,Nf=1040+(Mr<<2)|0,Zh=976+(Ar<<2)|0,Xh=(Ic|0)!=1,No=ku&((fr|0)!=0&No),Fo=o+976|0,Hn=Hn^1,l=Qe,Hr=0,Oo=0,_s=y(0),Qu=y(0);;){e:do if(Hr>>>0<uo>>>0)for(qr=n[_o>>2]|0,ae=0,Ge=y(0),He=y(0),tt=y(0),Qe=y(0),G=0,M=0,We=Hr;;){if(Lt=n[qr+(We<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Oo,(n[Lt+24>>2]|0)!=1)){if(Ze=y(yn(Lt,Mr,Fr)),on=n[dc>>2]|0,u=y(Xr(Lt+380+(on<<3)|0,Mo)),ct=y(h[Lt+504>>2]),u=y(hd(u,ct)),u=y($n(y(Xr(Lt+364+(on<<3)|0,Mo)),u)),ku&(ae|0)!=0&y(Ze+y(He+u))>l){m=ae,Ze=Ge,fr=We;break e}Ze=y(Ze+u),u=y(He+Ze),Ze=y(Ge+Ze),o2(Lt)|0&&(tt=y(tt+y(ZA(Lt))),Qe=y(Qe-y(ct*y(Fh(Lt))))),M|0&&(n[M+960>>2]=Lt),n[Lt+960>>2]=0,ae=ae+1|0,M=Lt,G=G|0?G:Lt}else Ze=Ge,u=He;if(We=We+1|0,We>>>0<uo>>>0)Ge=Ze,He=u;else{m=ae,fr=We;break}}else m=0,Ze=y(0),tt=y(0),Qe=y(0),G=0,fr=Hr;while(!1);on=tt>y(0)&tt<y(1),$t=on?y(1):tt,on=Qe>y(0)&Qe<y(1),Ge=on?y(1):Qe;do if(Kh)on=51;else if(Ze<Of&((Mt(Of)|0)^1))l=Of,on=51;else if(Ze>Lf&((Mt(Lf)|0)^1))l=Lf,on=51;else if(s[(n[Fo>>2]|0)+3>>0]|0)on=51;else{if($t!=y(0)&&y(ZA(o))!=y(0)){on=53;break}l=Ze,on=53}while(!1);if((on|0)==51&&(on=0,Mt(l)|0?on=53:(Tr=y(l-Ze),cr=l)),(on|0)==53&&(on=0,Ze<y(0)?(Tr=y(-Ze),cr=l):(Tr=y(0),cr=l)),!$a&&(lp=(G|0)==0,!lp)){ae=n[dc>>2]|0,We=Tr<y(0),ct=y(Tr/Ge),Lt=Tr>y(0),He=y(Tr/$t),tt=y(0),Ze=y(0),l=y(0),M=G;do u=y(Xr(M+380+(ae<<3)|0,Mo)),Qe=y(Xr(M+364+(ae<<3)|0,Mo)),Qe=y(hd(u,y($n(Qe,y(h[M+504>>2]))))),We?(u=y(Qe*y(Fh(M))),u!=y(-0)&&(zt=y(Qe-y(ct*u)),cp=y(Gn(M,Mr,zt,cr,Fr)),zt!=cp)&&(tt=y(tt-y(cp-Qe)),l=y(l+u))):Lt&&(Mf=y(ZA(M)),Mf!=y(0))&&(zt=y(Qe+y(He*Mf)),up=y(Gn(M,Mr,zt,cr,Fr)),zt!=up)&&(tt=y(tt-y(up-Qe)),Ze=y(Ze-Mf)),M=n[M+960>>2]|0;while(M|0);if(l=y(Ge+l),Qe=y(Tr+tt),lp)l=y(0);else{ct=y($t+Ze),We=n[dc>>2]|0,Lt=Qe<y(0),qr=l==y(0),He=y(Qe/l),ae=Qe>y(0),ct=y(Qe/ct),l=y(0);do{zt=y(Xr(G+380+(We<<3)|0,Mo)),tt=y(Xr(G+364+(We<<3)|0,Mo)),tt=y(hd(zt,y($n(tt,y(h[G+504>>2]))))),Lt?(zt=y(tt*y(Fh(G))),Qe=y(-zt),zt!=y(-0)?(zt=y(He*Qe),Qe=y(Gn(G,Mr,y(tt+(qr?Qe:zt)),cr,Fr))):Qe=tt):ae&&(fp=y(ZA(G)),fp!=y(0))?Qe=y(Gn(G,Mr,y(tt+y(ct*fp)),cr,Fr)):Qe=tt,l=y(l-y(Qe-tt)),Ze=y(yn(G,Mr,Fr)),u=y(yn(G,Ar,Fr)),Qe=y(Qe+Ze),h[Ml>>2]=Qe,n[yc>>2]=1,tt=y(h[G+396>>2]);e:do if(Mt(tt)|0){M=Mt(Wn)|0;do if(!M){if(No|(so(G,Ar,Wn)|0|Hn)||(os(o,G)|0)!=4||(n[(Ql(G,Ar)|0)+4>>2]|0)==3||(n[(Tl(G,Ar)|0)+4>>2]|0)==3)break;h[ao>>2]=Wn,n[ya>>2]=1;break e}while(!1);if(so(G,Ar,Wn)|0){M=n[G+992+(n[Zh>>2]<<2)>>2]|0,zt=y(u+y(Xr(M,Wn))),h[ao>>2]=zt,M=Xh&(n[M+4>>2]|0)==2,n[ya>>2]=((Mt(zt)|0|M)^1)&1;break}else{h[ao>>2]=Wn,n[ya>>2]=M?0:2;break}}else zt=y(Qe-Ze),$t=y(zt/tt),zt=y(tt*zt),n[ya>>2]=1,h[ao>>2]=y(u+(ci?$t:zt));while(!1);Bu(G,Mr,cr,Fr,yc,Ml),Bu(G,Ar,Wn,Fr,ya,ao);do if(!(so(G,Ar,Wn)|0)&&(os(o,G)|0)==4){if((n[(Ql(G,Ar)|0)+4>>2]|0)==3){M=0;break}M=(n[(Tl(G,Ar)|0)+4>>2]|0)!=3}else M=0;while(!1);zt=y(h[Ml>>2]),$t=y(h[ao>>2]),yp=n[yc>>2]|0,Bi=n[ya>>2]|0,kl(G,ci?zt:$t,ci?$t:zt,Us,ci?yp:Bi,ci?Bi:yp,Fr,Lo,T&(M^1),3488,_)|0,s[mc>>0]=s[mc>>0]|s[G+508>>0],G=n[G+960>>2]|0}while(G|0)}}else l=y(0);if(l=y(Tr+l),Bi=l<y(0)&1,s[mc>>0]=Bi|c[mc>>0],Jh&l>y(0)?(M=n[dc>>2]|0,n[o+364+(M<<3)+4>>2]|0&&(lo=y(Xr(o+364+(M<<3)|0,Mo)),lo>=y(0))?Qe=y($n(y(0),y(lo-y(cr-l)))):Qe=y(0)):Qe=l,Lt=Hr>>>0<fr>>>0,Lt){We=n[_o>>2]|0,ae=Hr,M=0;do G=n[We+(ae<<2)>>2]|0,n[G+24>>2]|0||(M=((n[(Ql(G,Mr)|0)+4>>2]|0)==3&1)+M|0,M=M+((n[(Tl(G,Mr)|0)+4>>2]|0)==3&1)|0),ae=ae+1|0;while((ae|0)!=(fr|0));M?(Ze=y(0),u=y(0)):on=101}else on=101;e:do if((on|0)==101)switch(on=0,e0|0){case 1:{M=0,Ze=y(Qe*y(.5)),u=y(0);break e}case 2:{M=0,Ze=Qe,u=y(0);break e}case 3:{if(m>>>0<=1){M=0,Ze=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),M=0,Ze=y(0),u=y(y($n(Qe,y(0)))/u);break e}case 5:{u=y(Qe/y((m+1|0)>>>0)),M=0,Ze=u;break e}case 4:{u=y(Qe/y(m>>>0)),M=0,Ze=y(u*y(.5));break e}default:{M=0,Ze=y(0),u=y(0);break e}}while(!1);if(l=y(t0+Ze),Lt){tt=y(Qe/y(M|0)),ae=n[_o>>2]|0,G=Hr,Qe=y(0);do{M=n[ae+(G<<2)>>2]|0;e:do if((n[M+36>>2]|0)!=1){switch(n[M+24>>2]|0){case 1:{if(ga(M,Mr)|0){if(!T)break e;zt=y(XA(M,Mr,cr)),zt=y(zt+y(Br(o,Mr))),zt=y(zt+y(J(M,Mr,Fr))),h[M+400+(n[Nf>>2]<<2)>>2]=zt;break e}break}case 0:if(Bi=(n[(Ql(M,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,T&&(Bi=M+400+(n[Nf>>2]<<2)|0,h[Bi>>2]=y(l+y(h[Bi>>2]))),Bi=(n[(Tl(M,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,$a){zt=y(u+y(yn(M,Mr,Fr))),Qe=Wn,l=y(l+y(zt+y(h[M+504>>2])));break e}else{l=y(l+y(u+y($A(M,Mr,Fr)))),Qe=y($n(Qe,y($A(M,Ar,Fr))));break e}default:}T&&(zt=y(Ze+y(Br(o,Mr))),Bi=M+400+(n[Nf>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2])))}while(!1);G=G+1|0}while((G|0)!=(fr|0))}else Qe=y(0);if(u=y(r0+l),zh?Ze=y(y(Gn(o,Ar,y(co+Qe),Fu,B))-co):Ze=Wn,tt=y(y(Gn(o,Ar,y(co+($h?Wn:Qe)),Fu,B))-co),Lt&T){G=Hr;do{ae=n[(n[_o>>2]|0)+(G<<2)>>2]|0;do if((n[ae+36>>2]|0)!=1){if((n[ae+24>>2]|0)==1){if(ga(ae,Ar)|0){if(zt=y(XA(ae,Ar,Wn)),zt=y(zt+y(Br(o,Ar))),zt=y(zt+y(J(ae,Ar,Fr))),M=n[Ff>>2]|0,h[ae+400+(M<<2)>>2]=zt,!(Mt(zt)|0))break}else M=n[Ff>>2]|0;zt=y(Br(o,Ar)),h[ae+400+(M<<2)>>2]=y(zt+y(J(ae,Ar,Fr)));break}M=os(o,ae)|0;do if((M|0)==4){if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){on=139;break}if((n[(Tl(ae,Ar)|0)+4>>2]|0)==3){on=139;break}if(so(ae,Ar,Wn)|0){l=Le;break}yp=n[ae+908+(n[dc>>2]<<2)>>2]|0,n[ao>>2]=yp,l=y(h[ae+396>>2]),Bi=Mt(l)|0,Qe=(n[S>>2]=yp,y(h[S>>2])),Bi?l=tt:(Tr=y(yn(ae,Ar,Fr)),zt=y(Qe/l),l=y(l*Qe),l=y(Tr+(ci?zt:l))),h[Ml>>2]=l,h[ao>>2]=y(y(yn(ae,Mr,Fr))+Qe),n[ya>>2]=1,n[yc>>2]=1,Bu(ae,Mr,cr,Fr,ya,ao),Bu(ae,Ar,Wn,Fr,yc,Ml),l=y(h[ao>>2]),Tr=y(h[Ml>>2]),zt=ci?l:Tr,l=ci?Tr:l,Bi=((Mt(zt)|0)^1)&1,kl(ae,zt,l,Us,Bi,((Mt(l)|0)^1)&1,Fr,Lo,1,3493,_)|0,l=Le}else on=139;while(!1);e:do if((on|0)==139){on=0,l=y(Ze-y($A(ae,Ar,Fr)));do if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){if((n[(Tl(ae,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y($n(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Tl(ae,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){l=y(Le+y($n(y(0),l)));break}switch(M|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(_s+l),Bi=ae+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2]))}while(!1);G=G+1|0}while((G|0)!=(fr|0))}if(_s=y(_s+tt),Qu=y($n(Qu,u)),m=Oo+1|0,fr>>>0>=uo>>>0)break;l=cr,Hr=fr,Oo=m}do if(T){if(M=m>>>0>1,!M&&!(XL(o)|0))break;if(!(Mt(Wn)|0)){l=y(Wn-_s);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Wn>_s?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Wn>_s){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=M?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Oo>>>0)),He=Wn>_s&M?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,qr=976+(Ar<<2)|0,We=0,G=0;;){e:do if(G>>>0<uo>>>0)for(Qe=y(0),tt=y(0),l=y(0),ae=G;;){M=n[(n[_o>>2]|0)+(ae<<2)>>2]|0;do if((n[M+36>>2]|0)!=1&&!(n[M+24>>2]|0)){if((n[M+940>>2]|0)!=(We|0))break e;if($L(M,Ar)|0&&(zt=y(h[M+908+(n[qr>>2]<<2)>>2]),l=y($n(l,y(zt+y(yn(M,Ar,Fr)))))),(os(o,M)|0)!=5)break;lo=y(Vg(M)),lo=y(lo+y(J(M,0,Fr))),zt=y(h[M+912>>2]),zt=y(y(zt+y(yn(M,0,Fr)))-lo),lo=y($n(tt,lo)),zt=y($n(Qe,zt)),Qe=zt,tt=lo,l=y($n(l,y(lo+zt)))}while(!1);if(M=ae+1|0,M>>>0<uo>>>0)ae=M;else{ae=M;break}}else tt=y(0),l=y(0),ae=G;while(!1);if(ct=y(He+l),u=Le,Le=y(Le+ct),G>>>0<ae>>>0){Ze=y(u+tt),M=G;do{G=n[(n[_o>>2]|0)+(M<<2)>>2]|0;e:do if((n[G+36>>2]|0)!=1&&!(n[G+24>>2]|0))switch(os(o,G)|0){case 1:{zt=y(u+y(J(G,Ar,Fr))),h[G+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(G,Ar,Fr)))-y(h[G+908+(n[qr>>2]<<2)>>2])),h[G+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ct-y(h[G+908+(n[qr>>2]<<2)>>2]))*y(.5))),h[G+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(J(G,Ar,Fr))),h[G+400+(n[Lt>>2]<<2)>>2]=zt,so(G,Ar,Wn)|0||(ci?(Qe=y(h[G+908>>2]),l=y(Qe+y(yn(G,Mr,Fr))),tt=ct):(tt=y(h[G+912>>2]),tt=y(tt+y(yn(G,Ar,Fr))),l=ct,Qe=y(h[G+908>>2])),mn(l,Qe)|0&&mn(tt,y(h[G+912>>2]))|0))break e;kl(G,l,tt,Us,1,1,Fr,Lo,1,3501,_)|0;break e}case 5:{h[G+404>>2]=y(y(Ze-y(Vg(G)))+y(XA(G,0,Wn)));break e}default:break e}while(!1);M=M+1|0}while((M|0)!=(ae|0))}if(We=We+1|0,(We|0)==(m|0))break;G=ae}}}while(!1);if(h[o+908>>2]=y(Gn(o,2,Tu,B,B)),h[o+912>>2]=y(Gn(o,0,Ap,k,B)),Ec|0&&(pp=n[o+32>>2]|0,hp=(Ec|0)==2,!(hp&(pp|0)!=2))?hp&(pp|0)==2&&(l=y(Ru+cr),l=y($n(y(hd(l,y(Kg(o,Mr,Qu,Mo)))),Ru)),on=198):(l=y(Gn(o,Mr,Qu,Mo,B)),on=198),(on|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ic|0&&(dp=n[o+32>>2]|0,mp=(Ic|0)==2,!(mp&(dp|0)!=2))?mp&(dp|0)==2&&(l=y(co+Wn),l=y($n(y(hd(l,y(Kg(o,Ar,y(co+_s),Fu)))),co)),on=204):(l=y(Gn(o,Ar,y(co+_s),Fu,B)),on=204),(on|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),T){if((n[gp>>2]|0)==2){G=976+(Ar<<2)|0,ae=1040+(Ar<<2)|0,M=0;do We=Cs(o,M)|0,n[We+24>>2]|0||(yp=n[G>>2]|0,zt=y(h[o+908+(yp<<2)>>2]),Bi=We+400+(n[ae>>2]<<2)|0,zt=y(zt-y(h[Bi>>2])),h[Bi>>2]=y(zt-y(h[We+908+(yp<<2)>>2]))),M=M+1|0;while((M|0)!=(uo|0))}if(A|0){M=ci?Ec:d;do eM(o,A,Fr,M,Lo,Us,_),A=n[A+960>>2]|0;while(A|0)}if(M=(Mr|2|0)==3,G=(Ar|2|0)==3,M|G){A=0;do ae=n[(n[_o>>2]|0)+(A<<2)>>2]|0,(n[ae+36>>2]|0)!=1&&(M&&a2(o,ae,Mr),G&&a2(o,ae,Ar)),A=A+1|0;while((A|0)!=(uo|0))}}}while(!1);I=Cc}function xh(o,l){o=o|0,l=y(l);var u=0;ja(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function KA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=Xe,m=Xe,B=0,k=0,T=0;n[2278]=(n[2278]|0)+1,Sf(o),so(o,2,l)|0?(d=y(Xr(n[o+992>>2]|0,l)),T=1,d=y(d+y(yn(o,2,l)))):(d=y(Xr(o+380|0,l)),d>=y(0)?T=2:(T=((Mt(l)|0)^1)&1,d=l)),so(o,0,u)|0?(m=y(Xr(n[o+996>>2]|0,u)),k=1,m=y(m+y(yn(o,0,l)))):(m=y(Xr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,kl(o,d,m,A,T,k,l,u,1,3189,n[B>>2]|0)|0&&(kh(o,n[o+496>>2]|0,l,u,l),JA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Gg(o,7)}function Sf(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(T=l,_=n[T+4>>2]|0,M=A,n[M>>2]=n[T>>2],n[M+4>>2]=_,M=o+364+(u<<3)|0,_=n[M+4>>2]|0,T=d,n[T>>2]=n[M>>2],n[T+4>>2]=_,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],wf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function so(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])<y(0)?o=0:A=5;break}case 2:{y(h[o>>2])<y(0)?o=0:o=(Mt(u)|0)^1;break}default:A=5}return(A|0)==5&&(o=1),o|0}function Xr(o,l){switch(o=o|0,l=y(l),n[o+4>>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(ce)}return y(l)}function kh(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=Xe;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=by(m,l)|0,u=y(vP(o,m,u)),A=y(vP(o,l,A)),B=y(u+y(J(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(J(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function JA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=Xe,k=Xe,T=0,_=0,M=Xe,G=0,ae=Xe,We=Xe,Le=Xe,Qe=Xe;if(l!=y(0)&&(d=o+400|0,Qe=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),G=o+416|0,We=y(h[G>>2]),_=o+420|0,B=y(h[_>>2]),ae=y(Qe+u),M=y(Le+A),A=y(ae+We),k=y(M+B),T=(n[o+988>>2]|0)==1,h[d>>2]=y(ss(Qe,l,0,T)),h[m>>2]=y(ss(Le,l,0,T)),u=y(E_(y(We*l),y(1))),mn(u,y(0))|0?m=0:m=(mn(u,y(1))|0)^1,u=y(E_(y(B*l),y(1))),mn(u,y(0))|0?d=0:d=(mn(u,y(1))|0)^1,Qe=y(ss(A,l,T&m,T&(m^1))),h[G>>2]=y(Qe-y(ss(ae,l,0,T))),Qe=y(ss(k,l,T&d,T&(d^1))),h[_>>2]=y(Qe-y(ss(M,l,0,T))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do JA(Cs(o,d)|0,l,ae,M),d=d+1|0;while((d|0)!=(m|0))}}function Sy(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=n$(n[489]|0,A,d)|0;break}default:o=lVe(A,d)|0}return o|0}function Yg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,Qh(o,0,l,u,m),I=d}function Qh(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,v$[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function hc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function Dy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(Th(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function Th(o,l){o=o|0,l=l|0;var u=0;if((O(o)|0)>>>0<l>>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function O(o){return o=o|0,1073741823}function J(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=kn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=kn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Ke(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Xr(o,l)),y(l)}function ft(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function Br(o,l){o=o|0,l=l|0;var u=Xe;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function _n(o,l){o=o|0,l=l|0;var u=Xe;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function di(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return de(l)|0&&n[o+240>>2]|0&&(A=y(Xr(o+236|0,u)),A>=y(0))||(A=y($n(y(Xr(kn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function ws(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return de(l)|0&&n[o+248>>2]|0&&(A=y(Xr(o+244|0,u)),A>=y(0))||(A=y($n(y(Xr(kn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function zA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=Xe,T=Xe,_=Xe,M=Xe,G=Xe,ae=Xe,We=0,Le=0,Qe=0;Qe=I,I=I+16|0,We=Qe,Le=o+964|0,wi(o,(n[Le>>2]|0)!=0,3519),k=y(Ka(o,2,l)),T=y(Ka(o,0,l)),_=y(yn(o,2,l)),M=y(yn(o,0,l)),Mt(l)|0?G=l:G=y($n(y(0),y(y(l-_)-k))),Mt(u)|0?ae=u:ae=y($n(y(0),y(y(u-M)-T))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(Gn(o,2,y(l-_),m,m)),l=y(Gn(o,0,y(u-M),B,m))):(S$[n[Le>>2]&1](We,o,G,A,ae,d),G=y(k+y(h[We>>2])),ae=y(l-_),h[o+908>>2]=y(Gn(o,2,(A|2|0)==2?G:ae,m,m)),ae=y(T+y(h[We+4>>2])),l=y(u-M),l=y(Gn(o,0,(d|2|0)==2?ae:l,B,m))),h[o+912>>2]=l,I=Qe}function wP(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=Xe,T=Xe,_=Xe,M=Xe;_=y(Ka(o,2,m)),k=y(Ka(o,0,m)),M=y(yn(o,2,m)),T=y(yn(o,0,m)),l=y(l-M),h[o+908>>2]=y(Gn(o,2,(A|2|0)==2?_:l,m,m)),u=y(u-T),h[o+912>>2]=y(Gn(o,0,(d|2|0)==2?k:u,B,m))}function i2(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,T=Xe,_=Xe;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(T=y(yn(o,0,m)),_=y(yn(o,2,m)),k=l<y(0)&k|(Mt(l)|0),l=y(l-_),h[o+908>>2]=y(Gn(o,2,k?y(0):l,m,m)),l=y(u-T),k=u<y(0)&(d|0)==2|(Mt(u)|0),h[o+912>>2]=y(Gn(o,0,k?y(0):l,B,m)),o=1),o|0}function by(o,l){return o=o|0,l=l|0,Jg(o)|0?o=dr(2,l)|0:o=0,o|0}function Rh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(di(o,l,u)),y(u+y(Br(o,l)))}function s2(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(ws(o,l,u)),y(u+y(_n(o,l)))}function Ka(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return A=y(Rh(o,l,u)),y(A+y(s2(o,l,u)))}function o2(o){return o=o|0,n[o+24>>2]|0?o=0:y(ZA(o))!=y(0)?o=1:o=y(Fh(o))!=y(0),o|0}function ZA(o){o=o|0;var l=Xe;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function Fh(o){o=o|0;var l=Xe,u=0,A=Xe;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A<y(0)&((Mt(A)|0)^1))){l=y(-A);break}l=u<<24>>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Py(o){o=o|0;var l=0,u=0;if(eE(o+400|0,0,540)|0,s[o+985>>0]=1,ee(o),u=Li(o)|0,u|0){l=o+948|0,o=0;do Py(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function BP(o,l,u,A,d,m,B,k,T,_){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,T=T|0,_=_|0;var M=0,G=Xe,ae=0,We=0,Le=Xe,Qe=Xe,tt=0,Ze=Xe,ct=0,He=Xe,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,Fo=0;Hn=I,I=I+16|0,qr=Hn+12|0,fr=Hn+8|0,$t=Hn+4|0,Tr=Hn,cr=dr(n[o+4>>2]|0,T)|0,Ge=de(cr)|0,G=y(Xr(tM(l)|0,Ge?m:B)),Lt=so(l,2,m)|0,Hr=so(l,0,B)|0;do if(!(Mt(G)|0)&&!(Mt(Ge?u:d)|0)){if(M=l+504|0,!(Mt(y(h[M>>2]))|0)&&(!(l2(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[M>>2]=y($n(G,y(Ka(l,cr,m))))}else ae=7;while(!1);do if((ae|0)==7){if(ct=Ge^1,!(ct|Lt^1)){B=y(Xr(n[l+992>>2]|0,m)),h[l+504>>2]=y($n(B,y(Ka(l,2,m))));break}if(!(Ge|Hr^1)){B=y(Xr(n[l+996>>2]|0,B)),h[l+504>>2]=y($n(B,y(Ka(l,0,m))));break}h[qr>>2]=y(ce),h[fr>>2]=y(ce),n[$t>>2]=0,n[Tr>>2]=0,Ze=y(yn(l,2,m)),He=y(yn(l,0,m)),Lt?(Le=y(Ze+y(Xr(n[l+992>>2]|0,m))),h[qr>>2]=Le,n[$t>>2]=1,We=1):(We=0,Le=y(ce)),Hr?(G=y(He+y(Xr(n[l+996>>2]|0,B))),h[fr>>2]=G,n[Tr>>2]=1,M=1):(M=0,G=y(ce)),ae=n[o+32>>2]|0,Ge&(ae|0)==2?ae=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[qr>>2]=u,n[$t>>2]=2,We=2,Le=u),!((ae|0)==2&ct)&&Mt(G)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Tr>>2]=2,M=2,G=d),Qe=y(h[l+396>>2]),tt=Mt(Qe)|0;do if(tt)ae=We;else{if((We|0)==1&ct){h[fr>>2]=y(y(Le-Ze)/Qe),n[Tr>>2]=1,M=1,ae=1;break}Ge&(M|0)==1?(h[qr>>2]=y(Qe*y(G-He)),n[$t>>2]=1,M=1,ae=1):ae=We}while(!1);Fo=Mt(u)|0,We=(os(o,l)|0)!=4,!(Ge|Lt|((A|0)!=1|Fo)|(We|(ae|0)==1))&&(h[qr>>2]=u,n[$t>>2]=1,!tt)&&(h[fr>>2]=y(y(u-Ze)/Qe),n[Tr>>2]=1,M=1),!(Hr|ct|((k|0)!=1|(Mt(d)|0))|(We|(M|0)==1))&&(h[fr>>2]=d,n[Tr>>2]=1,!tt)&&(h[qr>>2]=y(Qe*y(d-He)),n[$t>>2]=1),Bu(l,2,m,m,$t,qr),Bu(l,0,B,m,Tr,fr),u=y(h[qr>>2]),d=y(h[fr>>2]),kl(l,u,d,T,n[$t>>2]|0,n[Tr>>2]|0,m,B,0,3565,_)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y($n(B,y(Ka(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=Hn}function Gn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Kg(o,l,u,A)),y($n(A,y(Ka(o,l,d))))}function os(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Jg(n[o+4>>2]|0)|0&&(l=1),l|0}function Ql(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Tl(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Bu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Xr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(yn(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A<u?A:u;break}case 0:{Mt(u)|0||(n[d>>2]=2,h[m>>2]=u);break}default:}}function ga(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function XA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function $A(o,l,u){o=o|0,l=l|0,u=y(u);var A=Xe;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(J(o,l,u))),y(A+y(re(o,l,u)))}function XL(o){o=o|0;var l=0,u=0,A=0;e:do if(Jg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Li(o)|0,!u)l=0;else for(l=0;;){if(A=Cs(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function $L(o,l){o=o|0,l=l|0;var u=Xe;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function Vg(o){o=o|0;var l=Xe,u=0,A=0,d=0,m=0,B=0,k=0,T=Xe;if(u=n[o+968>>2]|0,u)T=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(I$[u&0](o,T,l)),wi(o,(Mt(l)|0)^1,3573);else{m=Li(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Cs(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(os(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(Vg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Kg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=Xe,m=0;return Jg(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(ce),d=y(ce)),(m|0)==3&&(d=y(Xr(o+364+(l<<3)|0,A)),A=y(Xr(o+380+(l<<3)|0,A))),m=A<u&(A>=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u<d,y(m?d:u)}function eM(o,l,u,A,d,m,B){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,B=B|0;var k=Xe,T=Xe,_=0,M=0,G=Xe,ae=Xe,We=Xe,Le=0,Qe=0,tt=0,Ze=0,ct=Xe,He=0;tt=dr(n[o+4>>2]|0,m)|0,Le=by(tt,m)|0,Qe=de(tt)|0,G=y(yn(l,2,u)),ae=y(yn(l,0,u)),so(l,2,u)|0?k=y(G+y(Xr(n[l+992>>2]|0,u))):ga(l,2)|0&&xy(l,2)|0?(k=y(h[o+908>>2]),T=y(Br(o,2)),T=y(k-y(T+y(_n(o,2)))),k=y(XA(l,2,u)),k=y(Gn(l,2,y(T-y(k+y(Nh(l,2,u)))),u,u))):k=y(ce),so(l,0,d)|0?T=y(ae+y(Xr(n[l+996>>2]|0,d))):ga(l,0)|0&&xy(l,0)|0?(T=y(h[o+912>>2]),ct=y(Br(o,0)),ct=y(T-y(ct+y(_n(o,0)))),T=y(XA(l,0,d)),T=y(Gn(l,0,y(ct-y(T+y(Nh(l,0,d)))),d,u))):T=y(ce),_=Mt(k)|0,M=Mt(T)|0;do if(_^M&&(We=y(h[l+396>>2]),!(Mt(We)|0)))if(_){k=y(G+y(y(T-ae)*We));break}else{ct=y(ae+y(y(k-G)/We)),T=M?ct:T;break}while(!1);M=Mt(k)|0,_=Mt(T)|0,M|_&&(He=(M^1)&1,A=u>y(0)&((A|0)!=0&M),k=Qe?k:A?u:k,kl(l,k,T,m,Qe?He:A?2:He,M&(_^1)&1,k,T,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(yn(l,2,u))),T=y(h[l+912>>2]),T=y(T+y(yn(l,0,u)))),kl(l,k,T,m,1,1,k,T,1,3635,B)|0,xy(l,tt)|0&&!(ga(l,tt)|0)?(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(_n(o,tt))),ct=y(ct-y(re(l,tt,u))),ct=y(ct-y(Nh(l,tt,Qe?u:d))),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct):Ze=21;do if((Ze|0)==21){if(!(ga(l,tt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct;break}!(ga(l,tt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct)}while(!1);xy(l,Le)|0&&!(ga(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(_n(o,Le))),ct=y(ct-y(re(l,Le,u))),ct=y(ct-y(Nh(l,Le,Qe?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct):Ze=30;do if((Ze|0)==30&&!(ga(l,Le)|0)){if((os(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct;break}He=(os(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct)}while(!1)}function a2(o,l,u){o=o|0,l=l|0,u=u|0;var A=Xe,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Jg(o){return o=o|0,(o|1|0)==1|0}function tM(o){o=o|0;var l=Xe;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function l2(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function xy(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Nh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function vP(o,l,u){return o=o|0,l=l|0,u=y(u),ga(o,l)|0?u=y(XA(o,l,u)):u=y(-y(Nh(o,l,u))),y(u)}function SP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function ky(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function DP(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Qy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&yt(o)}function bP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0<u>>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0<u>>>0)}m|0&&F2(k+(0-m<<2)|0,l|0,d|0)|0}function PP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return k=l+4|0,T=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=T+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],T|0}function c2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function u2(){fa()}function xP(){var o=0;return o=Jt(4)|0,f2(o),o|0}function f2(o){o=o|0,n[o>>2]=pc()|0}function kP(o){o=o|0,o|0&&(zg(o),yt(o))}function zg(o){o=o|0,st(n[o>>2]|0)}function rM(o,l,u){o=o|0,l=l|0,u=u|0,hc(n[o>>2]|0,l,u)}function Ty(o,l){o=o|0,l=y(l),xh(n[o>>2]|0,l)}function Ry(o,l){return o=o|0,l=l|0,l2(n[o>>2]|0,l)|0}function Fy(){var o=0;return o=Jt(8)|0,Zg(o,0),o|0}function Zg(o,l){o=o|0,l=l|0,l?l=Aa(n[l>>2]|0)|0:l=ns()|0,n[o>>2]=l,n[o+4>>2]=0,Tn(l,o)}function Ny(o){o=o|0;var l=0;return l=Jt(8)|0,Zg(l,o),l|0}function Xg(o){o=o|0,o|0&&(Oy(o),yt(o))}function Oy(o){o=o|0;var l=0;fc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Df(o),yt(o))}function Df(o){o=o|0,bf(o)}function bf(o){o=o|0,o=n[o>>2]|0,o|0&&Oa(o|0)}function A2(o){return o=o|0,Ga(o)|0}function p2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Df(l),yt(l)),Ac(n[o>>2]|0)}function Ly(o,l){o=o|0,l=l|0,fn(n[o>>2]|0,n[l>>2]|0)}function nM(o,l){o=o|0,l=l|0,Sh(n[o>>2]|0,l)}function iM(o,l,u){o=o|0,l=l|0,u=+u,Cy(n[o>>2]|0,l,y(u))}function My(o,l,u){o=o|0,l=l|0,u=+u,wy(n[o>>2]|0,l,y(u))}function h2(o,l){o=o|0,l=l|0,wh(n[o>>2]|0,l)}function g2(o,l){o=o|0,l=l|0,bo(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,vh(n[o>>2]|0,l)}function oo(o,l){o=o|0,l=l|0,my(n[o>>2]|0,l)}function Zi(o,l){o=o|0,l=l|0,Og(n[o>>2]|0,l)}function Os(o,l){o=o|0,l=l|0,Do(n[o>>2]|0,l)}function ep(o,l,u){o=o|0,l=l|0,u=+u,qA(n[o>>2]|0,l,y(u))}function d2(o,l,u){o=o|0,l=l|0,u=+u,Y(n[o>>2]|0,l,y(u))}function Bs(o,l){o=o|0,l=l|0,GA(n[o>>2]|0,l)}function _y(o,l){o=o|0,l=l|0,Ey(n[o>>2]|0,l)}function Oh(o,l){o=o|0,l=l|0,Po(n[o>>2]|0,l)}function $g(o,l){o=o|0,l=+l,Dh(n[o>>2]|0,y(l))}function Lh(o,l){o=o|0,l=+l,Pl(n[o>>2]|0,y(l))}function m2(o,l){o=o|0,l=+l,Iy(n[o>>2]|0,y(l))}function y2(o,l){o=o|0,l=+l,Mg(n[o>>2]|0,y(l))}function E2(o,l){o=o|0,l=+l,bl(n[o>>2]|0,y(l))}function I2(o,l){o=o|0,l=+l,_g(n[o>>2]|0,y(l))}function Pf(o,l){o=o|0,l=+l,n2(n[o>>2]|0,y(l))}function sr(o){o=o|0,bh(n[o>>2]|0)}function Uy(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function C2(o,l){o=o|0,l=+l,Ef(n[o>>2]|0,y(l))}function gc(o){o=o|0,Wa(n[o>>2]|0)}function xf(o,l){o=o|0,l=+l,yu(n[o>>2]|0,y(l))}function ed(o,l){o=o|0,l=+l,If(n[o>>2]|0,y(l))}function td(o,l){o=o|0,l=+l,gi(n[o>>2]|0,y(l))}function w2(o,l){o=o|0,l=+l,WA(n[o>>2]|0,y(l))}function B2(o,l){o=o|0,l=+l,pa(n[o>>2]|0,y(l))}function vu(o,l){o=o|0,l=+l,Va(n[o>>2]|0,y(l))}function rd(o,l){o=o|0,l=+l,Ph(n[o>>2]|0,y(l))}function v2(o,l){o=o|0,l=+l,jg(n[o>>2]|0,y(l))}function Hy(o,l){o=o|0,l=+l,YA(n[o>>2]|0,y(l))}function Su(o,l,u){o=o|0,l=l|0,u=+u,mu(n[o>>2]|0,l,y(u))}function jy(o,l,u){o=o|0,l=l|0,u=+u,xo(n[o>>2]|0,l,y(u))}function nd(o,l,u){o=o|0,l=l|0,u=+u,yf(n[o>>2]|0,l,y(u))}function id(o){return o=o|0,Ng(n[o>>2]|0)|0}function To(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,jA(d,n[l>>2]|0,u),vs(o,d),I=A}function vs(o,l){o=o|0,l=l|0,Rl(o,n[l+4>>2]|0,+y(h[l>>2]))}function Rl(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function qy(o){return o=o|0,r2(n[o>>2]|0)|0}function da(o){return o=o|0,Bh(n[o>>2]|0)|0}function QP(o){return o=o|0,du(n[o>>2]|0)|0}function Mh(o){return o=o|0,t2(n[o>>2]|0)|0}function S2(o){return o=o|0,Lg(n[o>>2]|0)|0}function sM(o){return o=o|0,yy(n[o>>2]|0)|0}function TP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),vs(o,d),I=A}function RP(o){return o=o|0,mf(n[o>>2]|0)|0}function Gy(o){return o=o|0,Dl(n[o>>2]|0)|0}function D2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,HA(A,n[l>>2]|0),vs(o,A),I=u}function _h(o){return o=o|0,+ +y(ai(n[o>>2]|0))}function FP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function NP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),vs(o,A),I=u}function sd(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ug(A,n[l>>2]|0),vs(o,A),I=u}function oM(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),vs(o,A),I=u}function aM(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ya(A,n[l>>2]|0),vs(o,A),I=u}function OP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Hg(A,n[l>>2]|0),vs(o,A),I=u}function LP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,vy(A,n[l>>2]|0),vs(o,A),I=u}function tp(o){return o=o|0,+ +y(qg(n[o>>2]|0))}function lM(o,l){return o=o|0,l=l|0,+ +y(By(n[o>>2]|0,l))}function cM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,dt(d,n[l>>2]|0,u),vs(o,d),I=A}function Du(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function uM(o,l){o=o|0,l=l|0,df(n[o>>2]|0,n[l>>2]|0)}function MP(o){return o=o|0,Li(n[o>>2]|0)|0}function fM(o){return o=o|0,o=mt(n[o>>2]|0)|0,o?o=A2(o)|0:o=0,o|0}function _P(o,l){return o=o|0,l=l|0,o=Cs(n[o>>2]|0,l)|0,o?o=A2(o)|0:o=0,o|0}function kf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Jt(4)|0,UP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Df(l),yt(l)),St(n[o>>2]|0,1)}function UP(o,l){o=o|0,l=l|0,gM(o,l)}function AM(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,HP(k,Ga(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function HP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,T=0,_=0,M=0;B=I,I=I+32|0,M=B+8|0,_=B+20|0,T=B,k=B+16|0,E[M>>3]=u,n[_>>2]=A,E[T>>3]=d,n[k>>2]=m,Wy(o,n[l+4>>2]|0,M,_,T,k),I=B}function Wy(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Nl(k),l=Ls(l)|0,jP(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Ol(k),I=B}function Ls(o){return o=o|0,n[o>>2]|0}function jP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=ma(b2()|0)|0,u=+Ja(u),A=Yy(A)|0,d=+Ja(d),pM(o,Jn(0,B|0,l|0,+u,A|0,+d,Yy(m)|0)|0)}function b2(){var o=0;return s[7608]|0||(x2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function ma(o){return o=o|0,n[o+8>>2]|0}function Ja(o){return o=+o,+ +Qf(o)}function Yy(o){return o=o|0,od(o)|0}function pM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(za(u,0),Me(A|0,u|0)|0,P2(o,u),hM(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function za(o,l){o=o|0,l=l|0,bu(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function P2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function hM(o){o=o|0,s[o+24>>0]=0}function bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function od(o){return o=o|0,o|0}function Qf(o){return o=+o,+o}function x2(o){o=o|0,Ro(o,k2()|0,4)}function k2(){return 1064}function Ro(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=ji(l|0,u+1|0)|0}function gM(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,cu(l|0)}function qP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Df(l),yt(l)),St(n[o>>2]|0,0)}function GP(o){o=o|0,Dt(n[o>>2]|0)}function Vy(o){return o=o|0,tr(n[o>>2]|0)|0}function dM(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,KA(n[o>>2]|0,y(l),y(u),A)}function mM(o){return o=o|0,+ +y(Eu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(Cf(n[o>>2]|0))}function D(o){return o=o|0,+ +y(Iu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Fs(n[o>>2]|0))}function H(o){return o=o|0,+ +y(Cu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(qn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(Eu(n[l>>2]|0)),E[o+8>>3]=+y(Cf(n[l>>2]|0)),E[o+16>>3]=+y(Iu(n[l>>2]|0)),E[o+24>>3]=+y(Fs(n[l>>2]|0)),E[o+32>>3]=+y(Cu(n[l>>2]|0)),E[o+40>>3]=+y(qn(n[l>>2]|0))}function Se(o,l){return o=o|0,l=l|0,+ +y(is(n[o>>2]|0,l))}function Ue(o,l){return o=o|0,l=l|0,+ +y(xi(n[o>>2]|0,l))}function At(o,l){return o=o|0,l=l|0,+ +y(VA(n[o>>2]|0,l))}function Gt(){return Qn()|0}function vr(){Lr(),Xt(),zn(),mi(),Za(),$e()}function Lr(){Kqe(11713,4938,1)}function Xt(){pqe(10448)}function zn(){K6e(10408)}function mi(){m6e(10324)}function Za(){SHe(10096)}function $e(){qe(9132)}function qe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,Fo=0,No=0,Oo=0,$a=0,Kh=0,Jh=0,dc=0,zh=0,Ff=0,Nf=0,Zh=0,Xh=0,$h=0,on=0,mc=0,e0=0,ku=0,t0=0,r0=0,Of=0,Lf=0,Qu=0,ao=0,Ml=0,ya=0,yc=0,lp=0,cp=0,Mf=0,up=0,fp=0,lo=0,_s=0,Ec=0,Wn=0,Ap=0,Lo=0,Tu=0,Mo=0,Ru=0,pp=0,hp=0,Fu=0,co=0,Ic=0,gp=0,dp=0,mp=0,Fr=0,ci=0,Us=0,_o=0,uo=0,Mr=0,Ar=0,Cc=0;l=I,I=I+672|0,u=l+656|0,Cc=l+648|0,Ar=l+640|0,Mr=l+632|0,uo=l+624|0,_o=l+616|0,Us=l+608|0,ci=l+600|0,Fr=l+592|0,mp=l+584|0,dp=l+576|0,gp=l+568|0,Ic=l+560|0,co=l+552|0,Fu=l+544|0,hp=l+536|0,pp=l+528|0,Ru=l+520|0,Mo=l+512|0,Tu=l+504|0,Lo=l+496|0,Ap=l+488|0,Wn=l+480|0,Ec=l+472|0,_s=l+464|0,lo=l+456|0,fp=l+448|0,up=l+440|0,Mf=l+432|0,cp=l+424|0,lp=l+416|0,yc=l+408|0,ya=l+400|0,Ml=l+392|0,ao=l+384|0,Qu=l+376|0,Lf=l+368|0,Of=l+360|0,r0=l+352|0,t0=l+344|0,ku=l+336|0,e0=l+328|0,mc=l+320|0,on=l+312|0,$h=l+304|0,Xh=l+296|0,Zh=l+288|0,Nf=l+280|0,Ff=l+272|0,zh=l+264|0,dc=l+256|0,Jh=l+248|0,Kh=l+240|0,$a=l+232|0,Oo=l+224|0,No=l+216|0,Fo=l+208|0,Hn=l+200|0,cr=l+192|0,Hr=l+184|0,Tr=l+176|0,$t=l+168|0,fr=l+160|0,qr=l+152|0,Lt=l+144|0,Ge=l+136|0,He=l+128|0,ct=l+120|0,Ze=l+112|0,tt=l+104|0,Qe=l+96|0,Le=l+88|0,We=l+80|0,ae=l+72|0,G=l+64|0,M=l+56|0,_=l+48|0,T=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,pt(o,3646),Zt(o,3651,2)|0,Sr(o,3665,2)|0,Xn(o,3682,18)|0,n[Cc>>2]=19,n[Cc+4>>2]=0,n[u>>2]=n[Cc>>2],n[u+4>>2]=n[Cc+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Rn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],Un(o,3706,u)|0,n[uo>>2]=1,n[uo+4>>2]=0,n[u>>2]=n[uo>>2],n[u+4>>2]=n[uo+4>>2],zr(o,3722,u)|0,n[_o>>2]=2,n[_o+4>>2]=0,n[u>>2]=n[_o>>2],n[u+4>>2]=n[_o+4>>2],zr(o,3734,u)|0,n[Us>>2]=3,n[Us+4>>2]=0,n[u>>2]=n[Us>>2],n[u+4>>2]=n[Us+4>>2],Un(o,3753,u)|0,n[ci>>2]=4,n[ci+4>>2]=0,n[u>>2]=n[ci>>2],n[u+4>>2]=n[ci+4>>2],Un(o,3769,u)|0,n[Fr>>2]=5,n[Fr+4>>2]=0,n[u>>2]=n[Fr>>2],n[u+4>>2]=n[Fr+4>>2],Un(o,3783,u)|0,n[mp>>2]=6,n[mp+4>>2]=0,n[u>>2]=n[mp>>2],n[u+4>>2]=n[mp+4>>2],Un(o,3796,u)|0,n[dp>>2]=7,n[dp+4>>2]=0,n[u>>2]=n[dp>>2],n[u+4>>2]=n[dp+4>>2],Un(o,3813,u)|0,n[gp>>2]=8,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],Un(o,3825,u)|0,n[Ic>>2]=3,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],zr(o,3843,u)|0,n[co>>2]=4,n[co+4>>2]=0,n[u>>2]=n[co>>2],n[u+4>>2]=n[co+4>>2],zr(o,3853,u)|0,n[Fu>>2]=9,n[Fu+4>>2]=0,n[u>>2]=n[Fu>>2],n[u+4>>2]=n[Fu+4>>2],Un(o,3870,u)|0,n[hp>>2]=10,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],Un(o,3884,u)|0,n[pp>>2]=11,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],Un(o,3896,u)|0,n[Ru>>2]=1,n[Ru+4>>2]=0,n[u>>2]=n[Ru>>2],n[u+4>>2]=n[Ru+4>>2],li(o,3907,u)|0,n[Mo>>2]=2,n[Mo+4>>2]=0,n[u>>2]=n[Mo>>2],n[u+4>>2]=n[Mo+4>>2],li(o,3915,u)|0,n[Tu>>2]=3,n[Tu+4>>2]=0,n[u>>2]=n[Tu>>2],n[u+4>>2]=n[Tu+4>>2],li(o,3928,u)|0,n[Lo>>2]=4,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],li(o,3948,u)|0,n[Ap>>2]=5,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],li(o,3960,u)|0,n[Wn>>2]=6,n[Wn+4>>2]=0,n[u>>2]=n[Wn>>2],n[u+4>>2]=n[Wn+4>>2],li(o,3974,u)|0,n[Ec>>2]=7,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],li(o,3983,u)|0,n[_s>>2]=20,n[_s+4>>2]=0,n[u>>2]=n[_s>>2],n[u+4>>2]=n[_s+4>>2],kr(o,3999,u)|0,n[lo>>2]=8,n[lo+4>>2]=0,n[u>>2]=n[lo>>2],n[u+4>>2]=n[lo+4>>2],li(o,4012,u)|0,n[fp>>2]=9,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],li(o,4022,u)|0,n[up>>2]=21,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],kr(o,4039,u)|0,n[Mf>>2]=10,n[Mf+4>>2]=0,n[u>>2]=n[Mf>>2],n[u+4>>2]=n[Mf+4>>2],li(o,4053,u)|0,n[cp>>2]=11,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],li(o,4065,u)|0,n[lp>>2]=12,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],li(o,4084,u)|0,n[yc>>2]=13,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],li(o,4097,u)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[u>>2]=n[ya>>2],n[u+4>>2]=n[ya+4>>2],li(o,4117,u)|0,n[Ml>>2]=15,n[Ml+4>>2]=0,n[u>>2]=n[Ml>>2],n[u+4>>2]=n[Ml+4>>2],li(o,4129,u)|0,n[ao>>2]=16,n[ao+4>>2]=0,n[u>>2]=n[ao>>2],n[u+4>>2]=n[ao+4>>2],li(o,4148,u)|0,n[Qu>>2]=17,n[Qu+4>>2]=0,n[u>>2]=n[Qu>>2],n[u+4>>2]=n[Qu+4>>2],li(o,4161,u)|0,n[Lf>>2]=18,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],li(o,4181,u)|0,n[Of>>2]=5,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],zr(o,4196,u)|0,n[r0>>2]=6,n[r0+4>>2]=0,n[u>>2]=n[r0>>2],n[u+4>>2]=n[r0+4>>2],zr(o,4206,u)|0,n[t0>>2]=7,n[t0+4>>2]=0,n[u>>2]=n[t0>>2],n[u+4>>2]=n[t0+4>>2],zr(o,4217,u)|0,n[ku>>2]=3,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],Pu(o,4235,u)|0,n[e0>>2]=1,n[e0+4>>2]=0,n[u>>2]=n[e0>>2],n[u+4>>2]=n[e0+4>>2],yM(o,4251,u)|0,n[mc>>2]=4,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],Pu(o,4263,u)|0,n[on>>2]=5,n[on+4>>2]=0,n[u>>2]=n[on>>2],n[u+4>>2]=n[on+4>>2],Pu(o,4279,u)|0,n[$h>>2]=6,n[$h+4>>2]=0,n[u>>2]=n[$h>>2],n[u+4>>2]=n[$h+4>>2],Pu(o,4293,u)|0,n[Xh>>2]=7,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],Pu(o,4306,u)|0,n[Zh>>2]=8,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],Pu(o,4323,u)|0,n[Nf>>2]=9,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],Pu(o,4335,u)|0,n[Ff>>2]=2,n[Ff+4>>2]=0,n[u>>2]=n[Ff>>2],n[u+4>>2]=n[Ff+4>>2],yM(o,4353,u)|0,n[zh>>2]=12,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],ad(o,4363,u)|0,n[dc>>2]=1,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],rp(o,4376,u)|0,n[Jh>>2]=2,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],rp(o,4388,u)|0,n[Kh>>2]=13,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],ad(o,4402,u)|0,n[$a>>2]=14,n[$a+4>>2]=0,n[u>>2]=n[$a>>2],n[u+4>>2]=n[$a+4>>2],ad(o,4411,u)|0,n[Oo>>2]=15,n[Oo+4>>2]=0,n[u>>2]=n[Oo>>2],n[u+4>>2]=n[Oo+4>>2],ad(o,4421,u)|0,n[No>>2]=16,n[No+4>>2]=0,n[u>>2]=n[No>>2],n[u+4>>2]=n[No+4>>2],ad(o,4433,u)|0,n[Fo>>2]=17,n[Fo+4>>2]=0,n[u>>2]=n[Fo>>2],n[u+4>>2]=n[Fo+4>>2],ad(o,4446,u)|0,n[Hn>>2]=18,n[Hn+4>>2]=0,n[u>>2]=n[Hn>>2],n[u+4>>2]=n[Hn+4>>2],ad(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],rp(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],WP(o,4486,u)|0,n[Tr>>2]=10,n[Tr+4>>2]=0,n[u>>2]=n[Tr>>2],n[u+4>>2]=n[Tr+4>>2],Pu(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],Pu(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],yM(o,4519,u)|0,n[qr>>2]=4,n[qr+4>>2]=0,n[u>>2]=n[qr>>2],n[u+4>>2]=n[qr+4>>2],rLe(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],nLe(o,4542,u)|0,n[Ge>>2]=12,n[Ge+4>>2]=0,n[u>>2]=n[Ge>>2],n[u+4>>2]=n[Ge+4>>2],iLe(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],sLe(o,4568,u)|0,n[ct>>2]=2,n[ct+4>>2]=0,n[u>>2]=n[ct>>2],n[u+4>>2]=n[ct+4>>2],oLe(o,4578,u)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[u>>2]=n[Ze>>2],n[u+4>>2]=n[Ze+4>>2],aLe(o,4587,u)|0,n[tt>>2]=22,n[tt+4>>2]=0,n[u>>2]=n[tt>>2],n[u+4>>2]=n[tt+4>>2],kr(o,4602,u)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[u>>2]=n[Qe>>2],n[u+4>>2]=n[Qe+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],lLe(o,4629,u)|0,n[We>>2]=1,n[We+4>>2]=0,n[u>>2]=n[We>>2],n[u+4>>2]=n[We+4>>2],cLe(o,4637,u)|0,n[ae>>2]=4,n[ae+4>>2]=0,n[u>>2]=n[ae>>2],n[u+4>>2]=n[ae+4>>2],rp(o,4653,u)|0,n[G>>2]=5,n[G+4>>2]=0,n[u>>2]=n[G>>2],n[u+4>>2]=n[G+4>>2],rp(o,4669,u)|0,n[M>>2]=6,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],rp(o,4686,u)|0,n[_>>2]=7,n[_+4>>2]=0,n[u>>2]=n[_>>2],n[u+4>>2]=n[_+4>>2],rp(o,4701,u)|0,n[T>>2]=8,n[T+4>>2]=0,n[u>>2]=n[T>>2],n[u+4>>2]=n[T+4>>2],rp(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],rp(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],uLe(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],WP(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],WP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],WP(o,4808,u)|0,I=l}function pt(o,l){o=o|0,l=l|0;var u=0;u=dHe()|0,n[o>>2]=u,mHe(u,l),Wh(n[o>>2]|0)}function Zt(o,l,u){return o=o|0,l=l|0,u=u|0,rHe(o,Bn(l)|0,u,0),o|0}function Sr(o,l,u){return o=o|0,l=l|0,u=u|0,U8e(o,Bn(l)|0,u,0),o|0}function Xn(o,l,u){return o=o|0,l=l|0,u=u|0,D8e(o,Bn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u8e(o,l,d),I=A,o|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],W3e(o,l,d),I=A,o|0}function Un(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],x3e(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],p3e(o,l,d),I=A,o|0}function li(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Z4e(o,l,d),I=A,o|0}function Pu(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],N4e(o,l,d),I=A,o|0}function yM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],E4e(o,l,d),I=A,o|0}function ad(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WUe(o,l,d),I=A,o|0}function rp(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xUe(o,l,d),I=A,o|0}function WP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pUe(o,l,d),I=A,o|0}function rLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Z_e(o,l,d),I=A,o|0}function nLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],N_e(o,l,d),I=A,o|0}function iLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],I_e(o,l,d),I=A,o|0}function sLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],s_e(o,l,d),I=A,o|0}function oLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jMe(o,l,d),I=A,o|0}function aLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SMe(o,l,d),I=A,o|0}function lLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cMe(o,l,d),I=A,o|0}function cLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WLe(o,l,d),I=A,o|0}function uLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fLe(o,l,d),I=A,o|0}function fLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ALe(o,u,d,1),I=A}function Bn(o){return o=o|0,o|0}function ALe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=pLe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,hLe(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7616]|0||(eZ(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));eZ(9136)}return 9136}function pLe(o){return o=o|0,0}function hLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=EM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],$z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mLe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function vn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0;B=I,I=I+32|0,ae=B+24|0,G=B+20|0,T=B+16|0,M=B+12|0,_=B+8|0,k=B+4|0,We=B,n[G>>2]=l,n[T>>2]=u,n[M>>2]=A,n[_>>2]=d,n[k>>2]=m,m=o+28|0,n[We>>2]=n[m>>2],n[ae>>2]=n[We>>2],gLe(o+24|0,ae,G,M,_,T,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function gLe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=dLe(l)|0,l=Jt(24)|0,Xz(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function dLe(o){return o=o|0,n[o>>2]|0}function Xz(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function $z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yLe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,ELe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],$z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,ILe(o,k),CLe(k),I=_;return}}function yLe(o){return o=o|0,357913941}function ELe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function ILe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function eZ(o){o=o|0,vLe(o)}function wLe(o){o=o|0,BLe(o+24|0)}function Ur(o){return o=o|0,n[o>>2]|0}function BLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function vLe(o){o=o|0;var l=0;l=en()|0,tn(o,2,3,l,SLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function en(){return 9228}function SLe(){return 1140}function DLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=bLe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=PLe(l,A)|0,I=u,l|0}function tn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function bLe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function PLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&31](A,o),A=xLe(A)|0,I=d,A|0}function xLe(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=IM(tZ()|0)|0,A?(CM(l,A),wM(u,l),kLe(o,u),o=BM(l)|0):o=QLe(o)|0,I=d,o|0}function tZ(){var o=0;return s[7632]|0||(HLe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function IM(o){return o=o|0,n[o+36>>2]|0}function CM(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function wM(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function kLe(o,l){o=o|0,l=l|0,NLe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function BM(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function QLe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;T=I,I=I+16|0,u=T+4|0,A=T,d=Fl(8)|0,m=d,B=Jt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Jt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],rZ(k,B,u),n[d>>2]=k,I=T,m|0}function rZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function TLe(o){o=o|0,$y(o),yt(o)}function RLe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function FLe(o){o=o|0,yt(o)}function NLe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=OLe(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function OLe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,T=0;return k=I,I=I+16|0,T=k,Nl(T),o=Ls(o)|0,B=LLe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Ol(T),I=k,B|0}function LLe(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=ma(MLe()|0)|0,l=+Ja(l),u=+Ja(u),A=+Ja(A),d=+Ja(d),m=+Ja(m),no(0,k|0,o|0,+l,+u,+A,+d,+m,+ +Ja(B))|0}function MLe(){var o=0;return s[7624]|0||(_Le(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function _Le(o){o=o|0,Ro(o,ULe()|0,6)}function ULe(){return 1112}function HLe(o){o=o|0,Uh(o)}function jLe(o){o=o|0,nZ(o+24|0),iZ(o+16|0)}function nZ(o){o=o|0,GLe(o)}function iZ(o){o=o|0,qLe(o)}function qLe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,yt(u);while(l|0);n[o>>2]=0}function GLe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,yt(u);while(l|0);n[o>>2]=0}function Uh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function WLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YLe(o,u,d,0),I=A}function YLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=VLe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,KLe(m,A)|0,A),I=d}function vM(){var o=0,l=0;if(s[7640]|0||(oZ(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oZ(9232)}return 9232}function VLe(o){return o=o|0,0}function KLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=vM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],sZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JLe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function sZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zLe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,ZLe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],sZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XLe(o,k),$Le(k),I=_;return}}function zLe(o){return o=o|0,357913941}function ZLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Le(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function oZ(o){o=o|0,rMe(o)}function eMe(o){o=o|0,tMe(o+24|0)}function tMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function rMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,nMe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function nMe(){return 1144}function iMe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,B=m+8|0,k=m,T=sMe(o)|0,o=n[T+4>>2]|0,n[k>>2]=n[T>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],oMe(l,B,u,A,d),I=m}function sMe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function oMe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0,_=0;_=I,I=I+16|0,B=_+2|0,k=_+1|0,T=_,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Tf(B,u),u=+Rf(B,u),Tf(k,A),A=+Rf(k,A),np(T,d),T=ip(T,d)|0,C$[m&1](o,u,A,T),I=_}function Tf(o,l){o=o|0,l=+l}function Rf(o,l){return o=o|0,l=+l,+ +lMe(l)}function np(o,l){o=o|0,l=l|0}function ip(o,l){return o=o|0,l=l|0,aMe(l)|0}function aMe(o){return o=o|0,o|0}function lMe(o){return o=+o,+o}function cMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uMe(o,u,d,1),I=A}function uMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=fMe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,AMe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7648]|0||(lZ(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lZ(9268)}return 9268}function fMe(o){return o=o|0,0}function AMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=SM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],aZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(pMe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function aZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function pMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=hMe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,gMe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],aZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,dMe(o,k),mMe(k),I=_;return}}function hMe(o){return o=o|0,357913941}function gMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function dMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function mMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function lZ(o){o=o|0,IMe(o)}function yMe(o){o=o|0,EMe(o+24|0)}function EMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function IMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,4,l,CMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function CMe(){return 1160}function wMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=BMe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=vMe(l,A)|0,I=u,l|0}function BMe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function vMe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),cZ(dd[u&31](o)|0)|0}function cZ(o){return o=o|0,o&1|0}function SMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DMe(o,u,d,0),I=A}function DMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=bMe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,PMe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7656]|0||(fZ(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));fZ(9304)}return 9304}function bMe(o){return o=o|0,0}function PMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=DM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],uZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(xMe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function uZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function xMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=kMe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,QMe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],uZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,TMe(o,k),RMe(k),I=_;return}}function kMe(o){return o=o|0,357913941}function QMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function TMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function RMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function fZ(o){o=o|0,OMe(o)}function FMe(o){o=o|0,NMe(o+24|0)}function NMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function OMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,LMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function LMe(){return 1164}function MMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=_Me(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UMe(l,d,u),I=A}function _Me(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function UMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Hh(d,u),u=jh(d,u)|0,ap[A&31](o,u),qh(d),I=m}function Hh(o,l){o=o|0,l=l|0,HMe(o,l)}function jh(o,l){return o=o|0,l=l|0,o|0}function qh(o){o=o|0,Df(o)}function HMe(o,l){o=o|0,l=l|0,bM(o,l)}function bM(o,l){o=o|0,l=l|0,n[o>>2]=l}function jMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qMe(o,u,d,0),I=A}function qMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=PM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=GMe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,WMe(m,A)|0,A),I=d}function PM(){var o=0,l=0;if(s[7664]|0||(pZ(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pZ(9340)}return 9340}function GMe(o){return o=o|0,0}function WMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=PM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],AZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(YMe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function AZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function YMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=VMe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,KMe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],AZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,JMe(o,k),zMe(k),I=_;return}}function VMe(o){return o=o|0,357913941}function KMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function JMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function zMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function pZ(o){o=o|0,$Me(o)}function ZMe(o){o=o|0,XMe(o+24|0)}function XMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function $Me(o){o=o|0;var l=0;l=en()|0,tn(o,2,4,l,e_e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function e_e(){return 1180}function t_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=r_e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=n_e(l,d,u)|0,I=A,u|0}function r_e(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o*12|0)|0}function n_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ld(d,u),d=cd(d,u)|0,d=YP(v_[A&15](o,d)|0)|0,I=m,d|0}function ld(o,l){o=o|0,l=l|0}function cd(o,l){return o=o|0,l=l|0,i_e(l)|0}function YP(o){return o=o|0,o|0}function i_e(o){return o=o|0,o|0}function s_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],o_e(o,u,d,0),I=A}function o_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=xM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=a_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,l_e(m,A)|0,A),I=d}function xM(){var o=0,l=0;if(s[7672]|0||(gZ(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));gZ(9376)}return 9376}function a_e(o){return o=o|0,0}function l_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=xM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],hZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(c_e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function hZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function c_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=u_e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,f_e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],hZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,A_e(o,k),p_e(k),I=_;return}}function u_e(o){return o=o|0,357913941}function f_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function A_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function p_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function gZ(o){o=o|0,d_e(o)}function h_e(o){o=o|0,g_e(o+24|0)}function g_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function d_e(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,dZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dZ(){return 1196}function m_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=y_e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=E_e(l,A)|0,I=u,l|0}function y_e(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o*12|0)|0}function E_e(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),YP(dd[u&31](o)|0)|0}function I_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],C_e(o,u,d,1),I=A}function C_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=kM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=w_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,B_e(m,A)|0,A),I=d}function kM(){var o=0,l=0;if(s[7680]|0||(yZ(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));yZ(9412)}return 9412}function w_e(o){return o=o|0,0}function B_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=kM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],mZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(v_e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function mZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function v_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=S_e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,D_e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],mZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,b_e(o,k),P_e(k),I=_;return}}function S_e(o){return o=o|0,357913941}function D_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function b_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function P_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function yZ(o){o=o|0,Q_e(o)}function x_e(o){o=o|0,k_e(o+24|0)}function k_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function Q_e(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,EZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function EZ(){return 1200}function T_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=R_e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=F_e(l,A)|0,I=u,l|0}function R_e(o){return o=o|0,(n[(kM()|0)+24>>2]|0)+(o*12|0)|0}function F_e(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),VP(dd[u&31](o)|0)|0}function VP(o){return o=o|0,o|0}function N_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],O_e(o,u,d,0),I=A}function O_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=QM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=L_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,M_e(m,A)|0,A),I=d}function QM(){var o=0,l=0;if(s[7688]|0||(CZ(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));CZ(9448)}return 9448}function L_e(o){return o=o|0,0}function M_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=QM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],IZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(__e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function IZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function __e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=U_e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,H_e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],IZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,j_e(o,k),q_e(k),I=_;return}}function U_e(o){return o=o|0,357913941}function H_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function j_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function q_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function CZ(o){o=o|0,Y_e(o)}function G_e(o){o=o|0,W_e(o+24|0)}function W_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function Y_e(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,wZ()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wZ(){return 1204}function V_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=K_e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],J_e(l,d,u),I=A}function K_e(o){return o=o|0,(n[(QM()|0)+24>>2]|0)+(o*12|0)|0}function J_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),TM(d,u),d=RM(d,u)|0,ap[A&31](o,d),I=m}function TM(o,l){o=o|0,l=l|0}function RM(o,l){return o=o|0,l=l|0,z_e(l)|0}function z_e(o){return o=o|0,o|0}function Z_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],X_e(o,u,d,0),I=A}function X_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=FM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=$_e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,eUe(m,A)|0,A),I=d}function FM(){var o=0,l=0;if(s[7696]|0||(vZ(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));vZ(9484)}return 9484}function $_e(o){return o=o|0,0}function eUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=FM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],BZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function BZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rUe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,nUe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],BZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,iUe(o,k),sUe(k),I=_;return}}function rUe(o){return o=o|0,357913941}function nUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function iUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function vZ(o){o=o|0,lUe(o)}function oUe(o){o=o|0,aUe(o+24|0)}function aUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function lUe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,cUe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cUe(){return 1212}function uUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=fUe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],AUe(l,m,u,A),I=d}function fUe(o){return o=o|0,(n[(FM()|0)+24>>2]|0)+(o*12|0)|0}function AUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),TM(m,u),m=RM(m,u)|0,ld(B,A),B=cd(B,A)|0,L2[d&15](o,m,B),I=k}function pUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hUe(o,u,d,1),I=A}function hUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=NM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=gUe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dUe(m,A)|0,A),I=d}function NM(){var o=0,l=0;if(s[7704]|0||(DZ(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));DZ(9520)}return 9520}function gUe(o){return o=o|0,0}function dUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=NM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],SZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function SZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yUe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,EUe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],SZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,IUe(o,k),CUe(k),I=_;return}}function yUe(o){return o=o|0,357913941}function EUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function IUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function DZ(o){o=o|0,vUe(o)}function wUe(o){o=o|0,BUe(o+24|0)}function BUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function vUe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,SUe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SUe(){return 1224}function DUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=bUe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+PUe(l,m,u),I=d,+A}function bUe(o){return o=o|0,(n[(NM()|0)+24>>2]|0)+(o*12|0)|0}function PUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(d,u),d=ip(d,u)|0,B=+Qf(+B$[A&7](o,d)),I=m,+B}function xUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kUe(o,u,d,1),I=A}function kUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=OM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=QUe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,TUe(m,A)|0,A),I=d}function OM(){var o=0,l=0;if(s[7712]|0||(PZ(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));PZ(9556)}return 9556}function QUe(o){return o=o|0,0}function TUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=OM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],bZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(RUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function bZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function RUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FUe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,NUe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],bZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,OUe(o,k),LUe(k),I=_;return}}function FUe(o){return o=o|0,357913941}function NUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function OUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function PZ(o){o=o|0,UUe(o)}function MUe(o){o=o|0,_Ue(o+24|0)}function _Ue(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function UUe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,HUe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HUe(){return 1232}function jUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=qUe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+GUe(l,d),I=A,+u}function qUe(o){return o=o|0,(n[(OM()|0)+24>>2]|0)+(o*12|0)|0}function GUe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +Qf(+w$[u&15](o))}function WUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YUe(o,u,d,1),I=A}function YUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=LM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=VUe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,KUe(m,A)|0,A),I=d}function LM(){var o=0,l=0;if(s[7720]|0||(kZ(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kZ(9592)}return 9592}function VUe(o){return o=o|0,0}function KUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=LM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],xZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JUe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function xZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zUe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,ZUe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],xZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XUe(o,k),$Ue(k),I=_;return}}function zUe(o){return o=o|0,357913941}function ZUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Ue(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function kZ(o){o=o|0,r4e(o)}function e4e(o){o=o|0,t4e(o+24|0)}function t4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function r4e(o){o=o|0;var l=0;l=en()|0,tn(o,2,7,l,n4e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function n4e(){return 1276}function i4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=s4e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=o4e(l,A)|0,I=u,l|0}function s4e(o){return o=o|0,(n[(LM()|0)+24>>2]|0)+(o*12|0)|0}function o4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&31](A,o),A=QZ(A)|0,I=d,A|0}function QZ(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=IM(TZ()|0)|0,A?(CM(l,A),wM(u,l),a4e(o,u),o=BM(l)|0):o=l4e(o)|0,I=d,o|0}function TZ(){var o=0;return s[7736]|0||(y4e(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function a4e(o,l){o=o|0,l=l|0,A4e(l,o,o+8|0)|0}function l4e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Fl(8)|0,l=A,k=Jt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],MM(o,m,d),n[A>>2]=o,I=u,l|0}function MM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function c4e(o){o=o|0,$y(o),yt(o)}function u4e(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function f4e(o){o=o|0,yt(o)}function A4e(o,l,u){return o=o|0,l=l|0,u=u|0,l=p4e(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function p4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,Nl(d),o=Ls(o)|0,u=h4e(o,n[l>>2]|0,+E[u>>3])|0,Ol(d),I=A,u|0}function h4e(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=ma(g4e()|0)|0,l=Yy(l)|0,lu(0,A|0,o|0,l|0,+ +Ja(u))|0}function g4e(){var o=0;return s[7728]|0||(d4e(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function d4e(o){o=o|0,Ro(o,m4e()|0,2)}function m4e(){return 1264}function y4e(o){o=o|0,Uh(o)}function E4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],I4e(o,u,d,1),I=A}function I4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=_M()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=C4e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,w4e(m,A)|0,A),I=d}function _M(){var o=0,l=0;if(s[7744]|0||(FZ(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));FZ(9684)}return 9684}function C4e(o){return o=o|0,0}function w4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=_M()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],RZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(B4e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function RZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function B4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=v4e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,S4e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],RZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,D4e(o,k),b4e(k),I=_;return}}function v4e(o){return o=o|0,357913941}function S4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function D4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function b4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function FZ(o){o=o|0,k4e(o)}function P4e(o){o=o|0,x4e(o+24|0)}function x4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function k4e(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,Q4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Q4e(){return 1280}function T4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=R4e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=F4e(l,d,u)|0,I=A,u|0}function R4e(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o*12|0)|0}function F4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(m,u),m=ip(m,u)|0,L2[A&15](d,o,m),m=QZ(d)|0,I=B,m|0}function N4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],O4e(o,u,d,1),I=A}function O4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=UM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=L4e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,M4e(m,A)|0,A),I=d}function UM(){var o=0,l=0;if(s[7752]|0||(OZ(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));OZ(9720)}return 9720}function L4e(o){return o=o|0,0}function M4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=UM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],NZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(_4e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function NZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function _4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=U4e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,H4e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],NZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,j4e(o,k),q4e(k),I=_;return}}function U4e(o){return o=o|0,357913941}function H4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function j4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function q4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function OZ(o){o=o|0,Y4e(o)}function G4e(o){o=o|0,W4e(o+24|0)}function W4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function Y4e(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,V4e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function V4e(){return 1288}function K4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=J4e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=z4e(l,A)|0,I=u,l|0}function J4e(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o*12|0)|0}function z4e(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),od(dd[u&31](o)|0)|0}function Z4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],X4e(o,u,d,0),I=A}function X4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=HM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=$4e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,e3e(m,A)|0,A),I=d}function HM(){var o=0,l=0;if(s[7760]|0||(MZ(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));MZ(9756)}return 9756}function $4e(o){return o=o|0,0}function e3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=HM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],LZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(t3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function LZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function t3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=r3e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,n3e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],LZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,i3e(o,k),s3e(k),I=_;return}}function r3e(o){return o=o|0,357913941}function n3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function i3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function s3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function MZ(o){o=o|0,l3e(o)}function o3e(o){o=o|0,a3e(o+24|0)}function a3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function l3e(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,c3e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function c3e(){return 1292}function u3e(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=f3e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],A3e(l,d,u),I=A}function f3e(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o*12|0)|0}function A3e(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Tf(d,u),u=+Rf(d,u),E$[A&31](o,u),I=m}function p3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],h3e(o,u,d,0),I=A}function h3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=jM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=g3e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,d3e(m,A)|0,A),I=d}function jM(){var o=0,l=0;if(s[7768]|0||(UZ(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));UZ(9792)}return 9792}function g3e(o){return o=o|0,0}function d3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=jM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_Z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(m3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function _Z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function m3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=y3e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,E3e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_Z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,I3e(o,k),C3e(k),I=_;return}}function y3e(o){return o=o|0,357913941}function E3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function I3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function C3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function UZ(o){o=o|0,v3e(o)}function w3e(o){o=o|0,B3e(o+24|0)}function B3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function v3e(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,S3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function S3e(){return 1300}function D3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=b3e(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],P3e(l,m,u,A),I=d}function b3e(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o*12|0)|0}function P3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),np(m,u),m=ip(m,u)|0,Tf(B,A),A=+Rf(B,A),b$[d&15](o,m,A),I=k}function x3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],k3e(o,u,d,0),I=A}function k3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=qM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=Q3e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,T3e(m,A)|0,A),I=d}function qM(){var o=0,l=0;if(s[7776]|0||(jZ(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jZ(9828)}return 9828}function Q3e(o){return o=o|0,0}function T3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=qM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],HZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(R3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function HZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function R3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=F3e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,N3e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],HZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,O3e(o,k),L3e(k),I=_;return}}function F3e(o){return o=o|0,357913941}function N3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function O3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function L3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function jZ(o){o=o|0,U3e(o)}function M3e(o){o=o|0,_3e(o+24|0)}function _3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function U3e(o){o=o|0;var l=0;l=en()|0,tn(o,2,7,l,H3e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function H3e(){return 1312}function j3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=q3e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],G3e(l,d,u),I=A}function q3e(o){return o=o|0,(n[(qM()|0)+24>>2]|0)+(o*12|0)|0}function G3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(d,u),d=ip(d,u)|0,ap[A&31](o,d),I=m}function W3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Y3e(o,u,d,0),I=A}function Y3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=GM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=V3e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,K3e(m,A)|0,A),I=d}function GM(){var o=0,l=0;if(s[7784]|0||(GZ(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));GZ(9864)}return 9864}function V3e(o){return o=o|0,0}function K3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=GM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],qZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(J3e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function qZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function J3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=z3e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,Z3e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,X3e(o,k),$3e(k),I=_;return}}function z3e(o){return o=o|0,357913941}function Z3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function X3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function GZ(o){o=o|0,r8e(o)}function e8e(o){o=o|0,t8e(o+24|0)}function t8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function r8e(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,n8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function n8e(){return 1320}function i8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=s8e(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],o8e(l,d,u),I=A}function s8e(o){return o=o|0,(n[(GM()|0)+24>>2]|0)+(o*12|0)|0}function o8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),a8e(d,u),d=l8e(d,u)|0,ap[A&31](o,d),I=m}function a8e(o,l){o=o|0,l=l|0}function l8e(o,l){return o=o|0,l=l|0,c8e(l)|0}function c8e(o){return o=o|0,o|0}function u8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],f8e(o,u,d,0),I=A}function f8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=WM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=A8e(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,p8e(m,A)|0,A),I=d}function WM(){var o=0,l=0;if(s[7792]|0||(YZ(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));YZ(9900)}return 9900}function A8e(o){return o=o|0,0}function p8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=WM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],WZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(h8e(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function WZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function h8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=g8e(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,d8e(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],WZ(m,A,u),n[T>>2]=(n[T>>2]|0)+12,m8e(o,k),y8e(k),I=_;return}}function g8e(o){return o=o|0,357913941}function d8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function m8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function y8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function YZ(o){o=o|0,C8e(o)}function E8e(o){o=o|0,I8e(o+24|0)}function I8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function C8e(o){o=o|0;var l=0;l=en()|0,tn(o,2,22,l,w8e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function w8e(){return 1344}function B8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=v8e(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],S8e(l,A),I=u}function v8e(o){return o=o|0,(n[(WM()|0)+24>>2]|0)+(o*12|0)|0}function S8e(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&127](o)}function D8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=YM()|0,o=b8e(u)|0,vn(m,l,d,o,P8e(u,A)|0,A)}function YM(){var o=0,l=0;if(s[7800]|0||(KZ(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));KZ(9936)}return 9936}function b8e(o){return o=o|0,o|0}function P8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=YM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(VZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(x8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function VZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function x8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=k8e(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,Q8e(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,VZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,T8e(o,d),R8e(d),I=k;return}}function k8e(o){return o=o|0,536870911}function Q8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function T8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function R8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function KZ(o){o=o|0,O8e(o)}function F8e(o){o=o|0,N8e(o+24|0)}function N8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function O8e(o){o=o|0;var l=0;l=en()|0,tn(o,1,23,l,wZ()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function L8e(o,l){o=o|0,l=l|0,_8e(n[(M8e(o)|0)>>2]|0,l)}function M8e(o){return o=o|0,(n[(YM()|0)+24>>2]|0)+(o<<3)|0}function _8e(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,TM(A,l),l=RM(A,l)|0,op[o&127](l),I=u}function U8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=VM()|0,o=H8e(u)|0,vn(m,l,d,o,j8e(u,A)|0,A)}function VM(){var o=0,l=0;if(s[7808]|0||(zZ(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Ur(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));zZ(9972)}return 9972}function H8e(o){return o=o|0,o|0}function j8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=VM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(JZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(q8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function JZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function q8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=G8e(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,W8e(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,JZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Y8e(o,d),V8e(d),I=k;return}}function G8e(o){return o=o|0,536870911}function W8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function Y8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function V8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function zZ(o){o=o|0,z8e(o)}function K8e(o){o=o|0,J8e(o+24|0)}function J8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function z8e(o){o=o|0;var l=0;l=en()|0,tn(o,1,9,l,Z8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Z8e(){return 1348}function X8e(o,l){return o=o|0,l=l|0,eHe(n[($8e(o)|0)>>2]|0,l)|0}function $8e(o){return o=o|0,(n[(VM()|0)+24>>2]|0)+(o<<3)|0}function eHe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ZZ(A,l),l=XZ(A,l)|0,l=YP(dd[o&31](l)|0)|0,I=u,l|0}function ZZ(o,l){o=o|0,l=l|0}function XZ(o,l){return o=o|0,l=l|0,tHe(l)|0}function tHe(o){return o=o|0,o|0}function rHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=KM()|0,o=nHe(u)|0,vn(m,l,d,o,iHe(u,A)|0,A)}function KM(){var o=0,l=0;if(s[7816]|0||(eX(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));eX(10008)}return 10008}function nHe(o){return o=o|0,o|0}function iHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=KM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?($Z(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(sHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function $Z(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function sHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=oHe(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,aHe(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,$Z(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,lHe(o,d),cHe(d),I=k;return}}function oHe(o){return o=o|0,536870911}function aHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function lHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function cHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function eX(o){o=o|0,AHe(o)}function uHe(o){o=o|0,fHe(o+24|0)}function fHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function AHe(o){o=o|0;var l=0;l=en()|0,tn(o,1,15,l,dZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function pHe(o){return o=o|0,gHe(n[(hHe(o)|0)>>2]|0)|0}function hHe(o){return o=o|0,(n[(KM()|0)+24>>2]|0)+(o<<3)|0}function gHe(o){return o=o|0,YP(ax[o&7]()|0)|0}function dHe(){var o=0;return s[7832]|0||(vHe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function mHe(o,l){o=o|0,l=l|0,n[o>>2]=yHe()|0,n[o+4>>2]=EHe()|0,n[o+12>>2]=l,n[o+8>>2]=IHe()|0,n[o+32>>2]=2}function yHe(){return 11709}function EHe(){return 1188}function IHe(){return KP()|0}function CHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(wHe(u),yt(u)):l|0&&(Oy(l),yt(l))}function Gh(o,l){return o=o|0,l=l|0,l&o|0}function wHe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function KP(){var o=0;return s[7824]|0||(n[2511]=BHe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function BHe(){return 0}function vHe(o){o=o|0,Uh(o)}function SHe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,DHe(o,4827),bHe(o,4834,3)|0,PHe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],xHe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],kHe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QHe(o,4891,u)|0,I=l}function DHe(o,l){o=o|0,l=l|0;var u=0;u=c6e()|0,n[o>>2]=u,u6e(u,l),Wh(n[o>>2]|0)}function bHe(o,l,u){return o=o|0,l=l|0,u=u|0,Vje(o,Bn(l)|0,u,0),o|0}function PHe(o,l,u){return o=o|0,l=l|0,u=u|0,Tje(o,Bn(l)|0,u,0),o|0}function xHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pje(o,l,d),I=A,o|0}function kHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KHe(o,l,d),I=A,o|0}function QHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],THe(o,l,d),I=A,o|0}function THe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RHe(o,u,d,1),I=A}function RHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=JM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=FHe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NHe(m,A)|0,A),I=d}function JM(){var o=0,l=0;if(s[7840]|0||(rX(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));rX(10100)}return 10100}function FHe(o){return o=o|0,0}function NHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=JM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],tX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(OHe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function tX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function OHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LHe(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,MHe(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],tX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,_He(o,k),UHe(k),I=_;return}}function LHe(o){return o=o|0,357913941}function MHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function _He(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function UHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function rX(o){o=o|0,qHe(o)}function HHe(o){o=o|0,jHe(o+24|0)}function jHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function qHe(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,GHe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function GHe(){return 1364}function WHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=YHe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=VHe(l,d,u)|0,I=A,u|0}function YHe(o){return o=o|0,(n[(JM()|0)+24>>2]|0)+(o*12|0)|0}function VHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(d,u),d=ip(d,u)|0,d=cZ(v_[A&15](o,d)|0)|0,I=m,d|0}function KHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JHe(o,u,d,0),I=A}function JHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=zM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=zHe(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ZHe(m,A)|0,A),I=d}function zM(){var o=0,l=0;if(s[7848]|0||(iX(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));iX(10136)}return 10136}function zHe(o){return o=o|0,0}function ZHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=zM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],nX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(XHe(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function nX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function XHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$He(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,eje(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],nX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,tje(o,k),rje(k),I=_;return}}function $He(o){return o=o|0,357913941}function eje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rje(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function iX(o){o=o|0,sje(o)}function nje(o){o=o|0,ije(o+24|0)}function ije(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function sje(o){o=o|0;var l=0;l=en()|0,tn(o,2,9,l,oje()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oje(){return 1372}function aje(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=lje(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cje(l,d,u),I=A}function lje(o){return o=o|0,(n[(zM()|0)+24>>2]|0)+(o*12|0)|0}function cje(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=Xe;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),uje(d,u),B=y(fje(d,u)),y$[A&1](o,B),I=m}function uje(o,l){o=o|0,l=+l}function fje(o,l){return o=o|0,l=+l,y(Aje(l))}function Aje(o){return o=+o,y(o)}function pje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hje(o,u,d,0),I=A}function hje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,_=0,M=0;d=I,I=I+32|0,m=d+16|0,M=d+8|0,k=d,_=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=ZM()|0,n[M>>2]=_,n[M+4>>2]=T,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],u=gje(m)|0,n[k>>2]=_,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dje(m,A)|0,A),I=d}function ZM(){var o=0,l=0;if(s[7856]|0||(oX(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oX(10172)}return 10172}function gje(o){return o=o|0,0}function dje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0;return M=I,I=I+32|0,d=M+24|0,B=M+16|0,k=M,T=M+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,G=ZM()|0,_=G+24|0,o=yr(l,4)|0,n[T>>2]=o,l=G+28|0,u=n[l>>2]|0,u>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],sX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mje(_,k,T),o=n[l>>2]|0),I=M,((o-(n[_>>2]|0)|0)/12|0)+-1|0}function sX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;if(_=I,I=I+48|0,A=_+32|0,B=_+24|0,k=_,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yje(o)|0,m>>>0<d>>>0)sn(o);else{M=n[o>>2]|0,ae=((n[o+8>>2]|0)-M|0)/12|0,G=ae<<1,Eje(k,ae>>>0<m>>>1>>>0?G>>>0<d>>>0?d:G:m,((n[T>>2]|0)-M|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],sX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,Ije(o,k),Cje(k),I=_;return}}function yje(o){return o=o|0,357913941}function Eje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Ije(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Cje(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&yt(o)}function oX(o){o=o|0,vje(o)}function wje(o){o=o|0,Bje(o+24|0)}function Bje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),yt(u))}function vje(o){o=o|0;var l=0;l=en()|0,tn(o,2,3,l,Sje()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Sje(){return 1380}function Dje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=bje(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],Pje(l,m,u,A),I=d}function bje(o){return o=o|0,(n[(ZM()|0)+24>>2]|0)+(o*12|0)|0}function Pje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),np(m,u),m=ip(m,u)|0,xje(B,A),B=kje(B,A)|0,L2[d&15](o,m,B),I=k}function xje(o,l){o=o|0,l=l|0}function kje(o,l){return o=o|0,l=l|0,Qje(l)|0}function Qje(o){return o=o|0,(o|0)!=0|0}function Tje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=XM()|0,o=Rje(u)|0,vn(m,l,d,o,Fje(u,A)|0,A)}function XM(){var o=0,l=0;if(s[7864]|0||(lX(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lX(10208)}return 10208}function Rje(o){return o=o|0,o|0}function Fje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=XM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(aX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(Nje(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function aX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function Nje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=Oje(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,Lje(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,aX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Mje(o,d),_je(d),I=k;return}}function Oje(o){return o=o|0,536870911}function Lje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function Mje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _je(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function lX(o){o=o|0,jje(o)}function Uje(o){o=o|0,Hje(o+24|0)}function Hje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function jje(o){o=o|0;var l=0;l=en()|0,tn(o,1,24,l,qje()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qje(){return 1392}function Gje(o,l){o=o|0,l=l|0,Yje(n[(Wje(o)|0)>>2]|0,l)}function Wje(o){return o=o|0,(n[(XM()|0)+24>>2]|0)+(o<<3)|0}function Yje(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ZZ(A,l),l=XZ(A,l)|0,op[o&127](l),I=u}function Vje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=$M()|0,o=Kje(u)|0,vn(m,l,d,o,Jje(u,A)|0,A)}function $M(){var o=0,l=0;if(s[7872]|0||(uX(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uX(10244)}return 10244}function Kje(o){return o=o|0,o|0}function Jje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=$M()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(cX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(zje(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function cX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function zje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=Zje(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,Xje(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,cX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,$je(o,d),e6e(d),I=k;return}}function Zje(o){return o=o|0,536870911}function Xje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function $je(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function e6e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function uX(o){o=o|0,n6e(o)}function t6e(o){o=o|0,r6e(o+24|0)}function r6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function n6e(o){o=o|0;var l=0;l=en()|0,tn(o,1,16,l,i6e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function i6e(){return 1400}function s6e(o){return o=o|0,a6e(n[(o6e(o)|0)>>2]|0)|0}function o6e(o){return o=o|0,(n[($M()|0)+24>>2]|0)+(o<<3)|0}function a6e(o){return o=o|0,l6e(ax[o&7]()|0)|0}function l6e(o){return o=o|0,o|0}function c6e(){var o=0;return s[7880]|0||(d6e(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function u6e(o,l){o=o|0,l=l|0,n[o>>2]=f6e()|0,n[o+4>>2]=A6e()|0,n[o+12>>2]=l,n[o+8>>2]=p6e()|0,n[o+32>>2]=4}function f6e(){return 11711}function A6e(){return 1356}function p6e(){return KP()|0}function h6e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(g6e(u),yt(u)):l|0&&(zg(l),yt(l))}function g6e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function d6e(o){o=o|0,Uh(o)}function m6e(o){o=o|0,y6e(o,4920),E6e(o)|0,I6e(o)|0}function y6e(o,l){o=o|0,l=l|0;var u=0;u=TZ()|0,n[o>>2]=u,H6e(u,l),Wh(n[o>>2]|0)}function E6e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,Q6e()|0),o|0}function I6e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,C6e()|0),o|0}function C6e(){var o=0;return s[7888]|0||(fX(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),Ur(10328)|0||fX(10328),10328}function ud(o,l){o=o|0,l=l|0,vn(o,0,l,0,0,0)}function fX(o){o=o|0,v6e(o),fd(o,10)}function w6e(o){o=o|0,B6e(o+24|0)}function B6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function v6e(o){o=o|0;var l=0;l=en()|0,tn(o,5,1,l,P6e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function S6e(o,l,u){o=o|0,l=l|0,u=+u,D6e(o,l,u)}function fd(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function D6e(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,np(k,l),n[m>>2]=ip(k,l)|0,Tf(B,u),E[d>>3]=+Rf(B,u),b6e(o,m,d),I=A}function b6e(o,l,u){o=o|0,l=l|0,u=u|0,Rl(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function P6e(){return 1404}function x6e(o,l){return o=o|0,l=+l,k6e(o,l)|0}function k6e(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Fl(8)|0,u=d,T=Jt(16)|0,np(m,o),o=ip(m,o)|0,Tf(B,l),Rl(T,o,+Rf(B,l)),B=u+4|0,n[B>>2]=T,o=Jt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],MM(o,B,m),n[d>>2]=o,I=A,u|0}function Q6e(){var o=0;return s[7896]|0||(AX(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),Ur(10364)|0||AX(10364),10364}function AX(o){o=o|0,F6e(o),fd(o,55)}function T6e(o){o=o|0,R6e(o+24|0)}function R6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function F6e(o){o=o|0;var l=0;l=en()|0,tn(o,5,4,l,M6e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function N6e(o){o=o|0,O6e(o)}function O6e(o){o=o|0,L6e(o)}function L6e(o){o=o|0,pX(o+8|0),s[o+24>>0]=1}function pX(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function M6e(){return 1424}function _6e(){return U6e()|0}function U6e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Fl(8)|0,o=u,A=Jt(16)|0,pX(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],MM(A,m,d),n[u>>2]=A,I=l,o|0}function H6e(o,l){o=o|0,l=l|0,n[o>>2]=j6e()|0,n[o+4>>2]=q6e()|0,n[o+12>>2]=l,n[o+8>>2]=G6e()|0,n[o+32>>2]=5}function j6e(){return 11710}function q6e(){return 1416}function G6e(){return JP()|0}function W6e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(Y6e(u),yt(u)):l|0&&yt(l)}function Y6e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function JP(){var o=0;return s[7904]|0||(n[2600]=V6e()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function V6e(){return n[357]|0}function K6e(o){o=o|0,J6e(o,4926),z6e(o)|0}function J6e(o,l){o=o|0,l=l|0;var u=0;u=tZ()|0,n[o>>2]=u,aqe(u,l),Wh(n[o>>2]|0)}function z6e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,Z6e()|0),o|0}function Z6e(){var o=0;return s[7912]|0||(hX(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),Ur(10412)|0||hX(10412),10412}function hX(o){o=o|0,eqe(o),fd(o,57)}function X6e(o){o=o|0,$6e(o+24|0)}function $6e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function eqe(o){o=o|0;var l=0;l=en()|0,tn(o,5,5,l,iqe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tqe(o){o=o|0,rqe(o)}function rqe(o){o=o|0,nqe(o)}function nqe(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function iqe(){return 1432}function sqe(){return oqe()|0}function oqe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Fl(8)|0,A=u,d=Jt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=d,k=Jt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],rZ(k,m,o),n[u>>2]=k,I=B,A|0}function aqe(o,l){o=o|0,l=l|0,n[o>>2]=lqe()|0,n[o+4>>2]=cqe()|0,n[o+12>>2]=l,n[o+8>>2]=uqe()|0,n[o+32>>2]=6}function lqe(){return 11704}function cqe(){return 1436}function uqe(){return JP()|0}function fqe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(Aqe(u),yt(u)):l|0&&yt(l)}function Aqe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function pqe(o){o=o|0,hqe(o,4933),gqe(o)|0,dqe(o)|0}function hqe(o,l){o=o|0,l=l|0;var u=0;u=Uqe()|0,n[o>>2]=u,Hqe(u,l),Wh(n[o>>2]|0)}function gqe(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,kqe()|0),o|0}function dqe(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,mqe()|0),o|0}function mqe(){var o=0;return s[7920]|0||(gX(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),Ur(10452)|0||gX(10452),10452}function gX(o){o=o|0,Iqe(o),fd(o,1)}function yqe(o){o=o|0,Eqe(o+24|0)}function Eqe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function Iqe(o){o=o|0;var l=0;l=en()|0,tn(o,5,1,l,vqe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Cqe(o,l,u){o=o|0,l=+l,u=+u,wqe(o,l,u)}function wqe(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Tf(k,l),E[m>>3]=+Rf(k,l),Tf(B,u),E[d>>3]=+Rf(B,u),Bqe(o,m,d),I=A}function Bqe(o,l,u){o=o|0,l=l|0,u=u|0,dX(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function dX(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function vqe(){return 1472}function Sqe(o,l){return o=+o,l=+l,Dqe(o,l)|0}function Dqe(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,T=A,d=Fl(8)|0,u=d,m=Jt(16)|0,Tf(B,o),o=+Rf(B,o),Tf(k,l),dX(m,o,+Rf(k,l)),k=u+4|0,n[k>>2]=m,m=Jt(8)|0,k=n[k>>2]|0,n[T>>2]=0,n[B>>2]=n[T>>2],mX(m,k,B),n[d>>2]=m,I=A,u|0}function mX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function bqe(o){o=o|0,$y(o),yt(o)}function Pqe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function xqe(o){o=o|0,yt(o)}function kqe(){var o=0;return s[7928]|0||(yX(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),Ur(10488)|0||yX(10488),10488}function yX(o){o=o|0,Rqe(o),fd(o,60)}function Qqe(o){o=o|0,Tqe(o+24|0)}function Tqe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function Rqe(o){o=o|0;var l=0;l=en()|0,tn(o,5,6,l,Lqe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Fqe(o){o=o|0,Nqe(o)}function Nqe(o){o=o|0,Oqe(o)}function Oqe(o){o=o|0,EX(o+8|0),s[o+24>>0]=1}function EX(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function Lqe(){return 1492}function Mqe(){return _qe()|0}function _qe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Fl(8)|0,o=u,A=Jt(16)|0,EX(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],mX(A,m,d),n[u>>2]=A,I=l,o|0}function Uqe(){var o=0;return s[7936]|0||(Vqe(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function Hqe(o,l){o=o|0,l=l|0,n[o>>2]=jqe()|0,n[o+4>>2]=qqe()|0,n[o+12>>2]=l,n[o+8>>2]=Gqe()|0,n[o+32>>2]=7}function jqe(){return 11700}function qqe(){return 1484}function Gqe(){return JP()|0}function Wqe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(Yqe(u),yt(u)):l|0&&yt(l)}function Yqe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function Vqe(o){o=o|0,Uh(o)}function Kqe(o,l,u){o=o|0,l=l|0,u=u|0,o=Bn(l)|0,l=Jqe(u)|0,u=zqe(u,0)|0,DGe(o,l,u,e_()|0,0)}function Jqe(o){return o=o|0,o|0}function zqe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=e_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(CX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(nGe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function e_(){var o=0,l=0;if(s[7944]|0||(IX(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));IX(10568)}return 10568}function IX(o){o=o|0,$qe(o)}function Zqe(o){o=o|0,Xqe(o+24|0)}function Xqe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function $qe(o){o=o|0;var l=0;l=en()|0,tn(o,1,17,l,EZ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function eGe(o){return o=o|0,rGe(n[(tGe(o)|0)>>2]|0)|0}function tGe(o){return o=o|0,(n[(e_()|0)+24>>2]|0)+(o<<3)|0}function rGe(o){return o=o|0,VP(ax[o&7]()|0)|0}function CX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function nGe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=iGe(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,sGe(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,CX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,oGe(o,d),aGe(d),I=k;return}}function iGe(o){return o=o|0,536870911}function sGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function oGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function aGe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function lGe(){cGe()}function cGe(){uGe(10604)}function uGe(o){o=o|0,fGe(o,4955)}function fGe(o,l){o=o|0,l=l|0;var u=0;u=AGe()|0,n[o>>2]=u,pGe(u,l),Wh(n[o>>2]|0)}function AGe(){var o=0;return s[7952]|0||(wGe(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function pGe(o,l){o=o|0,l=l|0,n[o>>2]=mGe()|0,n[o+4>>2]=yGe()|0,n[o+12>>2]=l,n[o+8>>2]=EGe()|0,n[o+32>>2]=8}function Wh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Ky()|0,n[u>>2]=o,hGe(10608,u),I=l}function Ky(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function hGe(o,l){o=o|0,l=l|0;var u=0;u=Jt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function gGe(o){o=o|0,dGe(o)}function dGe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,yt(u);while(l|0);n[o>>2]=0}function mGe(){return 11715}function yGe(){return 1496}function EGe(){return KP()|0}function IGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(CGe(u),yt(u)):l|0&&yt(l)}function CGe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function wGe(o){o=o|0,Uh(o)}function BGe(o,l){o=o|0,l=l|0;var u=0,A=0;Ky()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(r$(t_(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;vGe(A,l)}while(!1)}function t_(o){return o=o|0,n[o+12>>2]|0}function vGe(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Df(u),yt(u)),u=Jt(4)|0,UP(u,l),n[o>>2]=u}function r_(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function wX(){var o=0;return s[11717]|0?o=n[2665]|0:(SGe(),n[2665]=1504,s[11717]=1,o=1504),o|0}function SGe(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function BX(){return 1572}function DGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0;m=I,I=I+32|0,M=m+16|0,_=m+12|0,T=m+8|0,k=m+4|0,B=m,n[M>>2]=o,n[_>>2]=l,n[T>>2]=u,n[k>>2]=A,n[B>>2]=d,r_()|0,bGe(10656,M,_,T,k,B),I=m}function bGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Jt(24)|0,Xz(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function vX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0;if(ct=I,I=I+32|0,Le=ct+20|0,Qe=ct+8|0,tt=ct+4|0,Ze=ct,l=n[l>>2]|0,l|0){We=Le+4|0,T=Le+8|0,_=Qe+4|0,M=Qe+8|0,G=Qe+8|0,ae=Le+8|0;do{if(B=l+4|0,k=n_(B)|0,k|0){if(d=Q2(k)|0,n[Le>>2]=0,n[We>>2]=0,n[T>>2]=0,A=(T2(k)|0)+1|0,PGe(Le,A),A|0)for(;A=A+-1|0,xu(Qe,n[d>>2]|0),m=n[We>>2]|0,m>>>0<(n[ae>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[We>>2]=(n[We>>2]|0)+4):i_(Le,Qe),A;)d=d+4|0;A=R2(k)|0,n[Qe>>2]=0,n[_>>2]=0,n[M>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?xGe(Qe,A):(n[d>>2]=n[A>>2],n[_>>2]=(n[_>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[_>>2]|0,m=n[G>>2]|0}while(!1);n[tt>>2]=zP(B)|0,n[Ze>>2]=Ur(k)|0,kGe(u,o,tt,Ze,Le,Qe),s_(Qe),sp(Le)}l=n[l>>2]|0}while(l|0)}I=ct}function n_(o){return o=o|0,n[o+12>>2]|0}function Q2(o){return o=o|0,n[o+12>>2]|0}function T2(o){return o=o|0,n[o+16>>2]|0}function PGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0<l>>>0&&(TX(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),RX(o,u),FX(u)),I=d}function i_(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=QX(o)|0,m>>>0<d>>>0)sn(o);else{k=n[o>>2]|0,_=(n[o+8>>2]|0)-k|0,T=_>>1,TX(u,_>>2>>>0<m>>>1>>>0?T>>>0<d>>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,RX(o,u),FX(u),I=B;return}}function R2(o){return o=o|0,n[o+8>>2]|0}function xGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=kX(o)|0,m>>>0<d>>>0)sn(o);else{k=n[o>>2]|0,_=(n[o+8>>2]|0)-k|0,T=_>>1,JGe(u,_>>2>>>0<m>>>1>>>0?T>>>0<d>>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,zGe(o,u),ZGe(u),I=B;return}}function zP(o){return o=o|0,n[o>>2]|0}function kGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,QGe(o,l,u,A,d,m)}function s_(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),yt(u))}function sp(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),yt(u))}function QGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0;B=I,I=I+48|0,M=B+40|0,k=B+32|0,G=B+24|0,T=B+12|0,_=B,Nl(k),o=Ls(o)|0,n[G>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,o_(T,d),TGe(_,m),n[M>>2]=n[G>>2],RGe(o,M,u,A,T,_),s_(_),sp(T),Ol(k),I=B}function o_(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(VGe(o,A),KGe(o,n[l>>2]|0,n[u>>2]|0,A))}function TGe(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(WGe(o,A),YGe(o,n[l>>2]|0,n[u>>2]|0,A))}function RGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0;B=I,I=I+32|0,M=B+28|0,G=B+24|0,k=B+12|0,T=B,_=ma(FGe()|0)|0,n[G>>2]=n[l>>2],n[M>>2]=n[G>>2],l=Ad(M)|0,u=SX(u)|0,A=a_(A)|0,n[k>>2]=n[d>>2],M=d+4|0,n[k+4>>2]=n[M>>2],G=d+8|0,n[k+8>>2]=n[G>>2],n[G>>2]=0,n[M>>2]=0,n[d>>2]=0,d=l_(k)|0,n[T>>2]=n[m>>2],M=m+4|0,n[T+4>>2]=n[M>>2],G=m+8|0,n[T+8>>2]=n[G>>2],n[G>>2]=0,n[M>>2]=0,n[m>>2]=0,uu(0,_|0,o|0,l|0,u|0,A|0,d|0,NGe(T)|0)|0,s_(T),sp(k),I=B}function FGe(){var o=0;return s[7968]|0||(qGe(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function Ad(o){return o=o|0,bX(o)|0}function SX(o){return o=o|0,DX(o)|0}function a_(o){return o=o|0,VP(o)|0}function l_(o){return o=o|0,LGe(o)|0}function NGe(o){return o=o|0,OGe(o)|0}function OGe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Fl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=DX(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function DX(o){return o=o|0,o|0}function LGe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Fl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=bX((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function bX(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=IM(PX()|0)|0,A?(CM(l,A),wM(u,l),EYe(o,u),o=BM(l)|0):o=MGe(o)|0,I=d,o|0}function PX(){var o=0;return s[7960]|0||(jGe(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function MGe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Fl(8)|0,l=A,k=Jt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xX(o,m,d),n[A>>2]=o,I=u,l|0}function xX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function _Ge(o){o=o|0,$y(o),yt(o)}function UGe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function HGe(o){o=o|0,yt(o)}function jGe(o){o=o|0,Uh(o)}function qGe(o){o=o|0,Ro(o,GGe()|0,5)}function GGe(){return 1676}function WGe(o,l){o=o|0,l=l|0;var u=0;if((kX(o)|0)>>>0<l>>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function YGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function kX(o){return o=o|0,1073741823}function VGe(o,l){o=o|0,l=l|0;var u=0;if((QX(o)|0)>>>0<l>>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function KGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function QX(o){return o=o|0,1073741823}function JGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function zGe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ZGe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&yt(o)}function TX(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function RX(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function FX(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&yt(o)}function XGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0;if(Qe=I,I=I+32|0,M=Qe+20|0,G=Qe+12|0,_=Qe+16|0,ae=Qe+4|0,We=Qe,Le=Qe+8|0,k=wX()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(T=n[k+8>>2]|0,k=n[k+4>>2]|0;xu(M,B),$Ge(o,M,k,T),m=m+4|0,B=n[m>>2]|0,B;)T=T+1|0,k=k+1|0;if(m=BX()|0,B=n[m>>2]|0,B|0)do xu(M,B),n[G>>2]=n[m+4>>2],e5e(l,M,G),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Ky()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,xu(M,n[(Jy(l)|0)>>2]|0),n[G>>2]=t_(l)|0,t5e(u,M,G),m=n[m>>2]|0;while(m|0);if(xu(_,0),m=r_()|0,n[M>>2]=n[_>>2],vX(M,m,d),m=n[(Ky()|0)>>2]|0,m|0){o=M+4|0,l=M+8|0,u=M+8|0;do{if(T=n[m+4>>2]|0,xu(G,n[(Jy(T)|0)>>2]|0),r5e(ae,NX(T)|0),B=n[ae>>2]|0,B|0){n[M>>2]=0,n[o>>2]=0,n[l>>2]=0;do xu(We,n[(Jy(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[We>>2],n[o>>2]=(n[o>>2]|0)+4):i_(M,We),B=n[B>>2]|0;while(B|0);n5e(A,G,M),sp(M)}n[Le>>2]=n[G>>2],_=OX(T)|0,n[M>>2]=n[Le>>2],vX(M,_,d),iZ(ae),m=n[m>>2]|0}while(m|0)}I=Qe}function $Ge(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,g5e(o,l,u,A)}function e5e(o,l,u){o=o|0,l=l|0,u=u|0,h5e(o,l,u)}function Jy(o){return o=o|0,o|0}function t5e(o,l,u){o=o|0,l=l|0,u=u|0,u5e(o,l,u)}function NX(o){return o=o|0,o+16|0}function r5e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=c5e(u)|0,A|0){if(A=Jt(12)|0,B=(LX(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Jt(12)|0,T=(LX(d)|0)+4|0,k=n[T+4>>2]|0,B=o+4|0,n[B>>2]=n[T>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function n5e(o,l,u){o=o|0,l=l|0,u=u|0,i5e(o,l,u)}function OX(o){return o=o|0,o+24|0}function i5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,Nl(d),o=Ls(o)|0,n[k>>2]=n[l>>2],o_(m,u),n[B>>2]=n[k>>2],s5e(o,B,m),sp(m),Ol(d),I=A}function s5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=ma(o5e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Ad(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Rs(0,m|0,o|0,l|0,l_(d)|0)|0,sp(d),I=A}function o5e(){var o=0;return s[7976]|0||(a5e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function a5e(o){o=o|0,Ro(o,l5e()|0,2)}function l5e(){return 1732}function c5e(o){return o=o|0,n[o>>2]|0}function LX(o){return o=o|0,n[o>>2]|0}function u5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Nl(d),o=Ls(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],MX(o,m,u),Ol(d),I=A}function MX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=ma(f5e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Ad(m)|0,Rs(0,d|0,o|0,l|0,SX(u)|0)|0,I=A}function f5e(){var o=0;return s[7984]|0||(A5e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function A5e(o){o=o|0,Ro(o,p5e()|0,2)}function p5e(){return 1744}function h5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Nl(d),o=Ls(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],MX(o,m,u),Ol(d),I=A}function g5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Nl(m),o=Ls(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],d5e(o,B,u,A),Ol(m),I=d}function d5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=ma(m5e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Ad(B)|0,u=zy(u)|0,Oi(0,m|0,o|0,l|0,u|0,zy(A)|0)|0,I=d}function m5e(){var o=0;return s[7992]|0||(E5e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function zy(o){return o=o|0,y5e(o)|0}function y5e(o){return o=o|0,o&255|0}function E5e(o){o=o|0,Ro(o,I5e()|0,3)}function I5e(){return 1756}function C5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;switch(ae=I,I=I+32|0,k=ae+8|0,T=ae+4|0,_=ae+20|0,M=ae,bM(o,0),A=yYe(l)|0,n[k>>2]=0,G=k+4|0,n[G>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[_>>0]=0,w5e(T,u,_),ZP(o,T)|0,bf(T);break}case 8:{G=h_(l)|0,s[_>>0]=8,xu(M,n[G+4>>2]|0),B5e(T,u,_,M,G+8|0),ZP(o,T)|0,bf(T);break}case 9:{if(m=h_(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,xu(T,n[d>>2]|0),A=n[G>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[T>>2],n[G>>2]=(n[G>>2]|0)+4):i_(k,T),l;)d=d+4|0;s[_>>0]=9,xu(M,n[m+8>>2]|0),v5e(T,u,_,M,k),ZP(o,T)|0,bf(T);break}default:G=h_(l)|0,s[_>>0]=A,xu(M,n[G+4>>2]|0),S5e(T,u,_,M),ZP(o,T)|0,bf(T)}sp(k),I=ae}function w5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,Nl(d),l=Ls(l)|0,M5e(o,l,s[u>>0]|0),Ol(d),I=A}function ZP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&Oa(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function B5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,T=m,Nl(B),l=Ls(l)|0,u=s[u>>0]|0,n[T>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[T>>2],F5e(o,l,u,k,d),Ol(B),I=m}function v5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0;m=I,I=I+32|0,T=m+24|0,B=m+16|0,_=m+12|0,k=m,Nl(B),l=Ls(l)|0,u=s[u>>0]|0,n[_>>2]=n[A>>2],o_(k,d),n[T>>2]=n[_>>2],k5e(o,l,u,T,k),sp(k),Ol(B),I=m}function S5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Nl(m),l=Ls(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],D5e(o,l,u,B),Ol(m),I=d}function D5e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=ma(b5e()|0)|0,u=zy(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],XP(o,Rs(0,B|0,l|0,u|0,Ad(m)|0)|0),I=d}function b5e(){var o=0;return s[8e3]|0||(P5e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function XP(o,l){o=o|0,l=l|0,bM(o,l)}function P5e(o){o=o|0,Ro(o,x5e()|0,2)}function x5e(){return 1772}function k5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0;m=I,I=I+32|0,T=m+16|0,_=m+12|0,B=m,k=ma(Q5e()|0)|0,u=zy(u)|0,n[_>>2]=n[A>>2],n[T>>2]=n[_>>2],A=Ad(T)|0,n[B>>2]=n[d>>2],T=d+4|0,n[B+4>>2]=n[T>>2],_=d+8|0,n[B+8>>2]=n[_>>2],n[_>>2]=0,n[T>>2]=0,n[d>>2]=0,XP(o,Oi(0,k|0,l|0,u|0,A|0,l_(B)|0)|0),sp(B),I=m}function Q5e(){var o=0;return s[8008]|0||(T5e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function T5e(o){o=o|0,Ro(o,R5e()|0,3)}function R5e(){return 1784}function F5e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,k=m+4|0,T=m,B=ma(N5e()|0)|0,u=zy(u)|0,n[T>>2]=n[A>>2],n[k>>2]=n[T>>2],A=Ad(k)|0,XP(o,Oi(0,B|0,l|0,u|0,A|0,a_(d)|0)|0),I=m}function N5e(){var o=0;return s[8016]|0||(O5e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function O5e(o){o=o|0,Ro(o,L5e()|0,3)}function L5e(){return 1800}function M5e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=ma(_5e()|0)|0,XP(o,dn(0,A|0,l|0,zy(u)|0)|0)}function _5e(){var o=0;return s[8024]|0||(U5e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function U5e(o){o=o|0,Ro(o,H5e()|0,1)}function H5e(){return 1816}function j5e(){q5e(),G5e(),W5e()}function q5e(){n[2702]=A$(65536)|0}function G5e(){f9e(10856)}function W5e(){Y5e(10816)}function Y5e(o){o=o|0,V5e(o,5044),K5e(o)|0}function V5e(o,l){o=o|0,l=l|0;var u=0;u=PX()|0,n[o>>2]=u,s9e(u,l),Wh(n[o>>2]|0)}function K5e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,J5e()|0),o|0}function J5e(){var o=0;return s[8032]|0||(_X(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),Ur(10820)|0||_X(10820),10820}function _X(o){o=o|0,X5e(o),fd(o,25)}function z5e(o){o=o|0,Z5e(o+24|0)}function Z5e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function X5e(o){o=o|0;var l=0;l=en()|0,tn(o,5,18,l,r9e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $5e(o,l){o=o|0,l=l|0,e9e(o,l)}function e9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,ld(d,l),n[A>>2]=cd(d,l)|0,t9e(o,A),I=u}function t9e(o,l){o=o|0,l=l|0,UX(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function UX(o,l){o=o|0,l=l|0,n[o>>2]=l}function r9e(){return 1824}function n9e(o){return o=o|0,i9e(o)|0}function i9e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Fl(8)|0,l=A,k=Jt(4)|0,ld(d,o),UX(k,cd(d,o)|0),m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xX(o,m,d),n[A>>2]=o,I=u,l|0}function Fl(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=A$(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function s9e(o,l){o=o|0,l=l|0,n[o>>2]=o9e()|0,n[o+4>>2]=a9e()|0,n[o+12>>2]=l,n[o+8>>2]=l9e()|0,n[o+32>>2]=9}function o9e(){return 11744}function a9e(){return 1832}function l9e(){return JP()|0}function c9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(u9e(u),yt(u)):l|0&&yt(l)}function u9e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function f9e(o){o=o|0,A9e(o,5052),p9e(o)|0,h9e(o,5058,26)|0,g9e(o,5069,1)|0,d9e(o,5077,10)|0,m9e(o,5087,19)|0,y9e(o,5094,27)|0}function A9e(o,l){o=o|0,l=l|0;var u=0;u=uYe()|0,n[o>>2]=u,fYe(u,l),Wh(n[o>>2]|0)}function p9e(o){o=o|0;var l=0;return l=n[o>>2]|0,ud(l,zWe()|0),o|0}function h9e(o,l,u){return o=o|0,l=l|0,u=u|0,TWe(o,Bn(l)|0,u,0),o|0}function g9e(o,l,u){return o=o|0,l=l|0,u=u|0,mWe(o,Bn(l)|0,u,0),o|0}function d9e(o,l,u){return o=o|0,l=l|0,u=u|0,J9e(o,Bn(l)|0,u,0),o|0}function m9e(o,l,u){return o=o|0,l=l|0,u=u|0,F9e(o,Bn(l)|0,u,0),o|0}function HX(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}yt(u)}n[2701]=o}function y9e(o,l,u){return o=o|0,l=l|0,u=u|0,E9e(o,Bn(l)|0,u,0),o|0}function E9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=c_()|0,o=I9e(u)|0,vn(m,l,d,o,C9e(u,A)|0,A)}function c_(){var o=0,l=0;if(s[8040]|0||(qX(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));qX(10860)}return 10860}function I9e(o){return o=o|0,o|0}function C9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=c_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(jX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(w9e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function jX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function w9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=B9e(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,v9e(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,jX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S9e(o,d),D9e(d),I=k;return}}function B9e(o){return o=o|0,536870911}function v9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function S9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function D9e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function qX(o){o=o|0,x9e(o)}function b9e(o){o=o|0,P9e(o+24|0)}function P9e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function x9e(o){o=o|0;var l=0;l=en()|0,tn(o,1,11,l,k9e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function k9e(){return 1840}function Q9e(o,l,u){o=o|0,l=l|0,u=u|0,R9e(n[(T9e(o)|0)>>2]|0,l,u)}function T9e(o){return o=o|0,(n[(c_()|0)+24>>2]|0)+(o<<3)|0}function R9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,ld(m,l),l=cd(m,l)|0,ld(d,u),u=cd(d,u)|0,ap[o&31](l,u),I=A}function F9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=u_()|0,o=N9e(u)|0,vn(m,l,d,o,O9e(u,A)|0,A)}function u_(){var o=0,l=0;if(s[8048]|0||(WX(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));WX(10896)}return 10896}function N9e(o){return o=o|0,o|0}function O9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=u_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(GX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(L9e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function GX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function L9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=M9e(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,_9e(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,GX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,U9e(o,d),H9e(d),I=k;return}}function M9e(o){return o=o|0,536870911}function _9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function U9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function H9e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function WX(o){o=o|0,G9e(o)}function j9e(o){o=o|0,q9e(o+24|0)}function q9e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function G9e(o){o=o|0;var l=0;l=en()|0,tn(o,1,11,l,W9e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function W9e(){return 1852}function Y9e(o,l){return o=o|0,l=l|0,K9e(n[(V9e(o)|0)>>2]|0,l)|0}function V9e(o){return o=o|0,(n[(u_()|0)+24>>2]|0)+(o<<3)|0}function K9e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ld(A,l),l=cd(A,l)|0,l=VP(dd[o&31](l)|0)|0,I=u,l|0}function J9e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=f_()|0,o=z9e(u)|0,vn(m,l,d,o,Z9e(u,A)|0,A)}function f_(){var o=0,l=0;if(s[8056]|0||(VX(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));VX(10932)}return 10932}function z9e(o){return o=o|0,o|0}function Z9e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=f_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(YX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(X9e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function YX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function X9e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=$9e(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,eWe(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,YX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,tWe(o,d),rWe(d),I=k;return}}function $9e(o){return o=o|0,536870911}function eWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function tWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rWe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function VX(o){o=o|0,sWe(o)}function nWe(o){o=o|0,iWe(o+24|0)}function iWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function sWe(o){o=o|0;var l=0;l=en()|0,tn(o,1,7,l,oWe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oWe(){return 1860}function aWe(o,l,u){return o=o|0,l=l|0,u=u|0,cWe(n[(lWe(o)|0)>>2]|0,l,u)|0}function lWe(o){return o=o|0,(n[(f_()|0)+24>>2]|0)+(o<<3)|0}function cWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,T=A+16|0,d=A+4|0,uWe(T,l),fWe(k,T,l),Hh(d,u),u=jh(d,u)|0,n[B>>2]=n[k>>2],L2[o&15](m,B,u),u=AWe(m)|0,bf(m),qh(d),I=A,u|0}function uWe(o,l){o=o|0,l=l|0}function fWe(o,l,u){o=o|0,l=l|0,u=u|0,pWe(o,u)}function AWe(o){return o=o|0,Ls(o)|0}function pWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(hWe(u,0),Me(A|0,u|0)|0,gWe(o,u),dWe(u)):n[o>>2]=n[l>>2],I=d}function hWe(o,l){o=o|0,l=l|0,bu(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function gWe(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function dWe(o){o=o|0,s[o+8>>0]=0}function mWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=A_()|0,o=yWe(u)|0,vn(m,l,d,o,EWe(u,A)|0,A)}function A_(){var o=0,l=0;if(s[8064]|0||(JX(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Ur(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));JX(10968)}return 10968}function yWe(o){return o=o|0,o|0}function EWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=A_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(KX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(IWe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function KX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function IWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=CWe(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,wWe(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,KX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,BWe(o,d),vWe(d),I=k;return}}function CWe(o){return o=o|0,536870911}function wWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function BWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vWe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function JX(o){o=o|0,bWe(o)}function SWe(o){o=o|0,DWe(o+24|0)}function DWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function bWe(o){o=o|0;var l=0;l=en()|0,tn(o,1,1,l,PWe()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PWe(){return 1872}function xWe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,QWe(n[(kWe(o)|0)>>2]|0,l,u,A,d,m)}function kWe(o){return o=o|0,(n[(A_()|0)+24>>2]|0)+(o<<3)|0}function QWe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0;B=I,I=I+32|0,k=B+16|0,T=B+12|0,_=B+8|0,M=B+4|0,G=B,Hh(k,l),l=jh(k,l)|0,Hh(T,u),u=jh(T,u)|0,Hh(_,A),A=jh(_,A)|0,Hh(M,d),d=jh(M,d)|0,Hh(G,m),m=jh(G,m)|0,m$[o&1](l,u,A,d,m),qh(G),qh(M),qh(_),qh(T),qh(k),I=B}function TWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=p_()|0,o=RWe(u)|0,vn(m,l,d,o,FWe(u,A)|0,A)}function p_(){var o=0,l=0;if(s[8072]|0||(ZX(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Ur(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));ZX(11004)}return 11004}function RWe(o){return o=o|0,o|0}function FWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=p_()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(zX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(NWe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function zX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function NWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=OWe(o)|0,A>>>0<B>>>0)sn(o);else{T=n[o>>2]|0,M=(n[o+8>>2]|0)-T|0,_=M>>2,LWe(d,M>>3>>>0<A>>>1>>>0?_>>>0<B>>>0?B:_:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,zX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,MWe(o,d),_We(d),I=k;return}}function OWe(o){return o=o|0,536870911}function LWe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function MWe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _We(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&yt(o)}function ZX(o){o=o|0,jWe(o)}function UWe(o){o=o|0,HWe(o+24|0)}function HWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function jWe(o){o=o|0;var l=0;l=en()|0,tn(o,1,12,l,qWe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qWe(){return 1896}function GWe(o,l,u){o=o|0,l=l|0,u=u|0,YWe(n[(WWe(o)|0)>>2]|0,l,u)}function WWe(o){return o=o|0,(n[(p_()|0)+24>>2]|0)+(o<<3)|0}function YWe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,VWe(m,l),l=KWe(m,l)|0,Hh(d,u),u=jh(d,u)|0,ap[o&31](l,u),qh(d),I=A}function VWe(o,l){o=o|0,l=l|0}function KWe(o,l){return o=o|0,l=l|0,JWe(l)|0}function JWe(o){return o=o|0,o|0}function zWe(){var o=0;return s[8080]|0||(XX(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),Ur(11040)|0||XX(11040),11040}function XX(o){o=o|0,$We(o),fd(o,71)}function ZWe(o){o=o|0,XWe(o+24|0)}function XWe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),yt(u))}function $We(o){o=o|0;var l=0;l=en()|0,tn(o,5,7,l,nYe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function eYe(o){o=o|0,tYe(o)}function tYe(o){o=o|0,rYe(o)}function rYe(o){o=o|0,s[o+8>>0]=1}function nYe(){return 1936}function iYe(){return sYe()|0}function sYe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Fl(8)|0,o=u,m=o+4|0,n[m>>2]=Jt(1)|0,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],oYe(A,m,d),n[u>>2]=A,I=l,o|0}function oYe(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function aYe(o){o=o|0,$y(o),yt(o)}function lYe(o){o=o|0,o=n[o+12>>2]|0,o|0&&yt(o)}function cYe(o){o=o|0,yt(o)}function uYe(){var o=0;return s[8088]|0||(mYe(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function fYe(o,l){o=o|0,l=l|0,n[o>>2]=AYe()|0,n[o+4>>2]=pYe()|0,n[o+12>>2]=l,n[o+8>>2]=hYe()|0,n[o+32>>2]=10}function AYe(){return 11745}function pYe(){return 1940}function hYe(){return KP()|0}function gYe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Gh(A,896)|0)==512?u|0&&(dYe(u),yt(u)):l|0&&yt(l)}function dYe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Yh(o)}function mYe(o){o=o|0,Uh(o)}function xu(o,l){o=o|0,l=l|0,n[o>>2]=l}function h_(o){return o=o|0,n[o>>2]|0}function yYe(o){return o=o|0,s[n[o>>2]>>0]|0}function EYe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],IYe(l,A)|0,I=u}function IYe(o,l){o=o|0,l=l|0;var u=0;return u=CYe(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function CYe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Nl(A),o=Ls(o)|0,l=wYe(o,n[l>>2]|0)|0,Ol(A),I=u,l|0}function Nl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function wYe(o,l){o=o|0,l=l|0;var u=0;return u=ma(BYe()|0)|0,dn(0,u|0,o|0,a_(l)|0)|0}function Ol(o){o=o|0,HX(n[o>>2]|0,n[o+4>>2]|0)}function BYe(){var o=0;return s[8096]|0||(vYe(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function vYe(o){o=o|0,Ro(o,SYe()|0,1)}function SYe(){return 1948}function DYe(){bYe()}function bYe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0;if(Le=I,I=I+16|0,M=Le+4|0,G=Le,aa(65536,10804,n[2702]|0,10812),u=wX()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;hf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=BX()|0,l=n[o>>2]|0,l|0)do LA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);LA(PYe()|0,5167),_=Ky()|0,o=n[_>>2]|0;e:do if(o|0){do xYe(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[_>>2]|0,o|0){T=_;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(kYe(d)|0);)if(n[G>>2]=T,n[M>>2]=n[G>>2],QYe(_,M)|0,!o)break e;if(TYe(d),T=n[T>>2]|0,l=$X(d)|0,m=Ni()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(NX(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Jy(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Qe=Jy(d)|0,l=RYe(d)|0,u=$X(d)|0,A=FYe(d)|0,ac(Qe|0,l|0,B|0,k|0,u|0,A|0,t_(d)|0),OA(m|0)}while(o|0)}}while(!1);if(o=n[(r_()|0)>>2]|0,o|0)do Qe=o+4|0,_=n_(Qe)|0,d=R2(_)|0,m=Q2(_)|0,B=(T2(_)|0)+1|0,k=$P(_)|0,T=e$(Qe)|0,_=Ur(_)|0,M=zP(Qe)|0,G=g_(Qe)|0,Au(0,d|0,m|0,B|0,k|0,T|0,_|0,M|0,G|0,d_(Qe)|0),o=n[o>>2]|0;while(o|0);o=n[(Ky()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(ae=n[(Jy(l)|0)>>2]|0,We=n[(OX(l)|0)>>2]|0,We|0)){u=We;do{l=u+4|0,A=n_(l)|0;r:do if(A|0)switch(Ur(A)|0){case 0:break t;case 4:case 3:case 2:{k=R2(A)|0,T=Q2(A)|0,_=(T2(A)|0)+1|0,M=$P(A)|0,G=Ur(A)|0,Qe=zP(l)|0,Au(ae|0,k|0,T|0,_|0,M|0,0,G|0,Qe|0,g_(l)|0,d_(l)|0);break r}case 1:{B=R2(A)|0,k=Q2(A)|0,T=(T2(A)|0)+1|0,_=$P(A)|0,M=e$(l)|0,G=Ur(A)|0,Qe=zP(l)|0,Au(ae|0,B|0,k|0,T|0,_|0,M|0,G|0,Qe|0,g_(l)|0,d_(l)|0);break r}case 5:{_=R2(A)|0,M=Q2(A)|0,G=(T2(A)|0)+1|0,Qe=$P(A)|0,Au(ae|0,_|0,M|0,G|0,Qe|0,NYe(A)|0,Ur(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);ve(),I=Le}function PYe(){return 11703}function xYe(o){o=o|0,s[o+40>>0]=0}function kYe(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function QYe(o,l){return o=o|0,l=l|0,l=OYe(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],yt(o),n[l>>2]|0}function TYe(o){o=o|0,s[o+40>>0]=1}function $X(o){return o=o|0,n[o+20>>2]|0}function RYe(o){return o=o|0,n[o+8>>2]|0}function FYe(o){return o=o|0,n[o+32>>2]|0}function $P(o){return o=o|0,n[o+4>>2]|0}function e$(o){return o=o|0,n[o+4>>2]|0}function g_(o){return o=o|0,n[o+8>>2]|0}function d_(o){return o=o|0,n[o+16>>2]|0}function NYe(o){return o=o|0,n[o+20>>2]|0}function OYe(o){return o=o|0,n[o>>2]|0}function ex(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0;Lt=I,I=I+16|0,ae=Lt;do if(o>>>0<245){if(_=o>>>0<11?16:o+11&-8,o=_>>>3,G=n[2783]|0,u=G>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=G&~(1<<l):(n[m+12>>2]=o,n[u>>2]=m),Ge=l<<3,n[A+4>>2]=Ge|3,Ge=A+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1,Ge=d,I=Lt,Ge|0;if(M=n[2785]|0,_>>>0>M>>>0){if(u|0)return l=2<<o,l=u<<o&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=G&~(1<<A),n[2783]=o):(n[u+12>>2]=l,n[o>>2]=u,o=G),m=(A<<3)-_|0,n[d+4>>2]=_|3,A=d+_|0,n[A+4>>2]=m|1,n[A+m>>2]=m,M|0&&(d=n[2788]|0,l=M>>>3,u=11172+(l<<1<<2)|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,Ge=B,I=Lt,Ge|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,T=u>>>2&4,u=u>>>T,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|T|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-_|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)T=o,m=u;else{do B=(n[A+4>>2]&-8)-_|0,T=B>>>0<u>>>0,u=T?B:u,o=T?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);T=o,m=u}if(B=T+_|0,T>>>0<B>>>0){d=n[T+24>>2]|0,l=n[T+12>>2]|0;do if((l|0)==(T|0)){if(o=T+20|0,l=n[o>>2]|0,!l&&(o=T+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[T+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[T+28>>2]|0,o=11436+(l<<2)|0,(T|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[T+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[T+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(Ge=m+_|0,n[T+4>>2]=Ge|3,Ge=T+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1):(n[T+4>>2]=_|3,n[B+4>>2]=m|1,n[B+m>>2]=m,M|0&&(A=n[2788]|0,l=M>>>3,u=11172+(l<<1<<2)|0,l=1<<l,G&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=G|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),Ge=T+8|0,I=Lt,Ge|0}else G=_}else G=_}else G=_}else if(o>>>0<=4294967231)if(o=o+11|0,_=o&-8,T=n[2784]|0,T){A=0-_|0,o=o>>>8,o?_>>>0>16777215?k=31:(G=(o+1048320|0)>>>16&8,He=o<<G,M=(He+520192|0)>>>16&4,He=He<<M,k=(He+245760|0)>>>16&2,k=14-(M|G|k)+(He<<k>>>15)|0,k=_>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=_<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-_|0,d>>>0<A>>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<<k,o=T&(o|0-o),!o){G=_;break}G=(o&0-o)+-1|0,B=G>>>12&16,G=G>>>B,m=G>>>5&8,G=G>>>m,k=G>>>2&4,G=G>>>k,M=G>>>1&2,G=G>>>M,u=G>>>1&1,o=0,u=n[11436+((m|B|k|M|u)+(G>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-_|0,G=u>>>0<A>>>0,u=G?u:A,o=G?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-_|0)>>>0){if(m=k+_|0,k>>>0>=m>>>0)return Ge=0,I=Lt,Ge|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else Ge=n[k+8>>2]|0,n[Ge+12>>2]=l,n[l+8>>2]=Ge;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=T&~(1<<o),n[2784]=A;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=T;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=T}else A=T;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=_|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ge=l<<He,ct=(Ge+520192|0)>>>16&4,Ge=Ge<<ct,l=(Ge+245760|0)>>>16&2,l=14-(ct|He|l)+(Ge<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<<l,!(A&o)){n[2784]=A|o,n[u>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ge,n[m+12>>2]=u,n[m+24>>2]=0;break}}else Ge=B+_|0,n[k+4>>2]=Ge|3,Ge=k+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1;while(!1);return Ge=k+8|0,I=Lt,Ge|0}else G=_}else G=_;else G=-1;while(!1);if(u=n[2785]|0,u>>>0>=G>>>0)return l=u-G|0,o=n[2788]|0,l>>>0>15?(Ge=o+G|0,n[2788]=Ge,n[2785]=l,n[Ge+4>>2]=l|1,n[Ge+l>>2]=l,n[o+4>>2]=G|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,Ge=o+u+4|0,n[Ge>>2]=n[Ge>>2]|1),Ge=o+8|0,I=Lt,Ge|0;if(B=n[2786]|0,B>>>0>G>>>0)return ct=B-G|0,n[2786]=ct,Ge=n[2789]|0,He=Ge+G|0,n[2789]=He,n[He+4>>2]=ct|1,n[Ge+4>>2]=G|3,Ge=Ge+8|0,I=Lt,Ge|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=ae&-16^1431655768,n[ae>>2]=o,n[2901]=o,o=4096),k=G+48|0,T=G+47|0,m=o+T|0,d=0-o|0,_=m&d,_>>>0<=G>>>0||(o=n[2893]|0,o|0&&(M=n[2891]|0,ae=M+_|0,ae>>>0<=M>>>0|ae>>>0>o>>>0)))return Ge=0,I=Lt,Ge|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Qe=A+4|0,(o+(n[Qe>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=Vh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Qe>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=Vh(0)|0,(u|0)!=-1&&(l=u,We=n[2902]|0,Le=We+-1|0,l=(Le&l|0?(Le+l&0-We)-l|0:0)+_|0,We=n[2891]|0,Le=l+We|0,l>>>0>G>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Le>>>0<=We>>>0|Le>>>0>Qe>>>0){l=0;break}if(o=Vh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=T-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((Vh(o|0)|0)==-1){Vh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&_>>>0<2147483647&&(ct=Vh(_|0)|0,Qe=Vh(0)|0,tt=Qe-ct|0,Ze=tt>>>0>(G+40|0)>>>0,!((ct|0)==-1|Ze^1|ct>>>0<Qe>>>0&((ct|0)!=-1&(Qe|0)!=-1)^1))&&(B=Ze?tt:l,m=ct,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),T=n[2789]|0;do if(T){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&T>>>0<m>>>0&T>>>0>=o>>>0){n[u>>2]=A+B,Ge=T+8|0,Ge=Ge&7|0?0-Ge&7:0,He=T+Ge|0,Ge=(n[2786]|0)+(B-Ge)|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,M=l+4|0,n[M>>2]=(n[M>>2]|0)+B,M=m+8|0,M=m+(M&7|0?0-M&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,_=M+G|0,k=l-M-G|0,n[M+4>>2]=G|3;do if((l|0)!=(T|0)){if((l|0)==(n[2788]|0)){Ge=(n[2785]|0)+k|0,n[2785]=Ge,n[2788]=_,n[_+4>>2]=Ge|1,n[_+Ge>>2]=Ge;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<<A);break}else{n[o+12>>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else Ge=n[l+8>>2]|0,n[Ge+12>>2]=o,n[o+8>>2]=Ge;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<<u);break e}while(!1);if(n[o+24>>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[_+4>>2]=d|1,n[_+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=_,n[l+12>>2]=_,n[_+8>>2]=l,n[_+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ge=l<<He,ct=(Ge+520192|0)>>>16&4,Ge=Ge<<ct,l=(Ge+245760|0)>>>16&2,l=14-(ct|He|l)+(Ge<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[_+28>>2]=l,o=_+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<<l,!(o&u)){n[2784]=o|u,n[A>>2]=_,n[_+24>>2]=A,n[_+12>>2]=_,n[_+8>>2]=_;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=_,n[_+24>>2]=u,n[_+12>>2]=_,n[_+8>>2]=_;break}else if((He|0)==194){He=u+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=_,n[He>>2]=_,n[_+8>>2]=Ge,n[_+12>>2]=u,n[_+24>>2]=0;break}}else Ge=(n[2786]|0)+k|0,n[2786]=Ge,n[2789]=_,n[_+4>>2]=Ge|1;while(!1);return Ge=M+8|0,I=Lt,Ge|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=T>>>0&&(Ge=o+(n[l+4>>2]|0)|0,Ge>>>0>T>>>0));)l=n[l+8>>2]|0;d=Ge+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=T+16|0,o=o>>>0<d>>>0?T:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0<Ge>>>0);if((o|0)!=(T|0)){if(m=o-T|0,n[u>>2]=n[u>>2]&-2,n[T+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=T,n[l+12>>2]=T,n[T+8>>2]=l,n[T+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,Ge=l<<He,ct=(Ge+520192|0)>>>16&4,Ge=Ge<<ct,u=(Ge+245760|0)>>>16&2,u=14-(ct|He|u)+(Ge<<u>>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[T+28>>2]=u,n[T+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<<u,!(l&o)){n[2784]=l|o,n[A>>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=T,n[T+24>>2]=u,n[T+12>>2]=T,n[T+8>>2]=T;break}else if((He|0)==216){He=u+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=T,n[He>>2]=T,n[T+8>>2]=Ge,n[T+12>>2]=u,n[T+24>>2]=0;break}}}else{Ge=n[2787]|0,(Ge|0)==0|m>>>0<Ge>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ge=11172+(l<<1<<2)|0,n[Ge+12>>2]=Ge,n[Ge+8>>2]=Ge,l=l+1|0;while((l|0)!=32);Ge=m+8|0,Ge=Ge&7|0?0-Ge&7:0,He=m+Ge|0,Ge=B+-40-Ge|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>G>>>0)return ct=l-G|0,n[2786]=ct,Ge=n[2789]|0,He=Ge+G|0,n[2789]=He,n[He+4>>2]=ct|1,n[Ge+4>>2]=G|3,Ge=Ge+8|0,I=Lt,Ge|0}return n[(Zy()|0)>>2]=12,Ge=0,I=Lt,Ge|0}function tx(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,T=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(o=T+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<<u),k=B,l=m;break}else{n[o+12>>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<<l),k=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=T>>>0)&&(o=T+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(T|0)==(n[2789]|0)){if(T=(n[2786]|0)+l|0,n[2786]=T,n[2789]=k,n[k+4>>2]=T|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((T|0)==(o|0)){T=(n[2785]|0)+l|0,n[2785]=T,n[2788]=B,n[k+4>>2]=T|1,n[B+T>>2]=T;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[T+8>>2]|0,o=n[T+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<<u);break}else{n[l+12>>2]=o,n[o+8>>2]=l;break}else{m=n[T+24>>2]|0,o=n[T+12>>2]|0;do if((o|0)==(T|0)){if(u=T+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[T+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[T+28>>2]|0,l=11436+(o<<2)|0,(T|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<<o);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=T+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<<o,l&o?(l=u+8|0,o=n[l>>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,T=o<<B,m=(T+520192|0)>>>16&4,T=T<<m,o=(T+245760|0)>>>16&2,o=14-(m|B|o)+(T<<o>>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<<o;do if(l&u){for(l=d<<((o|0)==31?0:25-(o>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,T=n[B>>2]|0,n[T+12>>2]=k,n[B>>2]=k,n[k+8>>2]=T,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(T=(n[2791]|0)+-1|0,n[2791]=T,!T)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function LYe(){return 11628}function MYe(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=HYe(n[o+60>>2]|0)|0,o=rx(hu(6,u|0)|0)|0,I=l,o|0}function t$(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0;G=I,I=I+48|0,_=G+16|0,m=G,d=G+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,T=o+20|0,A=(n[T>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=rx(Ma(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,We=n[d+4>>2]|0,ae=m>>>0>We>>>0,d=ae?d+8|0:d,l=(ae<<31>>31)+l|0,We=m-(ae?We:0)|0,n[d>>2]=(n[d>>2]|0)+We,ae=d+4|0,n[ae>>2]=(n[ae>>2]|0)-We,n[_>>2]=n[B>>2],n[_+4>>2]=d,n[_+8>>2]=l,m=rx(Ma(146,_|0)|0)|0,(A|0)==(m|0)){M=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[T>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else M=3;while(!1);return(M|0)==3&&(We=n[o+44>>2]|0,n[o+16>>2]=We+(n[o+48>>2]|0),n[k>>2]=We,n[T>>2]=We),I=G,u|0}function _Ye(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(rx(La(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function rx(o){return o=o|0,o>>>0>4294963200&&(n[(Zy()|0)>>2]=0-o,o=-1),o|0}function Zy(){return(UYe()|0)+64|0}function UYe(){return m_()|0}function m_(){return 2084}function HYe(o){return o=o|0,o|0}function jYe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,io(54,A|0)|0)&&(s[o+75>>0]=-1),A=t$(o,l,u)|0,I=d,A|0}function r$(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function qYe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function n$(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0;Qe=I,I=I+224|0,M=Qe+120|0,G=Qe+80|0,We=Qe,Le=Qe+136|0,A=G,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[M>>2]=n[u>>2],(y_(0,l,M,We,G)|0)<0?u=-1:((n[o+76>>2]|0)>-1?ae=GYe(o)|0:ae=0,u=n[o>>2]|0,_=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=y_(o,l,M,We,G)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,T=o+16|0,n[T>>2]=Le+80,u=y_(o,l,M,We,G)|0,m&&(ox[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[T>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|_,ae|0&&WYe(o),u=A&32|0?-1:u),I=Qe,u|0}function y_(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Tr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ct=(o|0)!=0,He=Lt+40|0,Ge=He,Lt=Lt+39|0,qr=Tr+4|0,B=0,m=0,M=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Zy()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Ze=9;break t}case 0:{B=k;break t}default:}tt=k+1|0,n[fr>>2]=tt,B=s[tt>>0]|0,k=tt}t:do if((Ze|0)==9)for(;;){if(Ze=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Ze=9;else break}while(!1);if(B=B-l|0,ct&&Ss(o,l,B),B|0){l=k;continue}T=k+1|0,B=(s[T>>0]|0)+-48|0,B>>>0<10?(tt=(s[k+2>>0]|0)==36,Qe=tt?B:-1,M=tt?1:M,T=tt?k+3|0:T):Qe=-1,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(_=0,G=B;;){if(B=1<<k,!(B&75913)){B=G;break t}if(_=B|_,T=T+1|0,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;G=B}else _=0;while(!1);if(B<<24>>24==42){if(k=T+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[T+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,M=1,T=T+3|0;else{if(M|0){m=-1;break}ct?(M=(n[u>>2]|0)+3&-4,B=n[M>>2]|0,n[u>>2]=M+4,M=0,T=k):(B=0,M=0,T=k)}n[fr>>2]=T,tt=(B|0)<0,B=tt?0-B|0:B,_=tt?_|8192:_}else{if(B=i$(fr)|0,(B|0)<0){m=-1;break}T=n[fr>>2]|0}do if((s[T>>0]|0)==46){if((s[T+1>>0]|0)!=42){n[fr>>2]=T+1,k=i$(fr)|0,T=n[fr>>2]|0;break}if(G=T+2|0,k=(s[G>>0]|0)+-48|0,k>>>0<10&&(s[T+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[G>>0]|0)+-48<<3)>>2]|0,T=T+4|0,n[fr>>2]=T;break}if(M|0){m=-1;break e}ct?(tt=(n[u>>2]|0)+3&-4,k=n[tt>>2]|0,n[u>>2]=tt+4):k=0,n[fr>>2]=G,T=G}else k=-1;while(!1);for(Le=0;;){if(((s[T>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(tt=T+1|0,n[fr>>2]=tt,G=s[(s[T>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,ae=G&255,(ae+-1|0)>>>0<8)Le=ae,T=tt;else break}if(!(G<<24>>24)){m=-1;break}We=(Qe|0)>-1;do if(G<<24>>24==19)if(We){m=-1;break e}else Ze=49;else{if(We){n[d+(Qe<<2)>>2]=ae,We=A+(Qe<<3)|0,Qe=n[We+4>>2]|0,Ze=$t,n[Ze>>2]=n[We>>2],n[Ze+4>>2]=Qe,Ze=49;break}if(!ct){m=0;break e}s$($t,ae,u)}while(!1);if((Ze|0)==49&&(Ze=0,!ct)){B=0,l=tt;continue}T=s[T>>0]|0,T=(Le|0)!=0&(T&15|0)==3?T&-33:T,We=_&-65537,Qe=_&8192|0?We:_;t:do switch(T|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=tt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=tt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}default:{B=0,l=tt;continue e}}case 112:{T=120,k=k>>>0>8?k:8,l=Qe|8,Ze=61;break}case 88:case 120:{l=Qe,Ze=61;break}case 111:{T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,ae=VYe(l,T,He)|0,We=Ge-ae|0,_=0,G=5642,k=(Qe&8|0)==0|(k|0)>(We|0)?k:We+1|0,We=Qe,Ze=67;break}case 105:case 100:if(T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,(T|0)<0){l=nx(0,0,l|0,T|0)|0,T=Ee,_=$t,n[_>>2]=l,n[_+4>>2]=T,_=1,G=5642,Ze=66;break t}else{_=(Qe&2049|0)!=0&1,G=Qe&2048|0?5643:Qe&1|0?5644:5642,Ze=66;break t}case 117:{T=$t,_=0,G=5642,l=n[T>>2]|0,T=n[T+4>>2]|0,Ze=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,_=0,G=5642,ae=He,T=1,k=We;break}case 109:{T=KYe(n[(Zy()|0)>>2]|0)|0,Ze=71;break}case 115:{T=n[$t>>2]|0,T=T|0?T:5652,Ze=71;break}case 67:{n[Tr>>2]=n[$t>>2],n[qr>>2]=0,n[$t>>2]=Tr,ae=-1,T=Tr,Ze=75;break}case 83:{l=n[$t>>2]|0,k?(ae=k,T=l,Ze=75):(Ms(o,32,B,0,Qe),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=zYe(o,+E[$t>>3],B,k,Qe,T)|0,l=tt;continue e}default:_=0,G=5642,ae=He,T=k,k=Qe}while(!1);t:do if((Ze|0)==61)Qe=$t,Le=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,ae=YYe(Le,Qe,He,T&32)|0,G=(l&8|0)==0|(Le|0)==0&(Qe|0)==0,_=G?0:2,G=G?5642:5642+(T>>4)|0,We=l,l=Le,T=Qe,Ze=67;else if((Ze|0)==66)ae=Xy(l,T,He)|0,We=Qe,Ze=67;else if((Ze|0)==71)Ze=0,Qe=JYe(T,0,k)|0,Le=(Qe|0)==0,l=T,_=0,G=5642,ae=Le?T+k|0:Qe,T=Le?k:Qe-T|0,k=We;else if((Ze|0)==75){for(Ze=0,G=T,l=0,k=0;_=n[G>>2]|0,!(!_||(k=o$(Hr,_)|0,(k|0)<0|k>>>0>(ae-l|0)>>>0));)if(l=k+l|0,ae>>>0>l>>>0)G=G+4|0;else break;if((k|0)<0){m=-1;break e}if(Ms(o,32,B,l,Qe),!l)l=0,Ze=84;else for(_=0;;){if(k=n[T>>2]|0,!k){Ze=84;break t}if(k=o$(Hr,k)|0,_=k+_|0,(_|0)>(l|0)){Ze=84;break t}if(Ss(o,Hr,k),_>>>0>=l>>>0){Ze=84;break}else T=T+4|0}}while(!1);if((Ze|0)==67)Ze=0,T=(l|0)!=0|(T|0)!=0,Qe=(k|0)!=0|T,T=((T^1)&1)+(Ge-ae)|0,l=Qe?ae:He,ae=He,T=Qe?(k|0)>(T|0)?k:T:k,k=(k|0)>-1?We&-65537:We;else if((Ze|0)==84){Ze=0,Ms(o,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=tt;continue}Le=ae-l|0,We=(T|0)<(Le|0)?Le:T,Qe=We+_|0,B=(B|0)<(Qe|0)?Qe:B,Ms(o,32,B,Qe,k),Ss(o,G,_),Ms(o,48,B,Qe,k^65536),Ms(o,48,We,Le,0),Ss(o,l,Le),Ms(o,32,B,Qe,k^8192),l=tt}e:do if((Ze|0)==87&&!o)if(!M)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(s$(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function GYe(o){return o=o|0,0}function WYe(o){o=o|0}function Ss(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||sVe(l,u,o)|0}function i$(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function s$(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function YYe(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=ix(o|0,l|0,4)|0,l=Ee;while(!((o|0)==0&(l|0)==0));return u|0}function VYe(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=ix(o|0,l|0,3)|0,l=Ee;while(!((o|0)==0&(l|0)==0));return u|0}function Xy(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=w_(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=C_(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=Ee;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function KYe(o){return o=o|0,tVe(o,n[(eVe()|0)+188>>2]|0)|0}function JYe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=_e(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function Ms(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,eE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do Ss(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}Ss(o,m,d)}I=B}function o$(o,l){return o=o|0,l=l|0,o?o=XYe(o,l,0)|0:o=0,o|0}function zYe(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,Ge=0,Lt=0,qr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0;Hn=I,I=I+560|0,T=Hn+8|0,tt=Hn,cr=Hn+524|0,Hr=cr,_=Hn+512|0,n[tt>>2]=0,Tr=_+12|0,a$(l)|0,(Ee|0)<0?(l=-l,fr=1,qr=5659):(fr=(d&2049|0)!=0&1,qr=d&2048|0?5662:d&1|0?5665:5660),a$(l)|0,$t=Ee&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(We=+ZYe(l,tt)*2,B=We!=0,B&&(n[tt>>2]=(n[tt>>2]|0)+-1),ct=m|32,(ct|0)==97){Le=m&32,ae=Le|0?qr+9|0:qr,G=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=We;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[ae>>0]|0)==45){l=-(l+(-We-l));break}else{l=We+l-l;break}}while(!1);k=n[tt>>2]|0,B=(k|0)<0?0-k|0:k,B=Xy(B,((B|0)<0)<<31>>31,Tr)|0,(B|0)==(Tr|0)&&(B=_+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,M=B+-2|0,s[M>>0]=m+15,_=(A|0)<1,T=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(T&(_&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Tr-M|0,Tr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+G+Tr|0,Ms(o,32,u,B,d),Ss(o,ae,G),Ms(o,48,u,B,d^65536),Ss(o,cr,$t),Ms(o,48,Tr-$t|0,0,0),Ss(o,M,Hr),Ms(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[tt>>2]|0)+-28|0,n[tt>>2]=B,l=We*268435456):(l=We,B=n[tt>>2]|0),$t=(B|0)<0?T:T+288|0,T=$t;do Ge=~~l>>>0,n[T>>2]=Ge,T=T+4|0,l=(l-+(Ge>>>0))*1e9;while(l!=0);if((B|0)>0)for(_=$t,G=T;;){if(M=(B|0)<29?B:29,B=G+-4|0,B>>>0>=_>>>0){T=0;do He=p$(n[B>>2]|0,0,M|0)|0,He=I_(He|0,Ee|0,T|0,0)|0,Ge=Ee,Ze=w_(He|0,Ge|0,1e9,0)|0,n[B>>2]=Ze,T=C_(He|0,Ge|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=_>>>0);T&&(_=_+-4|0,n[_>>2]=T)}for(T=G;!(T>>>0<=_>>>0);)if(B=T+-4|0,!(n[B>>2]|0))T=B;else break;if(B=(n[tt>>2]|0)-M|0,n[tt>>2]=B,(B|0)>0)G=T;else break}else _=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Qe=(ct|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,_>>>0<T>>>0){M=(1<<Le)+-1|0,G=1e9>>>Le,ae=0,B=_;do Ge=n[B>>2]|0,n[B>>2]=(Ge>>>Le)+ae,ae=_e(Ge&M,G)|0,B=B+4|0;while(B>>>0<T>>>0);B=n[_>>2]|0?_:_+4|0,ae?(n[T>>2]=ae,_=B,B=T+4|0):(_=B,B=T)}else _=n[_>>2]|0?_:_+4|0,B=T;T=Qe?$t:_,T=(B-T>>2|0)>(A|0)?T+(A<<2)|0:B,B=(n[tt>>2]|0)+Le|0,n[tt>>2]=B}while((B|0)<0);B=_,A=T}else B=_,A=T;if(Ge=$t,B>>>0<A>>>0){if(T=(Ge-B>>2)*9|0,M=n[B>>2]|0,M>>>0>=10){_=10;do _=_*10|0,T=T+1|0;while(M>>>0>=_>>>0)}}else T=0;if(Qe=(ct|0)==103,Ze=(k|0)!=0,_=k-((ct|0)!=102?T:0)+((Ze&Qe)<<31>>31)|0,(_|0)<(((A-Ge>>2)*9|0)+-9|0)){if(_=_+9216|0,Le=$t+4+(((_|0)/9|0)+-1024<<2)|0,_=((_|0)%9|0)+1|0,(_|0)<9){M=10;do M=M*10|0,_=_+1|0;while((_|0)!=9)}else M=10;if(G=n[Le>>2]|0,ae=(G>>>0)%(M>>>0)|0,_=(Le+4|0)==(A|0),_&(ae|0)==0)_=Le;else if(We=((G>>>0)/(M>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(M|0)/2|0,l=ae>>>0<He>>>0?.5:_&(ae|0)==(He|0)?1:1.5,fr&&(He=(s[qr>>0]|0)==45,l=He?-l:l,We=He?-We:We),_=G-ae|0,n[Le>>2]=_,We+l!=We){if(He=_+M|0,n[Le>>2]=He,He>>>0>999999999)for(T=Le;_=T+-4|0,n[T>>2]=0,_>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[_>>2]|0)+1|0,n[_>>2]=He,He>>>0>999999999;)T=_;else _=Le;if(T=(Ge-B>>2)*9|0,G=n[B>>2]|0,G>>>0>=10){M=10;do M=M*10|0,T=T+1|0;while(G>>>0>=M>>>0)}}else _=Le;_=_+4|0,_=A>>>0>_>>>0?_:A,He=B}else _=A,He=B;for(ct=_;;){if(ct>>>0<=He>>>0){tt=0;break}if(B=ct+-4|0,!(n[B>>2]|0))ct=B;else{tt=1;break}}A=0-T|0;do if(Qe)if(B=((Ze^1)&1)+k|0,(B|0)>(T|0)&(T|0)>-5?(M=m+-1|0,k=B+-1-T|0):(M=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(tt&&(Lt=n[ct+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)_=0;else{_=0,B=10;do B=B*10|0,_=_+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else _=9;if(B=((ct-Ge>>2)*9|0)+-9|0,(M|32|0)==102){Le=B-_|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+T-_|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else M=m,Le=d&8;while(!1);if(Qe=k|Le,G=(Qe|0)!=0&1,ae=(M|32|0)==102,ae)Ze=0,B=(T|0)>0?T:0;else{if(B=(T|0)<0?A:T,B=Xy(B,((B|0)<0)<<31>>31,Tr)|0,_=Tr,(_-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((_-B|0)<2);s[B+-1>>0]=(T>>31&2)+43,B=B+-2|0,s[B>>0]=M,Ze=B,B=_-B|0}if(B=fr+1+k+G+B|0,Ms(o,32,u,B,d),Ss(o,qr,fr),Ms(o,48,u,B,d^65536),ae){M=He>>>0>$t>>>0?$t:He,Le=cr+9|0,G=Le,ae=cr+8|0,_=M;do{if(T=Xy(n[_>>2]|0,0,Le)|0,(_|0)==(M|0))(T|0)==(Le|0)&&(s[ae>>0]=48,T=ae);else if(T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}Ss(o,T,G-T|0),_=_+4|0}while(_>>>0<=$t>>>0);if(Qe|0&&Ss(o,5710,1),_>>>0<ct>>>0&(k|0)>0)for(;;){if(T=Xy(n[_>>2]|0,0,Le)|0,T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}if(Ss(o,T,(k|0)<9?k:9),_=_+4|0,T=k+-9|0,_>>>0<ct>>>0&(k|0)>9)k=T;else{k=T;break}}Ms(o,48,k+9|0,9,0)}else{if(Qe=tt?ct:He+4|0,(k|0)>-1){tt=cr+9|0,Le=(Le|0)==0,A=tt,G=0-Hr|0,ae=cr+8|0,M=He;do{T=Xy(n[M>>2]|0,0,tt)|0,(T|0)==(tt|0)&&(s[ae>>0]=48,T=ae);do if((M|0)==(He|0)){if(_=T+1|0,Ss(o,T,1),Le&(k|0)<1){T=_;break}Ss(o,5710,1),T=_}else{if(T>>>0<=cr>>>0)break;eE(cr|0,48,T+G|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}while(!1);Hr=A-T|0,Ss(o,T,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,M=M+4|0}while(M>>>0<Qe>>>0&(k|0)>-1)}Ms(o,48,k+18|0,18,0),Ss(o,Ze,Tr-Ze|0)}Ms(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,Ms(o,32,u,B,d&-65537),Ss(o,qr,fr),Ss(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),Ms(o,32,u,B,d^8192);while(!1);return I=Hn,((B|0)<(u|0)?u:B)|0}function a$(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,Ee=n[S+4>>2]|0,l|0}function ZYe(o,l){return o=+o,l=l|0,+ +l$(o,l)}function l$(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=ix(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+l$(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function XYe(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[($Ye()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(Zy()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(Zy()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function $Ye(){return m_()|0}function eVe(){return m_()|0}function tVe(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return rVe(u,n[l+20>>2]|0)|0}function rVe(o,l){return o=o|0,l=l|0,nVe(o,l)|0}function nVe(o,l){return o=o|0,l=l|0,l?l=iVe(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function iVe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0;ae=(n[o>>2]|0)+1794895138|0,m=pd(n[o+8>>2]|0,ae)|0,A=pd(n[o+12>>2]|0,ae)|0,d=pd(n[o+16>>2]|0,ae)|0;e:do if(m>>>0<l>>>2>>>0&&(G=l-(m<<2)|0,A>>>0<G>>>0&d>>>0<G>>>0)&&!((d|A)&3|0)){for(G=A>>>2,M=d>>>2,_=0;;){if(k=m>>>1,T=_+k|0,B=T<<1,d=B+G|0,A=pd(n[o+(d<<2)>>2]|0,ae)|0,d=pd(n[o+(d+1<<2)>>2]|0,ae)|0,!(d>>>0<l>>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=r$(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else _=A?_:T,m=A?k:m-k|0}A=B+M|0,d=pd(n[o+(A<<2)>>2]|0,ae)|0,A=pd(n[o+(A+1<<2)>>2]|0,ae)|0,A>>>0<l>>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function pd(o,l){o=o|0,l=l|0;var u=0;return u=d$(o|0)|0,(l|0?u:o)|0}function sVe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:oVe(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0<l>>>0){A=ox[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=ox[n[u+36>>2]&7](u,o,B)|0,A>>>0<B>>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function oVe(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function $n(o,l){o=y(o),l=y(l);var u=0,A=0;u=c$(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=c$(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o<l?l:o;break}}else o=l;while(!1);return y(o)}function c$(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function hd(o,l){o=y(o),l=y(l);var u=0,A=0;u=u$(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=u$(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o<l?o:l;break}}else o=l;while(!1);return y(o)}function u$(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function E_(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,T=0,_=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,T=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((aVe(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|T,y(h[S>>2]))}else _=3;while(!1);return(_|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function aVe(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function lVe(o,l){return o=o|0,l=l|0,n$(n[582]|0,o,l)|0}function sn(o){o=o|0,Nt()}function $y(o){o=o|0}function cVe(o,l){return o=o|0,l=l|0,0}function uVe(o){return o=o|0,(f$(o+4|0)|0)==-1?(op[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function f$(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Yh(o){o=o|0,uVe(o)|0&&fVe(o)}function fVe(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(f$(l)|0)!=-1||op[n[(n[o>>2]|0)+16>>2]&127](o)}function Jt(o){o=o|0;var l=0;for(l=o|0?o:1;o=ex(l)|0,!(o|0);){if(o=pVe()|0,!o){o=0;break}D$[o&0]()}return o|0}function A$(o){return o=o|0,Jt(o)|0}function yt(o){o=o|0,tx(o)}function AVe(o){o=o|0,(s[o+11>>0]|0)<0&&yt(n[o>>2]|0)}function pVe(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function hVe(){}function nx(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,Ee=A,o-u>>>0|0|0}function I_(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,Ee=l+A+(u>>>0<o>>>0|0)>>>0,u|0|0}function eE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function p$(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Ee=l<<u|(o&(1<<u)-1<<32-u)>>>32-u,o<<u):(Ee=o<<u-32,0)}function ix(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Ee=l>>>u,o>>>u|(l&(1<<u)-1)<<32-u):(Ee=0,l>>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return MA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function h$(o){o=o|0;var l=0;return l=s[N+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[N+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[N+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[N+(o>>>24)>>0]|0)+24|0))}function g$(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,_=0,M=0,G=0,ae=0,We=0,Le=0;if(M=o,T=l,_=T,B=u,ae=A,k=ae,!_)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,ae=0,d=0,Ee=ae,d|0):(ae=0,d=0,Ee=ae,d|0):(m&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),ae=0,d=(M>>>0)/(B>>>0)>>>0,Ee=ae,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(_|0)|0)|0,m>>>0<=31){G=m+1|0,k=31-m|0,l=m-31>>31,B=G,o=M>>>(G>>>0)&l|_<<k,l=_>>>(G>>>0)&l,m=0,k=M<<k;break}return d?(n[d>>2]=o|0,n[d+4>>2]=T|l&0,ae=0,d=0,Ee=ae,d|0):(ae=0,d=0,Ee=ae,d|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(_|0)|0)|0,Le=64-k|0,G=32-k|0,T=G>>31,We=k-32|0,l=We>>31,B=k,o=G-1>>31&_>>>(We>>>0)|(_<<G|M>>>(k>>>0))&l,l=l&_>>>(k>>>0),m=M<<Le&T,k=(_<<Le|M>>>(We>>>0))&T|M<<G&k-33>>31;break}return d|0&&(n[d>>2]=m&M,n[d+4>>2]=0),(B|0)==1?(We=T|l&0,Le=o|0|0,Ee=We,Le|0):(Le=h$(B|0)|0,We=_>>>(Le>>>0)|0,Le=_<<32-Le|M>>>(Le>>>0)|0,Ee=We,Le|0)}else{if(m)return d|0&&(n[d>>2]=(_>>>0)%(B>>>0),n[d+4>>2]=0),We=0,Le=(_>>>0)/(B>>>0)>>>0,Ee=We,Le|0;if(!M)return d|0&&(n[d>>2]=0,n[d+4>>2]=(_>>>0)%(k>>>0)),We=0,Le=(_>>>0)/(k>>>0)>>>0,Ee=We,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&_|l&0),We=0,Le=_>>>((h$(k|0)|0)>>>0),Ee=We,Le|0;if(m=(b(k|0)|0)-(b(_|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=_<<k|M>>>(l>>>0),l=_>>>(l>>>0),m=0,k=M<<k;break}return d?(n[d>>2]=o|0,n[d+4>>2]=T|l&0,We=0,Le=0,Ee=We,Le|0):(We=0,Le=0,Ee=We,Le|0)}while(!1);if(!B)_=k,T=0,k=0;else{G=u|0|0,M=ae|A&0,_=I_(G|0,M|0,-1,-1)|0,u=Ee,T=k,k=0;do A=T,T=m>>>31|T<<1,m=k|m<<1,A=o<<1|A>>>31|0,ae=o>>>31|l<<1|0,nx(_|0,u|0,A|0,ae|0)|0,Le=Ee,We=Le>>31|((Le|0)<0?-1:0)<<1,k=We&1,o=nx(A|0,ae|0,We&G|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&M|0)|0,l=Ee,B=B-1|0;while(B|0);_=T,T=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),We=(m|0)>>>31|(_|B)<<1|(B<<1|m>>>31)&0|T,Le=(m<<1|0)&-2|k,Ee=We,Le|0}function C_(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,g$(o,l,u,A,0)|0}function Vh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(oe()|0,pu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(Z()|0)?(n[C>>2]=l,pu(12),-1):l|0)}function F2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function w_(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,g$(o,l,u,A,d)|0,I=m,Ee=n[d+4>>2]|0,n[d>>2]|0|0}function d$(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function gVe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,m$[o&1](l|0,u|0,A|0,d|0,m|0)}function dVe(o,l,u){o=o|0,l=l|0,u=y(u),y$[o&1](l|0,y(u))}function mVe(o,l,u){o=o|0,l=l|0,u=+u,E$[o&31](l|0,+u)}function yVe(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(I$[o&0](l|0,y(u),y(A)))}function EVe(o,l){o=o|0,l=l|0,op[o&127](l|0)}function IVe(o,l,u){o=o|0,l=l|0,u=u|0,ap[o&31](l|0,u|0)}function CVe(o,l){return o=o|0,l=l|0,dd[o&31](l|0)|0}function wVe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,C$[o&1](l|0,+u,+A,d|0)}function BVe(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,n7e[o&1](l|0,+u,+A)}function vVe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,ox[o&7](l|0,u|0,A|0)|0}function SVe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+i7e[o&1](l|0,u|0,A|0)}function DVe(o,l){return o=o|0,l=l|0,+w$[o&15](l|0)}function bVe(o,l,u){return o=o|0,l=l|0,u=+u,s7e[o&1](l|0,+u)|0}function PVe(o,l,u){return o=o|0,l=l|0,u=u|0,v_[o&15](l|0,u|0)|0}function xVe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,o7e[o&1](l|0,u|0,+A,+d,m|0)}function kVe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,a7e[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function QVe(o,l,u){return o=o|0,l=l|0,u=u|0,+B$[o&7](l|0,u|0)}function TVe(o){return o=o|0,ax[o&7]()|0}function RVe(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,v$[o&1](l|0,u|0,A|0,d|0,m|0)|0}function FVe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,l7e[o&1](l|0,u|0,A|0,+d)}function NVe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,S$[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function OVe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,L2[o&15](l|0,u|0,A|0)}function LVe(o){o=o|0,D$[o&0]()}function MVe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,b$[o&15](l|0,u|0,+A)}function _Ve(o,l,u){return o=o|0,l=+l,u=+u,c7e[o&1](+l,+u)|0}function UVe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,S_[o&15](l|0,u|0,A|0,d|0)}function HVe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function jVe(o,l){o=o|0,l=y(l),F(1)}function Xa(o,l){o=o|0,l=+l,F(2)}function qVe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),Xe}function wr(o){o=o|0,F(4)}function N2(o,l){o=o|0,l=l|0,F(5)}function Ll(o){return o=o|0,F(6),0}function GVe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function WVe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function YVe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function VVe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function gd(o){return o=o|0,F(11),0}function KVe(o,l){return o=o|0,l=+l,F(12),0}function O2(o,l){return o=o|0,l=l|0,F(13),0}function JVe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function zVe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function B_(o,l){return o=o|0,l=l|0,F(16),0}function ZVe(){return F(17),0}function XVe(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function $Ve(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function e7e(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function sx(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function t7e(){F(22)}function tE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function r7e(o,l){return o=+o,l=+l,F(24),0}function rE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var m$=[HVe,XGe],y$=[jVe,Ty],E$=[Xa,$g,Lh,m2,y2,E2,I2,Pf,Uy,C2,xf,ed,td,w2,B2,vu,rd,v2,Hy,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa],I$=[qVe],op=[wr,$y,TLe,RLe,FLe,c4e,u4e,f4e,bqe,Pqe,xqe,_Ge,UGe,HGe,aYe,lYe,cYe,vl,Xg,p2,sr,gc,qP,GP,wLe,jLe,eMe,yMe,FMe,ZMe,h_e,x_e,G_e,oUe,wUe,MUe,e4e,P4e,G4e,o3e,w3e,M3e,e8e,E8e,F8e,K8e,uHe,kP,HHe,nje,wje,Uje,t6e,w6e,T6e,N6e,X6e,tqe,yqe,Qqe,Fqe,Zqe,gGe,nZ,z5e,b9e,j9e,nWe,SWe,UWe,ZWe,eYe,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],ap=[N2,Ly,nM,h2,g2,xr,oo,Zi,Os,Bs,_y,Oh,D2,NP,sd,oM,aM,OP,LP,uM,kf,ne,B8e,L8e,Gje,$5e,BGe,HX,N2,N2,N2,N2],dd=[Ll,MYe,Ny,id,qy,da,QP,Mh,S2,sM,RP,Gy,MP,fM,Vy,pHe,s6e,eGe,n9e,Fl,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll],C$=[GVe,dM],n7e=[WVe,Cqe],ox=[YVe,t$,_Ye,jYe,t_e,T4e,WHe,aWe],i7e=[VVe,DUe],w$=[gd,_h,FP,tp,mM,v,D,Q,H,V,gd,gd,gd,gd,gd,gd],s7e=[KVe,x6e],v_=[O2,cVe,_P,DLe,wMe,m_e,T_e,i4e,K4e,X8e,Ry,Y9e,O2,O2,O2,O2],o7e=[JVe,iMe],a7e=[zVe,xWe],B$=[B_,lM,Se,Ue,At,jUe,B_,B_],ax=[ZVe,Gt,Fy,xP,_6e,sqe,Mqe,iYe],v$=[XVe,Sy],l7e=[$Ve,D3e],S$=[e7e,AM],L2=[sx,To,TP,cM,Du,MMe,V_e,j3e,i8e,rM,C5e,Q9e,GWe,sx,sx,sx],D$=[t7e],b$=[tE,iM,My,ep,d2,Su,jy,nd,u3e,aje,S6e,tE,tE,tE,tE,tE],c7e=[r7e,Sqe],S_=[rE,uUe,CHe,Dje,h6e,W6e,fqe,Wqe,IGe,c9e,gYe,rE,rE,rE,rE,rE];return{_llvm_bswap_i32:d$,dynCall_idd:_Ve,dynCall_i:TVe,_i64Subtract:nx,___udivdi3:C_,dynCall_vif:dVe,setThrew:ua,dynCall_viii:OVe,_bitshift64Lshr:ix,_bitshift64Shl:p$,dynCall_vi:EVe,dynCall_viiddi:xVe,dynCall_diii:SVe,dynCall_iii:PVe,_memset:eE,_sbrk:Vh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:u2,dynCall_vii:IVe,___uremdi3:w_,dynCall_vid:mVe,stackAlloc:Ha,_nbind_init:DYe,getTempRet0:UA,dynCall_di:DVe,dynCall_iid:bVe,setTempRet0:_A,_i64Add:I_,dynCall_fiff:yVe,dynCall_iiii:vVe,_emscripten_get_global_libc:LYe,dynCall_viid:MVe,dynCall_viiid:FVe,dynCall_viififi:NVe,dynCall_ii:CVe,__GLOBAL__sub_I_Binding_cc:j5e,dynCall_viiii:UVe,dynCall_iiiiii:RVe,stackSave:gf,dynCall_viiiii:gVe,__GLOBAL__sub_I_nbind_cc:vr,dynCall_vidd:BVe,_free:tx,runPostSets:hVe,dynCall_viiiiii:kVe,establishStackSpace:wn,_memmove:F2,stackRestore:cc,_malloc:ex,__GLOBAL__sub_I_common_cc:lGe,dynCall_viddi:wVe,dynCall_dii:QVe,dynCall_v:LVe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+t+\")\",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];s();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),\"i8\",ALLOC_NORMAL)),s();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var c=Module._main(r,a,0);exit(c,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var f=p;p&&typeof p==\"object\"&&p.stack&&(f=[p,p.stack]),Module.printErr(\"exception thrown: \"+f),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){Module.setStatus(\"\")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t=\"\",ABORT=!0,EXITSTATUS=1;var e=`\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r=\"abort(\"+t+\") at \"+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Nm=L((Khr,KDe)=>{\"use strict\";var $Pt=YDe(),ext=VDe(),PW=!1,xW=null;ext({},function(t,e){if(!PW){if(PW=!0,t)throw t;xW=e}});if(!PW)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");KDe.exports=$Pt(xW.bind,xW.lib)});var QW=L((Jhr,kW)=>{\"use strict\";var JDe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);kW.exports=JDe;kW.exports.default=JDe});var ZDe=L((zhr,zDe)=>{\"use strict\";zDe.exports=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g}});var iD=L((Zhr,TW)=>{\"use strict\";var txt=bk(),rxt=QW(),nxt=ZDe(),XDe=t=>{if(typeof t!=\"string\"||t.length===0||(t=txt(t),t.length===0))return 0;t=t.replace(nxt(),\"  \");let e=0;for(let r=0;r<t.length;r++){let s=t.codePointAt(r);s<=31||s>=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,e+=rxt(s)?2:1)}return e};TW.exports=XDe;TW.exports.default=XDe});var FW=L((Xhr,RW)=>{\"use strict\";var ixt=iD(),$De=t=>{let e=0;for(let r of t.split(`\n`))e=Math.max(e,ixt(r));return e};RW.exports=$De;RW.exports.default=$De});var ebe=L(sD=>{\"use strict\";var sxt=sD&&sD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sD,\"__esModule\",{value:!0});var oxt=sxt(FW()),NW={};sD.default=t=>{if(t.length===0)return{width:0,height:0};if(NW[t])return NW[t];let e=oxt.default(t),r=t.split(`\n`).length;return NW[t]={width:e,height:r},{width:e,height:r}}});var tbe=L(oD=>{\"use strict\";var axt=oD&&oD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(oD,\"__esModule\",{value:!0});var bn=axt(Nm()),lxt=(t,e)=>{\"position\"in e&&t.setPositionType(e.position===\"absolute\"?bn.default.POSITION_TYPE_ABSOLUTE:bn.default.POSITION_TYPE_RELATIVE)},cxt=(t,e)=>{\"marginLeft\"in e&&t.setMargin(bn.default.EDGE_START,e.marginLeft||0),\"marginRight\"in e&&t.setMargin(bn.default.EDGE_END,e.marginRight||0),\"marginTop\"in e&&t.setMargin(bn.default.EDGE_TOP,e.marginTop||0),\"marginBottom\"in e&&t.setMargin(bn.default.EDGE_BOTTOM,e.marginBottom||0)},uxt=(t,e)=>{\"paddingLeft\"in e&&t.setPadding(bn.default.EDGE_LEFT,e.paddingLeft||0),\"paddingRight\"in e&&t.setPadding(bn.default.EDGE_RIGHT,e.paddingRight||0),\"paddingTop\"in e&&t.setPadding(bn.default.EDGE_TOP,e.paddingTop||0),\"paddingBottom\"in e&&t.setPadding(bn.default.EDGE_BOTTOM,e.paddingBottom||0)},fxt=(t,e)=>{var r;\"flexGrow\"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),\"flexShrink\"in e&&t.setFlexShrink(typeof e.flexShrink==\"number\"?e.flexShrink:1),\"flexDirection\"in e&&(e.flexDirection===\"row\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW),e.flexDirection===\"row-reverse\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection===\"column\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN),e.flexDirection===\"column-reverse\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN_REVERSE)),\"flexBasis\"in e&&(typeof e.flexBasis==\"number\"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis==\"string\"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),\"alignItems\"in e&&((e.alignItems===\"stretch\"||!e.alignItems)&&t.setAlignItems(bn.default.ALIGN_STRETCH),e.alignItems===\"flex-start\"&&t.setAlignItems(bn.default.ALIGN_FLEX_START),e.alignItems===\"center\"&&t.setAlignItems(bn.default.ALIGN_CENTER),e.alignItems===\"flex-end\"&&t.setAlignItems(bn.default.ALIGN_FLEX_END)),\"alignSelf\"in e&&((e.alignSelf===\"auto\"||!e.alignSelf)&&t.setAlignSelf(bn.default.ALIGN_AUTO),e.alignSelf===\"flex-start\"&&t.setAlignSelf(bn.default.ALIGN_FLEX_START),e.alignSelf===\"center\"&&t.setAlignSelf(bn.default.ALIGN_CENTER),e.alignSelf===\"flex-end\"&&t.setAlignSelf(bn.default.ALIGN_FLEX_END)),\"justifyContent\"in e&&((e.justifyContent===\"flex-start\"||!e.justifyContent)&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_START),e.justifyContent===\"center\"&&t.setJustifyContent(bn.default.JUSTIFY_CENTER),e.justifyContent===\"flex-end\"&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_END),e.justifyContent===\"space-between\"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent===\"space-around\"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_AROUND))},Axt=(t,e)=>{var r,s;\"width\"in e&&(typeof e.width==\"number\"?t.setWidth(e.width):typeof e.width==\"string\"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),\"height\"in e&&(typeof e.height==\"number\"?t.setHeight(e.height):typeof e.height==\"string\"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),\"minWidth\"in e&&(typeof e.minWidth==\"string\"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),\"minHeight\"in e&&(typeof e.minHeight==\"string\"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((s=e.minHeight)!==null&&s!==void 0?s:0))},pxt=(t,e)=>{\"display\"in e&&t.setDisplay(e.display===\"flex\"?bn.default.DISPLAY_FLEX:bn.default.DISPLAY_NONE)},hxt=(t,e)=>{if(\"borderStyle\"in e){let r=typeof e.borderStyle==\"string\"?1:0;t.setBorder(bn.default.EDGE_TOP,r),t.setBorder(bn.default.EDGE_BOTTOM,r),t.setBorder(bn.default.EDGE_LEFT,r),t.setBorder(bn.default.EDGE_RIGHT,r)}};oD.default=(t,e={})=>{lxt(t,e),cxt(t,e),uxt(t,e),fxt(t,e),Axt(t,e),pxt(t,e),hxt(t,e)}});var ibe=L((t0r,nbe)=>{\"use strict\";var aD=iD(),gxt=bk(),dxt=IB(),LW=new Set([\"\\x1B\",\"\\x9B\"]),mxt=39,rbe=t=>`${LW.values().next().value}[${t}m`,yxt=t=>t.split(\" \").map(e=>aD(e)),OW=(t,e,r)=>{let s=[...e],a=!1,n=aD(gxt(t[t.length-1]));for(let[c,f]of s.entries()){let p=aD(f);if(n+p<=r?t[t.length-1]+=f:(t.push(f),n=0),LW.has(f))a=!0;else if(a&&f===\"m\"){a=!1;continue}a||(n+=p,n===r&&c<s.length-1&&(t.push(\"\"),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Ext=t=>{let e=t.split(\" \"),r=e.length;for(;r>0&&!(aD(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(\" \")+e.slice(r).join(\"\")},Ixt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()===\"\")return\"\";let s=\"\",a=\"\",n,c=yxt(t),f=[\"\"];for(let[p,h]of t.split(\" \").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=aD(f[f.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(\"\"),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=\" \",E++)),r.hard&&c[p]>e){let C=e-E,S=1+Math.floor((c[p]-C-1)/e);Math.floor((c[p]-1)/e)<S&&f.push(\"\"),OW(f,h,e);continue}if(E+c[p]>e&&E>0&&c[p]>0){if(r.wordWrap===!1&&E<e){OW(f,h,e);continue}f.push(\"\")}if(E+c[p]>e&&r.wordWrap===!1){OW(f,h,e);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(Ext)),s=f.join(`\n`);for(let[p,h]of[...s].entries()){if(a+=h,LW.has(h)){let C=parseFloat(/\\d[^m]*/.exec(s.slice(p,p+4)));n=C===mxt?null:C}let E=dxt.codes.get(Number(n));n&&E&&(s[p+1]===`\n`?a+=rbe(E):h===`\n`&&(a+=rbe(n)))}return a};nbe.exports=(t,e,r)=>String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(s=>Ixt(s,e,r)).join(`\n`)});var abe=L((r0r,obe)=>{\"use strict\";var sbe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",Cxt=t=>t&&t.exact?new RegExp(`^${sbe}$`):new RegExp(sbe,\"g\");obe.exports=Cxt});var MW=L((n0r,fbe)=>{\"use strict\";var wxt=QW(),Bxt=abe(),lbe=IB(),ube=[\"\\x1B\",\"\\x9B\"],MF=t=>`${ube[0]}[${t}m`,cbe=(t,e,r)=>{let s=[];t=[...t];for(let a of t){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let c=lbe.codes.get(parseInt(a,10));if(c){let f=t.indexOf(c.toString());f>=0?t.splice(f,1):s.push(MF(e?c:n))}else if(e){s.push(MF(0));break}else s.push(MF(n))}if(e&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=MF(lbe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join(\"\")};fbe.exports=(t,e,r)=>{let s=[...t.normalize()],a=[];r=typeof r==\"number\"?r:s.length;let n=!1,c,f=0,p=\"\";for(let[h,E]of s.entries()){let C=!1;if(ube.includes(E)){let S=/\\d[^m]*/.exec(t.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,f<r&&(n=!0,c!==void 0&&a.push(c))}else n&&E===\"m\"&&(n=!1,C=!0);if(!n&&!C&&++f,!Bxt({exact:!0}).test(E)&&wxt(E.codePointAt())&&++f,f>e&&f<=r)p+=E;else if(f===e&&!n&&c!==void 0)p=cbe(a);else if(f>=r){p+=cbe(a,!0,c);break}}return p}});var pbe=L((i0r,Abe)=>{\"use strict\";var eg=MW(),vxt=iD();function _F(t,e,r){if(t.charAt(e)===\" \")return e;for(let s=1;s<=3;s++)if(r){if(t.charAt(e+s)===\" \")return e+s}else if(t.charAt(e-s)===\" \")return e-s;return e}Abe.exports=(t,e,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c=\"\\u2026\",f=1;if(typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a string, got ${typeof t}`);if(typeof e!=\"number\")throw new TypeError(`Expected \\`columns\\` to be a number, got ${typeof e}`);if(e<1)return\"\";if(e===1)return c;let p=vxt(t);if(p<=e)return t;if(s===\"start\"){if(n){let h=_F(t,p-e+1,!0);return c+eg(t,h,p).trim()}return a===!0&&(c+=\" \",f=2),c+eg(t,p-e+f,p)}if(s===\"middle\"){a===!0&&(c=\" \"+c+\" \",f=3);let h=Math.floor(e/2);if(n){let E=_F(t,h),C=_F(t,p-(e-h)+1,!0);return eg(t,0,E)+c+eg(t,C,p).trim()}return eg(t,0,h)+c+eg(t,p-(e-h)+f,p)}if(s===\"end\"){if(n){let h=_F(t,e-1);return eg(t,0,h)+c}return a===!0&&(c=\" \"+c,f=2),eg(t,0,e-f)+c}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${s}`)}});var UW=L(lD=>{\"use strict\";var hbe=lD&&lD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lD,\"__esModule\",{value:!0});var Sxt=hbe(ibe()),Dxt=hbe(pbe()),_W={};lD.default=(t,e,r)=>{let s=t+String(e)+String(r);if(_W[s])return _W[s];let a=t;if(r===\"wrap\"&&(a=Sxt.default(t,e,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=Dxt.default(t,e,{position:n})}return _W[s]=a,a}});var jW=L(HW=>{\"use strict\";Object.defineProperty(HW,\"__esModule\",{value:!0});var gbe=t=>{let e=\"\";if(t.childNodes.length>0)for(let r of t.childNodes){let s=\"\";r.nodeName===\"#text\"?s=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(s=gbe(r)),s.length>0&&typeof r.internal_transform==\"function\"&&(s=r.internal_transform(s))),e+=s}return e};HW.default=gbe});var qW=L(Pi=>{\"use strict\";var cD=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,\"__esModule\",{value:!0});Pi.setTextNodeValue=Pi.createTextNode=Pi.setStyle=Pi.setAttribute=Pi.removeChildNode=Pi.insertBeforeNode=Pi.appendChildNode=Pi.createNode=Pi.TEXT_NAME=void 0;var bxt=cD(Nm()),dbe=cD(ebe()),Pxt=cD(tbe()),xxt=cD(UW()),kxt=cD(jW());Pi.TEXT_NAME=\"#text\";Pi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t===\"ink-virtual-text\"?void 0:bxt.default.Node.create()};return t===\"ink-text\"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(Qxt.bind(null,r))),r};Pi.appendChildNode=(t,e)=>{var r;e.parentNode&&Pi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&UF(t)};Pi.insertBeforeNode=(t,e,r)=>{var s,a;e.parentNode&&Pi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((s=t.yogaNode)===null||s===void 0||s.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&UF(t)};Pi.removeChildNode=(t,e)=>{var r,s;e.yogaNode&&((s=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&UF(t)};Pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};Pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&Pxt.default(t.yogaNode,e)};Pi.createTextNode=t=>{let e={nodeName:\"#text\",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return Pi.setTextNodeValue(e,t),e};var Qxt=function(t,e){var r,s;let a=t.nodeName===\"#text\"?t.nodeValue:kxt.default(t),n=dbe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let c=(s=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:\"wrap\",f=xxt.default(a,e,c);return dbe.default(f)},mbe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:mbe(t.parentNode)},UF=t=>{let e=mbe(t);e?.markDirty()};Pi.setTextNodeValue=(t,e)=>{typeof e!=\"string\"&&(e=String(e)),t.nodeValue=e,UF(t)}});var wbe=L(uD=>{\"use strict\";var Cbe=uD&&uD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uD,\"__esModule\",{value:!0});var ybe=SW(),Txt=Cbe(UDe()),Ebe=Cbe(Nm()),ta=qW(),Ibe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};uD.default=Txt.default({schedulePassiveEffects:ybe.unstable_scheduleCallback,cancelPassiveEffects:ybe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender==\"function\"&&t.onImmediateRender();return}typeof t.onRender==\"function\"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,s=e===\"ink-text\"||e===\"ink-virtual-text\";return r===s?t:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,s)=>{if(s.isInsideText&&t===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=t===\"ink-text\"&&s.isInsideText?\"ink-virtual-text\":t,n=ta.createNode(a);for(let[c,f]of Object.entries(e))c!==\"children\"&&(c===\"style\"?ta.setStyle(n,f):c===\"internal_transform\"?n.internal_transform=f:c===\"internal_static\"?n.internal_static=!0:ta.setAttribute(n,c,f));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${t}\" must be rendered inside <Text> component`);return ta.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{ta.setTextNodeValue(t,\"\")},unhideTextInstance:(t,e)=>{ta.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(Ebe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(Ebe.default.DISPLAY_FLEX)},appendInitialChild:ta.appendChildNode,appendChild:ta.appendChildNode,insertBefore:ta.insertBeforeNode,finalizeInitialChildren:(t,e,r,s)=>(t.internal_static&&(s.isStaticDirty=!0,s.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:ta.appendChildNode,insertInContainerBefore:ta.insertBeforeNode,removeChildFromContainer:(t,e)=>{ta.removeChildNode(t,e),Ibe(e.yogaNode)},prepareUpdate:(t,e,r,s,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f===\"style\"&&typeof s.style==\"object\"&&typeof r.style==\"object\"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S===\"borderStyle\"||S===\"borderColor\"){if(typeof n.style!=\"object\"){let P={};n.style=P}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!=\"object\"){let P={};n.style=P}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(t,e)=>{for(let[r,s]of Object.entries(e))r!==\"children\"&&(r===\"style\"?ta.setStyle(t,s):r===\"internal_transform\"?t.internal_transform=s:r===\"internal_static\"?t.internal_static=!0:ta.setAttribute(t,r,s))},commitTextUpdate:(t,e,r)=>{ta.setTextNodeValue(t,r)},removeChild:(t,e)=>{ta.removeChildNode(t,e),Ibe(e.yogaNode)}})});var vbe=L((c0r,Bbe)=>{\"use strict\";Bbe.exports=(t,e=1,r)=>{if(r={indent:\" \",includeEmptyLines:!1,...r},typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof t}\\``);if(typeof e!=\"number\")throw new TypeError(`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof e}\\``);if(typeof r.indent!=\"string\")throw new TypeError(`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof r.indent}\\``);if(e===0)return t;let s=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return t.replace(s,r.indent.repeat(e))}});var Sbe=L(fD=>{\"use strict\";var Rxt=fD&&fD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fD,\"__esModule\",{value:!0});var HF=Rxt(Nm());fD.default=t=>t.getComputedWidth()-t.getComputedPadding(HF.default.EDGE_LEFT)-t.getComputedPadding(HF.default.EDGE_RIGHT)-t.getComputedBorder(HF.default.EDGE_LEFT)-t.getComputedBorder(HF.default.EDGE_RIGHT)});var Dbe=L((f0r,Fxt)=>{Fxt.exports={single:{topLeft:\"\\u250C\",topRight:\"\\u2510\",bottomRight:\"\\u2518\",bottomLeft:\"\\u2514\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},double:{topLeft:\"\\u2554\",topRight:\"\\u2557\",bottomRight:\"\\u255D\",bottomLeft:\"\\u255A\",vertical:\"\\u2551\",horizontal:\"\\u2550\"},round:{topLeft:\"\\u256D\",topRight:\"\\u256E\",bottomRight:\"\\u256F\",bottomLeft:\"\\u2570\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},bold:{topLeft:\"\\u250F\",topRight:\"\\u2513\",bottomRight:\"\\u251B\",bottomLeft:\"\\u2517\",vertical:\"\\u2503\",horizontal:\"\\u2501\"},singleDouble:{topLeft:\"\\u2553\",topRight:\"\\u2556\",bottomRight:\"\\u255C\",bottomLeft:\"\\u2559\",vertical:\"\\u2551\",horizontal:\"\\u2500\"},doubleSingle:{topLeft:\"\\u2552\",topRight:\"\\u2555\",bottomRight:\"\\u255B\",bottomLeft:\"\\u2558\",vertical:\"\\u2502\",horizontal:\"\\u2550\"},classic:{topLeft:\"+\",topRight:\"+\",bottomRight:\"+\",bottomLeft:\"+\",vertical:\"|\",horizontal:\"-\"}}});var Pbe=L((A0r,GW)=>{\"use strict\";var bbe=Dbe();GW.exports=bbe;GW.exports.default=bbe});var kbe=L((p0r,xbe)=>{\"use strict\";var Nxt=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c=\"\";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},Oxt=(t,e,r,s)=>{let a=0,n=\"\";do{let c=t[s-1]===\"\\r\";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\\r\n`:`\n`)+r,a=s+1,s=t.indexOf(`\n`,a)}while(s!==-1);return n+=t.substr(a),n};xbe.exports={stringReplaceAll:Nxt,stringEncaseCRLFWithFirstIndex:Oxt}});var Nbe=L((h0r,Fbe)=>{\"use strict\";var Lxt=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,Qbe=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,Mxt=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,_xt=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,Uxt=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function Rbe(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):Uxt.get(t)||t}function Hxt(t,e){let r=[],s=e.trim().split(/\\s*,\\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(Mxt))r.push(a[2].replace(_xt,(f,p,h)=>p?Rbe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function jxt(t){Qbe.lastIndex=0;let e=[],r;for(;(r=Qbe.exec(t))!==null;){let s=r[1];if(r[2]){let a=Hxt(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function Tbe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}Fbe.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(Lxt,(n,c,f,p,h,E)=>{if(c)a.push(Rbe(c));else if(p){let C=a.join(\"\");a=[],s.push(r.length===0?C:Tbe(t,r)(C)),r.push({inverse:f,styles:jxt(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");s.push(Tbe(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),s.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return s.join(\"\")}});var YF=L((g0r,Hbe)=>{\"use strict\";var AD=IB(),{stdout:YW,stderr:VW}=c4(),{stringReplaceAll:qxt,stringEncaseCRLFWithFirstIndex:Gxt}=kbe(),{isArray:jF}=Array,Lbe=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],Iw=Object.create(null),Wxt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=YW?YW.level:0;t.level=e.level===void 0?r:e.level},KW=class{constructor(e){return Mbe(e)}},Mbe=t=>{let e={};return Wxt(e,t),e.template=(...r)=>Ube(e.template,...r),Object.setPrototypeOf(e,qF.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=KW,e.template};function qF(t){return Mbe(t)}for(let[t,e]of Object.entries(AD))Iw[t]={get(){let r=GF(this,JW(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Iw.visible={get(){let t=GF(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var _be=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of _be)Iw[t]={get(){let{level:e}=this;return function(...r){let s=JW(AD.color[Lbe[e]][t](...r),AD.color.close,this._styler);return GF(this,s,this._isEmpty)}}};for(let t of _be){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);Iw[e]={get(){let{level:r}=this;return function(...s){let a=JW(AD.bgColor[Lbe[r]][t](...s),AD.bgColor.close,this._styler);return GF(this,a,this._isEmpty)}}}}var Yxt=Object.defineProperties(()=>{},{...Iw,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),JW=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},GF=(t,e,r)=>{let s=(...a)=>jF(a[0])&&jF(a[0].raw)?Obe(s,Ube(s,...a)):Obe(s,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(s,Yxt),s._generator=t,s._styler=e,s._isEmpty=r,s},Obe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=qxt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=Gxt(e,a,s,n)),s+e+a},WW,Ube=(t,...e)=>{let[r]=e;if(!jF(r)||!jF(r.raw))return e.join(\" \");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(s[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return WW===void 0&&(WW=Nbe()),WW(t,a.join(\"\"))};Object.defineProperties(qF.prototype,Iw);var WF=qF();WF.supportsColor=YW;WF.stderr=qF({level:VW?VW.level:0});WF.stderr.supportsColor=VW;Hbe.exports=WF});var zW=L(hD=>{\"use strict\";var Vxt=hD&&hD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hD,\"__esModule\",{value:!0});var pD=Vxt(YF()),Kxt=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,Jxt=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,VF=(t,e)=>e===\"foreground\"?t:\"bg\"+t[0].toUpperCase()+t.slice(1);hD.default=(t,e,r)=>{if(!e)return t;if(e in pD.default){let a=VF(e,r);return pD.default[a](t)}if(e.startsWith(\"#\")){let a=VF(\"hex\",r);return pD.default[a](e)(t)}if(e.startsWith(\"ansi\")){let a=Jxt.exec(e);if(!a)return t;let n=VF(a[1],r),c=Number(a[2]);return pD.default[n](c)(t)}if(e.startsWith(\"rgb\")||e.startsWith(\"hsl\")||e.startsWith(\"hsv\")||e.startsWith(\"hwb\")){let a=Kxt.exec(e);if(!a)return t;let n=VF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return pD.default[n](c,f,p)(t)}return t}});var qbe=L(gD=>{\"use strict\";var jbe=gD&&gD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gD,\"__esModule\",{value:!0});var zxt=jbe(Pbe()),ZW=jbe(zW());gD.default=(t,e,r,s)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=zxt.default[r.style.borderStyle],p=ZW.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,\"foreground\"),h=(ZW.default(f.vertical,c,\"foreground\")+`\n`).repeat(n-2),E=ZW.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,\"foreground\");s.write(t,e,p,{transformers:[]}),s.write(t,e+1,h,{transformers:[]}),s.write(t+a-1,e+1,h,{transformers:[]}),s.write(t,e+n-1,E,{transformers:[]})}}});var Wbe=L(dD=>{\"use strict\";var Om=dD&&dD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dD,\"__esModule\",{value:!0});var Zxt=Om(Nm()),Xxt=Om(FW()),$xt=Om(vbe()),ekt=Om(UW()),tkt=Om(Sbe()),rkt=Om(jW()),nkt=Om(qbe()),ikt=(t,e)=>{var r;let s=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();e=`\n`.repeat(n)+$xt.default(e,a)}return e},Gbe=(t,e,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===Zxt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof t.internal_transform==\"function\"&&(C=[t.internal_transform,...c]),t.nodeName===\"ink-text\"){let S=rkt.default(t);if(S.length>0){let P=Xxt.default(S),I=tkt.default(p);if(P>I){let R=(s=t.style.textWrap)!==null&&s!==void 0?s:\"wrap\";S=ekt.default(S,I,R)}S=ikt(t,S),e.write(h,E,S,{transformers:C})}return}if(t.nodeName===\"ink-box\"&&nkt.default(h,E,t,e),t.nodeName===\"ink-root\"||t.nodeName===\"ink-box\")for(let S of t.childNodes)Gbe(S,e,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};dD.default=Gbe});var Kbe=L(mD=>{\"use strict\";var Vbe=mD&&mD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mD,\"__esModule\",{value:!0});var Ybe=Vbe(MW()),skt=Vbe(iD()),XW=class{constructor(e){this.writes=[];let{width:r,height:s}=e;this.width=r,this.height=s}write(e,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:e,y:r,text:s,transformers:n})}get(){let e=[];for(let s=0;s<this.height;s++)e.push(\" \".repeat(this.width));for(let s of this.writes){let{x:a,y:n,text:c,transformers:f}=s,p=c.split(`\n`),h=0;for(let E of p){let C=e[n+h];if(!C)continue;let S=skt.default(E);for(let P of f)E=P(E);e[n+h]=Ybe.default(C,0,a)+E+Ybe.default(C,a+S),h++}}return{output:e.map(s=>s.trimRight()).join(`\n`),height:e.length}}};mD.default=XW});var Zbe=L(yD=>{\"use strict\";var $W=yD&&yD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yD,\"__esModule\",{value:!0});var okt=$W(Nm()),Jbe=$W(Wbe()),zbe=$W(Kbe());yD.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,okt.default.DIRECTION_LTR);let s=new zbe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});Jbe.default(t,s,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new zbe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),Jbe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var tPe=L((C0r,ePe)=>{\"use strict\";var Xbe=ye(\"stream\"),$be=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],eY={},akt=t=>{let e=new Xbe.PassThrough,r=new Xbe.PassThrough;e.write=a=>t(\"stdout\",a),r.write=a=>t(\"stderr\",a);let s=new console.Console(e,r);for(let a of $be)eY[a]=console[a],console[a]=s[a];return()=>{for(let a of $be)console[a]=eY[a];eY={}}};ePe.exports=akt});var rY=L(tY=>{\"use strict\";Object.defineProperty(tY,\"__esModule\",{value:!0});tY.default=new WeakMap});var iY=L(nY=>{\"use strict\";Object.defineProperty(nY,\"__esModule\",{value:!0});var lkt=hn(),rPe=lkt.createContext({exit:()=>{}});rPe.displayName=\"InternalAppContext\";nY.default=rPe});var oY=L(sY=>{\"use strict\";Object.defineProperty(sY,\"__esModule\",{value:!0});var ckt=hn(),nPe=ckt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});nPe.displayName=\"InternalStdinContext\";sY.default=nPe});var lY=L(aY=>{\"use strict\";Object.defineProperty(aY,\"__esModule\",{value:!0});var ukt=hn(),iPe=ukt.createContext({stdout:void 0,write:()=>{}});iPe.displayName=\"InternalStdoutContext\";aY.default=iPe});var uY=L(cY=>{\"use strict\";Object.defineProperty(cY,\"__esModule\",{value:!0});var fkt=hn(),sPe=fkt.createContext({stderr:void 0,write:()=>{}});sPe.displayName=\"InternalStderrContext\";cY.default=sPe});var KF=L(fY=>{\"use strict\";Object.defineProperty(fY,\"__esModule\",{value:!0});var Akt=hn(),oPe=Akt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});oPe.displayName=\"InternalFocusContext\";fY.default=oPe});var lPe=L((P0r,aPe)=>{\"use strict\";var pkt=/[|\\\\{}()[\\]^$+*?.-]/g;aPe.exports=t=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return t.replace(pkt,\"\\\\$&\")}});var APe=L((x0r,fPe)=>{\"use strict\";var hkt=lPe(),gkt=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",uPe=[].concat(ye(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(t=>new RegExp(`(?:\\\\((?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));uPe.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var AY=class t{constructor(e){e={ignoredPackages:[],...e},\"internals\"in e||(e.internals=t.nodeInternals()),\"cwd\"in e||(e.cwd=gkt),this._cwd=e.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(e.internals,dkt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...uPe]}clean(e,r=0){r=\" \".repeat(r),Array.isArray(e)||(e=e.split(`\n`)),!/^\\s*at /.test(e[0])&&/^\\s*at /.test(e[1])&&(e=e.slice(1));let s=!1,a=null,n=[];return e.forEach(c=>{if(c=c.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(c)))return;let f=/^\\s*at /.test(c);s?c=c.trimEnd().replace(/^(\\s+)at /,\"$1\"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,\"\"),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c}\n`).join(\"\")}captureString(e,r=this.captureString){typeof e==\"function\"&&(r=e,e=1/0);let{stackTraceLimit:s}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(e,r=this.capture){typeof e==\"function\"&&(r=e,e=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};cPe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(e){let r=e&&e.match(mkt);if(!r)return null;let s=r[1]===\"new\",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]===\"native\",P=r[11]===\")\",I,R={};if(E&&(R.line=Number(E)),C&&(R.column=Number(C)),P&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")N++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(N--,N===-1&&h.charAt(U-1)===\" \")){let W=h.slice(0,U-1);h=h.slice(U+1),a+=` (${W}`;break}}if(a){let N=a.match(ykt);N&&(a=N[1],I=N[2])}return cPe(R,h,this._cwd),s&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=f,R.evalColumn=p,R.evalFile=c&&c.replace(/\\\\/g,\"/\")),S&&(R.native=!0),a&&(R.function=a),I&&a!==I&&(R.method=I),R}};function cPe(t,e,r){e&&(e=e.replace(/\\\\/g,\"/\"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function dkt(t){if(t.length===0)return[];let e=t.map(r=>hkt(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${e.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var mkt=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),ykt=/^(.*?) \\[as (.*?)\\]$/;fPe.exports=AY});var hPe=L((k0r,pPe)=>{\"use strict\";pPe.exports=(t,e)=>t.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(e||2)))});var dPe=L((Q0r,gPe)=>{\"use strict\";var Ekt=hPe(),Ikt=(t,e)=>{let r=[],s=t-e,a=t+e;for(let n=s;n<=a;n++)r.push(n);return r};gPe.exports=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(\"Source code is missing.\");if(!e||e<1)throw new TypeError(\"Line number must start from `1`.\");if(t=Ekt(t).split(/\\r?\\n/),!(e>t.length))return r={around:3,...r},Ikt(e,r.around).filter(s=>t[s-1]!==void 0).map(s=>({line:s,value:t[s-1]}))}});var JF=L(nf=>{\"use strict\";var Ckt=nf&&nf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),wkt=nf&&nf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Bkt=nf&&nf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&Ckt(e,t,r);return wkt(e,t),e},vkt=nf&&nf.__rest||function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,s=Object.getOwnPropertySymbols(t);a<s.length;a++)e.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(r[s[a]]=t[s[a]]);return r};Object.defineProperty(nf,\"__esModule\",{value:!0});var mPe=Bkt(hn()),pY=mPe.forwardRef((t,e)=>{var{children:r}=t,s=vkt(t,[\"children\"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return mPe.default.createElement(\"ink-box\",{ref:e,style:a},r)});pY.displayName=\"Box\";pY.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};nf.default=pY});var dY=L(ED=>{\"use strict\";var hY=ED&&ED.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ED,\"__esModule\",{value:!0});var Skt=hY(hn()),Cw=hY(YF()),yPe=hY(zW()),gY=({color:t,backgroundColor:e,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=Cw.default.dim(C)),t&&(C=yPe.default(C,t,\"foreground\")),e&&(C=yPe.default(C,e,\"background\")),s&&(C=Cw.default.bold(C)),a&&(C=Cw.default.italic(C)),n&&(C=Cw.default.underline(C)),c&&(C=Cw.default.strikethrough(C)),f&&(C=Cw.default.inverse(C)),C);return Skt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};gY.displayName=\"Text\";gY.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};ED.default=gY});var wPe=L(sf=>{\"use strict\";var Dkt=sf&&sf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),bkt=sf&&sf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Pkt=sf&&sf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&Dkt(e,t,r);return bkt(e,t),e},ID=sf&&sf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sf,\"__esModule\",{value:!0});var EPe=Pkt(ye(\"fs\")),Ts=ID(hn()),IPe=ID(APe()),xkt=ID(dPe()),rh=ID(JF()),hA=ID(dY()),CPe=new IPe.default({cwd:process.cwd(),internals:IPe.default.nodeInternals()}),kkt=({error:t})=>{let e=t.stack?t.stack.split(`\n`).slice(1):void 0,r=e?CPe.parseLine(e[0]):void 0,s,a=0;if(r?.file&&r?.line&&EPe.existsSync(r.file)){let n=EPe.readFileSync(r.file,\"utf8\");if(s=xkt.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Ts.default.createElement(rh.default,{flexDirection:\"column\",padding:1},Ts.default.createElement(rh.default,null,Ts.default.createElement(hA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),Ts.default.createElement(hA.default,null,\" \",t.message)),r&&Ts.default.createElement(rh.default,{marginTop:1},Ts.default.createElement(hA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&s&&Ts.default.createElement(rh.default,{marginTop:1,flexDirection:\"column\"},s.map(({line:n,value:c})=>Ts.default.createElement(rh.default,{key:n},Ts.default.createElement(rh.default,{width:a+1},Ts.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},String(n).padStart(a,\" \"),\":\")),Ts.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+c)))),t.stack&&Ts.default.createElement(rh.default,{marginTop:1,flexDirection:\"column\"},t.stack.split(`\n`).slice(1).map(n=>{let c=CPe.parseLine(n);return c?Ts.default.createElement(rh.default,{key:n},Ts.default.createElement(hA.default,{dimColor:!0},\"- \"),Ts.default.createElement(hA.default,{dimColor:!0,bold:!0},c.function),Ts.default.createElement(hA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",c.file,\":\",c.line,\":\",c.column,\")\")):Ts.default.createElement(rh.default,{key:n},Ts.default.createElement(hA.default,{dimColor:!0},\"- \"),Ts.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};sf.default=kkt});var vPe=L(of=>{\"use strict\";var Qkt=of&&of.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Tkt=of&&of.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Rkt=of&&of.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&Qkt(e,t,r);return Tkt(e,t),e},Mm=of&&of.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(of,\"__esModule\",{value:!0});var Lm=Rkt(hn()),BPe=Mm(pW()),Fkt=Mm(iY()),Nkt=Mm(oY()),Okt=Mm(lY()),Lkt=Mm(uY()),Mkt=Mm(KF()),_kt=Mm(wPe()),Ukt=\"\t\",Hkt=\"\\x1B[Z\",jkt=\"\\x1B\",zF=class extends Lm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding(\"utf8\"),e){this.rawModeEnabledCount===0&&(r.addListener(\"data\",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener(\"data\",this.handleInput),r.pause())},this.handleInput=e=>{e===\"\u0003\"&&this.props.exitOnCtrlC&&this.handleExit(),e===jkt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===Ukt&&this.focusNext(),e===Hkt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=e=>{this.setState(r=>r.focusables.some(a=>a?.id===e)?{activeFocusId:e}:r)},this.focusNext=()=>{this.setState(e=>{var r;let s=(r=e.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(e)||s}})},this.focusPrevious=()=>{this.setState(e=>{var r;let s=(r=e.focusables[e.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(e)||s}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...s.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s+1;a<e.focusables.length;a++)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id},this.findPreviousFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Lm.default.createElement(Fkt.default.Provider,{value:{exit:this.handleExit}},Lm.default.createElement(Nkt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Lm.default.createElement(Okt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Lm.default.createElement(Lkt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Lm.default.createElement(Mkt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Lm.default.createElement(_kt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){BPe.default.hide(this.props.stdout)}componentWillUnmount(){BPe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};of.default=zF;zF.displayName=\"InternalApp\"});var bPe=L(af=>{\"use strict\";var qkt=af&&af.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Gkt=af&&af.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Wkt=af&&af.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&qkt(e,t,r);return Gkt(e,t),e},lf=af&&af.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(af,\"__esModule\",{value:!0});var Ykt=lf(hn()),SPe=rH(),Vkt=lf(wDe()),Kkt=lf(lW()),Jkt=lf(PDe()),zkt=lf(kDe()),mY=lf(wbe()),Zkt=lf(Zbe()),Xkt=lf(AW()),$kt=lf(tPe()),eQt=Wkt(qW()),tQt=lf(rY()),rQt=lf(vPe()),ww=process.env.CI===\"false\"?!1:Jkt.default,DPe=()=>{},yY=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=Zkt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==`\n`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(ww){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(Kkt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},zkt.default(this),this.options=e,this.rootNode=eQt.createNode(\"ink-root\"),this.rootNode.onRender=e.debug?this.onRender:SPe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=Vkt.default.create(e.stdout),this.throttledLog=e.debug?this.log:SPe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=mY.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=Xkt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),ww||(e.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{e.stdout.off(\"resize\",this.onRender)})}render(e){let r=Ykt.default.createElement(rQt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);mY.default.updateContainer(r,this.container,null,DPe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(ww){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(ww){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole==\"function\"&&this.restoreConsole(),typeof this.unsubscribeResize==\"function\"&&this.unsubscribeResize(),ww?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,mY.default.updateContainer(null,this.container,null,DPe),tQt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!ww&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=$kt.default((e,r)=>{e===\"stdout\"&&this.writeToStdout(r),e===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};af.default=yY});var xPe=L(CD=>{\"use strict\";var PPe=CD&&CD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CD,\"__esModule\",{value:!0});var nQt=PPe(bPe()),ZF=PPe(rY()),iQt=ye(\"stream\"),sQt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},oQt(e)),s=aQt(r.stdout,()=>new nQt.default(r));return s.render(t),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>ZF.default.delete(r.stdout),clear:s.clear}};CD.default=sQt;var oQt=(t={})=>t instanceof iQt.Stream?{stdout:t,stdin:process.stdin}:t,aQt=(t,e)=>{let r;return ZF.default.has(t)?r=ZF.default.get(t):(r=e(),ZF.default.set(t,r)),r}});var QPe=L(nh=>{\"use strict\";var lQt=nh&&nh.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),cQt=nh&&nh.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uQt=nh&&nh.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&lQt(e,t,r);return cQt(e,t),e};Object.defineProperty(nh,\"__esModule\",{value:!0});var wD=uQt(hn()),kPe=t=>{let{items:e,children:r,style:s}=t,[a,n]=wD.useState(0),c=wD.useMemo(()=>e.slice(a),[e,a]);wD.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=c.map((h,E)=>r(h,a+E)),p=wD.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},s),[s]);return wD.default.createElement(\"ink-box\",{internal_static:!0,style:p},f)};kPe.displayName=\"Static\";nh.default=kPe});var RPe=L(BD=>{\"use strict\";var fQt=BD&&BD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(BD,\"__esModule\",{value:!0});var AQt=fQt(hn()),TPe=({children:t,transform:e})=>t==null?null:AQt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:e},t);TPe.displayName=\"Transform\";BD.default=TPe});var NPe=L(vD=>{\"use strict\";var pQt=vD&&vD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vD,\"__esModule\",{value:!0});var hQt=pQt(hn()),FPe=({count:t=1})=>hQt.default.createElement(\"ink-text\",null,`\n`.repeat(t));FPe.displayName=\"Newline\";vD.default=FPe});var MPe=L(SD=>{\"use strict\";var OPe=SD&&SD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SD,\"__esModule\",{value:!0});var gQt=OPe(hn()),dQt=OPe(JF()),LPe=()=>gQt.default.createElement(dQt.default,{flexGrow:1});LPe.displayName=\"Spacer\";SD.default=LPe});var XF=L(DD=>{\"use strict\";var mQt=DD&&DD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(DD,\"__esModule\",{value:!0});var yQt=hn(),EQt=mQt(oY()),IQt=()=>yQt.useContext(EQt.default);DD.default=IQt});var UPe=L(bD=>{\"use strict\";var CQt=bD&&bD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bD,\"__esModule\",{value:!0});var _Pe=hn(),wQt=CQt(XF()),BQt=(t,e={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=wQt.default();_Pe.useEffect(()=>{if(e.isActive!==!1)return s(!0),()=>{s(!1)}},[e.isActive,s]),_Pe.useEffect(()=>{if(e.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f===\"\\x1B[A\",downArrow:f===\"\\x1B[B\",leftArrow:f===\"\\x1B[D\",rightArrow:f===\"\\x1B[C\",pageDown:f===\"\\x1B[6~\",pageUp:f===\"\\x1B[5~\",return:f===\"\\r\",escape:f===\"\\x1B\",ctrl:!1,shift:!1,tab:f===\"\t\"||f===\"\\x1B[Z\",backspace:f===\"\\b\",delete:f===\"\\x7F\"||f===\"\\x1B[3~\",meta:!1};f<=\"\u001a\"&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith(\"\\x1B\")&&(f=f.slice(1),p.meta=!0);let h=f>=\"A\"&&f<=\"Z\",E=f>=\"\\u0410\"&&f<=\"\\u042F\";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=\"\"),(!(f===\"c\"&&p.ctrl)||!a)&&t(f,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[e.isActive,r,a,t])};bD.default=BQt});var HPe=L(PD=>{\"use strict\";var vQt=PD&&PD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(PD,\"__esModule\",{value:!0});var SQt=hn(),DQt=vQt(iY()),bQt=()=>SQt.useContext(DQt.default);PD.default=bQt});var jPe=L(xD=>{\"use strict\";var PQt=xD&&xD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xD,\"__esModule\",{value:!0});var xQt=hn(),kQt=PQt(lY()),QQt=()=>xQt.useContext(kQt.default);xD.default=QQt});var qPe=L(kD=>{\"use strict\";var TQt=kD&&kD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kD,\"__esModule\",{value:!0});var RQt=hn(),FQt=TQt(uY()),NQt=()=>RQt.useContext(FQt.default);kD.default=NQt});var WPe=L(TD=>{\"use strict\";var GPe=TD&&TD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TD,\"__esModule\",{value:!0});var QD=hn(),OQt=GPe(KF()),LQt=GPe(XF()),MQt=({isActive:t=!0,autoFocus:e=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=LQt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=QD.useContext(OQt.default),C=QD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return QD.useEffect(()=>(c(C,{autoFocus:e}),()=>{f(C)}),[C,e]),QD.useEffect(()=>{t?p(C):h(C)},[t,C]),QD.useEffect(()=>{if(!(!s||!t))return a(!0),()=>{a(!1)}},[t]),{isFocused:!!C&&n===C,focus:E}};TD.default=MQt});var YPe=L(RD=>{\"use strict\";var _Qt=RD&&RD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RD,\"__esModule\",{value:!0});var UQt=hn(),HQt=_Qt(KF()),jQt=()=>{let t=UQt.useContext(HQt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious,focus:t.focus}};RD.default=jQt});var VPe=L(EY=>{\"use strict\";Object.defineProperty(EY,\"__esModule\",{value:!0});EY.default=t=>{var e,r,s,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=t.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Vc=L(Eo=>{\"use strict\";Object.defineProperty(Eo,\"__esModule\",{value:!0});var qQt=xPe();Object.defineProperty(Eo,\"render\",{enumerable:!0,get:function(){return qQt.default}});var GQt=JF();Object.defineProperty(Eo,\"Box\",{enumerable:!0,get:function(){return GQt.default}});var WQt=dY();Object.defineProperty(Eo,\"Text\",{enumerable:!0,get:function(){return WQt.default}});var YQt=QPe();Object.defineProperty(Eo,\"Static\",{enumerable:!0,get:function(){return YQt.default}});var VQt=RPe();Object.defineProperty(Eo,\"Transform\",{enumerable:!0,get:function(){return VQt.default}});var KQt=NPe();Object.defineProperty(Eo,\"Newline\",{enumerable:!0,get:function(){return KQt.default}});var JQt=MPe();Object.defineProperty(Eo,\"Spacer\",{enumerable:!0,get:function(){return JQt.default}});var zQt=UPe();Object.defineProperty(Eo,\"useInput\",{enumerable:!0,get:function(){return zQt.default}});var ZQt=HPe();Object.defineProperty(Eo,\"useApp\",{enumerable:!0,get:function(){return ZQt.default}});var XQt=XF();Object.defineProperty(Eo,\"useStdin\",{enumerable:!0,get:function(){return XQt.default}});var $Qt=jPe();Object.defineProperty(Eo,\"useStdout\",{enumerable:!0,get:function(){return $Qt.default}});var eTt=qPe();Object.defineProperty(Eo,\"useStderr\",{enumerable:!0,get:function(){return eTt.default}});var tTt=WPe();Object.defineProperty(Eo,\"useFocus\",{enumerable:!0,get:function(){return tTt.default}});var rTt=YPe();Object.defineProperty(Eo,\"useFocusManager\",{enumerable:!0,get:function(){return rTt.default}});var nTt=VPe();Object.defineProperty(Eo,\"measureElement\",{enumerable:!0,get:function(){return nTt.default}})});var CY={};Vt(CY,{Gem:()=>IY});var KPe,_m,IY,$F=It(()=>{KPe=et(Vc()),_m=et(hn()),IY=(0,_m.memo)(({active:t})=>{let e=(0,_m.useMemo)(()=>t?\"\\u25C9\":\"\\u25EF\",[t]),r=(0,_m.useMemo)(()=>t?\"green\":\"yellow\",[t]);return _m.default.createElement(KPe.Text,{color:r},e)})});var zPe={};Vt(zPe,{useKeypress:()=>Um});function Um({active:t},e,r){let{stdin:s}=(0,JPe.useStdin)(),a=(0,eN.useCallback)((n,c)=>e(n,c),r);(0,eN.useEffect)(()=>{if(!(!t||!s))return s.on(\"keypress\",a),()=>{s.off(\"keypress\",a)}},[t,a,s])}var JPe,eN,FD=It(()=>{JPe=et(Vc()),eN=et(hn())});var XPe={};Vt(XPe,{FocusRequest:()=>ZPe,useFocusRequest:()=>wY});var ZPe,wY,BY=It(()=>{FD();ZPe=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(ZPe||{}),wY=function({active:t},e,r){Um({active:t},(s,a)=>{a.name===\"tab\"&&(a.shift?e(\"before\"):e(\"after\"))},r)}});var $Pe={};Vt($Pe,{useListInput:()=>ND});var ND,tN=It(()=>{FD();ND=function(t,e,{active:r,minus:s,plus:a,set:n,loop:c=!0}){Um({active:r},(f,p)=>{let h=e.indexOf(t);switch(p.name){case s:{let E=h-1;if(c){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(c){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,c])}});var rN={};Vt(rN,{ScrollableItems:()=>iTt});var tg,ml,iTt,nN=It(()=>{tg=et(Vc()),ml=et(hn());BY();tN();iTt=({active:t=!0,children:e=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=N=>{if(N.key===null)throw new Error(\"Expected all children to have a key\");return N.key},p=ml.default.Children.map(e,N=>f(N)),h=p[0],[E,C]=(0,ml.useState)(h),S=p.indexOf(E);(0,ml.useEffect)(()=>{p.includes(E)||C(h)},[e]),(0,ml.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),wY({active:t&&!!n},N=>{n?.(N)},[n]),ND(E,p,{active:t,minus:\"up\",plus:\"down\",set:C,loop:a});let P=S-r,I=S+r;I>p.length&&(P-=I-p.length,I=p.length),P<0&&(I+=-P,P=0),I>=p.length&&(I=p.length-1);let R=[];for(let N=P;N<=I;++N){let U=p[N],W=t&&U===E;R.push(ml.default.createElement(tg.Box,{key:U,height:s},ml.default.createElement(tg.Box,{marginLeft:1,marginRight:1},ml.default.createElement(tg.Text,null,W?ml.default.createElement(tg.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),ml.default.createElement(tg.Box,null,ml.default.cloneElement(e[N],{active:W}))))}return ml.default.createElement(tg.Box,{flexDirection:\"column\",width:\"100%\"},R)}});var exe,ih,txe,vY,rxe,SY=It(()=>{exe=et(Vc()),ih=et(hn()),txe=ye(\"readline\"),vY=ih.default.createContext(null),rxe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,exe.useStdin)();(0,ih.useEffect)(()=>{r&&r(!0),e&&(0,txe.emitKeypressEvents)(e)},[e,r]);let[s,a]=(0,ih.useState)(new Map),n=(0,ih.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(new Map([...s,[c,f]]))}),[s,a]);return ih.default.createElement(vY.Provider,{value:n,children:t})}});var DY={};Vt(DY,{useMinistore:()=>sTt});function sTt(t,e){let r=(0,iN.useContext)(vY);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof t>\"u\")return r.getAll();let s=(0,iN.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>\"u\"&&(a=e),[a,s]}var iN,bY=It(()=>{iN=et(hn());SY()});var oN={};Vt(oN,{renderForm:()=>oTt});async function oTt(t,e,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,sN.useApp)();Um({active:!0},(E,C)=>{C.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,sN.render)(PY.default.createElement(rxe,null,PY.default.createElement(t,{...e,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var sN,PY,aN=It(()=>{sN=et(Vc()),PY=et(hn());SY();FD()});var oxe=L(OD=>{\"use strict\";Object.defineProperty(OD,\"__esModule\",{value:!0});OD.UncontrolledTextInput=void 0;var ixe=hn(),xY=hn(),nxe=Vc(),Hm=YF(),sxe=({value:t,placeholder:e=\"\",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=xY.useState({cursorOffset:(t||\"\").length,cursorWidth:0});xY.useEffect(()=>{E(R=>{if(!r||!n)return R;let N=t||\"\";return R.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:R})},[t,r,n]);let C=a?h:0,S=s?s.repeat(t.length):t,P=S,I=e?Hm.grey(e):void 0;if(n&&r){I=e.length>0?Hm.inverse(e[0])+Hm.grey(e.slice(1)):Hm.inverse(\" \"),P=S.length>0?\"\":Hm.inverse(\" \");let R=0;for(let N of S)R>=p-C&&R<=p?P+=Hm.inverse(N):P+=N,R++;S.length>0&&p===S.length&&(P+=Hm.inverse(\" \"))}return nxe.useInput((R,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&R===\"c\"||N.tab||N.shift&&N.tab)return;if(N.return){f&&f(t);return}let U=p,W=t,te=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(W=t.slice(0,p-1)+t.slice(p,t.length),U--):(W=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(te=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:te}),W!==t&&c(W)},{isActive:r}),ixe.createElement(nxe.Text,null,e?S.length>0?P:I:P)};OD.default=sxe;OD.UncontrolledTextInput=({initialValue:t=\"\",...e})=>{let[r,s]=xY.useState(t);return ixe.createElement(sxe,Object.assign({},e,{value:r,onChange:s}))}});var cxe={};Vt(cxe,{Pad:()=>kY});var axe,lxe,kY,QY=It(()=>{axe=et(Vc()),lxe=et(hn()),kY=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${\"-\".repeat(t-1)}`:\" \";return lxe.default.createElement(axe.Text,{dimColor:!e},r)}});var uxe={};Vt(uxe,{ItemOptions:()=>aTt});var MD,rg,aTt,fxe=It(()=>{MD=et(Vc()),rg=et(hn());tN();$F();QY();aTt=function({active:t,skewer:e,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!=\"\");return ND(s,c,{active:t,minus:\"left\",plus:\"right\",set:a}),rg.default.createElement(rg.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),P=Math.max(0,C-S.length-2);return p?rg.default.createElement(MD.Box,{key:p,width:C,marginLeft:1},rg.default.createElement(MD.Text,{wrap:\"truncate\"},rg.default.createElement(IY,{active:E}),\" \",p),e?rg.default.createElement(kY,{active:t,length:P}):null):rg.default.createElement(MD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var Dxe=L((Ndr,Sxe)=>{var jY;Sxe.exports=()=>(typeof jY>\"u\"&&(jY=ye(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),jY)});var Vxe=L((omr,Yxe)=>{var ZY=Symbol(\"arg flag\"),Kc=class t extends Error{constructor(e,r){super(e),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,t.prototype)}};function tb(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!t)throw new Kc(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},c={};for(let f of Object.keys(t)){if(!f)throw new Kc(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(f[0]!==\"-\")throw new Kc(`argument key must start with '-' but found: '${f}'`,\"ARG_CONFIG_NONOPT_KEY\");if(f.length===1)throw new Kc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof t[f]==\"string\"){n[f]=t[f];continue}let p=t[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(C,S,P=[])=>(P.push(E(C,S,P[P.length-1])),P),h=E===Boolean||E[ZY]===!0}else if(typeof p==\"function\")h=p===Boolean||p[ZY]===!0;else throw new Kc(`type missing or not a function or valid array type: ${f}`,\"ARG_CONFIG_VAD_TYPE\");if(f[1]!==\"-\"&&f.length>2)throw new Kc(`short argument keys (with a single hyphen) must have only one character: ${f}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");c[f]=[p,h]}for(let f=0,p=e.length;f<p;f++){let h=e[f];if(s&&a._.length>0){a._=a._.concat(e.slice(f));break}if(h===\"--\"){a._=a._.concat(e.slice(f+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(C=>`-${C}`);for(let C=0;C<E.length;C++){let S=E[C],[P,I]=S[1]===\"-\"?S.split(/=(.*)/,2):[S,void 0],R=P;for(;R in n;)R=n[R];if(!(R in c))if(r){a._.push(S);continue}else throw new Kc(`unknown or unexpected option: ${P}`,\"ARG_UNKNOWN_OPTION\");let[N,U]=c[R];if(!U&&C+1<E.length)throw new Kc(`option requires argument (but was followed by another short argument): ${P}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[R]=N(!0,R,a[R]);else if(I===void 0){if(e.length<f+2||e[f+1].length>1&&e[f+1][0]===\"-\"&&!(e[f+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(N===Number||typeof BigInt<\"u\"&&N===BigInt))){let W=P===R?\"\":` (alias for ${R})`;throw new Kc(`option requires argument: ${P}${W}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[R]=N(e[f+1],R,a[R]),++f}else a[R]=N(I,R,a[R])}}else a._.push(h)}return a}tb.flag=t=>(t[ZY]=!0,t);tb.COUNT=tb.flag((t,e,r)=>(r||0)+1);tb.ArgError=Kc;Yxe.exports=tb});var tke=L((Omr,eke)=>{var tV;eke.exports=()=>(typeof tV>\"u\"&&(tV=ye(\"zlib\").brotliDecompressSync(Buffer.from(\"W6UZIYpg4+ABk/1MjAzU09E6CFgW2IZIP1r7kmgpa8Jywxvv1VQ2S2cjN4L44wxwJ0ckpPdNVX/XMr0ojMLnAkSreT6m18l0jOSXUkD5tVfz3z9fL06DyVpOqXJ6cUr1aCJOrHzECBgW586Z4H+qc2eZsNJkc6iYLopIG7Zs8pHnSjV8WpoIPJ9uVdXkgvjWDI9/YtVVpoE1yVoFMUm3aW3xio3wUyXg+Zofuqpu6vV6LlBKtKqVXecY9Nk9itr5C62+ps1FnN+/b1puJAHimiBVpqMkXuMYy4WKoumq++oetp1Bw4gGB+PI9eRY86rq/Y/uRi8PQFJH5JAzfn0k5yLvsniCeMMIQ9kkVBDL6pe9AkCEExcC0r2+beWIVCL8JvUo7lfItpmLR0IMKHtrZ5A5NkqwzcwSOO2P6ffsdfzV9oYmAcIUECF6+zLNf1nQphkd4KFlWZbNXeD/+7H0/w9ttFnx/Z+GWRhWcUCT2z9HRyjFu1AWWw38yUi0WSrmP2XxOepke9ZIaQ2nZYtXw6lcXC0Y9uVlW0bej848wojBuZV/Riwq+r70JT6/7CiOyME5+5uClWXyT0ceBpJ8JkP/dbp8SCUCHnuXxBd3urs0kenohxq1csBG52upT7XnAjYYVVEoe2QpAJgxkOmsJXeRKusQ8hP5C9CNrN3fNQCrMCdM+JcBfgbkGEsLapMGYP99RuA05PNbAk29VLa3CR0Wj7M6QxZMNdjZ2Sc1KYo7hZXSn90MJxbgGtMHNyDzzynoCxIXW3TxZ1Pwx4VrdhRL48Qlmm9ZkbyDMGo8YOJFmymPNO5AHyVUFM3uN0L48JGoK4BbAEFbZCHShYYKhUBl10ntO8JKaD7hT8lurrhkCvuPUcKgP+qETi6+nwonTVqPDlBjAdibBWC+6E3uT/lanBfquMf8EvWtcw4AGIjw4FH3j9ViVeVWSoSaX+Iv4RxobRXxhcZE4ggNbHjmJr2KENniVUQfF04aEZTw15MpoOwyL7GvEbgKNG2ADdhqzKgAxSZVr47ndpeYSJfvTnXONQ+nnGHqTmzhSMFW3IQ77479pQn2VmTXPET/q8c4J0/+PZCP0aWL/48W7dCKiEFRPtALh0B7YtGiMZHNnczxaT3szj5alWrFvPgrDMrdUcTyaQ5PTep88/C7p9y+6Pb9ngssgI5jd1C/cr3ErD9GEadZ0j+pVovDuksCqskeGUZwFErfqZ29wY12ZR5CeW0HJxYr+CAstCG/NQYDNoBeibtqOnMOVT2A/buK1b9eVN+Q2iNL6pH3t3KKd2jWUTlThmpErmBLMaKCazH64isjJHdKaH6/Ag2eQP0+WW32uef3LjmJlI6WZ6YV3S8XsSznNCzv5ABVbUTpbvVbyplvSoWnatOKHcpNb2n7WPkTqi05xdEteIxesLAu5qXVoHU1LMCFdW0Di1AueBY6RmEVJc07eyypdMYGljyA8KbciskpLeEpRwG8Mqh+Mwn0dw2rKO96J2DZxWbLfxdLRtv2NfI76fC/IF9t/J57bvUio8PsOUWGNOALM2BglbpoO9FOIuUjmyq4DnUzndKET3IGIHlKCFAncslm9u+9E65bd/co5XahR/pFPob1Xx+DM0V03gi3lBdTCThraWyx3HIkccFIPScE/aqXYgrFHY6EHpECsj1n2lmXU9Qmkg44ad74h1jzo+sOjp3g8Lutw3+WKgfXXk3JK6otEqFuQGQjZ7aXkhA7AeWCmOJLBF0qnP0Cr7r1RvlegIBI9+MZ7HCePoIGtQjAGWpRYVMIdb4xfhGL5zWTSYpHoq3M0hylN69bFJPS0p1S/ZcgF6XsCYqJX0CxHQiu6l4Zvg3cWnD3NYxpaBkBAOTRKp8sT6e1eNTwWLVdfAOyCI74YSQgZhlLo72OedA42eHpeTgLNkM7ZIoUjwNBHz33SfTNxJBFGVdr8MBhNGzKfBHA4MV1VvhIs78XVDT8feeBr+G85QZHSy8IDerEBfQRf5uUzlqgy/6kjE4qXz04lAd4eLuyxYMtjvDbo3NOCXFz3VFpzdpiaWqhEXxtm7n5A0nj69482O5N1sv2aLrV2m+qx60ikJNFtvMLUSV4RJD5Ayl7Cw+qf81LV1TXPPKXTb84JSCLYBg8hHB/BDXV2FdEWTW2TLpFdG8oLaIGKnpiihXmvLSdoOQCkCnPQICeKjZFwUXr+8TqoeG4PH/kOXREblZtSwuWVENO9V/MjAh7aROpA9lVayhkCBno9xHBU3zTLY6EOPuPmAoFbinHP+n9skGHwNcMSKcugeLVVZd0fTmR+QrUU7bDEZzdKgaH0GLKHWXeA+0kwVWHeyBQu+wDo/YJFycstwqYnLl4b3nsw2Ms5lP3pmRdiThnwMAEXSyfows6b3Sw8x6L14BUugPY0gRV+HfklpekWTVXSo9SYuVIXwDRy57SKSDDWHP7K5W4W4VYt8o+2DsSxvhYm06yXTmI4O1f3e6xYCMfP40CXeberfe25pj0mXh2A44jdFlNomIdY5GShDnlmedr6NX0rMQ3YMDml0dh6pew+ipCD3Cc5N/nKKZ0QevD2JxRQY6H05yfFyiWeIDgh1vJ0MK8+M0ZQ+SjoO9PENOobhohNHq14jKtPW4XZD8BzYLNRid3S/TZ8OPYXDkKxDtMZEzyD0XX2FAqa/ManeF18yKBQfulvw8IDvW0Lpi803w+50XJzI4n1fZQO/JWWT7Fh9Uulo6OsybmIp1Kn8JTFIlBAHscrlUpTPGiykfZ2nXDV0yQNTdQalq8Ws6itSufZUN2LJm+3mFK/QX367CKvpW+vBv6PKPLQrTXI8DUDowWX4OvRO6LjST8uJQjXPeRaFDQHlVtt5Y3Kb6Orq6XtX47vhDviVn/e2znPQCB1j3R9dmN5b+ggFyaBf5FLkScllfQaKY2Qp7B2YrYeyfiSw9jpac6YRNUXFGOArUXXBkbgO/h5CqQmGc/pUSI9GFBeaHpFdY0pQuvP7hz2/GUze1zPOczsfUWkYy8KQpkKZCrmLIrKwt7sFpCEnlnlXsfXOEHxXy4CF1r7yzrhEY7pwMXydjjy/B7Dwm2em0w19Qxz1Dq17xxdm9HmxY8JWoB8xIkvfB8OzSFZeyLXWuFmtrVLFI27i+3P1FXxb+aAVG5Y1wPjeVXpeNscUeLTswWiTBGkDKHjVb3CZnnd7ZXmmcpv2F6oU5ubp/E89lxFMSVdlY7oDfdh5nw5YU8bxNx5pxruawC6kpFL2IuoPNn6b9hDvZeOAFE7iHK36x4/IICFLJqtLOaizkdOdkvpsrMQjKTj9oyjEQDWfcvDySz1/GtxjocHvcHt8z91+lSz9c0rcqwrggPg9i3lQfom+R9M4KQ92kfA3aE01abmz7omXFVmyxoOScs+0v+yijyYbG9JNRfHmbISKZdbiiOJFWBdPxpmZLSWPJHs40hnnZvdvz8M7TMTmJwwPtBzGqlFTsd287XCRAdhAElnpq84fAlm7Hm1E/yDWWOebgtzUrfhmtcO00pQZ8y7AAXd9xRH//93XV1PSK1ROZ8yYIk9KDUUdM712jRwEAr69twDrQ1Dj0CsZ/RJ0xXcfzEXNHCpZk4cde9esMZCEMSNffIp7NDlNpNoW3AuJbLuy2/cvkpmGd9Ypjy6Td3cOwtbMOSspJ63wQB/5iD2/vfUDvScoOppb0MtQ8S3MV3oNkaYApPuXlZ8AnH9O83gn7ESon52e54H3Zl33X/Gs6N8T4OX4OYkQ+CdPUrkDTZRnOR0fQzhRRD//2eC9pDYfnExgJqZRH2mQqQSJf9uFRZgvP7iRpAQkflrgJPFCochjCX+Imiw0SQHld/r5x9jEVBKsoFaf9F1m1ZisJbPu22Ll82oVDdoaGbQlQ3i+YlJLDdhiQY9rH/Rm7Yum6sdrU2p5+4BC73hAREluIdC4Cu6agHfHtvFmc+luP5Z1gS11RK/C++oGlaTW2E9aQ/EjOJcriKqUu3SNgh4rFE+p5nkTay4ft8L2ufg79RE6pnR8vG97ugvsfvqyuXS2O0s2a+P60zTX7gRiPHc66f8b4eFFlzbb75tZCHUb4rk/5nzncnH3q/vaDGlmk45FQ5G1oTTl7lT731UfnIm3/8FyTQJLQHAMDExTZsdK6iEwTgA3w+hKG09lk663KJdO+zL05Zt6x/FCSrSBMEIVn7KVC11JN0CbaOpwia62CMGfUn9XZMaDxoxNZp4hwhrPshB8CoORtuaviTR+KGNTuwONrGoD3890H9fyNs28IEEblKfzuGE15ltrJ53og3r8DN3qEPjJW/KpT7x/1R0zecs1DcvuoaVgs3bMBSN+icqPIuSK+DzsG8JgXhe8+22hslrYtlT62J3078WY2QuALJc5EG1WGNWWWfV2toWai7yMzJK1HlGhGUKJuEC6cxVn1JtmPj0z3dEckFw0j63hzK56qFOzUkAYYsp+7c1lShbed/C1W4NhUY30IRpxg4QhYg7vY/T2yV8gH2HyhbJ3iKoHfrUk+A7PATOZO34u/Lxryd/iTNcr2pq07VlDjx+p7Fo3uk9Z2rXXErDn8vyU8av1m+tKqz2pDomXr2QN4zCdYcs1wcW46diI0dt/JQchoC/YuhrdFKeALwuvbqW/LhHLkCSPg8wjfida52Agtz69RQW8ls2Q8C+WVVNHzk1dcYGRmyH0pYf9NV582YaddzY9i4QPGbq6N1qSNE4Z2ZcwmFY0NFF6qawlljxTyWd77F2wtatBPfiJ6bdLiktt3DvvPER8zjGPLKnzQVNhm2ievd2SD6TAh90s4dS6Tfjhfyz92Wmt1OnegnP6T+MO5et65WRvlE33XUoDwmG92/WOvPl3NxaCusWtdS+m4TtjwzVmB7D7MkC8vSYrnt5MlEQSRjM4AdEgFIEym/QtkFm+z1qNPsfdqVESiPp80JNpRN0FZ7E6Wafuk8bhqjkHkLezisqjIuf0dfBW+VVqEpFKzZum25QZpv9m4aH9qFPPPD/V98zyc7qu8mul8TmLT+CAl+lfH2kVrcF3f2JIOM2T0GcSt70MKx+BwlUp6apywszaEGQEyx5wCJ8ORBg0Bhzn2qUyfoHKZtRUSbEj+tydFHL9A7jakwL2/bE1+7APM0x2rwoaa9WDT38SSXS9+Bd8kA3SYGHRzhKrnEtXCdGH2mdbdgJtDeG5Uv1xGVp5iWX4V5LK7JAkoJX7F3rrtumMb/sn7WLhcnEUIcts2r/6EU8vrk4XoeMcMp2dpoerjYcG5+ZU1hBAZdLRzUhSoVwLE+QdhYuUMayni3lOi3TevwS1j1lePA+c4QT1Rz9M7ULh7vRXnkt45kmsC4vb91dtXZ7kdskrNdqSw7Kv0J8yOu0Y9LmDXTx9H2zbUaPRJBygqHYREJnD2PnCWKpNc6CfnornzuNT5OjraLYsZRsxYAJXKF4M/m6faGtO4z16tAGYHqVzVTXrtsVvOB195cl4uVYgyfk+O2MN/ucxyYQ97gyDTjbln6ztfSdH+2l8PFgs+dTHqOtGCGyB6edP7c6K8z0C44rIn1p+GiId3erhZXEp3mhfSWESNcXnXjQbl0Ib70KNZ4fIOXfdJsucKEA++qPtFz7GL8ac1bw7zlxqRVWXtcQ8hlAlHqxyJX0HYpkpBAy2ja59L+Z4C7AO1UmX3HoUz/0WdaCGW2e+Xro+8bhJRGTX8b0jDDJn4/Re26dhtpg+n+mQIllZgcPNdlVUli0ig9gAkdqxZEvqKHpq/QkW0I93TZrK7ZO6uQsfvUSbVNuV5O5kesddcpIgCGhOXPTneUE1Qj0MMdNEo4OO7HyryfgKt4ZZY9IXhfPG9XmJ23KDT6FVLLba6ekfvvsH3m/QRyXeykKrjKPrptcLSi7IoRkZ3uq3+YZ3UIYYxMSbxUn/4wMy7Pgv0wvnUhmVfoyv6xduCgjM73Olm+Pyifl286dppjVm7qGCxt684E2ud02Y8AO/6Q4C7yvS+Et/e+jnK1fJ+BmgyE9zMczJFjrVSDQWTYwI8F168HA02f/J6vJtoIzrbiJpF5ee5GuKtfsqEWKZNlkmqI9ZimyrKkQd7/1LENTKFUjtDxVS9dKGrlQheDKFsoTdMpCFOEKbBoLMjwXJhM2hxBXNmSQmyw5nD+Jc6KakwK4Fb2k6/N3L19edgo9Xqd1yHtBbO0+rXKwQGGbC9rRKQoaEiJPRECVHfr/eS09koblSdlYzDbey7BQBYxeSJKvQnEEvOIiJ/ejeB8axvFYpVZ8IkDXmkhAVe/92LW1nWJPnxkvM2YZRRxj7lAGlKk5GmHPLxSt8mYIMT1klTDEYvEljsAQ2aJ8p8rc1nRVajbdlc1xros8MNqEwQ5pyAs0yQq9X+MSO5tRAJvhScb1TzXjEzjNTBCFD4s3NBy6Ppbxh4mKLOCLA8+2MEgU+8WZAePYeD1CI8jnRBOhNPfmPdc8OESs95KERVZgya+sfQiRWSzurLWQIdUrM+wTTt7J27rOrjx61BjI4+STrMWe6gAvlqBSoDoEZelAOK1ToQwisWs5xQjLCFiGk7M5CqGAHW+zLV8v4Xp9HGVnWIY4r06clBG5wPQrujFuZqf1vLTqn5alHN5O93ayC4DxBt1I8oIIwiPR3t6PTrxFMvWo0IGJMj5nbY0p8ST8FtfnSVLVw4mAUkBzii1OuIYyuPZnl6fTjzF8o6okRkZkYTcc35xNhk+OXi7Xrt91fUXwOIbsJxd3isDK6kfbJgTEQWM1lpl0GDAgUtrJavL63W0HwsoXlw8hjTRRjwNMpf1ZBUz2WbXxBKQdFrIyXwQlGnlqyxHAYLh4utR3kVFi5I8EAE8JCcN6Lr117o6vE149RVGfYXtuXo927LE4LpYS8S9ZniNjeXTbdW14x2nyVhYf3Fwka5pcxWSA2Dd0n9Hsp6OwE/r+2l9P7EjnahuR5CyGXeFwVVkPt1h4v145ek45em45kl2Fp01Z9XZ5CnL/iKLNYBkTkREtXoAsx8daYDpLf3tDYKCd0mIZk6kkh1scxpuIrQdu16I3PcuDTsacKd0hv8WNRupyFAuUeqdF14Km6vTyaiOvpxilvO+EG3dYanvnhELiIQ9J+yz9c+dkE7x0s01eQGku0rMsRXJieHuVPw/6sENbv7jayGu7haJO1P/sP3ZdthA0K2eTFz8ctoZ/REDWF+2r4IQ974eAOnlgWtvD+uCc3jNukDT3cB5/wbQ3c2vd8r7MJgS1255x9ugQqCYCpAYJQOBXzoTIES7ZeOOgbmlA6G2LzbsOFa6Is1haHUXx2L8D5qSbILbku0mX+XFsmNje8uXo8Xe0cf5UZzsPz/OnE4NzOjo/wcMieftyhTdn2rGTu7Dz9q5cd8xTwpvmH2mlG3HG9tNeNid9KdZ226aC6nbd1Fz4aQ9PK+E8iX+86O9UeHyMrEvj56edgCcUK05xgtaNAWbHnUmHufySHtcXFTI3Jh2AZbZSv/njqdodX4ydaBJvxFq9fNB7/DKDwEqUQpaDJWS6LDCc0RVRDEcTtW5qyaI872Mmz7WTYnO3JkzXByGfkirtu8OeUeK1FOPhCFHNqJht5qhtgfXEnZ3fKiFMSmLnb3rnpArmHbO+tdB6V9mPiUrwlgJjo4j8YKd1kVR9iRa5hGHQrRHciU05SBeiGemYHzfdNl7tR54oyiEPKWgMWUbCMv+xd1CuAsEmj7eT7ymH7vlAaLf+jdfL0bCPiPtdTRBVq+ZH8Lh7kLauHdXHqKH7xWIDTeFDZNOERrErrMBhyc7hUb/cz7ncz5zbpx7U56S4gNTO8FzOwyL/yNo9zmiaKW7ysuEVMLd8IpEzIwjG+cFTGBpH7yE5QaJOJAonu/i6KvuF6WxPaMPRJWyVOxXPCKrz5n1xHyJ6HPq/1PSN4PfOg0QTWvaMoSBddzEdZ9YeY0E9Ia5/Y7KPpe3KmOZsgKqY1gi8ft0FxJVHbf5GSRhe5OrwrVFiAV9ujD/VL5GF1audjTtDQzHq1QAWJDUdfJiVK7viCHvw6qOXl3gOUEDafq+YKEYVAp5IGVNhpxYMa8/noFEiS/ZV1n50Q+EinSKioTNRbrB5Epqp+hG1qus7bd5RclQCHFoEUFFGrYYbkS6oEvrZE4fCQZZ0usPbou7LWCtVqn6YVHEgVgHj4Pr/7VOrv8jP/1X/XR0fvpv+Wl9P+W1fvvLMdAgcn2BVdckBtVG0+9rnHIh0SWLupay4SQfJ/Tayv1SAh1LQCYTtQY0qPebfinglAwdvWy02tWWo0p80WtZ9z9AJcPeoiedcTG40cuxrslNY4ye227N7n6BL2RTD7CRXawWtkz63drj1h8wXX7p1yZXBwr3hnRJ3mPivgWFm45Na1y1MaVeOTvw1XOKNH3WVTvT0+y61VXuJ5O0P8czGYu/o2pfD75X00PM/GmIu/DU/FeSnPFK/Fu/Wj/3X4FOfI17dfSXdkDev4a4Tu0xYumnyyh9z5FuyYBU1ljaSjnVe6XETGXF1d0tpV96/3U/rein9f1U7/PSL7bxmKVJaL3an8ZykpVTvV/N/E1og+o2DOyMpt5xiLy0BNKWzps5z3nWnCtneTep/pwlW7ST8DTNBvquWFhoOnnWd83qFjdo5RbQNkf1d38cVD/Q6KVbpBnVhkK9k1K8GMi5fKPvXbP9NTBf5yFaZyf78iDLd/6ZzFdx+Bs2Mt6LwnD2wp+/f6bZ/+oPDDocD6iPY9fV1Z0xxxvoMe7CYO6oZFzmh8U6fLb37f732Omw2xnhnZpRw5R8W2Q0VI/JMRuoa3YzXU9E8b7aheT7qwugUN4O2hWj63M2gUuqj3FMTSvl9lONo10+qPvpp/a31Yg/bsPZYc/4APr0Y5MqeOCtxQBD1ij7UrbLezFJM4jKhC7tp+lxk5eRvr9ms6QWKkQvl0m9DygfrYaYrEnIdjt9QWlp+hns7xNKY02ON9s3NB8fLLHRZ+QWqaV4dcbxOq+mLwlnf/bqPW5BACZ5rKn4O6cwh8X7Ewu1WHeXjqF3/4eGYZz9bkw02plb6HJclKMceJqEEg6N/PH/1ep8pt0nIyBoUGLT06fMi3Txms6YL+t5g9vM7h+SyF8gE/phM8/w4TNjihEqzE97IwIG2KfUDUYunEI/X+EFDiZbw6sAanAK0Iw+7LoTl1jtQQ9OAZT6AAox1t3Cas/fknG3lqOdY6R+3MWAP+0nY3qO6WEWlve8K0rcbqEwH2+vo2usOsMMmZ7oYewj4V1vjS3irRb92D6fbQLmfGoOPl4PKwMsxrsXBbMcBQO/us26LEOVs4O3I4TeAajKcQTYof7iRw+x3A7EgzNeuWGNA6HeCzo72rgbd7XRPREhBvB3pnOaIezqZfaZq4KJBxeggMsa6Pa997HKxIARRuIohl2VAhWOj9oT9Z3qPHpeGZ2R/m0J95eyanMEwkHydtELri8NFc8ubDodB/G4a6/THdnzgGdIA3xDe0JAXy8ruzegDHbG9UPCfgK5Fw7F3fA4QgrSyjTjEY5V3eOhOwnJpbv8GmO2pf3b0zH0/eEnnEkmMPXhnRAEJLOplXagMapY6xbpTwk/K4a+K3y1E2xN3ehVv7sK98mS7y6DlRuC44nR6Lfvp6Hahz6144S4t0tnvM6OOORQMtDluL9gODtVw19nYoZXKjEF3aFmurlKRBUdovpFVhtDvE12RQozC9EgN2U+SgrO9El1nCscKUc99dusxKksDoZ2GD7rAZnv0cQPSfH+NhaN/Tquz7HAw4Ldcb1AlPRIY0OuKHQOMJSNkxHsNLGqvednQG25SiYrkcshWj7KyE+xn8ymxvg0njFBTJEu92+jGtCvDvZyEJ4K8qOvkYyrCIjuGVNKXIIgX2fEN5XXRDsHKIzZ14gmemetsgcfQv7hE5xMIENILHwE4Yk/linQwNfR0M0uzLlAPbaCTl8C8Usl/uK9q5ear3x8lOHstw1O4pARhGj+QHA/l+kLRIQ5nO69Rl99KmCSLx/jfBJZgMzIcS3aXdIbleO0Lo0jGB1VHEIu417ZY3a3iaPZM0WeFXp06rXfStbNPfqGPzfG8pmTyabE3P1GQldDRcY634Fw6kfk8hFRluzaGMc20qyHgR3SXQCkw2LXVSLKdShL+KpX+gcIrsKwut3x7xEbfBDpyR6xsZ0gGTrJEiysVDlACtq1LhQv3BCGs54JWFNMS31GC7AvHZK3ldQ6c9GS8xFPj2osLu01Xe4cJmqYD+GH6K/wf3HfOI/H2ScQkLJcj/UcE4DfhNLo3USze73pfgdXVOVTpMGdFw5porBLaJdP+fAJc36uz6Fc/2pvgHemcqAZKyWB6neSmO/2sL2nPriHRvX7QLSg3BlAB9QqkmG/dC65MxENT03NBrDduzC847n7EzqKC9hvAaJW3n3k8ux5WVXOf8f4snjVas9ywkgIk0OxVyWXNZ+crgjJdeDqRFDX0+3B8F+/0X+p/0g/81Xjf5+80PsT4nz5HGPWGKSz5+VvI9MtzROgX530w+EU3XOIQSNFZTTvbcaudqPtVEM+QisLn5PoVBflKLwzhHqf3RYE756xTH0OCuBAG9nChUJdpPyIXuzdXDID425iQ7XAuWhWEHWFa+RMT7G5AO5e8LXmhHJ99c6So2rQ9Keso7HnenXNXrB2ZeQl6O6ujNzW+ZIBexIECcS2IFbmTh/IaFI5PMTtRPvDWKrQQflZugoZ891uGCZCw4GqD78x8PGgUMUDAO5fW6CCq9oWvIULgLskhYIS2KIOjvdlNaZfdjk8+HEOcn+ScwaClL2W7MH3XrynqeITnHQs20MrMsMDpd2w89qOFMqJ1GkfpogSY6h0s9X6Yp6mXNgTT7m3qmzO3cU17aWdMKKoLORD7lzpsQ7W82YgYOKqCojZp2VyXvGwuf5glkVEgP5DCEm/X9bfqvZE+4EAVqM7EZ0+GWerH6xKrj83UF633a0r7Cc71+we5/C3WXWap6TAh44oJo6IwwNllQpE0Jw+i6MMo0ZGoLeCMdV0KVqiXtvWi/NiXYYHFrji70MtxE98OQ1PlSsYzQ9JDezqVzVv1xRvEzjT3d7BmDUqWfSJcAQtSHvjzDZbEtwwbN+B7cLXrUqVbKSJ+QZ5HUlPEb8MW4NbrAOa0IFCz1/JX7fBrO3G3coKnyaM4Zi33Ajod/3MbzRr95wXXD6chKuO6o9DvDliCxBQ4Bigb39pBPolAI9Hf+gXRp5RiFJmQMvHSCJl0PphKkEaNT/JY71J+jCUPgFaT+d4ki6fLU90HKcMT9qU2BJT0qL5bbxBsxqOo07UosDVD1MNNlGZoaxdikK/WEou8M4g5QkV8G6ebECHn/3E/eplqode3v3Traj38u5Pjevo6NOOu05mub1Mb8ln7+5vlXh35+B2+lCAOI2qvNiM/M4kYOcCDU09Hgdr1XVWENovQ9QqxxhOJHlRdt9fzlbTaQnj94KN4mQrRCacTkHhyzOFEGneCoWqnMUrRcig43cWmcpf/bJZ6FU4Vdf5v1LhmmDcvS5t6EQSK5czucZi58ssc5yu9avhy3fQAHpEHX/TTImfYT+TzBBEBliBD8fVMflfpbHECClIqoUzBvKstWAbizQZHrCa/kUIkmdl9jIAlmuODLpOXhRcYOmlbWnXHzpUPqzmYDprNnNcmogZc1k5zv6aB5E9vyXhYXuglGHNaPgp0mREdRTwaQfEshnD5ifv8bTNNgm7QmZwb9/7e1yNBMakZgUj+jEyLR2nvE3zT44kP7qyCadwdcsHUmr5/Wt5NaXehuVc8MUSI680q34Xar7+t3a42KjLDMDV5fvrBYERy1PvgMhaFPs7PtQCqBPoSAovKINMegA5s7uJktm4jDQQCg6mT9YUfezqwcHvYxHOuZDS0u6gtDDWO/M+XMBucH4K+Dhpx+pvqHiTL6tCtmgMS3LT7WrnhRCF8iPBLua+p35oPwrHAKEzKgao2K7/f6F9y4e6yQ14n65eB6fAzucKSGVi8MkoqTFoyFgjHzUvkF9ezhG18FmUka89ac5asxqd0SiEYFElfPcdS8Ma6u/9SGYA/2PFFpAjzFer6yIlAJGOvkzyndRDsYeP1aDjlDJ/cJA0qrv6WoW7bbPuPHN74t5peqb9On/ObVKzrsf/OicdPAFxqnUbsx1x+jrmWazQlyTLnSpMmcYlXoTwlIo7YHxoTsKVCNzgechUZj/gQrVlvUeJMlOJCHvePOj1TowkfX2SwogbAb0EChhg/OM5A7MeXBW4Pk0lHFiHtTIhFKGUYVPYAjloU0UJ+5JUUDghP2nIxFxlUwmeQvCTblrkuq4TM0LUT8gqwsh3g0frjZonPUvHkujccCuPKdixha6tXTF01LeqJFO7jsJTpSoC6wt6U9TAD2FKQ8sXingHQ8WPm+rJR2CBYne4T3tKj4iLI+IbNpJ7fzhTnVKT5aLJpTuZp1TYOpynZ/+WVO0kaX/ffAZ0nluTgMHooBl81qzG79CwfJraKZrkRN80pcCqRW3MDma8EM/WhZ+EiKc6yeWarNIOLxyJ+RIfKxtfSu70hEvTCbFw6OPVtuIKcxExMbhRS4nDOS/4vKYTJ34zAYgLwZ1RfhYHUuWIOJ4V334mvaZT2LPn+mIQiqNbUgUdl/hrxd+Dvss7mC3tl4X54BgFCpW339mluHIRCooiDfLREUdCsKoebHHdrFTp3TGwoQEBkKwj/WftXbtq+Lh2QxqRVglQ4Iv0Lcu81o5orvfagg+gKT3xwKFRT8c47a+NnA3AmOCI2Mro8BaFd3DnnER9CmjyME2c8YWQsfPurRCs3kqvT/2mNBV3PsVTPOVTPLWXeAdin4WfN9SwaOzsv4/l6HbFjg+S0A1cYOXcxQGDslElmwrWjYKOc5WcJZKFgpTV3l/XDaBxjK5oU4w/jyTeVue/x+jZjvo7RDleE6OEJnBSmA9nbpA8R0C7/xrK2oYsKQ7kE2xz/gm2Oa8Ov8OtaxdetFlI+HY3TnkAMDyABv4tKILsPVIRBbV8W07SsjQzu9OUNbD3d9CKoIsj3sECxjiSg8E+G9MJpj7avosMxyL+XVp/CUVzpw8e/UqoZwDyxomU6YUdZQsAsKFsH6H9HP9OQMZFLaUWZeSJ3DaM9d8fzjXu9cXJ/zecdTz0zXFj3Cw2r29c3yw3b2zc2Pg8F8BmvWnXstE2rpu1Ged2mc1heUjs3BnavPbYNegI3tUaqO/cCmVnV4nDO8pI37QYrWr0wgaG2w8SF4OaG5TUlPJygljtz2oljiVBmH4qgpMgdiWOKzZOt8dz6DfOdtl2fDYWE4DZy8PM7K4+vQ0Gs8WelpyA3j0NufUSoc6v7CnOSEYmoyJs+Px3VkyQUNWXzvjNH7puqQ4B0kgVDEGTh9+A2Fi3vnQaLikZJHPwufa4qckOzMpdpMvDj4znIYg690+VXLDlkvWxQkFl+gEaJu39ImtHsZaplO1pgj0ce18bjw3pZPFg1HERTcPYkCuBm3UzE+ha1BwMvu/nf5emlFdFZ5hqgmagrLsSgpT/lOa4JgXhYMj4ktPSCWs43Y0lbUnRANE9N7uQaY8SX8BbQw+ORbHrq7yToDpKJUTIOXXi/ErAKpnASipjOrBPH+Ju1Stdt6P3G+6da3mFlTJaHevm1Zik8cLx6VhmiWw37ctuWbRQ733QUsCT16ErFeHj2rQEKhzrrxrNLTrviiE6rfW7BnWmUmxFzQBouob44QQkGAqoYBERcsaiXNxwnaKkfCXrDQFFlR7gbFzppG6ti6Y2j8cLAqQ9AMwifHJGKDm+CBMWsDsA2RUi4xje5TVzEOwWgMwwRk5i/KxB4pqQb428CzmVcstzzC2vBJG/sk9L6YwGz4cfApSrb11ZDfJfk7UFINKtH3VyZR325ybLzzMh6U3wyXdPQwWvFWEKZnP6lGL/DndCMUqd8Ms5Xg/YfA7Bu64xopUsnIfUYqQGvkcB4+ecgdpbx1z7jDmuGBi7v26NnryKealauNhLz6OOWo7QhR031ctugKUJsD3q4gWCcMqoJCuVo7aX9sdvtXzLuMOYeEiWAfeMbwKAm+zIdFFOid6LM78vqL+uOsaX/k7lPv+87kgsLKEsmiyD+fZJzXbzOg160SbIOZO7U0IXlhF3/w0fcvb/iI1N8hQnsm3WYLbxYkNNx7lKE8L1esp1aHG/dPYHNcJvOTwCyr+2tHsI0sMpGUG9cQpNa/PxWWRfkH25TO2QOpo1RJkeXZlDfsHjTz3iNTVRckn1m6lqfJCp/DPVWwVpSP5i30sjd2HOqcgWs/xnexv7cjg1pEvthiVgx+DSvyzGmLOLIKxxrVLpD9B9bbVHVm7FCzNd4kzoFSzzmd6AhaxVrUOOGLCfnGPBYg2+NFvSFXtHvrKtbKWlgDGv+WF268kEhVyR0uEWDxE6S3RccwB1gXSAUZZVJVeYSeW71rsxNFQCYC5bWvvbLPxMcjojrqKp4ea61C08MVdzBKQ5lmKZl00oyT6c+CkfDEMeLXVtMnLDX0XLUkYafg9MieUlisGzr8RiYWT57jU91C1N5EqaO0csg19UT8dmfxl5Aaw4w8awCTRyd9CUiQgdnFRDv4salU46N57KS+qDcgYKrKIYy5u1Cn4ZAyhT61qx7UFspBn1p0lSgc4GVejQaINcG7e2oNUAwxkk5MoynCzyh1IQutomlhE1tUd+ev0kEI6fq3IWlWURXmQp69fhdsDSaKrUZ1hSkiEWMeBP+g8fOz5cQrPZBloguMiHmnkwmb/zBx89Pbo/vO3kmyPm9QHob7KqAFqdQDsP/mFcsOuQHiUHxKqw0CyCtA8Wzsx0qfAiIY8VCGGhBLy/kWbiYpp99Q1Tb3ICfzpECoXULIC+AKUnNoXO7ahPlreKtSN3Ge0u7tk1KQs8wSVFl3UjpZtPE6/o1OYbt2to9FEOi+pDm73pvKXIUf76PVl0FEVUm3jcXYh8sS5/4i2rVwg/cA3QtOkLbo7Y8h21rUGUpjYvonu3O9cE/SUfwR1dY5HWRZEWhatgomKKWJU3Ei+JcmguLEdqSsDXVW+oRrVquKpNKELtkn1SHedU1GTe47JFebUcCFGidam1HuEDU7HUtcmi4rY4oiiTW6z+MFyzb4snsk1L5e6TPoFCTq4K94h1a/OyCBkV9WB3duHw0MC7VcJE+dZCwsUi0Ts4nTCU2TvX66LFGhvdBmiwJ8WTz/bW7h6iYETWpSimiYSab43GvftRmE0fGewbA/hrrpp2cK499PAnm+IdFvVG+BhNjRSUW1Uw1zIE2MFZbe1EHLb5F3HPG43wdfH2emjerUKrxAGu4N9ULTKthADHALKksRwTufCY9sCwX8CNYLVGpEjaFCtUBHLGVM7JAoWLsJmzJyAA5ISNL7+qrQF6h+3aQJNT7quhymEGrTUzKLC/0bCiYwlS0iqNJVYRonkKhAwQY2uhnIzbOyYfZGrc6Iu0MKXhF921w1R31Yp5gYVb0E3kAhT4BtgON3HLYhNATZq5l7/Er0Fk5Bcc22LagPDJqhtfGp+VLWGQ3HFIsb4tK+JGq8zlRYphEzqN3XjHK7UpwWb1/hkFRM1JQxQvMkHJVEeZHzKz2U0CtyXW5XzX1rkc+sPx5hBOnMin0gyZLRRZWNSlHN5LhBUS1bHgzfjhWn/Ydp2hOyWQ6ggdsao4wCFSTU/vsQ6Y5JlBSgoZbVonVg/RIAPosE2RGDhNZ1nYA/5jimN6mFKeS+HmL2c2Zb7YCV77xvkY3vWKXYPjMHMNS9PoiHhFUD0PgSgzVq3A9o+N3PWf3mQMwfHOWivzAT4JL2oVnqEvpq0AhO9O7XaoPlqbknSp0iIilrrdzDL3XQqvhakWDZif3wX4TKz/el/LeFuGuozpTGN5SKrw3/BWbmBGTZafEyRItMm+882t6xCCpkPQcgGRHfrhsmIB7jbvoOCpH8eMcRwkLnb7ouDYNqDSyHug3RdqKtBYdxD4xItP/khh/psvnZSlGFSeuvh9lfN0qcgzlk/JLV9LxWV41smMF3JMGS12du5VUPFqQVc8OgvotlqBKGIEDMSiVxMUBeYtfh3TXZDaZRQLZHxogWgTAmPLUsoglq0JeAe59tVb+NAudFS/5lfnTAf94/n5KsbFz04KulZbm9wE0sP5ONBXDujpi2VTQLnVKTJNoH1WuCD8WIdbhVbuxQULuItmr6nKItAd8tqoFQmASabahH2QEpJZhYvYJ/gBBAxF61lfQzD5mmLPvPfRlJtegWjRwY1BTUYrfhQt0j7OZN+6D+X0+657Z+9nsV0nK/2bPvI7cf8+H7AvG5tQVKAwxWvxgb3ufgAceVi4eot0VvXZ1GeVn0WushXLEQkQI2MDy9wX85H7Z/qxDq9qm2qKt6VaPbacIhH7zoi/yoLxLAE3R/9itUQJHgA=\",\"base64\")).toString()),tV)});var oke=L((aV,lV)=>{(function(t){aV&&typeof aV==\"object\"&&typeof lV<\"u\"?lV.exports=t():typeof define==\"function\"&&define.amd?define([],t):typeof window<\"u\"?window.isWindows=t():typeof global<\"u\"?global.isWindows=t():typeof self<\"u\"?self.isWindows=t():this.isWindows=t()})(function(){\"use strict\";return function(){return process&&(process.platform===\"win32\"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var uke=L((Fyr,cke)=>{\"use strict\";cV.ifExists=lRt;var xw=ye(\"util\"),Jc=ye(\"path\"),ake=oke(),sRt=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,oRt={createPwshFile:!0,createCmdFile:ake(),fs:ye(\"fs\")},aRt=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function lke(t){let e={...oRt,...t},r=e.fs;return e.fs_={chmod:r.chmod?xw.promisify(r.chmod):async()=>{},mkdir:xw.promisify(r.mkdir),readFile:xw.promisify(r.readFile),stat:xw.promisify(r.stat),unlink:xw.promisify(r.unlink),writeFile:xw.promisify(r.writeFile)},e}async function cV(t,e,r){let s=lke(r);await s.fs_.stat(t),await uRt(t,e,s)}function lRt(t,e,r){return cV(t,e,r).catch(()=>{})}function cRt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function uRt(t,e,r){let s=await gRt(t,r);return await fRt(e,r),ARt(t,e,s,r)}function fRt(t,e){return e.fs_.mkdir(Jc.dirname(t),{recursive:!0})}function ARt(t,e,r,s){let a=lke(s),n=[{generator:yRt,extension:\"\"}];return a.createCmdFile&&n.push({generator:mRt,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:ERt,extension:\".ps1\"}),Promise.all(n.map(c=>dRt(t,e+c.extension,r,c.generator,a)))}function pRt(t,e){return cRt(t,e)}function hRt(t,e){return IRt(t,e)}async function gRt(t,e){let a=(await e.fs_.readFile(t,\"utf8\")).trim().split(/\\r*\\n/)[0].match(sRt);if(!a){let n=Jc.extname(t).toLowerCase();return{program:aRt.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function dRt(t,e,r,s,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",c=[r.additionalArgs,n].filter(f=>f).join(\" \");return a=Object.assign({},a,{prog:r.program,args:c}),await pRt(e,a),await a.fs_.writeFile(e,s(t,e,a),\"utf8\"),hRt(e,a)}function mRt(t,e,r){let a=Jc.relative(Jc.dirname(e),t).split(\"/\").join(\"\\\\\"),n=Jc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,c,f=r.prog,p=r.args||\"\",h=uV(r.nodePath).win32;f?(c=`\"%~dp0\\\\${f}.exe\"`,a=n):(f=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",C=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return c?C+=`@IF EXIST ${c} (\\r\n  ${c} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${f} ${p} ${a} ${E}%*\\r\n)\\r\n`:C+=`@${f} ${p} ${a} ${E}%*\\r\n`,C}function yRt(t,e,r){let s=Jc.relative(Jc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;s=s.split(\"\\\\\").join(\"/\");let c=Jc.isAbsolute(s)?`\"${s}\"`:`\"$basedir/${s}\"`,f=r.args||\"\",p=uV(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,s=c):(a=c,f=\"\",s=\"\");let h=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",E=`#!/bin/sh\nbasedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\n\ncase \\`uname\\` in\n    *CYGWIN*) basedir=\\`cygpath -w \"$basedir\"\\`;;\nesac\n\n`,C=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${C}if [ -x ${n} ]; then\n  exec ${n} ${f} ${s} ${h}\"$@\"\nelse\n  exec ${a} ${f} ${s} ${h}\"$@\"\nfi\n`:E+=`${C}${a} ${f} ${s} ${h}\"$@\"\nexit $?\n`,E}function ERt(t,e,r){let s=Jc.relative(Jc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,c;s=s.split(\"\\\\\").join(\"/\");let f=Jc.isAbsolute(s)?`\"${s}\"`:`\"$basedir/${s}\"`,p=r.args||\"\",h=uV(r.nodePath),E=h.win32,C=h.posix;n?(c=`\"$basedir/${r.prog}$exe\"`,s=f):(n=f,p=\"\",s=\"\");let S=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",P=`#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=\"\"\n${r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH=\"${E}\"\n`:\"\"}if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n  # Fix case when both the Windows and Linux builds of Node\n  # are installed in the same directory\n  $exe=\".exe\"\n}`;return r.nodePath&&(P+=` else {\n  $env:NODE_PATH=\"${C}\"\n}`),c?P+=`\n$ret=0\nif (Test-Path ${c}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${c} ${p} ${s} ${S}$args\n  } else {\n    & ${c} ${p} ${s} ${S}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${s} ${S}$args\n  } else {\n    & ${n} ${p} ${s} ${S}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:P+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${s} ${S}$args\n} else {\n  & ${n} ${p} ${s} ${S}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,P}function IRt(t,e){return e.fs_.chmod(t,493)}function uV(t){if(!t)return{win32:\"\",posix:\"\"};let e=typeof t==\"string\"?t.split(Jc.delimiter):Array.from(t),r={};for(let s=0;s<e.length;s++){let a=e[s].split(\"/\").join(\"\\\\\"),n=ake()?e[s].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(c,f)=>`/mnt/${f.toLowerCase()}`):e[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}cke.exports=cV});var vV=L((tIr,kke)=>{kke.exports=ye(\"stream\")});var Fke=L((rIr,Rke)=>{\"use strict\";function Qke(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function JRt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Qke(Object(r),!0).forEach(function(s){zRt(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Qke(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function zRt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ZRt(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function Tke(t,e){for(var r=0;r<e.length;r++){var s=e[r];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function XRt(t,e,r){return e&&Tke(t.prototype,e),r&&Tke(t,r),t}var $Rt=ye(\"buffer\"),CN=$Rt.Buffer,eFt=ye(\"util\"),SV=eFt.inspect,tFt=SV&&SV.custom||\"inspect\";function rFt(t,e,r){CN.prototype.copy.call(t,e,r)}Rke.exports=function(){function t(){ZRt(this,t),this.head=null,this.tail=null,this.length=0}return XRt(t,[{key:\"push\",value:function(r){var s={data:r,next:null};this.length>0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:\"unshift\",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:\"shift\",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(r){if(this.length===0)return\"\";for(var s=this.head,a=\"\"+s.data;s=s.next;)a+=r+s.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return CN.alloc(0);for(var s=CN.allocUnsafe(r>>>0),a=this.head,n=0;a;)rFt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:\"consume\",value:function(r,s){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=s?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var s=this.head,a=1,n=s.data;for(r-=n.length;s=s.next;){var c=s.data,f=r>c.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var s=CN.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:tFt,value:function(r,s){return SV(this,JRt({},s,{depth:0,customInspect:!1}))}}]),t}()});var bV=L((nIr,Oke)=>{\"use strict\";function nFt(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(DV,this,t)):process.nextTick(DV,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(wN,r):(r._writableState.errorEmitted=!0,process.nextTick(Nke,r,n)):process.nextTick(Nke,r,n):e?(process.nextTick(wN,r),e(n)):process.nextTick(wN,r)}),this)}function Nke(t,e){DV(t,e),wN(t)}function wN(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function iFt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function DV(t,e){t.emit(\"error\",e)}function sFt(t,e){var r=t._readableState,s=t._writableState;r&&r.autoDestroy||s&&s.autoDestroy?t.destroy(e):t.emit(\"error\",e)}Oke.exports={destroy:nFt,undestroy:iFt,errorOrDestroy:sFt}});var cg=L((iIr,_ke)=>{\"use strict\";var Mke={};function Zc(t,e,r){r||(r=Error);function s(n,c,f){return typeof e==\"string\"?e:e(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=t,Mke[t]=a}function Lke(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(s=>String(s)),r>2?`one of ${e} ${t.slice(0,r-1).join(\", \")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function oFt(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function aFt(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function lFt(t,e,r){return typeof r!=\"number\"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Zc(\"ERR_INVALID_OPT_VALUE\",function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'},TypeError);Zc(\"ERR_INVALID_ARG_TYPE\",function(t,e,r){let s;typeof e==\"string\"&&oFt(e,\"not \")?(s=\"must not be\",e=e.replace(/^not /,\"\")):s=\"must be\";let a;if(aFt(t,\" argument\"))a=`The ${t} ${s} ${Lke(e,\"type\")}`;else{let n=lFt(t,\".\")?\"property\":\"argument\";a=`The \"${t}\" ${n} ${s} ${Lke(e,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Zc(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");Zc(\"ERR_METHOD_NOT_IMPLEMENTED\",function(t){return\"The \"+t+\" method is not implemented\"});Zc(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");Zc(\"ERR_STREAM_DESTROYED\",function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"});Zc(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");Zc(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");Zc(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");Zc(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);Zc(\"ERR_UNKNOWN_ENCODING\",function(t){return\"Unknown encoding: \"+t},TypeError);Zc(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");_ke.exports.codes=Mke});var PV=L((sIr,Uke)=>{\"use strict\";var cFt=cg().codes.ERR_INVALID_OPT_VALUE;function uFt(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function fFt(t,e,r,s){var a=uFt(e,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:\"highWaterMark\";throw new cFt(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}Uke.exports={getHighWaterMark:fFt}});var Hke=L((oIr,xV)=>{typeof Object.create==\"function\"?xV.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:xV.exports=function(e,r){if(r){e.super_=r;var s=function(){};s.prototype=r.prototype,e.prototype=new s,e.prototype.constructor=e}}});var ug=L((aIr,QV)=>{try{if(kV=ye(\"util\"),typeof kV.inherits!=\"function\")throw\"\";QV.exports=kV.inherits}catch{QV.exports=Hke()}var kV});var qke=L((lIr,jke)=>{jke.exports=ye(\"util\").deprecate});var FV=L((cIr,Jke)=>{\"use strict\";Jke.exports=Vi;function Wke(t){var e=this;this.next=null,this.entry=null,this.finish=function(){MFt(e,t)}}var Fw;Vi.WritableState=hb;var AFt={deprecate:qke()},Yke=vV(),vN=ye(\"buffer\").Buffer,pFt=global.Uint8Array||function(){};function hFt(t){return vN.from(t)}function gFt(t){return vN.isBuffer(t)||t instanceof pFt}var RV=bV(),dFt=PV(),mFt=dFt.getHighWaterMark,fg=cg().codes,yFt=fg.ERR_INVALID_ARG_TYPE,EFt=fg.ERR_METHOD_NOT_IMPLEMENTED,IFt=fg.ERR_MULTIPLE_CALLBACK,CFt=fg.ERR_STREAM_CANNOT_PIPE,wFt=fg.ERR_STREAM_DESTROYED,BFt=fg.ERR_STREAM_NULL_VALUES,vFt=fg.ERR_STREAM_WRITE_AFTER_END,SFt=fg.ERR_UNKNOWN_ENCODING,Nw=RV.errorOrDestroy;ug()(Vi,Yke);function DFt(){}function hb(t,e,r){Fw=Fw||Vm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof Fw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=mFt(this,t,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=t.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){RFt(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Wke(this)}hb.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(hb.prototype,\"buffer\",{get:AFt.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var BN;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?(BN=Function.prototype[Symbol.hasInstance],Object.defineProperty(Vi,Symbol.hasInstance,{value:function(e){return BN.call(this,e)?!0:this!==Vi?!1:e&&e._writableState instanceof hb}})):BN=function(e){return e instanceof this};function Vi(t){Fw=Fw||Vm();var e=this instanceof Fw;if(!e&&!BN.call(Vi,this))return new Vi(t);this._writableState=new hb(t,this,e),this.writable=!0,t&&(typeof t.write==\"function\"&&(this._write=t.write),typeof t.writev==\"function\"&&(this._writev=t.writev),typeof t.destroy==\"function\"&&(this._destroy=t.destroy),typeof t.final==\"function\"&&(this._final=t.final)),Yke.call(this)}Vi.prototype.pipe=function(){Nw(this,new CFt)};function bFt(t,e){var r=new vFt;Nw(t,r),process.nextTick(e,r)}function PFt(t,e,r,s){var a;return r===null?a=new BFt:typeof r!=\"string\"&&!e.objectMode&&(a=new yFt(\"chunk\",[\"string\",\"Buffer\"],r)),a?(Nw(t,a),process.nextTick(s,a),!1):!0}Vi.prototype.write=function(t,e,r){var s=this._writableState,a=!1,n=!s.objectMode&&gFt(t);return n&&!vN.isBuffer(t)&&(t=hFt(t)),typeof e==\"function\"&&(r=e,e=null),n?e=\"buffer\":e||(e=s.defaultEncoding),typeof r!=\"function\"&&(r=DFt),s.ending?bFt(this,r):(n||PFt(this,s,t,r))&&(s.pendingcb++,a=kFt(this,s,n,t,e,r)),a};Vi.prototype.cork=function(){this._writableState.corked++};Vi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Vke(this,t))};Vi.prototype.setDefaultEncoding=function(e){if(typeof e==\"string\"&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new SFt(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Vi.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function xFt(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e==\"string\"&&(e=vN.from(e,r)),e}Object.defineProperty(Vi.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function kFt(t,e,r,s,a,n){if(!r){var c=xFt(e,s,a);s!==c&&(r=!0,a=\"buffer\",s=c)}var f=e.objectMode?1:s.length;e.length+=f;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:s,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else TV(t,e,!1,f,s,a,n);return p}function TV(t,e,r,s,a,n,c){e.writelen=s,e.writecb=c,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new wFt(\"write\")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function QFt(t,e,r,s,a){--e.pendingcb,r?(process.nextTick(a,s),process.nextTick(pb,t,e),t._writableState.errorEmitted=!0,Nw(t,s)):(a(s),t._writableState.errorEmitted=!0,Nw(t,s),pb(t,e))}function TFt(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function RFt(t,e){var r=t._writableState,s=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new IFt;if(TFt(r),e)QFt(t,r,s,e,a);else{var n=Kke(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&Vke(t,r),s?process.nextTick(Gke,t,r,n,a):Gke(t,r,n,a)}}function Gke(t,e,r,s){r||FFt(t,e),e.pendingcb--,s(),pb(t,e)}function FFt(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}function Vke(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var s=e.bufferedRequestCount,a=new Array(s),n=e.corkedRequestsFree;n.entry=r;for(var c=0,f=!0;r;)a[c]=r,r.isBuf||(f=!1),r=r.next,c+=1;a.allBuffers=f,TV(t,e,!0,e.length,a,\"\",n.finish),e.pendingcb++,e.lastBufferedRequest=null,n.next?(e.corkedRequestsFree=n.next,n.next=null):e.corkedRequestsFree=new Wke(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,C=e.objectMode?1:p.length;if(TV(t,e,!1,C,p,h,E),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Vi.prototype._write=function(t,e,r){r(new EFt(\"_write()\"))};Vi.prototype._writev=null;Vi.prototype.end=function(t,e,r){var s=this._writableState;return typeof t==\"function\"?(r=t,t=null,e=null):typeof e==\"function\"&&(r=e,e=null),t!=null&&this.write(t,e),s.corked&&(s.corked=1,this.uncork()),s.ending||LFt(this,s,r),this};Object.defineProperty(Vi.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function Kke(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function NFt(t,e){t._final(function(r){e.pendingcb--,r&&Nw(t,r),e.prefinished=!0,t.emit(\"prefinish\"),pb(t,e)})}function OFt(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final==\"function\"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(NFt,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}function pb(t,e){var r=Kke(e);if(r&&(OFt(t,e),e.pendingcb===0&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var s=t._readableState;(!s||s.autoDestroy&&s.endEmitted)&&t.destroy()}return r}function LFt(t,e,r){e.ending=!0,pb(t,e),r&&(e.finished?process.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}function MFt(t,e,r){var s=t.entry;for(t.entry=null;s;){var a=s.callback;e.pendingcb--,a(r),s=s.next}e.corkedRequestsFree.next=t}Object.defineProperty(Vi.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}});Vi.prototype.destroy=RV.destroy;Vi.prototype._undestroy=RV.undestroy;Vi.prototype._destroy=function(t,e){e(t)}});var Vm=L((uIr,Zke)=>{\"use strict\";var _Ft=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};Zke.exports=yA;var zke=LV(),OV=FV();ug()(yA,zke);for(NV=_Ft(OV.prototype),SN=0;SN<NV.length;SN++)DN=NV[SN],yA.prototype[DN]||(yA.prototype[DN]=OV.prototype[DN]);var NV,DN,SN;function yA(t){if(!(this instanceof yA))return new yA(t);zke.call(this,t),OV.call(this,t),this.allowHalfOpen=!0,t&&(t.readable===!1&&(this.readable=!1),t.writable===!1&&(this.writable=!1),t.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once(\"end\",UFt)))}Object.defineProperty(yA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(yA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(yA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function UFt(){this._writableState.ended||process.nextTick(HFt,this)}function HFt(t){t.end()}Object.defineProperty(yA.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}})});var eQe=L((MV,$ke)=>{var bN=ye(\"buffer\"),uh=bN.Buffer;function Xke(t,e){for(var r in t)e[r]=t[r]}uh.from&&uh.alloc&&uh.allocUnsafe&&uh.allocUnsafeSlow?$ke.exports=bN:(Xke(bN,MV),MV.Buffer=Ow);function Ow(t,e,r){return uh(t,e,r)}Xke(uh,Ow);Ow.from=function(t,e,r){if(typeof t==\"number\")throw new TypeError(\"Argument must not be a number\");return uh(t,e,r)};Ow.alloc=function(t,e,r){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");var s=uh(t);return e!==void 0?typeof r==\"string\"?s.fill(e,r):s.fill(e):s.fill(0),s};Ow.allocUnsafe=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return uh(t)};Ow.allocUnsafeSlow=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return bN.SlowBuffer(t)}});var HV=L(rQe=>{\"use strict\";var UV=eQe().Buffer,tQe=UV.isEncoding||function(t){switch(t=\"\"+t,t&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function jFt(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}function qFt(t){var e=jFt(t);if(typeof e!=\"string\"&&(UV.isEncoding===tQe||!tQe(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}rQe.StringDecoder=gb;function gb(t){this.encoding=qFt(t);var e;switch(this.encoding){case\"utf16le\":this.text=JFt,this.end=zFt,e=4;break;case\"utf8\":this.fillLast=YFt,e=4;break;case\"base64\":this.text=ZFt,this.end=XFt,e=3;break;default:this.write=$Ft,this.end=eNt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=UV.allocUnsafe(e)}gb.prototype.write=function(t){if(t.length===0)return\"\";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||\"\"};gb.prototype.end=KFt;gb.prototype.text=VFt;gb.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function _V(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function GFt(t,e,r){var s=e.length-1;if(s<r)return 0;var a=_V(e[s]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--s<r||a===-2?0:(a=_V(e[s]),a>=0?(a>0&&(t.lastNeed=a-2),a):--s<r||a===-2?0:(a=_V(e[s]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function WFt(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,\"\\uFFFD\";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,\"\\uFFFD\";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,\"\\uFFFD\"}}function YFt(t){var e=this.lastTotal-this.lastNeed,r=WFt(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function VFt(t,e){var r=GFt(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var s=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,s),t.toString(\"utf8\",e,s)}function KFt(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\\uFFFD\":e}function JFt(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function zFt(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function ZFt(t,e){var r=(t.length-e)%3;return r===0?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function XFt(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function $Ft(t){return t.toString(this.encoding)}function eNt(t){return t&&t.length?this.write(t):\"\"}});var PN=L((AIr,sQe)=>{\"use strict\";var nQe=cg().codes.ERR_STREAM_PREMATURE_CLOSE;function tNt(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,s=new Array(r),a=0;a<r;a++)s[a]=arguments[a];t.apply(this,s)}}}function rNt(){}function nNt(t){return t.setHeader&&typeof t.abort==\"function\"}function iQe(t,e,r){if(typeof e==\"function\")return iQe(t,null,e);e||(e={}),r=tNt(r||rNt);var s=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||f()},c=t._writableState&&t._writableState.finished,f=function(){a=!1,c=!0,s||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){s=!1,p=!0,a||r.call(t)},E=function(I){r.call(t,I)},C=function(){var I;if(s&&!p)return(!t._readableState||!t._readableState.ended)&&(I=new nQe),r.call(t,I);if(a&&!c)return(!t._writableState||!t._writableState.ended)&&(I=new nQe),r.call(t,I)},S=function(){t.req.on(\"finish\",f)};return nNt(t)?(t.on(\"complete\",f),t.on(\"abort\",C),t.req?S():t.on(\"request\",S)):a&&!t._writableState&&(t.on(\"end\",n),t.on(\"close\",n)),t.on(\"end\",h),t.on(\"finish\",f),e.error!==!1&&t.on(\"error\",E),t.on(\"close\",C),function(){t.removeListener(\"complete\",f),t.removeListener(\"abort\",C),t.removeListener(\"request\",S),t.req&&t.req.removeListener(\"finish\",f),t.removeListener(\"end\",n),t.removeListener(\"close\",n),t.removeListener(\"finish\",f),t.removeListener(\"end\",h),t.removeListener(\"error\",E),t.removeListener(\"close\",C)}}sQe.exports=iQe});var aQe=L((pIr,oQe)=>{\"use strict\";var xN;function Ag(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var iNt=PN(),pg=Symbol(\"lastResolve\"),Km=Symbol(\"lastReject\"),db=Symbol(\"error\"),kN=Symbol(\"ended\"),Jm=Symbol(\"lastPromise\"),jV=Symbol(\"handlePromise\"),zm=Symbol(\"stream\");function hg(t,e){return{value:t,done:e}}function sNt(t){var e=t[pg];if(e!==null){var r=t[zm].read();r!==null&&(t[Jm]=null,t[pg]=null,t[Km]=null,e(hg(r,!1)))}}function oNt(t){process.nextTick(sNt,t)}function aNt(t,e){return function(r,s){t.then(function(){if(e[kN]){r(hg(void 0,!0));return}e[jV](r,s)},s)}}var lNt=Object.getPrototypeOf(function(){}),cNt=Object.setPrototypeOf((xN={get stream(){return this[zm]},next:function(){var e=this,r=this[db];if(r!==null)return Promise.reject(r);if(this[kN])return Promise.resolve(hg(void 0,!0));if(this[zm].destroyed)return new Promise(function(c,f){process.nextTick(function(){e[db]?f(e[db]):c(hg(void 0,!0))})});var s=this[Jm],a;if(s)a=new Promise(aNt(s,this));else{var n=this[zm].read();if(n!==null)return Promise.resolve(hg(n,!1));a=new Promise(this[jV])}return this[Jm]=a,a}},Ag(xN,Symbol.asyncIterator,function(){return this}),Ag(xN,\"return\",function(){var e=this;return new Promise(function(r,s){e[zm].destroy(null,function(a){if(a){s(a);return}r(hg(void 0,!0))})})}),xN),lNt),uNt=function(e){var r,s=Object.create(cNt,(r={},Ag(r,zm,{value:e,writable:!0}),Ag(r,pg,{value:null,writable:!0}),Ag(r,Km,{value:null,writable:!0}),Ag(r,db,{value:null,writable:!0}),Ag(r,kN,{value:e._readableState.endEmitted,writable:!0}),Ag(r,jV,{value:function(n,c){var f=s[zm].read();f?(s[Jm]=null,s[pg]=null,s[Km]=null,n(hg(f,!1))):(s[pg]=n,s[Km]=c)},writable:!0}),r));return s[Jm]=null,iNt(e,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=s[Km];n!==null&&(s[Jm]=null,s[pg]=null,s[Km]=null,n(a)),s[db]=a;return}var c=s[pg];c!==null&&(s[Jm]=null,s[pg]=null,s[Km]=null,c(hg(void 0,!0))),s[kN]=!0}),e.on(\"readable\",oNt.bind(null,s)),s};oQe.exports=uNt});var fQe=L((hIr,uQe)=>{\"use strict\";function lQe(t,e,r,s,a,n,c){try{var f=t[n](c),p=f.value}catch(h){r(h);return}f.done?e(p):Promise.resolve(p).then(s,a)}function fNt(t){return function(){var e=this,r=arguments;return new Promise(function(s,a){var n=t.apply(e,r);function c(p){lQe(n,s,a,c,f,\"next\",p)}function f(p){lQe(n,s,a,c,f,\"throw\",p)}c(void 0)})}}function cQe(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function ANt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?cQe(Object(r),!0).forEach(function(s){pNt(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):cQe(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function pNt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var hNt=cg().codes.ERR_INVALID_ARG_TYPE;function gNt(t,e,r){var s;if(e&&typeof e.next==\"function\")s=e;else if(e&&e[Symbol.asyncIterator])s=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])s=e[Symbol.iterator]();else throw new hNt(\"iterable\",[\"Iterable\"],e);var a=new t(ANt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,c())};function c(){return f.apply(this,arguments)}function f(){return f=fNt(function*(){try{var p=yield s.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?c():n=!1}catch(C){a.destroy(C)}}),f.apply(this,arguments)}return a}uQe.exports=gNt});var LV=L((dIr,CQe)=>{\"use strict\";CQe.exports=Pn;var Lw;Pn.ReadableState=gQe;var gIr=ye(\"events\").EventEmitter,hQe=function(e,r){return e.listeners(r).length},yb=vV(),QN=ye(\"buffer\").Buffer,dNt=global.Uint8Array||function(){};function mNt(t){return QN.from(t)}function yNt(t){return QN.isBuffer(t)||t instanceof dNt}var qV=ye(\"util\"),ln;qV&&qV.debuglog?ln=qV.debuglog(\"stream\"):ln=function(){};var ENt=Fke(),zV=bV(),INt=PV(),CNt=INt.getHighWaterMark,TN=cg().codes,wNt=TN.ERR_INVALID_ARG_TYPE,BNt=TN.ERR_STREAM_PUSH_AFTER_EOF,vNt=TN.ERR_METHOD_NOT_IMPLEMENTED,SNt=TN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Mw,GV,WV;ug()(Pn,yb);var mb=zV.errorOrDestroy,YV=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function DNt(t,e,r){if(typeof t.prependListener==\"function\")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function gQe(t,e,r){Lw=Lw||Vm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof Lw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=CNt(this,t,\"readableHighWaterMark\",r),this.buffer=new ENt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Mw||(Mw=HV().StringDecoder),this.decoder=new Mw(t.encoding),this.encoding=t.encoding)}function Pn(t){if(Lw=Lw||Vm(),!(this instanceof Pn))return new Pn(t);var e=this instanceof Lw;this._readableState=new gQe(t,this,e),this.readable=!0,t&&(typeof t.read==\"function\"&&(this._read=t.read),typeof t.destroy==\"function\"&&(this._destroy=t.destroy)),yb.call(this)}Object.defineProperty(Pn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Pn.prototype.destroy=zV.destroy;Pn.prototype._undestroy=zV.undestroy;Pn.prototype._destroy=function(t,e){e(t)};Pn.prototype.push=function(t,e){var r=this._readableState,s;return r.objectMode?s=!0:typeof t==\"string\"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=QN.from(t,e),e=\"\"),s=!0),dQe(this,t,e,!1,s)};Pn.prototype.unshift=function(t){return dQe(this,t,null,!0,!1)};function dQe(t,e,r,s,a){ln(\"readableAddChunk\",e);var n=t._readableState;if(e===null)n.reading=!1,xNt(t,n);else{var c;if(a||(c=bNt(n,e)),c)mb(t,c);else if(n.objectMode||e&&e.length>0)if(typeof e!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(e)!==QN.prototype&&(e=mNt(e)),s)n.endEmitted?mb(t,new SNt):VV(t,n,e,!0);else if(n.ended)mb(t,new BNt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?VV(t,n,e,!1):JV(t,n)):VV(t,n,e,!1)}else s||(n.reading=!1,JV(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function VV(t,e,r,s){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,s?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&RN(t)),JV(t,e)}function bNt(t,e){var r;return!yNt(e)&&typeof e!=\"string\"&&e!==void 0&&!t.objectMode&&(r=new wNt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r}Pn.prototype.isPaused=function(){return this._readableState.flowing===!1};Pn.prototype.setEncoding=function(t){Mw||(Mw=HV().StringDecoder);var e=new Mw(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,s=\"\";r!==null;)s+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),s!==\"\"&&this._readableState.buffer.push(s),this._readableState.length=s.length,this};var AQe=1073741824;function PNt(t){return t>=AQe?t=AQe:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function pQe(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=PNt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Pn.prototype.read=function(t){ln(\"read\",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return ln(\"read: emitReadable\",e.length,e.ended),e.length===0&&e.ended?KV(this):RN(this),null;if(t=pQe(t,e),t===0&&e.ended)return e.length===0&&KV(this),null;var s=e.needReadable;ln(\"need readable\",s),(e.length===0||e.length-t<e.highWaterMark)&&(s=!0,ln(\"length less than watermark\",s)),e.ended||e.reading?(s=!1,ln(\"reading or ended\",s)):s&&(ln(\"do read\"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=pQe(r,e)));var a;return t>0?a=EQe(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&KV(this)),a!==null&&this.emit(\"data\",a),a};function xNt(t,e){if(ln(\"onEofChunk\"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?RN(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,mQe(t)))}}function RN(t){var e=t._readableState;ln(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(ln(\"emitReadable\",e.flowing),e.emittedReadable=!0,process.nextTick(mQe,t))}function mQe(t){var e=t._readableState;ln(\"emitReadable_\",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,ZV(t)}function JV(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(kNt,t,e))}function kNt(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(ln(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}Pn.prototype._read=function(t){mb(this,new vNt(\"_read()\"))};Pn.prototype.pipe=function(t,e){var r=this,s=this._readableState;switch(s.pipesCount){case 0:s.pipes=t;break;case 1:s.pipes=[s.pipes,t];break;default:s.pipes.push(t);break}s.pipesCount+=1,ln(\"pipe count=%d opts=%j\",s.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?f:R;s.endEmitted?process.nextTick(n):r.once(\"end\",n),t.on(\"unpipe\",c);function c(N,U){ln(\"onunpipe\"),N===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function f(){ln(\"onend\"),t.end()}var p=QNt(r);t.on(\"drain\",p);var h=!1;function E(){ln(\"cleanup\"),t.removeListener(\"close\",P),t.removeListener(\"finish\",I),t.removeListener(\"drain\",p),t.removeListener(\"error\",S),t.removeListener(\"unpipe\",c),r.removeListener(\"end\",f),r.removeListener(\"end\",R),r.removeListener(\"data\",C),h=!0,s.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on(\"data\",C);function C(N){ln(\"ondata\");var U=t.write(N);ln(\"dest.write\",U),U===!1&&((s.pipesCount===1&&s.pipes===t||s.pipesCount>1&&IQe(s.pipes,t)!==-1)&&!h&&(ln(\"false write response, pause\",s.awaitDrain),s.awaitDrain++),r.pause())}function S(N){ln(\"onerror\",N),R(),t.removeListener(\"error\",S),hQe(t,\"error\")===0&&mb(t,N)}DNt(t,\"error\",S);function P(){t.removeListener(\"finish\",I),R()}t.once(\"close\",P);function I(){ln(\"onfinish\"),t.removeListener(\"close\",P),R()}t.once(\"finish\",I);function R(){ln(\"unpipe\"),r.unpipe(t)}return t.emit(\"pipe\",r),s.flowing||(ln(\"pipe resume\"),r.resume()),t};function QNt(t){return function(){var r=t._readableState;ln(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&hQe(t,\"data\")&&(r.flowing=!0,ZV(t))}}Pn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r),this);if(!t){var s=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)s[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var c=IQe(e.pipes,t);return c===-1?this:(e.pipes.splice(c,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)};Pn.prototype.on=function(t,e){var r=yb.prototype.on.call(this,t,e),s=this._readableState;return t===\"data\"?(s.readableListening=this.listenerCount(\"readable\")>0,s.flowing!==!1&&this.resume()):t===\"readable\"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,ln(\"on readable\",s.length,s.reading),s.length?RN(this):s.reading||process.nextTick(TNt,this)),r};Pn.prototype.addListener=Pn.prototype.on;Pn.prototype.removeListener=function(t,e){var r=yb.prototype.removeListener.call(this,t,e);return t===\"readable\"&&process.nextTick(yQe,this),r};Pn.prototype.removeAllListeners=function(t){var e=yb.prototype.removeAllListeners.apply(this,arguments);return(t===\"readable\"||t===void 0)&&process.nextTick(yQe,this),e};function yQe(t){var e=t._readableState;e.readableListening=t.listenerCount(\"readable\")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function TNt(t){ln(\"readable nexttick read 0\"),t.read(0)}Pn.prototype.resume=function(){var t=this._readableState;return t.flowing||(ln(\"resume\"),t.flowing=!t.readableListening,RNt(this,t)),t.paused=!1,this};function RNt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(FNt,t,e))}function FNt(t,e){ln(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),ZV(t),e.flowing&&!e.reading&&t.read(0)}Pn.prototype.pause=function(){return ln(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&(ln(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function ZV(t){var e=t._readableState;for(ln(\"flow\",e.flowing);e.flowing&&t.read()!==null;);}Pn.prototype.wrap=function(t){var e=this,r=this._readableState,s=!1;t.on(\"end\",function(){if(ln(\"wrapped end\"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&e.push(c)}e.push(null)}),t.on(\"data\",function(c){if(ln(\"wrapped data\"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=e.push(c);f||(s=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]==\"function\"&&(this[a]=function(f){return function(){return t[f].apply(t,arguments)}}(a));for(var n=0;n<YV.length;n++)t.on(YV[n],this.emit.bind(this,YV[n]));return this._read=function(c){ln(\"wrapped _read\",c),s&&(s=!1,t.resume())},this};typeof Symbol==\"function\"&&(Pn.prototype[Symbol.asyncIterator]=function(){return GV===void 0&&(GV=aQe()),GV(this)});Object.defineProperty(Pn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(Pn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(Pn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});Pn._fromList=EQe;Object.defineProperty(Pn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function EQe(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(\"\"):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function KV(t){var e=t._readableState;ln(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(NNt,e,t))}function NNt(t,e){if(ln(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol==\"function\"&&(Pn.from=function(t,e){return WV===void 0&&(WV=fQe()),WV(Pn,t,e)});function IQe(t,e){for(var r=0,s=t.length;r<s;r++)if(t[r]===e)return r;return-1}});var XV=L((mIr,BQe)=>{\"use strict\";BQe.exports=fh;var FN=cg().codes,ONt=FN.ERR_METHOD_NOT_IMPLEMENTED,LNt=FN.ERR_MULTIPLE_CALLBACK,MNt=FN.ERR_TRANSFORM_ALREADY_TRANSFORMING,_Nt=FN.ERR_TRANSFORM_WITH_LENGTH_0,NN=Vm();ug()(fh,NN);function UNt(t,e){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit(\"error\",new LNt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),s(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function fh(t){if(!(this instanceof fh))return new fh(t);NN.call(this,t),this._transformState={afterTransform:UNt.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(typeof t.transform==\"function\"&&(this._transform=t.transform),typeof t.flush==\"function\"&&(this._flush=t.flush)),this.on(\"prefinish\",HNt)}function HNt(){var t=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(e,r){wQe(t,e,r)}):wQe(this,null,null)}fh.prototype.push=function(t,e){return this._transformState.needTransform=!1,NN.prototype.push.call(this,t,e)};fh.prototype._transform=function(t,e,r){r(new ONt(\"_transform()\"))};fh.prototype._write=function(t,e,r){var s=this._transformState;if(s.writecb=r,s.writechunk=t,s.writeencoding=e,!s.transforming){var a=this._readableState;(s.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};fh.prototype._read=function(t){var e=this._transformState;e.writechunk!==null&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0};fh.prototype._destroy=function(t,e){NN.prototype._destroy.call(this,t,function(r){e(r)})};function wQe(t,e,r){if(e)return t.emit(\"error\",e);if(r!=null&&t.push(r),t._writableState.length)throw new _Nt;if(t._transformState.transforming)throw new MNt;return t.push(null)}});var DQe=L((yIr,SQe)=>{\"use strict\";SQe.exports=Eb;var vQe=XV();ug()(Eb,vQe);function Eb(t){if(!(this instanceof Eb))return new Eb(t);vQe.call(this,t)}Eb.prototype._transform=function(t,e,r){r(null,t)}});var QQe=L((EIr,kQe)=>{\"use strict\";var $V;function jNt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var xQe=cg().codes,qNt=xQe.ERR_MISSING_ARGS,GNt=xQe.ERR_STREAM_DESTROYED;function bQe(t){if(t)throw t}function WNt(t){return t.setHeader&&typeof t.abort==\"function\"}function YNt(t,e,r,s){s=jNt(s);var a=!1;t.on(\"close\",function(){a=!0}),$V===void 0&&($V=PN()),$V(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,WNt(t))return t.abort();if(typeof t.destroy==\"function\")return t.destroy();s(c||new GNt(\"pipe\"))}}}function PQe(t){t()}function VNt(t,e){return t.pipe(e)}function KNt(t){return!t.length||typeof t[t.length-1]!=\"function\"?bQe:t.pop()}function JNt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var s=KNt(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new qNt(\"streams\");var a,n=e.map(function(c,f){var p=f<e.length-1,h=f>0;return YNt(c,p,h,function(E){a||(a=E),E&&n.forEach(PQe),!p&&(n.forEach(PQe),s(a))})});return e.reduce(VNt)}kQe.exports=JNt});var _w=L((Xc,Cb)=>{var Ib=ye(\"stream\");process.env.READABLE_STREAM===\"disable\"&&Ib?(Cb.exports=Ib.Readable,Object.assign(Cb.exports,Ib),Cb.exports.Stream=Ib):(Xc=Cb.exports=LV(),Xc.Stream=Ib||Xc,Xc.Readable=Xc,Xc.Writable=FV(),Xc.Duplex=Vm(),Xc.Transform=XV(),Xc.PassThrough=DQe(),Xc.finished=PN(),Xc.pipeline=QQe())});var FQe=L((IIr,RQe)=>{\"use strict\";var{Buffer:uf}=ye(\"buffer\"),TQe=Symbol.for(\"BufferList\");function Ci(t){if(!(this instanceof Ci))return new Ci(t);Ci._init.call(this,t)}Ci._init=function(e){Object.defineProperty(this,TQe,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Ci.prototype._new=function(e){return new Ci(e)};Ci.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let s=0;s<this._bufs.length;s++){let a=r+this._bufs[s].length;if(e<a||s===this._bufs.length-1)return[s,e-r];r=a}};Ci.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let s=0;s<e;s++)r+=this._bufs[s].length;return r};Ci.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Ci.prototype.slice=function(e,r){return typeof e==\"number\"&&e<0&&(e+=this.length),typeof r==\"number\"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Ci.prototype.copy=function(e,r,s,a){if((typeof s!=\"number\"||s<0)&&(s=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return e||uf.alloc(0);let n=!!e,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:uf.concat(this._bufs,this.length);for(let C=0;C<this._bufs.length;C++)this._bufs[C].copy(e,h),h+=this._bufs[C].length;return e}if(p<=this._bufs[c[0]].length-E)return n?this._bufs[c[0]].copy(e,r,E,E+p):this._bufs[c[0]].slice(E,E+p);n||(e=uf.allocUnsafe(f));for(let C=c[0];C<this._bufs.length;C++){let S=this._bufs[C].length-E;if(p>S)this._bufs[C].copy(e,h,E),h+=S;else{this._bufs[C].copy(e,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return e.length>h?e.slice(0,h):e};Ci.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!=\"number\"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let s=this._offset(e),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};Ci.prototype.toString=function(e,r,s){return this.slice(r,s).toString(e)};Ci.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Ci.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};Ci.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(uf.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e==\"number\"&&(e=e.toString()),this._appendBuffer(uf.from(e));return this};Ci.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};Ci.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e==\"string\"&&(r=e,e=void 0),typeof t==\"function\"||Array.isArray(t))throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t==\"number\"?t=uf.from([t]):typeof t==\"string\"?t=uf.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=uf.from(t.buffer,t.byteOffset,t.byteLength):uf.isBuffer(t)||(t=uf.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let s=this._offset(e),a=s[0],n=s[1];for(;a<this._bufs.length;a++){let c=this._bufs[a];for(;n<c.length;)if(c.length-n>=t.length){let p=c.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Ci.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?Ci.prototype[r]=function(s,a){return this.slice(s,s+a)[r](0,a)}:Ci.prototype[r]=function(s=0){return this.slice(s,s+t[r])[r](0)}})(e)})();Ci.prototype._isBufferList=function(e){return e instanceof Ci||Ci.isBufferList(e)};Ci.isBufferList=function(e){return e!=null&&e[TQe]};RQe.exports=Ci});var NQe=L((CIr,ON)=>{\"use strict\";var e7=_w().Duplex,zNt=ug(),wb=FQe();function na(t){if(!(this instanceof na))return new na(t);if(typeof t==\"function\"){this._callback=t;let e=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on(\"pipe\",function(s){s.on(\"error\",e)}),this.on(\"unpipe\",function(s){s.removeListener(\"error\",e)}),t=null}wb._init.call(this,t),e7.call(this)}zNt(na,e7);Object.assign(na.prototype,wb.prototype);na.prototype._new=function(e){return new na(e)};na.prototype._write=function(e,r,s){this._appendBuffer(e),typeof s==\"function\"&&s()};na.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};na.prototype.end=function(e){e7.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};na.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};na.prototype._isBufferList=function(e){return e instanceof na||e instanceof wb||na.isBufferList(e)};na.isBufferList=wb.isBufferList;ON.exports=na;ON.exports.BufferListStream=na;ON.exports.BufferList=wb});var n7=L(Hw=>{var ZNt=Buffer.alloc,XNt=\"0000000000000000000\",$Nt=\"7777777777777777777\",OQe=48,LQe=Buffer.from(\"ustar\\0\",\"binary\"),eOt=Buffer.from(\"00\",\"binary\"),tOt=Buffer.from(\"ustar \",\"binary\"),rOt=Buffer.from(\" \\0\",\"binary\"),nOt=parseInt(\"7777\",8),Bb=257,r7=263,iOt=function(t,e,r){return typeof t!=\"number\"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},sOt=function(t){switch(t){case 0:return\"file\";case 1:return\"link\";case 2:return\"symlink\";case 3:return\"character-device\";case 4:return\"block-device\";case 5:return\"directory\";case 6:return\"fifo\";case 7:return\"contiguous-file\";case 72:return\"pax-header\";case 55:return\"pax-global-header\";case 27:return\"gnu-long-link-path\";case 28:case 30:return\"gnu-long-path\"}return null},oOt=function(t){switch(t){case\"file\":return 0;case\"link\":return 1;case\"symlink\":return 2;case\"character-device\":return 3;case\"block-device\":return 4;case\"directory\":return 5;case\"fifo\":return 6;case\"contiguous-file\":return 7;case\"pax-header\":return 72}return 0},MQe=function(t,e,r,s){for(;r<s;r++)if(t[r]===e)return r;return s},_Qe=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var s=156;s<512;s++)e+=t[s];return e},gg=function(t,e){return t=t.toString(8),t.length>e?$Nt.slice(0,e)+\" \":XNt.slice(0,e-t.length)+t+\" \"};function aOt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],s=t.length-1;s>0;s--){var a=t[s];e?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s<c;s++)n+=r[s]*Math.pow(256,s);return e?n:-1*n}var dg=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return aOt(t);for(;e<t.length&&t[e]===32;)e++;for(var s=iOt(MQe(t,32,e,t.length),t.length,t.length);e<s&&t[e]===0;)e++;return s===e?0:parseInt(t.slice(e,s).toString(),8)},Uw=function(t,e,r,s){return t.slice(e,MQe(t,0,e,e+r)).toString(s)},t7=function(t){var e=Buffer.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t};Hw.decodeLongPath=function(t,e){return Uw(t,0,t.length,e)};Hw.encodePax=function(t){var e=\"\";t.name&&(e+=t7(\" path=\"+t.name+`\n`)),t.linkname&&(e+=t7(\" linkpath=\"+t.linkname+`\n`));var r=t.pax;if(r)for(var s in r)e+=t7(\" \"+s+\"=\"+r[s]+`\n`);return Buffer.from(e)};Hw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var s=parseInt(t.slice(0,r).toString(),10);if(!s)return e;var a=t.slice(r+1,s-1).toString(),n=a.indexOf(\"=\");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(s)}return e};Hw.encode=function(t){var e=ZNt(512),r=t.name,s=\"\";if(t.typeflag===5&&r[r.length-1]!==\"/\"&&(r+=\"/\"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf(\"/\");if(a===-1)return null;s+=s?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(gg(t.mode&nOt,6),100),e.write(gg(t.uid,6),108),e.write(gg(t.gid,6),116),e.write(gg(t.size,11),124),e.write(gg(t.mtime.getTime()/1e3|0,11),136),e[156]=OQe+oOt(t.type),t.linkname&&e.write(t.linkname,157),LQe.copy(e,Bb),eOt.copy(e,r7),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(gg(t.devmajor||0,6),329),e.write(gg(t.devminor||0,6),337),s&&e.write(s,345),e.write(gg(_Qe(e),6),148),e)};Hw.decode=function(t,e,r){var s=t[156]===0?0:t[156]-OQe,a=Uw(t,0,100,e),n=dg(t,100,8),c=dg(t,108,8),f=dg(t,116,8),p=dg(t,124,12),h=dg(t,136,12),E=sOt(s),C=t[157]===0?null:Uw(t,157,100,e),S=Uw(t,265,32),P=Uw(t,297,32),I=dg(t,329,8),R=dg(t,337,8),N=_Qe(t);if(N===8*32)return null;if(N!==dg(t,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(LQe.compare(t,Bb,Bb+6)===0)t[345]&&(a=Uw(t,345,155,e)+\"/\"+a);else if(!(tOt.compare(t,Bb,Bb+6)===0&&rOt.compare(t,r7,r7+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return s===0&&a&&a[a.length-1]===\"/\"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:P,devmajor:I,devminor:R}}});var YQe=L((BIr,WQe)=>{var HQe=ye(\"util\"),lOt=NQe(),vb=n7(),jQe=_w().Writable,qQe=_w().PassThrough,GQe=function(){},UQe=function(t){return t&=511,t&&512-t},cOt=function(t,e){var r=new LN(t,e);return r.end(),r},uOt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},LN=function(t,e){this._parent=t,this.offset=e,qQe.call(this,{autoDestroy:!1})};HQe.inherits(LN,qQe);LN.prototype.destroy=function(t){this._parent.destroy(t)};var Ah=function(t){if(!(this instanceof Ah))return new Ah(t);jQe.call(this,t),t=t||{},this._offset=0,this._buffer=lOt(),this._missing=0,this._partial=!1,this._onparse=GQe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,s=function(){e._continue()},a=function(S){if(e._locked=!1,S)return e.destroy(S);e._stream||s()},n=function(){e._stream=null;var S=UQe(e._header.size);S?e._parse(S,c):e._parse(512,C),e._locked||s()},c=function(){e._buffer.consume(UQe(e._header.size)),e._parse(512,C),s()},f=function(){var S=e._header.size;e._paxGlobal=vb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=e._header.size;e._pax=vb.decodePax(r.slice(0,S)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(S),n()},h=function(){var S=e._header.size;this._gnuLongPath=vb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},E=function(){var S=e._header.size;this._gnuLongLinkPath=vb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},C=function(){var S=e._offset,P;try{P=e._header=vb.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(I){e.emit(\"error\",I)}if(r.consume(512),!P){e._parse(512,C),s();return}if(P.type===\"gnu-long-path\"){e._parse(P.size,h),s();return}if(P.type===\"gnu-long-link-path\"){e._parse(P.size,E),s();return}if(P.type===\"pax-global-header\"){e._parse(P.size,f),s();return}if(P.type===\"pax-header\"){e._parse(P.size,p),s();return}if(e._gnuLongPath&&(P.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(P.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=P=uOt(P,e._pax),e._pax=null),e._locked=!0,!P.size||P.type===\"directory\"){e._parse(512,C),e.emit(\"entry\",P,cOt(e,S),a);return}e._stream=new LN(e,S),e.emit(\"entry\",P,e._stream,a),e._parse(P.size,n),s()};this._onheader=C,this._parse(512,C)};HQe.inherits(Ah,jQe);Ah.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};Ah.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Ah.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=GQe,this._overflow?this._write(this._overflow,void 0,t):t()}};Ah.prototype._write=function(t,e,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,s?s.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var c=null;t.length>n&&(c=t.slice(n),t=t.slice(0,n)),s?s.end(t):a.append(t),this._overflow=c,this._onparse()}};Ah.prototype._final=function(t){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));t()};WQe.exports=Ah});var KQe=L((vIr,VQe)=>{VQe.exports=ye(\"fs\").constants||ye(\"constants\")});var $Qe=L((SIr,XQe)=>{var jw=KQe(),JQe=kH(),_N=ug(),fOt=Buffer.alloc,zQe=_w().Readable,qw=_w().Writable,AOt=ye(\"string_decoder\").StringDecoder,MN=n7(),pOt=parseInt(\"755\",8),hOt=parseInt(\"644\",8),ZQe=fOt(1024),s7=function(){},i7=function(t,e){e&=511,e&&t.push(ZQe.slice(0,512-e))};function gOt(t){switch(t&jw.S_IFMT){case jw.S_IFBLK:return\"block-device\";case jw.S_IFCHR:return\"character-device\";case jw.S_IFDIR:return\"directory\";case jw.S_IFIFO:return\"fifo\";case jw.S_IFLNK:return\"symlink\"}return\"file\"}var UN=function(t){qw.call(this),this.written=0,this._to=t,this._destroyed=!1};_N(UN,qw);UN.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};UN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var HN=function(){qw.call(this),this.linkname=\"\",this._decoder=new AOt(\"utf-8\"),this._destroyed=!1};_N(HN,qw);HN.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};HN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var Sb=function(){qw.call(this),this._destroyed=!1};_N(Sb,qw);Sb.prototype._write=function(t,e,r){r(new Error(\"No body allowed for this entry\"))};Sb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var EA=function(t){if(!(this instanceof EA))return new EA(t);zQe.call(this,t),this._drain=s7,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};_N(EA,zQe);EA.prototype.entry=function(t,e,r){if(this._stream)throw new Error(\"already piping an entry\");if(!(this._finalized||this._destroyed)){typeof e==\"function\"&&(r=e,e=null),r||(r=s7);var s=this;if((!t.size||t.type===\"symlink\")&&(t.size=0),t.type||(t.type=gOt(t.mode)),t.mode||(t.mode=t.type===\"directory\"?pOt:hOt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e==\"string\"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return i7(s,t.size),a?process.nextTick(r):this._drain=r,new Sb}if(t.type===\"symlink\"&&!t.linkname){var n=new HN;return JQe(n,function(f){if(f)return s.destroy(),r(f);t.linkname=n.linkname,s._encode(t),r()}),n}if(this._encode(t),t.type!==\"file\"&&t.type!==\"contiguous-file\")return process.nextTick(r),new Sb;var c=new UN(this);return this._stream=c,JQe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==t.size)return s.destroy(),r(new Error(\"size mismatch\"));i7(s,t.size),s._finalizing&&s.finalize(),r()}),c}};EA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(ZQe),this.push(null))};EA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.destroy&&this._stream.destroy())};EA.prototype._encode=function(t){if(!t.pax){var e=MN.encode(t);if(e){this.push(e);return}}this._encodePax(t)};EA.prototype._encodePax=function(t){var e=MN.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:\"PaxHeader\",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:\"pax-header\",linkname:t.linkname&&\"PaxHeader\",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(MN.encode(r)),this.push(e),i7(this,e.length),r.size=t.size,r.type=t.type,this.push(MN.encode(r))};EA.prototype._read=function(t){var e=this._drain;this._drain=s7,e()};XQe.exports=EA});var eTe=L(o7=>{o7.extract=YQe();o7.pack=$Qe()});var pTe=L(Ra=>{\"use strict\";var POt=Ra&&Ra.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ra,\"__esModule\",{value:!0});Ra.Minipass=Ra.isWritable=Ra.isReadable=Ra.isStream=void 0;var lTe=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},y7=ye(\"node:events\"),ATe=POt(ye(\"node:stream\")),xOt=ye(\"node:string_decoder\"),kOt=t=>!!t&&typeof t==\"object\"&&(t instanceof zN||t instanceof ATe.default||(0,Ra.isReadable)(t)||(0,Ra.isWritable)(t));Ra.isStream=kOt;var QOt=t=>!!t&&typeof t==\"object\"&&t instanceof y7.EventEmitter&&typeof t.pipe==\"function\"&&t.pipe!==ATe.default.Writable.prototype.pipe;Ra.isReadable=QOt;var TOt=t=>!!t&&typeof t==\"object\"&&t instanceof y7.EventEmitter&&typeof t.write==\"function\"&&typeof t.end==\"function\";Ra.isWritable=TOt;var ph=Symbol(\"EOF\"),hh=Symbol(\"maybeEmitEnd\"),mg=Symbol(\"emittedEnd\"),GN=Symbol(\"emittingEnd\"),Db=Symbol(\"emittedError\"),WN=Symbol(\"closed\"),cTe=Symbol(\"read\"),YN=Symbol(\"flush\"),uTe=Symbol(\"flushChunk\"),ff=Symbol(\"encoding\"),Ww=Symbol(\"decoder\"),zs=Symbol(\"flowing\"),bb=Symbol(\"paused\"),Yw=Symbol(\"resume\"),Zs=Symbol(\"buffer\"),Ta=Symbol(\"pipes\"),Xs=Symbol(\"bufferLength\"),A7=Symbol(\"bufferPush\"),VN=Symbol(\"bufferShift\"),ia=Symbol(\"objectMode\"),ts=Symbol(\"destroyed\"),p7=Symbol(\"error\"),h7=Symbol(\"emitData\"),fTe=Symbol(\"emitEnd\"),g7=Symbol(\"emitEnd2\"),CA=Symbol(\"async\"),d7=Symbol(\"abort\"),KN=Symbol(\"aborted\"),Pb=Symbol(\"signal\"),Zm=Symbol(\"dataListeners\"),nc=Symbol(\"discarded\"),xb=t=>Promise.resolve().then(t),ROt=t=>t(),FOt=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",NOt=t=>t instanceof ArrayBuffer||!!t&&typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,OOt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),JN=class{src;dest;opts;ondrain;constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[Yw](),this.dest.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},m7=class extends JN{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}},LOt=t=>!!t.objectMode,MOt=t=>!t.objectMode&&!!t.encoding&&t.encoding!==\"buffer\",zN=class extends y7.EventEmitter{[zs]=!1;[bb]=!1;[Ta]=[];[Zs]=[];[ia];[ff];[CA];[Ww];[ph]=!1;[mg]=!1;[GN]=!1;[WN]=!1;[Db]=null;[Xs]=0;[ts]=!1;[Pb];[KN]=!1;[Zm]=0;[nc]=!1;writable=!0;readable=!0;constructor(...e){let r=e[0]||{};if(super(),r.objectMode&&typeof r.encoding==\"string\")throw new TypeError(\"Encoding and objectMode may not be used together\");LOt(r)?(this[ia]=!0,this[ff]=null):MOt(r)?(this[ff]=r.encoding,this[ia]=!1):(this[ia]=!1,this[ff]=null),this[CA]=!!r.async,this[Ww]=this[ff]?new xOt.StringDecoder(this[ff]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,\"buffer\",{get:()=>this[Zs]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,\"pipes\",{get:()=>this[Ta]});let{signal:s}=r;s&&(this[Pb]=s,s.aborted?this[d7]():s.addEventListener(\"abort\",()=>this[d7]()))}get bufferLength(){return this[Xs]}get encoding(){return this[ff]}set encoding(e){throw new Error(\"Encoding must be set at instantiation time\")}setEncoding(e){throw new Error(\"Encoding must be set at instantiation time\")}get objectMode(){return this[ia]}set objectMode(e){throw new Error(\"objectMode must be set at instantiation time\")}get async(){return this[CA]}set async(e){this[CA]=this[CA]||!!e}[d7](){this[KN]=!0,this.emit(\"abort\",this[Pb]?.reason),this.destroy(this[Pb]?.reason)}get aborted(){return this[KN]}set aborted(e){}write(e,r,s){if(this[KN])return!1;if(this[ph])throw new Error(\"write after end\");if(this[ts])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(s=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[CA]?xb:ROt;if(!this[ia]&&!Buffer.isBuffer(e)){if(OOt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(NOt(e))e=Buffer.from(e);else if(typeof e!=\"string\")throw new Error(\"Non-contiguous data written to non-objectMode stream\")}return this[ia]?(this[zs]&&this[Xs]!==0&&this[YN](!0),this[zs]?this.emit(\"data\",e):this[A7](e),this[Xs]!==0&&this.emit(\"readable\"),s&&a(s),this[zs]):e.length?(typeof e==\"string\"&&!(r===this[ff]&&!this[Ww]?.lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ff]&&(e=this[Ww].write(e)),this[zs]&&this[Xs]!==0&&this[YN](!0),this[zs]?this.emit(\"data\",e):this[A7](e),this[Xs]!==0&&this.emit(\"readable\"),s&&a(s),this[zs]):(this[Xs]!==0&&this.emit(\"readable\"),s&&a(s),this[zs])}read(e){if(this[ts])return null;if(this[nc]=!1,this[Xs]===0||e===0||e&&e>this[Xs])return this[hh](),null;this[ia]&&(e=null),this[Zs].length>1&&!this[ia]&&(this[Zs]=[this[ff]?this[Zs].join(\"\"):Buffer.concat(this[Zs],this[Xs])]);let r=this[cTe](e||null,this[Zs][0]);return this[hh](),r}[cTe](e,r){if(this[ia])this[VN]();else{let s=r;e===s.length||e===null?this[VN]():typeof s==\"string\"?(this[Zs][0]=s.slice(e),r=s.slice(0,e),this[Xs]-=e):(this[Zs][0]=s.subarray(e),r=s.subarray(0,e),this[Xs]-=e)}return this.emit(\"data\",r),!this[Zs].length&&!this[ph]&&this.emit(\"drain\"),r}end(e,r,s){return typeof e==\"function\"&&(s=e,e=void 0),typeof r==\"function\"&&(s=r,r=\"utf8\"),e!==void 0&&this.write(e,r),s&&this.once(\"end\",s),this[ph]=!0,this.writable=!1,(this[zs]||!this[bb])&&this[hh](),this}[Yw](){this[ts]||(!this[Zm]&&!this[Ta].length&&(this[nc]=!0),this[bb]=!1,this[zs]=!0,this.emit(\"resume\"),this[Zs].length?this[YN]():this[ph]?this[hh]():this.emit(\"drain\"))}resume(){return this[Yw]()}pause(){this[zs]=!1,this[bb]=!0,this[nc]=!1}get destroyed(){return this[ts]}get flowing(){return this[zs]}get paused(){return this[bb]}[A7](e){this[ia]?this[Xs]+=1:this[Xs]+=e.length,this[Zs].push(e)}[VN](){return this[ia]?this[Xs]-=1:this[Xs]-=this[Zs][0].length,this[Zs].shift()}[YN](e=!1){do;while(this[uTe](this[VN]())&&this[Zs].length);!e&&!this[Zs].length&&!this[ph]&&this.emit(\"drain\")}[uTe](e){return this.emit(\"data\",e),this[zs]}pipe(e,r){if(this[ts])return e;this[nc]=!1;let s=this[mg];return r=r||{},e===lTe.stdout||e===lTe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this[Ta].push(r.proxyErrors?new m7(this,e,r):new JN(this,e,r)),this[CA]?xb(()=>this[Yw]()):this[Yw]()),e}unpipe(e){let r=this[Ta].find(s=>s.dest===e);r&&(this[Ta].length===1?(this[zs]&&this[Zm]===0&&(this[zs]=!1),this[Ta]=[]):this[Ta].splice(this[Ta].indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);if(e===\"data\")this[nc]=!1,this[Zm]++,!this[Ta].length&&!this[zs]&&this[Yw]();else if(e===\"readable\"&&this[Xs]!==0)super.emit(\"readable\");else if(FOt(e)&&this[mg])super.emit(e),this.removeAllListeners(e);else if(e===\"error\"&&this[Db]){let a=r;this[CA]?xb(()=>a.call(this,this[Db])):a.call(this,this[Db])}return s}removeListener(e,r){return this.off(e,r)}off(e,r){let s=super.off(e,r);return e===\"data\"&&(this[Zm]=this.listeners(\"data\").length,this[Zm]===0&&!this[nc]&&!this[Ta].length&&(this[zs]=!1)),s}removeAllListeners(e){let r=super.removeAllListeners(e);return(e===\"data\"||e===void 0)&&(this[Zm]=0,!this[nc]&&!this[Ta].length&&(this[zs]=!1)),r}get emittedEnd(){return this[mg]}[hh](){!this[GN]&&!this[mg]&&!this[ts]&&this[Zs].length===0&&this[ph]&&(this[GN]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[WN]&&this.emit(\"close\"),this[GN]=!1)}emit(e,...r){let s=r[0];if(e!==\"error\"&&e!==\"close\"&&e!==ts&&this[ts])return!1;if(e===\"data\")return!this[ia]&&!s?!1:this[CA]?(xb(()=>this[h7](s)),!0):this[h7](s);if(e===\"end\")return this[fTe]();if(e===\"close\"){if(this[WN]=!0,!this[mg]&&!this[ts])return!1;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[Db]=s,super.emit(p7,s);let n=!this[Pb]||this.listeners(\"error\").length?super.emit(\"error\",s):!1;return this[hh](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[hh](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,...r);return this[hh](),a}[h7](e){for(let s of this[Ta])s.dest.write(e)===!1&&this.pause();let r=this[nc]?!1:super.emit(\"data\",e);return this[hh](),r}[fTe](){return this[mg]?!1:(this[mg]=!0,this.readable=!1,this[CA]?(xb(()=>this[g7]()),!0):this[g7]())}[g7](){if(this[Ww]){let r=this[Ww].end();if(r){for(let s of this[Ta])s.dest.write(r);this[nc]||super.emit(\"data\",r)}}for(let r of this[Ta])r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}async collect(){let e=Object.assign([],{dataLength:0});this[ia]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",s=>{e.push(s),this[ia]||(e.dataLength+=s.length)}),await r,e}async concat(){if(this[ia])throw new Error(\"cannot concat in objectMode\");let e=await this.collect();return this[ff]?e.join(\"\"):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,r)=>{this.on(ts,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",s=>r(s)),this.on(\"end\",()=>e())})}[Symbol.asyncIterator](){this[nc]=!1;let e=!1,r=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[ph])return r();let n,c,f=C=>{this.off(\"data\",p),this.off(\"end\",h),this.off(ts,E),r(),c(C)},p=C=>{this.off(\"error\",f),this.off(\"end\",h),this.off(ts,E),this.pause(),n({value:C,done:!!this[ph]})},h=()=>{this.off(\"error\",f),this.off(\"data\",p),this.off(ts,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error(\"stream destroyed\"));return new Promise((C,S)=>{c=S,n=C,this.once(ts,E),this.once(\"error\",f),this.once(\"end\",h),this.once(\"data\",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[nc]=!1;let e=!1,r=()=>(this.pause(),this.off(p7,r),this.off(ts,r),this.off(\"end\",r),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once(\"end\",r),this.once(p7,r),this.once(ts,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(e){if(this[ts])return e?this.emit(\"error\",e):this.emit(ts),this;this[ts]=!0,this[nc]=!0,this[Zs].length=0,this[Xs]=0;let r=this;return typeof r.close==\"function\"&&!this[WN]&&r.close(),e?this.emit(\"error\",e):this.emit(ts),this}static get isStream(){return Ra.isStream}};Ra.Minipass=zN});var dTe=L((YIr,wA)=>{\"use strict\";var Qb=ye(\"crypto\"),{Minipass:_Ot}=pTe(),I7=[\"sha512\",\"sha384\",\"sha256\"],w7=[\"sha512\"],UOt=/^[a-z0-9+/]+(?:=?=?)$/i,HOt=/^([a-z0-9]+)-([^?]+)([?\\S*]*)$/,jOt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)?$/,qOt=/^[\\x21-\\x7E]+$/,Tb=t=>t?.length?`?${t.join(\"?\")}`:\"\",C7=class extends _Ot{#t;#r;#i;constructor(e){super(),this.size=0,this.opts=e,this.#e(),e?.algorithms?this.algorithms=[...e.algorithms]:this.algorithms=[...w7],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(Qb.createHash)}#e(){this.sri=this.opts?.integrity?ic(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=Tb(this.opts?.options)}on(e,r){return e===\"size\"&&this.#r?r(this.#r):e===\"integrity\"&&this.#t?r(this.#t):e===\"verified\"&&this.#i?r(this.#i):super.on(e,r)}emit(e,r){return e===\"end\"&&this.#n(),super.emit(e,r)}write(e){return this.size+=e.length,this.hashes.forEach(r=>r.update(e)),super.write(e)}#n(){this.goodSri||this.#e();let e=ic(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest(\"base64\")}${this.optString}`).join(\" \"),this.opts),r=this.goodSri&&e.match(this.sri,this.opts);if(typeof this.expectedSize==\"number\"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}.\n  Wanted: ${this.expectedSize}\n  Found: ${this.size}`);s.code=\"EBADSIZE\",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit(\"error\",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code=\"EINTEGRITY\",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit(\"error\",s)}else this.#r=this.size,this.emit(\"size\",this.size),this.#t=e,this.emit(\"integrity\",e),r&&(this.#i=r,this.emit(\"verified\",r))}},gh=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest=\"\",this.algorithm=\"\",this.options=[];let a=this.source.match(s?jOt:HOt);if(!a||s&&!I7.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split(\"?\"))}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}match(e,r){let s=ic(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(I7.includes(this.algorithm)&&this.digest.match(UOt)&&this.options.every(r=>r.match(qOt)))?\"\":`${this.algorithm}-${this.digest}${Tb(this.options)}`}};function hTe(t,e,r,s){let a=t!==\"\",n=!1,c=\"\",f=s.length-1;for(let h=0;h<f;h++){let E=gh.prototype.toString.call(s[h],r);E&&(n=!0,c+=E,c+=e)}let p=gh.prototype.toString.call(s[f],r);return p&&(n=!0,c+=p),a&&n?t+e+c:t+c}var Xm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}isEmpty(){return Object.keys(this).length===0}toString(e){let r=e?.sep||\" \",s=\"\";if(e?.strict){r=r.replace(/\\S+/g,\" \");for(let a of I7)this[a]&&(s=hTe(s,r,e,this[a]))}else for(let a of Object.keys(this))s=hTe(s,r,e,this[a]);return s}concat(e,r){let s=typeof e==\"string\"?e:kb(e,r);return ic(`${this.toString(r)} ${s}`,r)}hexDigest(){return ic(this,{single:!0}).hexDigest()}merge(e,r){let s=ic(e,r);for(let a in s)if(this[a]){if(!this[a].find(n=>s[a].find(c=>n.digest===c.digest)))throw new Error(\"hashes do not match, cannot update integrity\")}else this[a]=s[a]}match(e,r){let s=ic(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||ZOt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};wA.exports.parse=ic;function ic(t,e){if(!t)return null;if(typeof t==\"string\")return E7(t,e);if(t.algorithm&&t.digest){let r=new Xm;return r[t.algorithm]=[t],E7(kb(r,e),e)}else return E7(kb(t,e),e)}function E7(t,e){if(e?.single)return new gh(t,e);let r=t.trim().split(/\\s+/).reduce((s,a)=>{let n=new gh(a,e);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new Xm);return r.isEmpty()?null:r}wA.exports.stringify=kb;function kb(t,e){return t.algorithm&&t.digest?gh.prototype.toString.call(t,e):typeof t==\"string\"?kb(ic(t,e),e):Xm.prototype.toString.call(t,e)}wA.exports.fromHex=GOt;function GOt(t,e,r){let s=Tb(r?.options);return ic(`${e}-${Buffer.from(t,\"hex\").toString(\"base64\")}${s}`,r)}wA.exports.fromData=WOt;function WOt(t,e){let r=e?.algorithms||[...w7],s=Tb(e?.options);return r.reduce((a,n)=>{let c=Qb.createHash(n).update(t).digest(\"base64\"),f=new gh(`${n}-${c}${s}`,e);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new Xm)}wA.exports.fromStream=YOt;function YOt(t,e){let r=B7(e);return new Promise((s,a)=>{t.pipe(r),t.on(\"error\",a),r.on(\"error\",a);let n;r.on(\"integrity\",c=>{n=c}),r.on(\"end\",()=>s(n)),r.resume()})}wA.exports.checkData=VOt;function VOt(t,e,r){if(e=ic(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let s=e.pickAlgorithm(r),a=Qb.createHash(s).update(t).digest(\"base64\"),n=ic({algorithm:s,digest:a}),c=n.match(e,r);if(r=r||{},c||!r.error)return c;if(typeof r.size==\"number\"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}.\n  Wanted: ${r.size}\n  Found: ${t.length}`);throw f.code=\"EBADSIZE\",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code=\"EINTEGRITY\",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}wA.exports.checkStream=KOt;function KOt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=ic(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"}));let s=B7(r);return new Promise((a,n)=>{t.pipe(s),t.on(\"error\",n),s.on(\"error\",n);let c;s.on(\"verified\",f=>{c=f}),s.on(\"end\",()=>a(c)),s.resume()})}wA.exports.integrityStream=B7;function B7(t=Object.create(null)){return new C7(t)}wA.exports.create=JOt;function JOt(t){let e=t?.algorithms||[...w7],r=Tb(t?.options),s=e.map(Qb.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return e.reduce((n,c)=>{let f=s.shift().digest(\"base64\"),p=new gh(`${c}-${f}${r}`,t);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new Xm)}}}var zOt=Qb.getHashes(),gTe=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(t=>zOt.includes(t));function ZOt(t,e){return gTe.indexOf(t.toLowerCase())>=gTe.indexOf(e.toLowerCase())?t:e}});var v7=L(yg=>{\"use strict\";Object.defineProperty(yg,\"__esModule\",{value:!0});yg.Signature=yg.Envelope=void 0;yg.Envelope={fromJSON(t){return{payload:ZN(t.payload)?Buffer.from(mTe(t.payload)):Buffer.alloc(0),payloadType:ZN(t.payloadType)?globalThis.String(t.payloadType):\"\",signatures:globalThis.Array.isArray(t?.signatures)?t.signatures.map(e=>yg.Signature.fromJSON(e)):[]}},toJSON(t){let e={};return t.payload.length!==0&&(e.payload=yTe(t.payload)),t.payloadType!==\"\"&&(e.payloadType=t.payloadType),t.signatures?.length&&(e.signatures=t.signatures.map(r=>yg.Signature.toJSON(r))),e}};yg.Signature={fromJSON(t){return{sig:ZN(t.sig)?Buffer.from(mTe(t.sig)):Buffer.alloc(0),keyid:ZN(t.keyid)?globalThis.String(t.keyid):\"\"}},toJSON(t){let e={};return t.sig.length!==0&&(e.sig=yTe(t.sig)),t.keyid!==\"\"&&(e.keyid=t.keyid),e}};function mTe(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function yTe(t){return globalThis.Buffer.from(t).toString(\"base64\")}function ZN(t){return t!=null}});var ITe=L(XN=>{\"use strict\";Object.defineProperty(XN,\"__esModule\",{value:!0});XN.Timestamp=void 0;XN.Timestamp={fromJSON(t){return{seconds:ETe(t.seconds)?globalThis.String(t.seconds):\"0\",nanos:ETe(t.nanos)?globalThis.Number(t.nanos):0}},toJSON(t){let e={};return t.seconds!==\"0\"&&(e.seconds=t.seconds),t.nanos!==0&&(e.nanos=Math.round(t.nanos)),e}};function ETe(t){return t!=null}});var Vw=L(_r=>{\"use strict\";Object.defineProperty(_r,\"__esModule\",{value:!0});_r.TimeRange=_r.X509CertificateChain=_r.SubjectAlternativeName=_r.X509Certificate=_r.DistinguishedName=_r.ObjectIdentifierValuePair=_r.ObjectIdentifier=_r.PublicKeyIdentifier=_r.PublicKey=_r.RFC3161SignedTimestamp=_r.LogId=_r.MessageSignature=_r.HashOutput=_r.SubjectAlternativeNameType=_r.PublicKeyDetails=_r.HashAlgorithm=void 0;_r.hashAlgorithmFromJSON=wTe;_r.hashAlgorithmToJSON=BTe;_r.publicKeyDetailsFromJSON=vTe;_r.publicKeyDetailsToJSON=STe;_r.subjectAlternativeNameTypeFromJSON=DTe;_r.subjectAlternativeNameTypeToJSON=bTe;var XOt=ITe(),El;(function(t){t[t.HASH_ALGORITHM_UNSPECIFIED=0]=\"HASH_ALGORITHM_UNSPECIFIED\",t[t.SHA2_256=1]=\"SHA2_256\",t[t.SHA2_384=2]=\"SHA2_384\",t[t.SHA2_512=3]=\"SHA2_512\",t[t.SHA3_256=4]=\"SHA3_256\",t[t.SHA3_384=5]=\"SHA3_384\"})(El||(_r.HashAlgorithm=El={}));function wTe(t){switch(t){case 0:case\"HASH_ALGORITHM_UNSPECIFIED\":return El.HASH_ALGORITHM_UNSPECIFIED;case 1:case\"SHA2_256\":return El.SHA2_256;case 2:case\"SHA2_384\":return El.SHA2_384;case 3:case\"SHA2_512\":return El.SHA2_512;case 4:case\"SHA3_256\":return El.SHA3_256;case 5:case\"SHA3_384\":return El.SHA3_384;default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum HashAlgorithm\")}}function BTe(t){switch(t){case El.HASH_ALGORITHM_UNSPECIFIED:return\"HASH_ALGORITHM_UNSPECIFIED\";case El.SHA2_256:return\"SHA2_256\";case El.SHA2_384:return\"SHA2_384\";case El.SHA2_512:return\"SHA2_512\";case El.SHA3_256:return\"SHA3_256\";case El.SHA3_384:return\"SHA3_384\";default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum HashAlgorithm\")}}var rn;(function(t){t[t.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]=\"PUBLIC_KEY_DETAILS_UNSPECIFIED\",t[t.PKCS1_RSA_PKCS1V5=1]=\"PKCS1_RSA_PKCS1V5\",t[t.PKCS1_RSA_PSS=2]=\"PKCS1_RSA_PSS\",t[t.PKIX_RSA_PKCS1V5=3]=\"PKIX_RSA_PKCS1V5\",t[t.PKIX_RSA_PSS=4]=\"PKIX_RSA_PSS\",t[t.PKIX_RSA_PKCS1V15_2048_SHA256=9]=\"PKIX_RSA_PKCS1V15_2048_SHA256\",t[t.PKIX_RSA_PKCS1V15_3072_SHA256=10]=\"PKIX_RSA_PKCS1V15_3072_SHA256\",t[t.PKIX_RSA_PKCS1V15_4096_SHA256=11]=\"PKIX_RSA_PKCS1V15_4096_SHA256\",t[t.PKIX_RSA_PSS_2048_SHA256=16]=\"PKIX_RSA_PSS_2048_SHA256\",t[t.PKIX_RSA_PSS_3072_SHA256=17]=\"PKIX_RSA_PSS_3072_SHA256\",t[t.PKIX_RSA_PSS_4096_SHA256=18]=\"PKIX_RSA_PSS_4096_SHA256\",t[t.PKIX_ECDSA_P256_HMAC_SHA_256=6]=\"PKIX_ECDSA_P256_HMAC_SHA_256\",t[t.PKIX_ECDSA_P256_SHA_256=5]=\"PKIX_ECDSA_P256_SHA_256\",t[t.PKIX_ECDSA_P384_SHA_384=12]=\"PKIX_ECDSA_P384_SHA_384\",t[t.PKIX_ECDSA_P521_SHA_512=13]=\"PKIX_ECDSA_P521_SHA_512\",t[t.PKIX_ED25519=7]=\"PKIX_ED25519\",t[t.PKIX_ED25519_PH=8]=\"PKIX_ED25519_PH\",t[t.LMS_SHA256=14]=\"LMS_SHA256\",t[t.LMOTS_SHA256=15]=\"LMOTS_SHA256\"})(rn||(_r.PublicKeyDetails=rn={}));function vTe(t){switch(t){case 0:case\"PUBLIC_KEY_DETAILS_UNSPECIFIED\":return rn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case\"PKCS1_RSA_PKCS1V5\":return rn.PKCS1_RSA_PKCS1V5;case 2:case\"PKCS1_RSA_PSS\":return rn.PKCS1_RSA_PSS;case 3:case\"PKIX_RSA_PKCS1V5\":return rn.PKIX_RSA_PKCS1V5;case 4:case\"PKIX_RSA_PSS\":return rn.PKIX_RSA_PSS;case 9:case\"PKIX_RSA_PKCS1V15_2048_SHA256\":return rn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case\"PKIX_RSA_PKCS1V15_3072_SHA256\":return rn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case\"PKIX_RSA_PKCS1V15_4096_SHA256\":return rn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case\"PKIX_RSA_PSS_2048_SHA256\":return rn.PKIX_RSA_PSS_2048_SHA256;case 17:case\"PKIX_RSA_PSS_3072_SHA256\":return rn.PKIX_RSA_PSS_3072_SHA256;case 18:case\"PKIX_RSA_PSS_4096_SHA256\":return rn.PKIX_RSA_PSS_4096_SHA256;case 6:case\"PKIX_ECDSA_P256_HMAC_SHA_256\":return rn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case\"PKIX_ECDSA_P256_SHA_256\":return rn.PKIX_ECDSA_P256_SHA_256;case 12:case\"PKIX_ECDSA_P384_SHA_384\":return rn.PKIX_ECDSA_P384_SHA_384;case 13:case\"PKIX_ECDSA_P521_SHA_512\":return rn.PKIX_ECDSA_P521_SHA_512;case 7:case\"PKIX_ED25519\":return rn.PKIX_ED25519;case 8:case\"PKIX_ED25519_PH\":return rn.PKIX_ED25519_PH;case 14:case\"LMS_SHA256\":return rn.LMS_SHA256;case 15:case\"LMOTS_SHA256\":return rn.LMOTS_SHA256;default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum PublicKeyDetails\")}}function STe(t){switch(t){case rn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return\"PUBLIC_KEY_DETAILS_UNSPECIFIED\";case rn.PKCS1_RSA_PKCS1V5:return\"PKCS1_RSA_PKCS1V5\";case rn.PKCS1_RSA_PSS:return\"PKCS1_RSA_PSS\";case rn.PKIX_RSA_PKCS1V5:return\"PKIX_RSA_PKCS1V5\";case rn.PKIX_RSA_PSS:return\"PKIX_RSA_PSS\";case rn.PKIX_RSA_PKCS1V15_2048_SHA256:return\"PKIX_RSA_PKCS1V15_2048_SHA256\";case rn.PKIX_RSA_PKCS1V15_3072_SHA256:return\"PKIX_RSA_PKCS1V15_3072_SHA256\";case rn.PKIX_RSA_PKCS1V15_4096_SHA256:return\"PKIX_RSA_PKCS1V15_4096_SHA256\";case rn.PKIX_RSA_PSS_2048_SHA256:return\"PKIX_RSA_PSS_2048_SHA256\";case rn.PKIX_RSA_PSS_3072_SHA256:return\"PKIX_RSA_PSS_3072_SHA256\";case rn.PKIX_RSA_PSS_4096_SHA256:return\"PKIX_RSA_PSS_4096_SHA256\";case rn.PKIX_ECDSA_P256_HMAC_SHA_256:return\"PKIX_ECDSA_P256_HMAC_SHA_256\";case rn.PKIX_ECDSA_P256_SHA_256:return\"PKIX_ECDSA_P256_SHA_256\";case rn.PKIX_ECDSA_P384_SHA_384:return\"PKIX_ECDSA_P384_SHA_384\";case rn.PKIX_ECDSA_P521_SHA_512:return\"PKIX_ECDSA_P521_SHA_512\";case rn.PKIX_ED25519:return\"PKIX_ED25519\";case rn.PKIX_ED25519_PH:return\"PKIX_ED25519_PH\";case rn.LMS_SHA256:return\"LMS_SHA256\";case rn.LMOTS_SHA256:return\"LMOTS_SHA256\";default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum PublicKeyDetails\")}}var BA;(function(t){t[t.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]=\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\",t[t.EMAIL=1]=\"EMAIL\",t[t.URI=2]=\"URI\",t[t.OTHER_NAME=3]=\"OTHER_NAME\"})(BA||(_r.SubjectAlternativeNameType=BA={}));function DTe(t){switch(t){case 0:case\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\":return BA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case\"EMAIL\":return BA.EMAIL;case 2:case\"URI\":return BA.URI;case 3:case\"OTHER_NAME\":return BA.OTHER_NAME;default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum SubjectAlternativeNameType\")}}function bTe(t){switch(t){case BA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\";case BA.EMAIL:return\"EMAIL\";case BA.URI:return\"URI\";case BA.OTHER_NAME:return\"OTHER_NAME\";default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum SubjectAlternativeNameType\")}}_r.HashOutput={fromJSON(t){return{algorithm:ms(t.algorithm)?wTe(t.algorithm):0,digest:ms(t.digest)?Buffer.from($m(t.digest)):Buffer.alloc(0)}},toJSON(t){let e={};return t.algorithm!==0&&(e.algorithm=BTe(t.algorithm)),t.digest.length!==0&&(e.digest=ey(t.digest)),e}};_r.MessageSignature={fromJSON(t){return{messageDigest:ms(t.messageDigest)?_r.HashOutput.fromJSON(t.messageDigest):void 0,signature:ms(t.signature)?Buffer.from($m(t.signature)):Buffer.alloc(0)}},toJSON(t){let e={};return t.messageDigest!==void 0&&(e.messageDigest=_r.HashOutput.toJSON(t.messageDigest)),t.signature.length!==0&&(e.signature=ey(t.signature)),e}};_r.LogId={fromJSON(t){return{keyId:ms(t.keyId)?Buffer.from($m(t.keyId)):Buffer.alloc(0)}},toJSON(t){let e={};return t.keyId.length!==0&&(e.keyId=ey(t.keyId)),e}};_r.RFC3161SignedTimestamp={fromJSON(t){return{signedTimestamp:ms(t.signedTimestamp)?Buffer.from($m(t.signedTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedTimestamp.length!==0&&(e.signedTimestamp=ey(t.signedTimestamp)),e}};_r.PublicKey={fromJSON(t){return{rawBytes:ms(t.rawBytes)?Buffer.from($m(t.rawBytes)):void 0,keyDetails:ms(t.keyDetails)?vTe(t.keyDetails):0,validFor:ms(t.validFor)?_r.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.rawBytes!==void 0&&(e.rawBytes=ey(t.rawBytes)),t.keyDetails!==0&&(e.keyDetails=STe(t.keyDetails)),t.validFor!==void 0&&(e.validFor=_r.TimeRange.toJSON(t.validFor)),e}};_r.PublicKeyIdentifier={fromJSON(t){return{hint:ms(t.hint)?globalThis.String(t.hint):\"\"}},toJSON(t){let e={};return t.hint!==\"\"&&(e.hint=t.hint),e}};_r.ObjectIdentifier={fromJSON(t){return{id:globalThis.Array.isArray(t?.id)?t.id.map(e=>globalThis.Number(e)):[]}},toJSON(t){let e={};return t.id?.length&&(e.id=t.id.map(r=>Math.round(r))),e}};_r.ObjectIdentifierValuePair={fromJSON(t){return{oid:ms(t.oid)?_r.ObjectIdentifier.fromJSON(t.oid):void 0,value:ms(t.value)?Buffer.from($m(t.value)):Buffer.alloc(0)}},toJSON(t){let e={};return t.oid!==void 0&&(e.oid=_r.ObjectIdentifier.toJSON(t.oid)),t.value.length!==0&&(e.value=ey(t.value)),e}};_r.DistinguishedName={fromJSON(t){return{organization:ms(t.organization)?globalThis.String(t.organization):\"\",commonName:ms(t.commonName)?globalThis.String(t.commonName):\"\"}},toJSON(t){let e={};return t.organization!==\"\"&&(e.organization=t.organization),t.commonName!==\"\"&&(e.commonName=t.commonName),e}};_r.X509Certificate={fromJSON(t){return{rawBytes:ms(t.rawBytes)?Buffer.from($m(t.rawBytes)):Buffer.alloc(0)}},toJSON(t){let e={};return t.rawBytes.length!==0&&(e.rawBytes=ey(t.rawBytes)),e}};_r.SubjectAlternativeName={fromJSON(t){return{type:ms(t.type)?DTe(t.type):0,identity:ms(t.regexp)?{$case:\"regexp\",regexp:globalThis.String(t.regexp)}:ms(t.value)?{$case:\"value\",value:globalThis.String(t.value)}:void 0}},toJSON(t){let e={};return t.type!==0&&(e.type=bTe(t.type)),t.identity?.$case===\"regexp\"?e.regexp=t.identity.regexp:t.identity?.$case===\"value\"&&(e.value=t.identity.value),e}};_r.X509CertificateChain={fromJSON(t){return{certificates:globalThis.Array.isArray(t?.certificates)?t.certificates.map(e=>_r.X509Certificate.fromJSON(e)):[]}},toJSON(t){let e={};return t.certificates?.length&&(e.certificates=t.certificates.map(r=>_r.X509Certificate.toJSON(r))),e}};_r.TimeRange={fromJSON(t){return{start:ms(t.start)?CTe(t.start):void 0,end:ms(t.end)?CTe(t.end):void 0}},toJSON(t){let e={};return t.start!==void 0&&(e.start=t.start.toISOString()),t.end!==void 0&&(e.end=t.end.toISOString()),e}};function $m(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function ey(t){return globalThis.Buffer.from(t).toString(\"base64\")}function $Ot(t){let e=(globalThis.Number(t.seconds)||0)*1e3;return e+=(t.nanos||0)/1e6,new globalThis.Date(e)}function CTe(t){return t instanceof globalThis.Date?t:typeof t==\"string\"?new globalThis.Date(t):$Ot(XOt.Timestamp.fromJSON(t))}function ms(t){return t!=null}});var S7=L(ys=>{\"use strict\";Object.defineProperty(ys,\"__esModule\",{value:!0});ys.TransparencyLogEntry=ys.InclusionPromise=ys.InclusionProof=ys.Checkpoint=ys.KindVersion=void 0;var PTe=Vw();ys.KindVersion={fromJSON(t){return{kind:Fa(t.kind)?globalThis.String(t.kind):\"\",version:Fa(t.version)?globalThis.String(t.version):\"\"}},toJSON(t){let e={};return t.kind!==\"\"&&(e.kind=t.kind),t.version!==\"\"&&(e.version=t.version),e}};ys.Checkpoint={fromJSON(t){return{envelope:Fa(t.envelope)?globalThis.String(t.envelope):\"\"}},toJSON(t){let e={};return t.envelope!==\"\"&&(e.envelope=t.envelope),e}};ys.InclusionProof={fromJSON(t){return{logIndex:Fa(t.logIndex)?globalThis.String(t.logIndex):\"0\",rootHash:Fa(t.rootHash)?Buffer.from($N(t.rootHash)):Buffer.alloc(0),treeSize:Fa(t.treeSize)?globalThis.String(t.treeSize):\"0\",hashes:globalThis.Array.isArray(t?.hashes)?t.hashes.map(e=>Buffer.from($N(e))):[],checkpoint:Fa(t.checkpoint)?ys.Checkpoint.fromJSON(t.checkpoint):void 0}},toJSON(t){let e={};return t.logIndex!==\"0\"&&(e.logIndex=t.logIndex),t.rootHash.length!==0&&(e.rootHash=eO(t.rootHash)),t.treeSize!==\"0\"&&(e.treeSize=t.treeSize),t.hashes?.length&&(e.hashes=t.hashes.map(r=>eO(r))),t.checkpoint!==void 0&&(e.checkpoint=ys.Checkpoint.toJSON(t.checkpoint)),e}};ys.InclusionPromise={fromJSON(t){return{signedEntryTimestamp:Fa(t.signedEntryTimestamp)?Buffer.from($N(t.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedEntryTimestamp.length!==0&&(e.signedEntryTimestamp=eO(t.signedEntryTimestamp)),e}};ys.TransparencyLogEntry={fromJSON(t){return{logIndex:Fa(t.logIndex)?globalThis.String(t.logIndex):\"0\",logId:Fa(t.logId)?PTe.LogId.fromJSON(t.logId):void 0,kindVersion:Fa(t.kindVersion)?ys.KindVersion.fromJSON(t.kindVersion):void 0,integratedTime:Fa(t.integratedTime)?globalThis.String(t.integratedTime):\"0\",inclusionPromise:Fa(t.inclusionPromise)?ys.InclusionPromise.fromJSON(t.inclusionPromise):void 0,inclusionProof:Fa(t.inclusionProof)?ys.InclusionProof.fromJSON(t.inclusionProof):void 0,canonicalizedBody:Fa(t.canonicalizedBody)?Buffer.from($N(t.canonicalizedBody)):Buffer.alloc(0)}},toJSON(t){let e={};return t.logIndex!==\"0\"&&(e.logIndex=t.logIndex),t.logId!==void 0&&(e.logId=PTe.LogId.toJSON(t.logId)),t.kindVersion!==void 0&&(e.kindVersion=ys.KindVersion.toJSON(t.kindVersion)),t.integratedTime!==\"0\"&&(e.integratedTime=t.integratedTime),t.inclusionPromise!==void 0&&(e.inclusionPromise=ys.InclusionPromise.toJSON(t.inclusionPromise)),t.inclusionProof!==void 0&&(e.inclusionProof=ys.InclusionProof.toJSON(t.inclusionProof)),t.canonicalizedBody.length!==0&&(e.canonicalizedBody=eO(t.canonicalizedBody)),e}};function $N(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function eO(t){return globalThis.Buffer.from(t).toString(\"base64\")}function Fa(t){return t!=null}});var D7=L($c=>{\"use strict\";Object.defineProperty($c,\"__esModule\",{value:!0});$c.Bundle=$c.VerificationMaterial=$c.TimestampVerificationData=void 0;var xTe=v7(),vA=Vw(),kTe=S7();$c.TimestampVerificationData={fromJSON(t){return{rfc3161Timestamps:globalThis.Array.isArray(t?.rfc3161Timestamps)?t.rfc3161Timestamps.map(e=>vA.RFC3161SignedTimestamp.fromJSON(e)):[]}},toJSON(t){let e={};return t.rfc3161Timestamps?.length&&(e.rfc3161Timestamps=t.rfc3161Timestamps.map(r=>vA.RFC3161SignedTimestamp.toJSON(r))),e}};$c.VerificationMaterial={fromJSON(t){return{content:Eg(t.publicKey)?{$case:\"publicKey\",publicKey:vA.PublicKeyIdentifier.fromJSON(t.publicKey)}:Eg(t.x509CertificateChain)?{$case:\"x509CertificateChain\",x509CertificateChain:vA.X509CertificateChain.fromJSON(t.x509CertificateChain)}:Eg(t.certificate)?{$case:\"certificate\",certificate:vA.X509Certificate.fromJSON(t.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(t?.tlogEntries)?t.tlogEntries.map(e=>kTe.TransparencyLogEntry.fromJSON(e)):[],timestampVerificationData:Eg(t.timestampVerificationData)?$c.TimestampVerificationData.fromJSON(t.timestampVerificationData):void 0}},toJSON(t){let e={};return t.content?.$case===\"publicKey\"?e.publicKey=vA.PublicKeyIdentifier.toJSON(t.content.publicKey):t.content?.$case===\"x509CertificateChain\"?e.x509CertificateChain=vA.X509CertificateChain.toJSON(t.content.x509CertificateChain):t.content?.$case===\"certificate\"&&(e.certificate=vA.X509Certificate.toJSON(t.content.certificate)),t.tlogEntries?.length&&(e.tlogEntries=t.tlogEntries.map(r=>kTe.TransparencyLogEntry.toJSON(r))),t.timestampVerificationData!==void 0&&(e.timestampVerificationData=$c.TimestampVerificationData.toJSON(t.timestampVerificationData)),e}};$c.Bundle={fromJSON(t){return{mediaType:Eg(t.mediaType)?globalThis.String(t.mediaType):\"\",verificationMaterial:Eg(t.verificationMaterial)?$c.VerificationMaterial.fromJSON(t.verificationMaterial):void 0,content:Eg(t.messageSignature)?{$case:\"messageSignature\",messageSignature:vA.MessageSignature.fromJSON(t.messageSignature)}:Eg(t.dsseEnvelope)?{$case:\"dsseEnvelope\",dsseEnvelope:xTe.Envelope.fromJSON(t.dsseEnvelope)}:void 0}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.verificationMaterial!==void 0&&(e.verificationMaterial=$c.VerificationMaterial.toJSON(t.verificationMaterial)),t.content?.$case===\"messageSignature\"?e.messageSignature=vA.MessageSignature.toJSON(t.content.messageSignature):t.content?.$case===\"dsseEnvelope\"&&(e.dsseEnvelope=xTe.Envelope.toJSON(t.content.dsseEnvelope)),e}};function Eg(t){return t!=null}});var b7=L(Ti=>{\"use strict\";Object.defineProperty(Ti,\"__esModule\",{value:!0});Ti.ClientTrustConfig=Ti.SigningConfig=Ti.TrustedRoot=Ti.CertificateAuthority=Ti.TransparencyLogInstance=void 0;var Il=Vw();Ti.TransparencyLogInstance={fromJSON(t){return{baseUrl:sa(t.baseUrl)?globalThis.String(t.baseUrl):\"\",hashAlgorithm:sa(t.hashAlgorithm)?(0,Il.hashAlgorithmFromJSON)(t.hashAlgorithm):0,publicKey:sa(t.publicKey)?Il.PublicKey.fromJSON(t.publicKey):void 0,logId:sa(t.logId)?Il.LogId.fromJSON(t.logId):void 0,checkpointKeyId:sa(t.checkpointKeyId)?Il.LogId.fromJSON(t.checkpointKeyId):void 0}},toJSON(t){let e={};return t.baseUrl!==\"\"&&(e.baseUrl=t.baseUrl),t.hashAlgorithm!==0&&(e.hashAlgorithm=(0,Il.hashAlgorithmToJSON)(t.hashAlgorithm)),t.publicKey!==void 0&&(e.publicKey=Il.PublicKey.toJSON(t.publicKey)),t.logId!==void 0&&(e.logId=Il.LogId.toJSON(t.logId)),t.checkpointKeyId!==void 0&&(e.checkpointKeyId=Il.LogId.toJSON(t.checkpointKeyId)),e}};Ti.CertificateAuthority={fromJSON(t){return{subject:sa(t.subject)?Il.DistinguishedName.fromJSON(t.subject):void 0,uri:sa(t.uri)?globalThis.String(t.uri):\"\",certChain:sa(t.certChain)?Il.X509CertificateChain.fromJSON(t.certChain):void 0,validFor:sa(t.validFor)?Il.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.subject!==void 0&&(e.subject=Il.DistinguishedName.toJSON(t.subject)),t.uri!==\"\"&&(e.uri=t.uri),t.certChain!==void 0&&(e.certChain=Il.X509CertificateChain.toJSON(t.certChain)),t.validFor!==void 0&&(e.validFor=Il.TimeRange.toJSON(t.validFor)),e}};Ti.TrustedRoot={fromJSON(t){return{mediaType:sa(t.mediaType)?globalThis.String(t.mediaType):\"\",tlogs:globalThis.Array.isArray(t?.tlogs)?t.tlogs.map(e=>Ti.TransparencyLogInstance.fromJSON(e)):[],certificateAuthorities:globalThis.Array.isArray(t?.certificateAuthorities)?t.certificateAuthorities.map(e=>Ti.CertificateAuthority.fromJSON(e)):[],ctlogs:globalThis.Array.isArray(t?.ctlogs)?t.ctlogs.map(e=>Ti.TransparencyLogInstance.fromJSON(e)):[],timestampAuthorities:globalThis.Array.isArray(t?.timestampAuthorities)?t.timestampAuthorities.map(e=>Ti.CertificateAuthority.fromJSON(e)):[]}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.tlogs?.length&&(e.tlogs=t.tlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),t.certificateAuthorities?.length&&(e.certificateAuthorities=t.certificateAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),t.ctlogs?.length&&(e.ctlogs=t.ctlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),t.timestampAuthorities?.length&&(e.timestampAuthorities=t.timestampAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),e}};Ti.SigningConfig={fromJSON(t){return{mediaType:sa(t.mediaType)?globalThis.String(t.mediaType):\"\",caUrl:sa(t.caUrl)?globalThis.String(t.caUrl):\"\",oidcUrl:sa(t.oidcUrl)?globalThis.String(t.oidcUrl):\"\",tlogUrls:globalThis.Array.isArray(t?.tlogUrls)?t.tlogUrls.map(e=>globalThis.String(e)):[],tsaUrls:globalThis.Array.isArray(t?.tsaUrls)?t.tsaUrls.map(e=>globalThis.String(e)):[]}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.caUrl!==\"\"&&(e.caUrl=t.caUrl),t.oidcUrl!==\"\"&&(e.oidcUrl=t.oidcUrl),t.tlogUrls?.length&&(e.tlogUrls=t.tlogUrls),t.tsaUrls?.length&&(e.tsaUrls=t.tsaUrls),e}};Ti.ClientTrustConfig={fromJSON(t){return{mediaType:sa(t.mediaType)?globalThis.String(t.mediaType):\"\",trustedRoot:sa(t.trustedRoot)?Ti.TrustedRoot.fromJSON(t.trustedRoot):void 0,signingConfig:sa(t.signingConfig)?Ti.SigningConfig.fromJSON(t.signingConfig):void 0}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.trustedRoot!==void 0&&(e.trustedRoot=Ti.TrustedRoot.toJSON(t.trustedRoot)),t.signingConfig!==void 0&&(e.signingConfig=Ti.SigningConfig.toJSON(t.signingConfig)),e}};function sa(t){return t!=null}});var RTe=L(Vr=>{\"use strict\";Object.defineProperty(Vr,\"__esModule\",{value:!0});Vr.Input=Vr.Artifact=Vr.ArtifactVerificationOptions_ObserverTimestampOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions=Vr.ArtifactVerificationOptions_CtlogOptions=Vr.ArtifactVerificationOptions_TlogOptions=Vr.ArtifactVerificationOptions=Vr.PublicKeyIdentities=Vr.CertificateIdentities=Vr.CertificateIdentity=void 0;var QTe=D7(),Ig=Vw(),TTe=b7();Vr.CertificateIdentity={fromJSON(t){return{issuer:hi(t.issuer)?globalThis.String(t.issuer):\"\",san:hi(t.san)?Ig.SubjectAlternativeName.fromJSON(t.san):void 0,oids:globalThis.Array.isArray(t?.oids)?t.oids.map(e=>Ig.ObjectIdentifierValuePair.fromJSON(e)):[]}},toJSON(t){let e={};return t.issuer!==\"\"&&(e.issuer=t.issuer),t.san!==void 0&&(e.san=Ig.SubjectAlternativeName.toJSON(t.san)),t.oids?.length&&(e.oids=t.oids.map(r=>Ig.ObjectIdentifierValuePair.toJSON(r))),e}};Vr.CertificateIdentities={fromJSON(t){return{identities:globalThis.Array.isArray(t?.identities)?t.identities.map(e=>Vr.CertificateIdentity.fromJSON(e)):[]}},toJSON(t){let e={};return t.identities?.length&&(e.identities=t.identities.map(r=>Vr.CertificateIdentity.toJSON(r))),e}};Vr.PublicKeyIdentities={fromJSON(t){return{publicKeys:globalThis.Array.isArray(t?.publicKeys)?t.publicKeys.map(e=>Ig.PublicKey.fromJSON(e)):[]}},toJSON(t){let e={};return t.publicKeys?.length&&(e.publicKeys=t.publicKeys.map(r=>Ig.PublicKey.toJSON(r))),e}};Vr.ArtifactVerificationOptions={fromJSON(t){return{signers:hi(t.certificateIdentities)?{$case:\"certificateIdentities\",certificateIdentities:Vr.CertificateIdentities.fromJSON(t.certificateIdentities)}:hi(t.publicKeys)?{$case:\"publicKeys\",publicKeys:Vr.PublicKeyIdentities.fromJSON(t.publicKeys)}:void 0,tlogOptions:hi(t.tlogOptions)?Vr.ArtifactVerificationOptions_TlogOptions.fromJSON(t.tlogOptions):void 0,ctlogOptions:hi(t.ctlogOptions)?Vr.ArtifactVerificationOptions_CtlogOptions.fromJSON(t.ctlogOptions):void 0,tsaOptions:hi(t.tsaOptions)?Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(t.tsaOptions):void 0,integratedTsOptions:hi(t.integratedTsOptions)?Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(t.integratedTsOptions):void 0,observerOptions:hi(t.observerOptions)?Vr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(t.observerOptions):void 0}},toJSON(t){let e={};return t.signers?.$case===\"certificateIdentities\"?e.certificateIdentities=Vr.CertificateIdentities.toJSON(t.signers.certificateIdentities):t.signers?.$case===\"publicKeys\"&&(e.publicKeys=Vr.PublicKeyIdentities.toJSON(t.signers.publicKeys)),t.tlogOptions!==void 0&&(e.tlogOptions=Vr.ArtifactVerificationOptions_TlogOptions.toJSON(t.tlogOptions)),t.ctlogOptions!==void 0&&(e.ctlogOptions=Vr.ArtifactVerificationOptions_CtlogOptions.toJSON(t.ctlogOptions)),t.tsaOptions!==void 0&&(e.tsaOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(t.tsaOptions)),t.integratedTsOptions!==void 0&&(e.integratedTsOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(t.integratedTsOptions)),t.observerOptions!==void 0&&(e.observerOptions=Vr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(t.observerOptions)),e}};Vr.ArtifactVerificationOptions_TlogOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,performOnlineVerification:hi(t.performOnlineVerification)?globalThis.Boolean(t.performOnlineVerification):!1,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.performOnlineVerification!==!1&&(e.performOnlineVerification=t.performOnlineVerification),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_CtlogOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(t){return{threshold:hi(t.threshold)?globalThis.Number(t.threshold):0,disable:hi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.Artifact={fromJSON(t){return{data:hi(t.artifactUri)?{$case:\"artifactUri\",artifactUri:globalThis.String(t.artifactUri)}:hi(t.artifact)?{$case:\"artifact\",artifact:Buffer.from(eLt(t.artifact))}:hi(t.artifactDigest)?{$case:\"artifactDigest\",artifactDigest:Ig.HashOutput.fromJSON(t.artifactDigest)}:void 0}},toJSON(t){let e={};return t.data?.$case===\"artifactUri\"?e.artifactUri=t.data.artifactUri:t.data?.$case===\"artifact\"?e.artifact=tLt(t.data.artifact):t.data?.$case===\"artifactDigest\"&&(e.artifactDigest=Ig.HashOutput.toJSON(t.data.artifactDigest)),e}};Vr.Input={fromJSON(t){return{artifactTrustRoot:hi(t.artifactTrustRoot)?TTe.TrustedRoot.fromJSON(t.artifactTrustRoot):void 0,artifactVerificationOptions:hi(t.artifactVerificationOptions)?Vr.ArtifactVerificationOptions.fromJSON(t.artifactVerificationOptions):void 0,bundle:hi(t.bundle)?QTe.Bundle.fromJSON(t.bundle):void 0,artifact:hi(t.artifact)?Vr.Artifact.fromJSON(t.artifact):void 0}},toJSON(t){let e={};return t.artifactTrustRoot!==void 0&&(e.artifactTrustRoot=TTe.TrustedRoot.toJSON(t.artifactTrustRoot)),t.artifactVerificationOptions!==void 0&&(e.artifactVerificationOptions=Vr.ArtifactVerificationOptions.toJSON(t.artifactVerificationOptions)),t.bundle!==void 0&&(e.bundle=QTe.Bundle.toJSON(t.bundle)),t.artifact!==void 0&&(e.artifact=Vr.Artifact.toJSON(t.artifact)),e}};function eLt(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function tLt(t){return globalThis.Buffer.from(t).toString(\"base64\")}function hi(t){return t!=null}});var Rb=L(eu=>{\"use strict\";var rLt=eu&&eu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Kw=eu&&eu.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&rLt(e,t,r)};Object.defineProperty(eu,\"__esModule\",{value:!0});Kw(v7(),eu);Kw(D7(),eu);Kw(Vw(),eu);Kw(S7(),eu);Kw(b7(),eu);Kw(RTe(),eu)});var tO=L(Cl=>{\"use strict\";Object.defineProperty(Cl,\"__esModule\",{value:!0});Cl.BUNDLE_V03_MEDIA_TYPE=Cl.BUNDLE_V03_LEGACY_MEDIA_TYPE=Cl.BUNDLE_V02_MEDIA_TYPE=Cl.BUNDLE_V01_MEDIA_TYPE=void 0;Cl.isBundleWithCertificateChain=nLt;Cl.isBundleWithPublicKey=iLt;Cl.isBundleWithMessageSignature=sLt;Cl.isBundleWithDsseEnvelope=oLt;Cl.BUNDLE_V01_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.1\";Cl.BUNDLE_V02_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.2\";Cl.BUNDLE_V03_LEGACY_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.3\";Cl.BUNDLE_V03_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle.v0.3+json\";function nLt(t){return t.verificationMaterial.content.$case===\"x509CertificateChain\"}function iLt(t){return t.verificationMaterial.content.$case===\"publicKey\"}function sLt(t){return t.content.$case===\"messageSignature\"}function oLt(t){return t.content.$case===\"dsseEnvelope\"}});var NTe=L(nO=>{\"use strict\";Object.defineProperty(nO,\"__esModule\",{value:!0});nO.toMessageSignatureBundle=lLt;nO.toDSSEBundle=cLt;var aLt=Rb(),rO=tO();function lLt(t){return{mediaType:t.certificateChain?rO.BUNDLE_V02_MEDIA_TYPE:rO.BUNDLE_V03_MEDIA_TYPE,content:{$case:\"messageSignature\",messageSignature:{messageDigest:{algorithm:aLt.HashAlgorithm.SHA2_256,digest:t.digest},signature:t.signature}},verificationMaterial:FTe(t)}}function cLt(t){return{mediaType:t.certificateChain?rO.BUNDLE_V02_MEDIA_TYPE:rO.BUNDLE_V03_MEDIA_TYPE,content:{$case:\"dsseEnvelope\",dsseEnvelope:uLt(t)},verificationMaterial:FTe(t)}}function uLt(t){return{payloadType:t.artifactType,payload:t.artifact,signatures:[fLt(t)]}}function fLt(t){return{keyid:t.keyHint||\"\",sig:t.signature}}function FTe(t){return{content:ALt(t),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function ALt(t){return t.certificate?t.certificateChain?{$case:\"x509CertificateChain\",x509CertificateChain:{certificates:[{rawBytes:t.certificate}]}}:{$case:\"certificate\",certificate:{rawBytes:t.certificate}}:{$case:\"publicKey\",publicKey:{hint:t.keyHint||\"\"}}}});var x7=L(iO=>{\"use strict\";Object.defineProperty(iO,\"__esModule\",{value:!0});iO.ValidationError=void 0;var P7=class extends Error{constructor(e,r){super(e),this.fields=r}};iO.ValidationError=P7});var k7=L(ty=>{\"use strict\";Object.defineProperty(ty,\"__esModule\",{value:!0});ty.assertBundle=pLt;ty.assertBundleV01=OTe;ty.isBundleV01=hLt;ty.assertBundleV02=gLt;ty.assertBundleLatest=dLt;var sO=x7();function pLt(t){let e=oO(t);if(e.length>0)throw new sO.ValidationError(\"invalid bundle\",e)}function OTe(t){let e=[];if(e.push(...oO(t)),e.push(...mLt(t)),e.length>0)throw new sO.ValidationError(\"invalid v0.1 bundle\",e)}function hLt(t){try{return OTe(t),!0}catch{return!1}}function gLt(t){let e=[];if(e.push(...oO(t)),e.push(...LTe(t)),e.length>0)throw new sO.ValidationError(\"invalid v0.2 bundle\",e)}function dLt(t){let e=[];if(e.push(...oO(t)),e.push(...LTe(t)),e.push(...yLt(t)),e.length>0)throw new sO.ValidationError(\"invalid bundle\",e)}function oO(t){let e=[];if((t.mediaType===void 0||!t.mediaType.match(/^application\\/vnd\\.dev\\.sigstore\\.bundle\\+json;version=\\d\\.\\d/)&&!t.mediaType.match(/^application\\/vnd\\.dev\\.sigstore\\.bundle\\.v\\d\\.\\d\\+json/))&&e.push(\"mediaType\"),t.content===void 0)e.push(\"content\");else switch(t.content.$case){case\"messageSignature\":t.content.messageSignature.messageDigest===void 0?e.push(\"content.messageSignature.messageDigest\"):t.content.messageSignature.messageDigest.digest.length===0&&e.push(\"content.messageSignature.messageDigest.digest\"),t.content.messageSignature.signature.length===0&&e.push(\"content.messageSignature.signature\");break;case\"dsseEnvelope\":t.content.dsseEnvelope.payload.length===0&&e.push(\"content.dsseEnvelope.payload\"),t.content.dsseEnvelope.signatures.length!==1?e.push(\"content.dsseEnvelope.signatures\"):t.content.dsseEnvelope.signatures[0].sig.length===0&&e.push(\"content.dsseEnvelope.signatures[0].sig\");break}if(t.verificationMaterial===void 0)e.push(\"verificationMaterial\");else{if(t.verificationMaterial.content===void 0)e.push(\"verificationMaterial.content\");else switch(t.verificationMaterial.content.$case){case\"x509CertificateChain\":t.verificationMaterial.content.x509CertificateChain.certificates.length===0&&e.push(\"verificationMaterial.content.x509CertificateChain.certificates\"),t.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&e.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case\"certificate\":t.verificationMaterial.content.certificate.rawBytes.length===0&&e.push(\"verificationMaterial.content.certificate.rawBytes\");break}t.verificationMaterial.tlogEntries===void 0?e.push(\"verificationMaterial.tlogEntries\"):t.verificationMaterial.tlogEntries.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return e}function mLt(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),e}function LTe(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),e}function yLt(t){let e=[];return t.verificationMaterial?.content?.$case===\"x509CertificateChain\"&&e.push(\"verificationMaterial.content.$case\"),e}});var _Te=L(SA=>{\"use strict\";Object.defineProperty(SA,\"__esModule\",{value:!0});SA.envelopeToJSON=SA.envelopeFromJSON=SA.bundleToJSON=SA.bundleFromJSON=void 0;var aO=Rb(),MTe=tO(),Q7=k7(),ELt=t=>{let e=aO.Bundle.fromJSON(t);switch(e.mediaType){case MTe.BUNDLE_V01_MEDIA_TYPE:(0,Q7.assertBundleV01)(e);break;case MTe.BUNDLE_V02_MEDIA_TYPE:(0,Q7.assertBundleV02)(e);break;default:(0,Q7.assertBundleLatest)(e);break}return e};SA.bundleFromJSON=ELt;var ILt=t=>aO.Bundle.toJSON(t);SA.bundleToJSON=ILt;var CLt=t=>aO.Envelope.fromJSON(t);SA.envelopeFromJSON=CLt;var wLt=t=>aO.Envelope.toJSON(t);SA.envelopeToJSON=wLt});var Nb=L(Zr=>{\"use strict\";Object.defineProperty(Zr,\"__esModule\",{value:!0});Zr.isBundleV01=Zr.assertBundleV02=Zr.assertBundleV01=Zr.assertBundleLatest=Zr.assertBundle=Zr.envelopeToJSON=Zr.envelopeFromJSON=Zr.bundleToJSON=Zr.bundleFromJSON=Zr.ValidationError=Zr.isBundleWithPublicKey=Zr.isBundleWithMessageSignature=Zr.isBundleWithDsseEnvelope=Zr.isBundleWithCertificateChain=Zr.BUNDLE_V03_MEDIA_TYPE=Zr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Zr.BUNDLE_V02_MEDIA_TYPE=Zr.BUNDLE_V01_MEDIA_TYPE=Zr.toMessageSignatureBundle=Zr.toDSSEBundle=void 0;var UTe=NTe();Object.defineProperty(Zr,\"toDSSEBundle\",{enumerable:!0,get:function(){return UTe.toDSSEBundle}});Object.defineProperty(Zr,\"toMessageSignatureBundle\",{enumerable:!0,get:function(){return UTe.toMessageSignatureBundle}});var Cg=tO();Object.defineProperty(Zr,\"BUNDLE_V01_MEDIA_TYPE\",{enumerable:!0,get:function(){return Cg.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Zr,\"BUNDLE_V02_MEDIA_TYPE\",{enumerable:!0,get:function(){return Cg.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Zr,\"BUNDLE_V03_LEGACY_MEDIA_TYPE\",{enumerable:!0,get:function(){return Cg.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Zr,\"BUNDLE_V03_MEDIA_TYPE\",{enumerable:!0,get:function(){return Cg.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Zr,\"isBundleWithCertificateChain\",{enumerable:!0,get:function(){return Cg.isBundleWithCertificateChain}});Object.defineProperty(Zr,\"isBundleWithDsseEnvelope\",{enumerable:!0,get:function(){return Cg.isBundleWithDsseEnvelope}});Object.defineProperty(Zr,\"isBundleWithMessageSignature\",{enumerable:!0,get:function(){return Cg.isBundleWithMessageSignature}});Object.defineProperty(Zr,\"isBundleWithPublicKey\",{enumerable:!0,get:function(){return Cg.isBundleWithPublicKey}});var BLt=x7();Object.defineProperty(Zr,\"ValidationError\",{enumerable:!0,get:function(){return BLt.ValidationError}});var lO=_Te();Object.defineProperty(Zr,\"bundleFromJSON\",{enumerable:!0,get:function(){return lO.bundleFromJSON}});Object.defineProperty(Zr,\"bundleToJSON\",{enumerable:!0,get:function(){return lO.bundleToJSON}});Object.defineProperty(Zr,\"envelopeFromJSON\",{enumerable:!0,get:function(){return lO.envelopeFromJSON}});Object.defineProperty(Zr,\"envelopeToJSON\",{enumerable:!0,get:function(){return lO.envelopeToJSON}});var Fb=k7();Object.defineProperty(Zr,\"assertBundle\",{enumerable:!0,get:function(){return Fb.assertBundle}});Object.defineProperty(Zr,\"assertBundleLatest\",{enumerable:!0,get:function(){return Fb.assertBundleLatest}});Object.defineProperty(Zr,\"assertBundleV01\",{enumerable:!0,get:function(){return Fb.assertBundleV01}});Object.defineProperty(Zr,\"assertBundleV02\",{enumerable:!0,get:function(){return Fb.assertBundleV02}});Object.defineProperty(Zr,\"isBundleV01\",{enumerable:!0,get:function(){return Fb.isBundleV01}})});var Ob=L(uO=>{\"use strict\";Object.defineProperty(uO,\"__esModule\",{value:!0});uO.ByteStream=void 0;var T7=class extends Error{},cO=class t{constructor(e){this.start=0,e?(this.buf=e,this.view=Buffer.from(e)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(e){this.start=e}slice(e,r){let s=e+r;if(s>this.length)throw new T7(\"request past end of buffer\");return this.view.subarray(e,s)}appendChar(e){this.ensureCapacity(1),this.view[this.start]=e,this.start+=1}appendUint16(e){this.ensureCapacity(2);let r=new Uint16Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(e){this.ensureCapacity(3);let r=new Uint32Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(e){this.ensureCapacity(e.length),this.view.set(e,this.start),this.start+=e.length}getBlock(e){if(e<=0)return Buffer.alloc(0);if(this.start+e>this.view.length)throw new Error(\"request past end of buffer\");let r=this.view.subarray(this.start,this.start+e);return this.start+=e,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let e=this.getBlock(2);return e[0]<<8|e[1]}ensureCapacity(e){if(this.start+e>this.view.byteLength){let r=t.BLOCK_SIZE+(e>t.BLOCK_SIZE?e:0);this.realloc(this.view.byteLength+r)}}realloc(e){let r=new ArrayBuffer(e),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};uO.ByteStream=cO;cO.BLOCK_SIZE=1024});var fO=L(Jw=>{\"use strict\";Object.defineProperty(Jw,\"__esModule\",{value:!0});Jw.ASN1TypeError=Jw.ASN1ParseError=void 0;var R7=class extends Error{};Jw.ASN1ParseError=R7;var F7=class extends Error{};Jw.ASN1TypeError=F7});var jTe=L(AO=>{\"use strict\";Object.defineProperty(AO,\"__esModule\",{value:!0});AO.decodeLength=vLt;AO.encodeLength=SLt;var HTe=fO();function vLt(t){let e=t.getUint8();if(!(e&128))return e;let r=e&127;if(r>6)throw new HTe.ASN1ParseError(\"length exceeds 6 byte limit\");let s=0;for(let a=0;a<r;a++)s=s*256+t.getUint8();if(s===0)throw new HTe.ASN1ParseError(\"indefinite length encoding not supported\");return s}function SLt(t){if(t<128)return Buffer.from([t]);let e=BigInt(t),r=[];for(;e>0n;)r.unshift(Number(e&255n)),e=e>>8n;return Buffer.from([128|r.length,...r])}});var GTe=L(wg=>{\"use strict\";Object.defineProperty(wg,\"__esModule\",{value:!0});wg.parseInteger=PLt;wg.parseStringASCII=qTe;wg.parseTime=xLt;wg.parseOID=kLt;wg.parseBoolean=QLt;wg.parseBitString=TLt;var DLt=/^(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\.\\d{3})?Z$/,bLt=/^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\.\\d{3})?Z$/;function PLt(t){let e=0,r=t.length,s=t[e],a=s>127,n=a?255:0;for(;s==n&&++e<r;)s=t[e];if(r-e===0)return BigInt(a?-1:0);s=a?s-256:s;let f=BigInt(s);for(let p=e+1;p<r;++p)f=f*BigInt(256)+BigInt(t[p]);return f}function qTe(t){return t.toString(\"ascii\")}function xLt(t,e){let r=qTe(t),s=e?DLt.exec(r):bLt.exec(r);if(!s)throw new Error(\"invalid time\");if(e){let a=Number(s[1]);a+=a>=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function kLt(t){let e=0,r=t.length,s=t[e++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;e<r;++e)s=t[e],f=(f<<7)+(s&127),s&128||(c+=`.${f}`,f=0);return c}function QLt(t){return t[0]!==0}function TLt(t){let e=t[0],r=1,s=t.length,a=[];for(let n=r;n<s;++n){let c=t[n],f=n===s-1?e:0;for(let p=7;p>=f;--p)a.push(c>>p&1)}return a}});var YTe=L(pO=>{\"use strict\";Object.defineProperty(pO,\"__esModule\",{value:!0});pO.ASN1Tag=void 0;var WTe=fO(),ry={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},N7={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},O7=class{constructor(e){if(this.number=e&31,this.constructed=(e&32)===32,this.class=e>>6,this.number===31)throw new WTe.ASN1ParseError(\"long form tags not supported\");if(this.class===N7.UNIVERSAL&&this.number===0)throw new WTe.ASN1ParseError(\"unsupported tag 0x00\")}isUniversal(){return this.class===N7.UNIVERSAL}isContextSpecific(e){let r=this.class===N7.CONTEXT_SPECIFIC;return e!==void 0?r&&this.number===e:r}isBoolean(){return this.isUniversal()&&this.number===ry.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===ry.INTEGER}isBitString(){return this.isUniversal()&&this.number===ry.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===ry.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===ry.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===ry.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===ry.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};pO.ASN1Tag=O7});var zTe=L(gO=>{\"use strict\";Object.defineProperty(gO,\"__esModule\",{value:!0});gO.ASN1Obj=void 0;var L7=Ob(),ny=fO(),KTe=jTe(),zw=GTe(),RLt=YTe(),hO=class{constructor(e,r,s){this.tag=e,this.value=r,this.subs=s}static parseBuffer(e){return JTe(new L7.ByteStream(e))}toDER(){let e=new L7.ByteStream;if(this.subs.length>0)for(let a of this.subs)e.appendView(a.toDER());else e.appendView(this.value);let r=e.buffer,s=new L7.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,KTe.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new ny.ASN1TypeError(\"not a boolean\");return(0,zw.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new ny.ASN1TypeError(\"not an integer\");return(0,zw.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new ny.ASN1TypeError(\"not an OID\");return(0,zw.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,zw.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,zw.parseTime)(this.value,!1);default:throw new ny.ASN1TypeError(\"not a date\")}}toBitString(){if(!this.tag.isBitString())throw new ny.ASN1TypeError(\"not a bit string\");return(0,zw.parseBitString)(this.value)}};gO.ASN1Obj=hO;function JTe(t){let e=new RLt.ASN1Tag(t.getUint8()),r=(0,KTe.decodeLength)(t),s=t.slice(t.position,r),a=t.position,n=[];if(e.constructed)n=VTe(t,r);else if(e.isOctetString())try{n=VTe(t,r)}catch{}return n.length===0&&t.seek(a+r),new hO(e,s,n)}function VTe(t,e){let r=t.position+e;if(r>t.length)throw new ny.ASN1ParseError(\"invalid length\");let s=[];for(;t.position<r;)s.push(JTe(t));if(t.position!==r)throw new ny.ASN1ParseError(\"invalid length\");return s}});var mO=L(dO=>{\"use strict\";Object.defineProperty(dO,\"__esModule\",{value:!0});dO.ASN1Obj=void 0;var FLt=zTe();Object.defineProperty(dO,\"ASN1Obj\",{enumerable:!0,get:function(){return FLt.ASN1Obj}})});var Zw=L(Bg=>{\"use strict\";var NLt=Bg&&Bg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Bg,\"__esModule\",{value:!0});Bg.createPublicKey=OLt;Bg.digest=LLt;Bg.verify=MLt;Bg.bufferEqual=_Lt;var Lb=NLt(ye(\"crypto\"));function OLt(t,e=\"spki\"){return typeof t==\"string\"?Lb.default.createPublicKey(t):Lb.default.createPublicKey({key:t,format:\"der\",type:e})}function LLt(t,...e){let r=Lb.default.createHash(t);for(let s of e)r.update(s);return r.digest()}function MLt(t,e,r,s){try{return Lb.default.verify(s,t,e,r)}catch{return!1}}function _Lt(t,e){try{return Lb.default.timingSafeEqual(t,e)}catch{return!1}}});var ZTe=L(M7=>{\"use strict\";Object.defineProperty(M7,\"__esModule\",{value:!0});M7.preAuthEncoding=HLt;var ULt=\"DSSEv1\";function HLt(t,e){let r=[ULt,t.length,t,e.length,\"\"].join(\" \");return Buffer.concat([Buffer.from(r,\"ascii\"),e])}});var eRe=L(yO=>{\"use strict\";Object.defineProperty(yO,\"__esModule\",{value:!0});yO.base64Encode=jLt;yO.base64Decode=qLt;var XTe=\"base64\",$Te=\"utf-8\";function jLt(t){return Buffer.from(t,$Te).toString(XTe)}function qLt(t){return Buffer.from(t,XTe).toString($Te)}});var tRe=L(U7=>{\"use strict\";Object.defineProperty(U7,\"__esModule\",{value:!0});U7.canonicalize=_7;function _7(t){let e=\"\";if(t===null||typeof t!=\"object\"||t.toJSON!=null)e+=JSON.stringify(t);else if(Array.isArray(t)){e+=\"[\";let r=!0;t.forEach(s=>{r||(e+=\",\"),r=!1,e+=_7(s)}),e+=\"]\"}else{e+=\"{\";let r=!0;Object.keys(t).sort().forEach(s=>{r||(e+=\",\"),r=!1,e+=JSON.stringify(s),e+=\":\",e+=_7(t[s])}),e+=\"}\"}return e}});var H7=L(EO=>{\"use strict\";Object.defineProperty(EO,\"__esModule\",{value:!0});EO.toDER=YLt;EO.fromDER=VLt;var GLt=/-----BEGIN (.*)-----/,WLt=/-----END (.*)-----/;function YLt(t){let e=\"\";return t.split(`\n`).forEach(r=>{r.match(GLt)||r.match(WLt)||(e+=r)}),Buffer.from(e,\"base64\")}function VLt(t,e=\"CERTIFICATE\"){let s=t.toString(\"base64\").match(/.{1,64}/g)||\"\";return[`-----BEGIN ${e}-----`,...s,`-----END ${e}-----`].join(`\n`).concat(`\n`)}});var IO=L(Xw=>{\"use strict\";Object.defineProperty(Xw,\"__esModule\",{value:!0});Xw.SHA2_HASH_ALGOS=Xw.ECDSA_SIGNATURE_ALGOS=void 0;Xw.ECDSA_SIGNATURE_ALGOS={\"1.2.840.10045.4.3.1\":\"sha224\",\"1.2.840.10045.4.3.2\":\"sha256\",\"1.2.840.10045.4.3.3\":\"sha384\",\"1.2.840.10045.4.3.4\":\"sha512\"};Xw.SHA2_HASH_ALGOS={\"2.16.840.1.101.3.4.2.1\":\"sha256\",\"2.16.840.1.101.3.4.2.2\":\"sha384\",\"2.16.840.1.101.3.4.2.3\":\"sha512\"}});var q7=L(CO=>{\"use strict\";Object.defineProperty(CO,\"__esModule\",{value:!0});CO.RFC3161TimestampVerificationError=void 0;var j7=class extends Error{};CO.RFC3161TimestampVerificationError=j7});var nRe=L(DA=>{\"use strict\";var KLt=DA&&DA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),JLt=DA&&DA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),zLt=DA&&DA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&KLt(e,t,r);return JLt(e,t),e};Object.defineProperty(DA,\"__esModule\",{value:!0});DA.TSTInfo=void 0;var rRe=zLt(Zw()),ZLt=IO(),XLt=q7(),G7=class{constructor(e){this.root=e}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let e=this.messageImprintObj.subs[0].subs[0].toOID();return ZLt.SHA2_HASH_ALGOS[e]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(e){let r=rRe.digest(this.messageImprintHashAlgorithm,e);if(!rRe.bufferEqual(r,this.messageImprintHashedMessage))throw new XLt.RFC3161TimestampVerificationError(\"message imprint does not match artifact\")}get messageImprintObj(){return this.root.subs[2]}};DA.TSTInfo=G7});var sRe=L(bA=>{\"use strict\";var $Lt=bA&&bA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),eMt=bA&&bA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),tMt=bA&&bA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&$Lt(e,t,r);return eMt(e,t),e};Object.defineProperty(bA,\"__esModule\",{value:!0});bA.RFC3161Timestamp=void 0;var rMt=mO(),W7=tMt(Zw()),iRe=IO(),Mb=q7(),nMt=nRe(),iMt=\"1.2.840.113549.1.7.2\",sMt=\"1.2.840.113549.1.9.16.1.4\",oMt=\"1.2.840.113549.1.9.4\",Y7=class t{constructor(e){this.root=e}static parse(e){let r=rMt.ASN1Obj.parseBuffer(e);return new t(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let e=this.signerDigestAlgorithmObj.subs[0].toOID();return iRe.SHA2_HASH_ALGOS[e]}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return iRe.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new nMt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(e,r){if(!this.timeStampTokenObj)throw new Mb.RFC3161TimestampVerificationError(\"timeStampToken is missing\");if(this.contentType!==iMt)throw new Mb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==sMt)throw new Mb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(e),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let e=W7.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!W7.bufferEqual(e,r))throw new Mb.RFC3161TimestampVerificationError(\"signed data does not match tstInfo\")}verifySignature(e){let r=this.signedAttrsObj.toDER();if(r[0]=49,!W7.verify(r,e,this.signatureValue,this.signatureAlgorithm))throw new Mb.RFC3161TimestampVerificationError(\"signature verification failed\")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let e=this.signedDataObj;return e.subs[e.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===oMt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};bA.RFC3161Timestamp=Y7});var oRe=L(wO=>{\"use strict\";Object.defineProperty(wO,\"__esModule\",{value:!0});wO.RFC3161Timestamp=void 0;var aMt=sRe();Object.defineProperty(wO,\"RFC3161Timestamp\",{enumerable:!0,get:function(){return aMt.RFC3161Timestamp}})});var lRe=L(PA=>{\"use strict\";var lMt=PA&&PA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),cMt=PA&&PA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uMt=PA&&PA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&lMt(e,t,r);return cMt(e,t),e};Object.defineProperty(PA,\"__esModule\",{value:!0});PA.SignedCertificateTimestamp=void 0;var fMt=uMt(Zw()),aRe=Ob(),V7=class t{constructor(e){this.version=e.version,this.logID=e.logID,this.timestamp=e.timestamp,this.extensions=e.extensions,this.hashAlgorithm=e.hashAlgorithm,this.signatureAlgorithm=e.signatureAlgorithm,this.signature=e.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return\"none\";case 1:return\"md5\";case 2:return\"sha1\";case 3:return\"sha224\";case 4:return\"sha256\";case 5:return\"sha384\";case 6:return\"sha512\";default:return\"unknown\"}}verify(e,r){let s=new aRe.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(e),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),fMt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(e){let r=new aRe.ByteStream(e),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==e.length)throw new Error(\"SCT buffer length mismatch\");return new t({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};PA.SignedCertificateTimestamp=V7});var eK=L(oa=>{\"use strict\";Object.defineProperty(oa,\"__esModule\",{value:!0});oa.X509SCTExtension=oa.X509SubjectKeyIDExtension=oa.X509AuthorityKeyIDExtension=oa.X509SubjectAlternativeNameExtension=oa.X509KeyUsageExtension=oa.X509BasicConstraintsExtension=oa.X509Extension=void 0;var AMt=Ob(),pMt=lRe(),dh=class{constructor(e){this.root=e}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};oa.X509Extension=dh;var K7=class extends dh{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};oa.X509BasicConstraintsExtension=K7;var J7=class extends dh{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};oa.X509KeyUsageExtension=J7;var z7=class extends dh{get rfc822Name(){return this.findGeneralName(1)?.value.toString(\"ascii\")}get uri(){return this.findGeneralName(6)?.value.toString(\"ascii\")}otherName(e){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==e?void 0:r.subs[1].subs[0].value.toString(\"ascii\")}findGeneralName(e){return this.generalNames.find(r=>r.tag.isContextSpecific(e))}get generalNames(){return this.extnValueObj.subs[0].subs}};oa.X509SubjectAlternativeNameExtension=z7;var Z7=class extends dh{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(e){return this.sequence.subs.find(r=>r.tag.isContextSpecific(e))}get sequence(){return this.extnValueObj.subs[0]}};oa.X509AuthorityKeyIDExtension=Z7;var X7=class extends dh{get keyIdentifier(){return this.extnValueObj.subs[0].value}};oa.X509SubjectKeyIDExtension=X7;var $7=class extends dh{constructor(e){super(e)}get signedCertificateTimestamps(){let e=this.extnValueObj.subs[0].value,r=new AMt.ByteStream(e),s=r.getUint16()+2,a=[];for(;r.position<s;){let n=r.getUint16(),c=r.getBlock(n);a.push(pMt.SignedCertificateTimestamp.parse(c))}if(r.position!==s)throw new Error(\"SCT list length does not match actual length\");return a}};oa.X509SCTExtension=$7});var fRe=L(sc=>{\"use strict\";var hMt=sc&&sc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),gMt=sc&&sc.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uRe=sc&&sc.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&hMt(e,t,r);return gMt(e,t),e};Object.defineProperty(sc,\"__esModule\",{value:!0});sc.X509Certificate=sc.EXTENSION_OID_SCT=void 0;var dMt=mO(),cRe=uRe(Zw()),mMt=IO(),yMt=uRe(H7()),iy=eK(),EMt=\"2.5.29.14\",IMt=\"2.5.29.15\",CMt=\"2.5.29.17\",wMt=\"2.5.29.19\",BMt=\"2.5.29.35\";sc.EXTENSION_OID_SCT=\"1.3.6.1.4.1.11129.2.4.2\";var tK=class t{constructor(e){this.root=e}static parse(e){let r=typeof e==\"string\"?yMt.toDER(e):e,s=dMt.ASN1Obj.parseBuffer(r);return new t(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return mMt.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let e=this.extSubjectAltName;return e?.uri||e?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let e=this.findExtension(IMt);return e?new iy.X509KeyUsageExtension(e):void 0}get extBasicConstraints(){let e=this.findExtension(wMt);return e?new iy.X509BasicConstraintsExtension(e):void 0}get extSubjectAltName(){let e=this.findExtension(CMt);return e?new iy.X509SubjectAlternativeNameExtension(e):void 0}get extAuthorityKeyID(){let e=this.findExtension(BMt);return e?new iy.X509AuthorityKeyIDExtension(e):void 0}get extSubjectKeyID(){let e=this.findExtension(EMt);return e?new iy.X509SubjectKeyIDExtension(e):void 0}get extSCT(){let e=this.findExtension(sc.EXTENSION_OID_SCT);return e?new iy.X509SCTExtension(e):void 0}get isCA(){let e=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?e&&this.extKeyUsage.keyCertSign:e}extension(e){let r=this.findExtension(e);return r?new iy.X509Extension(r):void 0}verify(e){let r=e?.publicKey||this.publicKey,s=cRe.createPublicKey(r);return cRe.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(e){return this.notBefore<=e&&e<=this.notAfter}equals(e){return this.root.toDER().equals(e.root.toDER())}clone(){let e=this.root.toDER(),r=Buffer.alloc(e.length);return e.copy(r),t.parse(r)}findExtension(e){return this.extensions.find(r=>r.subs[0].toOID()===e)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(e=>e.tag.isContextSpecific(3))}};sc.X509Certificate=tK});var pRe=L(vg=>{\"use strict\";Object.defineProperty(vg,\"__esModule\",{value:!0});vg.X509SCTExtension=vg.X509Certificate=vg.EXTENSION_OID_SCT=void 0;var ARe=fRe();Object.defineProperty(vg,\"EXTENSION_OID_SCT\",{enumerable:!0,get:function(){return ARe.EXTENSION_OID_SCT}});Object.defineProperty(vg,\"X509Certificate\",{enumerable:!0,get:function(){return ARe.X509Certificate}});var vMt=eK();Object.defineProperty(vg,\"X509SCTExtension\",{enumerable:!0,get:function(){return vMt.X509SCTExtension}})});var wl=L(Kn=>{\"use strict\";var SMt=Kn&&Kn.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),DMt=Kn&&Kn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),_b=Kn&&Kn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&SMt(e,t,r);return DMt(e,t),e};Object.defineProperty(Kn,\"__esModule\",{value:!0});Kn.X509SCTExtension=Kn.X509Certificate=Kn.EXTENSION_OID_SCT=Kn.ByteStream=Kn.RFC3161Timestamp=Kn.pem=Kn.json=Kn.encoding=Kn.dsse=Kn.crypto=Kn.ASN1Obj=void 0;var bMt=mO();Object.defineProperty(Kn,\"ASN1Obj\",{enumerable:!0,get:function(){return bMt.ASN1Obj}});Kn.crypto=_b(Zw());Kn.dsse=_b(ZTe());Kn.encoding=_b(eRe());Kn.json=_b(tRe());Kn.pem=_b(H7());var PMt=oRe();Object.defineProperty(Kn,\"RFC3161Timestamp\",{enumerable:!0,get:function(){return PMt.RFC3161Timestamp}});var xMt=Ob();Object.defineProperty(Kn,\"ByteStream\",{enumerable:!0,get:function(){return xMt.ByteStream}});var rK=pRe();Object.defineProperty(Kn,\"EXTENSION_OID_SCT\",{enumerable:!0,get:function(){return rK.EXTENSION_OID_SCT}});Object.defineProperty(Kn,\"X509Certificate\",{enumerable:!0,get:function(){return rK.X509Certificate}});Object.defineProperty(Kn,\"X509SCTExtension\",{enumerable:!0,get:function(){return rK.X509SCTExtension}})});var hRe=L(nK=>{\"use strict\";Object.defineProperty(nK,\"__esModule\",{value:!0});nK.extractJWTSubject=QMt;var kMt=wl();function QMt(t){let e=t.split(\".\",3),r=JSON.parse(kMt.encoding.base64Decode(e[1]));switch(r.iss){case\"https://accounts.google.com\":case\"https://oauth2.sigstore.dev/auth\":return r.email;default:return r.sub}}});var gRe=L((kCr,TMt)=>{TMt.exports={name:\"@sigstore/sign\",version:\"3.1.0\",description:\"Sigstore signing library\",main:\"dist/index.js\",types:\"dist/index.d.ts\",scripts:{clean:\"shx rm -rf dist *.tsbuildinfo\",build:\"tsc --build\",test:\"jest\"},files:[\"dist\"],author:\"bdehamer@github.com\",license:\"Apache-2.0\",repository:{type:\"git\",url:\"git+https://github.com/sigstore/sigstore-js.git\"},bugs:{url:\"https://github.com/sigstore/sigstore-js/issues\"},homepage:\"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme\",publishConfig:{provenance:!0},devDependencies:{\"@sigstore/jest\":\"^0.0.0\",\"@sigstore/mock\":\"^0.10.0\",\"@sigstore/rekor-types\":\"^3.0.0\",\"@types/make-fetch-happen\":\"^10.0.4\",\"@types/promise-retry\":\"^1.1.6\"},dependencies:{\"@sigstore/bundle\":\"^3.1.0\",\"@sigstore/core\":\"^2.0.0\",\"@sigstore/protobuf-specs\":\"^0.4.0\",\"make-fetch-happen\":\"^14.0.2\",\"proc-log\":\"^5.0.0\",\"promise-retry\":\"^2.0.1\"},engines:{node:\"^18.17.0 || >=20.5.0\"}}});var mRe=L($w=>{\"use strict\";var RMt=$w&&$w.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty($w,\"__esModule\",{value:!0});$w.getUserAgent=void 0;var dRe=RMt(ye(\"os\")),FMt=()=>{let t=gRe().version,e=process.version,r=dRe.default.platform(),s=dRe.default.arch();return`sigstore-js/${t} (Node ${e}) (${r}/${s})`};$w.getUserAgent=FMt});var Sg=L(Ki=>{\"use strict\";var NMt=Ki&&Ki.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),OMt=Ki&&Ki.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yRe=Ki&&Ki.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!==\"default\"&&NMt(r,e,s[a]);return OMt(r,e),r}}();Object.defineProperty(Ki,\"__esModule\",{value:!0});Ki.ua=Ki.oidc=Ki.pem=Ki.json=Ki.encoding=Ki.dsse=Ki.crypto=void 0;var Ub=wl();Object.defineProperty(Ki,\"crypto\",{enumerable:!0,get:function(){return Ub.crypto}});Object.defineProperty(Ki,\"dsse\",{enumerable:!0,get:function(){return Ub.dsse}});Object.defineProperty(Ki,\"encoding\",{enumerable:!0,get:function(){return Ub.encoding}});Object.defineProperty(Ki,\"json\",{enumerable:!0,get:function(){return Ub.json}});Object.defineProperty(Ki,\"pem\",{enumerable:!0,get:function(){return Ub.pem}});Ki.oidc=yRe(hRe());Ki.ua=yRe(mRe())});var sK=L(BO=>{\"use strict\";Object.defineProperty(BO,\"__esModule\",{value:!0});BO.BaseBundleBuilder=void 0;var iK=class{constructor(e){this.signer=e.signer,this.witnesses=e.witnesses}async create(e){let r=await this.prepare(e).then(f=>this.signer.sign(f)),s=await this.package(e,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,LMt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(e){return e.data}};BO.BaseBundleBuilder=iK;function LMt(t){switch(t.$case){case\"publicKey\":return t.publicKey;case\"x509Certificate\":return t.certificate}}});var aK=L(xA=>{\"use strict\";var MMt=xA&&xA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),_Mt=xA&&xA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UMt=xA&&xA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!==\"default\"&&MMt(r,e,s[a]);return _Mt(r,e),r}}();Object.defineProperty(xA,\"__esModule\",{value:!0});xA.toMessageSignatureBundle=HMt;xA.toDSSEBundle=jMt;var ERe=UMt(Nb()),oK=Sg();function HMt(t,e){let r=oK.crypto.digest(\"sha256\",t.data);return ERe.toMessageSignatureBundle({digest:r,signature:e.signature,certificate:e.key.$case===\"x509Certificate\"?oK.pem.toDER(e.key.certificate):void 0,keyHint:e.key.$case===\"publicKey\"?e.key.hint:void 0,certificateChain:!0})}function jMt(t,e,r){return ERe.toDSSEBundle({artifact:t.data,artifactType:t.type,signature:e.signature,certificate:e.key.$case===\"x509Certificate\"?oK.pem.toDER(e.key.certificate):void 0,keyHint:e.key.$case===\"publicKey\"?e.key.hint:void 0,certificateChain:r})}});var CRe=L(vO=>{\"use strict\";Object.defineProperty(vO,\"__esModule\",{value:!0});vO.DSSEBundleBuilder=void 0;var qMt=Sg(),GMt=sK(),WMt=aK(),lK=class extends GMt.BaseBundleBuilder{constructor(e){super(e),this.certificateChain=e.certificateChain??!1}async prepare(e){let r=IRe(e);return qMt.dsse.preAuthEncoding(r.type,r.data)}async package(e,r){return(0,WMt.toDSSEBundle)(IRe(e),r,this.certificateChain)}};vO.DSSEBundleBuilder=lK;function IRe(t){return{...t,type:t.type??\"\"}}});var wRe=L(SO=>{\"use strict\";Object.defineProperty(SO,\"__esModule\",{value:!0});SO.MessageSignatureBundleBuilder=void 0;var YMt=sK(),VMt=aK(),cK=class extends YMt.BaseBundleBuilder{constructor(e){super(e)}async package(e,r){return(0,VMt.toMessageSignatureBundle)(e,r)}};SO.MessageSignatureBundleBuilder=cK});var BRe=L(e1=>{\"use strict\";Object.defineProperty(e1,\"__esModule\",{value:!0});e1.MessageSignatureBundleBuilder=e1.DSSEBundleBuilder=void 0;var KMt=CRe();Object.defineProperty(e1,\"DSSEBundleBuilder\",{enumerable:!0,get:function(){return KMt.DSSEBundleBuilder}});var JMt=wRe();Object.defineProperty(e1,\"MessageSignatureBundleBuilder\",{enumerable:!0,get:function(){return JMt.MessageSignatureBundleBuilder}})});var bO=L(DO=>{\"use strict\";Object.defineProperty(DO,\"__esModule\",{value:!0});DO.HTTPError=void 0;var uK=class extends Error{constructor({status:e,message:r,location:s}){super(`(${e}) ${r}`),this.statusCode=e,this.location=s}};DO.HTTPError=uK});var t1=L(Hb=>{\"use strict\";Object.defineProperty(Hb,\"__esModule\",{value:!0});Hb.InternalError=void 0;Hb.internalError=ZMt;var zMt=bO(),PO=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=e}};Hb.InternalError=PO;function ZMt(t,e,r){throw t instanceof zMt.HTTPError&&(r+=` - ${t.message}`),new PO({code:e,message:r,cause:t})}});var xO=L((UCr,vRe)=>{vRe.exports=fetch});var SRe=L(r1=>{\"use strict\";var XMt=r1&&r1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r1,\"__esModule\",{value:!0});r1.CIContextProvider=void 0;var $Mt=XMt(xO()),e_t=[t_t,r_t],fK=class{constructor(e=\"sigstore\"){this.audience=e}async getToken(){return Promise.any(e_t.map(e=>e(this.audience))).catch(()=>Promise.reject(\"CI: no tokens available\"))}};r1.CIContextProvider=fK;async function t_t(t){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject(\"no token available\");let e=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return e.searchParams.append(\"audience\",t),(await(0,$Mt.default)(e.href,{retry:2,headers:{Accept:\"application/json\",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function r_t(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject(\"no token available\")}});var DRe=L(kO=>{\"use strict\";Object.defineProperty(kO,\"__esModule\",{value:!0});kO.CIContextProvider=void 0;var n_t=SRe();Object.defineProperty(kO,\"CIContextProvider\",{enumerable:!0,get:function(){return n_t.CIContextProvider}})});var PRe=L((qCr,bRe)=>{var i_t=Symbol(\"proc-log.meta\");bRe.exports={META:i_t,output:{LEVELS:[\"standard\",\"error\",\"buffer\",\"flush\"],KEYS:{standard:\"standard\",error:\"error\",buffer:\"buffer\",flush:\"flush\"},standard:function(...t){return process.emit(\"output\",\"standard\",...t)},error:function(...t){return process.emit(\"output\",\"error\",...t)},buffer:function(...t){return process.emit(\"output\",\"buffer\",...t)},flush:function(...t){return process.emit(\"output\",\"flush\",...t)}},log:{LEVELS:[\"notice\",\"error\",\"warn\",\"info\",\"verbose\",\"http\",\"silly\",\"timing\",\"pause\",\"resume\"],KEYS:{notice:\"notice\",error:\"error\",warn:\"warn\",info:\"info\",verbose:\"verbose\",http:\"http\",silly:\"silly\",timing:\"timing\",pause:\"pause\",resume:\"resume\"},error:function(...t){return process.emit(\"log\",\"error\",...t)},notice:function(...t){return process.emit(\"log\",\"notice\",...t)},warn:function(...t){return process.emit(\"log\",\"warn\",...t)},info:function(...t){return process.emit(\"log\",\"info\",...t)},verbose:function(...t){return process.emit(\"log\",\"verbose\",...t)},http:function(...t){return process.emit(\"log\",\"http\",...t)},silly:function(...t){return process.emit(\"log\",\"silly\",...t)},timing:function(...t){return process.emit(\"log\",\"timing\",...t)},pause:function(){return process.emit(\"log\",\"pause\")},resume:function(){return process.emit(\"log\",\"resume\")}},time:{LEVELS:[\"start\",\"end\"],KEYS:{start:\"start\",end:\"end\"},start:function(t,e){process.emit(\"time\",\"start\",t);function r(){return process.emit(\"time\",\"end\",t)}if(typeof e==\"function\"){let s=e();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(t){return process.emit(\"time\",\"end\",t)}},input:{LEVELS:[\"start\",\"end\",\"read\"],KEYS:{start:\"start\",end:\"end\",read:\"read\"},start:function(t){process.emit(\"input\",\"start\");function e(){return process.emit(\"input\",\"end\")}if(typeof t==\"function\"){let r=t();return r&&r.finally?r.finally(e):(e(),r)}return e},end:function(){return process.emit(\"input\",\"end\")},read:function(...t){let e,r,s=new Promise((a,n)=>{e=a,r=n});return process.emit(\"input\",\"read\",e,r,...t),s}}}});var QRe=L((GCr,kRe)=>{\"use strict\";function xRe(t,e){for(let r in e)Object.defineProperty(t,r,{value:e[r],enumerable:!0,configurable:!0});return t}function s_t(t,e,r){if(!t||typeof t==\"string\")throw new TypeError(\"Please pass an Error to err-code\");r||(r={}),typeof e==\"object\"&&(r=e,e=void 0),e!=null&&(r.code=e);try{return xRe(t,r)}catch{r.message=t.message,r.stack=t.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(t)),xRe(new a,r)}}kRe.exports=s_t});var RRe=L((WCr,TRe)=>{function tu(t,e){typeof e==\"boolean\"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}TRe.exports=tu;tu.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};tu.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};tu.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error(\"RetryOperation timeout occurred\")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};tu.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};tu.prototype.try=function(t){console.log(\"Using RetryOperation.try() is deprecated\"),this.attempt(t)};tu.prototype.start=function(t){console.log(\"Using RetryOperation.start() is deprecated\"),this.attempt(t)};tu.prototype.start=tu.prototype.try;tu.prototype.errors=function(){return this._errors};tu.prototype.attempts=function(){return this._attempts};tu.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,s=0;s<this._errors.length;s++){var a=this._errors[s],n=a.message,c=(t[n]||0)+1;t[n]=c,c>=r&&(e=a,r=c)}return e}});var FRe=L(sy=>{var o_t=RRe();sy.operation=function(t){var e=sy.timeouts(t);return new o_t(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};sy.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error(\"minTimeout is greater than maxTimeout\");for(var s=[],a=0;a<e.retries;a++)s.push(this.createTimeout(a,e));return t&&t.forever&&!s.length&&s.push(this.createTimeout(a,e)),s.sort(function(n,c){return n-c}),s};sy.createTimeout=function(t,e){var r=e.randomize?Math.random()+1:1,s=Math.round(r*e.minTimeout*Math.pow(e.factor,t));return s=Math.min(s,e.maxTimeout),s};sy.wrap=function(t,e,r){if(e instanceof Array&&(r=e,e=null),!r){r=[];for(var s in t)typeof t[s]==\"function\"&&r.push(s)}for(var a=0;a<r.length;a++){var n=r[a],c=t[n];t[n]=function(p){var h=sy.operation(e),E=Array.prototype.slice.call(arguments,1),C=E.pop();E.push(function(S){h.retry(S)||(S&&(arguments[0]=h.mainError()),C.apply(this,arguments))}),h.attempt(function(){p.apply(t,E)})}.bind(t,c),t[n].options=e}}});var ORe=L((VCr,NRe)=>{NRe.exports=FRe()});var _Re=L((KCr,MRe)=>{\"use strict\";var a_t=QRe(),l_t=ORe(),c_t=Object.prototype.hasOwnProperty;function LRe(t){return t&&t.code===\"EPROMISERETRY\"&&c_t.call(t,\"retried\")}function u_t(t,e){var r,s;return typeof t==\"object\"&&typeof e==\"function\"&&(r=e,e=t,t=r),s=l_t.operation(e),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return t(function(f){throw LRe(f)&&(f=f.retried),a_t(new Error(\"Retrying\"),\"EPROMISERETRY\",{retried:f})},c)}).then(a,function(f){LRe(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}MRe.exports=u_t});var QO=L(jb=>{\"use strict\";var HRe=jb&&jb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(jb,\"__esModule\",{value:!0});jb.fetchWithRetry=w_t;var f_t=ye(\"http2\"),A_t=HRe(xO()),URe=PRe(),p_t=HRe(_Re()),h_t=Sg(),g_t=bO(),{HTTP2_HEADER_LOCATION:d_t,HTTP2_HEADER_CONTENT_TYPE:m_t,HTTP2_HEADER_USER_AGENT:y_t,HTTP_STATUS_INTERNAL_SERVER_ERROR:E_t,HTTP_STATUS_TOO_MANY_REQUESTS:I_t,HTTP_STATUS_REQUEST_TIMEOUT:C_t}=f_t.constants;async function w_t(t,e){return(0,p_t.default)(async(r,s)=>{let a=e.method||\"POST\",n={[y_t]:h_t.ua.getUserAgent(),...e.headers},c=await(0,A_t.default)(t,{method:a,headers:n,body:e.body,timeout:e.timeout,retry:!1}).catch(f=>(URe.log.http(\"fetch\",`${a} ${t} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await B_t(c);if(URe.log.http(\"fetch\",`${a} ${t} attempt ${s} failed with ${c.status}`),v_t(c.status))return r(f);throw f}},S_t(e.retry))}var B_t=async t=>{let e=t.statusText,r=t.headers.get(d_t)||void 0;if(t.headers.get(m_t)?.includes(\"application/json\"))try{e=(await t.json()).message||e}catch{}return new g_t.HTTPError({status:t.status,message:e,location:r})},v_t=t=>[C_t,I_t].includes(t)||t>=E_t,S_t=t=>typeof t==\"boolean\"?{retries:t?1:0}:typeof t==\"number\"?{retries:t}:{retries:0,...t}});var jRe=L(TO=>{\"use strict\";Object.defineProperty(TO,\"__esModule\",{value:!0});TO.Fulcio=void 0;var D_t=QO(),AK=class{constructor(e){this.options=e}async createSigningCertificate(e){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,D_t.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(e),timeout:a,retry:s})).json()}};TO.Fulcio=AK});var qRe=L(RO=>{\"use strict\";Object.defineProperty(RO,\"__esModule\",{value:!0});RO.CAClient=void 0;var b_t=t1(),P_t=jRe(),pK=class{constructor(e){this.fulcio=new P_t.Fulcio({baseURL:e.fulcioBaseURL,retry:e.retry,timeout:e.timeout})}async createSigningCertificate(e,r,s){let a=x_t(e,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,b_t.internalError)(n,\"CA_CREATE_SIGNING_CERTIFICATE_ERROR\",\"error creating signing certificate\")}}};RO.CAClient=pK;function x_t(t,e,r){return{credentials:{oidcIdentityToken:t},publicKeyRequest:{publicKey:{algorithm:\"ECDSA\",content:e},proofOfPossession:r.toString(\"base64\")}}}});var WRe=L(n1=>{\"use strict\";var k_t=n1&&n1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n1,\"__esModule\",{value:!0});n1.EphemeralSigner=void 0;var GRe=k_t(ye(\"crypto\")),Q_t=\"ec\",T_t=\"P-256\",hK=class{constructor(){this.keypair=GRe.default.generateKeyPairSync(Q_t,{namedCurve:T_t})}async sign(e){let r=GRe.default.sign(null,e,this.keypair.privateKey),s=this.keypair.publicKey.export({format:\"pem\",type:\"spki\"}).toString(\"ascii\");return{signature:r,key:{$case:\"publicKey\",publicKey:s}}}};n1.EphemeralSigner=hK});var YRe=L(oy=>{\"use strict\";Object.defineProperty(oy,\"__esModule\",{value:!0});oy.FulcioSigner=oy.DEFAULT_FULCIO_URL=void 0;var gK=t1(),R_t=Sg(),F_t=qRe(),N_t=WRe();oy.DEFAULT_FULCIO_URL=\"https://fulcio.sigstore.dev\";var dK=class{constructor(e){this.ca=new F_t.CAClient({...e,fulcioBaseURL:e.fulcioBaseURL||oy.DEFAULT_FULCIO_URL}),this.identityProvider=e.identityProvider,this.keyHolder=e.keyHolder||new N_t.EphemeralSigner}async sign(e){let r=await this.getIdentityToken(),s;try{s=R_t.oidc.extractJWTSubject(r)}catch(f){throw new gK.InternalError({code:\"IDENTITY_TOKEN_PARSE_ERROR\",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!==\"publicKey\")throw new gK.InternalError({code:\"CA_CREATE_SIGNING_CERTIFICATE_ERROR\",message:\"unexpected format for signing key\"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(e)).signature,key:{$case:\"x509Certificate\",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(e){throw new gK.InternalError({code:\"IDENTITY_TOKEN_READ_ERROR\",message:\"error retrieving identity token\",cause:e})}}};oy.FulcioSigner=dK});var KRe=L(i1=>{\"use strict\";Object.defineProperty(i1,\"__esModule\",{value:!0});i1.FulcioSigner=i1.DEFAULT_FULCIO_URL=void 0;var VRe=YRe();Object.defineProperty(i1,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return VRe.DEFAULT_FULCIO_URL}});Object.defineProperty(i1,\"FulcioSigner\",{enumerable:!0,get:function(){return VRe.FulcioSigner}})});var ZRe=L(FO=>{\"use strict\";Object.defineProperty(FO,\"__esModule\",{value:!0});FO.Rekor=void 0;var JRe=QO(),mK=class{constructor(e){this.options=e}async createEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,JRe.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\",Accept:\"application/json\"},body:JSON.stringify(e),timeout:s,retry:a})).json();return zRe(f)}async getEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${e}`,f=await(await(0,JRe.fetchWithRetry)(n,{method:\"GET\",headers:{Accept:\"application/json\"},timeout:s,retry:a})).json();return zRe(f)}};FO.Rekor=mK;function zRe(t){let e=Object.entries(t);if(e.length!=1)throw new Error(\"Received multiple entries in Rekor response\");let[r,s]=e[0];return{...s,uuid:r}}});var $Re=L(NO=>{\"use strict\";Object.defineProperty(NO,\"__esModule\",{value:!0});NO.TLogClient=void 0;var XRe=t1(),O_t=bO(),L_t=ZRe(),yK=class{constructor(e){this.fetchOnConflict=e.fetchOnConflict??!1,this.rekor=new L_t.Rekor({baseURL:e.rekorBaseURL,retry:e.retry,timeout:e.timeout})}async createEntry(e){let r;try{r=await this.rekor.createEntry(e)}catch(s){if(M_t(s)&&this.fetchOnConflict){let a=s.location.split(\"/\").pop()||\"\";try{r=await this.rekor.getEntry(a)}catch(n){(0,XRe.internalError)(n,\"TLOG_FETCH_ENTRY_ERROR\",\"error fetching tlog entry\")}}else(0,XRe.internalError)(s,\"TLOG_CREATE_ENTRY_ERROR\",\"error creating tlog entry\")}return r}};NO.TLogClient=yK;function M_t(t){return t instanceof O_t.HTTPError&&t.statusCode===409&&t.location!==void 0}});var eFe=L(EK=>{\"use strict\";Object.defineProperty(EK,\"__esModule\",{value:!0});EK.toProposedEntry=U_t;var __t=Nb(),Dg=Sg(),qb=\"sha256\";function U_t(t,e,r=\"dsse\"){switch(t.$case){case\"dsseEnvelope\":return r===\"intoto\"?q_t(t.dsseEnvelope,e):j_t(t.dsseEnvelope,e);case\"messageSignature\":return H_t(t.messageSignature,e)}}function H_t(t,e){let r=t.messageDigest.digest.toString(\"hex\"),s=t.signature.toString(\"base64\"),a=Dg.encoding.base64Encode(e);return{apiVersion:\"0.0.1\",kind:\"hashedrekord\",spec:{data:{hash:{algorithm:qb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function j_t(t,e){let r=JSON.stringify((0,__t.envelopeToJSON)(t)),s=Dg.encoding.base64Encode(e);return{apiVersion:\"0.0.1\",kind:\"dsse\",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function q_t(t,e){let r=Dg.crypto.digest(qb,t.payload).toString(\"hex\"),s=G_t(t,e),a=Dg.encoding.base64Encode(t.payload.toString(\"base64\")),n=Dg.encoding.base64Encode(t.signatures[0].sig.toString(\"base64\")),c=t.signatures[0].keyid,f=Dg.encoding.base64Encode(e),p={payloadType:t.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:\"0.0.2\",kind:\"intoto\",spec:{content:{envelope:p,hash:{algorithm:qb,value:s},payloadHash:{algorithm:qb,value:r}}}}}function G_t(t,e){let r={payloadType:t.payloadType,payload:t.payload.toString(\"base64\"),signatures:[{sig:t.signatures[0].sig.toString(\"base64\"),publicKey:e}]};return t.signatures[0].keyid.length>0&&(r.signatures[0].keyid=t.signatures[0].keyid),Dg.crypto.digest(qb,Dg.json.canonicalize(r)).toString(\"hex\")}});var tFe=L(ay=>{\"use strict\";Object.defineProperty(ay,\"__esModule\",{value:!0});ay.RekorWitness=ay.DEFAULT_REKOR_URL=void 0;var W_t=Sg(),Y_t=$Re(),V_t=eFe();ay.DEFAULT_REKOR_URL=\"https://rekor.sigstore.dev\";var IK=class{constructor(e){this.entryType=e.entryType,this.tlog=new Y_t.TLogClient({...e,rekorBaseURL:e.rekorBaseURL||ay.DEFAULT_REKOR_URL})}async testify(e,r){let s=(0,V_t.toProposedEntry)(e,r,this.entryType),a=await this.tlog.createEntry(s);return K_t(a)}};ay.RekorWitness=IK;function K_t(t){let e=Buffer.from(t.logID,\"hex\"),r=W_t.encoding.base64Decode(t.body),s=JSON.parse(r),a=t?.verification?.signedEntryTimestamp?J_t(t.verification.signedEntryTimestamp):void 0,n=t?.verification?.inclusionProof?z_t(t.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:t.logIndex.toString(),logId:{keyId:e},integratedTime:t.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(t.body,\"base64\")}]}}function J_t(t){return{signedEntryTimestamp:Buffer.from(t,\"base64\")}}function z_t(t){return{logIndex:t.logIndex.toString(),treeSize:t.treeSize.toString(),rootHash:Buffer.from(t.rootHash,\"hex\"),hashes:t.hashes.map(e=>Buffer.from(e,\"hex\")),checkpoint:{envelope:t.checkpoint}}}});var rFe=L(OO=>{\"use strict\";Object.defineProperty(OO,\"__esModule\",{value:!0});OO.TimestampAuthority=void 0;var Z_t=QO(),CK=class{constructor(e){this.options=e}async createTimestamp(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,Z_t.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(e),timeout:s,retry:a})).buffer()}};OO.TimestampAuthority=CK});var iFe=L(LO=>{\"use strict\";Object.defineProperty(LO,\"__esModule\",{value:!0});LO.TSAClient=void 0;var X_t=t1(),$_t=rFe(),eUt=Sg(),nFe=\"sha256\",wK=class{constructor(e){this.tsa=new $_t.TimestampAuthority({baseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async createTimestamp(e){let r={artifactHash:eUt.crypto.digest(nFe,e).toString(\"base64\"),hashAlgorithm:nFe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,X_t.internalError)(s,\"TSA_CREATE_TIMESTAMP_ERROR\",\"error creating timestamp\")}}};LO.TSAClient=wK});var sFe=L(MO=>{\"use strict\";Object.defineProperty(MO,\"__esModule\",{value:!0});MO.TSAWitness=void 0;var tUt=iFe(),BK=class{constructor(e){this.tsa=new tUt.TSAClient({tsaBaseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async testify(e){let r=rUt(e);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};MO.TSAWitness=BK;function rUt(t){switch(t.$case){case\"dsseEnvelope\":return t.dsseEnvelope.signatures[0].sig;case\"messageSignature\":return t.messageSignature.signature}}});var aFe=L(bg=>{\"use strict\";Object.defineProperty(bg,\"__esModule\",{value:!0});bg.TSAWitness=bg.RekorWitness=bg.DEFAULT_REKOR_URL=void 0;var oFe=tFe();Object.defineProperty(bg,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return oFe.DEFAULT_REKOR_URL}});Object.defineProperty(bg,\"RekorWitness\",{enumerable:!0,get:function(){return oFe.RekorWitness}});var nUt=sFe();Object.defineProperty(bg,\"TSAWitness\",{enumerable:!0,get:function(){return nUt.TSAWitness}})});var SK=L(Es=>{\"use strict\";Object.defineProperty(Es,\"__esModule\",{value:!0});Es.TSAWitness=Es.RekorWitness=Es.DEFAULT_REKOR_URL=Es.FulcioSigner=Es.DEFAULT_FULCIO_URL=Es.CIContextProvider=Es.InternalError=Es.MessageSignatureBundleBuilder=Es.DSSEBundleBuilder=void 0;var lFe=BRe();Object.defineProperty(Es,\"DSSEBundleBuilder\",{enumerable:!0,get:function(){return lFe.DSSEBundleBuilder}});Object.defineProperty(Es,\"MessageSignatureBundleBuilder\",{enumerable:!0,get:function(){return lFe.MessageSignatureBundleBuilder}});var iUt=t1();Object.defineProperty(Es,\"InternalError\",{enumerable:!0,get:function(){return iUt.InternalError}});var sUt=DRe();Object.defineProperty(Es,\"CIContextProvider\",{enumerable:!0,get:function(){return sUt.CIContextProvider}});var cFe=KRe();Object.defineProperty(Es,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return cFe.DEFAULT_FULCIO_URL}});Object.defineProperty(Es,\"FulcioSigner\",{enumerable:!0,get:function(){return cFe.FulcioSigner}});var vK=aFe();Object.defineProperty(Es,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return vK.DEFAULT_REKOR_URL}});Object.defineProperty(Es,\"RekorWitness\",{enumerable:!0,get:function(){return vK.RekorWitness}});Object.defineProperty(Es,\"TSAWitness\",{enumerable:!0,get:function(){return vK.TSAWitness}})});var fFe=L(Gb=>{\"use strict\";var uFe=Gb&&Gb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gb,\"__esModule\",{value:!0});Gb.appDataPath=aUt;var oUt=uFe(ye(\"os\")),s1=uFe(ye(\"path\"));function aUt(t){let e=oUt.default.homedir();switch(process.platform){case\"darwin\":{let r=s1.default.join(e,\"Library\",\"Application Support\");return s1.default.join(r,t)}case\"win32\":{let r=process.env.LOCALAPPDATA||s1.default.join(e,\"AppData\",\"Local\");return s1.default.join(r,t,\"Data\")}default:{let r=process.env.XDG_DATA_HOME||s1.default.join(e,\".local\",\"share\");return s1.default.join(r,t)}}}});var kA=L(Bl=>{\"use strict\";Object.defineProperty(Bl,\"__esModule\",{value:!0});Bl.UnsupportedAlgorithmError=Bl.CryptoError=Bl.LengthOrHashMismatchError=Bl.UnsignedMetadataError=Bl.RepositoryError=Bl.ValueError=void 0;var DK=class extends Error{};Bl.ValueError=DK;var Wb=class extends Error{};Bl.RepositoryError=Wb;var bK=class extends Wb{};Bl.UnsignedMetadataError=bK;var PK=class extends Wb{};Bl.LengthOrHashMismatchError=PK;var _O=class extends Error{};Bl.CryptoError=_O;var xK=class extends _O{};Bl.UnsupportedAlgorithmError=xK});var pFe=L(Pg=>{\"use strict\";Object.defineProperty(Pg,\"__esModule\",{value:!0});Pg.isDefined=lUt;Pg.isObject=AFe;Pg.isStringArray=cUt;Pg.isObjectArray=uUt;Pg.isStringRecord=fUt;Pg.isObjectRecord=AUt;function lUt(t){return t!==void 0}function AFe(t){return typeof t==\"object\"&&t!==null}function cUt(t){return Array.isArray(t)&&t.every(e=>typeof e==\"string\")}function uUt(t){return Array.isArray(t)&&t.every(AFe)}function fUt(t){return typeof t==\"object\"&&t!==null&&Object.keys(t).every(e=>typeof e==\"string\")&&Object.values(t).every(e=>typeof e==\"string\")}function AUt(t){return typeof t==\"object\"&&t!==null&&Object.keys(t).every(e=>typeof e==\"string\")&&Object.values(t).every(e=>typeof e==\"object\"&&e!==null)}});var QK=L((pwr,dFe)=>{var hFe=\",\",pUt=\":\",hUt=\"[\",gUt=\"]\",dUt=\"{\",mUt=\"}\";function kK(t){let e=[];if(typeof t==\"string\")e.push(gFe(t));else if(typeof t==\"boolean\")e.push(JSON.stringify(t));else if(Number.isInteger(t))e.push(JSON.stringify(t));else if(t===null)e.push(JSON.stringify(t));else if(Array.isArray(t)){e.push(hUt);let r=!0;t.forEach(s=>{r||e.push(hFe),r=!1,e.push(kK(s))}),e.push(gUt)}else if(typeof t==\"object\"){e.push(dUt);let r=!0;Object.keys(t).sort().forEach(s=>{r||e.push(hFe),r=!1,e.push(gFe(s)),e.push(pUt),e.push(kK(t[s]))}),e.push(mUt)}else throw new TypeError(\"cannot encode \"+t.toString());return e.join(\"\")}function gFe(t){return'\"'+t.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'}dFe.exports={canonicalize:kK}});var mFe=L(o1=>{\"use strict\";var yUt=o1&&o1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(o1,\"__esModule\",{value:!0});o1.verifySignature=void 0;var EUt=QK(),IUt=yUt(ye(\"crypto\")),CUt=(t,e,r)=>{let s=Buffer.from((0,EUt.canonicalize)(t));return IUt.default.verify(void 0,s,e,Buffer.from(r,\"hex\"))};o1.verifySignature=CUt});var Af=L(ru=>{\"use strict\";var wUt=ru&&ru.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),BUt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yFe=ru&&ru.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&wUt(e,t,r);return BUt(e,t),e};Object.defineProperty(ru,\"__esModule\",{value:!0});ru.crypto=ru.guard=void 0;ru.guard=yFe(pFe());ru.crypto=yFe(mFe())});var ly=L(mh=>{\"use strict\";var vUt=mh&&mh.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mh,\"__esModule\",{value:!0});mh.Signed=mh.MetadataKind=void 0;mh.isMetadataKind=DUt;var SUt=vUt(ye(\"util\")),Yb=kA(),TK=Af(),EFe=[\"1\",\"0\",\"31\"],RK;(function(t){t.Root=\"root\",t.Timestamp=\"timestamp\",t.Snapshot=\"snapshot\",t.Targets=\"targets\"})(RK||(mh.MetadataKind=RK={}));function DUt(t){return typeof t==\"string\"&&Object.values(RK).includes(t)}var FK=class t{constructor(e){this.specVersion=e.specVersion||EFe.join(\".\");let r=this.specVersion.split(\".\");if(!(r.length===2||r.length===3)||!r.every(s=>bUt(s)))throw new Yb.ValueError(\"Failed to parse specVersion\");if(r[0]!=EFe[0])throw new Yb.ValueError(\"Unsupported specVersion\");this.expires=e.expires,this.version=e.version,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.specVersion===e.specVersion&&this.expires===e.expires&&this.version===e.version&&SUt.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}isExpired(e){return e||(e=new Date),e>=new Date(this.expires)}static commonFieldsFromJSON(e){let{spec_version:r,expires:s,version:a,...n}=e;if(TK.guard.isDefined(r)){if(typeof r!=\"string\")throw new TypeError(\"spec_version must be a string\")}else throw new Yb.ValueError(\"spec_version is not defined\");if(TK.guard.isDefined(s)){if(typeof s!=\"string\")throw new TypeError(\"expires must be a string\")}else throw new Yb.ValueError(\"expires is not defined\");if(TK.guard.isDefined(a)){if(typeof a!=\"number\")throw new TypeError(\"version must be a number\")}else throw new Yb.ValueError(\"version is not defined\");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};mh.Signed=FK;function bUt(t){return!isNaN(Number(t))}});var Vb=L(kg=>{\"use strict\";var IFe=kg&&kg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kg,\"__esModule\",{value:!0});kg.TargetFile=kg.MetaFile=void 0;var CFe=IFe(ye(\"crypto\")),HO=IFe(ye(\"util\")),xg=kA(),UO=Af(),NK=class t{constructor(e){if(e.version<=0)throw new xg.ValueError(\"Metafile version must be at least 1\");e.length!==void 0&&wFe(e.length),this.version=e.version,this.length=e.length,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.version===e.version&&this.length===e.length&&HO.default.isDeepStrictEqual(this.hashes,e.hashes)&&HO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}verify(e){if(this.length!==void 0&&e.length!==this.length)throw new xg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${e.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=CFe.default.createHash(r)}catch{throw new xg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(e).digest(\"hex\");if(n!==s)throw new xg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let e={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(e.length=this.length),this.hashes&&(e.hashes=this.hashes),e}static fromJSON(e){let{version:r,length:s,hashes:a,...n}=e;if(typeof r!=\"number\")throw new TypeError(\"version must be a number\");if(UO.guard.isDefined(s)&&typeof s!=\"number\")throw new TypeError(\"length must be a number\");if(UO.guard.isDefined(a)&&!UO.guard.isStringRecord(a))throw new TypeError(\"hashes must be string keys and values\");return new t({version:r,length:s,hashes:a,unrecognizedFields:n})}};kg.MetaFile=NK;var OK=class t{constructor(e){wFe(e.length),this.length=e.length,this.path=e.path,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}get custom(){let e=this.unrecognizedFields.custom;return!e||Array.isArray(e)||typeof e!=\"object\"?{}:e}equals(e){return e instanceof t?this.length===e.length&&this.path===e.path&&HO.default.isDeepStrictEqual(this.hashes,e.hashes)&&HO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}async verify(e){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=CFe.default.createHash(n)}catch{throw new xg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of e)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new xg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest(\"hex\");if(f!==c)throw new xg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(e,r){let{length:s,hashes:a,...n}=r;if(typeof s!=\"number\")throw new TypeError(\"length must be a number\");if(!UO.guard.isStringRecord(a))throw new TypeError(\"hashes must have string keys and values\");return new t({length:s,path:e,hashes:a,unrecognizedFields:n})}};kg.TargetFile=OK;function wFe(t){if(t<0)throw new xg.ValueError(\"Length must be at least 0\")}});var BFe=L(LK=>{\"use strict\";Object.defineProperty(LK,\"__esModule\",{value:!0});LK.encodeOIDString=xUt;var PUt=6;function xUt(t){let e=t.split(\".\"),r=parseInt(e[0],10)*40+parseInt(e[1],10),s=[];e.slice(2).forEach(n=>{let c=kUt(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([PUt,a.length,...a])}function kUt(t){let e=[],r=0;for(;t>0;)e.unshift(t&127|r),t>>=7,r=128;return e}});var bFe=L(Jb=>{\"use strict\";var QUt=Jb&&Jb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Jb,\"__esModule\",{value:!0});Jb.getPublicKey=NUt;var a1=QUt(ye(\"crypto\")),Kb=kA(),MK=BFe(),jO=48,vFe=3,SFe=0,TUt=\"1.3.101.112\",RUt=\"1.2.840.10045.2.1\",FUt=\"1.2.840.10045.3.1.7\",_K=\"-----BEGIN PUBLIC KEY-----\";function NUt(t){switch(t.keyType){case\"rsa\":return OUt(t);case\"ed25519\":return LUt(t);case\"ecdsa\":case\"ecdsa-sha2-nistp256\":case\"ecdsa-sha2-nistp384\":return MUt(t);default:throw new Kb.UnsupportedAlgorithmError(`Unsupported key type: ${t.keyType}`)}}function OUt(t){if(!t.keyVal.startsWith(_K))throw new Kb.CryptoError(\"Invalid key format\");let e=a1.default.createPublicKey(t.keyVal);switch(t.scheme){case\"rsassa-pss-sha256\":return{key:e,padding:a1.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Kb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${t.scheme}`)}}function LUt(t){let e;if(t.keyVal.startsWith(_K))e=a1.default.createPublicKey(t.keyVal);else{if(!DFe(t.keyVal))throw new Kb.CryptoError(\"Invalid key format\");e=a1.default.createPublicKey({key:_Ut.hexToDER(t.keyVal),format:\"der\",type:\"spki\"})}return{key:e}}function MUt(t){let e;if(t.keyVal.startsWith(_K))e=a1.default.createPublicKey(t.keyVal);else{if(!DFe(t.keyVal))throw new Kb.CryptoError(\"Invalid key format\");e=a1.default.createPublicKey({key:UUt.hexToDER(t.keyVal),format:\"der\",type:\"spki\"})}return{key:e}}var _Ut={hexToDER:t=>{let e=Buffer.from(t,\"hex\"),r=(0,MK.encodeOIDString)(TUt),s=Buffer.concat([Buffer.concat([Buffer.from([jO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([vFe]),Buffer.from([e.length+1]),Buffer.from([SFe]),e])]);return Buffer.concat([Buffer.from([jO]),Buffer.from([s.length]),s])}},UUt={hexToDER:t=>{let e=Buffer.from(t,\"hex\"),r=Buffer.concat([Buffer.from([vFe]),Buffer.from([e.length+1]),Buffer.from([SFe]),e]),s=Buffer.concat([(0,MK.encodeOIDString)(RUt),(0,MK.encodeOIDString)(FUt)]),a=Buffer.concat([Buffer.from([jO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([jO]),Buffer.from([a.length+r.length]),a,r])}},DFe=t=>/^[0-9a-fA-F]+$/.test(t)});var qO=L(l1=>{\"use strict\";var HUt=l1&&l1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(l1,\"__esModule\",{value:!0});l1.Key=void 0;var PFe=HUt(ye(\"util\")),zb=kA(),xFe=Af(),jUt=bFe(),UK=class t{constructor(e){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=e;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(e){let r=e.signatures[this.keyID];if(!r)throw new zb.UnsignedMetadataError(\"no signature for key found in metadata\");if(!this.keyVal.public)throw new zb.UnsignedMetadataError(\"no public key found\");let s=(0,jUt.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=e.signed.toJSON();try{if(!xFe.crypto.verifySignature(a,s,r.sig))throw new zb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof zb.UnsignedMetadataError?n:new zb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(e){return e instanceof t?this.keyID===e.keyID&&this.keyType===e.keyType&&this.scheme===e.scheme&&PFe.default.isDeepStrictEqual(this.keyVal,e.keyVal)&&PFe.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(e,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!=\"string\")throw new TypeError(\"keytype must be a string\");if(typeof a!=\"string\")throw new TypeError(\"scheme must be a string\");if(!xFe.guard.isStringRecord(n))throw new TypeError(\"keyval must be a string record\");return new t({keyID:e,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};l1.Key=UK});var FFe=L((Cwr,RFe)=>{\"use strict\";RFe.exports=QFe;function QFe(t,e,r){t instanceof RegExp&&(t=kFe(t,r)),e instanceof RegExp&&(e=kFe(e,r));var s=TFe(t,e,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+t.length,s[1]),post:r.slice(s[1]+e.length)}}function kFe(t,e){var r=e.match(t);return r?r[0]:null}QFe.range=TFe;function TFe(t,e,r){var s,a,n,c,f,p=r.indexOf(t),h=r.indexOf(e,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(t,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a<n&&(n=a,c=h),h=r.indexOf(e,E+1)),E=p<h&&p>=0?p:h;s.length&&(f=[n,c])}return f}});var jFe=L((wwr,HFe)=>{var NFe=FFe();HFe.exports=WUt;var OFe=\"\\0SLASH\"+Math.random()+\"\\0\",LFe=\"\\0OPEN\"+Math.random()+\"\\0\",jK=\"\\0CLOSE\"+Math.random()+\"\\0\",MFe=\"\\0COMMA\"+Math.random()+\"\\0\",_Fe=\"\\0PERIOD\"+Math.random()+\"\\0\";function HK(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function qUt(t){return t.split(\"\\\\\\\\\").join(OFe).split(\"\\\\{\").join(LFe).split(\"\\\\}\").join(jK).split(\"\\\\,\").join(MFe).split(\"\\\\.\").join(_Fe)}function GUt(t){return t.split(OFe).join(\"\\\\\").split(LFe).join(\"{\").split(jK).join(\"}\").split(MFe).join(\",\").split(_Fe).join(\".\")}function UFe(t){if(!t)return[\"\"];var e=[],r=NFe(\"{\",\"}\",t);if(!r)return t.split(\",\");var s=r.pre,a=r.body,n=r.post,c=s.split(\",\");c[c.length-1]+=\"{\"+a+\"}\";var f=UFe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),e.push.apply(e,c),e}function WUt(t){return t?(t.substr(0,2)===\"{}\"&&(t=\"\\\\{\\\\}\"+t.substr(2)),Zb(qUt(t),!0).map(GUt)):[]}function YUt(t){return\"{\"+t+\"}\"}function VUt(t){return/^-?0\\d/.test(t)}function KUt(t,e){return t<=e}function JUt(t,e){return t>=e}function Zb(t,e){var r=[],s=NFe(\"{\",\"}\",t);if(!s)return[t];var a=s.pre,n=s.post.length?Zb(s.post,!1):[\"\"];if(/\\$$/.test(s.pre))for(var c=0;c<n.length;c++){var f=a+\"{\"+s.body+\"}\"+n[c];r.push(f)}else{var p=/^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(s.body),h=/^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(s.body),E=p||h,C=s.body.indexOf(\",\")>=0;if(!E&&!C)return s.post.match(/,.*\\}/)?(t=s.pre+\"{\"+s.body+jK+s.post,Zb(t)):[t];var S;if(E)S=s.body.split(/\\.\\./);else if(S=UFe(s.body),S.length===1&&(S=Zb(S[0],!1).map(YUt),S.length===1))return n.map(function(Ce){return s.pre+S[0]+Ce});var P;if(E){var I=HK(S[0]),R=HK(S[1]),N=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(HK(S[2])):1,W=KUt,te=R<I;te&&(U*=-1,W=JUt);var ie=S.some(VUt);P=[];for(var Ae=I;W(Ae,R);Ae+=U){var ce;if(h)ce=String.fromCharCode(Ae),ce===\"\\\\\"&&(ce=\"\");else if(ce=String(Ae),ie){var me=N-ce.length;if(me>0){var pe=new Array(me+1).join(\"0\");Ae<0?ce=\"-\"+pe+ce.slice(1):ce=pe+ce}}P.push(ce)}}else{P=[];for(var Be=0;Be<S.length;Be++)P.push.apply(P,Zb(S[Be],!1))}for(var Be=0;Be<P.length;Be++)for(var c=0;c<n.length;c++){var f=a+P[Be]+n[c];(!e||E||f)&&r.push(f)}}return r}});var qFe=L(GO=>{\"use strict\";Object.defineProperty(GO,\"__esModule\",{value:!0});GO.assertValidPattern=void 0;var zUt=1024*64,ZUt=t=>{if(typeof t!=\"string\")throw new TypeError(\"invalid pattern\");if(t.length>zUt)throw new TypeError(\"pattern is too long\")};GO.assertValidPattern=ZUt});var WFe=L(WO=>{\"use strict\";Object.defineProperty(WO,\"__esModule\",{value:!0});WO.parseClass=void 0;var XUt={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},Xb=t=>t.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),$Ut=t=>t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),GFe=t=>t.join(\"\"),e4t=(t,e)=>{let r=e;if(t.charAt(r)!==\"[\")throw new Error(\"not in a brace expression\");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C=\"\";e:for(;n<t.length;){let R=t.charAt(n);if((R===\"!\"||R===\"^\")&&n===r+1){h=!0,n++;continue}if(R===\"]\"&&c&&!p){E=n+1;break}if(c=!0,R===\"\\\\\"&&!p){p=!0,n++;continue}if(R===\"[\"&&!p){for(let[N,[U,W,te]]of Object.entries(XUt))if(t.startsWith(N,n)){if(C)return[\"$.\",!1,t.length-r,!0];n+=N.length,te?a.push(U):s.push(U),f=f||W;continue e}}if(p=!1,C){R>C?s.push(Xb(C)+\"-\"+Xb(R)):R===C&&s.push(Xb(R)),C=\"\",n++;continue}if(t.startsWith(\"-]\",n+1)){s.push(Xb(R+\"-\")),n+=2;continue}if(t.startsWith(\"-\",n+1)){C=R,n+=2;continue}s.push(Xb(R)),n++}if(E<n)return[\"\",!1,0,!1];if(!s.length&&!a.length)return[\"$.\",!1,t.length-r,!0];if(a.length===0&&s.length===1&&/^\\\\?.$/.test(s[0])&&!h){let R=s[0].length===2?s[0].slice(-1):s[0];return[$Ut(R),!1,E-r,!1]}let S=\"[\"+(h?\"^\":\"\")+GFe(s)+\"]\",P=\"[\"+(h?\"\":\"^\")+GFe(a)+\"]\";return[s.length&&a.length?\"(\"+S+\"|\"+P+\")\":s.length?S:P,f,E-r,!0]};WO.parseClass=e4t});var VO=L(YO=>{\"use strict\";Object.defineProperty(YO,\"__esModule\",{value:!0});YO.unescape=void 0;var t4t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):t.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\");YO.unescape=t4t});var WK=L(zO=>{\"use strict\";Object.defineProperty(zO,\"__esModule\",{value:!0});zO.AST=void 0;var r4t=WFe(),KO=VO(),n4t=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),YFe=t=>n4t.has(t),i4t=\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\",JO=\"(?!\\\\.)\",s4t=new Set([\"[\",\".\"]),o4t=new Set([\"..\",\".\"]),a4t=new Set(\"().*{}+?[]^$\\\\!\"),l4t=t=>t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),GK=\"[^/]\",VFe=GK+\"*?\",KFe=GK+\"+?\",qK=class t{type;#t;#r;#i=!1;#e=[];#n;#o;#l;#a=!1;#s;#c;#f=!1;constructor(e,r,s={}){this.type=e,e&&(this.#r=!0),this.#n=r,this.#t=this.#n?this.#n.#t:this,this.#s=this.#t===this?s:this.#t.#s,this.#l=this.#t===this?[]:this.#t.#l,e===\"!\"&&!this.#t.#a&&this.#l.push(this),this.#o=this.#n?this.#n.#e.length:0}get hasMagic(){if(this.#r!==void 0)return this.#r;for(let e of this.#e)if(typeof e!=\"string\"&&(e.type||e.hasMagic))return this.#r=!0;return this.#r}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+\"(\"+this.#e.map(e=>String(e)).join(\"|\")+\")\":this.#c=this.#e.map(e=>String(e)).join(\"\")}#p(){if(this!==this.#t)throw new Error(\"should only call on root\");if(this.#a)return this;this.toString(),this.#a=!0;let e;for(;e=this.#l.pop();){if(e.type!==\"!\")continue;let r=e,s=r.#n;for(;s;){for(let a=r.#o+1;!s.type&&a<s.#e.length;a++)for(let n of e.#e){if(typeof n==\"string\")throw new Error(\"string part in extglob AST??\");n.copyIn(s.#e[a])}r=s,s=r.#n}}return this}push(...e){for(let r of e)if(r!==\"\"){if(typeof r!=\"string\"&&!(r instanceof t&&r.#n===this))throw new Error(\"invalid part: \"+r);this.#e.push(r)}}toJSON(){let e=this.type===null?this.#e.slice().map(r=>typeof r==\"string\"?r:r.toJSON()):[this.type,...this.#e.map(r=>r.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&this.#n?.type===\"!\")&&e.push({}),e}isStart(){if(this.#t===this)return!0;if(!this.#n?.isStart())return!1;if(this.#o===0)return!0;let e=this.#n;for(let r=0;r<this.#o;r++){let s=e.#e[r];if(!(s instanceof t&&s.type===\"!\"))return!1}return!0}isEnd(){if(this.#t===this||this.#n?.type===\"!\")return!0;if(!this.#n?.isEnd())return!1;if(!this.type)return this.#n?.isEnd();let e=this.#n?this.#n.#e.length:0;return this.#o===e-1}copyIn(e){typeof e==\"string\"?this.push(e):this.push(e.clone(this))}clone(e){let r=new t(this.type,e);for(let s of this.#e)r.copyIn(s);return r}static#u(e,r,s,a){let n=!1,c=!1,f=-1,p=!1;if(r.type===null){let P=s,I=\"\";for(;P<e.length;){let R=e.charAt(P++);if(n||R===\"\\\\\"){n=!n,I+=R;continue}if(c){P===f+1?(R===\"^\"||R===\"!\")&&(p=!0):R===\"]\"&&!(P===f+2&&p)&&(c=!1),I+=R;continue}else if(R===\"[\"){c=!0,f=P,p=!1,I+=R;continue}if(!a.noext&&YFe(R)&&e.charAt(P)===\"(\"){r.push(I),I=\"\";let N=new t(R,r);P=t.#u(e,N,P,a),r.push(N);continue}I+=R}return r.push(I),P}let h=s+1,E=new t(null,r),C=[],S=\"\";for(;h<e.length;){let P=e.charAt(h++);if(n||P===\"\\\\\"){n=!n,S+=P;continue}if(c){h===f+1?(P===\"^\"||P===\"!\")&&(p=!0):P===\"]\"&&!(h===f+2&&p)&&(c=!1),S+=P;continue}else if(P===\"[\"){c=!0,f=h,p=!1,S+=P;continue}if(YFe(P)&&e.charAt(h)===\"(\"){E.push(S),S=\"\";let I=new t(P,E);E.push(I),h=t.#u(e,I,h,a);continue}if(P===\"|\"){E.push(S),S=\"\",C.push(E),E=new t(null,r);continue}if(P===\")\")return S===\"\"&&r.#e.length===0&&(r.#f=!0),E.push(S),S=\"\",r.push(...C,E),h;S+=P}return r.type=null,r.#r=void 0,r.#e=[e.substring(s-1)],h}static fromGlob(e,r={}){let s=new t(null,void 0,r);return t.#u(e,s,0,r),s}toMMPattern(){if(this!==this.#t)return this.#t.toMMPattern();let e=this.toString(),[r,s,a,n]=this.toRegExpSource();if(!(a||this.#r||this.#s.nocase&&!this.#s.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return s;let f=(this.#s.nocase?\"i\":\"\")+(n?\"u\":\"\");return Object.assign(new RegExp(`^${r}$`,f),{_src:r,_glob:e})}get options(){return this.#s}toRegExpSource(e){let r=e??!!this.#s.dot;if(this.#t===this&&this.#p(),!this.type){let p=this.isStart()&&this.isEnd(),h=this.#e.map(P=>{let[I,R,N,U]=typeof P==\"string\"?t.#h(P,this.#r,p):P.toRegExpSource(e);return this.#r=this.#r||N,this.#i=this.#i||U,I}).join(\"\"),E=\"\";if(this.isStart()&&typeof this.#e[0]==\"string\"&&!(this.#e.length===1&&o4t.has(this.#e[0]))){let I=s4t,R=r&&I.has(h.charAt(0))||h.startsWith(\"\\\\.\")&&I.has(h.charAt(2))||h.startsWith(\"\\\\.\\\\.\")&&I.has(h.charAt(4)),N=!r&&!e&&I.has(h.charAt(0));E=R?i4t:N?JO:\"\"}let C=\"\";return this.isEnd()&&this.#t.#a&&this.#n?.type===\"!\"&&(C=\"(?:$|\\\\/)\"),[E+h+C,(0,KO.unescape)(h),this.#r=!!this.#r,this.#i]}let s=this.type===\"*\"||this.type===\"+\",a=this.type===\"!\"?\"(?:(?!(?:\":\"(?:\",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!==\"!\"){let p=this.toString();return this.#e=[p],this.type=null,this.#r=void 0,[p,(0,KO.unescape)(this.toString()),!1,!1]}let c=!s||e||r||!JO?\"\":this.#A(!0);c===n&&(c=\"\"),c&&(n=`(?:${n})(?:${c})*?`);let f=\"\";if(this.type===\"!\"&&this.#f)f=(this.isStart()&&!r?JO:\"\")+KFe;else{let p=this.type===\"!\"?\"))\"+(this.isStart()&&!r&&!e?JO:\"\")+VFe+\")\":this.type===\"@\"?\")\":this.type===\"?\"?\")?\":this.type===\"+\"&&c?\")\":this.type===\"*\"&&c?\")?\":`)${this.type}`;f=a+n+p}return[f,(0,KO.unescape)(n),this.#r=!!this.#r,this.#i]}#A(e){return this.#e.map(r=>{if(typeof r==\"string\")throw new Error(\"string type in extglob ast??\");let[s,a,n,c]=r.toRegExpSource(e);return this.#i=this.#i||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join(\"|\")}static#h(e,r,s=!1){let a=!1,n=\"\",c=!1;for(let f=0;f<e.length;f++){let p=e.charAt(f);if(a){a=!1,n+=(a4t.has(p)?\"\\\\\":\"\")+p;continue}if(p===\"\\\\\"){f===e.length-1?n+=\"\\\\\\\\\":a=!0;continue}if(p===\"[\"){let[h,E,C,S]=(0,r4t.parseClass)(e,f);if(C){n+=h,c=c||E,f+=C-1,r=r||S;continue}}if(p===\"*\"){s&&e===\"*\"?n+=KFe:n+=VFe,r=!0;continue}if(p===\"?\"){n+=GK,r=!0;continue}n+=l4t(p)}return[n,(0,KO.unescape)(e),!!r,c]}};zO.AST=qK});var YK=L(ZO=>{\"use strict\";Object.defineProperty(ZO,\"__esModule\",{value:!0});ZO.escape=void 0;var c4t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\\]]/g,\"[$&]\"):t.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\");ZO.escape=c4t});var tNe=L(pr=>{\"use strict\";var u4t=pr&&pr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pr,\"__esModule\",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var f4t=u4t(jFe()),XO=qFe(),ZFe=WK(),A4t=YK(),p4t=VO(),h4t=(t,e,r={})=>((0,XO.assertValidPattern)(e),!r.nocomment&&e.charAt(0)===\"#\"?!1:new cy(e,r).match(t));pr.minimatch=h4t;var g4t=/^\\*+([^+@!?\\*\\[\\(]*)$/,d4t=t=>e=>!e.startsWith(\".\")&&e.endsWith(t),m4t=t=>e=>e.endsWith(t),y4t=t=>(t=t.toLowerCase(),e=>!e.startsWith(\".\")&&e.toLowerCase().endsWith(t)),E4t=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),I4t=/^\\*+\\.\\*+$/,C4t=t=>!t.startsWith(\".\")&&t.includes(\".\"),w4t=t=>t!==\".\"&&t!==\"..\"&&t.includes(\".\"),B4t=/^\\.\\*+$/,v4t=t=>t!==\".\"&&t!==\"..\"&&t.startsWith(\".\"),S4t=/^\\*+$/,D4t=t=>t.length!==0&&!t.startsWith(\".\"),b4t=t=>t.length!==0&&t!==\".\"&&t!==\"..\",P4t=/^\\?+([^+@!?\\*\\[\\(]*)?$/,x4t=([t,e=\"\"])=>{let r=XFe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},k4t=([t,e=\"\"])=>{let r=$Fe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},Q4t=([t,e=\"\"])=>{let r=$Fe([t]);return e?s=>r(s)&&s.endsWith(e):r},T4t=([t,e=\"\"])=>{let r=XFe([t]);return e?s=>r(s)&&s.endsWith(e):r},XFe=([t])=>{let e=t.length;return r=>r.length===e&&!r.startsWith(\".\")},$Fe=([t])=>{let e=t.length;return r=>r.length===e&&r!==\".\"&&r!==\"..\"},eNe=typeof process==\"object\"&&process?typeof process.env==\"object\"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\",JFe={win32:{sep:\"\\\\\"},posix:{sep:\"/\"}};pr.sep=eNe===\"win32\"?JFe.win32.sep:JFe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol(\"globstar **\");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var R4t=\"[^/]\",F4t=R4t+\"*?\",N4t=\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\",O4t=\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",L4t=(t,e={})=>r=>(0,pr.minimatch)(r,t,e);pr.filter=L4t;pr.minimatch.filter=pr.filter;var nu=(t,e={})=>Object.assign({},t,e),M4t=t=>{if(!t||typeof t!=\"object\"||!Object.keys(t).length)return pr.minimatch;let e=pr.minimatch;return Object.assign((s,a,n={})=>e(s,a,nu(t,n)),{Minimatch:class extends e.Minimatch{constructor(a,n={}){super(a,nu(t,n))}static defaults(a){return e.defaults(nu(t,a)).Minimatch}},AST:class extends e.AST{constructor(a,n,c={}){super(a,n,nu(t,c))}static fromGlob(a,n={}){return e.AST.fromGlob(a,nu(t,n))}},unescape:(s,a={})=>e.unescape(s,nu(t,a)),escape:(s,a={})=>e.escape(s,nu(t,a)),filter:(s,a={})=>e.filter(s,nu(t,a)),defaults:s=>e.defaults(nu(t,s)),makeRe:(s,a={})=>e.makeRe(s,nu(t,a)),braceExpand:(s,a={})=>e.braceExpand(s,nu(t,a)),match:(s,a,n={})=>e.match(s,a,nu(t,n)),sep:e.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=M4t;pr.minimatch.defaults=pr.defaults;var _4t=(t,e={})=>((0,XO.assertValidPattern)(t),e.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(t)?[t]:(0,f4t.default)(t));pr.braceExpand=_4t;pr.minimatch.braceExpand=pr.braceExpand;var U4t=(t,e={})=>new cy(t,e).makeRe();pr.makeRe=U4t;pr.minimatch.makeRe=pr.makeRe;var H4t=(t,e,r={})=>{let s=new cy(e,r);return t=t.filter(a=>s.match(a)),s.options.nonull&&!t.length&&t.push(e),t};pr.match=H4t;pr.minimatch.match=pr.match;var zFe=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/,j4t=t=>t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),cy=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,r={}){(0,XO.assertValidPattern)(e),r=r||{},this.options=r,this.pattern=e,this.platform=r.platform||eNe,this.isWindows=this.platform===\"win32\",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let r of e)if(typeof r!=\"string\")return!0;return!1}debug(...e){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)===\"#\"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===\"\"&&n[1]===\"\"&&(n[2]===\"?\"||!zFe.test(n[2]))&&!zFe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n<this.set.length;n++){let c=this.set[n];c[0]===\"\"&&c[1]===\"\"&&this.globParts[n][2]===\"?\"&&typeof c[3]==\"string\"&&/^[a-z]:$/i.test(c[3])&&(c[2]=\"?\")}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let s=0;s<e.length;s++)for(let a=0;a<e[s].length;a++)e[s][a]===\"**\"&&(e[s][a]=\"*\");let{optimizationLevel:r=1}=this.options;return r>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):r>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(r=>{let s=-1;for(;(s=r.indexOf(\"**\",s+1))!==-1;){let a=s;for(;r[a+1]===\"**\";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(e){return e.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a===\"**\"&&n===\"**\"?s:a===\"..\"&&n&&n!==\"..\"&&n!==\".\"&&n!==\"**\"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[\"\"]:r))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;a<e.length-1;a++){let n=e[a];a===1&&n===\"\"&&e[0]===\"\"||(n===\".\"||n===\"\")&&(r=!0,e.splice(a,1),a--)}e[0]===\".\"&&e.length===2&&(e[1]===\".\"||e[1]===\"\")&&(r=!0,e.pop())}let s=0;for(;(s=e.indexOf(\"..\",s+1))!==-1;){let a=e[s-1];a&&a!==\".\"&&a!==\"..\"&&a!==\"**\"&&(r=!0,e.splice(s-1,2),s-=2)}}while(r);return e.length===0?[\"\"]:e}firstPhasePreProcess(e){let r=!1;do{r=!1;for(let s of e){let a=-1;for(;(a=s.indexOf(\"**\",a+1))!==-1;){let c=a;for(;s[c+1]===\"**\";)c++;c>a&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==\"..\"||!p||p===\".\"||p===\"..\"||!h||h===\".\"||h===\"..\")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]=\"**\",e.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;c<s.length-1;c++){let f=s[c];c===1&&f===\"\"&&s[0]===\"\"||(f===\".\"||f===\"\")&&(r=!0,s.splice(c,1),c--)}s[0]===\".\"&&s.length===2&&(s[1]===\".\"||s[1]===\"\")&&(r=!0,s.pop())}let n=0;for(;(n=s.indexOf(\"..\",n+1))!==-1;){let c=s[n-1];if(c&&c!==\".\"&&c!==\"..\"&&c!==\"**\"){r=!0;let p=n===1&&s[n+1]===\"**\"?[\".\"]:[];s.splice(n-1,2,...p),s.length===0&&s.push(\"\"),n-=2}}}}while(r);return e}secondPhasePreProcess(e){for(let r=0;r<e.length-1;r++)for(let s=r+1;s<e.length;s++){let a=this.partsMatch(e[r],e[s],!this.preserveMultipleSlashes);if(a){e[r]=[],e[s]=a;break}}return e.filter(r=>r.length)}partsMatch(e,r,s=!1){let a=0,n=0,c=[],f=\"\";for(;a<e.length&&n<r.length;)if(e[a]===r[n])c.push(f===\"b\"?r[n]:e[a]),a++,n++;else if(s&&e[a]===\"**\"&&r[n]===e[a+1])c.push(e[a]),a++;else if(s&&r[n]===\"**\"&&e[a]===r[n+1])c.push(r[n]),n++;else if(e[a]===\"*\"&&r[n]&&(this.options.dot||!r[n].startsWith(\".\"))&&r[n]!==\"**\"){if(f===\"b\")return!1;f=\"a\",c.push(e[a]),a++,n++}else if(r[n]===\"*\"&&e[a]&&(this.options.dot||!e[a].startsWith(\".\"))&&e[a]!==\"**\"){if(f===\"a\")return!1;f=\"b\",c.push(r[n]),a++,n++}else return!1;return e.length===r.length&&c}parseNegate(){if(this.nonegate)return;let e=this.pattern,r=!1,s=0;for(let a=0;a<e.length&&e.charAt(a)===\"!\";a++)r=!r,s++;s&&(this.pattern=e.slice(s)),this.negate=r}matchOne(e,r,s=!1){let a=this.options;if(this.isWindows){let R=typeof e[0]==\"string\"&&/^[a-z]:$/i.test(e[0]),N=!R&&e[0]===\"\"&&e[1]===\"\"&&e[2]===\"?\"&&/^[a-z]:$/i.test(e[3]),U=typeof r[0]==\"string\"&&/^[a-z]:$/i.test(r[0]),W=!U&&r[0]===\"\"&&r[1]===\"\"&&r[2]===\"?\"&&typeof r[3]==\"string\"&&/^[a-z]:$/i.test(r[3]),te=N?3:R?0:void 0,ie=W?3:U?0:void 0;if(typeof te==\"number\"&&typeof ie==\"number\"){let[Ae,ce]=[e[te],r[ie]];Ae.toLowerCase()===ce.toLowerCase()&&(r[ie]=Ae,ie>te?r=r.slice(ie):te>ie&&(e=e.slice(te)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug(\"matchOne\",this,{file:e,pattern:r}),this.debug(\"matchOne\",e.length,r.length);for(var c=0,f=0,p=e.length,h=r.length;c<p&&f<h;c++,f++){this.debug(\"matchOne loop\");var E=r[f],C=e[c];if(this.debug(r,E,C),E===!1)return!1;if(E===pr.GLOBSTAR){this.debug(\"GLOBSTAR\",[r,E,C]);var S=c,P=f+1;if(P===h){for(this.debug(\"** at the end\");c<p;c++)if(e[c]===\".\"||e[c]===\"..\"||!a.dot&&e[c].charAt(0)===\".\")return!1;return!0}for(;S<p;){var I=e[S];if(this.debug(`\nglobstar while`,e,S,r,P,I),this.matchOne(e.slice(S),r.slice(P),s))return this.debug(\"globstar found match!\",S,p,I),!0;if(I===\".\"||I===\"..\"||!a.dot&&I.charAt(0)===\".\"){this.debug(\"dot detected!\",e,S,r,P);break}this.debug(\"globstar swallow a segment, and continue\"),S++}return!!(s&&(this.debug(`\n>>> no match, partial?`,e,S,r,P),S===p))}let R;if(typeof E==\"string\"?(R=C===E,this.debug(\"string match\",E,C,R)):(R=E.test(C),this.debug(\"pattern match\",E,C,R)),!R)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&e[c]===\"\";throw new Error(\"wtf?\")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(e){(0,XO.assertValidPattern)(e);let r=this.options;if(e===\"**\")return pr.GLOBSTAR;if(e===\"\")return\"\";let s,a=null;(s=e.match(S4t))?a=r.dot?b4t:D4t:(s=e.match(g4t))?a=(r.nocase?r.dot?E4t:y4t:r.dot?m4t:d4t)(s[1]):(s=e.match(P4t))?a=(r.nocase?r.dot?k4t:x4t:r.dot?Q4t:T4t)(s):(s=e.match(I4t))?a=r.dot?w4t:C4t:(s=e.match(B4t))&&(a=v4t);let n=ZFe.AST.fromGlob(e,this.options).toMMPattern();return a&&typeof n==\"object\"&&Reflect.defineProperty(n,\"test\",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?F4t:r.dot?N4t:O4t,a=new Set(r.nocase?[\"i\"]:[]),n=e.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(\"\"))a.add(C);return typeof E==\"string\"?j4t(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],P=h[C-1];E!==pr.GLOBSTAR||P===pr.GLOBSTAR||(P===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]=\"(?:\\\\/|\"+s+\"\\\\/)?\"+S:h[C]=s:S===void 0?h[C-1]=P+\"(?:\\\\/|\"+s+\")?\":S!==pr.GLOBSTAR&&(h[C-1]=P+\"(?:\\\\/|\\\\/\"+s+\"\\\\/)\"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join(\"/\")}).join(\"|\"),[c,f]=e.length>1?[\"(?:\",\")\"]:[\"\",\"\"];n=\"^\"+c+n+f+\"$\",this.negate&&(n=\"^(?!\"+n+\").+$\");try{this.regexp=new RegExp(n,[...a].join(\"\"))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(e)?[\"\",...e.split(/\\/+/)]:e.split(/\\/+/)}match(e,r=this.partial){if(this.debug(\"match\",e,this.pattern),this.comment)return!1;if(this.empty)return e===\"\";if(e===\"/\"&&r)return!0;let s=this.options;this.isWindows&&(e=e.split(\"\\\\\").join(\"/\"));let a=this.slashSplit(e);this.debug(this.pattern,\"split\",a);let n=this.set;this.debug(this.pattern,\"set\",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f<n.length;f++){let p=n[f],h=a;if(s.matchBase&&p.length===1&&(h=[c]),this.matchOne(h,p,r))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return pr.minimatch.defaults(e).Minimatch}};pr.Minimatch=cy;var q4t=WK();Object.defineProperty(pr,\"AST\",{enumerable:!0,get:function(){return q4t.AST}});var G4t=YK();Object.defineProperty(pr,\"escape\",{enumerable:!0,get:function(){return G4t.escape}});var W4t=VO();Object.defineProperty(pr,\"unescape\",{enumerable:!0,get:function(){return W4t.unescape}});pr.minimatch.AST=ZFe.AST;pr.minimatch.Minimatch=cy;pr.minimatch.escape=A4t.escape;pr.minimatch.unescape=p4t.unescape});var JK=L(iu=>{\"use strict\";var rNe=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,\"__esModule\",{value:!0});iu.SuccinctRoles=iu.DelegatedRole=iu.Role=iu.TOP_LEVEL_ROLE_NAMES=void 0;var nNe=rNe(ye(\"crypto\")),Y4t=tNe(),$O=rNe(ye(\"util\")),eL=kA(),uy=Af();iu.TOP_LEVEL_ROLE_NAMES=[\"root\",\"targets\",\"snapshot\",\"timestamp\"];var $b=class t{constructor(e){let{keyIDs:r,threshold:s,unrecognizedFields:a}=e;if(V4t(r))throw new eL.ValueError(\"duplicate key IDs found\");if(s<1)throw new eL.ValueError(\"threshold must be at least 1\");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(e){return e instanceof t?this.threshold===e.threshold&&$O.default.isDeepStrictEqual(this.keyIDs,e.keyIDs)&&$O.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(e){let{keyids:r,threshold:s,...a}=e;if(!uy.guard.isStringArray(r))throw new TypeError(\"keyids must be an array\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");return new t({keyIDs:r,threshold:s,unrecognizedFields:a})}};iu.Role=$b;function V4t(t){return new Set(t).size!==t.length}var VK=class t extends $b{constructor(e){super(e);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=e;if(this.name=r,this.terminating=s,e.paths&&e.pathHashPrefixes)throw new eL.ValueError(\"paths and pathHashPrefixes are mutually exclusive\");this.paths=a,this.pathHashPrefixes=n}equals(e){return e instanceof t?super.equals(e)&&this.name===e.name&&this.terminating===e.terminating&&$O.default.isDeepStrictEqual(this.paths,e.paths)&&$O.default.isDeepStrictEqual(this.pathHashPrefixes,e.pathHashPrefixes):!1}isDelegatedPath(e){if(this.paths)return this.paths.some(r=>J4t(e,r));if(this.pathHashPrefixes){let s=nNe.default.createHash(\"sha256\").update(e).digest(\"hex\");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let e={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(e.paths=this.paths),this.pathHashPrefixes&&(e.path_hash_prefixes=this.pathHashPrefixes),e}static fromJSON(e){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=e;if(!uy.guard.isStringArray(r))throw new TypeError(\"keyids must be an array of strings\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");if(typeof a!=\"string\")throw new TypeError(\"name must be a string\");if(typeof n!=\"boolean\")throw new TypeError(\"terminating must be a boolean\");if(uy.guard.isDefined(c)&&!uy.guard.isStringArray(c))throw new TypeError(\"paths must be an array of strings\");if(uy.guard.isDefined(f)&&!uy.guard.isStringArray(f))throw new TypeError(\"path_hash_prefixes must be an array of strings\");return new t({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};iu.DelegatedRole=VK;var K4t=(t,e)=>t.map((r,s)=>[r,e[s]]);function J4t(t,e){let r=t.split(\"/\"),s=e.split(\"/\");return s.length!=r.length?!1:K4t(r,s).every(([a,n])=>(0,Y4t.minimatch)(a,n))}var KK=class t extends $b{constructor(e){super(e);let{bitLength:r,namePrefix:s}=e;if(r<=0||r>32)throw new eL.ValueError(\"bitLength must be between 1 and 32\");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(e){return e instanceof t?super.equals(e)&&this.bitLength===e.bitLength&&this.namePrefix===e.namePrefix:!1}getRoleForTarget(e){let a=nNe.default.createHash(\"sha256\").update(e).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,\"0\");return`${this.namePrefix}-${f}`}*getRoles(){for(let e=0;e<this.numberOfBins;e++){let r=e.toString(16).padStart(this.suffixLen,\"0\");yield`${this.namePrefix}-${r}`}}isDelegatedRole(e){let r=this.namePrefix+\"-\";if(!e.startsWith(r))return!1;let s=e.slice(r.length,e.length);if(s.length!=this.suffixLen||!s.match(/^[0-9a-fA-F]+$/))return!1;let a=parseInt(s,16);return 0<=a&&a<this.numberOfBins}toJSON(){return{...super.toJSON(),bit_length:this.bitLength,name_prefix:this.namePrefix}}static fromJSON(e){let{keyids:r,threshold:s,bit_length:a,name_prefix:n,...c}=e;if(!uy.guard.isStringArray(r))throw new TypeError(\"keyids must be an array of strings\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");if(typeof a!=\"number\")throw new TypeError(\"bit_length must be a number\");if(typeof n!=\"string\")throw new TypeError(\"name_prefix must be a string\");return new t({keyIDs:r,threshold:s,bitLength:a,namePrefix:n,unrecognizedFields:c})}};iu.SuccinctRoles=KK});var XK=L(c1=>{\"use strict\";var z4t=c1&&c1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(c1,\"__esModule\",{value:!0});c1.Root=void 0;var iNe=z4t(ye(\"util\")),zK=ly(),sNe=kA(),Z4t=qO(),tL=JK(),rL=Af(),ZK=class t extends zK.Signed{constructor(e){if(super(e),this.type=zK.MetadataKind.Root,this.keys=e.keys||{},this.consistentSnapshot=e.consistentSnapshot??!0,!e.roles)this.roles=tL.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new tL.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(e.roles));if(!tL.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new sNe.ValueError(\"missing top-level role\");this.roles=e.roles}}addKey(e,r){if(!this.roles[r])throw new sNe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(e.keyID)||this.roles[r].keyIDs.push(e.keyID),this.keys[e.keyID]=e}equals(e){return e instanceof t?super.equals(e)&&this.consistentSnapshot===e.consistentSnapshot&&iNe.default.isDeepStrictEqual(this.keys,e.keys)&&iNe.default.isDeepStrictEqual(this.roles,e.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:X4t(this.keys),roles:$4t(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=zK.Signed.commonFieldsFromJSON(e),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!=\"boolean\")throw new TypeError(\"consistent_snapshot must be a boolean\");return new t({...s,keys:e3t(a),roles:t3t(n),consistentSnapshot:c,unrecognizedFields:f})}};c1.Root=ZK;function X4t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function $4t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function e3t(t){let e;if(rL.guard.isDefined(t)){if(!rL.guard.isObjectRecord(t))throw new TypeError(\"keys must be an object\");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:Z4t.Key.fromJSON(s,a)}),{})}return e}function t3t(t){let e;if(rL.guard.isDefined(t)){if(!rL.guard.isObjectRecord(t))throw new TypeError(\"roles must be an object\");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:tL.Role.fromJSON(a)}),{})}return e}});var eJ=L(nL=>{\"use strict\";Object.defineProperty(nL,\"__esModule\",{value:!0});nL.Signature=void 0;var $K=class t{constructor(e){let{keyID:r,sig:s}=e;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(e){let{keyid:r,sig:s}=e;if(typeof r!=\"string\")throw new TypeError(\"keyid must be a string\");if(typeof s!=\"string\")throw new TypeError(\"sig must be a string\");return new t({keyID:r,sig:s})}};nL.Signature=$K});var nJ=L(u1=>{\"use strict\";var r3t=u1&&u1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(u1,\"__esModule\",{value:!0});u1.Snapshot=void 0;var n3t=r3t(ye(\"util\")),tJ=ly(),aNe=Vb(),oNe=Af(),rJ=class t extends tJ.Signed{constructor(e){super(e),this.type=tJ.MetadataKind.Snapshot,this.meta=e.meta||{\"targets.json\":new aNe.MetaFile({version:1})}}equals(e){return e instanceof t?super.equals(e)&&n3t.default.isDeepStrictEqual(this.meta,e.meta):!1}toJSON(){return{_type:this.type,meta:i3t(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=tJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,meta:s3t(a),unrecognizedFields:n})}};u1.Snapshot=rJ;function i3t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function s3t(t){let e;if(oNe.guard.isDefined(t))if(oNe.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:aNe.MetaFile.fromJSON(a)}),{});else throw new TypeError(\"meta field is malformed\");return e}});var lNe=L(f1=>{\"use strict\";var o3t=f1&&f1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(f1,\"__esModule\",{value:!0});f1.Delegations=void 0;var iL=o3t(ye(\"util\")),a3t=kA(),l3t=qO(),iJ=JK(),sL=Af(),sJ=class t{constructor(e){if(this.keys=e.keys,this.unrecognizedFields=e.unrecognizedFields||{},e.roles&&Object.keys(e.roles).some(r=>iJ.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new a3t.ValueError(\"Delegated role name conflicts with top-level role name\");this.succinctRoles=e.succinctRoles,this.roles=e.roles}equals(e){return e instanceof t?iL.default.isDeepStrictEqual(this.keys,e.keys)&&iL.default.isDeepStrictEqual(this.roles,e.roles)&&iL.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields)&&iL.default.isDeepStrictEqual(this.succinctRoles,e.succinctRoles):!1}*rolesForTarget(e){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(e)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(e),terminating:!0})}toJSON(){let e={keys:c3t(this.keys),...this.unrecognizedFields};return this.roles?e.roles=u3t(this.roles):this.succinctRoles&&(e.succinct_roles=this.succinctRoles.toJSON()),e}static fromJSON(e){let{keys:r,roles:s,succinct_roles:a,...n}=e,c;return sL.guard.isObject(a)&&(c=iJ.SuccinctRoles.fromJSON(a)),new t({keys:f3t(r),roles:A3t(s),unrecognizedFields:n,succinctRoles:c})}};f1.Delegations=sJ;function c3t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function u3t(t){return Object.values(t).map(e=>e.toJSON())}function f3t(t){if(!sL.guard.isObjectRecord(t))throw new TypeError(\"keys is malformed\");return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:l3t.Key.fromJSON(r,s)}),{})}function A3t(t){let e;if(sL.guard.isDefined(t)){if(!sL.guard.isObjectArray(t))throw new TypeError(\"roles is malformed\");e=t.reduce((r,s)=>{let a=iJ.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return e}});var lJ=L(A1=>{\"use strict\";var p3t=A1&&A1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(A1,\"__esModule\",{value:!0});A1.Targets=void 0;var cNe=p3t(ye(\"util\")),oJ=ly(),h3t=lNe(),g3t=Vb(),oL=Af(),aJ=class t extends oJ.Signed{constructor(e){super(e),this.type=oJ.MetadataKind.Targets,this.targets=e.targets||{},this.delegations=e.delegations}addTarget(e){this.targets[e.path]=e}equals(e){return e instanceof t?super.equals(e)&&cNe.default.isDeepStrictEqual(this.targets,e.targets)&&cNe.default.isDeepStrictEqual(this.delegations,e.delegations):!1}toJSON(){let e={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:d3t(this.targets),...this.unrecognizedFields};return this.delegations&&(e.delegations=this.delegations.toJSON()),e}static fromJSON(e){let{unrecognizedFields:r,...s}=oJ.Signed.commonFieldsFromJSON(e),{targets:a,delegations:n,...c}=r;return new t({...s,targets:m3t(a),delegations:y3t(n),unrecognizedFields:c})}};A1.Targets=aJ;function d3t(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function m3t(t){let e;if(oL.guard.isDefined(t))if(oL.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:g3t.TargetFile.fromJSON(s,a)}),{});else throw new TypeError(\"targets must be an object\");return e}function y3t(t){let e;if(oL.guard.isDefined(t))if(oL.guard.isObject(t))e=h3t.Delegations.fromJSON(t);else throw new TypeError(\"delegations must be an object\");return e}});var AJ=L(aL=>{\"use strict\";Object.defineProperty(aL,\"__esModule\",{value:!0});aL.Timestamp=void 0;var cJ=ly(),uNe=Vb(),uJ=Af(),fJ=class t extends cJ.Signed{constructor(e){super(e),this.type=cJ.MetadataKind.Timestamp,this.snapshotMeta=e.snapshotMeta||new uNe.MetaFile({version:1})}equals(e){return e instanceof t?super.equals(e)&&this.snapshotMeta.equals(e.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{\"snapshot.json\":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=cJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,snapshotMeta:E3t(a),unrecognizedFields:n})}};aL.Timestamp=fJ;function E3t(t){let e;if(uJ.guard.isDefined(t)){let r=t[\"snapshot.json\"];if(!uJ.guard.isDefined(r)||!uJ.guard.isObject(r))throw new TypeError(\"missing snapshot.json in meta\");e=uNe.MetaFile.fromJSON(r)}return e}});var ANe=L(h1=>{\"use strict\";var I3t=h1&&h1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(h1,\"__esModule\",{value:!0});h1.Metadata=void 0;var C3t=QK(),fNe=I3t(ye(\"util\")),p1=ly(),eP=kA(),w3t=XK(),B3t=eJ(),v3t=nJ(),S3t=lJ(),D3t=AJ(),pJ=Af(),hJ=class t{constructor(e,r,s){this.signed=e,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(e,r=!0){let s=Buffer.from((0,C3t.canonicalize)(this.signed.toJSON())),a=e(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(e,r){let s,a={};switch(this.signed.type){case p1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[e];break;case p1.MetadataKind.Targets:if(!this.signed.delegations)throw new eP.ValueError(`No delegations found for ${e}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[e]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(e)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError(\"invalid metadata type\")}if(!s)throw new eP.ValueError(`no delegation found for ${e}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.size<s.threshold)throw new eP.UnsignedMetadataError(`${e} was signed by ${n.size}/${s.threshold} keys`)}equals(e){return e instanceof t?this.signed.equals(e.signed)&&fNe.default.isDeepStrictEqual(this.signatures,e.signatures)&&fNe.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{signatures:Object.values(this.signatures).map(r=>r.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(e,r){let{signed:s,signatures:a,...n}=r;if(!pJ.guard.isDefined(s)||!pJ.guard.isObject(s))throw new TypeError(\"signed is not defined\");if(e!==s._type)throw new eP.ValueError(`expected '${e}', got ${s._type}`);if(!pJ.guard.isObjectArray(a))throw new TypeError(\"signatures is not an array\");let c;switch(e){case p1.MetadataKind.Root:c=w3t.Root.fromJSON(s);break;case p1.MetadataKind.Timestamp:c=D3t.Timestamp.fromJSON(s);break;case p1.MetadataKind.Snapshot:c=v3t.Snapshot.fromJSON(s);break;case p1.MetadataKind.Targets:c=S3t.Targets.fromJSON(s);break;default:throw new TypeError(\"invalid metadata type\")}let f={};return a.forEach(p=>{let h=B3t.Signature.fromJSON(p);if(f[h.keyID])throw new eP.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new t(c,f,n)}};h1.Metadata=hJ});var lL=L(Ri=>{\"use strict\";Object.defineProperty(Ri,\"__esModule\",{value:!0});Ri.Timestamp=Ri.Targets=Ri.Snapshot=Ri.Signature=Ri.Root=Ri.Metadata=Ri.Key=Ri.TargetFile=Ri.MetaFile=Ri.ValueError=Ri.MetadataKind=void 0;var b3t=ly();Object.defineProperty(Ri,\"MetadataKind\",{enumerable:!0,get:function(){return b3t.MetadataKind}});var P3t=kA();Object.defineProperty(Ri,\"ValueError\",{enumerable:!0,get:function(){return P3t.ValueError}});var pNe=Vb();Object.defineProperty(Ri,\"MetaFile\",{enumerable:!0,get:function(){return pNe.MetaFile}});Object.defineProperty(Ri,\"TargetFile\",{enumerable:!0,get:function(){return pNe.TargetFile}});var x3t=qO();Object.defineProperty(Ri,\"Key\",{enumerable:!0,get:function(){return x3t.Key}});var k3t=ANe();Object.defineProperty(Ri,\"Metadata\",{enumerable:!0,get:function(){return k3t.Metadata}});var Q3t=XK();Object.defineProperty(Ri,\"Root\",{enumerable:!0,get:function(){return Q3t.Root}});var T3t=eJ();Object.defineProperty(Ri,\"Signature\",{enumerable:!0,get:function(){return T3t.Signature}});var R3t=nJ();Object.defineProperty(Ri,\"Snapshot\",{enumerable:!0,get:function(){return R3t.Snapshot}});var F3t=lJ();Object.defineProperty(Ri,\"Targets\",{enumerable:!0,get:function(){return F3t.Targets}});var N3t=AJ();Object.defineProperty(Ri,\"Timestamp\",{enumerable:!0,get:function(){return N3t.Timestamp}})});var gNe=L((Uwr,hNe)=>{var g1=1e3,d1=g1*60,m1=d1*60,fy=m1*24,O3t=fy*7,L3t=fy*365.25;hNe.exports=function(t,e){e=e||{};var r=typeof t;if(r===\"string\"&&t.length>0)return M3t(t);if(r===\"number\"&&isFinite(t))return e.long?U3t(t):_3t(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))};function M3t(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),s=(e[2]||\"ms\").toLowerCase();switch(s){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*L3t;case\"weeks\":case\"week\":case\"w\":return r*O3t;case\"days\":case\"day\":case\"d\":return r*fy;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*m1;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*d1;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*g1;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function _3t(t){var e=Math.abs(t);return e>=fy?Math.round(t/fy)+\"d\":e>=m1?Math.round(t/m1)+\"h\":e>=d1?Math.round(t/d1)+\"m\":e>=g1?Math.round(t/g1)+\"s\":t+\"ms\"}function U3t(t){var e=Math.abs(t);return e>=fy?cL(t,e,fy,\"day\"):e>=m1?cL(t,e,m1,\"hour\"):e>=d1?cL(t,e,d1,\"minute\"):e>=g1?cL(t,e,g1,\"second\"):t+\" ms\"}function cL(t,e,r,s){var a=e>=r*1.5;return Math.round(t/r)+\" \"+s+(a?\"s\":\"\")}});var gJ=L((Hwr,dNe)=>{function H3t(t){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=gNe(),r.destroy=h,Object.keys(t).forEach(E=>{r[E]=t[E]}),r.names=[],r.skips=[],r.formatters={};function e(E){let C=0;for(let S=0;S<E.length;S++)C=(C<<5)-C+E.charCodeAt(S),C|=0;return r.colors[Math.abs(C)%r.colors.length]}r.selectColor=e;function r(E){let C,S=null,P,I;function R(...N){if(!R.enabled)return;let U=R,W=Number(new Date),te=W-(C||W);U.diff=te,U.prev=C,U.curr=W,C=W,N[0]=r.coerce(N[0]),typeof N[0]!=\"string\"&&N.unshift(\"%O\");let ie=0;N[0]=N[0].replace(/%([a-zA-Z%])/g,(ce,me)=>{if(ce===\"%%\")return\"%\";ie++;let pe=r.formatters[me];if(typeof pe==\"function\"){let Be=N[ie];ce=pe.call(U,Be),N.splice(ie,1),ie--}return ce}),r.formatArgs.call(U,N),(U.log||r.log).apply(U,N)}return R.namespace=E,R.useColors=r.useColors(),R.color=r.selectColor(E),R.extend=s,R.destroy=r.destroy,Object.defineProperty(R,\"enabled\",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(P!==r.namespaces&&(P=r.namespaces,I=r.enabled(E)),I),set:N=>{S=N}}),typeof r.init==\"function\"&&r.init(R),R}function s(E,C){let S=r(this.namespace+(typeof C>\"u\"?\":\":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E==\"string\"?E:\"\").trim().replace(\" \",\",\").split(\",\").filter(Boolean);for(let S of C)S[0]===\"-\"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,P=0,I=-1,R=0;for(;S<E.length;)if(P<C.length&&(C[P]===E[S]||C[P]===\"*\"))C[P]===\"*\"?(I=P,R=S,P++):(S++,P++);else if(I!==-1)P=I+1,R++,S=R;else return!1;for(;P<C.length&&C[P]===\"*\";)P++;return P===C.length}function c(){let E=[...r.names,...r.skips.map(C=>\"-\"+C)].join(\",\");return r.enable(\"\"),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\")}return r.enable(r.load()),r}dNe.exports=H3t});var mNe=L((oc,uL)=>{oc.formatArgs=q3t;oc.save=G3t;oc.load=W3t;oc.useColors=j3t;oc.storage=Y3t();oc.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();oc.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function j3t(){if(typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs))return!0;if(typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))return!1;let t;return typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function q3t(t){if(t[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+t[0]+(this.useColors?\"%c \":\" \")+\"+\"+uL.exports.humanize(this.diff),!this.useColors)return;let e=\"color: \"+this.color;t.splice(1,0,e,\"color: inherit\");let r=0,s=0;t[0].replace(/%[a-zA-Z%]/g,a=>{a!==\"%%\"&&(r++,a===\"%c\"&&(s=r))}),t.splice(s,0,e)}oc.log=console.debug||console.log||(()=>{});function G3t(t){try{t?oc.storage.setItem(\"debug\",t):oc.storage.removeItem(\"debug\")}catch{}}function W3t(){let t;try{t=oc.storage.getItem(\"debug\")}catch{}return!t&&typeof process<\"u\"&&\"env\"in process&&(t=process.env.DEBUG),t}function Y3t(){try{return localStorage}catch{}}uL.exports=gJ()(oc);var{formatters:V3t}=uL.exports;V3t.j=function(t){try{return JSON.stringify(t)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}}});var ENe=L(($s,AL)=>{var K3t=ye(\"tty\"),fL=ye(\"util\");$s.init=t8t;$s.log=X3t;$s.formatArgs=z3t;$s.save=$3t;$s.load=e8t;$s.useColors=J3t;$s.destroy=fL.deprecate(()=>{},\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\");$s.colors=[6,2,3,4,5,1];try{let t=ye(\"supports-color\");t&&(t.stderr||t).level>=2&&($s.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}$s.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[e];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s===\"null\"?s=null:s=Number(s),t[r]=s,t},{});function J3t(){return\"colors\"in $s.inspectOpts?!!$s.inspectOpts.colors:K3t.isatty(process.stderr.fd)}function z3t(t){let{namespace:e,useColors:r}=this;if(r){let s=this.color,a=\"\\x1B[3\"+(s<8?s:\"8;5;\"+s),n=`  ${a};1m${e} \\x1B[0m`;t[0]=n+t[0].split(`\n`).join(`\n`+n),t.push(a+\"m+\"+AL.exports.humanize(this.diff)+\"\\x1B[0m\")}else t[0]=Z3t()+e+\" \"+t[0]}function Z3t(){return $s.inspectOpts.hideDate?\"\":new Date().toISOString()+\" \"}function X3t(...t){return process.stderr.write(fL.formatWithOptions($s.inspectOpts,...t)+`\n`)}function $3t(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function e8t(){return process.env.DEBUG}function t8t(t){t.inspectOpts={};let e=Object.keys($s.inspectOpts);for(let r=0;r<e.length;r++)t.inspectOpts[e[r]]=$s.inspectOpts[e[r]]}AL.exports=gJ()($s);var{formatters:yNe}=AL.exports;yNe.o=function(t){return this.inspectOpts.colors=this.useColors,fL.inspect(t,this.inspectOpts).split(`\n`).map(e=>e.trim()).join(\" \")};yNe.O=function(t){return this.inspectOpts.colors=this.useColors,fL.inspect(t,this.inspectOpts)}});var mJ=L((jwr,dJ)=>{typeof process>\"u\"||process.type===\"renderer\"||process.browser===!0||process.__nwjs?dJ.exports=mNe():dJ.exports=ENe()});var hL=L(Ji=>{\"use strict\";Object.defineProperty(Ji,\"__esModule\",{value:!0});Ji.DownloadHTTPError=Ji.DownloadLengthMismatchError=Ji.DownloadError=Ji.ExpiredMetadataError=Ji.EqualVersionError=Ji.BadVersionError=Ji.RepositoryError=Ji.PersistError=Ji.RuntimeError=Ji.ValueError=void 0;var yJ=class extends Error{};Ji.ValueError=yJ;var EJ=class extends Error{};Ji.RuntimeError=EJ;var IJ=class extends Error{};Ji.PersistError=IJ;var tP=class extends Error{};Ji.RepositoryError=tP;var pL=class extends tP{};Ji.BadVersionError=pL;var CJ=class extends pL{};Ji.EqualVersionError=CJ;var wJ=class extends tP{};Ji.ExpiredMetadataError=wJ;var rP=class extends Error{};Ji.DownloadError=rP;var BJ=class extends rP{};Ji.DownloadLengthMismatchError=BJ;var vJ=class extends rP{constructor(e,r){super(e),this.statusCode=r}};Ji.DownloadHTTPError=vJ});var CNe=L(y1=>{\"use strict\";var DJ=y1&&y1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(y1,\"__esModule\",{value:!0});y1.withTempFile=void 0;var SJ=DJ(ye(\"fs/promises\")),r8t=DJ(ye(\"os\")),INe=DJ(ye(\"path\")),n8t=async t=>i8t(async e=>t(INe.default.join(e,\"tempfile\")));y1.withTempFile=n8t;var i8t=async t=>{let e=await SJ.default.realpath(r8t.default.tmpdir()),r=await SJ.default.mkdtemp(e+INe.default.sep);try{return await t(r)}finally{await SJ.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var PJ=L(Qg=>{\"use strict\";var dL=Qg&&Qg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Qg,\"__esModule\",{value:!0});Qg.DefaultFetcher=Qg.BaseFetcher=void 0;var s8t=dL(mJ()),wNe=dL(ye(\"fs\")),o8t=dL(xO()),a8t=dL(ye(\"util\")),BNe=hL(),l8t=CNe(),c8t=(0,s8t.default)(\"tuf:fetch\"),gL=class{async downloadFile(e,r,s){return(0,l8t.withTempFile)(async a=>{let n=await this.fetch(e),c=0,f=wNe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new BNe.DownloadLengthMismatchError(\"Max length reached\");await u8t(f,h)}}finally{await a8t.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(e,r){return this.downloadFile(e,r,async s=>{let a=wNe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};Qg.BaseFetcher=gL;var bJ=class extends gL{constructor(e={}){super(),this.timeout=e.timeout,this.retry=e.retry}async fetch(e){c8t(\"GET %s\",e);let r=await(0,o8t.default)(e,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new BNe.DownloadHTTPError(\"Failed to download\",r.status);return r.body}};Qg.DefaultFetcher=bJ;var u8t=async(t,e)=>new Promise((r,s)=>{t.write(e,a=>{a&&s(a),r(!0)})})});var vNe=L(mL=>{\"use strict\";Object.defineProperty(mL,\"__esModule\",{value:!0});mL.defaultConfig=void 0;mL.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var SNe=L(yL=>{\"use strict\";Object.defineProperty(yL,\"__esModule\",{value:!0});yL.TrustedMetadataStore=void 0;var Is=lL(),Ui=hL(),xJ=class{constructor(e){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(e)}get root(){if(!this.trustedSet.root)throw new ReferenceError(\"No trusted root metadata\");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(e){return this.trustedSet[e]}updateRoot(e){let r=JSON.parse(e.toString(\"utf8\")),s=Is.Metadata.fromJSON(Is.MetadataKind.Root,r);if(s.signed.type!=Is.MetadataKind.Root)throw new Ui.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(Is.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Ui.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(Is.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(e){if(this.snapshot)throw new Ui.RuntimeError(\"Cannot update timestamp after snapshot\");if(this.root.signed.isExpired(this.referenceTime))throw new Ui.ExpiredMetadataError(\"Final root.json is expired\");let r=JSON.parse(e.toString(\"utf8\")),s=Is.Metadata.fromJSON(Is.MetadataKind.Timestamp,r);if(s.signed.type!=Is.MetadataKind.Timestamp)throw new Ui.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(Is.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version<this.timestamp.signed.version)throw new Ui.BadVersionError(`New timestamp version ${s.signed.version} is less than current version ${this.timestamp.signed.version}`);if(s.signed.version===this.timestamp.signed.version)throw new Ui.EqualVersionError(`New timestamp version ${s.signed.version} is equal to current version ${this.timestamp.signed.version}`);let a=this.timestamp.signed.snapshotMeta,n=s.signed.snapshotMeta;if(n.version<a.version)throw new Ui.BadVersionError(`New snapshot version ${n.version} is less than current version ${a.version}`)}return this.trustedSet.timestamp=s,this.checkFinalTimestamp(),s}updateSnapshot(e,r=!1){if(!this.timestamp)throw new Ui.RuntimeError(\"Cannot update snapshot before timestamp\");if(this.targets)throw new Ui.RuntimeError(\"Cannot update snapshot after targets\");this.checkFinalTimestamp();let s=this.timestamp.signed.snapshotMeta;r||s.verify(e);let a=JSON.parse(e.toString(\"utf8\")),n=Is.Metadata.fromJSON(Is.MetadataKind.Snapshot,a);if(n.signed.type!=Is.MetadataKind.Snapshot)throw new Ui.RepositoryError(`Expected 'snapshot', got ${n.signed.type}`);return this.root.verifyDelegate(Is.MetadataKind.Snapshot,n),this.snapshot&&Object.entries(this.snapshot.signed.meta).forEach(([c,f])=>{let p=n.signed.meta[c];if(!p)throw new Ui.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version<f.version)throw new Ui.BadVersionError(`New version ${p.version} of ${c} is less than current version ${f.version}`)}),this.trustedSet.snapshot=n,this.checkFinalSnapsnot(),n}updateDelegatedTargets(e,r,s){if(!this.snapshot)throw new Ui.RuntimeError(\"Cannot update delegated targets before snapshot\");this.checkFinalSnapsnot();let a=this.trustedSet[s];if(!a)throw new Ui.RuntimeError(`No trusted ${s} metadata`);let n=this.snapshot.signed.meta?.[`${r}.json`];if(!n)throw new Ui.RepositoryError(`Missing ${r}.json in snapshot`);n.verify(e);let c=JSON.parse(e.toString(\"utf8\")),f=Is.Metadata.fromJSON(Is.MetadataKind.Targets,c);if(f.signed.type!=Is.MetadataKind.Targets)throw new Ui.RepositoryError(`Expected 'targets', got ${f.signed.type}`);a.verifyDelegate(r,f);let p=f.signed.version;if(p!=n.version)throw new Ui.BadVersionError(`Version ${p} of ${r} does not match snapshot version ${n.version}`);if(f.signed.isExpired(this.referenceTime))throw new Ui.ExpiredMetadataError(`${r}.json is expired`);this.trustedSet[r]=f}loadTrustedRoot(e){let r=JSON.parse(e.toString(\"utf8\")),s=Is.Metadata.fromJSON(Is.MetadataKind.Root,r);if(s.signed.type!=Is.MetadataKind.Root)throw new Ui.RepositoryError(`Expected 'root', got ${s.signed.type}`);s.verifyDelegate(Is.MetadataKind.Root,s),this.trustedSet.root=s}checkFinalTimestamp(){if(!this.timestamp)throw new ReferenceError(\"No trusted timestamp metadata\");if(this.timestamp.signed.isExpired(this.referenceTime))throw new Ui.ExpiredMetadataError(\"Final timestamp.json is expired\")}checkFinalSnapsnot(){if(!this.snapshot)throw new ReferenceError(\"No trusted snapshot metadata\");if(!this.timestamp)throw new ReferenceError(\"No trusted timestamp metadata\");if(this.snapshot.signed.isExpired(this.referenceTime))throw new Ui.ExpiredMetadataError(\"snapshot.json is expired\");let e=this.timestamp.signed.snapshotMeta;if(this.snapshot.signed.version!==e.version)throw new Ui.BadVersionError(\"Snapshot version doesn't match timestamp\")}};yL.TrustedMetadataStore=xJ});var DNe=L(kJ=>{\"use strict\";Object.defineProperty(kJ,\"__esModule\",{value:!0});kJ.join=A8t;var f8t=ye(\"url\");function A8t(t,e){return new f8t.URL(p8t(t)+h8t(e)).toString()}function p8t(t){return t.endsWith(\"/\")?t:t+\"/\"}function h8t(t){return t.startsWith(\"/\")?t.slice(1):t}});var bNe=L(su=>{\"use strict\";var g8t=su&&su.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),d8t=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),RJ=su&&su.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&g8t(e,t,r);return d8t(e,t),e},m8t=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,\"__esModule\",{value:!0});su.Updater=void 0;var QA=lL(),y8t=m8t(mJ()),E1=RJ(ye(\"fs\")),EL=RJ(ye(\"path\")),E8t=vNe(),Ay=hL(),I8t=PJ(),C8t=SNe(),nP=RJ(DNe()),QJ=(0,y8t.default)(\"tuf:cache\"),TJ=class{constructor(e){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=e;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=e.forceCache??!1;let p=this.loadLocalMetadata(QA.MetadataKind.Root);this.trustedSet=new C8t.TrustedMetadataStore(p),this.config={...E8t.defaultConfig,...f},this.fetcher=c||new I8t.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(QA.MetadataKind.Targets,QA.MetadataKind.Root)}async getTargetInfo(e){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(e)}async downloadTarget(e,r,s){let a=r||this.generateTargetPath(e);if(!s){if(!this.targetBaseUrl)throw new Ay.ValueError(\"Target base URL not set\");s=this.targetBaseUrl}let n=e.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(e.hashes),{dir:h,base:E}=EL.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=nP.join(s,n);return await this.fetcher.downloadFile(f,e.length,async p=>{await e.verify(E1.createReadStream(p)),QJ(\"WRITE %s\",a),E1.copyFileSync(p,a)}),a}async findCachedTarget(e,r){r||(r=this.generateTargetPath(e));try{if(E1.existsSync(r))return await e.verify(E1.createReadStream(r)),r}catch{return}}loadLocalMetadata(e){let r=EL.join(this.dir,`${e}.json`);return QJ(\"READ %s\",r),E1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a<s;a++){let n=nP.join(this.metadataBaseUrl,`${a}.root.json`);try{let c=await this.fetcher.downloadBytes(n,this.config.rootMaxLength);this.trustedSet.updateRoot(c),this.persistMetadata(QA.MetadataKind.Root,c)}catch(c){if(c instanceof Ay.DownloadHTTPError&&[403,404].includes(c.statusCode))break;throw c}}}async loadTimestamp({checkRemote:e}={checkRemote:!0}){try{let a=this.loadLocalMetadata(QA.MetadataKind.Timestamp);if(this.trustedSet.updateTimestamp(a),!e)return}catch{}let r=nP.join(this.metadataBaseUrl,\"timestamp.json\"),s=await this.fetcher.downloadBytes(r,this.config.timestampMaxLength);try{this.trustedSet.updateTimestamp(s)}catch(a){if(a instanceof Ay.EqualVersionError)return;throw a}this.persistMetadata(QA.MetadataKind.Timestamp,s)}async loadSnapshot(){try{let e=this.loadLocalMetadata(QA.MetadataKind.Snapshot);this.trustedSet.updateSnapshot(e,!0)}catch{if(!this.trustedSet.timestamp)throw new ReferenceError(\"No timestamp metadata\");let r=this.trustedSet.timestamp.signed.snapshotMeta,s=r.length||this.config.snapshotMaxLength,a=this.trustedSet.root.signed.consistentSnapshot?r.version:void 0,n=nP.join(this.metadataBaseUrl,a?`${a}.snapshot.json`:\"snapshot.json\");try{let c=await this.fetcher.downloadBytes(n,s);this.trustedSet.updateSnapshot(c),this.persistMetadata(QA.MetadataKind.Snapshot,c)}catch(c){throw new Ay.RuntimeError(`Unable to load snapshot metadata error ${c}`)}}}async loadTargets(e,r){if(this.trustedSet.getRole(e))return this.trustedSet.getRole(e);try{let s=this.loadLocalMetadata(e);this.trustedSet.updateDelegatedTargets(s,e,r)}catch{if(!this.trustedSet.snapshot)throw new ReferenceError(\"No snapshot metadata\");let a=this.trustedSet.snapshot.signed.meta[`${e}.json`],n=a.length||this.config.targetsMaxLength,c=this.trustedSet.root.signed.consistentSnapshot?a.version:void 0,f=encodeURIComponent(e),p=nP.join(this.metadataBaseUrl,c?`${c}.${f}.json`:`${f}.json`);try{let h=await this.fetcher.downloadBytes(p,n);this.trustedSet.updateDelegatedTargets(h,e,r),this.persistMetadata(e,h)}catch(h){throw new Ay.RuntimeError(`Unable to load targets error ${h}`)}}return this.trustedSet.getRole(e)}async preorderDepthFirstWalk(e){let r=[{roleName:QA.MetadataKind.Targets,parentRoleName:QA.MetadataKind.Root}],s=new Set;for(;s.size<=this.config.maxDelegations&&r.length>0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[e];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(e);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(e){if(!this.targetDir)throw new Ay.ValueError(\"Target directory not set\");let r=encodeURIComponent(e.path);return EL.join(this.targetDir,r)}persistMetadata(e,r){let s=encodeURIComponent(e);try{let a=EL.join(this.dir,`${s}.json`);QJ(\"WRITE %s\",a),E1.writeFileSync(a,r.toString(\"utf8\"))}catch(a){throw new Ay.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};su.Updater=TJ});var PNe=L(Tg=>{\"use strict\";Object.defineProperty(Tg,\"__esModule\",{value:!0});Tg.Updater=Tg.BaseFetcher=Tg.TargetFile=void 0;var w8t=lL();Object.defineProperty(Tg,\"TargetFile\",{enumerable:!0,get:function(){return w8t.TargetFile}});var B8t=PJ();Object.defineProperty(Tg,\"BaseFetcher\",{enumerable:!0,get:function(){return B8t.BaseFetcher}});var v8t=bNe();Object.defineProperty(Tg,\"Updater\",{enumerable:!0,get:function(){return v8t.Updater}})});var NJ=L(IL=>{\"use strict\";Object.defineProperty(IL,\"__esModule\",{value:!0});IL.TUFError=void 0;var FJ=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}};IL.TUFError=FJ});var xNe=L(iP=>{\"use strict\";var S8t=iP&&iP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iP,\"__esModule\",{value:!0});iP.readTarget=b8t;var D8t=S8t(ye(\"fs\")),CL=NJ();async function b8t(t,e){let r=await P8t(t,e);return new Promise((s,a)=>{D8t.default.readFile(r,\"utf-8\",(n,c)=>{n?a(new CL.TUFError({code:\"TUF_READ_TARGET_ERROR\",message:`error reading target ${r}`,cause:n})):s(c)})})}async function P8t(t,e){let r;try{r=await t.getTargetInfo(e)}catch(a){throw new CL.TUFError({code:\"TUF_REFRESH_METADATA_ERROR\",message:\"error refreshing TUF metadata\",cause:a})}if(!r)throw new CL.TUFError({code:\"TUF_FIND_TARGET_ERROR\",message:`target ${e} not found`});let s=await t.findCachedTarget(r);if(!s)try{s=await t.downloadTarget(r)}catch(a){throw new CL.TUFError({code:\"TUF_DOWNLOAD_TARGET_ERROR\",message:`error downloading target ${s}`,cause:a})}return s}});var kNe=L(($wr,x8t)=>{x8t.exports={\"https://tuf-repo-cdn.sigstore.dev\":{\"root.json\":\"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=\",targets:{\"trusted_root.json\":\"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K\",\"registry.npmjs.org%2Fkeys.json\":\"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K\"}}}});var TNe=L(I1=>{\"use strict\";var QNe=I1&&I1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(I1,\"__esModule\",{value:!0});I1.TUFClient=void 0;var Rg=QNe(ye(\"fs\")),sP=QNe(ye(\"path\")),k8t=PNe(),Q8t=wL(),T8t=xNe(),LJ=\"targets\",OJ=class{constructor(e){let r=new URL(e.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\\/$/,\"\")),a=sP.default.join(e.cachePath,s);R8t(a),F8t({cachePath:a,mirrorURL:e.mirrorURL,tufRootPath:e.rootPath,forceInit:e.forceInit}),this.updater=N8t({mirrorURL:e.mirrorURL,cachePath:a,forceCache:e.forceCache,retry:e.retry,timeout:e.timeout})}async refresh(){return this.updater.refresh()}getTarget(e){return(0,T8t.readTarget)(this.updater,e)}};I1.TUFClient=OJ;function R8t(t){let e=sP.default.join(t,LJ);Rg.default.existsSync(t)||Rg.default.mkdirSync(t,{recursive:!0}),Rg.default.existsSync(e)||Rg.default.mkdirSync(e)}function F8t({cachePath:t,mirrorURL:e,tufRootPath:r,forceInit:s}){let a=sP.default.join(t,\"root.json\");if(!Rg.default.existsSync(a)||s)if(r)Rg.default.copyFileSync(r,a);else{let c=kNe()[e];if(!c)throw new Q8t.TUFError({code:\"TUF_INIT_CACHE_ERROR\",message:`No root.json found for mirror: ${e}`});Rg.default.writeFileSync(a,Buffer.from(c[\"root.json\"],\"base64\")),Object.entries(c.targets).forEach(([f,p])=>{Rg.default.writeFileSync(sP.default.join(t,LJ,f),Buffer.from(p,\"base64\"))})}}function N8t(t){let e={fetchTimeout:t.timeout,fetchRetry:t.retry};return new k8t.Updater({metadataBaseUrl:t.mirrorURL,targetBaseUrl:`${t.mirrorURL}/targets`,metadataDir:t.cachePath,targetDir:sP.default.join(t.cachePath,LJ),forceCache:t.forceCache,config:e})}});var wL=L(yh=>{\"use strict\";Object.defineProperty(yh,\"__esModule\",{value:!0});yh.TUFError=yh.DEFAULT_MIRROR_URL=void 0;yh.getTrustedRoot=q8t;yh.initTUF=G8t;var O8t=Rb(),L8t=fFe(),M8t=TNe();yh.DEFAULT_MIRROR_URL=\"https://tuf-repo-cdn.sigstore.dev\";var _8t=\"sigstore-js\",U8t={retries:2},H8t=5e3,j8t=\"trusted_root.json\";async function q8t(t={}){let r=await RNe(t).getTarget(j8t);return O8t.TrustedRoot.fromJSON(JSON.parse(r))}async function G8t(t={}){let e=RNe(t);return e.refresh().then(()=>e)}function RNe(t){return new M8t.TUFClient({cachePath:t.cachePath||(0,L8t.appDataPath)(_8t),rootPath:t.rootPath,mirrorURL:t.mirrorURL||yh.DEFAULT_MIRROR_URL,retry:t.retry??U8t,timeout:t.timeout??H8t,forceCache:t.forceCache??!1,forceInit:t.forceInit??t.force??!1})}var W8t=NJ();Object.defineProperty(yh,\"TUFError\",{enumerable:!0,get:function(){return W8t.TUFError}})});var FNe=L(BL=>{\"use strict\";Object.defineProperty(BL,\"__esModule\",{value:!0});BL.DSSESignatureContent=void 0;var oP=wl(),MJ=class{constructor(e){this.env=e}compareDigest(e){return oP.crypto.bufferEqual(e,oP.crypto.digest(\"sha256\",this.env.payload))}compareSignature(e){return oP.crypto.bufferEqual(e,this.signature)}verifySignature(e){return oP.crypto.verify(this.preAuthEncoding,e,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from(\"\")}get preAuthEncoding(){return oP.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};BL.DSSESignatureContent=MJ});var NNe=L(vL=>{\"use strict\";Object.defineProperty(vL,\"__esModule\",{value:!0});vL.MessageSignatureContent=void 0;var _J=wl(),UJ=class{constructor(e,r){this.signature=e.signature,this.messageDigest=e.messageDigest.digest,this.artifact=r}compareSignature(e){return _J.crypto.bufferEqual(e,this.signature)}compareDigest(e){return _J.crypto.bufferEqual(e,this.messageDigest)}verifySignature(e){return _J.crypto.verify(this.artifact,e,this.signature)}};vL.MessageSignatureContent=UJ});var LNe=L(SL=>{\"use strict\";Object.defineProperty(SL,\"__esModule\",{value:!0});SL.toSignedEntity=K8t;SL.signatureContent=ONe;var HJ=wl(),Y8t=FNe(),V8t=NNe();function K8t(t,e){let{tlogEntries:r,timestampVerificationData:s}=t.verificationMaterial,a=[];for(let n of r)a.push({$case:\"transparency-log\",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:\"timestamp-authority\",timestamp:HJ.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:ONe(t,e),key:J8t(t),tlogEntries:r,timestamps:a}}function ONe(t,e){switch(t.content.$case){case\"dsseEnvelope\":return new Y8t.DSSESignatureContent(t.content.dsseEnvelope);case\"messageSignature\":return new V8t.MessageSignatureContent(t.content.messageSignature,e)}}function J8t(t){switch(t.verificationMaterial.content.$case){case\"publicKey\":return{$case:\"public-key\",hint:t.verificationMaterial.content.publicKey.hint};case\"x509CertificateChain\":return{$case:\"certificate\",certificate:HJ.X509Certificate.parse(t.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case\"certificate\":return{$case:\"certificate\",certificate:HJ.X509Certificate.parse(t.verificationMaterial.content.certificate.rawBytes)}}}});var Co=L(C1=>{\"use strict\";Object.defineProperty(C1,\"__esModule\",{value:!0});C1.PolicyError=C1.VerificationError=void 0;var DL=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}},jJ=class extends DL{};C1.VerificationError=jJ;var qJ=class extends DL{};C1.PolicyError=qJ});var MNe=L(bL=>{\"use strict\";Object.defineProperty(bL,\"__esModule\",{value:!0});bL.filterCertAuthorities=z8t;bL.filterTLogAuthorities=Z8t;function z8t(t,e){return t.filter(r=>r.validFor.start<=e.start&&r.validFor.end>=e.end)}function Z8t(t,e){return t.filter(r=>e.logID&&!r.logID.equals(e.logID)?!1:r.validFor.start<=e.targetDate&&e.targetDate<=r.validFor.end)}});var hy=L(py=>{\"use strict\";Object.defineProperty(py,\"__esModule\",{value:!0});py.filterTLogAuthorities=py.filterCertAuthorities=void 0;py.toTrustMaterial=$8t;var GJ=wl(),aP=Rb(),X8t=Co(),WJ=new Date(0),YJ=new Date(864e13),HNe=MNe();Object.defineProperty(py,\"filterCertAuthorities\",{enumerable:!0,get:function(){return HNe.filterCertAuthorities}});Object.defineProperty(py,\"filterTLogAuthorities\",{enumerable:!0,get:function(){return HNe.filterTLogAuthorities}});function $8t(t,e){let r=typeof e==\"function\"?e:eHt(e);return{certificateAuthorities:t.certificateAuthorities.map(UNe),timestampAuthorities:t.timestampAuthorities.map(UNe),tlogs:t.tlogs.map(_Ne),ctlogs:t.ctlogs.map(_Ne),publicKey:r}}function _Ne(t){let e=t.publicKey.keyDetails,r=e===aP.PublicKeyDetails.PKCS1_RSA_PKCS1V5||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V5||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||e===aP.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?\"pkcs1\":\"spki\";return{logID:t.logId.keyId,publicKey:GJ.crypto.createPublicKey(t.publicKey.rawBytes,r),validFor:{start:t.publicKey.validFor?.start||WJ,end:t.publicKey.validFor?.end||YJ}}}function UNe(t){return{certChain:t.certChain.certificates.map(e=>GJ.X509Certificate.parse(e.rawBytes)),validFor:{start:t.validFor?.start||WJ,end:t.validFor?.end||YJ}}}function eHt(t){return e=>{let r=(t||{})[e];if(!r)throw new X8t.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`key not found: ${e}`});return{publicKey:GJ.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||WJ)<=s&&(r.validFor?.end||YJ)>=s}}}});var VJ=L(lP=>{\"use strict\";Object.defineProperty(lP,\"__esModule\",{value:!0});lP.CertificateChainVerifier=void 0;lP.verifyCertificateChain=rHt;var gy=Co(),tHt=hy();function rHt(t,e){let r=(0,tHt.filterCertAuthorities)(e,{start:t.notBefore,end:t.notAfter}),s;for(let a of r)try{return new PL({trustedCerts:a.certChain,untrustedCert:t}).verify()}catch(n){s=n}throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"Failed to verify certificate chain\",cause:s})}var PL=class{constructor(e){this.untrustedCert=e.untrustedCert,this.trustedCerts=e.trustedCerts,this.localCerts=nHt([...e.trustedCerts,e.untrustedCert])}verify(){let e=this.sort();return this.checkPath(e),e}sort(){let e=this.untrustedCert,r=this.buildPaths(e);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"no trusted certificate path found\"});let s=r.reduce((a,n)=>a.length<n.length?a:n);return[e,...s].slice(0,-1)}buildPaths(e){let r=[],s=this.findIssuer(e);if(s.length===0)throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"no valid certificate path found\"});for(let a=0;a<s.length;a++){let n=s[a];if(n.equals(e)){r.push([e]);continue}let c=this.buildPaths(n);for(let f=0;f<c.length;f++)r.push([n,...c[f]])}return r}findIssuer(e){let r=[],s;return e.subject.equals(e.issuer)&&e.verify()?[e]:(e.extAuthorityKeyID&&(s=e.extAuthorityKeyID.keyIdentifier),this.localCerts.forEach(a=>{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(e.issuer)&&r.push(a)}),r=r.filter(a=>{try{return e.verify(a)}catch{return!1}}),r)}checkPath(e){if(e.length<1)throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"certificate chain must contain at least one certificate\"});if(!e.slice(1).every(s=>s.isCA))throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"intermediate certificate is not a CA\"});for(let s=e.length-2;s>=0;s--)if(!e[s].issuer.equals(e[s+1].subject))throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"incorrect certificate name chaining\"});for(let s=0;s<e.length;s++){let a=e[s];if(a.extBasicConstraints?.isCA){let n=a.extBasicConstraints.pathLenConstraint;if(n!==void 0&&n<s-1)throw new gy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"path length constraint exceeded\"})}}}};lP.CertificateChainVerifier=PL;function nHt(t){for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++)t[e].equals(t[r])&&(t.splice(r,1),r--);return t}});var jNe=L(KJ=>{\"use strict\";Object.defineProperty(KJ,\"__esModule\",{value:!0});KJ.verifySCTs=oHt;var xL=wl(),iHt=Co(),sHt=hy();function oHt(t,e,r){let s,a=t.clone();for(let p=0;p<a.extensions.length;p++){let h=a.extensions[p];if(h.subs[0].toOID()===xL.EXTENSION_OID_SCT){s=new xL.X509SCTExtension(h),a.extensions.splice(p,1);break}}if(!s)return[];if(s.signedCertificateTimestamps.length===0)return[];let n=new xL.ByteStream,c=xL.crypto.digest(\"sha256\",e.publicKey);n.appendView(c);let f=a.tbsCertificate.toDER();return n.appendUint24(f.length),n.appendView(f),s.signedCertificateTimestamps.map(p=>{if(!(0,sHt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new iHt.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"SCT verification failed\"});return p.logID})}});var GNe=L(kL=>{\"use strict\";Object.defineProperty(kL,\"__esModule\",{value:!0});kL.verifyPublicKey=AHt;kL.verifyCertificate=pHt;var aHt=wl(),qNe=Co(),lHt=VJ(),cHt=jNe(),uHt=\"1.3.6.1.4.1.57264.1.1\",fHt=\"1.3.6.1.4.1.57264.1.8\";function AHt(t,e,r){let s=r.publicKey(t);return e.forEach(a=>{if(!s.validFor(a))throw new qNe.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function pHt(t,e,r){let s=(0,lHt.verifyCertificateChain)(t,r.certificateAuthorities);if(!e.every(n=>s.every(c=>c.validForDate(n))))throw new qNe.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"certificate is not valid or expired at the specified date\"});return{scts:(0,cHt.verifySCTs)(s[0],s[1],r.ctlogs),signer:hHt(s[0])}}function hHt(t){let e,r=t.extension(fHt);r?e=r.valueObj.subs?.[0]?.value.toString(\"ascii\"):e=t.extension(uHt)?.value.toString(\"ascii\");let s={extensions:{issuer:e},subjectAlternativeName:t.subjectAltName};return{key:aHt.crypto.createPublicKey(t.publicKey),identity:s}}});var YNe=L(QL=>{\"use strict\";Object.defineProperty(QL,\"__esModule\",{value:!0});QL.verifySubjectAlternativeName=gHt;QL.verifyExtensions=dHt;var WNe=Co();function gHt(t,e){if(e===void 0||!e.match(t))throw new WNe.PolicyError({code:\"UNTRUSTED_SIGNER_ERROR\",message:`certificate identity error - expected ${t}, got ${e}`})}function dHt(t,e={}){let r;for(r in t)if(e[r]!==t[r])throw new WNe.PolicyError({code:\"UNTRUSTED_SIGNER_ERROR\",message:`invalid certificate extension - expected ${r}=${t[r]}, got ${r}=${e[r]}`})}});var VNe=L($J=>{\"use strict\";Object.defineProperty($J,\"__esModule\",{value:!0});$J.verifyCheckpoint=EHt;var zJ=wl(),w1=Co(),mHt=hy(),JJ=`\n\n`,yHt=/\\u2014 (\\S+) (\\S+)\\n/g;function EHt(t,e){let r=(0,mHt.filterTLogAuthorities)(e,{targetDate:new Date(Number(t.integratedTime)*1e3)}),s=t.inclusionProof,a=ZJ.fromString(s.checkpoint.envelope),n=XJ.fromString(a.note);if(!IHt(a,r))throw new w1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"invalid checkpoint signature\"});if(!zJ.crypto.bufferEqual(n.logHash,s.rootHash))throw new w1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"root hash mismatch\"})}function IHt(t,e){let r=Buffer.from(t.note,\"utf-8\");return t.signatures.every(s=>{let a=e.find(n=>zJ.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?zJ.crypto.verify(r,a.publicKey,s.signature):!1})}var ZJ=class t{constructor(e,r){this.note=e,this.signatures=r}static fromString(e){if(!e.includes(JJ))throw new w1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"missing checkpoint separator\"});let r=e.indexOf(JJ),s=e.slice(0,r+1),n=e.slice(r+JJ.length).matchAll(yHt),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,\"base64\");if(E.length<5)throw new w1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"malformed checkpoint signature\"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new w1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"no signatures found in checkpoint\"});return new t(s,c)}},XJ=class t{constructor(e,r,s,a){this.origin=e,this.logSize=r,this.logHash=s,this.rest=a}static fromString(e){let r=e.trimEnd().split(`\n`);if(r.length<3)throw new w1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"too few lines in checkpoint header\"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],\"base64\"),c=r.slice(3);return new t(s,a,n,c)}}});var KNe=L(nz=>{\"use strict\";Object.defineProperty(nz,\"__esModule\",{value:!0});nz.verifyMerkleInclusion=BHt;var rz=wl(),ez=Co(),CHt=Buffer.from([0]),wHt=Buffer.from([1]);function BHt(t){let e=t.inclusionProof,r=BigInt(e.logIndex),s=BigInt(e.treeSize);if(r<0n||r>=s)throw new ez.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:`invalid index: ${r}`});let{inner:a,border:n}=vHt(r,s);if(e.hashes.length!==a+n)throw new ez.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"invalid hash count\"});let c=e.hashes.slice(0,a),f=e.hashes.slice(a),p=kHt(t.canonicalizedBody),h=DHt(SHt(p,c,r),f);if(!rz.crypto.bufferEqual(h,e.rootHash))throw new ez.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"calculated root hash does not match inclusion proof\"})}function vHt(t,e){let r=bHt(t,e),s=PHt(t>>BigInt(r));return{inner:r,border:s}}function SHt(t,e,r){return e.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?tz(a,s):tz(s,a),t)}function DHt(t,e){return e.reduce((r,s)=>tz(s,r),t)}function bHt(t,e){return xHt(t^e-BigInt(1))}function PHt(t){return t.toString(2).split(\"1\").length-1}function xHt(t){return t===0n?0:t.toString(2).length}function tz(t,e){return rz.crypto.digest(\"sha256\",wHt,t,e)}function kHt(t){return rz.crypto.digest(\"sha256\",CHt,t)}});var zNe=L(iz=>{\"use strict\";Object.defineProperty(iz,\"__esModule\",{value:!0});iz.verifyTLogSET=RHt;var JNe=wl(),QHt=Co(),THt=hy();function RHt(t,e){if(!(0,THt.filterTLogAuthorities)(e,{logID:t.logId.keyId,targetDate:new Date(Number(t.integratedTime)*1e3)}).some(a=>{let n=FHt(t),c=Buffer.from(JNe.json.canonicalize(n),\"utf8\"),f=t.inclusionPromise.signedEntryTimestamp;return JNe.crypto.verify(c,a.publicKey,f)}))throw new QHt.VerificationError({code:\"TLOG_INCLUSION_PROMISE_ERROR\",message:\"inclusion promise could not be verified\"})}function FHt(t){let{integratedTime:e,logIndex:r,logId:s,canonicalizedBody:a}=t;return{body:a.toString(\"base64\"),integratedTime:Number(e),logIndex:Number(r),logID:s.keyId.toString(\"hex\")}}});var ZNe=L(az=>{\"use strict\";Object.defineProperty(az,\"__esModule\",{value:!0});az.verifyRFC3161Timestamp=LHt;var sz=wl(),oz=Co(),NHt=VJ(),OHt=hy();function LHt(t,e,r){let s=t.signingTime;if(r=(0,OHt.filterCertAuthorities)(r,{start:s,end:s}),r=_Ht(r,{serialNumber:t.signerSerialNumber,issuer:t.signerIssuer}),!r.some(n=>{try{return MHt(t,e,n),!0}catch{return!1}}))throw new oz.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"timestamp could not be verified\"})}function MHt(t,e,r){let[s,...a]=r.certChain,n=sz.crypto.createPublicKey(s.publicKey),c=t.signingTime;try{new NHt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new oz.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"invalid certificate chain\"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new oz.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"timestamp was signed with an expired certificate\"});t.verify(e,n)}function _Ht(t,e){return t.filter(r=>r.certChain.length>0&&sz.crypto.bufferEqual(r.certChain[0].serialNumber,e.serialNumber)&&sz.crypto.bufferEqual(r.certChain[0].issuer,e.issuer))}});var XNe=L(TL=>{\"use strict\";Object.defineProperty(TL,\"__esModule\",{value:!0});TL.verifyTSATimestamp=WHt;TL.verifyTLogTimestamp=YHt;var UHt=Co(),HHt=VNe(),jHt=KNe(),qHt=zNe(),GHt=ZNe();function WHt(t,e,r){return(0,GHt.verifyRFC3161Timestamp)(t,e,r),{type:\"timestamp-authority\",logID:t.signerSerialNumber,timestamp:t.signingTime}}function YHt(t,e){let r=!1;if(VHt(t)&&((0,qHt.verifyTLogSET)(t,e),r=!0),KHt(t)&&((0,jHt.verifyMerkleInclusion)(t),(0,HHt.verifyCheckpoint)(t,e),r=!0),!r)throw new UHt.VerificationError({code:\"TLOG_MISSING_INCLUSION_ERROR\",message:\"inclusion could not be verified\"});return{type:\"transparency-log\",logID:t.logId.keyId,timestamp:new Date(Number(t.integratedTime)*1e3)}}function VHt(t){return t.inclusionPromise!==void 0}function KHt(t){return t.inclusionProof!==void 0}});var $Ne=L(lz=>{\"use strict\";Object.defineProperty(lz,\"__esModule\",{value:!0});lz.verifyDSSETLogBody=JHt;var RL=Co();function JHt(t,e){switch(t.apiVersion){case\"0.0.1\":return zHt(t,e);default:throw new RL.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported dsse version: ${t.apiVersion}`})}}function zHt(t,e){if(t.spec.signatures?.length!==1)throw new RL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature count mismatch\"});let r=t.spec.signatures[0].signature;if(!e.compareSignature(Buffer.from(r,\"base64\")))throw new RL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"tlog entry signature mismatch\"});let s=t.spec.payloadHash?.value||\"\";if(!e.compareDigest(Buffer.from(s,\"hex\")))throw new RL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"DSSE payload hash mismatch\"})}});var eOe=L(uz=>{\"use strict\";Object.defineProperty(uz,\"__esModule\",{value:!0});uz.verifyHashedRekordTLogBody=ZHt;var cz=Co();function ZHt(t,e){switch(t.apiVersion){case\"0.0.1\":return XHt(t,e);default:throw new cz.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported hashedrekord version: ${t.apiVersion}`})}}function XHt(t,e){let r=t.spec.signature.content||\"\";if(!e.compareSignature(Buffer.from(r,\"base64\")))throw new cz.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature mismatch\"});let s=t.spec.data.hash?.value||\"\";if(!e.compareDigest(Buffer.from(s,\"hex\")))throw new cz.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"digest mismatch\"})}});var tOe=L(fz=>{\"use strict\";Object.defineProperty(fz,\"__esModule\",{value:!0});fz.verifyIntotoTLogBody=$Ht;var FL=Co();function $Ht(t,e){switch(t.apiVersion){case\"0.0.2\":return ejt(t,e);default:throw new FL.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported intoto version: ${t.apiVersion}`})}}function ejt(t,e){if(t.spec.content.envelope.signatures?.length!==1)throw new FL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature count mismatch\"});let r=tjt(t.spec.content.envelope.signatures[0].sig);if(!e.compareSignature(Buffer.from(r,\"base64\")))throw new FL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"tlog entry signature mismatch\"});let s=t.spec.content.payloadHash?.value||\"\";if(!e.compareDigest(Buffer.from(s,\"hex\")))throw new FL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"DSSE payload hash mismatch\"})}function tjt(t){return Buffer.from(t,\"base64\").toString(\"utf-8\")}});var nOe=L(Az=>{\"use strict\";Object.defineProperty(Az,\"__esModule\",{value:!0});Az.verifyTLogBody=sjt;var rOe=Co(),rjt=$Ne(),njt=eOe(),ijt=tOe();function sjt(t,e){let{kind:r,version:s}=t.kindVersion,a=JSON.parse(t.canonicalizedBody.toString(\"utf8\"));if(r!==a.kind||s!==a.apiVersion)throw new rOe.VerificationError({code:\"TLOG_BODY_ERROR\",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case\"dsse\":return(0,rjt.verifyDSSETLogBody)(a,e);case\"intoto\":return(0,ijt.verifyIntotoTLogBody)(a,e);case\"hashedrekord\":return(0,njt.verifyHashedRekordTLogBody)(a,e);default:throw new rOe.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported kind: ${r}`})}}});var lOe=L(NL=>{\"use strict\";Object.defineProperty(NL,\"__esModule\",{value:!0});NL.Verifier=void 0;var ojt=ye(\"util\"),B1=Co(),iOe=GNe(),sOe=YNe(),oOe=XNe(),ajt=nOe(),pz=class{constructor(e,r={}){this.trustMaterial=e,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(e,r){let s=this.verifyTimestamps(e),a=this.verifySigningKey(e,s);return this.verifyTLogs(e),this.verifySignature(e,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(e){let r=0,s=0,a=e.timestamps.map(n=>{switch(n.$case){case\"timestamp-authority\":return s++,(0,oOe.verifyTSATimestamp)(n.timestamp,e.signature.signature,this.trustMaterial.timestampAuthorities);case\"transparency-log\":return r++,(0,oOe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(aOe(a))throw new B1.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"duplicate timestamp\"});if(r<this.options.tlogThreshold)throw new B1.VerificationError({code:\"TIMESTAMP_ERROR\",message:`expected ${this.options.tlogThreshold} tlog timestamps, got ${r}`});if(s<this.options.tsaThreshold)throw new B1.VerificationError({code:\"TIMESTAMP_ERROR\",message:`expected ${this.options.tsaThreshold} tsa timestamps, got ${s}`});return a.map(n=>n.timestamp)}verifySigningKey({key:e},r){switch(e.$case){case\"public-key\":return(0,iOe.verifyPublicKey)(e.hint,r,this.trustMaterial);case\"certificate\":{let s=(0,iOe.verifyCertificate)(e.certificate,r,this.trustMaterial);if(aOe(s.scts))throw new B1.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"duplicate SCT\"});if(s.scts.length<this.options.ctlogThreshold)throw new B1.VerificationError({code:\"CERTIFICATE_ERROR\",message:`expected ${this.options.ctlogThreshold} SCTs, got ${s.scts.length}`});return s.signer}}}verifyTLogs({signature:e,tlogEntries:r}){r.forEach(s=>(0,ajt.verifyTLogBody)(s,e))}verifySignature(e,r){if(!e.signature.verifySignature(r.key))throw new B1.VerificationError({code:\"SIGNATURE_ERROR\",message:\"signature verification failed\"})}verifyPolicy(e,r){e.subjectAlternativeName&&(0,sOe.verifySubjectAlternativeName)(e.subjectAlternativeName,r.subjectAlternativeName),e.extensions&&(0,sOe.verifyExtensions)(e.extensions,r.extensions)}};NL.Verifier=pz;function aOe(t){for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++)if((0,ojt.isDeepStrictEqual)(t[e],t[r]))return!0;return!1}});var OL=L(ou=>{\"use strict\";Object.defineProperty(ou,\"__esModule\",{value:!0});ou.Verifier=ou.toTrustMaterial=ou.VerificationError=ou.PolicyError=ou.toSignedEntity=void 0;var ljt=LNe();Object.defineProperty(ou,\"toSignedEntity\",{enumerable:!0,get:function(){return ljt.toSignedEntity}});var cOe=Co();Object.defineProperty(ou,\"PolicyError\",{enumerable:!0,get:function(){return cOe.PolicyError}});Object.defineProperty(ou,\"VerificationError\",{enumerable:!0,get:function(){return cOe.VerificationError}});var cjt=hy();Object.defineProperty(ou,\"toTrustMaterial\",{enumerable:!0,get:function(){return cjt.toTrustMaterial}});var ujt=lOe();Object.defineProperty(ou,\"Verifier\",{enumerable:!0,get:function(){return ujt.Verifier}})});var uOe=L(Na=>{\"use strict\";Object.defineProperty(Na,\"__esModule\",{value:!0});Na.DEFAULT_TIMEOUT=Na.DEFAULT_RETRY=void 0;Na.createBundleBuilder=pjt;Na.createKeyFinder=hjt;Na.createVerificationPolicy=gjt;var fjt=wl(),v1=SK(),Ajt=OL();Na.DEFAULT_RETRY={retries:2};Na.DEFAULT_TIMEOUT=5e3;function pjt(t,e){let r={signer:djt(e),witnesses:yjt(e)};switch(t){case\"messageSignature\":return new v1.MessageSignatureBundleBuilder(r);case\"dsseEnvelope\":return new v1.DSSEBundleBuilder({...r,certificateChain:e.legacyCompatibility})}}function hjt(t){return e=>{let r=t(e);if(!r)throw new Ajt.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`key not found: ${e}`});return{publicKey:fjt.crypto.createPublicKey(r),validFor:()=>!0}}}function gjt(t){let e={},r=t.certificateIdentityEmail||t.certificateIdentityURI;return r&&(e.subjectAlternativeName=r),t.certificateIssuer&&(e.extensions={issuer:t.certificateIssuer}),e}function djt(t){return new v1.FulcioSigner({fulcioBaseURL:t.fulcioURL,identityProvider:t.identityProvider||mjt(t),retry:t.retry??Na.DEFAULT_RETRY,timeout:t.timeout??Na.DEFAULT_TIMEOUT})}function mjt(t){let e=t.identityToken;return e?{getToken:()=>Promise.resolve(e)}:new v1.CIContextProvider(\"sigstore\")}function yjt(t){let e=[];return Ejt(t)&&e.push(new v1.RekorWitness({rekorBaseURL:t.rekorURL,entryType:t.legacyCompatibility?\"intoto\":\"dsse\",fetchOnConflict:!1,retry:t.retry??Na.DEFAULT_RETRY,timeout:t.timeout??Na.DEFAULT_TIMEOUT})),Ijt(t)&&e.push(new v1.TSAWitness({tsaBaseURL:t.tsaServerURL,retry:t.retry??Na.DEFAULT_RETRY,timeout:t.timeout??Na.DEFAULT_TIMEOUT})),e}function Ejt(t){return t.tlogUpload!==!1}function Ijt(t){return t.tsaServerURL!==void 0}});var pOe=L(au=>{\"use strict\";var Cjt=au&&au.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),wjt=au&&au.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),fOe=au&&au.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!==\"default\"&&Cjt(r,e,s[a]);return wjt(r,e),r}}();Object.defineProperty(au,\"__esModule\",{value:!0});au.sign=vjt;au.attest=Sjt;au.verify=Djt;au.createVerifier=AOe;var gz=Nb(),Bjt=fOe(wL()),hz=OL(),S1=fOe(uOe());async function vjt(t,e={}){let s=await S1.createBundleBuilder(\"messageSignature\",e).create({data:t});return(0,gz.bundleToJSON)(s)}async function Sjt(t,e,r={}){let a=await S1.createBundleBuilder(\"dsseEnvelope\",r).create({data:t,type:e});return(0,gz.bundleToJSON)(a)}async function Djt(t,e,r){let s;return Buffer.isBuffer(e)?s=e:r=e,AOe(r).then(a=>a.verify(t,s))}async function AOe(t={}){let e=await Bjt.getTrustedRoot({mirrorURL:t.tufMirrorURL,rootPath:t.tufRootPath,cachePath:t.tufCachePath,forceCache:t.tufForceCache,retry:t.retry??S1.DEFAULT_RETRY,timeout:t.timeout??S1.DEFAULT_TIMEOUT}),r=t.keySelector?S1.createKeyFinder(t.keySelector):void 0,s=(0,hz.toTrustMaterial)(e,r),a={ctlogThreshold:t.ctLogThreshold,tlogThreshold:t.tlogThreshold},n=new hz.Verifier(s,a),c=S1.createVerificationPolicy(t);return{verify:(f,p)=>{let h=(0,gz.bundleFromJSON)(f),E=(0,hz.toSignedEntity)(h,p);n.verify(E,c)}}}});var gOe=L(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});Fi.verify=Fi.sign=Fi.createVerifier=Fi.attest=Fi.VerificationError=Fi.PolicyError=Fi.TUFError=Fi.InternalError=Fi.DEFAULT_REKOR_URL=Fi.DEFAULT_FULCIO_URL=Fi.ValidationError=void 0;var bjt=Nb();Object.defineProperty(Fi,\"ValidationError\",{enumerable:!0,get:function(){return bjt.ValidationError}});var dz=SK();Object.defineProperty(Fi,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return dz.DEFAULT_FULCIO_URL}});Object.defineProperty(Fi,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return dz.DEFAULT_REKOR_URL}});Object.defineProperty(Fi,\"InternalError\",{enumerable:!0,get:function(){return dz.InternalError}});var Pjt=wL();Object.defineProperty(Fi,\"TUFError\",{enumerable:!0,get:function(){return Pjt.TUFError}});var hOe=OL();Object.defineProperty(Fi,\"PolicyError\",{enumerable:!0,get:function(){return hOe.PolicyError}});Object.defineProperty(Fi,\"VerificationError\",{enumerable:!0,get:function(){return hOe.VerificationError}});var LL=pOe();Object.defineProperty(Fi,\"attest\",{enumerable:!0,get:function(){return LL.attest}});Object.defineProperty(Fi,\"createVerifier\",{enumerable:!0,get:function(){return LL.createVerifier}});Object.defineProperty(Fi,\"sign\",{enumerable:!0,get:function(){return LL.sign}});Object.defineProperty(Fi,\"verify\",{enumerable:!0,get:function(){return LL.verify}})});var GOe=L((xSr,qOe)=>{var M6t=t3();function _6t(t){return M6t(t)?void 0:t}qOe.exports=_6t});var YOe=L((kSr,WOe)=>{var U6t=RT(),H6t=x5(),j6t=R5(),q6t=wm(),G6t=Jd(),W6t=GOe(),Y6t=BG(),V6t=P5(),K6t=1,J6t=2,z6t=4,Z6t=Y6t(function(t,e){var r={};if(t==null)return r;var s=!1;e=U6t(e,function(n){return n=q6t(n,t),s||(s=n.length>1),n}),G6t(t,V6t(t),r),s&&(r=H6t(r,K6t|J6t|z6t,W6t));for(var a=e.length;a--;)j6t(r,e[a]);return r});WOe.exports=Z6t});bt();Ve();bt();var ZOe=ye(\"child_process\"),XOe=et(Nd());Wt();var tC=new Map([]);var iS={};Vt(iS,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>ar,getCli:()=>cwe,getDynamicLibs:()=>lwe,getPluginConfiguration:()=>nC,openWorkspace:()=>rC,pluginCommands:()=>tC,runExit:()=>zR});Wt();var ut=class extends ot{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new nt(\"The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path\");return super.validateAndExecute()}};Ve();bt();Wt();var ar=class extends nt{constructor(e,r){let s=K.relative(e,r),a=K.join(e,Ht.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};Ve();bt();rA();Bc();bv();Wt();var zwt=et(fi());Ul();var lwe=()=>new Map([[\"@yarnpkg/cli\",iS],[\"@yarnpkg/core\",nS],[\"@yarnpkg/fslib\",q2],[\"@yarnpkg/libzip\",Sv],[\"@yarnpkg/parsers\",Z2],[\"@yarnpkg/shell\",Qv],[\"clipanion\",cB],[\"semver\",zwt],[\"typanion\",Ia]]);Ve();async function rC(t,e){let{project:r,workspace:s}=await Tt.find(t,e);if(!s)throw new ar(r.cwd,e);return s}Ve();bt();rA();Bc();bv();Wt();var oqt=et(fi());Ul();var $5={};Vt($5,{AddCommand:()=>aC,BinCommand:()=>lC,CacheCleanCommand:()=>cC,ClipanionCommand:()=>gC,ConfigCommand:()=>pC,ConfigGetCommand:()=>uC,ConfigSetCommand:()=>fC,ConfigUnsetCommand:()=>AC,DedupeCommand:()=>hC,EntryCommand:()=>mC,ExecCommand:()=>EC,ExplainCommand:()=>wC,ExplainPeerRequirementsCommand:()=>IC,HelpCommand:()=>dC,InfoCommand:()=>BC,LinkCommand:()=>SC,NodeCommand:()=>DC,PluginCheckCommand:()=>bC,PluginImportCommand:()=>kC,PluginImportSourcesCommand:()=>QC,PluginListCommand:()=>PC,PluginRemoveCommand:()=>TC,PluginRuntimeCommand:()=>RC,RebuildCommand:()=>FC,RemoveCommand:()=>NC,RunCommand:()=>LC,RunIndexCommand:()=>OC,SetResolutionCommand:()=>MC,SetVersionCommand:()=>CC,SetVersionSourcesCommand:()=>xC,UnlinkCommand:()=>_C,UpCommand:()=>UC,VersionCommand:()=>yC,WhyCommand:()=>HC,WorkspaceCommand:()=>YC,WorkspacesListCommand:()=>WC,YarnCommand:()=>vC,dedupeUtils:()=>oF,default:()=>WSt,suggestUtils:()=>Xu});var UBe=et(Nd());Ve();Ve();Ve();Wt();var z1e=et(lS());Ul();var Xu={};Vt(Xu,{Modifier:()=>B5,Strategy:()=>nF,Target:()=>cS,WorkspaceModifier:()=>W1e,applyModifier:()=>d2t,extractDescriptorFromPath:()=>v5,extractRangeModifier:()=>Y1e,fetchDescriptorFrom:()=>S5,findProjectDescriptors:()=>J1e,getModifier:()=>uS,getSuggestedDescriptors:()=>fS,makeWorkspaceDescriptor:()=>K1e,toWorkspaceModifier:()=>V1e});Ve();Ve();bt();var w5=et(fi()),h2t=\"workspace:\",cS=(s=>(s.REGULAR=\"dependencies\",s.DEVELOPMENT=\"devDependencies\",s.PEER=\"peerDependencies\",s))(cS||{}),B5=(s=>(s.CARET=\"^\",s.TILDE=\"~\",s.EXACT=\"\",s))(B5||{}),W1e=(s=>(s.CARET=\"^\",s.TILDE=\"~\",s.EXACT=\"*\",s))(W1e||{}),nF=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(nF||{});function uS(t,e){return t.exact?\"\":t.caret?\"^\":t.tilde?\"~\":e.configuration.get(\"defaultSemverRangePrefix\")}var g2t=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function Y1e(t,{project:e}){let r=t.match(g2t);return r?r[1]:e.configuration.get(\"defaultSemverRangePrefix\")}function d2t(t,e){let{protocol:r,source:s,params:a,selector:n}=q.parseRange(t.range);return w5.default.valid(n)&&(n=`${e}${t.range}`),q.makeDescriptor(t,q.makeRange({protocol:r,source:s,params:a,selector:n}))}function V1e(t){switch(t){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${t}\"`)}}function K1e(t,e){return q.makeDescriptor(t.anchoredDescriptor,`${h2t}${V1e(e)}`)}async function J1e(t,{project:e,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of e.workspaces)if(r===\"peerDependencies\"){let c=n.manifest.peerDependencies.get(t.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(t.identHash),f=n.manifest.devDependencies.get(t.identHash);r===\"devDependencies\"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function v5(t,{cwd:e,workspace:r}){return await y2t(async s=>{K.isAbsolute(t)||(t=K.relative(r.cwd,K.resolve(e,t)),t.match(/^\\.{0,2}\\//)||(t=`./${t}`));let{project:a}=r,n=await S5(q.makeIdent(null,\"archive\"),t,{project:r.project,cache:s,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let c=new Wi,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=q.convertDescriptorToLocator(E),S=await p.fetch(C,h),P=await Ht.find(S.prefixPath,{baseFs:S.packageFs});if(!P.name)throw new Error(\"Target path doesn't have a name\");return q.makeDescriptor(P.name,t)})}function m2t(t){if(t.range===\"unknown\")return{type:\"resolve\",range:\"latest\"};if(Or.validRange(t.range))return{type:\"fixed\",range:t.range};if(Hp.test(t.range))return{type:\"resolve\",range:t.range};let e=t.range.match(/^(?:jsr:|npm:)(.*)/);if(!e)return{type:\"fixed\",range:t.range};let[,r]=e,s=`${q.stringifyIdent(t)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Or.validRange(r)?{type:\"fixed\",range:t.range}:Hp.test(r)?{type:\"resolve\",range:t.range}:{type:\"fixed\",range:t.range}}async function fS(t,{project:e,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||t.range===\"unknown\"?m2t(t):{type:\"fixed\",range:t.range};if(h.type===\"fixed\")return{suggestions:[{descriptor:t,name:`Use ${q.prettyDescriptor(e.configuration,t)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let E=typeof r<\"u\"&&r!==null&&r.manifest[a].get(t.identHash)||null,C=[],S=[],P=async I=>{try{await I()}catch(R){S.push(R)}};for(let I of f){if(C.length>=p)break;switch(I){case\"keep\":await P(async()=>{E&&C.push({descriptor:E,name:`Keep ${q.prettyDescriptor(e.configuration,E)}`,reason:\"(no changes)\"})});break;case\"reuse\":await P(async()=>{for(let{descriptor:R,locators:N}of(await J1e(t,{project:e,target:a})).values()){if(N.length===1&&N[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes(\"keep\"))continue;let U=`(originally used by ${q.prettyLocator(e.configuration,N[0])}`;U+=N.length>1?` and ${N.length-1} other${N.length>2?\"s\":\"\"})`:\")\",C.push({descriptor:R,name:`Reuse ${q.prettyDescriptor(e.configuration,R)}`,reason:U})}});break;case\"cache\":await P(async()=>{for(let R of e.storedDescriptors.values())R.identHash===t.identHash&&C.push({descriptor:R,name:`Reuse ${q.prettyDescriptor(e.configuration,R)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await P(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let R=e.tryWorkspaceByIdent(t);if(R===null)return;let N=K1e(R,c);C.push({descriptor:N,name:`Attach ${q.prettyDescriptor(e.configuration,N)}`,reason:`(local workspace at ${he.pretty(e.configuration,R.relativeCwd,he.Type.PATH)})`})});break;case\"latest\":{let R=e.configuration.get(\"enableNetwork\"),N=e.configuration.get(\"enableOfflineMode\");await P(async()=>{if(a===\"peerDependencies\")C.push({descriptor:q.makeDescriptor(t,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!R&&!N)C.push({descriptor:null,name:\"Resolve from latest\",reason:he.pretty(e.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let U=await S5(t,h.range,{project:e,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${q.prettyDescriptor(e.configuration,U)}`,reason:`(resolved from ${N?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function S5(t,e,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(q.makeDescriptor(t,e)),p=new Wi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},P=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(P,{},S);if(I.length===0)return null;let R=I[0],{protocol:N,source:U,params:W,selector:te}=q.parseRange(q.convertToManifestRange(R.reference));if(N===r.configuration.get(\"defaultProtocol\")&&(N=null),w5.default.valid(te)){let ie=te;if(typeof c<\"u\")te=c+te;else if(n!==!1){let me=typeof n==\"string\"?n:f.range;te=Y1e(me,{project:r})+te}let Ae=q.makeDescriptor(R,q.makeRange({protocol:N,source:U,params:W,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(Ae),{},S)).length!==1&&(te=ie)}return q.makeDescriptor(R,q.makeRange({protocol:N,source:U,params:W,selector:te}))}async function y2t(t){return await le.mktempPromise(async e=>{let r=ze.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Jr(e,{configuration:r,check:!1,immutable:!1}))})}var aC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.dev=ge.Boolean(\"-D,--dev\",!1,{description:\"Add a package as a dev dependency\"});this.peer=ge.Boolean(\"-P,--peer\",!1,{description:\"Add a package as a peer dependency\"});this.optional=ge.Boolean(\"-O,--optional\",!1,{description:\"Add / upgrade a package to an optional regular / peer dependency\"});this.preferDev=ge.Boolean(\"--prefer-dev\",!1,{description:\"Add / upgrade a package to a dev dependency\"});this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Reuse the specified package from other workspaces in the project\"});this.cached=ge.Boolean(\"--cached\",!1,{description:\"Reuse the highest version already used somewhere within the project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ao(ec)});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.packages=ge.Rest()}static{this.paths=[[\"add\"]]}static{this.usage=ot.Usage({description:\"add dependencies to the project\",details:\"\\n      This command adds a package to the package.json for the nearest workspace.\\n\\n      - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\\n\\n      - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\\n\\n      - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\\n\\n      - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\\\"peerDependenciesMeta\\\": { \\\"<package>\\\": { \\\"optional\\\": true } }`\\n\\n      - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\\n\\n      - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\\n\\n      If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\\n\\n      If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\\n    \",examples:[[\"Add a regular package to the current workspace\",\"$0 add lodash\"],[\"Add a specific version for a package to the current workspace\",\"$0 add lodash@1.2.3\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using a URL\",\"$0 add lodash@https://github.com/lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol\",\"$0 add lodash@github:lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash@lodash/lodash\"],[\"Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash-es@lodash/lodash#es\"],[\"Add a local package (gzipped tarball format) to the current workspace\",\"$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get(\"preferReuse\"),h=uS(this,s),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(W=>typeof W<\"u\"),C=f?1/0:1,S=W=>{let te=q.tryParseDescriptor(W.slice(4));return te?te.range===\"unknown\"?q.makeDescriptor(te,`jsr:${q.stringifyIdent(te)}@latest`):q.makeDescriptor(te,`jsr:${te.range}`):null},P=await Promise.all(this.packages.map(async W=>{let te=W.match(/^\\.{0,2}\\//)?await v5(W,{cwd:this.context.cwd,workspace:a}):W.startsWith(\"jsr:\")?S(W):q.tryParseDescriptor(W),ie=W.match(/^(https?:|git@github)/);if(ie)throw new nt(`It seems you are trying to add a package using a ${he.pretty(r,`${ie[0]}...`,he.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${he.pretty(r,\"yarn add\",he.Type.CODE)} ${he.pretty(r,q.makeDescriptor(q.makeIdent(null,\"my-package\"),`${ie[0]}...`),he.Type.DESCRIPTOR)}`);if(!te)throw new nt(`The ${he.pretty(r,W,he.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let Ae=E2t(a,te,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(Ae.map(async me=>{let pe=await fS(te,{project:s,workspace:a,cache:n,fixed:c,target:me,modifier:h,strategies:E,maxResults:C});return{request:te,suggestedDescriptors:pe,target:me}}))})).then(W=>W.flat()),I=await uA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async W=>{for(let{request:te,suggestedDescriptors:{suggestions:ie,rejections:Ae}}of P)if(ie.filter(me=>me.descriptor!==null).length===0){let[me]=Ae;if(typeof me>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");s.configuration.get(\"enableNetwork\")?W.reportError(27,`${q.prettyDescriptor(r,te)} can't be resolved to a satisfying range`):W.reportError(27,`${q.prettyDescriptor(r,te)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),W.reportSeparator(),W.reportExceptionOnce(me)}});if(I.hasErrors())return I.exitCode();let R=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:W},target:te}of P){let ie,Ae=W.filter(Be=>Be.descriptor!==null),ce=Ae[0].descriptor,me=Ae.every(Be=>q.areDescriptorsEqual(Be.descriptor,ce));Ae.length===1||me?ie=ce:(R=!0,{answer:ie}=await(0,z1e.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:W.map(({descriptor:Be,name:Ce,reason:g})=>Be?{name:Ce,hint:g,descriptor:Be}:{name:Ce,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Be){return this.find(Be,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[te].get(ie.identHash);(typeof pe>\"u\"||pe.descriptorHash!==ie.descriptorHash)&&(a.manifest[te].set(ie.identHash,ie),this.optional&&(te===\"dependencies\"?a.manifest.ensureDependencyMeta({...ie,range:\"unknown\"}).optional=!0:te===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:\"unknown\"}).optional=!0)),typeof pe>\"u\"?N.push([a,te,ie,E]):U.push([a,te,pe,ie]))}return await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyReplacement,U),R&&this.context.stdout.write(`\n`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function E2t(t,e,{dev:r,peer:s,preferDev:a,optional:n}){let c=t.manifest.dependencies.has(e.identHash),f=t.manifest.devDependencies.has(e.identHash),p=t.manifest.peerDependencies.has(e.identHash);if((r||s)&&c)throw new nt(`Package \"${q.prettyIdent(t.project.configuration,e)}\" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new nt(`Package \"${q.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new nt(`Package \"${q.prettyIdent(t.project.configuration,e)}\" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new nt(`Package \"${q.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new nt(`Package \"${q.prettyIdent(t.project.configuration,e)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:f?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}Ve();Ve();Wt();var lC=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Print both the binary name and the locator of the package that provides the binary\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.name=ge.String({required:!1})}static{this.paths=[[\"bin\"]]}static{this.usage=ot.Usage({description:\"get the path to a binary script\",details:`\n      When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \\`-v,--verbose\\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n      When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n    `,examples:[[\"List all the available binaries\",\"$0 bin\"],[\"Print the path to a specific binary\",\"$0 bin eslint\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await In.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new nt(`Couldn't find a binary named \"${this.name}\" for package \"${q.prettyLocator(r,a)}\"`);let[,p]=f;return this.context.stdout.write(`${p}\n`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await In.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:q.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h,\" \")}   ${q.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};Ve();bt();Wt();var cC=class extends ut{constructor(){super(...arguments);this.mirror=ge.Boolean(\"--mirror\",!1,{description:\"Remove the global cache files instead of the local cache files\"});this.all=ge.Boolean(\"--all\",!1,{description:\"Remove both the global cache files and the local cache files of the current project\"})}static{this.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]]}static{this.usage=ot.Usage({description:\"remove the shared cache files\",details:`\n      This command will remove all the files from the cache.\n    `,examples:[[\"Remove all the local archives\",\"$0 cache clean\"],[\"Remove all the archives stored in the ~/.yarn directory\",\"$0 cache clean --mirror\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get(\"enableCacheClean\"))throw new nt(\"Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.\");let s=await Jr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await le.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await le.removePromise(s.cwd)})).exitCode()}};Ve();Wt();var X1e=et(AS()),D5=ye(\"util\"),uC=class extends ut{constructor(){super(...arguments);this.why=ge.Boolean(\"--why\",!1,{description:\"Print the explanation for why a setting has its value\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.unsafe=ge.Boolean(\"--no-redacted\",!1,{description:\"Don't redact secrets (such as tokens) from the output\"});this.name=ge.String()}static{this.paths=[[\"config\",\"get\"]]}static{this.usage=ot.Usage({description:\"read a configuration settings\",details:`\n      This command will print a configuration setting.\n\n      Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \\`--no-redacted\\` to get the untransformed value.\n    `,examples:[[\"Print a simple configuration setting\",\"yarn config get yarnPath\"],[\"Print a complex configuration setting\",\"yarn config get packageExtensions\"],[\"Print a nested field from the configuration\",`yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'`],[\"Print a token from the configuration\",\"yarn config get npmAuthToken --no-redacted\"],[\"Print a configuration setting as JSON\",\"yarn config get packageExtensions --json\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(s)>\"u\")throw new nt(`Couldn't find a configuration settings named \"${s}\"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=je.convertMapsToIndexableObjects(c),p=a?(0,X1e.default)(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p==\"string\")return this.context.stdout.write(`${p}\n`),h.exitCode();D5.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,D5.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};Ve();Wt();var j2e=et(k5()),q2e=et(AS()),G2e=et(Q5()),T5=ye(\"util\"),fC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Set complex configuration settings to JSON values\"});this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String();this.value=ge.String()}static{this.paths=[[\"config\",\"set\"]]}static{this.usage=ot.Usage({description:\"change a configuration settings\",details:`\n      This command will set a configuration setting.\n\n      When used without the \\`--json\\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n      When used with the \\`--json\\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n    `,examples:[[\"Set a simple configuration setting (a string, a number, or a boolean)\",\"yarn config set initScope myScope\"],[\"Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag\",'yarn config set initScope --json \\\\\"myScope\\\\\"'],[\"Set a complex configuration setting (an Array) using the `--json` flag\",`yarn config set unsafeHttpWhitelist --json '[\"*.example.com\", \"example.com\"]'`],[\"Set a complex configuration setting (an Object) using the `--json` flag\",`yarn config set packageExtensions --json '{ \"@babel/parser@*\": { \"dependencies\": { \"@babel/types\": \"*\" } } }'`],[\"Set a nested configuration setting\",'yarn config set npmScopes.company.npmRegistryServer \"https://npm.example.com\"'],[\"Set a nested configuration setting using indexed access for non-simple keys\",`yarn config set 'npmRegistries[\"//npm.example.com\"].npmAuthToken' \"ffffffff-ffff-ffff-ffff-ffffffffffff\"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new nt(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new nt(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let R=(0,j2e.default)(I);return(0,G2e.default)(R,this.name,f),R}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=je.convertMapsToIndexableObjects(E),S=n?(0,q2e.default)(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{T5.inspect.styles.name=\"cyan\",I.reportInfo(0,`Successfully set ${this.name} to ${(0,T5.inspect)(S,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};Ve();Wt();var tBe=et(k5()),rBe=et(K2e()),nBe=et(F5()),AC=class extends ut{constructor(){super(...arguments);this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String()}static{this.paths=[[\"config\",\"unset\"]]}static{this.usage=ot.Usage({description:\"unset a configuration setting\",details:`\n      This command will unset a configuration setting.\n    `,examples:[[\"Unset a simple configuration setting\",\"yarn config unset initScope\"],[\"Unset a complex configuration setting\",\"yarn config unset packageExtensions\"],[\"Unset a nested configuration setting\",\"yarn config unset npmScopes.company.npmRegistryServer\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new nt(`Couldn't find a configuration settings named \"${a}\"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!(0,rBe.default)(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?(0,tBe.default)(C):{...C};return(0,nBe.default)(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Ve();bt();Wt();var sF=ye(\"util\"),pC=class extends ut{constructor(){super(...arguments);this.noDefaults=ge.Boolean(\"--no-defaults\",!1,{description:\"Omit the default values from the display\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.verbose=ge.Boolean(\"-v,--verbose\",{hidden:!0});this.why=ge.Boolean(\"--why\",{hidden:!0});this.names=ge.Rest()}static{this.paths=[[\"config\"]]}static{this.usage=ot.Usage({description:\"display the current configuration\",details:`\n      This command prints the current active configuration settings.\n    `,examples:[[\"Print the active configuration settings\",\"$0 config\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await DI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:\"The --verbose option is deprecated, the settings' descriptions are now always displayed\"},{option:this.why,message:\"The --why option is deprecated, the settings' sources are now always displayed\"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>\"u\"&&f.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??\"<default>\",S=C&&C[0]!==\"<\"?ue.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),P=r.sources.get(C)??\"<default>\",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:\"Description\",value:he.tuple(he.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:he.tuple(P[0]===\"<\"?he.Type.CODE:he.Type.PATH,P)}};h[C]={value:he.tuple(he.Type.CODE,C),children:R};let N=(U,W)=>{for(let[te,ie]of W)if(ie instanceof Map){let Ae={};U[te]={children:Ae},N(Ae,ie)}else U[te]={label:te,value:he.tuple(he.Type.NO_HINT,(0,sF.inspect)(ie,p))}};I instanceof Map?N(R,I):R.Value={label:\"Value\",value:he.tuple(he.Type.NO_HINT,(0,sF.inspect)(I,p))}}a.length!==1&&(n=void 0),ks.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let f=a[0],p=(0,sF.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return c.exitCode()}};Ve();Wt();Ul();var oF={};Vt(oF,{Strategy:()=>pS,acceptedStrategies:()=>tSt,dedupe:()=>N5});Ve();Ve();var iBe=et(Sa()),pS=(e=>(e.HIGHEST=\"highest\",e))(pS||{}),tSt=new Set(Object.values(pS)),rSt={highest:async(t,e,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>\"u\")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);je.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(je.mapAndFilter(t.storedDescriptors.values(),p=>q.isVirtualDescriptor(p)?je.mapAndFilter.skip:[p.descriptorHash,je.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>\"u\")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=t.originalPackages.get(E);if(typeof C>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),P=Object.fromEntries(await je.allSettledSafe(Object.entries(S).map(async([te,ie])=>{let Ae=f.get(ie.descriptorHash);if(typeof Ae>\"u\")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let ce=await Ae.promise;if(!ce)throw new Error(\"Assertion failed: Expected the dependency to have been through the dedupe process itself\");return[te,ce.updatedPackage]})));if(e.length&&!iBe.default.isMatch(q.stringifyIdent(p),e)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let R=[...I].map(te=>{let ie=t.originalPackages.get(te);if(typeof ie>\"u\")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ie}),N=await r.getSatisfying(p,P,R,a),U=N.locators?.[0];if(typeof U>\"u\"||!N.sorted)return C;let W=t.originalPackages.get(U.locatorHash);if(typeof W>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return W}).then(async S=>{let P=await t.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:P})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function N5(t,{strategy:e,patterns:r,cache:s,report:a}){let{configuration:n}=t,c=new Wi,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:t.storedChecksums,fetcher:p,project:t,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let C=rSt[e],S=await C(t,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),P=ho.progressViaCounter(S.length);await a.reportProgress(P);let I=0;await Promise.all(S.map(U=>U.then(W=>{if(W===null||W.currentPackage.locatorHash===W.updatedPackage.locatorHash)return;I++;let{descriptor:te,currentPackage:ie,updatedPackage:Ae}=W;a.reportInfo(0,`${q.prettyDescriptor(n,te)} can be deduped from ${q.prettyLocator(n,ie)} to ${q.prettyLocator(n,Ae)}`),a.reportJson({descriptor:q.stringifyDescriptor(te),currentResolution:q.stringifyLocator(ie),updatedResolution:q.stringifyLocator(Ae)}),t.storedResolutions.set(te.descriptorHash,Ae.locatorHash)}).finally(()=>P.tick())));let R;switch(I){case 0:R=\"No packages\";break;case 1:R=\"One package\";break;default:R=`${I} packages`}let N=he.pretty(n,e,he.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),I})}var hC=class extends ut{constructor(){super(...arguments);this.strategy=ge.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:Ao(pS)});this.check=ge.Boolean(\"-c,--check\",!1,{description:\"Exit with exit code 1 when duplicates are found, without persisting the dependency tree\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ao(ec)});this.patterns=ge.Rest()}static{this.paths=[[\"dedupe\"]]}static{this.usage=ot.Usage({description:\"deduplicate dependencies with overlapping ranges\",details:\"\\n      Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\\n\\n      This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\\n\\n      - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\\n\\n      **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\\n\\n      If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      ### In-depth explanation:\\n\\n      Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\\n\\n      Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\\n    \",examples:[[\"Dedupe all packages\",\"$0 dedupe\"],[\"Dedupe all packages using a specific strategy\",\"$0 dedupe --strategy highest\"],[\"Dedupe a specific package\",\"$0 dedupe lodash\"],[\"Dedupe all packages with the `@babel/*` scope\",\"$0 dedupe '@babel/*'\"],[\"Check for duplicates (can be used as a CI step)\",\"$0 dedupe --check\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await N5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Ve();Wt();var gC=class extends ut{static{this.paths=[[\"--clipanion=definitions\"]]}async execute(){let{plugins:e}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of e){let{commands:f}=c[1];if(f){let h=wa.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(\" \").slice(1).join()===f.split(\" \").slice(1).join(),n=sBe()[\"@yarnpkg/builder\"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)}\n`)}};var dC=class extends ut{static{this.paths=[[\"help\"],[\"--help\"],[\"-h\"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};Ve();bt();Wt();var mC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!q.tryParseIdent(this.leadingArgument)){let r=K.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run([\"run\",this.leadingArgument,...this.args])}};Ve();var yC=class extends ut{static{this.paths=[[\"-v\"],[\"--version\"]]}async execute(){this.context.stdout.write(`${un||\"<unknown>\"}\n`)}};Ve();Ve();Wt();var EC=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"exec\"]]}static{this.usage=ot.Usage({description:\"execute a shell script\",details:`\n      This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.\n\n      It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n    `,examples:[[\"Execute a single shell command\",\"$0 exec echo Hello World\"],[\"Execute a shell script\",'$0 exec \"tsc & babel src --out-dir lib\"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState(),await In.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};Ve();Wt();Ul();var IC=class extends ut{constructor(){super(...arguments);this.hash=ge.String({required:!1,validator:Jx(wE(),[tB(/^p[0-9a-f]{5}$/)])})}static{this.paths=[[\"explain\",\"peer-requirements\"]]}static{this.usage=ot.Usage({description:\"explain a set of peer requirements\",details:`\n      A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters.\n\n      When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not.\n\n      When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement.\n\n      **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\\`yarn explain peer-requirements\\`).\n    `,examples:[[\"Explain the corresponding peer requirement for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all peer requirements\",\"$0 explain peer-requirements\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<\"u\"?await iSt(this.hash,s,{stdout:this.context.stdout}):await sSt(s,{stdout:this.context.stdout})}};async function iSt(t,e,r){let s=e.peerRequirementNodes.get(t);if(typeof s>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${t}\"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:he.tuple(he.Type.NO_HINT,\"...\")}]:[]}:(a.add(p.requester.locatorHash),{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[q.stringifyLocator(h.requester),n(h)]))}),c=e.peerWarnings.find(p=>p.hash===t);return(await Ot.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=he.mark(e.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} is requested to provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,he.pretty(e.configuration,s.subject,he.Type.LOCATOR)),ks.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[q.stringifyLocator(C.requester),n(C)]))},{configuration:e.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range===\"missing:\"){let C=c?\"\":\" , but all peer requests are optional\";p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} does not provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)}${C}.`)}else{let C=e.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let S=e.storedPackages.get(C);if(!S)throw new Error(\"Assertion failed: Expected the package to be registered\");p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} provides ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} with version ${q.prettyReference(e.configuration,S.version??\"0.0.0\")}, ${c?\"which does not satisfy all requests.\":\"which satisfies all requests\"}`),c?.type===3&&(c.range?p.reportInfo(0,`  The combined requested range is ${he.pretty(e.configuration,c.range,he.Type.RANGE)}`):p.reportInfo(0,\"  Unfortunately, the requested ranges have no overlap\"))}})).exitCode()}async function sSt(t,e){return(await Ot.start({configuration:t.configuration,stdout:e.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=he.mark(t.configuration),n=je.sortMap(t.peerRequirementNodes,[([,c])=>q.stringifyLocator(c.subject),([,c])=>q.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=t.peerWarnings.find(E=>E.hash===c.hash),p=[...q.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=\" and 1 other dependency\":h=\"\",c.provided.range!==\"missing:\"){let E=t.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");let C=t.storedPackages.get(E);if(!C)throw new Error(\"Assertion failed: Expected the provided package to have been registered\");let S=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \\u2192 ${f?a.Cross:a.Check} ${q.prettyLocator(t.configuration,c.subject)} provides ${q.prettyLocator(t.configuration,C)} to ${q.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \\u2192 ${f?a.Cross:a.Check} ${q.prettyLocator(t.configuration,c.subject)} doesn't provide ${q.prettyIdent(t.configuration,c.ident)} to ${q.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}Ve();Wt();Ul();Ve();Ve();bt();Wt();var oBe=et(fi()),CC=class extends ut{constructor(){super(...arguments);this.useYarnPath=ge.Boolean(\"--yarn-path\",{description:\"Set the yarnPath setting even if the version can be accessed by Corepack\"});this.onlyIfNeeded=ge.Boolean(\"--only-if-needed\",!1,{description:\"Only lock the Yarn version if it isn't already locked\"});this.version=ge.String()}static{this.paths=[[\"set\",\"version\"]]}static{this.usage=ot.Usage({description:\"lock the Yarn version used by the project\",details:\"\\n      This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\\n\\n      By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\\n\\n      A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\\n\\n      The version specifier can be:\\n\\n      - a tag:\\n        - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\\n        - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\\n        - `classic` -> the most recent classic (`^0.x || ^1.x`) release\\n\\n      - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\\n\\n      - a semver version (e.g. `2.4.1`, `1.22.1`)\\n\\n      - a local file referenced through either a relative or absolute path\\n\\n      - `self` -> the version used to invoke the command\\n    \",examples:[[\"Download the latest release from the Yarn repository\",\"$0 set version latest\"],[\"Download the latest canary release from the Yarn repository\",\"$0 set version canary\"],[\"Download the latest classic release from the Yarn repository\",\"$0 set version classic\"],[\"Download the most recent Yarn 3 build\",\"$0 set version 3.x\"],[\"Download a specific Yarn 2 build\",\"$0 set version 2.0.0-rc.30\"],[\"Switch back to a specific Yarn 1 release\",\"$0 set version 1.22.1\"],[\"Use a release from the local filesystem\",\"$0 set version ./yarn.cjs\"],[\"Use a release from a URL\",\"$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js\"],[\"Download the version used to invoke the command\",\"$0 set version self\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let f=r.sources.get(\"yarnPath\");if(!f)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(K.contains(p,f))return 0}let s=()=>{if(typeof un>\"u\")throw new nt(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:s(),version:un??\"self\"};else if(this.version===\"latest\"||this.version===\"berry\"||this.version===\"stable\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await hS(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await hS(r,\"canary\"));else if(this.version===\"classic\")a={url:\"https://classic.yarnpkg.com/latest.js\",version:\"classic\"};else if(this.version.match(/^https?:/))a={url:this.version,version:\"remote\"};else if(this.version.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.version))a={url:`file://${K.resolve(ue.toPortablePath(this.version))}`,version:\"file\"};else if(Or.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(Or.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(Or.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await oSt(r,this.version));else throw new nt(`Invalid version descriptor \"${this.version}\"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${he.pretty(r,a.url,he.Type.PATH)}`),await le.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${he.pretty(r,a.url,he.Type.URL)}`),await An.get(a.url,{configuration:r}))};await O5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function oSt(t,e){let s=(await An.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0})).tags.filter(a=>Or.satisfiesWithPrereleases(a,e));if(s.length===0)throw new nt(`No matching release found for range ${he.pretty(t,e,he.Type.RANGE)}.`);return s[0]}async function hS(t,e){let r=await An.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new nt(`Tag ${he.pretty(t,e,he.Type.RANGE)} not found`);return r.latest[e]}async function O5(t,e,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>\"u\"&&(n=await r()),n);if(e===null){let te=await c();await le.mktempPromise(async ie=>{let Ae=K.join(ie,\"yarn.cjs\");await le.writeFilePromise(Ae,te);let{stdout:ce}=await Gr.execvp(process.execPath,[ue.fromPortablePath(Ae),\"--version\"],{cwd:ie,env:{...t.env,YARN_IGNORE_PATH:\"1\"}});if(e=ce.trim(),!oBe.default.valid(e))throw new Error(`Invalid semver version. ${he.pretty(t,\"yarn --version\",he.Type.CODE)} returned:\n${e}`)})}let f=t.projectCwd??t.startingCwd,p=K.resolve(f,\".yarn/releases\"),h=K.resolve(p,`yarn-${e}.cjs`),E=K.relative(t.startingCwd,h),C=je.isTaggedYarnVersion(e),S=t.get(\"yarnPath\"),P=!C,I=P||!!S||!!a;if(a===!1){if(P)throw new Yt(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${he.applyHyperlink(t,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${he.applyHyperlink(t,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),I=!0);if(I){let te=await c();s.reportInfo(0,`Saving the new release in ${he.pretty(t,E,\"magenta\")}`),await le.removePromise(K.dirname(h)),await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.writeFilePromise(h,te,{mode:493}),await ze.updateConfiguration(f,{yarnPath:K.relative(f,h)})}else await le.removePromise(K.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let R=await Ht.tryFind(f)||new Ht;R.packageManager=`yarn@${C?e:await hS(t,\"stable\")}`;let N={};R.exportTo(N);let U=K.join(f,Ht.fileName),W=`${JSON.stringify(N,null,R.indent)}\n`;return await le.changeFilePromise(U,W,{automaticNewlines:!0}),{bundleVersion:e}}function aBe(t){return Dr[rk(t)]}var aSt=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function lSt(t){let r=`https://repo.yarnpkg.com/${je.isTaggedYarnVersion(un)?un:await hS(t,\"canary\")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await An.get(r,{configuration:t});return new Map(Array.from(s.toString().matchAll(aSt),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=aBe(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected \"${a.name}\" to be named \"${n}\"`);return[a.code,a.details]}))}var wC=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:rB(wE(),[tB(/^YN[0-9]{4}$/)])});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"explain\"]]}static{this.usage=ot.Usage({description:\"explain an error code\",details:`\n      When the code argument is specified, this command prints its name and its details.\n\n      When used without arguments, this command lists all error codes and their names.\n    `,examples:[[\"Explain an error code\",\"$0 explain YN0006\"],[\"List all error codes\",\"$0 explain\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let s=aBe(this.code),a=he.pretty(r,s,he.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await lSt(r)).get(this.code),p=typeof f<\"u\"?he.jsonOrPretty(this.json,r,he.tuple(he.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.\n\nYou can help us by editing this page on GitHub \\u{1F642}:\n${he.jsonOrPretty(this.json,r,he.tuple(he.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let s={children:je.mapAndFilter(Object.entries(Dr),([a,n])=>Number.isNaN(Number(a))?je.mapAndFilter.skip:{label:Vf(Number(a)),value:he.tuple(he.Type.CODE,n)})};ks.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Ve();bt();Wt();var lBe=et(Sa()),BC=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Print versions of a package from the whole project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Print information for all packages, including transitive dependencies\"});this.extra=ge.Array(\"-X,--extra\",[],{description:\"An array of requests of extra data provided by plugins\"});this.cache=ge.Boolean(\"--cache\",!1,{description:\"Print information about the cache entry of a package (path, size, checksum)\"});this.dependents=ge.Boolean(\"--dependents\",!1,{description:\"Print all dependents for each matching package\"});this.manifest=ge.Boolean(\"--manifest\",!1,{description:\"Print data obtained by looking at the package archive (license, homepage, ...)\"});this.nameOnly=ge.Boolean(\"--name-only\",!1,{description:\"Only print the name for the matching packages\"});this.virtuals=ge.Boolean(\"--virtuals\",!1,{description:\"Print each instance of the virtual packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}static{this.paths=[[\"info\"]]}static{this.usage=ot.Usage({description:\"see information related to packages\",details:\"\\n      This command prints various information related to the specified packages, accepting glob patterns.\\n\\n      By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\\n\\n      Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\\n\\n      Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\\n    \",examples:[[\"Show information about Lodash\",\"$0 info lodash\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add(\"cache\"),this.dependents&&c.add(\"dependents\"),this.manifest&&c.add(\"manifest\");let f=(ie,{recursive:Ae})=>{let ce=ie.anchoredLocator.locatorHash,me=new Map,pe=[ce];for(;pe.length>0;){let Be=pe.shift();if(me.has(Be))continue;let Ce=s.storedPackages.get(Be);if(typeof Ce>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(me.set(Be,Ce),q.isVirtualLocator(Ce)&&pe.push(q.devirtualizeLocator(Ce).locatorHash),!(!Ae&&Be!==ce))for(let g of Ce.dependencies.values()){let we=s.storedResolutions.get(g.descriptorHash);if(typeof we>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");pe.push(we)}}return me.values()},p=({recursive:ie})=>{let Ae=new Map;for(let ce of s.workspaces)for(let me of f(ce,{recursive:ie}))Ae.set(me.locatorHash,me);return Ae.values()},h=({all:ie,recursive:Ae})=>ie&&Ae?s.storedPackages.values():ie?p({recursive:Ae}):f(a,{recursive:Ae}),E=({all:ie,recursive:Ae})=>{let ce=h({all:ie,recursive:Ae}),me=this.patterns.map(Ce=>{let g=q.parseLocator(Ce),we=lBe.default.makeRe(q.stringifyIdent(g)),Ee=q.isVirtualLocator(g),fe=Ee?q.devirtualizeLocator(g):g;return se=>{let X=q.stringifyIdent(se);if(!we.test(X))return!1;if(g.reference===\"unknown\")return!0;let De=q.isVirtualLocator(se),Re=De?q.devirtualizeLocator(se):se;return!(Ee&&De&&g.reference!==se.reference||fe.reference!==Re.reference)}}),pe=je.sortMap([...ce],Ce=>q.stringifyLocator(Ce));return{selection:pe.filter(Ce=>me.length===0||me.some(g=>g(Ce))),sortedLookup:pe}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new nt(\"No package matched your request\");let P=new Map;if(this.dependents)for(let ie of S)for(let Ae of ie.dependencies.values()){let ce=s.storedResolutions.get(Ae.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");je.getArrayWithDefault(P,ce).push(ie)}let I=new Map;for(let ie of S){if(!q.isVirtualLocator(ie))continue;let Ae=q.devirtualizeLocator(ie);je.getArrayWithDefault(I,Ae.locatorHash).push(ie)}let R={},N={children:R},U=r.makeFetcher(),W={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new Wi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ie,Ae,ce)=>{if(!Ae.has(\"manifest\"))return;let me=await U.fetch(ie,W),pe;try{pe=await Ht.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}ce(\"Manifest\",{License:he.tuple(he.Type.NO_HINT,pe.license),Homepage:he.tuple(he.Type.URL,pe.raw.homepage??null)})},async(ie,Ae,ce)=>{if(!Ae.has(\"cache\"))return;let me=s.storedChecksums.get(ie.locatorHash)??null,pe=n.getLocatorPath(ie,me),Be;if(pe!==null)try{Be=await le.statPromise(pe)}catch{}let Ce=typeof Be<\"u\"?[Be.size,he.Type.SIZE]:void 0;ce(\"Cache\",{Checksum:he.tuple(he.Type.NO_HINT,me),Path:he.tuple(he.Type.PATH,pe),Size:Ce})}];for(let ie of C){let Ae=q.isVirtualLocator(ie);if(!this.virtuals&&Ae)continue;let ce={},me={value:[ie,he.Type.LOCATOR],children:ce};if(R[q.stringifyLocator(ie)]=me,this.nameOnly){delete me.children;continue}let pe=I.get(ie.locatorHash);typeof pe<\"u\"&&(ce.Instances={label:\"Instances\",value:he.tuple(he.Type.NUMBER,pe.length)}),ce.Version={label:\"Version\",value:he.tuple(he.Type.NO_HINT,ie.version)};let Be=(g,we)=>{let Ee={};if(ce[g]=Ee,Array.isArray(we))Ee.children=we.map(fe=>({value:fe}));else{let fe={};Ee.children=fe;for(let[se,X]of Object.entries(we))typeof X>\"u\"||(fe[se]={label:se,value:X})}};if(!Ae){for(let g of te)await g(ie,c,Be);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Be)}ie.bin.size>0&&!Ae&&Be(\"Exported Binaries\",[...ie.bin.keys()].map(g=>he.tuple(he.Type.PATH,g)));let Ce=P.get(ie.locatorHash);typeof Ce<\"u\"&&Ce.length>0&&Be(\"Dependents\",Ce.map(g=>he.tuple(he.Type.LOCATOR,g))),ie.dependencies.size>0&&!Ae&&Be(\"Dependencies\",[...ie.dependencies.values()].map(g=>{let we=s.storedResolutions.get(g.descriptorHash),Ee=typeof we<\"u\"?s.storedPackages.get(we)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:Ee})})),ie.peerDependencies.size>0&&Ae&&Be(\"Peer dependencies\",[...ie.peerDependencies.values()].map(g=>{let we=ie.dependencies.get(g.identHash),Ee=typeof we<\"u\"?s.storedResolutions.get(we.descriptorHash)??null:null,fe=Ee!==null?s.storedPackages.get(Ee)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:fe})}))}ks.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Ve();bt();Bc();var aF=et(Nd());Wt();var L5=et(fi());Ul();var cSt=[{selector:t=>t===-1,name:\"nodeLinker\",value:\"node-modules\"},{selector:t=>t!==-1&&t<8,name:\"enableGlobalCache\",value:!1},{selector:t=>t!==-1&&t<8,name:\"compressionLevel\",value:\"mixed\"}],vC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.immutable=ge.Boolean(\"--immutable\",{description:\"Abort with an error exit code if the lockfile was to be modified\"});this.immutableCache=ge.Boolean(\"--immutable-cache\",{description:\"Abort with an error exit code if the cache folder was to be modified\"});this.refreshLockfile=ge.Boolean(\"--refresh-lockfile\",{description:\"Refresh the package metadata stored in the lockfile\"});this.checkCache=ge.Boolean(\"--check-cache\",{description:\"Always refetch the packages and ensure that their checksums are consistent\"});this.checkResolutions=ge.Boolean(\"--check-resolutions\",{description:\"Validates that the package resolutions are coherent\"});this.inlineBuilds=ge.Boolean(\"--inline-builds\",{description:\"Verbosely print the output of the build steps of dependencies\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ao(ec)});this.cacheFolder=ge.String(\"--cache-folder\",{hidden:!0});this.frozenLockfile=ge.Boolean(\"--frozen-lockfile\",{hidden:!0});this.ignoreEngines=ge.Boolean(\"--ignore-engines\",{hidden:!0});this.nonInteractive=ge.Boolean(\"--non-interactive\",{hidden:!0});this.preferOffline=ge.Boolean(\"--prefer-offline\",{hidden:!0});this.production=ge.Boolean(\"--production\",{hidden:!0});this.registry=ge.String(\"--registry\",{hidden:!0});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.networkTimeout=ge.String(\"--network-timeout\",{hidden:!0})}static{this.paths=[[\"install\"],ot.Default]}static{this.usage=ot.Usage({description:\"install the project dependencies\",details:\"\\n      This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\\n\\n      - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\\n\\n      - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\\n\\n      - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\\n\\n      - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\\n\\n      Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\\n\\n      If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\\n\\n      If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\\n\\n      If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\\n\\n      If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\\n\\n      If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Install the project\",\"$0 install\"],[\"Validate a project when using Zero-Installs\",\"$0 install --immutable --immutable-cache\"],[\"Validate a project when using Zero-Installs (slightly safer if you accept external PRs)\",\"$0 install --immutable --immutable-cache --check-cache\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await DI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:\"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore\",error:!aF.default.VERCEL},{option:this.registry,message:\"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file\"},{option:this.preferOffline,message:\"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead\",error:!aF.default.VERCEL},{option:this.production,message:\"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead\",error:!0},{option:this.nonInteractive,message:\"The --non-interactive option is deprecated\",error:!s},{option:this.frozenLockfile,message:\"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead\",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:\"The cache-folder option has been deprecated; use rc settings instead\",error:!aF.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new nt(`${he.pretty(r,\"--immutable\",he.Type.CODE)} and ${he.pretty(r,\"--immutable-cache\",he.Type.CODE)} cannot be used with ${he.pretty(r,\"--mode=update-lockfile\",he.Type.CODE)}`);let c=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await ASt(r,c)&&(N.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await fSt(r,c)&&(N.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&N.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),N.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),N.reportInfo(65,`Run ${he.pretty(r,\"yarn config set --home enableTelemetry 0\",he.Type.CODE)} to disable`),N.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await An.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let W=null;if(un!==null){let ie=L5.default.prerelease(un)?\"canary\":\"stable\",Ae=U.latest[ie];L5.default.gt(Ae,un)&&(W=[ie,Ae])}if(W)ze.telemetry.commitTips(),N.reportInfo(88,`${he.applyStyle(r,`A new ${W[0]} version of Yarn is available:`,he.Style.BOLD)} ${q.prettyReference(r,W[1])}!`),N.reportInfo(88,`Upgrade now by running ${he.pretty(r,`yarn set version ${W[1]}`,he.Type.CODE)}`),N.reportSeparator();else{let te=ze.telemetry.selectTip(U.tips);te&&(N.reportInfo(89,he.pretty(r,te.message,he.Type.MARKDOWN_INLINE)),te.url&&N.reportInfo(89,`Learn more at ${te.url}`),N.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Tt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let W of cSt)W.selector(E)&&typeof r.sources.get(W.name)>\"u\"&&(r.use(\"<compat>\",{[W.name]:W.value},p.cwd,{overwrite:!0}),U[W.name]=W.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),N.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),N.reportSeparator())});if(R.hasErrors())return R.exitCode()}let C=await Jr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get(\"enableHardenedMode\");S&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,\"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled.\"),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${he.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let P=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:C,report:R,immutable:c,checkResolutions:P,mode:this.mode})})).exitCode()}},uSt=\"<<<<<<<\";async function fSt(t,e){if(!t.projectCwd)return!1;let r=K.join(t.projectCwd,Er.lockfile);if(!await le.existsPromise(r)||!(await le.readFilePromise(r,\"utf8\")).includes(uSt))return!1;if(e)throw new Yt(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await Gr.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Gr.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0&&(a=await Gr.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0)throw new Yt(83,\"Git returned an error when trying to find the commits pertaining to the conflict\");let n=await Promise.all(a.stdout.trim().split(/\\n/).map(async f=>{let p=await Gr.execvp(\"git\",[\"show\",`${f}:./${Er.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new Yt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return ls(p.stdout)}catch{throw new Yt(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p===\"__metadata\")continue;let h=q.parseDescriptor(p,!0),E=t.normalizeDependency(h),C=q.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p===\"__metadata\")continue;let h=f[p].checksum;typeof h>\"u\"||h.includes(\"/\")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey=\"merged\";for(let[f,p]of Object.entries(c))typeof p==\"string\"&&delete c[f];return await le.changeFilePromise(r,il(c),{automaticNewlines:!0}),!0}async function ASt(t,e){if(!t.projectCwd)return!1;let r=[],s=K.join(t.projectCwd,\".yarn/plugins/@yarnpkg\");return await ze.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=K.resolve(t.projectCwd,f.path),h=Ev.has(f.spec)&&K.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:e})?(await Promise.all(r.map(async n=>{await le.removePromise(n)})),!0):!1}Ve();bt();Wt();var SC=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Link all workspaces belonging to the target projects to the current one\"});this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Also link private workspaces belonging to the target projects to the current one\"});this.relative=ge.Boolean(\"-r,--relative\",!1,{description:\"Link workspaces using relative paths instead of absolute paths\"});this.destinations=ge.Rest()}static{this.paths=[[\"link\"]]}static{this.usage=ot.Usage({description:\"connect the local project to another one\",details:\"\\n      This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\\n    \",examples:[[\"Register one or more remote workspaces for use in the current project\",\"$0 link ~/ts-loader ~/jest\"],[\"Register all workspaces from a remote project for use in the current project\",\"$0 link ~/jest --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=K.resolve(this.context.cwd,ue.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(s.cwd===C.cwd)throw new nt(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let P=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),P=!0);if(!P)throw new nt(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new nt(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new nt(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=q.stringifyIdent(p.anchoredLocator),E=this.relative?K.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Wt();var DC=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}static{this.paths=[[\"node\"]]}static{this.usage=ot.Usage({description:\"run node with the hook already setup\",details:`\n      This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n      The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n    `,examples:[[\"Run a Node script\",\"$0 node ./my-script.js\"]]})}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};Ve();Wt();var bC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"check\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"find all third-party plugins that differ from their own spec\",details:`\n      Check only the plugins from https.\n\n      If this command detects any plugin differences in the CI environment, it will throw an error.\n    `,examples:[[\"find all third-party plugins that differ from their own spec\",\"$0 plugin check\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await An.get(f.spec,{configuration:r}),h=Nn.makeHash(p);if(f.checksum===h)continue;let E=he.pretty(r,f.path,he.Type.PATH),C=he.pretty(r,f.spec,he.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};Ve();Ve();bt();Wt();var pBe=ye(\"os\");Ve();bt();Wt();var cBe=ye(\"os\");Ve();Bc();Wt();var pSt=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function Dm(t,e){let r=await An.get(pSt,{configuration:t}),s=ls(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!e||Or.satisfiesWithPrereleases(e,n.range??\"<4.0.0-rc.1\")))}var PC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"list\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"list the available official plugins\",details:\"\\n      This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\\n    \",examples:[[\"List the official plugins\",\"$0 plugin list\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Dm(r,un);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=\" [experimental]\"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var hSt=/^[0-9]+$/,gSt=process.platform===\"win32\";function uBe(t){return hSt.test(t)?`pull/${t}/head`:t}var dSt=({repository:t,branch:e},r)=>[[\"git\",\"init\",ue.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",t],[\"git\",\"fetch\",\"origin\",\"--depth=1\",uBe(e)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],mSt=({branch:t})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",uBe(t),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],ySt=({plugins:t,noMinify:e},r,s)=>[[\"yarn\",\"build:cli\",...new Array().concat(...t.map(a=>[\"--plugin\",K.resolve(s,a)])),...e?[\"--no-minify\"]:[],\"|\"],[gSt?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",ue.fromPortablePath(r),\"|\"]],xC=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.plugins=ge.Array(\"--plugin\",[],{description:\"An array of additional plugins that should be included in the bundle\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"If set, the bundle will be built but not added to the project\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a bundle for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.skipPlugins=ge.Boolean(\"--skip-plugins\",!1,{description:\"Skip updating the contrib plugins\"})}static{this.paths=[[\"set\",\"version\",\"from\",\"sources\"]]}static{this.usage=ot.Usage({description:\"build Yarn from master\",details:`\n      This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n\n      By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \\`--skip-plugins\\` flag.\n    `,examples:[[\"Build Yarn from master\",\"$0 set version from sources\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?K.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):K.resolve(ue.toPortablePath((0,cBe.tmpdir)()),\"yarnpkg-sources\",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await M5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,\"Building a fresh bundle\"),c.reportSeparator();let f=await Gr.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=K.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);le.existsSync(p)||(await gS(ySt(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await le.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await O5(r,null,async()=>h,{report:c});this.skipPlugins||await ESt(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function gS(t,{configuration:e,context:r,target:s}){for(let[a,...n]of t){let c=n[n.length-1]===\"|\";if(c&&n.pop(),c)await Gr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${he.pretty(e,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await Gr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function M5(t,{configuration:e,report:r,target:s}){let a=!1;if(!t.force&&le.existsSync(K.join(s,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await gS(mSt(t),{configuration:e,context:t.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,\"Repository update failed; we'll try to regenerate it\")}}a||(r.reportInfo(0,\"Cloning the remote repository\"),r.reportSeparator(),await le.removePromise(s),await le.mkdirPromise(s,{recursive:!0}),await gS(dSt(t,s),{configuration:e,context:t.context,target:s}))}async function ESt(t,e,{project:r,report:s,target:a}){let n=await Dm(r.configuration,e),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await _5(f,t,{project:r,report:s,target:a})}Ve();Ve();bt();Wt();var fBe=et(fi()),ABe=ye(\"vm\");var kC=class extends ut{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean(\"--checksum\",!0,{description:\"Whether to care if this plugin is modified\"})}static{this.paths=[[\"plugin\",\"import\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"download a plugin\",details:`\n      This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n      Three types of plugin references are accepted:\n\n      - If the plugin is stored within the Yarn repository, it can be referenced by name.\n      - Third-party plugins can be referenced directly through their public urls.\n      - Local plugins can be referenced by their path on the disk.\n\n      If the \\`--no-checksum\\` option is set, Yarn will no longer care if the plugin is modified.\n\n      Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \\`@yarnpkg/builder\\` package).\n    `,examples:[['Download and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import @yarnpkg/plugin-exec\"],['Download and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import exec\"],[\"Download and activate a community plugin\",\"$0 plugin import https://example.org/path/to/plugin.js\"],[\"Activate a local plugin\",\"$0 plugin import ./path/to/plugin.js\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Tt.find(r,this.context.cwd),c,f;if(this.name.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.name)){let p=K.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${he.pretty(r,p,he.Type.PATH)}`),c=K.relative(n.cwd,p),f=await le.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new Yt(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=q.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!fBe.default.valid(h.reference))throw new Yt(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=q.stringifyIdent(h),C=await Dm(r,un);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${q.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?S+=`A plugin named ${q.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${he.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",he.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${he.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",he.Type.URL)}).`,new Yt(51,S)}c=E,p=C[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):un!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${un}/`))}a.reportInfo(0,`Downloading ${he.pretty(r,p,\"green\")}`),f=await An.get(p,{configuration:r})}await U5(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function U5(t,e,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,ABe.runInNewContext)(e.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=K.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${he.pretty(n,h,\"magenta\")}`),await le.mkdirPromise(K.dirname(E),{recursive:!0}),await le.writeFilePromise(E,e);let C={path:h,spec:t};r&&(C.checksum=Nn.makeHash(e)),await ze.addPlugin(s.cwd,[C])}var ISt=({pluginName:t,noMinify:e},r)=>[[\"yarn\",`build:${t}`,...e?[\"--no-minify\"]:[],\"|\"]],QC=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a plugin for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.name=ge.String()}static{this.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"build a plugin from sources\",details:`\n      This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n      The plugins can be referenced by their short name if sourced from the official Yarn repository.\n    `,examples:[['Build and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import from sources @yarnpkg/plugin-exec\"],['Build and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import from sources exec\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<\"u\"?K.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):K.resolve(ue.toPortablePath((0,pBe.tmpdir)()),\"yarnpkg-sources\",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Tt.find(r,this.context.cwd),f=q.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=q.stringifyIdent(f),h=await Dm(r,un);if(!Object.hasOwn(h,p))throw new Yt(51,`Couldn't find a plugin named \"${p}\" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await M5(this,{configuration:r,report:n,target:s}),await _5(E,this,{project:c,report:n,target:s})})).exitCode()}};async function _5(t,{context:e,noMinify:r},{project:s,report:a,target:n}){let c=t.replace(/@yarnpkg\\//,\"\"),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await gS(ISt({pluginName:c,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let p=K.resolve(n,`packages/${c}/bundles/${t}.js`),h=await le.readFilePromise(p);await U5(t,h,{project:s,report:a})}Ve();bt();Wt();var TC=class extends ut{constructor(){super(...arguments);this.name=ge.String()}static{this.paths=[[\"plugin\",\"remove\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"remove a plugin\",details:`\n      This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n      **Note:** The plugins have to be referenced by their name property, which can be obtained using the \\`yarn plugin runtime\\` command. Shorthands are not allowed.\n   `,examples:[[\"Remove a plugin imported from the Yarn repository\",\"$0 plugin remove @yarnpkg/plugin-typescript\"],[\"Remove a plugin imported from a local file\",\"$0 plugin remove my-local-plugin\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=q.parseIdent(c);if(!r.plugins.has(c))throw new nt(`${q.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=K.resolve(s.cwd,p);le.existsSync(h)&&(n.reportInfo(0,`Removing ${he.pretty(r,p,he.Type.PATH)}...`),await le.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};Ve();Wt();var RC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"runtime\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"list the active plugins\",details:`\n      This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n    `,examples:[[\"List the currently active plugins\",\"$0 plugin runtime\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=\" [builtin]\"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Ve();Ve();Wt();var FC=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}static{this.paths=[[\"rebuild\"]]}static{this.usage=ot.Usage({description:\"rebuild the project's native packages\",details:`\n      This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n      Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n      By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n    `,examples:[[\"Rebuild all packages\",\"$0 rebuild\"],[\"Rebuild fsevents only\",\"$0 rebuild fsevents\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(q.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new Wi}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ve();Ve();Ve();Wt();var H5=et(Sa());Ul();var NC=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Apply the operation to all workspaces from the current project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ao(ec)});this.patterns=ge.Rest()}static{this.paths=[[\"remove\"]]}static{this.usage=ot.Usage({description:\"remove dependencies from the project\",details:`\n      This command will remove the packages matching the specified patterns from the current workspace.\n\n      If the \\`--mode=<mode>\\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n      - \\`skip-build\\` will not run the build scripts at all. Note that this is different from setting \\`enableScripts\\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n      - \\`update-lockfile\\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n    `,examples:[[\"Remove a dependency from the current project\",\"$0 remove lodash\"],[\"Remove a dependency from all workspaces at once\",\"$0 remove lodash --all\"],[\"Remove all dependencies starting with `eslint-`\",\"$0 remove 'eslint-*'\"],[\"Remove all dependencies with the `@babel` scope\",\"$0 remove '@babel/*'\"],[\"Remove all dependencies matching `react-dom` or `react-helmet`\",\"$0 remove 'react-{dom,helmet}'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let I of this.patterns){let R=!1,N=q.parseIdent(I);for(let U of c){let W=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,H5.default)(W,I))U.manifest.peerDependenciesMeta.delete(te),h=!0,R=!0;for(let te of f){let ie=U.manifest.getForScope(te),Ae=[...ie.values()].map(ce=>q.stringifyIdent(ce));for(let ce of(0,H5.default)(Ae,q.stringifyIdent(N))){let{identHash:me}=q.parseIdent(ce),pe=ie.get(me);if(typeof pe>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[te].delete(me),E.push([U,te,pe]),h=!0,R=!0}}}R||p.push(I)}let C=p.length>1?\"Patterns\":\"Pattern\",S=p.length>1?\"don't\":\"doesn't\",P=this.all?\"any\":\"this\";if(p.length>0)throw new nt(`${C} ${he.prettyList(r,p,he.Type.CODE)} ${S} match any packages referenced by ${P} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};Ve();Ve();Wt();var hBe=ye(\"util\"),OC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"run\"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=je.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E,\" \")}   ${(0,hBe.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};Ve();Ve();Wt();var LC=class extends ut{constructor(){super(...arguments);this.inspect=ge.String(\"--inspect\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.inspectBrk=ge.String(\"--inspect-brk\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.topLevel=ge.Boolean(\"-T,--top-level\",!1,{description:\"Check the root workspace for scripts and/or binaries instead of the current one\"});this.binariesOnly=ge.Boolean(\"-B,--binaries-only\",!1,{description:\"Ignore any user defined scripts and only check for binaries\"});this.require=ge.String(\"--require\",{description:\"Forwarded to the underlying Node process when executing a binary\"});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"run\"]]}static{this.usage=ot.Usage({description:\"run a script defined in the package.json\",details:`\n      This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n      - If the \\`scripts\\` field from your local package.json contains a matching script name, its definition will get executed.\n\n      - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n      - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n      Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n    `,examples:[[\"Run the tests from the local workspace\",\"$0 run test\"],['Same thing, but without the \"run\" keyword',\"$0 test\"],[\"Inspect Webpack while running\",\"$0 run --inspect-brk webpack\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await In.hasPackageScript(c,this.scriptName,{project:s}))return await In.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await In.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect==\"string\"?h.push(`--inspect=${this.inspect}`):h.push(\"--inspect\")),this.inspectBrk&&(typeof this.inspectBrk==\"string\"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push(\"--inspect-brk\")),this.require&&h.push(`--require=${this.require}`),await In.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await In.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName===\"node-gyp\"?new nt(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${q.prettyLocator(r,n)}). This typically happens because some package depends on \"node-gyp\" to build itself, but didn't list it in their dependencies. To fix that, please run \"yarn add node-gyp\" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new nt(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${q.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new nt(\"The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead\");let h=[this.scriptName].concat(this.args);for(let[E,C]of tC)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new nt(`Couldn't find a script named \"${this.scriptName}\", but a matching command can be found in the ${E} plugin. You can install it with \"yarn plugin import ${E}\".`);throw new nt(`Couldn't find a script named \"${this.scriptName}\".`)}}};Ve();Ve();Wt();var MC=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}static{this.paths=[[\"set\",\"resolution\"]]}static{this.usage=ot.Usage({description:\"enforce a package resolution\",details:'\\n      This command updates the resolution table so that `descriptor` is resolved by `resolution`.\\n\\n      Note that by default this command only affect the current resolution table - meaning that this \"manual override\" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\\n\\n      Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\\n    ',examples:[[\"Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0\",\"$0 set resolution lodash@npm:^1.2.3 npm:1.5.0\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=q.parseDescriptor(this.descriptor,!0),f=q.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Ve();bt();Wt();var gBe=et(Sa()),_C=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unlink all workspaces belonging to the target project from the current one\"});this.leadingArguments=ge.Rest()}static{this.paths=[[\"unlink\"]]}static{this.usage=ot.Usage({description:\"disconnect the local project from another one\",details:`\n      This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.\n    `,examples:[[\"Unregister a remote workspace in the current project\",\"$0 unlink ~/ts-loader\"],[\"Unregister all workspaces from a remote project in the current project\",\"$0 unlink ~/jest --all\"],[\"Unregister all previously linked workspaces\",\"$0 unlink --all\"],[\"Unregister all workspaces matching a glob\",\"$0 unlink '@babel/*' 'pkg-{a,b}'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith(\"portal:\")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=K.resolve(this.context.cwd,ue.toPortablePath(p));if(je.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let P of C.workspaces)P.manifest.name&&f.add(q.stringifyIdent(P.anchoredLocator));if(f.size===0)throw new nt(\"No workspace found to be unlinked in the target project\")}else{if(!S.manifest.name)throw new nt(\"The target workspace doesn't have a name and thus cannot be unlinked\");f.add(q.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,gBe.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ve();Ve();Ve();Wt();var dBe=et(lS()),j5=et(Sa());Ul();var UC=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Offer various choices, depending on the detected upgrade paths\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Resolve again ALL resolutions for those packages\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ao(ec)});this.patterns=ge.Rest()}static{this.paths=[[\"up\"]]}static{this.usage=ot.Usage({description:\"upgrade dependencies across the project\",details:\"\\n      This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\\n\\n      If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\\n\\n      If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\\n\\n      The, `-C,--caret`, `-E,--exact` and  `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\\n\\n      This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\\n    \",examples:[[\"Upgrade all instances of lodash to the latest release\",\"$0 up lodash\"],[\"Upgrade all instances of lodash to the latest release, but ask confirmation for each\",\"$0 up lodash -i\"],[\"Upgrade all instances of lodash to 1.2.3\",\"$0 up lodash@1.2.3\"],[\"Upgrade all instances of packages with the `@babel` scope to the latest release\",\"$0 up '@babel/*'\"],[\"Upgrade all instances of packages containing the word `jest` to the latest release\",\"$0 up '*jest*'\"],[\"Upgrade all instances of packages with the `@babel` scope to 7.0.0\",\"$0 up '@babel/*@7.0.0'\"]]})}static{this.schema=[iB(\"recursive\",Wf.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>q.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(q.parseDescriptor(E).range!==\"unknown\")throw new nt(\"Ranges aren't allowed when using --recursive\");for(let C of(0,j5.default)(f,E)){let S=q.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=uS(this,s),h=f?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],C=[];for(let N of this.patterns){let U=!1,W=q.parseDescriptor(N),te=q.stringifyIdent(W);for(let ie of s.workspaces)for(let Ae of[\"dependencies\",\"devDependencies\"]){let me=[...ie.manifest.getForScope(Ae).values()].map(Be=>q.stringifyIdent(Be)),pe=te===\"*\"?me:(0,j5.default)(me,te);for(let Be of pe){let Ce=q.parseIdent(Be),g=ie.manifest[Ae].get(Ce.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let we=q.makeDescriptor(Ce,W.range);E.push(Promise.resolve().then(async()=>[ie,Ae,g,await fS(we,{project:s,workspace:ie,cache:n,target:Ae,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(N)}if(C.length>1)throw new nt(`Patterns ${he.prettyList(r,C,he.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new nt(`Pattern ${he.prettyList(r,C,he.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),P=await uA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:W,rejections:te}]of S){let ie=W.filter(Ae=>Ae.descriptor!==null);if(ie.length===0){let[Ae]=te;if(typeof Ae>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let ce=this.cli.error(Ae);s.configuration.get(\"enableNetwork\")?N.reportError(27,`${q.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${ce}`):N.reportError(27,`${q.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${ce}`)}else ie.length>1&&!f&&N.reportError(27,`${q.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(P.hasErrors())return P.exitCode();let I=!1,R=[];for(let[N,U,,{suggestions:W}]of S){let te,ie=W.filter(pe=>pe.descriptor!==null),Ae=ie[0].descriptor,ce=ie.every(pe=>q.areDescriptorsEqual(pe.descriptor,Ae));ie.length===1||ce?te=Ae:(I=!0,{answer:te}=await(0,dBe.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${q.prettyWorkspace(r,N)} \\u276F ${U}?`,choices:W.map(({descriptor:pe,name:Be,reason:Ce})=>pe?{name:Be,hint:Ce,descriptor:pe}:{name:Be,hint:Ce,disabled:!0}),onCancel:()=>process.exit(130),result(pe){return this.find(pe,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=N.manifest[U].get(te.identHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: This descriptor should have a matching entry\");if(me.descriptorHash!==te.descriptorHash)N.manifest[U].set(te.identHash,te),R.push([N,U,me,te]);else{let pe=r.makeResolver(),Be={project:s,resolver:pe},Ce=r.normalizeDependency(me),g=pe.bindDescriptor(Ce,N.anchoredLocator,Be);s.forgetResolution(g)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),I&&this.context.stdout.write(`\n`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Ve();Ve();Ve();Wt();var HC=class extends ut{constructor(){super(...arguments);this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"List, for each workspace, what are all the paths that lead to the dependency\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.peers=ge.Boolean(\"--peers\",!1,{description:\"Also print the peer dependencies that match the specified name\"});this.package=ge.String()}static{this.paths=[[\"why\"]]}static{this.usage=ot.Usage({description:\"display the reason why a package is needed\",details:`\n      This command prints the exact reasons why a package appears in the dependency tree.\n\n      If \\`-R,--recursive\\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named \"Foo\" when looking for \"Bar\", it means that \"Foo\" already got printed higher in the tree.\n    `,examples:[[\"Explain why lodash is used in your project\",\"$0 why lodash\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=q.parseIdent(this.package).identHash,c=this.recursive?wSt(s,n,{configuration:r,peers:this.peers}):CSt(s,n,{configuration:r,peers:this.peers});ks.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function CSt(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.storedPackages.values(),f=>q.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(\"Assertion failed: The resolution should have been registered\");let S=t.storedPackages.get(C);if(!S)throw new Error(\"Assertion failed: The package should have been registered\");if(S.identHash!==e)continue;{let I=q.stringifyLocator(f);n[I]={value:[f,he.Type.LOCATOR],children:p}}let P=q.stringifyLocator(S);p[P]={value:[{descriptor:E,locator:S},he.Type.DEPENDENT]}}}return c}function wSt(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.workspaces,S=>q.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===e)return c.add(S.locatorHash),!0;let P=!1;S.identHash===e&&(P=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let R=t.storedResolutions.get(I.descriptorHash);if(!R)throw new Error(\"Assertion failed: The resolution should have been registered\");let N=t.storedPackages.get(R);if(!N)throw new Error(\"Assertion failed: The package should have been registered\");f(N)&&(P=!0)}return P&&c.add(S.locatorHash),P};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,P,I)=>{if(!c.has(S.locatorHash))return;let R=I!==null?he.tuple(he.Type.DEPENDENT,{locator:S,descriptor:I}):he.tuple(he.Type.LOCATOR,S),N={},U={value:R,children:N},W=q.stringifyLocator(S);if(P[W]=U,!(I!==null&&t.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let te of S.dependencies.values()){if(!s&&S.peerDependencies.has(te.identHash))continue;let ie=t.storedResolutions.get(te.descriptorHash);if(!ie)throw new Error(\"Assertion failed: The resolution should have been registered\");let Ae=t.storedPackages.get(ie);if(!Ae)throw new Error(\"Assertion failed: The package should have been registered\");C(Ae,N,te)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}Ve();var X5={};Vt(X5,{GitFetcher:()=>mS,GitResolver:()=>yS,default:()=>qSt,gitUtils:()=>Qa});Ve();bt();var Qa={};Vt(Qa,{TreeishProtocols:()=>dS,clone:()=>Z5,fetchBase:()=>MBe,fetchChangedFiles:()=>_Be,fetchChangedWorkspaces:()=>HSt,fetchRoot:()=>LBe,isGitUrl:()=>GC,lsRemote:()=>OBe,normalizeLocator:()=>USt,normalizeRepoUrl:()=>jC,resolveUrl:()=>z5,splitRepoUrl:()=>Y0,validateRepoUrl:()=>J5});Ve();bt();Wt();var RBe=et(kBe()),FBe=et(d6()),qC=et(ye(\"querystring\")),V5=et(fi());function Y5(t,e,r){let s=t.indexOf(r);return t.lastIndexOf(e,s>-1?s:1/0)}function QBe(t){try{return new URL(t)}catch{return}}function MSt(t){let e=Y5(t,\"@\",\"#\"),r=Y5(t,\":\",\"#\");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),Y5(t,\":\",\"#\")===-1&&t.indexOf(\"//\")===-1&&(t=`ssh://${t}`),t}function TBe(t){return QBe(t)||QBe(MSt(t))}function jC(t,{git:e=!1}={}){if(t=t.replace(/^git\\+https:/,\"https:\"),t=t.replace(/^(?:github:|https:\\/\\/github\\.com\\/|git:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\\.git)?(#.*)?$/,\"https://github.com/$1/$2.git$3\"),t=t.replace(/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/,\"https://github.com/$1/$2.git#$3\"),e){let r=TBe(t);r&&(t=r.href),t=t.replace(/^git\\+([^:]+):/,\"$1:\")}return t}function NBe(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var _St=[/^ssh:/,/^git(?:\\+[^:]+)?:/,/^(?:git\\+)?https?:[^#]+\\/[^#]+(?:\\.git)(?:#.*)?$/,/^git@[^#]+\\/[^#]+\\.git(?:#.*)?$/,/^(?:github:|https:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z._0-9-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\\.git)?(?:#.*)?$/,/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/],dS=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(dS||{});function GC(t){return t?_St.some(e=>!!t.match(e)):!1}function Y0(t){t=jC(t);let e=t.indexOf(\"#\");if(e===-1)return{repo:t,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=t.slice(0,e),s=t.slice(e+1);if(s.match(/^[a-z]+=/)){let a=qC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!=\"string\")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(dS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(dS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(\":\"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function USt(t){return q.makeLocator(t,jC(t.reference))}function J5(t,{configuration:e}){let r=jC(t,{git:!0});if(!An.getNetworkSettings(`https://${(0,RBe.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Yt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function OBe(t,e){let r=J5(t,{configuration:e}),s=await K5(\"listing refs\",[\"ls-remote\",r],{cwd:e.startingCwd,env:NBe()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function z5(t,e){let{repo:r,treeish:{protocol:s,request:a},extra:n}=Y0(t),c=await OBe(r,e),f=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return qC.default.stringify({...n,commit:E})}case\"head\":{let C=c.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof C>\"u\")throw new Error(`Unknown head (\"${E}\")`);return qC.default.stringify({...n,commit:C})}case\"tag\":{let C=c.get(`refs/tags/${E}`);if(typeof C>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return qC.default.stringify({...n,commit:C})}case\"semver\":{let C=Or.validRange(E);if(!C)throw new Error(`Invalid range (\"${E}\")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith(\"refs/tags/\")).map(([I,R])=>[V5.default.parse(I.slice(10)),R]).filter(I=>I[0]!==null)),P=V5.default.maxSatisfying([...S.keys()],C);if(P===null)throw new Error(`No matching range (\"${E}\")`);return qC.default.stringify({...n,commit:S.get(P)})}case null:{let C;if((C=p(\"commit\",E))!==null||(C=p(\"tag\",E))!==null||(C=p(\"head\",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol (\"${h}\")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return jC(`${r}#${f(s,a)}`)}async function Z5(t,e){return await e.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=Y0(t);if(s!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=J5(r,{configuration:e}),c=await le.mktempPromise(),f={cwd:c,env:NBe()};return await K5(\"cloning the repository\",[\"clone\",\"-c core.autocrlf=false\",n,ue.fromPortablePath(c)],f,{configuration:e,normalizedRepoUrl:n}),await K5(\"switching branch\",[\"checkout\",`${a}`],f,{configuration:e,normalizedRepoUrl:n}),c})}async function LBe(t){let e,r=t;do{if(e=r,await le.existsPromise(K.join(e,\".git\")))return e;r=K.dirname(e)}while(r!==e);return null}async function MBe(t,{baseRefs:e}){if(e.length===0)throw new nt(\"Can't run this command with zero base refs specified.\");let r=[];for(let f of e){let{code:p}=await Gr.execvp(\"git\",[\"merge-base\",f,\"HEAD\"],{cwd:t});p===0&&r.push(f)}if(r.length===0)throw new nt(`No ancestor could be found between any of HEAD and ${e.join(\", \")}`);let{stdout:s}=await Gr.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:t,strict:!0}),a=s.trim(),{stdout:n}=await Gr.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:t,strict:!0}),c=n.trim();return{hash:a,title:c}}async function _Be(t,{base:e,project:r}){let s=je.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await Gr.execvp(\"git\",[\"diff\",\"--name-only\",`${e}`],{cwd:t,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>K.resolve(t,ue.toPortablePath(h))),{stdout:c}=await Gr.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:t,strict:!0}),f=c.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>K.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!K.relative(r.cwd,h).match(s)):p}async function HSt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new nt(\"This command can only be run from within a Yarn project\");let r=[K.resolve(e.cwd,Er.lockfile),K.resolve(e.cwd,e.configuration.get(\"cacheFolder\")),K.resolve(e.cwd,e.configuration.get(\"installStatePath\")),K.resolve(e.cwd,e.configuration.get(\"virtualFolder\"))];await e.configuration.triggerHook(c=>c.populateYarnPaths,e,c=>{c!=null&&r.push(c)});let s=await LBe(e.configuration.projectCwd);if(s==null)throw new nt(\"This command can only be run on Git repositories\");let a=await MBe(s,{baseRefs:typeof t==\"string\"?[t]:e.configuration.get(\"changesetBaseRefs\")}),n=await _Be(s,{base:a.hash,project:e});return new Set(je.mapAndFilter(n,c=>{let f=e.tryWorkspaceByFilePath(c);return f===null?je.mapAndFilter.skip:r.some(p=>c.startsWith(p))?je.mapAndFilter.skip:f}))}async function K5(t,e,r,{configuration:s,normalizedRepoUrl:a}){try{return await Gr.execvp(\"git\",e,{...r,strict:!0})}catch(n){if(!(n instanceof Gr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new Yt(1,`Failed ${t}`,p=>{p.reportError(1,`  ${he.prettyField(s,{label:\"Repository URL\",value:he.tuple(he.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E===\"error\"?\"Error\":`${(0,FBe.default)(E)} Error`;p.reportError(1,`  ${he.prettyField(s,{label:S,value:he.tuple(he.Type.NO_HINT,C)})}`)}c?.(p)})}}var mS=class{supports(e,r){return GC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(e,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:q.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let s=Y0(e.reference),a=await Z5(e.reference,r.project.configuration),n=K.resolve(a,s.extra.cwd??vt.dot),c=K.join(n,\"package.tgz\");await In.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:e});let f=await le.readFilePromise(c);return await je.releaseAfterUseAsync(async()=>await hs.convertToZip(f,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1}))}};Ve();Ve();var yS=class{supportsDescriptor(e,r){return GC(e.range)}supportsLocator(e,r){return GC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=await z5(e.range,s.project.configuration);return[q.makeLocator(e,a)]}async getSatisfying(e,r,s,a){let n=Y0(e.range);return{locators:s.filter(f=>{if(f.identHash!==e.identHash)return!1;let p=Y0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol===\"commit\"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var jSt={configuration:{changesetBaseRefs:{description:\"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.\",type:\"STRING\",isArray:!0,isNullable:!1,default:[\"master\",\"origin/master\",\"upstream/master\",\"main\",\"origin/main\",\"upstream/main\"]},changesetIgnorePatterns:{description:\"Array of glob patterns; files matching them will be ignored when fetching the changed files\",type:\"STRING\",default:[],isArray:!0},cloneConcurrency:{description:\"Maximal number of concurrent clones\",type:\"NUMBER\",default:2}},fetchers:[mS],resolvers:[yS]};var qSt=jSt;Wt();var WC=class extends ut{constructor(){super(...arguments);this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Find packages via dependencies/devDependencies instead of using the workspaces field\"});this.noPrivate=ge.Boolean(\"--no-private\",{description:\"Exclude workspaces that have the private field set to true\"});this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also return the cross-dependencies between workspaces\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"workspaces\",\"list\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"list all available workspaces\",details:\"\\n      This command will print the list of all workspaces in the project.\\n\\n      - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\\n\\n      - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await Qa.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let P of Ht.hardDependencies)for(let[I,R]of h.getForScope(P)){let N=s.tryWorkspaceByDescriptor(R);N===null?s.workspacesByIdent.has(I)&&S.add(R):C.add(N)}E={workspaceDependencies:Array.from(C).map(P=>P.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(P=>q.stringifyDescriptor(P))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?q.stringifyIdent(h.name):null,...E})}})).exitCode()}};Ve();Ve();Wt();var YC=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"workspace\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"run a command within the specified workspace\",details:`\n      This command will run a given sub-command on a single workspace.\n    `,examples:[[\"Add a package to a single workspace\",\"yarn workspace components add -D react\"],[\"Run build script on a single workspace\",\"yarn workspace components run build\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[q.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new nt(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n  - ${p.join(`\n  - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var GSt={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:UBe.isCI},defaultSemverRangePrefix:{description:\"The default save prefix: '^', '~' or ''\",type:\"STRING\",values:[\"^\",\"~\",\"\"],default:\"^\"},preferReuse:{description:\"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.\",type:\"BOOLEAN\",default:!1}},commands:[cC,uC,fC,AC,MC,xC,CC,WC,gC,dC,mC,yC,aC,lC,pC,hC,EC,IC,wC,BC,vC,SC,_C,DC,bC,QC,kC,TC,PC,RC,FC,NC,OC,LC,UC,HC,YC]},WSt=GSt;var i9={};Vt(i9,{default:()=>VSt});Ve();var Qt={optional:!0},e9=[[\"@tailwindcss/aspect-ratio@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@tailwindcss/line-clamp@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0\",{peerDependencies:{postcss:\"^8.0.0\"}}],[\"@samverschueren/stream-to-observable@<0.3.1\",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{\"supports-color\":Qt}}],[\"got@<11\",{dependencies:{\"@types/responselike\":\"^1.0.0\",\"@types/keyv\":\"^3.1.1\"}}],[\"cacheable-lookup@<4.1.2\",{dependencies:{\"@types/keyv\":\"^3.1.1\"}}],[\"http-link-dataloader@*\",{peerDependencies:{graphql:\"^0.13.1 || ^14.0.0\"}}],[\"typescript-language-server@*\",{dependencies:{\"vscode-jsonrpc\":\"^5.0.1\",\"vscode-languageserver-protocol\":\"^3.15.0\"}}],[\"postcss-syntax@*\",{peerDependenciesMeta:{\"postcss-html\":Qt,\"postcss-jsx\":Qt,\"postcss-less\":Qt,\"postcss-markdown\":Qt,\"postcss-scss\":Qt}}],[\"jss-plugin-rule-value-function@<=10.1.1\",{dependencies:{\"tiny-warning\":\"^1.0.2\"}}],[\"ink-select-input@<4.1.0\",{peerDependencies:{react:\"^16.8.2\"}}],[\"license-webpack-plugin@<2.3.18\",{peerDependenciesMeta:{webpack:Qt}}],[\"snowpack@>=3.3.0\",{dependencies:{\"node-gyp\":\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:Qt}}],[\"reactcss@*\",{peerDependencies:{react:\"*\"}}],[\"react-color@<=2.19.0\",{peerDependencies:{react:\"*\"}}],[\"gatsby-plugin-i18n@*\",{dependencies:{ramda:\"^0.24.1\"}}],[\"useragent@^2.0.0\",{dependencies:{request:\"^2.88.0\",yamlparser:\"0.0.x\",semver:\"5.5.x\"}}],[\"@apollographql/apollo-tools@<=0.5.2\",{peerDependencies:{graphql:\"^14.2.1 || ^15.0.0\"}}],[\"material-table@^2.0.0\",{dependencies:{\"@babel/runtime\":\"^7.11.2\"}}],[\"@babel/parser@*\",{dependencies:{\"@babel/types\":\"^7.8.3\"}}],[\"fork-ts-checker-webpack-plugin@<=6.3.4\",{peerDependencies:{eslint:\">= 6\",typescript:\">= 2.7\",webpack:\">= 4\",\"vue-template-compiler\":\"*\"},peerDependenciesMeta:{eslint:Qt,\"vue-template-compiler\":Qt}}],[\"rc-animate@<=3.1.1\",{peerDependencies:{react:\">=16.9.0\",\"react-dom\":\">=16.9.0\"}}],[\"react-bootstrap-table2-paginator@*\",{dependencies:{classnames:\"^2.2.6\"}}],[\"react-draggable@<=4.4.3\",{peerDependencies:{react:\">= 16.3.0\",\"react-dom\":\">= 16.3.0\"}}],[\"apollo-upload-client@<14\",{peerDependencies:{graphql:\"14 - 15\"}}],[\"react-instantsearch-core@<=6.7.0\",{peerDependencies:{algoliasearch:\">= 3.1 < 5\"}}],[\"react-instantsearch-dom@<=6.7.0\",{dependencies:{\"react-fast-compare\":\"^3.0.0\"}}],[\"ws@<7.2.1\",{peerDependencies:{bufferutil:\"^4.0.1\",\"utf-8-validate\":\"^5.0.2\"},peerDependenciesMeta:{bufferutil:Qt,\"utf-8-validate\":Qt}}],[\"react-portal@<4.2.2\",{peerDependencies:{\"react-dom\":\"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0\"}}],[\"react-scripts@<=4.0.1\",{peerDependencies:{react:\"*\"}}],[\"testcafe@<=1.10.1\",{dependencies:{\"@babel/plugin-transform-for-of\":\"^7.12.1\",\"@babel/runtime\":\"^7.12.5\"}}],[\"testcafe-legacy-api@<=4.2.0\",{dependencies:{\"testcafe-hammerhead\":\"^17.0.1\",\"read-file-relative\":\"^1.2.0\"}}],[\"@google-cloud/firestore@<=4.9.3\",{dependencies:{protobufjs:\"^6.8.6\"}}],[\"gatsby-source-apiserver@*\",{dependencies:{\"babel-polyfill\":\"^6.26.0\"}}],[\"@webpack-cli/package-utils@<=1.0.1-alpha.4\",{dependencies:{\"cross-spawn\":\"^7.0.3\"}}],[\"gatsby-remark-prismjs@<3.3.28\",{dependencies:{lodash:\"^4\"}}],[\"gatsby-plugin-favicon@*\",{peerDependencies:{webpack:\"*\"}}],[\"gatsby-plugin-sharp@<=4.6.0-next.3\",{dependencies:{debug:\"^4.3.1\"}}],[\"gatsby-react-router-scroll@<=5.6.0-next.0\",{dependencies:{\"prop-types\":\"^15.7.2\"}}],[\"@rebass/forms@*\",{dependencies:{\"@styled-system/should-forward-prop\":\"^5.0.0\"},peerDependencies:{react:\"^16.8.6\"}}],[\"rebass@*\",{peerDependencies:{react:\"^16.8.6\"}}],[\"@ant-design/react-slick@<=0.28.3\",{peerDependencies:{react:\">=16.0.0\"}}],[\"mqtt@<4.2.7\",{dependencies:{duplexify:\"^4.1.1\"}}],[\"vue-cli-plugin-vuetify@<=2.0.3\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":Qt,\"vuetify-loader\":Qt}}],[\"vue-cli-plugin-vuetify@<=2.0.4\",{dependencies:{\"null-loader\":\"^3.0.0\"}}],[\"vue-cli-plugin-vuetify@>=2.4.3\",{peerDependencies:{vue:\"*\"}}],[\"@vuetify/cli-plugin-utils@<=0.0.4\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":Qt}}],[\"@vue/cli-plugin-typescript@<=5.0.0-alpha.0\",{dependencies:{\"babel-loader\":\"^8.1.0\"}}],[\"@vue/cli-plugin-typescript@<=5.0.0-beta.0\",{dependencies:{\"@babel/core\":\"^7.12.16\"},peerDependencies:{\"vue-template-compiler\":\"^2.0.0\"},peerDependenciesMeta:{\"vue-template-compiler\":Qt}}],[\"cordova-ios@<=6.3.0\",{dependencies:{underscore:\"^1.9.2\"}}],[\"cordova-lib@<=10.0.1\",{dependencies:{underscore:\"^1.9.2\"}}],[\"git-node-fs@*\",{peerDependencies:{\"js-git\":\"^0.7.8\"},peerDependenciesMeta:{\"js-git\":Qt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:Qt}}],[\"consolidate@<=0.16.0\",{peerDependencies:{velocityjs:\"^2.0.1\",tinyliquid:\"^0.2.34\",\"liquid-node\":\"^3.0.1\",jade:\"^1.11.0\",\"then-jade\":\"*\",dust:\"^0.3.0\",\"dustjs-helpers\":\"^1.7.4\",\"dustjs-linkedin\":\"^2.7.5\",swig:\"^1.4.2\",\"swig-templates\":\"^2.0.3\",\"razor-tmpl\":\"^1.3.1\",atpl:\">=0.7.6\",liquor:\"^0.0.5\",twig:\"^1.15.2\",ejs:\"^3.1.5\",eco:\"^1.1.0-rc-3\",jazz:\"^0.0.18\",jqtpl:\"~1.1.0\",hamljs:\"^0.6.2\",hamlet:\"^0.3.3\",whiskers:\"^0.4.0\",\"haml-coffee\":\"^1.14.1\",\"hogan.js\":\"^3.0.2\",templayed:\">=0.2.3\",handlebars:\"^4.7.6\",underscore:\"^1.11.0\",lodash:\"^4.17.20\",pug:\"^3.0.0\",\"then-pug\":\"*\",qejs:\"^3.0.5\",walrus:\"^0.10.1\",mustache:\"^4.0.1\",just:\"^0.1.8\",ect:\"^0.5.9\",mote:\"^0.2.0\",toffee:\"^0.3.6\",dot:\"^1.1.3\",\"bracket-template\":\"^1.1.5\",ractive:\"^1.3.12\",nunjucks:\"^3.2.2\",htmling:\"^0.0.8\",\"babel-core\":\"^6.26.3\",plates:\"~0.4.11\",\"react-dom\":\"^16.13.1\",react:\"^16.13.1\",\"arc-templates\":\"^0.5.3\",vash:\"^0.13.0\",slm:\"^2.0.0\",marko:\"^3.14.4\",teacup:\"^2.0.0\",\"coffee-script\":\"^1.12.7\",squirrelly:\"^5.1.0\",twing:\"^5.0.2\"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,\"liquid-node\":Qt,jade:Qt,\"then-jade\":Qt,dust:Qt,\"dustjs-helpers\":Qt,\"dustjs-linkedin\":Qt,swig:Qt,\"swig-templates\":Qt,\"razor-tmpl\":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,\"haml-coffee\":Qt,\"hogan.js\":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,\"then-pug\":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,\"bracket-template\":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,\"babel-core\":Qt,plates:Qt,\"react-dom\":Qt,react:Qt,\"arc-templates\":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,\"coffee-script\":Qt,squirrelly:Qt,twing:Qt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":Qt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":Qt,vue:Qt}}],[\"scss-parser@<=1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"query-ast@<1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"redux-thunk@<=2.3.0\",{peerDependencies:{redux:\"^4.0.0\"}}],[\"skypack@<=0.3.2\",{dependencies:{tar:\"^6.1.0\"}}],[\"@npmcli/metavuln-calculator@<2.0.0\",{dependencies:{\"json-parse-even-better-errors\":\"^2.3.1\"}}],[\"bin-links@<2.3.0\",{dependencies:{\"mkdirp-infer-owner\":\"^1.0.2\"}}],[\"rollup-plugin-polyfill-node@<=0.8.0\",{peerDependencies:{rollup:\"^1.20.0 || ^2.0.0\"}}],[\"snowpack@<3.8.6\",{dependencies:{\"magic-string\":\"^0.25.7\"}}],[\"elm-webpack-loader@*\",{dependencies:{temp:\"^0.9.4\"}}],[\"winston-transport@<=4.4.0\",{dependencies:{logform:\"^2.2.0\"}}],[\"jest-vue-preprocessor@*\",{dependencies:{\"@babel/core\":\"7.8.7\",\"@babel/template\":\"7.8.6\"},peerDependencies:{pug:\"^2.0.4\"},peerDependenciesMeta:{pug:Qt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:Qt}}],[\"sodium@>=3\",{dependencies:{\"node-gyp\":\"^3.8.0\"}}],[\"babel-plugin-graphql-tag@<=3.1.0\",{peerDependencies:{graphql:\"^14.0.0 || ^15.0.0\"}}],[\"@playwright/test@<=1.14.1\",{dependencies:{\"jest-matcher-utils\":\"^26.4.2\"}}],...[\"babel-plugin-remove-graphql-queries@<3.14.0-next.1\",\"babel-preset-gatsby-package@<1.14.0-next.1\",\"create-gatsby@<1.14.0-next.1\",\"gatsby-admin@<0.24.0-next.1\",\"gatsby-cli@<3.14.0-next.1\",\"gatsby-core-utils@<2.14.0-next.1\",\"gatsby-design-tokens@<3.14.0-next.1\",\"gatsby-legacy-polyfills@<1.14.0-next.1\",\"gatsby-plugin-benchmark-reporting@<1.14.0-next.1\",\"gatsby-plugin-graphql-config@<0.23.0-next.1\",\"gatsby-plugin-image@<1.14.0-next.1\",\"gatsby-plugin-mdx@<2.14.0-next.1\",\"gatsby-plugin-netlify-cms@<5.14.0-next.1\",\"gatsby-plugin-no-sourcemaps@<3.14.0-next.1\",\"gatsby-plugin-page-creator@<3.14.0-next.1\",\"gatsby-plugin-preact@<5.14.0-next.1\",\"gatsby-plugin-preload-fonts@<2.14.0-next.1\",\"gatsby-plugin-schema-snapshot@<2.14.0-next.1\",\"gatsby-plugin-styletron@<6.14.0-next.1\",\"gatsby-plugin-subfont@<3.14.0-next.1\",\"gatsby-plugin-utils@<1.14.0-next.1\",\"gatsby-recipes@<0.25.0-next.1\",\"gatsby-source-shopify@<5.6.0-next.1\",\"gatsby-source-wikipedia@<3.14.0-next.1\",\"gatsby-transformer-screenshot@<3.14.0-next.1\",\"gatsby-worker@<0.5.0-next.1\"].map(t=>[t,{dependencies:{\"@babel/runtime\":\"^7.14.8\"}}]),[\"gatsby-core-utils@<2.14.0-next.1\",{dependencies:{got:\"8.3.2\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.1.0-next.0\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.2.0-next.1\",{peerDependencies:{webpack:\"*\"}}],[\"babel-plugin-remove-graphql-queries@<=3.14.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.8.0-next.1\"}}],[\"gatsby-plugin-netlify@3.13.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"clipanion-v3-codemod@<=0.2.0\",{peerDependencies:{jscodeshift:\"^0.11.0\"}}],[\"react-live@*\",{peerDependencies:{\"react-dom\":\"*\",react:\"*\"}}],[\"webpack@<4.44.1\",{peerDependenciesMeta:{\"webpack-cli\":Qt,\"webpack-command\":Qt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":Qt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":Qt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":Qt,\"eslint-import-resolver-typescript\":Qt,\"eslint-import-resolver-webpack\":Qt,\"@typescript-eslint/parser\":Qt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":Qt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":Qt}}],[\"terser@<=5.10.0\",{dependencies:{acorn:\"^8.5.0\"}}],[\"babel-preset-react-app@10.0.x <10.0.2\",{dependencies:{\"@babel/plugin-proposal-private-property-in-object\":\"^7.16.7\"}}],[\"eslint-config-react-app@*\",{peerDependenciesMeta:{typescript:Qt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:Qt}}],[\"unplugin-vue2-script-setup@<0.9.1\",{peerDependencies:{\"@vue/composition-api\":\"^1.4.3\",\"@vue/runtime-dom\":\"^3.2.26\"}}],[\"@cypress/snapshot@*\",{dependencies:{debug:\"^3.2.7\"}}],[\"auto-relay@<=0.14.0\",{peerDependencies:{\"reflect-metadata\":\"^0.1.13\"}}],[\"vue-template-babel-compiler@<1.2.0\",{peerDependencies:{\"vue-template-compiler\":\"^2.6.0\"}}],[\"@parcel/transformer-image@<2.5.0\",{peerDependencies:{\"@parcel/core\":\"*\"}}],[\"@parcel/transformer-js@<2.5.0\",{peerDependencies:{\"@parcel/core\":\"*\"}}],[\"parcel@*\",{peerDependenciesMeta:{\"@parcel/core\":Qt}}],[\"react-scripts@*\",{peerDependencies:{eslint:\"*\"}}],[\"focus-trap-react@^8.0.0\",{dependencies:{tabbable:\"^5.3.2\"}}],[\"react-rnd@<10.3.7\",{peerDependencies:{react:\">=16.3.0\",\"react-dom\":\">=16.3.0\"}}],[\"connect-mongo@<5.0.0\",{peerDependencies:{\"express-session\":\"^1.17.1\"}}],[\"vue-i18n@<9\",{peerDependencies:{vue:\"^2\"}}],[\"vue-router@<4\",{peerDependencies:{vue:\"^2\"}}],[\"unified@<10\",{dependencies:{\"@types/unist\":\"^2.0.0\"}}],[\"react-github-btn@<=1.3.0\",{peerDependencies:{react:\">=16.3.0\"}}],[\"react-dev-utils@*\",{peerDependencies:{typescript:\">=2.7\",webpack:\">=4\"},peerDependenciesMeta:{typescript:Qt}}],[\"@asyncapi/react-component@<=1.0.0-next.39\",{peerDependencies:{react:\">=16.8.0\",\"react-dom\":\">=16.8.0\"}}],[\"xo@*\",{peerDependencies:{webpack:\">=1.11.0\"},peerDependenciesMeta:{webpack:Qt}}],[\"babel-plugin-remove-graphql-queries@<=4.20.0-next.0\",{dependencies:{\"@babel/types\":\"^7.15.4\"}}],[\"gatsby-plugin-page-creator@<=4.20.0-next.1\",{dependencies:{\"fs-extra\":\"^10.1.0\"}}],[\"gatsby-plugin-utils@<=3.14.0-next.1\",{dependencies:{fastq:\"^1.13.0\"},peerDependencies:{graphql:\"^15.0.0\"}}],[\"gatsby-plugin-mdx@<3.1.0-next.1\",{dependencies:{mkdirp:\"^1.0.4\"}}],[\"gatsby-plugin-mdx@^2\",{peerDependencies:{gatsby:\"^3.0.0-next\"}}],[\"fdir@<=5.2.0\",{peerDependencies:{picomatch:\"2.x\"},peerDependenciesMeta:{picomatch:Qt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":Qt}}],[\"graphql-compose@>=9.0.10\",{peerDependencies:{graphql:\"^14.2.0 || ^15.0.0 || ^16.0.0\"}}],[\"vite-plugin-vuetify@<=1.0.2\",{peerDependencies:{vue:\"^3.0.0\"}}],[\"webpack-plugin-vuetify@<=2.0.1\",{peerDependencies:{vue:\"^3.2.6\"}}],[\"eslint-import-resolver-vite@<2.0.1\",{dependencies:{debug:\"^4.3.4\",resolve:\"^1.22.8\"}}],[\"notistack@^3.0.0\",{dependencies:{csstype:\"^3.0.10\"}}]];var t9;function HBe(){return typeof t9>\"u\"&&(t9=ye(\"zlib\").brotliDecompressSync(Buffer.from(\"G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==\",\"base64\")).toString()),t9}var r9;function jBe(){return typeof r9>\"u\"&&(r9=ye(\"zlib\").brotliDecompressSync(Buffer.from(\"G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=\",\"base64\")).toString()),r9}var n9;function qBe(){return typeof n9>\"u\"&&(n9=ye(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),n9}var GBe=new Map([[q.makeIdent(null,\"fsevents\").identHash,HBe],[q.makeIdent(null,\"resolve\").identHash,jBe],[q.makeIdent(null,\"typescript\").identHash,qBe]]),YSt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,s]of e9)e(q.parseDescriptor(r,!0),s)},getBuiltinPatch:async(t,e)=>{let r=\"compat/\";if(!e.startsWith(r))return;let s=q.parseIdent(e.slice(r.length)),a=GBe.get(s.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(t,e,r,s)=>typeof GBe.get(t.identHash)>\"u\"?t:q.makeDescriptor(t,q.makeRange({protocol:\"patch:\",source:q.stringifyDescriptor(t),selector:`optional!builtin<compat/${q.stringifyIdent(t)}>`,params:null}))}},VSt=YSt;var w9={};Vt(w9,{ConstraintsCheckCommand:()=>ew,ConstraintsQueryCommand:()=>XC,ConstraintsSourceCommand:()=>$C,default:()=>IDt});Ve();Ve();IS();var KC=class{constructor(e){this.project=e}createEnvironment(){let e=new VC([\"cwd\",\"ident\"]),r=new VC([\"workspace\",\"type\",\"ident\"]),s=new VC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[q.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:q.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let C=n.get(E);if(typeof C>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[q.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=q.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let C=(R,N,{caller:U=As.getCaller()}={})=>{let W=ES(R),te=je.getMapWithDefault(a.manifestUpdates,f.cwd),ie=je.getMapWithDefault(te,W),Ae=je.getSetWithDefault(ie,N);U!==null&&Ae.add(U)},S=R=>C(R,void 0,{caller:As.getCaller()}),P=R=>{je.getArrayWithDefault(a.reportedErrors,f.cwd).push(R)},I=e.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:P});c.set(f,I);for(let R of Ht.allDependencies)for(let N of f.manifest[R].values()){let U=q.stringifyIdent(N),W=()=>{C([R,U],void 0,{caller:As.getCaller()})},te=Ae=>{C([R,U],Ae,{caller:As.getCaller()})},ie=null;if(R!==\"peerDependencies\"&&(R!==\"dependencies\"||!f.manifest.devDependencies.has(N.identHash))){let Ae=f.anchoredPackage.dependencies.get(N.identHash);if(Ae){if(typeof Ae>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let ce=this.project.storedResolutions.get(Ae.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let me=n.get(ce);if(typeof me>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");ie=me}}r.insert({workspace:I,ident:U,range:N.range,type:R,resolution:ie,update:te,delete:W,error:P})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(f.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");E.workspace=h}return{workspaces:e,dependencies:r,packages:s,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),e.result):null}};Ve();Ve();Wt();var XC=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=ge.String()}static{this.paths=[[\"constraints\",\"query\"]]}static{this.usage=ot.Usage({category:\"Constraints-related commands\",description:\"query the constraints fact database\",details:`\n      This command will output all matches to the given prolog query.\n    `,examples:[[\"List all dependencies throughout the workspace\",\"yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'\"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(vS(),BS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(\".\")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((P,[I])=>Math.max(P,I.length),0);for(let P=0;P<C;P++){let[I,R]=E[P];p.reportInfo(null,`${yDt(P,C)}${I.padEnd(S,\" \")} = ${mDt(R)}`)}p.reportJson(h)}})).exitCode()}};function mDt(t){return typeof t!=\"string\"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function yDt(t,e){let r=t===0,s=t===e-1;return r&&s?\"\":r?\"\\u250C \":s?\"\\u2514 \":\"\\u2502 \"}Ve();Wt();var $C=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also print the fact database automatically compiled from the workspace manifests\"})}static{this.paths=[[\"constraints\",\"source\"]]}static{this.usage=ot.Usage({category:\"Constraints-related commands\",description:\"print the source code for the constraints\",details:\"\\n      This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\\n    \",examples:[[\"Prints the source code\",\"yarn constraints source\"],[\"Print the source code and the fact database\",\"yarn constraints source -v\"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(vS(),BS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ve();Ve();Wt();IS();var ew=class extends ut{constructor(){super(...arguments);this.fix=ge.Boolean(\"--fix\",!1,{description:\"Attempt to automatically fix unambiguous issues, following a multi-pass process\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"constraints\"]]}static{this.usage=ot.Usage({category:\"Constraints-related commands\",description:\"check that the project constraints are met\",details:`\n      This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.\n\n      If the \\`--fix\\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.\n\n      For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.\n    `,examples:[[\"Check that all constraints are satisfied\",\"yarn constraints\"],[\"Autofix all unmet constraints\",\"yarn constraints --fix\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new KC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(vS(),BS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=lF(s,E,{fix:this.fix}),P=[];for(let[I,R]of C){let N=I.manifest.indent;I.manifest=new Ht,I.manifest.indent=N,I.manifest.load(R),P.push(I.persistManifest())}if(await Promise.all(P),!(C.size>0&&h>1)){c=ZBe(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let R of I)R.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${he.pretty(r,\"yarn constraints --fix\",he.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${he.pretty(r,\"yarn constraints --fix\",he.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=je.sortMap(c.children,h=>h.value[1]),ks.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};IS();var EDt={configuration:{enableConstraintsChecks:{description:\"If true, constraints will run during installs\",type:\"BOOLEAN\",default:!1},constraintsPath:{description:\"The path of the constraints file.\",type:\"ABSOLUTE_PATH\",default:\"./constraints.pro\"}},commands:[XC,$C,ew],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get(\"enableConstraintsChecks\"))return;let r=await t.loadUserConfig(),s;if(r?.constraints)s=new KC(t);else{let{Constraints:c}=await Promise.resolve().then(()=>(vS(),BS));s=await c.find(t)}let a=await s.process();if(!a)return;let{remainingErrors:n}=lF(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[c,f]of n)for(let p of f)e(84,`${he.pretty(t.configuration,c.anchoredLocator,he.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${he.pretty(t.configuration,\"yarn constraints\",he.Type.CODE)} for more details`)}}},IDt=EDt;var B9={};Vt(B9,{CreateCommand:()=>tw,DlxCommand:()=>rw,default:()=>wDt});Ve();Wt();var tw=class extends ut{constructor(){super(...arguments);this.pkg=ge.String(\"-p,--package\",{description:\"The package to run the provided command from\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"create\"]]}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let s=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=q.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?q.makeIdent(a.scope,`create-${a.name}`):q.makeIdent(null,`create-${a.name}`),c=q.stringifyIdent(n);return a.range!==\"unknown\"&&(c+=`@${a.range}`),this.cli.run([\"dlx\",...r,c,...this.args])}};Ve();Ve();bt();Wt();var rw=class extends ut{constructor(){super(...arguments);this.packages=ge.Array(\"-p,--package\",{description:\"The package(s) to install before running the command\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"dlx\"]]}static{this.usage=ot.Usage({description:\"run a package in a temporary environment\",details:\"\\n      This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\\n\\n      By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\\n\\n      Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\\n    \",examples:[[\"Use create-react-app to create a new React app\",\"yarn dlx create-react-app ./my-app\"],[\"Install multiple packages for a single command\",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e \"console.log('hello!')\"`]]})}async execute(){return ze.telemetry=null,await le.mktempPromise(async r=>{let s=K.join(r,`dlx-${process.pid}`);await le.mkdirPromise(s),await le.writeFilePromise(K.join(s,\"package.json\"),`{}\n`),await le.writeFilePromise(K.join(s,\"yarn.lock\"),\"\");let a=K.join(s,\".yarnrc.yml\"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Vf(68),level:he.LogLevel.Discard}]},p=n!==null?K.join(n,\".yarnrc.yml\"):null;p!==null&&le.existsSync(p)?(await le.copyFilePromise(p,a),await ze.updateConfiguration(s,N=>{let U=je.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(W=>{let te=typeof W==\"string\"?W:W.path,ie=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof W==\"string\"?ie:{path:ie,spec:W.spec}})),U})):await le.writeJsonPromise(a,f);let h=this.packages??[this.command],E=q.parseDescriptor(this.command).name,C=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(`\n`);let S=await ze.find(s,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,s);if(I===null)throw new ar(P.cwd,s);await P.restoreInstallState();let R=await In.getWorkspaceAccessibleBinaries(I);return R.has(E)===!1&&R.size===1&&typeof this.packages>\"u\"&&(E=Array.from(R)[0][0]),await In.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var CDt={commands:[tw,rw]},wDt=CDt;var D9={};Vt(D9,{ExecFetcher:()=>DS,ExecResolver:()=>bS,default:()=>SDt,execUtils:()=>AF});Ve();Ve();bt();var fA=\"exec:\";var AF={};Vt(AF,{loadGeneratorFile:()=>SS,makeLocator:()=>S9,makeSpec:()=>Bve,parseSpec:()=>v9});Ve();bt();function v9(t){let{params:e,selector:r}=q.parseRange(t),s=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?q.parseLocator(e.locator):null,path:s}}function Bve({parentLocator:t,path:e,generatorHash:r,protocol:s}){let a=t!==null?{locator:q.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return q.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function S9(t,{parentLocator:e,path:r,generatorHash:s,protocol:a}){return q.makeLocator(t,Bve({parentLocator:e,path:r,generatorHash:s,protocol:a}))}async function SS(t,e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(t,{protocol:e}),n=K.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.join(c.prefixPath,a);return await f.readFilePromise(p,\"utf8\")}var DS=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:fA});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){let s=await SS(e.reference,fA,r);return le.mktempPromise(async a=>{let n=K.join(a,\"generator.js\");return await le.writeFilePromise(n,s),le.mktempPromise(async c=>{if(await this.generatePackage(c,e,n,r),!le.existsSync(K.join(c,\"build\")))throw new Error(\"The script should have generated a build directory\");return await hs.makeArchiveFromDirectory(K.join(c,\"build\"),{prefixPath:q.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(e,r,s,a){return await le.mktempPromise(async n=>{let c=await In.makeScriptEnv({project:a.project,binFolder:n}),f=K.join(e,\"runtime.js\");return await le.mktempPromise(async p=>{let h=K.join(p,\"buildfile.log\"),E=K.join(e,\"generator\"),C=K.join(e,\"build\");await le.mkdirPromise(E),await le.mkdirPromise(C);let S={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(C),locator:q.stringifyLocator(r)};await le.writeFilePromise(f,`\n          // Expose 'Module' as a global variable\n          Object.defineProperty(global, 'Module', {\n            get: () => require('module'),\n            configurable: true,\n            enumerable: false,\n          });\n\n          // Expose non-hidden built-in modules as global variables\n          for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {\n            Object.defineProperty(global, name, {\n              get: () => require(name),\n              configurable: true,\n              enumerable: false,\n            });\n          }\n\n          // Expose the 'execEnv' global variable\n          Object.defineProperty(global, 'execEnv', {\n            value: {\n              ...${JSON.stringify(S)},\n            },\n            enumerable: true,\n          });\n        `);let P=c.NODE_OPTIONS||\"\",I=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;P=P.replace(I,\" \").trim(),c.NODE_OPTIONS=P;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${q.stringifyLocator(r)})\n`,prefix:q.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Gr.pipevp(process.execPath,[\"--require\",ue.fromPortablePath(f),ue.fromPortablePath(s),q.stringifyIdent(r)],{cwd:e,env:c,stdin:null,stdout:R,stderr:N});if(U!==0)throw le.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${he.pretty(a.project.configuration,h,he.Type.PATH)})`)})})}};Ve();Ve();var BDt=2,bS=class{supportsDescriptor(e,r){return!!e.range.startsWith(fA)}supportsLocator(e,r){return!!e.reference.startsWith(fA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=v9(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=await SS(q.makeRange({protocol:fA,source:a,selector:a,params:{locator:q.stringifyLocator(n)}}),fA,s.fetchOptions),f=Nn.makeHash(`${BDt}`,c).slice(0,6);return[S9(e,{parentLocator:n,path:a,generatorHash:f,protocol:fA})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var vDt={fetchers:[DS],resolvers:[bS]},SDt=vDt;var P9={};Vt(P9,{FileFetcher:()=>QS,FileResolver:()=>TS,TarballFileFetcher:()=>RS,TarballFileResolver:()=>NS,default:()=>PDt,fileUtils:()=>km});Ve();bt();var nw=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,PS=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,es=\"file:\";var km={};Vt(km,{fetchArchiveFromLocator:()=>kS,makeArchiveFromLocator:()=>pF,makeBufferFromLocator:()=>b9,makeLocator:()=>iw,makeSpec:()=>vve,parseSpec:()=>xS});Ve();bt();function xS(t){let{params:e,selector:r}=q.parseRange(t),s=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?q.parseLocator(e.locator):null,path:s}}function vve({parentLocator:t,path:e,hash:r,protocol:s}){let a=t!==null?{locator:q.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return q.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function iw(t,{parentLocator:e,path:r,hash:s,protocol:a}){return q.makeLocator(t,vve({parentLocator:e,path:r,hash:s,protocol:a}))}async function kS(t,e){let{parentLocator:r,path:s}=q.parseFileStyleRange(t.reference,{protocol:es}),a=K.isAbsolute(s)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=K.join(n.prefixPath,s);return await je.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function pF(t,{protocol:e,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=q.parseFileStyleRange(t.reference,{protocol:e}),c=K.isAbsolute(n)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=K.join(f.prefixPath,n);return await je.releaseAfterUseAsync(async()=>await hs.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:q.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:s}),f.releaseFs)}async function b9(t,{protocol:e,fetchOptions:r}){return(await pF(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QS=class{supports(e,r){return!!e.reference.startsWith(es)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:es});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){return pF(e,{protocol:es,fetchOptions:r})}};Ve();Ve();var DDt=2,TS=class{supportsDescriptor(e,r){return e.range.match(nw)?!0:!!e.range.startsWith(es)}supportsLocator(e,r){return!!e.reference.startsWith(es)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return nw.test(e.range)&&(e=q.makeDescriptor(e,`${es}${e.range}`)),q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=xS(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=await b9(q.makeLocator(e,q.makeRange({protocol:es,source:a,selector:a,params:{locator:q.stringifyLocator(n)}})),{protocol:es,fetchOptions:s.fetchOptions}),f=Nn.makeHash(`${DDt}`,c).slice(0,6);return[iw(e,{parentLocator:n,path:a,hash:f,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ve();var RS=class{supports(e,r){return PS.test(e.reference)?!!e.reference.startsWith(es):!1}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromDisk(e,r){let s=await kS(e,r);return await hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}};Ve();Ve();Ve();var NS=class{supportsDescriptor(e,r){return PS.test(e.range)?!!(e.range.startsWith(es)||nw.test(e.range)):!1}supportsLocator(e,r){return PS.test(e.reference)?!!e.reference.startsWith(es):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return nw.test(e.range)&&(e=q.makeDescriptor(e,`${es}${e.range}`)),q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=xS(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=iw(e,{parentLocator:n,path:a,hash:\"\",protocol:es}),f=await kS(c,s.fetchOptions),p=Nn.makeHash(f).slice(0,6);return[iw(e,{parentLocator:n,path:a,hash:p,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var bDt={fetchers:[RS,QS],resolvers:[NS,TS]},PDt=bDt;var Q9={};Vt(Q9,{GithubFetcher:()=>OS,default:()=>kDt,githubUtils:()=>hF});Ve();bt();var hF={};Vt(hF,{invalidGithubUrlMessage:()=>bve,isGithubUrl:()=>x9,parseGithubUrl:()=>k9});var Sve=et(ye(\"querystring\")),Dve=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function x9(t){return t?Dve.some(e=>!!t.match(e)):!1}function k9(t){let e;for(let f of Dve)if(e=t.match(f),e)break;if(!e)throw new Error(bve(t));let[,r,s,a,n=\"master\"]=e,{commit:c}=Sve.default.parse(n);return n=c||n.replace(/[^:]*:/,\"\"),{auth:r,username:s,reponame:a,treeish:n}}function bve(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var OS=class{supports(e,r){return!!x9(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await An.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await le.mktempPromise(async a=>{let n=new Sn(a);await hs.extractArchiveTo(s,n,{stripComponents:1});let c=Qa.splitRepoUrl(e.reference),f=K.join(a,\"package.tgz\");await In.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:e});let p=await le.readFilePromise(f);return await hs.convertToZip(p,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:s,username:a,reponame:n,treeish:c}=k9(e.reference);return`https://${s?`${s}@`:\"\"}github.com/${a}/${n}/archive/${c}.tar.gz`}};var xDt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let s=new OS;if(!s.supports(e,r))return null;try{return await s.fetch(e,r)}catch{return null}}}},kDt=xDt;var T9={};Vt(T9,{TarballHttpFetcher:()=>MS,TarballHttpResolver:()=>_S,default:()=>TDt});Ve();function LS(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!==\"http:\"&&e.protocol!==\"https:\"||!e.pathname.match(/(\\.tar\\.gz|\\.tgz|\\/[^.]+)$/))}var MS=class{supports(e,r){return LS(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await An.get(e.reference,{configuration:r.project.configuration});return await hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}};Ve();Ve();var _S=class{supportsDescriptor(e,r){return LS(e.range)}supportsLocator(e,r){return LS(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[q.convertDescriptorToLocator(e)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var QDt={fetchers:[MS],resolvers:[_S]},TDt=QDt;var R9={};Vt(R9,{InitCommand:()=>Z0,InitInitializerCommand:()=>sw,default:()=>FDt});Wt();Ve();Ve();bt();Wt();var Z0=class extends ut{constructor(){super(...arguments);this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Initialize a private package\"});this.workspace=ge.Boolean(\"-w,--workspace\",!1,{description:\"Initialize a workspace root with a `packages/` directory\"});this.install=ge.String(\"-i,--install\",!1,{tolerateBoolean:!0,description:\"Initialize a package with a specific bundle that will be locked in the project\"});this.name=ge.String(\"-n,--name\",{description:\"Initialize a package with the given name\"});this.usev2=ge.Boolean(\"-2\",!1,{hidden:!0});this.yes=ge.Boolean(\"-y,--yes\",{hidden:!0})}static{this.paths=[[\"init\"]]}static{this.usage=ot.Usage({description:\"create a new package\",details:\"\\n      This command will setup a new package in your local directory.\\n\\n      If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\\n\\n      If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\\n\\n      If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\\n\\n      The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\\n    \",examples:[[\"Create a new package in the local directory\",\"yarn init\"],[\"Create a new private package in the local directory\",\"yarn init -p\"],[\"Create a new package and store the Yarn release inside\",\"yarn init -i=latest\"],[\"Create a new private package and defines it as a workspace root\",\"yarn init -w\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new nt(\"Cannot use the --install flag from within a project subdirectory\");le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=K.join(this.context.cwd,Er.lockfile);le.existsSync(a)||await le.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push(\"-p\"),this.workspace&&c.push(\"-w\"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push(\"-y\"),await le.mktempPromise(async f=>{let{code:p}=await Gr.pipevp(\"yarn\",[\"init\",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await In.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Tt.find(r,this.context.cwd)).project}catch{s=null}le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ht.tryFind(this.context.cwd),n=a??new Ht,c=Object.fromEntries(r.get(\"initFields\").entries());n.load(c),n.name=n.name??q.makeIdent(r.get(\"initScope\"),this.name??K.basename(this.context.cwd)),n.packageManager=un&&je.isTaggedYarnVersion(un)?`yarn@${un}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await le.mkdirPromise(K.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let f={};n.exportTo(f);let p=K.join(this.context.cwd,Ht.fileName);await le.changeFilePromise(p,`${JSON.stringify(f,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=K.join(this.context.cwd,\"README.md\");if(le.existsSync(E)||(await le.writeFilePromise(E,`# ${q.stringifyIdent(n.name)}\n`),h.push(E)),!s||s.cwd===this.context.cwd){let C=K.join(this.context.cwd,Er.lockfile);le.existsSync(C)||(await le.writeFilePromise(C,\"\"),h.push(C));let P=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# Whether you use PnP or not, the node_modules folder is often used to store\",\"# build artifacts that should be gitignored\",\"node_modules\",\"\",\"# Swap the comments on the following lines if you wish to use zero-installs\",\"# In that case, don't forget to run `yarn config set enableGlobalCache false`!\",\"# Documentation here: https://yarnpkg.com/features/caching#zero-installs\",\"\",\"#!.yarn/cache\",\".pnp.*\"].map(Ae=>`${Ae}\n`).join(\"\"),I=K.join(this.context.cwd,\".gitignore\");le.existsSync(I)||(await le.writeFilePromise(I,P),h.push(I));let N=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(Ae=>`${Ae}\n`).join(\"\"),U=K.join(this.context.cwd,\".gitattributes\");le.existsSync(U)||(await le.writeFilePromise(U,N),h.push(U));let W={\"*\":{charset:\"utf-8\",endOfLine:\"lf\",indentSize:2,indentStyle:\"space\",insertFinalNewline:!0}};je.mergeIntoTarget(W,r.get(\"initEditorConfig\"));let te=`root = true\n`;for(let[Ae,ce]of Object.entries(W)){te+=`\n[${Ae}]\n`;for(let[me,pe]of Object.entries(ce)){let Be=me.replace(/[A-Z]/g,Ce=>`_${Ce.toLowerCase()}`);te+=`${Be} = ${pe}\n`}}let ie=K.join(this.context.cwd,\".editorconfig\");le.existsSync(ie)||(await le.writeFilePromise(ie,te),h.push(ie)),await this.cli.run([\"install\"],{quiet:!0}),await this.initialize(),le.existsSync(K.join(this.context.cwd,\".git\"))||(await Gr.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await Gr.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await Gr.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};var sw=class extends Z0{constructor(){super(...arguments);this.initializer=ge.String();this.argv=ge.Proxy()}static{this.paths=[[\"init\"]]}async initialize(){this.context.stdout.write(`\n`),await this.cli.run([\"dlx\",this.initializer,...this.argv],{quiet:!0})}};var RDt={configuration:{initScope:{description:\"Scope used when creating packages via the init command\",type:\"STRING\",default:null},initFields:{description:\"Additional fields to set when creating packages via the init command\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}},initEditorConfig:{description:\"Extra rules to define in the generator editorconfig\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}}},commands:[Z0,sw]},FDt=RDt;var TY={};Vt(TY,{SearchCommand:()=>Bw,UpgradeInteractiveCommand:()=>vw,default:()=>cTt});Ve();var xve=et(ye(\"os\"));function ow({stdout:t}){if(xve.default.endianness()===\"BE\")throw new Error(\"Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures\");if(!t.isTTY)throw new Error(\"Interactive commands can only be used inside a TTY environment\")}Wt();var HSe=et(Z9()),X9={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},QPt=(0,HSe.default)(X9.appId,X9.apiKey).initIndex(X9.indexName),$9=async(t,e=0)=>await QPt.search(t,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:e,hitsPerPage:10});var LD=[\"regular\",\"dev\",\"peer\"],Bw=class extends ut{static{this.paths=[[\"search\"]]}static{this.usage=ot.Usage({category:\"Interactive commands\",description:\"open the search interface\",details:`\n    This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n    `,examples:[[\"Open the search window\",\"yarn search\"]]})}async execute(){ow(this.context);let{Gem:e}=await Promise.resolve().then(()=>($F(),CY)),{ScrollableItems:r}=await Promise.resolve().then(()=>(nN(),rN)),{useKeypress:s}=await Promise.resolve().then(()=>(FD(),zPe)),{useMinistore:a}=await Promise.resolve().then(()=>(bY(),DY)),{renderForm:n}=await Promise.resolve().then(()=>(aN(),oN)),{default:c}=await Promise.resolve().then(()=>et(oxe())),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Vc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>et(hn())),S=await ze.find(this.context.cwd,this.context.plugins),P=()=>h.createElement(f,{flexDirection:\"row\"},h.createElement(f,{flexDirection:\"column\",width:48},h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to move between packages.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(f,{flexDirection:\"column\"},h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),R=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),N=({hit:pe,active:Be})=>{let[Ce,g]=a(pe.name,null);s({active:Be},(fe,se)=>{if(se.name!==\"space\")return;if(!Ce){g(LD[0]);return}let X=LD.indexOf(Ce)+1;X===LD.length?g(null):g(LD[X])},[Ce,g]);let we=q.parseIdent(pe.name),Ee=q.prettyIdent(S,we);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},Ee)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},pe.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},pe.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,pe.humanDownloadsLast30Days)))},U=({name:pe,active:Be})=>{let[Ce]=a(pe,null),g=q.parseIdent(pe);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0},\" - \",q.prettyIdent(S,g))),LD.map(we=>h.createElement(f,{key:we,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(e,{active:Ce===we}),\" \",h.createElement(p,{bold:!0},we)))))},W=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),ie=await n(({useSubmit:pe})=>{let Be=a();pe(Be);let Ce=Array.from(Be.keys()).filter(j=>Be.get(j)!==null),[g,we]=C(\"\"),[Ee,fe]=C(0),[se,X]=C([]),De=j=>{j.match(/\\t| /)||we(j)},Re=async()=>{fe(0);let j=await $9(g);j.query===g&&X(j.hits)},gt=async()=>{let j=await $9(g,Ee+1);j.query===g&&j.page-1===Ee&&(fe(j.page),X([...se,...j.hits]))};return E(()=>{g?Re():X([])},[g]),h.createElement(f,{flexDirection:\"column\"},h.createElement(P,null),h.createElement(f,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(I,null)),se.length?h.createElement(r,{radius:2,loop:!1,children:se.map(j=>h.createElement(N,{key:j.name,hit:j,active:!1})),willReachEnd:gt}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(f,{flexDirection:\"row\",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(R,null)),Ce.length?Ce.map(j=>h.createElement(U,{key:j,name:j,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(W,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>\"u\")return 1;let Ae=Array.from(ie.keys()).filter(pe=>ie.get(pe)===\"regular\"),ce=Array.from(ie.keys()).filter(pe=>ie.get(pe)===\"dev\"),me=Array.from(ie.keys()).filter(pe=>ie.get(pe)===\"peer\");return Ae.length&&await this.cli.run([\"add\",...Ae]),ce.length&&await this.cli.run([\"add\",\"--dev\",...ce]),me&&await this.cli.run([\"add\",\"--peer\",...me]),0}};Ve();Wt();yG();var pxe=et(fi()),Axe=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/;function hxe(t,e){return t.length>0?[t.slice(0,e)].concat(hxe(t.slice(e),e)):[]}var vw=class extends ut{static{this.paths=[[\"upgrade-interactive\"]]}static{this.usage=ot.Usage({category:\"Interactive commands\",description:\"open the upgrade interface\",details:`\n      This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n    `,examples:[[\"Open the upgrade window\",\"yarn upgrade-interactive\"]]})}async execute(){ow(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(fxe(),uxe)),{Pad:r}=await Promise.resolve().then(()=>(QY(),cxe)),{ScrollableItems:s}=await Promise.resolve().then(()=>(nN(),rN)),{useMinistore:a}=await Promise.resolve().then(()=>(bY(),DY)),{renderForm:n}=await Promise.resolve().then(()=>(aN(),oN)),{Box:c,Text:f}=await Promise.resolve().then(()=>et(Vc())),{default:p,useEffect:h,useRef:E,useState:C}=await Promise.resolve().then(()=>et(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd),R=await Jr.find(S);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState({restoreResolutions:!1});let N=this.context.stdout.rows-7,U=(we,Ee)=>{let fe=ICe(we,Ee),se=\"\";for(let X of fe)X.added?se+=he.pretty(S,X.value,\"green\"):X.removed||(se+=X.value);return se},W=(we,Ee)=>{if(we===Ee)return Ee;let fe=q.parseRange(we),se=q.parseRange(Ee),X=fe.selector.match(Axe),De=se.selector.match(Axe);if(!X||!De)return U(we,Ee);let Re=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],gt=null,j=\"\";for(let rt=1;rt<Re.length;++rt)gt!==null||X[rt]!==De[rt]?(gt===null&&(gt=Re[rt-1]),j+=he.pretty(S,De[rt],gt)):j+=De[rt];return j},te=async(we,Ee,fe)=>{let se=await Xu.fetchDescriptorFrom(we,fe,{project:P,cache:R,preserveModifier:Ee,workspace:I});return se!==null?se.range:we.range},ie=async we=>{let Ee=pxe.default.valid(we.range)?`^${we.range}`:we.range,[fe,se]=await Promise.all([te(we,we.range,Ee).catch(()=>null),te(we,we.range,\"latest\").catch(()=>null)]),X=[{value:null,label:we.range}];return fe&&fe!==we.range?X.push({value:fe,label:W(we.range,fe)}):X.push({value:null,label:\"\"}),se&&se!==fe&&se!==we.range?X.push({value:se,label:W(we.range,se)}):X.push({value:null,label:\"\"}),X},Ae=()=>p.createElement(c,{flexDirection:\"row\"},p.createElement(c,{flexDirection:\"column\",width:49},p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\"))),p.createElement(c,{flexDirection:\"column\"},p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),ce=()=>p.createElement(c,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},p.createElement(c,{width:50},p.createElement(f,{bold:!0},p.createElement(f,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),me=({active:we,descriptor:Ee,suggestions:fe})=>{let[se,X]=a(Ee.descriptorHash,null),De=q.stringifyIdent(Ee),Re=Math.max(0,45-De.length);return p.createElement(p.Fragment,null,p.createElement(c,null,p.createElement(c,{width:45},p.createElement(f,{bold:!0},q.prettyIdent(S,Ee)),p.createElement(r,{active:we,length:Re})),p.createElement(e,{active:we,options:fe,value:se,skewer:!0,onChange:X,sizes:[17,17,17]})))},pe=({dependencies:we})=>{let[Ee,fe]=C(we.map(()=>null)),se=E(!0),X=async De=>{let Re=await ie(De);return Re.filter(gt=>gt.label!==\"\").length<=1?null:{descriptor:De,suggestions:Re}};return h(()=>()=>{se.current=!1},[]),h(()=>{let De=Math.trunc(N*1.75),Re=we.slice(0,De),gt=we.slice(De),j=hxe(gt,N),rt=Re.map(X).reduce(async(Fe,Ne)=>{await Fe;let Pe=await Ne;Pe!==null&&se.current&&fe(Ye=>{let ke=Ye.findIndex(_e=>_e===null),it=[...Ye];return it[ke]=Pe,it})},Promise.resolve());j.reduce((Fe,Ne)=>Promise.all(Ne.map(Pe=>Promise.resolve().then(()=>X(Pe)))).then(async Pe=>{Pe=Pe.filter(Ye=>Ye!==null),await Fe,se.current&&fe(Ye=>{let ke=Ye.findIndex(it=>it===null);return Ye.slice(0,ke).concat(Pe).concat(Ye.slice(ke+Pe.length))})}),rt).then(()=>{se.current&&fe(Fe=>Fe.filter(Ne=>Ne!==null))})},[]),Ee.length?p.createElement(s,{radius:N>>1,children:Ee.map((De,Re)=>De!==null?p.createElement(me,{key:Re,active:!1,descriptor:De.descriptor,suggestions:De.suggestions}):p.createElement(f,{key:Re},\"Loading...\"))}):p.createElement(f,null,\"No upgrades found\")},Ce=await n(({useSubmit:we})=>{we(a());let Ee=new Map;for(let se of P.workspaces)for(let X of[\"dependencies\",\"devDependencies\"])for(let De of se.manifest[X].values())P.tryWorkspaceByDescriptor(De)===null&&(De.range.startsWith(\"link:\")||Ee.set(De.descriptorHash,De));let fe=je.sortMap(Ee.values(),se=>q.stringifyDescriptor(se));return p.createElement(c,{flexDirection:\"column\"},p.createElement(Ae,null),p.createElement(ce,null),p.createElement(pe,{dependencies:fe}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Ce>\"u\")return 1;let g=!1;for(let we of P.workspaces)for(let Ee of[\"dependencies\",\"devDependencies\"]){let fe=we.manifest[Ee];for(let se of fe.values()){let X=Ce.get(se.descriptorHash);typeof X<\"u\"&&X!==null&&(fe.set(se.identHash,q.makeDescriptor(se,X)),g=!0)}}return g?await P.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};var lTt={commands:[Bw,vw]},cTt=lTt;var FY={};Vt(FY,{default:()=>pTt});Ve();var _D=\"jsr:\";Ve();Ve();function Sw(t){let e=t.range.slice(4);if(Or.validRange(e))return q.makeDescriptor(t,`npm:${q.stringifyIdent(q.wrapIdentIntoScope(t,\"jsr\"))}@${e}`);let r=q.tryParseDescriptor(e,!0);if(r!==null)return q.makeDescriptor(t,`npm:${q.stringifyIdent(q.wrapIdentIntoScope(r,\"jsr\"))}@${r.range}`);throw new Error(`Invalid range: ${t.range}`)}function Dw(t){return q.makeLocator(q.wrapIdentIntoScope(t,\"jsr\"),`npm:${t.reference.slice(4)}`)}function RY(t){return q.makeLocator(q.unwrapIdentFromScope(t,\"jsr\"),`jsr:${t.reference.slice(4)}`)}var lN=class{supports(e,r){return e.reference.startsWith(_D)}getLocalPath(e,r){let s=Dw(e);return r.fetcher.getLocalPath(s,r)}fetch(e,r){let s=Dw(e);return r.fetcher.fetch(s,r)}};var cN=class{supportsDescriptor(e,r){return!!e.range.startsWith(_D)}supportsLocator(e,r){return!!e.reference.startsWith(_D)}shouldPersistResolution(e,r){let s=Dw(e);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{inner:Sw(e)}}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(Sw(e));return(await s.resolver.getCandidates(a,r,s)).map(c=>RY(c))}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(Sw(e));return a.resolver.getSatisfying(n,r,s,a)}async resolve(e,r){let s=Dw(e),a=await r.resolver.resolve(s,r);return{...a,...RY(a)}}};var uTt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];function fTt(t,e){for(let r of uTt)for(let s of t.manifest.getForScope(r).values()){if(!s.range.startsWith(\"jsr:\"))continue;let a=Sw(s),n=r===\"dependencies\"?q.makeDescriptor(s,\"unknown\"):null,c=n!==null&&t.manifest.ensureDependencyMeta(n).optional?\"optionalDependencies\":r;e[c][q.stringifyIdent(s)]=a.range}}var ATt={hooks:{beforeWorkspacePacking:fTt},resolvers:[cN],fetchers:[lN]},pTt=ATt;var NY={};Vt(NY,{LinkFetcher:()=>UD,LinkResolver:()=>HD,PortalFetcher:()=>jD,PortalResolver:()=>qD,default:()=>gTt});Ve();bt();var sh=\"portal:\",oh=\"link:\";var UD=class{supports(e,r){return!!e.reference.startsWith(oh)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:oh});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:oh}),n=K.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new jf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};Ve();bt();var HD=class{supportsDescriptor(e,r){return!!e.range.startsWith(oh)}supportsLocator(e,r){return!!e.reference.startsWith(oh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(oh.length);return[q.makeLocator(e,`${oh}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:\"0.0.0\",languageName:r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ve();bt();var jD=class{supports(e,r){return!!e.reference.startsWith(sh)}getLocalPath(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:sh});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=q.parseFileStyleRange(e.reference,{protocol:sh}),n=K.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new jf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};Ve();Ve();bt();var qD=class{supportsDescriptor(e,r){return!!e.range.startsWith(sh)}supportsLocator(e,r){return!!e.reference.startsWith(sh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(sh.length);return[q.makeLocator(e,`${sh}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ht.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var hTt={fetchers:[UD,jD],resolvers:[HD,qD]},gTt=hTt;var yV={};Vt(yV,{NodeModulesLinker:()=>ib,NodeModulesMode:()=>hV,PnpLooseLinker:()=>sb,default:()=>QRt});bt();Ve();bt();bt();var LY=(t,e)=>`${t}@${e}`,gxe=(t,e)=>{let r=e.indexOf(\"#\"),s=r>=0?e.substring(r+1):e;return LY(t,s)};var mxe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=wTt(t,n),p=!1,h=0;do{let E=MY(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=GD(f);if(MY(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${GD(f)}`);let S=yxe(f);if(S)throw new Error(`${S}, after hoisting finished:\n${GD(f)}`)}return n.debugLevel>=2&&console.log(GD(f)),BTt(f)},dTt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(e),r},mTt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of t)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(e,a),r},dxe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:I,hoistedTo:R}=e,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:new Map(I),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},yTt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(e.keys());s.sort((a,n)=>{let c=e.get(a),f=e.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf(\"@\",1)),c=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},OY=t=>{let e=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!t.peerNames.has(n)){let c=t.dependencies.get(n);c&&!e.has(c)&&r(c,a)}e.add(s)}};for(let s of t.dependencies.values())t.peerNames.has(s.name)||r(s);return e},MY=(t,e,r,s,a,n=new Set)=>{let c=e[e.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=vTt(c),p=yTt(c,f),h=t==c?new Map:a.fastLookupPossible?dTt(e):mTt(e),E,C=!1,S=!1,P=new Map(Array.from(p.entries()).map(([R,N])=>[R,N[0]])),I=new Map;do{let R=CTt(t,e,r,h,P,p,s,I,a);R.isGraphChanged&&(S=!0),R.anotherRoundNeeded&&(C=!0),E=!1;for(let[N,U]of p)U.length>1&&!c.dependencies.has(N)&&(P.delete(N),U.shift(),P.set(N,U[0]),E=!0)}while(E);for(let R of c.dependencies.values())if(!c.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=MY(t,[...e,R],r,I,a);N.isGraphChanged&&(S=!0),N.anotherRoundNeeded&&(C=!0),r.delete(R.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},ETt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},ITt=(t,e,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(e).map(N=>Io(N)).join(\"\\u2192\")}`);let P=r[r.length-1],R=!(s.ident===P.ident);if(p&&!R&&(C=\"- self-reference\"),R&&(R=s.dependencyKind!==1,p&&!R&&(C=\"- workspace\")),R&&s.dependencyKind===2&&(R=!ETt(s),p&&!R&&(C=\"- external soft link with unhoisted dependencies\")),R&&(R=!t.peerNames.has(s.name),p&&!R&&(C=`- cannot shadow peer: ${Io(t.originalDependencies.get(s.name).locator)} at ${E}`)),R){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,p&&!N&&(C=`- filled by: ${Io(U.locator)} at ${E}`),N)for(let W=r.length-1;W>=1;W--){let ie=r[W].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){N=!1;let Ae=f.get(P);Ae||(Ae=new Set,f.set(P,Ae)),Ae.add(s.name),p&&(C=`- filled by ${Io(ie.locator)} at ${r.slice(0,W).map(ce=>Io(ce.locator)).join(\"\\u2192\")}`);break}}R=N}if(R&&(R=n.get(s.name)===s.ident,p&&!R&&(C=`- filled by: ${Io(c.get(s.name)[0])} at ${E}`)),R){let N=!0,U=new Set(s.peerNames);for(let W=r.length-1;W>=1;W--){let te=r[W];for(let ie of U){if(te.peerNames.has(ie)&&te.originalDependencies.has(ie))continue;let Ae=te.dependencies.get(ie);Ae&&t.dependencies.get(ie)!==Ae&&(W===r.length-1?S.add(Ae):(S=null,N=!1,p&&(C=`- peer dependency ${Io(Ae.locator)} from parent ${Io(te.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!N)break}R=N}if(R&&!h)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${Io(N.locator)}, available: ${Io(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:R?0:1,reason:C}},uN=t=>`${t.name}@${t.locator}`,CTt=(t,e,r,s,a,n,c,f,p)=>{let h=e[e.length-1],E=new Set,C=!1,S=!1,P=(U,W,te,ie,Ae)=>{if(E.has(ie))return;let ce=[...W,uN(ie)],me=[...te,uN(ie)],pe=new Map,Be=new Map;for(let fe of OY(ie)){let se=ITt(h,r,[h,...U,ie],fe,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(fe,se),se.isHoistable===2)for(let X of se.dependsOn){let De=pe.get(X.name)||new Set;De.add(fe.name),pe.set(X.name,De)}}let Ce=new Set,g=(fe,se,X)=>{if(!Ce.has(fe)){Ce.add(fe),Be.set(fe,{isHoistable:1,reason:X});for(let De of pe.get(fe.name)||[])g(ie.dependencies.get(De),se,p.debugLevel>=2?`- peer dependency ${Io(fe.locator)} from parent ${Io(ie.locator)} was not hoisted`:\"\")}};for(let[fe,se]of Be)se.isHoistable===1&&g(fe,se,se.reason);let we=!1;for(let fe of Be.keys())if(!Ce.has(fe)){S=!0;let se=c.get(ie);se&&se.has(fe.name)&&(C=!0),we=!0,ie.dependencies.delete(fe.name),ie.hoistedDependencies.set(fe.name,fe),ie.reasons.delete(fe.name);let X=h.dependencies.get(fe.name);if(p.debugLevel>=2){let De=Array.from(W).concat([ie.locator]).map(gt=>Io(gt)).join(\"\\u2192\"),Re=h.hoistedFrom.get(fe.name);Re||(Re=[],h.hoistedFrom.set(fe.name,Re)),Re.push(De),ie.hoistedTo.set(fe.name,Array.from(e).map(gt=>Io(gt.locator)).join(\"\\u2192\"))}if(!X)h.ident!==fe.ident&&(h.dependencies.set(fe.name,fe),Ae.add(fe));else for(let De of fe.references)X.references.add(De)}if(ie.dependencyKind===2&&we&&(C=!0),p.check){let fe=yxe(t);if(fe)throw new Error(`${fe}, after hoisting dependencies of ${[h,...U,ie].map(se=>Io(se.locator)).join(\"\\u2192\")}:\n${GD(t)}`)}let Ee=OY(ie);for(let fe of Ee)if(Ce.has(fe)){let se=Be.get(fe);if((a.get(fe.name)===fe.ident||!ie.reasons.has(fe.name))&&se.isHoistable!==0&&ie.reasons.set(fe.name,se.reason),!fe.isHoistBorder&&me.indexOf(uN(fe))<0){E.add(ie);let De=dxe(ie,fe);P([...U,ie],ce,me,De,R),E.delete(ie)}}},I,R=new Set(OY(h)),N=Array.from(e).map(U=>uN(U));do{I=R,R=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let W=dxe(h,U);P([],Array.from(r),N,W,R)}}while(R.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},yxe=t=>{let e=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>Io(S.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&e.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),P=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(\", \")}`:\"\"}`,R=`${P?` hoisted to ${P}`:\"\"}`,N=`${C()}${I}`;E?E.ident!==h.ident&&e.push(`${N} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${N} - broken require promise: no required dependency ${h.name}${R} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(t,t.dependencies,t),e.join(`\n`)},wTt=(t,e)=>{let{identName:r,name:s,reference:a,peerNames:n}=t,c={name:s,references:new Set([a]),locator:LY(r,a),ident:gxe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:P,identName:I,reference:R,peerNames:N,hoistPriority:U,dependencyKind:W}=h,te=e.hoistingLimits.get(E.locator);C={name:P,references:new Set([R]),locator:LY(I,R),ident:gxe(I,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(P):!1,hoistPriority:U||0,dependencyKind:W||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let P=new Set,I=R=>{if(!P.has(R)){P.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||I(N)}};I(C)}else for(let P of h.dependencies)p(P,C)};for(let h of t.dependencies)p(h,c);return c},_Y=t=>t.substring(0,t.indexOf(\"@\",1)),BTt=t=>{let e={name:t.name,identName:_Y(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:_Y(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())s(a,t,e);return e},vTt=t=>{let e=new Map,r=new Set([t]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=e.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of t.dependencies.values())t.peerNames.has(c.name)||n(t,c);return e},Io=t=>{if(!t)return\"none\";let e=t.indexOf(\"@\",1),r=t.substring(0,e);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let s=t.substring(e+1);if(s===\"workspace:.\")return\".\";if(s){let a=(s.indexOf(\"#\")>0?s.split(\"#\")[1]:s).replace(\"npm:\",\"\");return s.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`};var GD=t=>{let e=0,r=(a,n,c=\"\")=>{if(e>5e4||n.has(a))return\"\";e++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p=\"\";n.add(a);for(let h=0;h<f.length;h++){let E=f[h];if(!a.peerNames.has(E.name)&&E!==a){let C=a.reasons.get(E.name),S=_Y(E.locator);p+=`${c}${h<f.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(S!==E.name?`a:${E.name}:`:\"\")+Io(E.locator)+(C?` ${C}`:\"\")}\n`,p+=r(E,n,`${c}${h<f.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(t,new Set)+(e>5e4?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var WD=(s=>(s.WORKSPACES=\"workspaces\",s.DEPENDENCIES=\"dependencies\",s.NONE=\"none\",s))(WD||{}),Exe=\"node_modules\",ng=\"$wsroot$\";var YD=(t,e)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=DTt(t,e),c=null;if(a.length===0){let f=mxe(r,{hoistingLimits:s});c=PTt(t,f,e)}return{tree:c,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,HY=t=>{let e=new Map;for(let[r,s]of t.entries())if(!s.dirList){let a=e.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},e.set(s.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(K.delimiter).length,c=a.split(K.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return e},Ixe=(t,e)=>{let r=q.isVirtualLocator(t)?q.devirtualizeLocator(t):t,s=q.isVirtualLocator(e)?q.devirtualizeLocator(e):e;return q.areLocatorsEqual(r,s)},UY=(t,e,r,s)=>{if(t.linkType!==\"SOFT\")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation);return K.contains(s,a)===null},STt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");if(t.findPackageLocator(e.packageLocation)===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let s=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=t.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,P)=>{let I=gA(S);if(p.has(I))return;p.add(I);let R=t.getPackageInformation(S);if(R){let N=P?gA(P):\"\";if(gA(S)!==N&&R.linkType===\"SOFT\"&&!S.reference.startsWith(\"link:\")&&!UY(R,S,t,s)){let U=Cxe(R,S,t);(!f.get(U)||S.reference.startsWith(\"workspace:\"))&&f.set(U,S)}for(let[U,W]of R.packageDependencies)W!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,W),S))}};for(let S of c)h(S,null);let E=s.split(K.sep);for(let S of f.values()){let P=t.getPackageInformation(S),R=ue.toPortablePath(P.packageLocation.slice(0,-1)).split(K.sep).slice(E.length),N=n;for(let U of R){let W=N.children.get(U);W||(W={children:new Map},N.children.set(U,W)),N=W}N.workspaceLocator=S}let C=(S,P)=>{if(S.workspaceLocator){let I=gA(P),R=a.get(I);R||(R=new Set,a.set(I,R)),R.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||P)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},DTt=(t,e)=>{let r=[],s=!1,a=new Map,n=STt(t),c=t.getPackageInformation(t.topLevel);if(c===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let f=t.findPackageLocator(c.packageLocation);if(f===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=ue.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(P,I)=>`${gA(I)}:${P}`,S=(P,I,R,N,U,W,te,ie)=>{let Ae=C(P,R),ce=E.get(Ae),me=!!ce;!me&&R.name===f.name&&R.reference===f.reference&&(ce=h,E.set(Ae,h));let pe=UY(I,R,t,p);if(!ce){let fe=0;pe?fe=2:I.linkType===\"SOFT\"&&R.name.endsWith(ng)&&(fe=1),ce={name:P,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:fe===1?new Set:I.packagePeers,dependencyKind:fe},E.set(Ae,ce)}let Be;if(pe?Be=2:U.linkType===\"SOFT\"?Be=1:Be=0,ce.hoistPriority=Math.max(ce.hoistPriority||0,Be),ie&&!pe){let fe=gA({name:N.identName,reference:N.reference}),se=a.get(fe)||new Set;a.set(fe,se),se.add(ce.name)}let Ce=new Map(I.packageDependencies);if(e.project){let fe=e.project.workspacesByCwd.get(ue.toPortablePath(I.packageLocation.slice(0,-1)));if(fe){let se=new Set([...Array.from(fe.manifest.peerDependencies.values(),X=>q.stringifyIdent(X)),...Array.from(fe.manifest.peerDependenciesMeta.keys())]);for(let X of se)Ce.has(X)||(Ce.set(X,W.get(X)||null),ce.peerNames.add(X))}}let g=gA({name:R.name.replace(ng,\"\"),reference:R.reference}),we=n.get(g);if(we)for(let fe of we)Ce.set(`${fe.name}${ng}`,fe.reference);(I!==U||I.linkType!==\"SOFT\"||!pe&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&N.dependencies.add(ce);let Ee=R!==f&&I.linkType===\"SOFT\"&&!R.name.endsWith(ng)&&!pe;if(!me&&!Ee){let fe=new Map;for(let[se,X]of Ce)if(X!==null){let De=t.getLocator(se,X),Re=t.getLocator(se.replace(ng,\"\"),X),gt=t.getPackageInformation(Re);if(gt===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let j=UY(gt,De,t,p);if(e.validateExternalSoftLinks&&e.project&&j){gt.packageDependencies.size>0&&(s=!0);for(let[Ye,ke]of gt.packageDependencies)if(ke!==null){let it=q.parseLocator(Array.isArray(ke)?`${ke[0]}@${ke[1]}`:`${Ye}@${ke}`);if(gA(it)!==gA(De)){let _e=Ce.get(Ye);if(_e){let x=q.parseLocator(Array.isArray(_e)?`${_e[0]}@${_e[1]}`:`${Ye}@${_e}`);Ixe(x,it)||r.push({messageName:71,text:`Cannot link ${q.prettyIdent(e.project.configuration,q.parseIdent(De.name))} into ${q.prettyLocator(e.project.configuration,q.parseLocator(`${R.name}@${R.reference}`))} dependency ${q.prettyLocator(e.project.configuration,it)} conflicts with parent dependency ${q.prettyLocator(e.project.configuration,x)}`})}else{let x=fe.get(Ye);if(x){let w=x.target,b=q.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${Ye}@${w}`);Ixe(b,it)||r.push({messageName:71,text:`Cannot link ${q.prettyIdent(e.project.configuration,q.parseIdent(De.name))} into ${q.prettyLocator(e.project.configuration,q.parseLocator(`${R.name}@${R.reference}`))} dependency ${q.prettyLocator(e.project.configuration,it)} conflicts with dependency ${q.prettyLocator(e.project.configuration,b)} from sibling portal ${q.prettyIdent(e.project.configuration,q.parseIdent(x.portal.name))}`})}else fe.set(Ye,{target:it.reference,portal:De})}}}}let rt=e.hoistingLimitsByCwd?.get(te),Fe=j?te:K.relative(p,ue.toPortablePath(gt.packageLocation))||vt.dot,Ne=e.hoistingLimitsByCwd?.get(Fe);S(se,gt,De,ce,I,Ce,Fe,rt===\"dependencies\"||Ne===\"dependencies\"||Ne===\"workspaces\")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function Cxe(t,e,r){let s=r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(s||t.packageLocation)}function bTt(t,e,r){let s=e.getLocator(t.name.replace(ng,\"\"),t.reference),a=e.getPackageInformation(s);if(a===null)throw new Error(\"Assertion failed: Expected the package to be registered\");return r.pnpifyFs?{linkType:\"SOFT\",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Cxe(a,t,e)}}var PTt=(t,e,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:P,target:I}=bTt(E,t,r);return{locator:gA(E),nodePath:C,target:I,linkType:P,aliases:S}},n=E=>{let[C,S]=E.split(\"/\");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let P=Array.from(E.references).sort().join(\"#\");for(let I of E.dependencies){let R=Array.from(I.references).sort().join(\"#\");if(I.identName===E.identName.replace(ng,\"\")&&R===P)continue;let N=Array.from(I.references).sort(),U={name:I.identName,reference:N[0]},{name:W,scope:te}=n(I.name),ie=te?[te,W]:[W],Ae=K.join(C,Exe),ce=K.join(Ae,...ie),me=`${S}/${U.name}`,pe=a(U,S,N.slice(1)),Be=!1;if(pe.linkType===\"SOFT\"&&r.project){let Ce=r.project.workspacesByCwd.get(pe.target.slice(0,-1));Be=!!(Ce&&!Ce.manifest.name)}if(!I.name.endsWith(ng)&&!Be){let Ce=s.get(ce);if(Ce){if(Ce.dirList)throw new Error(`Assertion failed: ${ce} cannot merge dir node with leaf node`);{let Ee=q.parseLocator(Ce.locator),fe=q.parseLocator(pe.locator);if(Ce.linkType!==pe.linkType)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different link types ${Ce.nodePath}/${q.stringifyLocator(Ee)} and ${S}/${q.stringifyLocator(fe)}`);if(Ee.identHash!==fe.identHash)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different idents ${Ce.nodePath}/${q.stringifyLocator(Ee)} and ${S}/s${q.stringifyLocator(fe)}`);pe.aliases=[...pe.aliases,...Ce.aliases,q.parseLocator(Ce.locator).reference]}}s.set(ce,pe);let g=ce.split(\"/\"),we=g.indexOf(Exe);for(let Ee=g.length-1;we>=0&&Ee>we;Ee--){let fe=ue.toPortablePath(g.slice(0,Ee).join(K.sep)),se=g[Ee],X=s.get(fe);if(!X)s.set(fe,{dirList:new Set([se])});else if(X.dirList){if(X.dirList.has(se))break;X.dirList.add(se)}}}f(I,pe.linkType===\"SOFT\"?pe.target:ce,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},\"\",[]),h=p.target;return s.set(h,p),f(e,h,\"\"),s};Ve();Ve();bt();bt();rA();Bc();var oV={};Vt(oV,{PnpInstaller:()=>Gm,PnpLinker:()=>og,UnplugCommand:()=>Pw,default:()=>iRt,getPnpPath:()=>ag,jsInstallUtils:()=>mA,pnpUtils:()=>nb,quotePathIfNeeded:()=>ske});bt();var ike=ye(\"url\");Ve();Ve();bt();bt();var wxe={DEFAULT:{collapsed:!1,next:{\"*\":\"DEFAULT\"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:\"FALLBACK_EXCLUSION_LIST\",packageRegistryData:\"PACKAGE_REGISTRY_DATA\",\"*\":\"DEFAULT\"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{\"*\":\"FALLBACK_EXCLUSION_ENTRIES\"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{\"*\":\"FALLBACK_EXCLUSION_DATA\"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{\"*\":\"DEFAULT\"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{\"*\":\"PACKAGE_REGISTRY_ENTRIES\"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{\"*\":\"PACKAGE_STORE_DATA\"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{\"*\":\"PACKAGE_STORE_ENTRIES\"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{\"*\":\"PACKAGE_INFORMATION_DATA\"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:\"PACKAGE_DEPENDENCIES\",\"*\":\"DEFAULT\"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{\"*\":\"PACKAGE_DEPENDENCY\"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{\"*\":\"DEFAULT\"}}};function xTt(t,e,r){let s=\"\";s+=\"[\";for(let a=0,n=t.length;a<n;++a)s+=fN(String(a),t[a],e,r).replace(/^ +/g,\"\"),a+1<n&&(s+=\", \");return s+=\"]\",s}function kTt(t,e,r){let s=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,c=t.length;n<c;++n)a+=s+fN(String(n),t[n],e,s).replace(/^ +/,\"\"),n+1<c&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function QTt(t,e,r){let s=Object.keys(t),a=\"\";a+=\"{\";for(let n=0,c=s.length,f=0;n<c;++n){let p=s[n],h=t[p];typeof h>\"u\"||(f!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=fN(p,h,e,r).replace(/^ +/g,\"\"),f+=1)}return a+=\"}\",a}function TTt(t,e,r){let s=Object.keys(t),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let c=0;for(let f=0,p=s.length;f<p;++f){let h=s[f],E=t[h];typeof E>\"u\"||(c!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=fN(h,E,e,a).replace(/^ +/g,\"\"),c+=1)}return c!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function fN(t,e,r,s){let{next:a}=wxe[r],n=a[t]||a[\"*\"];return Bxe(e,n,s)}function Bxe(t,e,r){let{collapsed:s}=wxe[e];return Array.isArray(t)?s?xTt(t,e,r):kTt(t,e,r):typeof t==\"object\"&&t!==null?s?QTt(t,e,r):TTt(t,e,r):JSON.stringify(t)}function vxe(t){return Bxe(t,\"TOP_LEVEL\",\"\")}function VD(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]<f[c]?-1:f[n]>f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function RTt(t){let e=new Map,r=VD(t.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=e.get(s);typeof n>\"u\"&&e.set(s,n=new Set),n.add(a)}return Array.from(e).map(([s,a])=>[s,Array.from(a)])}function FTt(t){return VD(t.fallbackPool||[],([e])=>e)}function NTt(t){let e=[],r=t.dependencyTreeRoots.find(s=>t.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation===\"./\");for(let[s,a]of VD(t.packageRegistry,([n])=>n===null?\"0\":`1${n}`)){if(s===null)continue;let n=[];e.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of VD(a,([S])=>S===null?\"0\":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,W]of p)S.push([U,W]);let P=VD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,N={packageLocation:f,packageDependencies:P,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,N]),r&&s===r.name&&c===r.reference&&e.unshift([null,[[null,N]]])}}return e}function KD(t){return{__info:[\"This file is automatically generated. Do not touch it, or risk\",\"your modifications being lost.\"],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,pnpZipBackend:t.pnpZipBackend,fallbackExclusionList:RTt(t),fallbackPool:FTt(t),packageRegistryData:NTt(t)}}var bxe=et(Dxe());function Pxe(t,e){return[t?`${t}\n`:\"\",`/* eslint-disable */\n`,`// @ts-nocheck\n`,`\"use strict\";\n`,`\n`,e,`\n`,(0,bxe.default)()].join(\"\")}function OTt(t){return JSON.stringify(t,null,2)}function LTt(t){return`'${t.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function MTt(t){return[`const RAW_RUNTIME_STATE =\n`,`${LTt(vxe(t))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function _Tt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function xxe(t){let e=KD(t),r=MTt(e);return Pxe(t.shebang,r)}function kxe(t){let e=KD(t),r=_Tt(),s=Pxe(t.shebang,r);return{dataFile:OTt(e),loaderFile:s}}bt();function qY(t,{basePath:e}){let r=ue.toPortablePath(e),s=K.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,c=new Map(t.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([P,I])=>{if(C===null!=(P===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let R=I.discardFromLookup??!1,N={name:C,reference:P},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:R});let W=null;return[P,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:R,get packageLocation(){return W||(W=K.join(s,I.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:t.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}bt();bt();var lh=ye(\"module\"),qm=ye(\"url\"),$Y=ye(\"util\");var ra=ye(\"url\");var Fxe=et(ye(\"assert\"));var GY=Array.isArray,JD=JSON.stringify,zD=Object.getOwnPropertyNames,jm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),WY=(t,e)=>RegExp.prototype.exec.call(t,e),YY=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),ig=(t,...e)=>String.prototype.endsWith.apply(t,e),VY=(t,...e)=>String.prototype.includes.apply(t,e),KY=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),ZD=(t,...e)=>String.prototype.indexOf.apply(t,e),Qxe=(t,...e)=>String.prototype.replace.apply(t,e),sg=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),Txe=Map,Rxe=JSON.parse;function XD(t,e,r){return class extends r{constructor(...s){super(e(...s)),this.code=t,this.name=`${r.name} [${t}]`}}}var Nxe=XD(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",(t,e,r)=>`Package import specifier \"${t}\" is not defined${e?` in package ${e}package.json`:\"\"} imported from ${r}`,TypeError),JY=XD(\"ERR_INVALID_MODULE_SPECIFIER\",(t,e,r=void 0)=>`Invalid module \"${t}\" ${e}${r?` imported from ${r}`:\"\"}`,TypeError),Oxe=XD(\"ERR_INVALID_PACKAGE_TARGET\",(t,e,r,s=!1,a=void 0)=>{let n=typeof r==\"string\"&&!s&&r.length&&!dA(r,\"./\");return e===\".\"?((0,Fxe.default)(s===!1),`Invalid \"exports\" main target ${JD(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${s?\"imports\":\"exports\"}\" target ${JD(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),$D=XD(\"ERR_INVALID_PACKAGE_CONFIG\",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:\"\"}${r?`. ${r}`:\"\"}`,Error),Lxe=XD(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",(t,e,r=void 0)=>e===\".\"?`No \"exports\" main defined in ${t}package.json${r?` imported from ${r}`:\"\"}`:`Package subpath '${e}' is not defined by \"exports\" in ${t}package.json${r?` imported from ${r}`:\"\"}`,Error);var pN=ye(\"url\");function Mxe(t,e){let r=Object.create(null);for(let s=0;s<e.length;s++){let a=e[s];jm(t,a)&&(r[a]=t[a])}return r}var AN=new Txe;function UTt(t,e,r,s){let a=AN.get(t);if(a!==void 0)return a;let n=s(t);if(n===void 0){let P={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return AN.set(t,P),P}let c;try{c=Rxe(n)}catch(P){throw new $D(t,(r?`\"${e}\" from `:\"\")+(0,pN.fileURLToPath)(r||e),P.message)}let{imports:f,main:p,name:h,type:E}=Mxe(c,[\"imports\",\"main\",\"name\",\"type\"]),C=jm(c,\"exports\")?c.exports:void 0;(typeof f!=\"object\"||f===null)&&(f=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let S={pjsonPath:t,exists:!0,main:p,name:h,type:E,exports:C,imports:f};return AN.set(t,S),S}function _xe(t,e){let r=new URL(\"./package.json\",t);for(;;){let n=r.pathname;if(ig(n,\"node_modules/package.json\"))break;let c=UTt((0,pN.fileURLToPath)(r),t,void 0,e);if(c.exists)return c;let f=r;if(r=new URL(\"../package.json\",r),r.pathname===f.pathname)break}let s=(0,pN.fileURLToPath)(r),a={pjsonPath:s,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return AN.set(s,a),a}function HTt(t,e,r){throw new Nxe(t,e&&(0,ra.fileURLToPath)(new URL(\".\",e)),(0,ra.fileURLToPath)(r))}function jTt(t,e,r,s){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,ra.fileURLToPath)(e)}`;throw new JY(t,a,s&&(0,ra.fileURLToPath)(s))}function eb(t,e,r,s,a){throw typeof e==\"object\"&&e!==null?e=JD(e,null,\"\"):e=`${e}`,new Oxe((0,ra.fileURLToPath)(new URL(\".\",r)),t,e,s,a&&(0,ra.fileURLToPath)(a))}var Uxe=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i,Hxe=/\\*/g;function qTt(t,e,r,s,a,n,c,f){if(e!==\"\"&&!n&&t[t.length-1]!==\"/\"&&eb(r,t,s,c,a),!dA(t,\"./\")){if(c&&!dA(t,\"../\")&&!dA(t,\"/\")){let C=!1;try{new URL(t),C=!0}catch{}if(!C)return n?YY(Hxe,t,()=>e):t+e}eb(r,t,s,c,a)}WY(Uxe,sg(t,2))!==null&&eb(r,t,s,c,a);let p=new URL(t,s),h=p.pathname,E=new URL(\".\",s).pathname;if(dA(h,E)||eb(r,t,s,c,a),e===\"\")return p;if(WY(Uxe,e)!==null){let C=n?Qxe(r,\"*\",()=>e):r+e;jTt(C,s,c,a)}return n?new URL(YY(Hxe,p.href,()=>e)):new URL(e,p)}function GTt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function bw(t,e,r,s,a,n,c,f){if(typeof e==\"string\")return qTt(e,r,s,t,a,n,c,f);if(GY(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let E=e[h],C;try{C=bw(t,E,r,s,a,n,c,f)}catch(S){if(p=S,S.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw S}if(C!==void 0){if(C===null){p=null;continue}return C}}if(p==null)return p;throw p}else if(typeof e==\"object\"&&e!==null){let p=zD(e);for(let h=0;h<p.length;h++){let E=p[h];if(GTt(E))throw new $D((0,ra.fileURLToPath)(t),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||f.has(E)){let C=e[E],S=bw(t,C,r,s,a,n,c,f);if(S===void 0)continue;return S}}return}else if(e===null)return null;eb(s,e,t,c,a)}function qxe(t,e){let r=ZD(t,\"*\"),s=ZD(e,\"*\"),a=r===-1?t.length:r+1,n=s===-1?e.length:s+1;return a>n?-1:n>a||r===-1?1:s===-1||t.length>e.length?-1:e.length>t.length?1:0}function WTt(t,e,r){if(typeof t==\"string\"||GY(t))return!0;if(typeof t!=\"object\"||t===null)return!1;let s=zD(t),a=!1,n=0;for(let c=0;c<s.length;c++){let f=s[c],p=f===\"\"||f[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new $D((0,ra.fileURLToPath)(e),r,`\"exports\" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return a}function zY(t,e,r){throw new Lxe((0,ra.fileURLToPath)(new URL(\".\",e)),t,r&&(0,ra.fileURLToPath)(r))}var jxe=new Set;function YTt(t,e,r){let s=(0,ra.fileURLToPath)(e);jxe.has(s+\"|\"+t)||(jxe.add(s+\"|\"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${t}\" in the \"exports\" field module resolution of the package at ${s}${r?` imported from ${(0,ra.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function Gxe({packageJSONUrl:t,packageSubpath:e,exports:r,base:s,conditions:a}){if(WTt(r,t,s)&&(r={\".\":r}),jm(r,e)&&!VY(e,\"*\")&&!ig(e,\"/\")){let p=r[e],h=bw(t,p,\"\",e,s,!1,!1,a);return h==null&&zY(e,t,s),h}let n=\"\",c,f=zD(r);for(let p=0;p<f.length;p++){let h=f[p],E=ZD(h,\"*\");if(E!==-1&&dA(e,sg(h,0,E))){ig(e,\"/\")&&YTt(e,t,s);let C=sg(h,E+1);e.length>=h.length&&ig(e,C)&&qxe(n,h)===1&&KY(h,\"*\")===E&&(n=h,c=sg(e,E,e.length-C.length))}}if(n){let p=r[n],h=bw(t,p,c,n,s,!0,!1,a);return h==null&&zY(e,t,s),h}zY(e,t,s)}function Wxe({name:t,base:e,conditions:r,readFileSyncFn:s}){if(t===\"#\"||dA(t,\"#/\")||ig(t,\"/\")){let c=\"is not a valid internal imports specifier name\";throw new JY(t,c,(0,ra.fileURLToPath)(e))}let a,n=_xe(e,s);if(n.exists){a=(0,ra.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(jm(c,t)&&!VY(t,\"*\")){let f=bw(a,c[t],\"\",t,e,!1,!0,r);if(f!=null)return f}else{let f=\"\",p,h=zD(c);for(let E=0;E<h.length;E++){let C=h[E],S=ZD(C,\"*\");if(S!==-1&&dA(t,sg(C,0,S))){let P=sg(C,S+1);t.length>=C.length&&ig(t,P)&&qxe(f,C)===1&&KY(C,\"*\")===S&&(f=C,p=sg(t,S,t.length-P.length))}}if(f){let E=c[f],C=bw(a,E,p,f,e,!0,!0,r);if(C!=null)return C}}}HTt(t,a,e)}bt();var VTt=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function ds(t,e,r={},s){s??=VTt.has(t)?\"MODULE_NOT_FOUND\":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:s},pnpCode:{...a,value:t},data:{...a,value:r}})}function cf(t){return ue.normalize(ue.fromPortablePath(t))}var Jxe=et(Vxe());function zxe(t){return KTt(),XY[t]}var XY;function KTt(){XY||(XY={\"--conditions\":[],...Kxe(JTt()),...Kxe(process.execArgv)})}function Kxe(t){return(0,Jxe.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:t,permissive:!0})}function JTt(){let t=[],e=zTt(process.env.NODE_OPTIONS||\"\",t);return t.length,e}function zTt(t,e){let r=[],s=!1,a=!0;for(let n=0;n<t.length;++n){let c=t[n];if(c===\"\\\\\"&&s){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;c=t[++n]}else if(c===\" \"&&!s){a=!0;continue}else if(c==='\"'){s=!s;continue}a?(r.push(c),a=!1):r[r.length-1]+=c}return s&&e.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}bt();var[yl,ah]=process.versions.node.split(\".\").map(t=>parseInt(t,10)),Zxe=yl>19||yl===19&&ah>=2||yl===18&&ah>=13,lmr=yl===20&&ah<6||yl===19&&ah>=3,cmr=yl>19||yl===19&&ah>=6,umr=yl>=21||yl===20&&ah>=10||yl===18&&ah>=19,fmr=yl>=21||yl===20&&ah>=10||yl===18&&ah>=20,Amr=yl>=22;function Xxe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(fo.resolveVirtual(ue.toPortablePath(e)))),Zxe)process.send({\"watch:require\":t});else for(let e of t)process.send({\"watch:require\":e})}function eV(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,c=/\\/$/,f=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Fe of[\"react-scripts\",\"gatsby\"]){let Ne=t.packageRegistry.get(Fe);if(Ne)for(let Pe of Ne.keys()){if(Pe===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Fe,reference:Pe})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:P}=t;function I(Fe,Ne){return{fn:Fe,args:Ne,error:null,result:null}}function R(Fe){let Ne=process.stderr?.hasColors?.()??process.stdout.isTTY,Pe=(it,_e)=>`\\x1B[${it}m${_e}\\x1B[0m`,Ye=Fe.error;console.error(Ye?Pe(\"31;1\",`\\u2716 ${Fe.error?.message.replace(/\\n.*/s,\"\")}`):Pe(\"33;1\",\"\\u203C Resolution\")),Fe.args.length>0&&console.error();for(let it of Fe.args)console.error(`  ${Pe(\"37;1\",\"In \\u2190\")} ${(0,$Y.inspect)(it,{colors:Ne,compact:!0})}`);Fe.result&&(console.error(),console.error(`  ${Pe(\"37;1\",\"Out \\u2192\")} ${(0,$Y.inspect)(Fe.result,{colors:Ne,compact:!0})}`));let ke=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(ke.length>0){console.error();for(let it of ke)console.error(`  ${Pe(\"38;5;244\",it)}`)}console.error()}function N(Fe,Ne){if(e.allowDebug===!1)return Ne;if(Number.isFinite(s)){if(s>=2)return(...Pe)=>{let Ye=I(Fe,Pe);try{return Ye.result=Ne(...Pe)}catch(ke){throw Ye.error=ke}finally{R(Ye)}};if(s>=1)return(...Pe)=>{try{return Ne(...Pe)}catch(Ye){let ke=I(Fe,Pe);throw ke.error=Ye,R(ke),Ye}}}return Ne}function U(Fe){let Ne=g(Fe);if(!Ne)throw ds(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return Ne}function W(Fe){if(Fe.name===null)return!0;for(let Ne of t.dependencyTreeRoots)if(Ne.name===Fe.name&&Ne.reference===Fe.reference)return!0;return!1}let te=new Set([\"node\",\"require\",...zxe(\"--conditions\")]);function ie(Fe,Ne=te,Pe){let Ye=fe(K.join(Fe,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Ye===null)throw ds(\"INTERNAL\",`The locator that owns the \"${Fe}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ke}=U(Ye),it=K.join(ke,Er.manifest);if(!e.fakeFs.existsSync(it))return null;let _e=JSON.parse(e.fakeFs.readFileSync(it,\"utf8\"));if(_e.exports==null)return null;let x=K.contains(ke,Fe);if(x===null)throw ds(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");x!==\".\"&&!f.test(x)&&(x=`./${x}`);try{let w=Gxe({packageJSONUrl:(0,qm.pathToFileURL)(ue.fromPortablePath(it)),packageSubpath:x,exports:_e.exports,base:Pe?(0,qm.pathToFileURL)(ue.fromPortablePath(Pe)):null,conditions:Ne});return ue.toPortablePath((0,qm.fileURLToPath)(w))}catch(w){throw ds(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:cf(Fe),locator:Ye,pkgJson:_e,subpath:cf(x),conditions:Ne},w.code)}}function Ae(Fe,Ne,{extensions:Pe}){let Ye;try{Ne.push(Fe),Ye=e.fakeFs.statSync(Fe)}catch{}if(Ye&&!Ye.isDirectory())return e.fakeFs.realpathSync(Fe);if(Ye&&Ye.isDirectory()){let ke;try{ke=JSON.parse(e.fakeFs.readFileSync(K.join(Fe,Er.manifest),\"utf8\"))}catch{}let it;if(ke&&ke.main&&(it=K.resolve(Fe,ke.main)),it&&it!==Fe){let _e=Ae(it,Ne,{extensions:Pe});if(_e!==null)return _e}}for(let ke=0,it=Pe.length;ke<it;ke++){let _e=`${Fe}${Pe[ke]}`;if(Ne.push(_e),e.fakeFs.existsSync(_e))return _e}if(Ye&&Ye.isDirectory())for(let ke=0,it=Pe.length;ke<it;ke++){let _e=K.format({dir:Fe,name:\"index\",ext:Pe[ke]});if(Ne.push(_e),e.fakeFs.existsSync(_e))return _e}return null}function ce(Fe){let Ne=new lh.Module(Fe,null);return Ne.filename=Fe,Ne.paths=lh.Module._nodeModulePaths(Fe),Ne}function me(Fe,Ne){return Ne.endsWith(\"/\")&&(Ne=K.join(Ne,\"internal.js\")),lh.Module._resolveFilename(ue.fromPortablePath(Fe),ce(ue.fromPortablePath(Ne)),!1,{plugnplay:!1})}function pe(Fe){if(C===null)return!1;let Ne=K.contains(t.basePath,Fe);return Ne===null?!1:!!C.test(Ne.replace(/\\/$/,\"\"))}let Be={std:3,resolveVirtual:1,getAllLocators:1},Ce=p;function g({name:Fe,reference:Ne}){let Pe=S.get(Fe);if(!Pe)return null;let Ye=Pe.get(Ne);return Ye||null}function we({name:Fe,reference:Ne}){let Pe=[];for(let[Ye,ke]of S)if(Ye!==null)for(let[it,_e]of ke)it===null||_e.packageDependencies.get(Fe)!==Ne||Ye===Fe&&it===Ne||Pe.push({name:Ye,reference:it});return Pe}function Ee(Fe,Ne){let Pe=new Map,Ye=new Set,ke=_e=>{let x=JSON.stringify(_e.name);if(Ye.has(x))return;Ye.add(x);let w=we(_e);for(let b of w)if(U(b).packagePeers.has(Fe))ke(b);else{let F=Pe.get(b.name);typeof F>\"u\"&&Pe.set(b.name,F=new Set),F.add(b.reference)}};ke(Ne);let it=[];for(let _e of[...Pe.keys()].sort())for(let x of[...Pe.get(_e)].sort())it.push({name:_e,reference:x});return it}function fe(Fe,{resolveIgnored:Ne=!1,includeDiscardFromLookup:Pe=!1}={}){if(pe(Fe)&&!Ne)return null;let Ye=K.relative(t.basePath,Fe);Ye.match(n)||(Ye=`./${Ye}`),Ye.endsWith(\"/\")||(Ye=`${Ye}/`);do{let ke=P.get(Ye);if(typeof ke>\"u\"||ke.discardFromLookup&&!Pe){Ye=Ye.substring(0,Ye.lastIndexOf(\"/\",Ye.length-2)+1);continue}return ke.locator}while(Ye!==\"\");return null}function se(Fe){try{return e.fakeFs.readFileSync(ue.toPortablePath(Fe),\"utf8\")}catch(Ne){if(Ne.code===\"ENOENT\")return;throw Ne}}function X(Fe,Ne,{considerBuiltins:Pe=!0}={}){if(Fe.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Fe===\"pnpapi\")return ue.toPortablePath(e.pnpapiResolution);if(Pe&&(0,lh.isBuiltin)(Fe))return null;let Ye=cf(Fe),ke=Ne&&cf(Ne);if(Ne&&pe(Ne)&&(!K.isAbsolute(Fe)||fe(Fe)===null)){let x=me(Fe,Ne);if(x===!1)throw ds(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)\n\nRequire request: \"${Ye}\"\nRequired by: ${ke}\n`,{request:Ye,issuer:ke});return ue.toPortablePath(x)}let it,_e=Fe.match(a);if(_e){if(!Ne)throw ds(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:Ye,issuer:ke});let[,x,w]=_e,b=fe(Ne);if(!b){let Te=me(Fe,Ne);if(Te===!1)throw ds(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).\n\nRequire path: \"${Ye}\"\nRequired by: ${ke}\n`,{request:Ye,issuer:ke});return ue.toPortablePath(Te)}let F=U(b).packageDependencies.get(x),z=null;if(F==null&&b.name!==null){let Te=t.fallbackExclusionList.get(b.name);if(!Te||!Te.has(b.reference)){for(let Et=0,qt=h.length;Et<qt;++Et){let Pt=U(h[Et]).packageDependencies.get(x);if(Pt!=null){r?z=Pt:F=Pt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let Et=t.fallbackPool.get(x);Et!=null&&(z=Et)}}}let Z=null;if(F===null)if(W(b))Z=ds(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${x} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ye,issuer:ke,dependencyName:x});else{let Te=Ee(x,b);Te.every(lt=>W(lt))?Z=ds(\"MISSING_PEER_DEPENDENCY\",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference}\n`).join(\"\")}\n`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te}):Z=ds(\"MISSING_PEER_DEPENDENCY\",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n\n${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference}\n`).join(\"\")}\n`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te})}else F===void 0&&(!Pe&&(0,lh.isBuiltin)(Fe)?W(b)?Z=ds(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ye,issuer:ke,dependencyName:x}):Z=ds(\"UNDECLARED_DEPENDENCY\",`${b.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}):W(b)?Z=ds(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ye,issuer:ke,dependencyName:x}):Z=ds(\"UNDECLARED_DEPENDENCY\",`${b.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n`,{request:Ye,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}));if(F==null){if(z===null||Z===null)throw Z||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Te=Z.message.replace(/\\n.*/g,\"\");Z.message=Te,!E.has(Te)&&s!==0&&(E.add(Te),process.emitWarning(Z))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},oe=U($);if(!oe.packageLocation)throw ds(\"MISSING_DEPENDENCY\",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${$.name}@${$.reference}${$.name!==Ye?` (via \"${Ye}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n`,{request:Ye,issuer:ke,dependencyLocator:Object.assign({},$)});let xe=oe.packageLocation;w?it=K.join(xe,w):it=xe}else if(K.isAbsolute(Fe))it=K.normalize(Fe);else{if(!Ne)throw ds(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:Ye,issuer:ke});let x=K.resolve(Ne);Ne.match(c)?it=K.normalize(K.join(x,Fe)):it=K.normalize(K.join(K.dirname(x),Fe))}return K.normalize(it)}function De(Fe,Ne,Pe=te,Ye){if(n.test(Fe))return Ne;let ke=ie(Ne,Pe,Ye);return ke?K.normalize(ke):Ne}function Re(Fe,{extensions:Ne=Object.keys(lh.Module._extensions)}={}){let Pe=[],Ye=Ae(Fe,Pe,{extensions:Ne});if(Ye)return K.normalize(Ye);{Xxe(Pe.map(_e=>ue.fromPortablePath(_e)));let ke=cf(Fe),it=fe(Fe);if(it){let{packageLocation:_e}=U(it),x=!0;try{e.fakeFs.accessSync(_e)}catch(w){if(w?.code===\"ENOENT\")x=!1;else{let b=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw ds(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${b}).\n\nMissing package: ${it.name}@${it.reference}\nExpected package location: ${cf(_e)}\n`,{unqualifiedPath:ke,extensions:Ne})}}if(!x){let w=_e.includes(\"/unplugged/\")?\"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).\":\"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.\";throw ds(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${it.name}@${it.reference}\nExpected package location: ${cf(_e)}\n`,{unqualifiedPath:ke,extensions:Ne})}}throw ds(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${ke}\n${Pe.map(_e=>`Not found: ${cf(_e)}\n`).join(\"\")}`,{unqualifiedPath:ke,extensions:Ne})}}function gt(Fe,Ne,Pe){if(!Ne)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let Ye=Wxe({name:Fe,base:(0,qm.pathToFileURL)(ue.fromPortablePath(Ne)),conditions:Pe.conditions??te,readFileSyncFn:se});if(Ye instanceof URL)return Re(ue.toPortablePath((0,qm.fileURLToPath)(Ye)),{extensions:Pe.extensions});if(Ye.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return j(Ye,Ne,Pe)}function j(Fe,Ne,Pe={}){try{if(Fe.startsWith(\"#\"))return gt(Fe,Ne,Pe);let{considerBuiltins:Ye,extensions:ke,conditions:it}=Pe,_e=X(Fe,Ne,{considerBuiltins:Ye});if(Fe===\"pnpapi\")return _e;if(_e===null)return null;let x=()=>Ne!==null?pe(Ne):!1,w=(!Ye||!(0,lh.isBuiltin)(Fe))&&!x()?De(Fe,_e,it,Ne):_e;return Re(w,{extensions:ke})}catch(Ye){throw Object.hasOwn(Ye,\"pnpCode\")&&Object.assign(Ye.data,{request:cf(Fe),issuer:Ne&&cf(Ne)}),Ye}}function rt(Fe){let Ne=K.normalize(Fe),Pe=fo.resolveVirtual(Ne);return Pe!==Ne?Pe:null}return{VERSIONS:Be,topLevel:Ce,getLocator:(Fe,Ne)=>Array.isArray(Ne)?{name:Ne[0],reference:Ne[1]}:{name:Fe,reference:Ne},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Fe=[];for(let[Ne,Pe]of S)for(let Ye of Pe.keys())Ne!==null&&Ye!==null&&Fe.push({name:Ne,reference:Ye});return Fe},getPackageInformation:Fe=>{let Ne=g(Fe);if(Ne===null)return null;let Pe=ue.fromPortablePath(Ne.packageLocation);return{...Ne,packageLocation:Pe}},findPackageLocator:Fe=>fe(ue.toPortablePath(Fe)),resolveToUnqualified:N(\"resolveToUnqualified\",(Fe,Ne,Pe)=>{let Ye=Ne!==null?ue.toPortablePath(Ne):null,ke=X(ue.toPortablePath(Fe),Ye,Pe);return ke===null?null:ue.fromPortablePath(ke)}),resolveUnqualified:N(\"resolveUnqualified\",(Fe,Ne)=>ue.fromPortablePath(Re(ue.toPortablePath(Fe),Ne))),resolveRequest:N(\"resolveRequest\",(Fe,Ne,Pe)=>{let Ye=Ne!==null?ue.toPortablePath(Ne):null,ke=j(ue.toPortablePath(Fe),Ye,Pe);return ke===null?null:ue.fromPortablePath(ke)}),resolveVirtual:N(\"resolveVirtual\",Fe=>{let Ne=rt(ue.toPortablePath(Fe));return Ne!==null?ue.fromPortablePath(Ne):null})}}bt();var $xe=(t,e,r)=>{let s=KD(t),a=qY(s,{basePath:e}),n=ue.join(e,Er.pnpCjs);return eV(a,{fakeFs:r,pnpapiResolution:n})};var rV=et(tke());Wt();var mA={};Vt(mA,{checkManifestCompatibility:()=>rke,extractBuildRequest:()=>hN,getExtractHint:()=>nV,hasBindingGyp:()=>iV});Ve();bt();function rke(t){return q.isPackageCompatible(t,As.getArchitectureSet())}function hN(t,e,r,{configuration:s}){let a=[];for(let n of[\"preinstall\",\"install\",\"postinstall\"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has(\"install\")&&e.misc.hasBindingGyp&&a.push({type:1,script:\"node-gyp rebuild\"}),a.length===0?null:t.linkType!==\"HARD\"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${q.prettyLocator(s,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${q.prettyLocator(s,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${q.prettyLocator(s,t)} lists build scripts, but all build scripts have been disabled.`)}:rke(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${q.prettyLocator(s,t)} The ${As.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var XTt=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function nV(t){return t.packageFs.getExtractHint({relevantExtensions:XTt})}function iV(t){let e=K.join(t.prefixPath,\"binding.gyp\");return t.packageFs.existsSync(e)}var nb={};Vt(nb,{getUnpluggedPath:()=>rb});Ve();bt();function rb(t,{configuration:e}){return K.resolve(e.get(\"pnpUnpluggedFolder\"),q.slugifyLocator(t))}var $Tt=new Set([q.makeIdent(null,\"open\").identHash,q.makeIdent(null,\"opn\").identHash]),og=class{constructor(){this.mode=\"strict\";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"PnpLinker\",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the PnP linker to be enabled\");let s=ag(r.project).cjs;if(!le.existsSync(s))throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})),n={name:q.stringifyIdent(e),reference:e.reference},c=a.getPackageInformation(n);if(!c)throw new nt(`Couldn't find ${q.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(c.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=ag(r.project).cjs;if(!le.existsSync(s))return null;let n=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?q.makeLocator(q.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Gm(e)}isEnabled(e){return!(e.project.configuration.get(\"nodeLinker\")!==\"pnp\"||e.project.configuration.get(\"pnpMode\")!==this.mode)}},Gm=class{constructor(e){this.opts=e;this.mode=\"strict\";this.asyncActions=new je.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,s){let a=q.stringifyIdent(e),n=e.reference,c=!!this.opts.project.tryWorkspaceByLocator(e),f=q.isVirtualLocator(e),p=e.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&e.linkType!==\"SOFT\",C,S;if(h||E){let te=f?q.devirtualizeLocator(e):e;C=this.customData.store.get(te.locatorHash),typeof C>\"u\"&&(C=await eRt(r),e.linkType===\"HARD\"&&this.customData.store.set(te.locatorHash,C)),C.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(te,e.version)}let P=h?hN(e,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(e,C,r,S,s):r.packageFs;if(K.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=K.resolve(I.getRealPath(),r.prefixPath),N=sV(this.opts.project.cwd,R),U=new Map,W=new Set;if(f){for(let te of e.peerDependencies.values())U.set(q.stringifyIdent(te),null),W.add(q.stringifyIdent(te));if(!c){let te=q.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:sV(this.opts.project.cwd,fo.resolveVirtual(R)),locator:te})}}return je.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:W,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:P}}async attachInternalDependencies(e,r){let s=this.getPackageInformation(e);for(let[a,n]of r){let c=q.areIdentsEqual(a,n)?n.reference:[q.stringifyIdent(n),n.reference];s.packageDependencies.set(q.stringifyIdent(a),c)}}async attachExternalDependents(e,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(q.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let e=ag(this.opts.project);if(this.isEsmEnabled()||await le.removePromise(e.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await le.removePromise(e.cjs),await le.removePromise(e.data),await le.removePromise(e.esmLoader),await le.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())je.getMapWithDefault(this.packageRegistry,q.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:q.stringifyIdent(C),reference:C.reference})),a=r!==\"none\",n=[],c=new Map,f=je.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\"),E=this.opts.project.configuration.get(\"pnpZipBackend\");if(r===\"dependencies-only\")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:q.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has(\"pnpEnableEsmLoader\"))return this.opts.project.configuration.get(\"pnpEnableEsmLoader\");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type===\"module\")return!0;return!1}async finalizeInstallWithPnp(e){let r=ag(this.opts.project),s=await this.locateNodeModules(e.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,\"One or more node_modules have been detected and will be removed. This operation may take some time.\");for(let n of s)await le.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=xxe(e);await le.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await le.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=kxe(e);await le.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await le.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,\"ESM support for PnP uses the experimental loader API and is therefore experimental\"),await le.changeFilePromise(r.esmLoader,(0,rV.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await le.removePromise(a);else for(let n of await le.readdirPromise(a)){let c=K.resolve(a,n);this.unpluggedPaths.has(c)||await le.removePromise(c)}}async locateNodeModules(e){let r=[],s=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=K.join(a.cwd,\"node_modules\");if(s&&s.test(K.relative(this.opts.project.cwd,a.cwd))||!le.existsSync(n))continue;let c=await le.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(f.length===c.length)r.push(n);else for(let p of f)r.push(K.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,s,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,s,n):s.packageFs}shouldBeUnplugged(e,r,s){return typeof s.unplugged<\"u\"?s.unplugged:$Tt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(hN(e,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,s){let a=rb(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Hf(a,{baseFs:r.packageFs,pathUtils:K}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=K.join(a,r.prefixPath,\".ready\");await le.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await le.mkdirPromise(a,{recursive:!0}),await le.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await le.writeFilePromise(n,\"\"))})),new Sn(a))}getPackageInformation(e){let r=q.stringifyIdent(e),s=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${q.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${q.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=je.getMapWithDefault(this.packageRegistry,\"@@disk\"),s=sV(this.opts.project.cwd,e);return je.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function sV(t,e){let r=K.relative(t,e);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function eRt(t){let e=await Ht.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ht,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let s of e.scripts.keys())r.has(s)||e.scripts.delete(s);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:nV(t),hasBindingGyp:iV(t)}}}Ve();Ve();Wt();var nke=et(Sa());var Pw=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unplug direct dependencies from the entire project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Unplug both direct and transitive dependencies\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}static{this.paths=[[\"unplug\"]]}static{this.usage=ot.Usage({description:\"force the unpacking of a list of packages\",details:\"\\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\\n\\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\\n\\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\\n\\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\\n\\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\\n    \",examples:[[\"Unplug the lodash dependency from the active workspace\",\"yarn unplug lodash\"],[\"Unplug all instances of lodash referenced by any workspace\",\"yarn unplug lodash -A\"],[\"Unplug all instances of lodash referenced by the active workspace and its dependencies\",\"yarn unplug lodash -R\"],[\"Unplug all instances of lodash, anywhere\",\"yarn unplug lodash -AR\"],[\"Unplug one specific version of lodash\",\"yarn unplug lodash@1.2.3\"],[\"Unplug all packages with the `@babel` scope\",\"yarn unplug '@babel/*'\"],[\"Unplug all packages (only for testing, not recommended)\",\"yarn unplug -R '*'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new nt(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(P=>{let I=q.parseDescriptor(P),R=I.range!==\"unknown\"?I:q.makeDescriptor(I,\"*\");if(!Or.validRange(R.range))throw new nt(`The range of the descriptor patterns must be a valid semver range (${q.prettyDescriptor(r,R)})`);return N=>{let U=q.stringifyIdent(N);return!nke.default.isMatch(U,q.stringifyIdent(R))||N.version&&!Or.satisfiesWithPrereleases(N.version,R.range)?!1:(c.delete(P),!0)}}),p=()=>{let P=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!q.isVirtualLocator(I)&&f.some(R=>R(I))&&P.push(I);return P},h=P=>{let I=new Set,R=[],N=(U,W)=>{if(I.has(U.locatorHash))return;let te=!!s.tryWorkspaceByLocator(U);if(!(W>0&&!this.recursive&&te)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&R.push(U),!(W>0&&!this.recursive)))for(let ie of U.dependencies.values()){let Ae=s.storedResolutions.get(ie.descriptorHash);if(!Ae)throw new Error(\"Assertion failed: The resolution should have been registered\");let ce=s.storedPackages.get(Ae);if(!ce)throw new Error(\"Assertion failed: The package should have been registered\");N(ce,W+1)}};for(let U of P)N(U.anchoredPackage,0);return R},E,C;if(this.all&&this.recursive?(E=p(),C=\"the project\"):this.all?(E=h(s.workspaces),C=\"any workspace\"):(E=h([a]),C=\"this workspace\"),c.size>1)throw new nt(`Patterns ${he.prettyList(r,c,he.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new nt(`Pattern ${he.prettyList(r,c,he.Type.CODE)} doesn't match any packages referenced by ${C}`);E=je.sortMap(E,P=>q.stringifyLocator(P));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async P=>{for(let I of E){let R=I.version??\"unknown\",N=s.topLevelWorkspace.manifest.ensureDependencyMeta(q.makeDescriptor(I,R));N.unplugged=!0,P.reportInfo(0,`Will unpack ${q.prettyLocator(r,I)} to ${he.pretty(r,rb(I,{configuration:r}),he.Type.PATH)}`),P.reportJson({locator:q.stringifyLocator(I),version:R})}await s.topLevelWorkspace.persistManifest(),this.json||P.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var ag=t=>({cjs:K.join(t.cwd,Er.pnpCjs),data:K.join(t.cwd,Er.pnpData),esmLoader:K.join(t.cwd,Er.pnpEsmLoader)}),ske=t=>/\\s/.test(t)?JSON.stringify(t):t;async function tRt(t,e,r){let s=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(e.NODE_OPTIONS??\"\").replace(s,\" \").replace(a,\" \").trim();if(t.configuration.get(\"nodeLinker\")!==\"pnp\"){e.NODE_OPTIONS=n||void 0;return}let c=ag(t),f=`--require ${ske(ue.fromPortablePath(c.cjs))}`;le.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,ike.pathToFileURL)(ue.fromPortablePath(c.esmLoader)).href}`),le.existsSync(c.cjs)&&(e.NODE_OPTIONS=n?`${f} ${n}`:f)}async function rRt(t,e){let r=ag(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get(\"pnpUnpluggedFolder\"))}var nRt={hooks:{populateYarnPaths:rRt,setupScriptEnvironment:tRt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},minizip:{description:\"Whether Yarn should use minizip to extract archives\",type:\"BOOLEAN\",default:!1},winLinkType:{description:\"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.\",type:\"STRING\",values:[\"junctions\",\"symlinks\"],default:\"junctions\"},pnpMode:{description:\"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.\",type:\"STRING\",default:\"strict\"},pnpShebang:{description:\"String to prepend to the generated PnP script\",type:\"STRING\",default:\"#!/usr/bin/env node\"},pnpIgnorePatterns:{description:\"Array of glob patterns; files matching them will use the classic resolution\",type:\"STRING\",default:[],isArray:!0},pnpZipBackend:{description:\"Whether to use the experimental js implementation for the ZipFS\",type:\"STRING\",values:[\"libzip\",\"js\"],default:\"libzip\"},pnpEnableEsmLoader:{description:\"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.\",type:\"BOOLEAN\",default:!1},pnpEnableInlining:{description:\"If true, the PnP data will be inlined along with the generated loader\",type:\"BOOLEAN\",default:!0},pnpFallbackMode:{description:\"If true, the generated PnP loader will follow the top-level fallback rule\",type:\"STRING\",default:\"dependencies-only\"},pnpUnpluggedFolder:{description:\"Folder where the unplugged packages must be stored\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/unplugged\"}},linkers:[og],commands:[Pw]},iRt=nRt;var pke=et(uke());Wt();var pV=et(ye(\"crypto\")),hke=et(ye(\"fs\")),gke=1,_i=\"node_modules\",gN=\".bin\",dke=\".yarn-state.yml\",CRt=1e3,hV=(s=>(s.CLASSIC=\"classic\",s.HARDLINKS_LOCAL=\"hardlinks-local\",s.HARDLINKS_GLOBAL=\"hardlinks-global\",s))(hV||{}),ib=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"NodeModulesLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the node-modules linker to be enabled\");let s=r.project.tryWorkspaceByLocator(e);if(s)return s.cwd;let a=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await AV(r.project,{unrollAliases:!0}));if(a===null)throw new nt(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(q.stringifyLocator(e));if(!n){let p=new nt(`Couldn't find ${q.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code=\"LOCATOR_NOT_INSTALLED\",p}let c=n.locations.sort((p,h)=>p.split(K.sep).length-h.split(K.sep).length),f=K.join(r.project.configuration.startingCwd,_i);return c.find(p=>K.contains(f,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await AV(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=dN(K.resolve(e),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return q.parseLocator(f)}makeInstaller(e){return new fV(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},fV=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let s=K.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>\"u\"&&(a=await wRt(e,r),e.linkType===\"HARD\"&&this.customData.store.set(e.locatorHash,a)),!q.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(q.stringifyIdent(e))||n.set(q.stringifyIdent(e),e.reference);let f=e;if(q.isVirtualLocator(e)){f=q.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(q.stringifyIdent(E),null),c.add(q.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf(\"/\")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(e,r){let s=this.localStore.get(e.locatorHash);if(typeof s>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let c=q.areIdentsEqual(a,n)?n.reference:[q.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(q.stringifyIdent(a),c)}}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the node-modules linker\")}async finalizeInstall(){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\")return;let e=new fo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),r=await AV(this.opts.project),s=this.opts.project.configuration.get(\"nmMode\");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get(\"nmHoistingLimits\");try{P=je.validateEnum(WD,S.manifest.installConfig?.hoistingLimits??P)}catch{let I=q.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(WD).join(\", \")}, using default: \"${P}\"`)}return[S.relativeCwd,P]})),n=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get(\"nmSelfReferences\");return P=S.manifest.installConfig?.selfReferences??P,[S.relativeCwd,P]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,P)=>Array.isArray(P)?{name:P[0],reference:P[1]}:{name:S,reference:P},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let P=S.anchoredLocator;return{name:q.stringifyIdent(P),reference:P.reference}}),getPackageInformation:S=>{let P=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:q.makeLocator(q.parseIdent(S.name),S.reference),I=this.localStore.get(P.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return I.pnpNode},findPackageLocator:S=>{let P=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(S));if(P!==null){let I=P.anchoredLocator;return{name:q.stringifyIdent(I),reference:I.reference}}throw new Error(\"Assertion failed: Unimplemented\")},resolveToUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveRequest:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveVirtual:S=>ue.fromPortablePath(fo.resolveVirtual(ue.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=YD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:P}of p)this.opts.report.reportError(S,P);return}let E=HY(f);await PRt(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let P=q.parseLocator(S),I=this.localStore.get(P.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return I.customPackageData.manifest}});let C=[];for(let[S,P]of E.entries()){if(Eke(S))continue;let I=q.parseLocator(S),R=this.localStore.get(I.locatorHash);if(typeof R>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let N=mA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});N&&C.push({buildLocations:P.locations,locator:I,buildRequest:N})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${he.pretty(this.opts.project.configuration,\"--preserve-symlinks\",he.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function wRt(t,e){let r=await Ht.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ht,s=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:mA.hasBindingGyp(e)}}}async function BRt(t,e,r,s,{installChangedByUser:a}){let n=\"\";n+=`# Warning: This file is automatically generated. Removing it is fine, but will\n`,n+=`# cause your node_modules installation to become invalidated.\n`,n+=`\n`,n+=`__metadata:\n`,n+=`  version: ${gke}\n`,n+=`  nmMode: ${s.value}\n`;let c=Array.from(e.keys()).sort(),f=q.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of c){let C=e.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let S of C.locations){let P=K.contains(t.cwd,S);if(P===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=`    - ${JSON.stringify(P)}\n`}if(C.aliases.length>0){n+=`  aliases:\n`;for(let S of C.aliases)n+=`    - ${JSON.stringify(S)}\n`}if(E===f&&r.size>0){n+=`  bin:\n`;for(let[S,P]of r){let I=K.contains(t.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=`    ${JSON.stringify(I)}:\n`;for(let[R,N]of P){let U=K.relative(K.join(S,_i),N);n+=`      ${JSON.stringify(R)}: ${JSON.stringify(U)}\n`}}}}let p=t.cwd,h=K.join(p,_i,dke);a&&await le.removePromise(h),await le.changeFilePromise(h,n,{automaticNewlines:!0})}async function AV(t,{unrollAliases:e=!1}={}){let r=t.cwd,s=K.join(r,_i,dke),a;try{a=await le.statPromise(s)}catch{}if(!a)return null;let n=ls(await le.readFilePromise(s,\"utf8\"));if(n.__metadata.version>gke)return null;let c=n.__metadata.nmMode||\"classic\",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(P=>K.join(r,P)),S=E.bin;if(S)for(let[P,I]of Object.entries(S)){let R=K.join(r,ue.toPortablePath(P)),N=je.getMapWithDefault(p,R);for(let[U,W]of Object.entries(I))N.set(U,ue.toPortablePath([R,_i,W].join(K.sep)))}if(f.set(h,{target:vt.dot,linkType:\"HARD\",locations:C,aliases:E.aliases||[]}),e&&E.aliases)for(let P of E.aliases){let{scope:I,name:R}=q.parseLocator(h),N=q.makeLocator(q.makeIdent(I,R),P),U=q.stringifyLocator(N);f.set(U,{target:vt.dot,linkType:\"HARD\",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:mke(f,{skipPrefix:t.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var kw=async(t,e)=>{if(t.split(K.sep).indexOf(_i)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{let r;if(!e.innerLoop&&(r=await le.lstatPromise(t),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!e.isWorkspaceDir)){await le.unlinkPromise(t);return}let s=await le.readdirPromise(t,{withFileTypes:!0});for(let n of s){let c=K.join(t,n.name);n.isDirectory()?(n.name!==_i||e&&e.innerLoop)&&await kw(c,{innerLoop:!0,contentsOnly:!1}):await le.unlinkPromise(c)}let a=!e.innerLoop&&e.isWorkspaceDir&&r?.isSymbolicLink();!e.contentsOnly&&!a&&await le.rmdirPromise(t)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},fke=4,dN=(t,{skipPrefix:e})=>{let r=K.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let s=r.split(K.sep).filter(p=>p!==\"\"),a=s.indexOf(_i),n=s.slice(0,a).join(K.sep),c=K.join(e,n),f=s.slice(a);return{locationRoot:c,segments:f}},mke=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let s=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of t.entries()){if(n.linkType===\"SOFT\"&&K.contains(e,n.target)!==null){let f=je.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=dN(c,{skipPrefix:e}),h=je.getFactoryWithDefault(r,f,s);for(let E=0;E<p.length;++E){let C=p[E];if(C!==\".\"){let S=je.getFactoryWithDefault(h.children,C,s);h.children.set(C,S),h=S}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},gV=async(t,e,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let s;try{s=await le.lstatPromise(t)}catch{}if(!s||s.isDirectory()){await le.symlinkPromise(t,e,\"junction\");return}}await le.symlinkPromise(K.relative(K.dirname(e),t),e)};async function yke(t,e,r){let s=K.join(t,`${pV.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await le.writeFilePromise(s,r);try{await le.linkPromise(s,e)}catch{}}finally{await le.unlinkPromise(s)}}async function vRt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind===\"file\"){if(n.value===\"hardlinks-global\"&&s&&r.digest){let f=K.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await le.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-CRt))if(await Nn.checksumFile(f,{baseFs:le,algorithm:\"sha1\"})!==r.digest){let C=K.join(s,`${pV.default.randomBytes(16).toString(\"hex\")}.tmp`);await le.renamePromise(f,C);let S=await a.readFilePromise(t);await le.writeFilePromise(C,S);try{await le.linkPromise(C,f),r.mtimeMs=new Date().getTime(),await le.unlinkPromise(C)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await le.linkPromise(f,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await yke(s,f,h),r.mtimeMs=new Date().getTime();try{await le.linkPromise(f,e)}catch(E){E&&E.code&&E.code==\"EXDEV\"&&(n.value=\"hardlinks-local\",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let c=r.mode&511;c!==420&&await le.chmodPromise(e,c)}}var SRt=async(t,e,{baseFs:r,globalHardlinksStore:s,nmMode:a,windowsLinkType:n,packageChecksum:c})=>{await le.mkdirPromise(t,{recursive:!0});let f=async(E=vt.dot)=>{let C=K.join(e,E),S=await r.readdirPromise(C,{withFileTypes:!0}),P=new Map;for(let I of S){let R=K.join(E,I.name),N,U=K.join(C,I.name);if(I.isFile()){if(N={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let W=await Nn.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});N.digest=W}}else if(I.isDirectory())N={kind:\"directory\"};else if(I.isSymbolicLink())N={kind:\"symlink\",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,\"0\")})`);if(P.set(R,N),I.isDirectory()&&R!==_i){let W=await f(R);for(let[te,ie]of W)P.set(te,ie)}}return P},p;if(a.value===\"hardlinks-global\"&&s&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await le.readFilePromise(E,\"utf8\"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=K.join(e,E),P=K.join(t,E);if(C.kind===\"directory\")await le.mkdirPromise(P,{recursive:!0});else if(C.kind===\"file\"){let I=C.mtimeMs;await vRt({srcPath:S,dstPath:P,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind===\"symlink\"&&await gV(K.resolve(K.dirname(P),C.symlinkTo),P,n)}if(a.value===\"hardlinks-global\"&&s&&h&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);await le.removePromise(E),await yke(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function DRt(t,e,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,P)=>{let I=!0,R=K.join(h,E),N=new Set;if(E===_i||E.startsWith(\"@\")){let W;try{W=le.statSync(R)}catch{}I=!!W,W?W.mtimeMs>r?(f=!0,N=new Set(le.readdirSync(R))):N=new Set(C.children.get(E).children.keys()):f=!0;let te=e.get(h);if(te){let ie=K.join(h,_i,gN),Ae;try{Ae=le.statSync(ie)}catch{}if(!Ae)f=!0;else if(Ae.mtimeMs>r){f=!0;let ce=new Set(le.readdirSync(ie)),me=new Map;n.set(h,me);for(let[pe,Be]of te)ce.has(pe)&&me.set(pe,Be)}else n.set(h,te)}}else I=P.has(E);let U=C.children.get(E);if(I){let{linkType:W,locator:te}=U,ie={children:new Map,linkType:W,locator:te};if(S.children.set(E,ie),te){let Ae=je.getSetWithDefault(c,te);Ae.add(R),c.set(te,Ae)}for(let Ae of U.children.keys())p(R,Ae,U,ie,N)}else U.locator&&s.storedBuildState.delete(q.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:C,locator:S}=E,P={children:new Map,linkType:C,locator:S};if(a.set(h,P),S){let I=je.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(_i)&&p(h,_i,E,P,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function Eke(t){let e=q.parseDescriptor(t);return q.isVirtualDescriptor(e)&&(e=q.devirtualizeDescriptor(e)),e.range.startsWith(\"link:\")}async function bRt(t,e,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of t){let h=Eke(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let P=K.join(p[0],S);S!==\"\"&&le.existsSync(P)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=K.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[P,I]of S){let R=K.join(f,ue.toPortablePath(I));E.set(P,R)}for(let[P,I]of h.children){let R=K.join(f,P),N=c(R,R,I);N.size>0&&n.set(f,new Map([...n.get(f)||new Map,...N]))}}else for(let[S,P]of h.children){let I=c(K.join(f,S),p,P);for(let[R,N]of I)E.set(R,N)}return E};for(let[f,p]of e){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var Ake=(t,e)=>{if(!t||!e)return t===e;let r=q.parseLocator(t);q.isVirtualLocator(r)&&(r=q.devirtualizeLocator(r));let s=q.parseLocator(e);return q.isVirtualLocator(s)&&(s=q.devirtualizeLocator(s)),q.areLocatorsEqual(r,s)};function dV(t){return K.join(t.get(\"globalFolder\"),\"store\")}async function PRt(t,e,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=K.join(s.cwd,_i),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=DRt(t.locationTree,t.binSymlinks,t.mtimeMs,s),S=mke(e,{skipPrefix:s.cwd}),P=[],I=async({srcDir:Be,dstDir:Ce,linkType:g,globalHardlinksStore:we,nmMode:Ee,windowsLinkType:fe,packageChecksum:se})=>{let X=(async()=>{try{g===\"SOFT\"?(await le.mkdirPromise(K.dirname(Ce),{recursive:!0}),await gV(K.resolve(Be),Ce,fe)):await SRt(Ce,Be,{baseFs:r,globalHardlinksStore:we,nmMode:Ee,windowsLinkType:fe,packageChecksum:se})}catch(De){throw De.message=`While persisting ${Be} -> ${Ce} ${De.message}`,De}finally{ie.tick()}})().then(()=>P.splice(P.indexOf(X),1));P.push(X),P.length>fke&&await Promise.race(P)},R=async(Be,Ce,g)=>{let we=(async()=>{let Ee=async(fe,se,X)=>{try{X.innerLoop||await le.mkdirPromise(se,{recursive:!0});let De=await le.readdirPromise(fe,{withFileTypes:!0});for(let Re of De){if(!X.innerLoop&&Re.name===gN)continue;let gt=K.join(fe,Re.name),j=K.join(se,Re.name);Re.isDirectory()?(Re.name!==_i||X&&X.innerLoop)&&(await le.mkdirPromise(j,{recursive:!0}),await Ee(gt,j,{...X,innerLoop:!0})):me.value===\"hardlinks-local\"||me.value===\"hardlinks-global\"?await le.linkPromise(gt,j):await le.copyFilePromise(gt,j,hke.default.constants.COPYFILE_FICLONE)}}catch(De){throw X.innerLoop||(De.message=`While cloning ${fe} -> ${se} ${De.message}`),De}finally{X.innerLoop||ie.tick()}};await Ee(Be,Ce,g)})().then(()=>P.splice(P.indexOf(we),1));P.push(we),P.length>fke&&await Promise.race(P)},N=async(Be,Ce,g)=>{if(g)for(let[we,Ee]of Ce.children){let fe=g.children.get(we);await N(K.join(Be,we),Ee,fe)}else{Ce.children.has(_i)&&await kw(K.join(Be,_i),{contentsOnly:!1});let we=K.basename(Be)===_i&&p.has(K.join(K.dirname(Be)));await kw(Be,{contentsOnly:Be===f,isWorkspaceDir:we})}};for(let[Be,Ce]of p){let g=S.get(Be);for(let[we,Ee]of Ce.children){if(we===\".\")continue;let fe=g&&g.children.get(we),se=K.join(Be,we);await N(se,Ee,fe)}}let U=async(Be,Ce,g)=>{if(g){Ake(Ce.locator,g.locator)||await kw(Be,{contentsOnly:Ce.linkType===\"HARD\"});for(let[we,Ee]of Ce.children){let fe=g.children.get(we);await U(K.join(Be,we),Ee,fe)}}else{Ce.children.has(_i)&&await kw(K.join(Be,_i),{contentsOnly:!0});let we=K.basename(Be)===_i&&S.has(K.join(K.dirname(Be)));await kw(Be,{contentsOnly:Ce.linkType===\"HARD\",isWorkspaceDir:we})}};for(let[Be,Ce]of S){let g=p.get(Be);for(let[we,Ee]of Ce.children){if(we===\".\")continue;let fe=g&&g.children.get(we);await U(K.join(Be,we),Ee,fe)}}let W=new Map,te=[];for(let[Be,Ce]of E)for(let g of Ce){let{locationRoot:we,segments:Ee}=dN(g,{skipPrefix:s.cwd}),fe=S.get(we),se=we;if(fe){for(let X of Ee)if(se=K.join(se,X),fe=fe.children.get(X),!fe)break;if(fe){let X=Ake(fe.locator,Be),De=e.get(fe.locator),Re=De.target,gt=se,j=De.linkType;if(X)W.has(Re)||W.set(Re,gt);else if(Re!==gt){let rt=q.parseLocator(fe.locator);q.isVirtualLocator(rt)&&(rt=q.devirtualizeLocator(rt)),te.push({srcDir:Re,dstDir:gt,linkType:j,realLocatorHash:rt.locatorHash})}}}}for(let[Be,{locations:Ce}]of e.entries())for(let g of Ce){let{locationRoot:we,segments:Ee}=dN(g,{skipPrefix:s.cwd}),fe=p.get(we),se=S.get(we),X=we,De=e.get(Be),Re=q.parseLocator(Be);q.isVirtualLocator(Re)&&(Re=q.devirtualizeLocator(Re));let gt=Re.locatorHash,j=De.target,rt=g;if(j===rt)continue;let Fe=De.linkType;for(let Ne of Ee)se=se.children.get(Ne);if(!fe)te.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:gt});else for(let Ne of Ee)if(X=K.join(X,Ne),fe=fe.children.get(Ne),!fe){te.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:gt});break}}let ie=ho.progressViaCounter(te.length),Ae=a.reportProgress(ie),ce=s.configuration.get(\"nmMode\"),me={value:ce},pe=s.configuration.get(\"winLinkType\");try{let Be=me.value===\"hardlinks-global\"?`${dV(s.configuration)}/v1`:null;if(Be&&!await le.existsPromise(Be)){await le.mkdirpPromise(Be);for(let g=0;g<256;g++)await le.mkdirPromise(K.join(Be,g.toString(16).padStart(2,\"0\")))}for(let g of te)(g.linkType===\"SOFT\"||!W.has(g.srcDir))&&(W.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:pe,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(P),P.length=0;for(let g of te){let we=W.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==we&&await R(we,g.dstDir,{nmMode:me})}await Promise.all(P),await le.mkdirPromise(f,{recursive:!0});let Ce=await bRt(e,S,s.cwd,{loadManifest:n});await xRt(h,Ce,s.cwd,pe),await BRt(s,e,Ce,me,{installChangedByUser:C}),ce==\"hardlinks-global\"&&me.value==\"hardlinks-local\"&&a.reportWarningOnce(74,\"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices\")}finally{Ae.stop()}}async function xRt(t,e,r,s){for(let a of t.keys()){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=K.join(a,_i,gN);await le.removePromise(n)}}for(let[a,n]of e){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=K.join(a,_i,gN),f=t.get(a)||new Map;await le.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await le.removePromise(K.join(c,p)),process.platform===\"win32\"&&await le.removePromise(K.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=K.join(c,p);E!==h&&(process.platform===\"win32\"?await(0,pke.default)(ue.fromPortablePath(h),ue.fromPortablePath(C),{createPwshFile:!1}):(await le.removePromise(C),await gV(h,C,s),K.contains(r,await le.realpathPromise(h))!==null&&await le.chmodPromise(h,493)))}}}Ve();bt();rA();var sb=class extends og{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new mV(r)}},mV=class extends Gm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let s=new fo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),a=$xe(r,this.opts.project.cwd,s),{tree:n,errors:c}=YD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let P=q.parseLocator(S.locator),I=q.stringifyIdent(P);I===C?f.set(C,P.reference):f.set(C,[I,P.reference])},h=K.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>\"u\")){if(\"target\"in E)throw new Error(\"Assertion failed: Expected the root junction point to be a directory\");for(let C of E.dirList){let S=K.join(h,C),P=n.get(S);if(typeof P>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in P)p(C,P);else for(let I of P.dirList){let R=K.join(S,I),N=n.get(R);if(typeof N>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in N)p(`${C}/${I}`,N);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var kRt={hooks:{cleanGlobalArtifacts:async t=>{let e=dV(t);await le.removePromise(e)}},configuration:{nmHoistingLimits:{description:\"Prevents packages to be hoisted past specific levels\",type:\"STRING\",values:[\"workspaces\",\"dependencies\",\"none\"],default:\"none\"},nmMode:{description:\"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.\",type:\"STRING\",values:[\"classic\",\"hardlinks-local\",\"hardlinks-global\"],default:\"classic\"},nmSelfReferences:{description:\"Defines whether the linker should generate self-referencing symlinks for workspaces.\",type:\"BOOLEAN\",default:!0}},linkers:[ib,sb]},QRt=kRt;var yz={};Vt(yz,{NpmHttpFetcher:()=>lb,NpmRemapResolver:()=>ub,NpmSemverFetcher:()=>ch,NpmSemverResolver:()=>fb,NpmTagResolver:()=>Ab,default:()=>Hjt,npmConfigUtils:()=>pi,npmHttpUtils:()=>an,npmPublishUtils:()=>D1});Ve();var bke=et(fi());var si=\"npm:\";var an={};Vt(an,{AuthType:()=>vke,customPackageError:()=>Wm,del:()=>WRt,get:()=>Ym,getIdentUrl:()=>mN,getPackageMetadata:()=>Rw,handleInvalidAuthenticationError:()=>lg,post:()=>qRt,put:()=>GRt});Ve();Ve();bt();var CV=et(lS()),wke=et(vG()),Bke=et(fi());var pi={};Vt(pi,{RegistryType:()=>Ike,getAuditRegistry:()=>TRt,getAuthConfiguration:()=>IV,getDefaultRegistry:()=>ob,getPublishRegistry:()=>RRt,getRegistryConfiguration:()=>Cke,getScopeConfiguration:()=>EV,getScopeRegistry:()=>Qw,normalizeRegistry:()=>zc});var Ike=(s=>(s.AUDIT_REGISTRY=\"npmAuditRegistry\",s.FETCH_REGISTRY=\"npmRegistryServer\",s.PUBLISH_REGISTRY=\"npmPublishRegistry\",s))(Ike||{});function zc(t){return t.replace(/\\/$/,\"\")}function TRt({configuration:t}){return ob({configuration:t,type:\"npmAuditRegistry\"})}function RRt(t,{configuration:e}){return t.publishConfig?.registry?zc(t.publishConfig.registry):t.name?Qw(t.name.scope,{configuration:e,type:\"npmPublishRegistry\"}):ob({configuration:e,type:\"npmPublishRegistry\"})}function Qw(t,{configuration:e,type:r=\"npmRegistryServer\"}){let s=EV(t,{configuration:e});if(s===null)return ob({configuration:e,type:r});let a=s.get(r);return a===null?ob({configuration:e,type:r}):zc(a)}function ob({configuration:t,type:e=\"npmRegistryServer\"}){let r=t.get(e);return zc(r!==null?r:t.get(\"npmRegistryServer\"))}function Cke(t,{configuration:e}){let r=e.get(\"npmRegistries\"),s=zc(t),a=r.get(s);if(typeof a<\"u\")return a;let n=r.get(s.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}var FRt=new Map([[\"npmRegistryServer\",\"https://npm.jsr.io/\"]]);function EV(t,{configuration:e}){if(t===null)return null;let s=e.get(\"npmScopes\").get(t);return s||(t===\"jsr\"?FRt:null)}function IV(t,{configuration:e,ident:r}){let s=r&&EV(r.scope,{configuration:e});return s?.get(\"npmAuthIdent\")||s?.get(\"npmAuthToken\")?s:Cke(t,{configuration:e})||e}var vke=(a=>(a[a.NO_AUTH=0]=\"NO_AUTH\",a[a.BEST_EFFORT=1]=\"BEST_EFFORT\",a[a.CONFIGURATION=2]=\"CONFIGURATION\",a[a.ALWAYS_AUTH=3]=\"ALWAYS_AUTH\",a))(vke||{});async function lg(t,{attemptedAs:e,registry:r,headers:s,configuration:a}){if(EN(t))throw new Yt(41,\"Invalid OTP token\");if(t.originalError?.name===\"HTTPError\"&&t.originalError?.response.statusCode===401)throw new Yt(41,`Invalid authentication (${typeof e!=\"string\"?`as ${await VRt(r,s,{configuration:a})}`:`attempted as ${e}`})`)}function Wm(t,e){let r=t.response?.statusCode;return r?r===404?\"Package not found\":r>=500&&r<600?`The registry appears to be down (using a ${he.applyHyperlink(e,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function mN(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var Ske=new Map,NRt=new Map;async function ORt(t){return await je.getFactoryWithDefault(Ske,t,async()=>{let e=null;try{e=await le.readJsonPromise(t)}catch{}return e})}async function LRt(t,e,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await je.getFactoryWithDefault(NRt,t,async()=>await Ym(mN(e),{...f,customErrorMessage:Wm,configuration:r,registry:a,ident:e,headers:{...n,\"If-None-Match\":s?.etag,\"If-Modified-Since\":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...h,body:s.metadata}}let E=_Rt(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers[\"last-modified\"]};return Ske.set(t,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${t}-${process.pid}.tmp`;await le.mkdirPromise(K.dirname(S),{recursive:!0}),await le.writeJsonPromise(S,C,{compact:!0}),await le.renamePromise(S,t)}).catch(()=>{}),{...h,body:E}}}))}function MRt(t){return t.scope!==null?`@${t.scope}-${t.name}-${t.scope.length}`:t.name}async function Rw(t,{cache:e,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=ab(f,{ident:t,registry:s});let p=HRt(f,s),h=K.join(p,`${MRt(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await ORt(h),E)){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(f.get(\"enableOfflineMode\")){let C=structuredClone(E.metadata),S=new Set;if(e){for(let I of Object.keys(C.versions)){let R=q.makeLocator(t,`npm:${I}`),N=e.getLocatorMirrorPath(R);(!N||!le.existsSync(N))&&(delete C.versions[I],S.add(I))}let P=C[\"dist-tags\"].latest;if(S.has(P)){let I=Object.keys(E.metadata.versions).sort(Bke.default.compare),R=I.indexOf(P);for(;S.has(I[R])&&R>=0;)R-=1;R>=0?C[\"dist-tags\"].latest=I[R]:delete C[\"dist-tags\"].latest}}return C}}return await LRt(h,t,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var Dke=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function _Rt(t){return{\"dist-tags\":t[\"dist-tags\"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,wke.default)(r,Dke)]))}}var URt=Nn.makeHash(...Dke).slice(0,6);function HRt(t,e){let r=jRt(t),s=new URL(e);return K.join(r,URt,s.hostname)}function jRt(t){return K.join(t.get(\"globalFolder\"),\"metadata/npm\")}async function Ym(t,{configuration:e,headers:r,ident:s,authType:a,registry:n,...c}){n=ab(e,{ident:s,registry:n}),s&&s.scope&&typeof a>\"u\"&&(a=1);let f=await yN(n,{authType:a,configuration:e,ident:s});f&&(r={...r,authorization:f});try{return await An.get(t.charAt(0)===\"/\"?`${n}${t}`:t,{configuration:e,headers:r,...c})}catch(p){throw await lg(p,{registry:n,configuration:e,headers:r}),p}}async function qRt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,registry:f,otp:p,...h}){f=ab(s,{ident:n,registry:f});let E=await yN(f,{authType:c,configuration:s,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...Tw(p)});try{return await An.post(f+t,e,{configuration:s,headers:a,...h})}catch(C){if(!EN(C)||p)throw await lg(C,{attemptedAs:r,registry:f,configuration:s,headers:a}),C;p=await wV(C,{configuration:s});let S={...a,...Tw(p)};try{return await An.post(`${f}${t}`,e,{configuration:s,headers:S,...h})}catch(P){throw await lg(P,{attemptedAs:r,registry:f,configuration:s,headers:a}),P}}}async function GRt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,registry:f,otp:p,...h}){f=ab(s,{ident:n,registry:f});let E=await yN(f,{authType:c,configuration:s,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...Tw(p)});try{return await An.put(f+t,e,{configuration:s,headers:a,...h})}catch(C){if(!EN(C))throw await lg(C,{attemptedAs:r,registry:f,configuration:s,headers:a}),C;p=await wV(C,{configuration:s});let S={...a,...Tw(p)};try{return await An.put(`${f}${t}`,e,{configuration:s,headers:S,...h})}catch(P){throw await lg(P,{attemptedAs:r,registry:f,configuration:s,headers:a}),P}}}async function WRt(t,{attemptedAs:e,configuration:r,headers:s,ident:a,authType:n=3,registry:c,otp:f,...p}){c=ab(r,{ident:a,registry:c});let h=await yN(c,{authType:n,configuration:r,ident:a});h&&(s={...s,authorization:h}),f&&(s={...s,...Tw(f)});try{return await An.del(c+t,{configuration:r,headers:s,...p})}catch(E){if(!EN(E)||f)throw await lg(E,{attemptedAs:e,registry:c,configuration:r,headers:s}),E;f=await wV(E,{configuration:r});let C={...s,...Tw(f)};try{return await An.del(`${c}${t}`,{configuration:r,headers:C,...p})}catch(S){throw await lg(S,{attemptedAs:e,registry:c,configuration:r,headers:s}),S}}}function ab(t,{ident:e,registry:r}){if(typeof r>\"u\"&&e)return Qw(e.scope,{configuration:t});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return zc(r)}async function yN(t,{authType:e=2,configuration:r,ident:s}){let a=IV(t,{configuration:r,ident:s}),n=YRt(a,e);if(!n)return null;let c=await r.reduceHook(f=>f.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:s});if(c)return c;if(a.get(\"npmAuthToken\"))return`Bearer ${a.get(\"npmAuthToken\")}`;if(a.get(\"npmAuthIdent\")){let f=a.get(\"npmAuthIdent\");return f.includes(\":\")?`Basic ${Buffer.from(f).toString(\"base64\")}`:`Basic ${f}`}if(n&&e!==1)throw new Yt(33,\"No authentication configured for request\");return null}function YRt(t,e){switch(e){case 2:return t.get(\"npmAlwaysAuth\");case 1:case 3:return!0;case 0:return!1;default:throw new Error(\"Unreachable\")}}async function VRt(t,e,{configuration:r}){if(typeof e>\"u\"||typeof e.authorization>\"u\")return\"an anonymous user\";try{return(await An.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??\"an unknown user\"}catch{return\"an unknown user\"}}async function wV(t,{configuration:e}){let r=t.originalError?.response.headers[\"npm-notice\"];if(r&&(await Ot.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,he.pretty(e,\"$1\",he.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&As.openUrl){let{openNow:c}=await(0,CV.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await As.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.\")))}}}),process.stdout.write(`\n`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||\"\";let{otp:s}=await(0,CV.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),s}function EN(t){if(t.originalError?.name!==\"HTTPError\")return!1;try{return(t.originalError?.response.headers[\"www-authenticate\"].split(/,\\s*/).map(r=>r.toLowerCase())).includes(\"otp\")}catch{return!1}}function Tw(t){return{\"npm-otp\":t}}var lb=class{supports(e,r){if(!e.reference.startsWith(si))return!1;let{selector:s,params:a}=q.parseRange(e.reference);return!(!bke.default.valid(s)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let{params:s}=q.parseRange(e.reference);if(s===null||typeof s.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await Ym(s.__archiveUrl,{customErrorMessage:Wm,configuration:r.project.configuration,ident:e});return await hs.convertToZip(a,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}};Ve();var ub=class{supportsDescriptor(e,r){return!(!e.range.startsWith(si)||!q.tryParseDescriptor(e.range.slice(si.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){let s=r.project.configuration.normalizeDependency(q.parseDescriptor(e.range.slice(si.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(q.parseDescriptor(e.range.slice(si.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(q.parseDescriptor(e.range.slice(si.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(e,r){throw new Error(\"Unreachable\")}};Ve();Ve();var Pke=et(fi());var ch=class t{supports(e,r){if(!e.reference.startsWith(si))return!1;let s=new URL(e.reference);return!(!Pke.default.valid(s.pathname)||s.searchParams.has(\"__archiveUrl\"))}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s;try{s=await Ym(t.getLocatorUrl(e),{customErrorMessage:Wm,configuration:r.project.configuration,ident:e})}catch{s=await Ym(t.getLocatorUrl(e).replace(/%2f/g,\"/\"),{customErrorMessage:Wm,configuration:r.project.configuration,ident:e})}return await hs.convertToZip(s,{configuration:r.project.configuration,prefixPath:q.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:s}){let a=Qw(e.scope,{configuration:s}),n=t.getLocatorUrl(e);return r=r.replace(/^https?:(\\/\\/(?:[^/]+\\.)?npmjs.org(?:$|\\/))/,\"https:$1\"),a=a.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r=r.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r===a+n||r===a+n.replace(/%2f/g,\"/\")}static getLocatorUrl(e){let r=Or.clean(e.reference.slice(si.length));if(r===null)throw new Yt(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${mN(e)}/-/${e.name}-${r}.tgz`}};Ve();Ve();Ve();var BV=et(fi());var IN=q.makeIdent(null,\"node-gyp\"),KRt=/\\b(node-gyp|prebuild-install)\\b/,fb=class{supportsDescriptor(e,r){return e.range.startsWith(si)?!!Or.validRange(e.range.slice(si.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(si))return!1;let{selector:s}=q.parseRange(e.reference);return!!BV.default.valid(s)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=Or.validRange(e.range.slice(si.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(si.length)}`);let n=await Rw(e,{cache:s.fetchOptions?.cache,project:s.project,version:BV.default.valid(a.raw)?a.raw:void 0}),c=je.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new Or.SemVer(h);if(a.test(E))return E}catch{}return je.mapAndFilter.skip}),f=c.filter(h=>!n.versions[h.raw].deprecated),p=f.length>0?f:c;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=q.makeLocator(e,`${si}${h.raw}`),C=n.versions[h.raw].dist.tarball;return ch.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?E:q.bindLocator(E,{__archiveUrl:C})})}async getSatisfying(e,r,s,a){let n=Or.validRange(e.range.slice(si.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(si.length)}`);return{locators:je.mapAndFilter(s,p=>{if(p.identHash!==e.identHash)return je.mapAndFilter.skip;let h=q.tryParseRange(p.reference,{requireProtocol:si});if(!h)return je.mapAndFilter.skip;let E=new Or.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:je.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:s}=q.parseRange(e.reference),a=Or.clean(s);if(a===null)throw new Yt(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await Rw(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new Yt(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new Yt(16,`Registry failed to return reference \"${a}\"`);let c=new Ht;if(c.load(n.versions[a]),!c.dependencies.has(IN.identHash)&&!c.peerDependencies.has(IN.identHash)){for(let f of c.scripts.values())if(f.match(KRt)){c.dependencies.set(IN.identHash,q.makeDescriptor(IN,\"latest\"));break}}return{...e,version:a,languageName:\"node\",linkType:\"HARD\",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};Ve();Ve();var xke=et(fi());var Ab=class{supportsDescriptor(e,r){return!(!e.range.startsWith(si)||!Hp.test(e.range.slice(si.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(si.length),n=await Rw(e,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new Yt(15,'Registry returned invalid data - missing \"dist-tags\" field');let c=n[\"dist-tags\"];if(!Object.hasOwn(c,a))throw new Yt(16,`Registry failed to return tag \"${a}\"`);let f=c[a],p=q.makeLocator(e,`${si}${f}`),h=n.versions[f].dist.tarball;return ch.isConventionalTarballUrl(p,h,{configuration:s.project.configuration})?[p]:[q.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,s,a){let n=[];for(let c of s){if(c.identHash!==e.identHash)continue;let f=q.tryParseRange(c.reference,{requireProtocol:si});if(!(!f||!xke.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=q.makeRange({protocol:si,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(q.makeDescriptor(e,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error(\"Unreachable\")}};var D1={};Vt(D1,{getGitHead:()=>_jt,getPublishAccess:()=>EOe,getReadmeContent:()=>IOe,makePublishBody:()=>Mjt});Ve();Ve();bt();var f7={};Vt(f7,{PackCommand:()=>Gw,default:()=>bOt,packUtils:()=>IA});Ve();Ve();Ve();bt();Wt();var IA={};Vt(IA,{genPackList:()=>qN,genPackStream:()=>u7,genPackageManifest:()=>oTe,hasPackScripts:()=>l7,prepareForPack:()=>c7});Ve();bt();var a7=et(Sa()),iTe=et(eTe()),sTe=ye(\"zlib\"),dOt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],mOt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function l7(t){return!!(In.hasWorkspaceScript(t,\"prepack\")||In.hasWorkspaceScript(t,\"postpack\"))}async function c7(t,{report:e},r){await In.maybeExecuteWorkspaceLifecycleScript(t,\"prepack\",{report:e});try{let s=K.join(t.cwd,Ht.fileName);await le.existsPromise(s)&&await t.manifest.loadFile(s,{baseFs:le}),await r()}finally{await In.maybeExecuteWorkspaceLifecycleScript(t,\"postpack\",{report:e})}}async function u7(t,e){typeof e>\"u\"&&(e=await qN(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(K.normalize(n));for(let n of t.manifest.bin.values())r.add(K.normalize(n));let s=iTe.default.pack();process.nextTick(async()=>{for(let n of e){let c=K.normalize(n),f=K.resolve(t.cwd,c),p=K.join(\"package\",c),h=await le.lstatPromise(f),E={name:p,mtime:new Date(ui.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,P,I=new Promise((N,U)=>{S=N,P=U}),R=N=>{N?P(N):S()};if(h.isFile()){let N;c===\"package.json\"?N=Buffer.from(JSON.stringify(await oTe(t),null,2)):N=await le.readFilePromise(f),s.entry({...E,mode:C,type:\"file\"},N,R)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:\"symlink\",linkname:await le.readlinkPromise(f)},R):R(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,sTe.createGzip)();return s.pipe(a),a}async function oTe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function qN(t){let e=t.project,r=e.configuration,s={accept:[],reject:[]};for(let C of mOt)s.reject.push(C);for(let C of dOt)s.accept.push(C);s.reject.push(r.get(\"rcFilename\"));let a=C=>{if(C===null||!C.startsWith(`${t.cwd}/`))return;let S=K.relative(t.cwd,C),P=K.resolve(vt.root,S);s.reject.push(P)};a(K.resolve(e.cwd,Er.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(C=>C.populateYarnPaths,e,C=>{a(C)});for(let C of e.workspaces){let S=K.relative(t.cwd,C.cwd);S!==\"\"&&!S.match(/^(\\.\\.)?\\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=t.manifest.publishConfig?.main??t.manifest.main,f=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;c!=null&&n.accept.push(K.resolve(vt.root,c)),f!=null&&n.accept.push(K.resolve(vt.root,f)),typeof p==\"string\"&&n.accept.push(K.resolve(vt.root,p));for(let C of h.values())n.accept.push(K.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(K.resolve(vt.root,C)),typeof S==\"string\"&&n.accept.push(K.resolve(vt.root,S));let E=t.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let C of t.manifest.files)aTe(n.accept,C,{cwd:vt.root})}return await yOt(t.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function yOt(t,{hasExplicitFileList:e,globalList:r,ignoreList:s}){let a=[],n=new jf(t),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!rTe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!e||f!==vt.root)for(let R of E)C=C||R===\".gitignore\",S=S||R===\".npmignore\";let P=S?await tTe(n,f,\".npmignore\"):C?await tTe(n,f,\".gitignore\"):null,I=P!==null?[P].concat(p):p;rTe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:[\"**/*\"]}]);for(let R of E)c.push([K.resolve(f,R),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(K.relative(vt.root,f))}return a.sort()}async function tTe(t,e,r){let s={accept:[],reject:[]},a=await t.readFilePromise(K.join(e,r),\"utf8\");for(let n of a.split(/\\n/g))aTe(s.reject,n,{cwd:e});return s}function EOt(t,{cwd:e}){let r=t[0]===\"!\";return r&&(t=t.slice(1)),t.match(/\\.{0,1}\\//)&&(t=K.resolve(e,t)),r&&(t=`!${t}`),t}function aTe(t,e,{cwd:r}){let s=e.trim();s===\"\"||s[0]===\"#\"||t.push(EOt(s,{cwd:r}))}function rTe(t,{globalList:e,ignoreLists:r}){let s=jN(t,e.accept);if(s!==0)return s===2;let a=jN(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=jN(t,n.accept);if(c!==0)return c===2;let f=jN(t,n.reject);if(f!==0)return f===1}return!1}function jN(t,e){let r=e,s=[];for(let a=0;a<e.length;++a)e[a][0]!==\"!\"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),s.push(e[a].slice(1)));return nTe(t,s)?2:nTe(t,r)?1:0}function nTe(t,e){let r=e,s=[];for(let a=0;a<e.length;++a)e[a].includes(\"/\")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),s.push(e[a]));return!!(a7.default.isMatch(t,r,{dot:!0,nocase:!0})||a7.default.isMatch(t,s,{dot:!0,basename:!0,nocase:!0}))}var Gw=class extends ut{constructor(){super(...arguments);this.installIfNeeded=ge.Boolean(\"--install-if-needed\",!1,{description:\"Run a preliminary `yarn install` if the package contains build scripts\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the file paths without actually generating the package archive\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.out=ge.String(\"-o,--out\",{description:\"Create the archive at the specified path\"});this.filename=ge.String(\"--filename\",{hidden:!0})}static{this.paths=[[\"pack\"]]}static{this.usage=ot.Usage({description:\"generate a tarball from the active workspace\",details:\"\\n      This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\\n\\n      If the `-o,--out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\\n    \",examples:[[\"Create an archive from the active workspace\",\"yarn pack\"],[\"List the files that would be made part of the workspace's archive\",\"yarn pack --dry-run\"],[\"Name and output the archive in a dedicated folder\",\"yarn pack --out /artifacts/%s-%v.tgz\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await l7(a)&&(this.installIfNeeded?await s.install({cache:await Jr.find(r),report:new Wi}):await s.restoreInstallState());let n=this.out??this.filename,c=typeof n<\"u\"?K.resolve(this.context.cwd,IOt(n,{workspace:a})):K.resolve(a.cwd,\"package.tgz\");return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await c7(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await qN(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await u7(a,h);await le.mkdirPromise(K.dirname(c),{recursive:!0});let C=le.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on(\"finish\",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${he.pretty(r,c,he.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(c)}))})).exitCode()}};function IOt(t,{workspace:e}){let r=t.replace(\"%s\",COt(e)).replace(\"%v\",wOt(e));return ue.toPortablePath(r)}function COt(t){return t.manifest.name!==null?q.slugifyIdent(t.manifest.name):\"package\"}function wOt(t){return t.manifest.version!==null?t.manifest.version:\"unknown\"}var BOt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],vOt=\"workspace:\",SOt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of BOt)for(let a of t.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=q.parseRange(a.range);if(c.protocol===vOt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new Yt(21,`${q.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;q.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector===\"*\"?f=n.manifest.version??\"0.0.0\":c.selector===\"~\"||c.selector===\"^\"?f=`${c.selector}${n.manifest.version??\"0.0.0\"}`:f=c.selector;let p=s===\"dependencies\"?q.makeDescriptor(a,\"unknown\"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":s;e[h][q.stringifyIdent(a)]=f}}},DOt={hooks:{beforeWorkspacePacking:SOt},commands:[Gw]},bOt=DOt;var yOe=et(dTe());Ve();var dOe=et(gOe()),{env:Bt}=process,xjt=\"application/vnd.in-toto+json\",kjt=\"https://in-toto.io/Statement/v0.1\",Qjt=\"https://in-toto.io/Statement/v1\",Tjt=\"https://slsa.dev/provenance/v0.2\",Rjt=\"https://slsa.dev/provenance/v1\",Fjt=\"https://github.com/actions/runner\",Njt=\"https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1\",Ojt=\"https://github.com/npm/cli/gitlab\",Ljt=\"v0alpha1\",mOe=async(t,e)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new Yt(91,'Provenance generation in GitHub Actions requires \"write\" access to the \"id-token\" permission');let s=(Bt.GITHUB_WORKFLOW_REF||\"\").replace(`${Bt.GITHUB_REPOSITORY}/`,\"\"),a=s.indexOf(\"@\"),n=s.slice(0,a),c=s.slice(a+1);r={_type:Qjt,subject:t,predicateType:Rjt,predicate:{buildDefinition:{buildType:Njt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${Fjt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new Yt(91,`Provenance generation in GitLab CI requires \"SIGSTORE_ID_TOKEN\" with \"sigstore\" audience to be present in \"id_tokens\". For more info see:\nhttps://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:kjt,subject:t,predicateType:Tjt,predicate:{buildType:`${Ojt}/${Ljt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new Yt(91,\"Provenance generation is only supported in GitHub Actions and GitLab CI\");return dOe.attest(Buffer.from(JSON.stringify(r)),xjt,e)};async function Mjt(t,e,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=t.manifest.name,p=t.manifest.version,h=q.stringifyIdent(f),E=yOe.default.fromData(e,{algorithms:[\"sha1\",\"sha512\"]}),C=r??EOe(t,f),S=await IOe(t),P=await IA.genPackageManifest(t),I=`${h}-${p}.tgz`,R=new URL(`${zc(a)}/${h}/-/${I}`),N={[I]:{content_type:\"application/octet-stream\",data:e.toString(\"base64\"),length:e.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,\"%40\")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},W=await mOe([U]),te=JSON.stringify(W);N[`${h}-${p}.sigstore`]={content_type:W.mediaType,data:te,length:te.length}}return{_id:h,_attachments:N,name:h,access:C,\"dist-tags\":{[s]:p},versions:{[p]:{...P,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:R.toString()}}},readme:S}}async function _jt(t){try{let{stdout:e}=await Gr.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:t});return e.trim()===\"\"?void 0:e.trim()}catch{return}}function EOe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access==\"string\"?t.manifest.publishConfig.access:r.get(\"npmPublishAccess\")!==null?r.get(\"npmPublishAccess\"):e.scope?\"restricted\":\"public\"}async function IOe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${q.stringifyIdent(r)}\n`;try{a=await le.readFilePromise(e,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var mz={npmAlwaysAuth:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"BOOLEAN\",default:!1},npmAuthIdent:{description:\"Authentication identity for the npm registry (_auth in npm and yarn v1)\",type:\"SECRET\",default:null},npmAuthToken:{description:\"Authentication token for the npm registry (_authToken in npm and yarn v1)\",type:\"SECRET\",default:null}},COe={npmAuditRegistry:{description:\"Registry to query for audit reports\",type:\"STRING\",default:null},npmPublishRegistry:{description:\"Registry to push packages to\",type:\"STRING\",default:null},npmRegistryServer:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"STRING\",default:\"https://registry.yarnpkg.com\"}},Ujt={configuration:{...mz,...COe,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...mz,...COe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:zc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...mz}}}},fetchers:[lb,ch],resolvers:[ub,fb,Ab]},Hjt=Ujt;var bz={};Vt(bz,{NpmAuditCommand:()=>P1,NpmInfoCommand:()=>x1,NpmLoginCommand:()=>k1,NpmLogoutCommand:()=>T1,NpmPublishCommand:()=>R1,NpmTagAddCommand:()=>N1,NpmTagListCommand:()=>F1,NpmTagRemoveCommand:()=>O1,NpmWhoamiCommand:()=>L1,default:()=>Kjt,npmAuditTypes:()=>fP,npmAuditUtils:()=>ML});Ve();Ve();Wt();var Bz=et(Sa());Ul();var fP={};Vt(fP,{Environment:()=>cP,Severity:()=>uP});var cP=(s=>(s.All=\"all\",s.Production=\"production\",s.Development=\"development\",s))(cP||{}),uP=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(uP||{});var ML={};Vt(ML,{allSeverities:()=>b1,getPackages:()=>wz,getReportTree:()=>Iz,getSeverityInclusions:()=>Ez,getTopLevelDependencies:()=>Cz});Ve();var wOe=et(fi());var b1=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function Ez(t){if(typeof t>\"u\")return new Set(b1);let e=b1.indexOf(t),r=b1.slice(e);return new Set(r)}function Iz(t){let e={},r={children:e};for(let[s,a]of je.sortMap(Object.entries(t),n=>n[0]))for(let n of je.sortMap(a,c=>`${c.id}`))e[`${s}/${n.id}`]={value:he.tuple(he.Type.IDENT,q.parseIdent(s)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:he.tuple(he.Type.ID,n.id)},Issue:{label:\"Issue\",value:he.tuple(he.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:he.tuple(he.Type.URL,n.url)},Severity:{label:\"Severity\",value:he.tuple(he.Type.NO_HINT,n.severity)},\"Vulnerable Versions\":{label:\"Vulnerable Versions\",value:he.tuple(he.Type.RANGE,n.vulnerable_versions)},\"Tree Versions\":{label:\"Tree Versions\",children:[...n.versions].sort(wOe.default.compare).map(c=>({value:he.tuple(he.Type.REFERENCE,c)}))},Dependents:{label:\"Dependents\",children:je.sortMap(n.dependents,c=>q.stringifyLocator(c)).map(c=>({value:he.tuple(he.Type.LOCATOR,c)}))}}};return r}function Cz(t,e,{all:r,environment:s}){let a=[],n=r?t.workspaces:[e],c=[\"all\",\"production\"].includes(s),f=[\"all\",\"development\"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function wz(t,e,{recursive:r}){let s=new Map,a=new Set,n=[],c=(f,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");if(q.ensureDevirtualizedLocator(E).reference.startsWith(\"npm:\")&&E.version!==null){let S=q.stringifyIdent(E),P=je.getMapWithDefault(s,S);je.getArrayWithDefault(P,E.version).push(f)}if(r)for(let S of E.dependencies.values())n.push([E,S])};for(let{workspace:f,dependency:p}of e)n.push([f.anchoredLocator,p]);for(;n.length>0;){let[f,p]=n.shift();c(f,p)}return s}var P1=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Audit dependencies from all workspaces\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Audit transitive dependencies as well\"});this.environment=ge.String(\"--environment\",\"all\",{description:\"Which environments to cover\",validator:Ao(cP)});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.noDeprecations=ge.Boolean(\"--no-deprecations\",!1,{description:\"Don't warn about deprecated packages\"});this.severity=ge.String(\"--severity\",\"info\",{description:\"Minimal severity requested for packages to be displayed\",validator:Ao(uP)});this.excludes=ge.Array(\"--exclude\",[],{description:\"Array of glob patterns of packages to exclude from audit\"});this.ignores=ge.Array(\"--ignore\",[],{description:\"Array of glob patterns of advisory ID's to ignore in the audit report\"})}static{this.paths=[[\"npm\",\"audit\"]]}static{this.usage=ot.Usage({description:\"perform a vulnerability audit against the installed packages\",details:`\n      This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n      For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \\`-A,--all\\`. To extend this search to both direct and transitive dependencies, use \\`-R,--recursive\\`.\n\n      Applying the \\`--severity\\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${b1.map(r=>`\\`${r}\\``).join(\", \")}.\n\n      If the \\`--json\\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n      If certain packages produce false positives for a particular environment, the \\`--exclude\\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \\`npmAuditExcludePackages\\` option.\n\n      If particular advisories are needed to be ignored, the \\`--ignore\\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \\`npmAuditIgnoreAdvisories\\` option.\n\n      To understand the dependency tree requiring vulnerable packages, check the raw report with the \\`--json\\` flag or use \\`yarn why package\\` to get more information as to who depends on them.\n    `,examples:[[\"Checks for known security issues with the installed packages. The output is a list of known issues.\",\"yarn npm audit\"],[\"Audit dependencies in all workspaces\",\"yarn npm audit --all\"],[\"Limit auditing to `dependencies` (excludes `devDependencies`)\",\"yarn npm audit --environment production\"],[\"Show audit report as valid JSON\",\"yarn npm audit --json\"],[\"Audit all direct and transitive dependencies\",\"yarn npm audit --recursive\"],[\"Output moderate (or more severe) vulnerabilities\",\"yarn npm audit --severity moderate\"],[\"Exclude certain packages\",\"yarn npm audit --exclude package1 --exclude package2\"],[\"Ignore specific advisories\",\"yarn npm audit --ignore 1234567 --ignore 7654321\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=Cz(s,a,{all:this.all,environment:this.environment}),c=wz(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[N,U]of c)f.some(W=>Bz.default.isMatch(N,W))||(p[N]=[...U.keys()]);let h=pi.getAuditRegistry({configuration:r}),E,C=await uA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=an.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:an.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ie])=>{let Ae=await an.getPackageMetadata(q.parseIdent(te),{project:s});return je.mapAndFilter(ie,ce=>{let{deprecated:me}=Ae.versions[ce];return me?[te,ce,me]:je.mapAndFilter.skip})})),W=await N;for(let[te,ie,Ae]of U.flat(1))Object.hasOwn(W,te)&&W[te].some(ce=>Or.satisfiesWithPrereleases(ie,ce.vulnerable_versions))||(W[te]??=[],W[te].push({id:`${te} (deprecation)`,title:(typeof Ae==\"string\"?Ae:\"\").trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:ie}));E=W});if(C.hasErrors())return C.exitCode();let S=Ez(this.severity),P=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(E)){let W=U.filter(te=>!Bz.default.isMatch(`${te.id}`,P)&&S.has(te.severity));W.length>0&&(I[N]=W.map(te=>{let ie=c.get(N);if(typeof ie>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let Ae=[...ie.keys()].filter(me=>Or.satisfiesWithPrereleases(me,te.vulnerable_versions)),ce=new Map;for(let me of Ae)for(let pe of ie.get(me))ce.set(pe.locatorHash,pe);return{...te,versions:Ae,dependents:[...ce.values()]}}))}let R=Object.keys(I).length>0;return R?(ks.emitTree(Iz(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,\"No audit suggestions\")}),R?1:0)}};Ve();Ve();bt();Wt();var vz=et(fi()),Sz=ye(\"util\"),x1=class extends ut{constructor(){super(...arguments);this.fields=ge.String(\"-f,--fields\",{description:\"A comma-separated list of manifest fields that should be displayed\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.packages=ge.Rest()}static{this.paths=[[\"npm\",\"info\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"show information about a package\",details:\"\\n      This command fetches information about a package from the npm registry and prints it in a tree format.\\n\\n      The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\\n\\n      Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\\n\\n      If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\\n\\n      By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\\n    \",examples:[[\"Show all available information about react (except the `dist`, `readme`, and `users` fields)\",\"yarn npm info react\"],[\"Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)\",\"yarn npm info react --json\"],[\"Show all available information about react@16.12.0\",\"yarn npm info react@16.12.0\"],[\"Show all available information about react@next\",\"yarn npm info react@next\"],[\"Show the description of react\",\"yarn npm info react --fields description\"],[\"Show all available versions of react\",\"yarn npm info react --fields versions\"],[\"Show the readme of react\",\"yarn npm info react --fields readme\"],[\"Show a few fields of react\",\"yarn npm info react --fields homepage,repository\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h===\".\"){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new nt(`Missing ${he.pretty(r,\"name\",he.Type.CODE)} field in ${ue.fromPortablePath(K.join(ie.cwd,Er.manifest))}`);E=q.makeDescriptor(ie.manifest.name,\"unknown\")}else E=q.parseDescriptor(h);let C=an.getIdentUrl(E),S=Dz(await an.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:an.customPackageError})),P=Object.keys(S.versions).sort(vz.default.compareLoose),R=S[\"dist-tags\"].latest||P[P.length-1],N=Or.validRange(E.range);if(N){let ie=vz.default.maxSatisfying(P,N);ie!==null?R=ie:(p.reportWarning(0,`Unmet range ${q.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S[\"dist-tags\"],E.range)?R=S[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${q.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[R],W={...S,...U,version:R,versions:P},te;if(a!==null){te={};for(let ie of a){let Ae=W[ie];if(typeof Ae<\"u\")te[ie]=Ae;else{p.reportWarning(1,`The ${he.pretty(r,ie,he.Type.CODE)} field doesn't exist inside ${q.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete W.dist,delete W.readme,delete W.users),te=W;p.reportJson(te),this.json||n.push(te)}});Sz.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,Sz.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return f.exitCode()}};function Dz(t){if(Array.isArray(t)){let e=[];for(let r of t)r=Dz(r),r&&e.push(r);return e}else if(typeof t==\"object\"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith(\"_\"))continue;let s=Dz(t[r]);s&&(e[r]=s)}return e}else return t||null}Ve();Ve();Wt();var BOe=et(lS()),k1=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Login to the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Login to the publish registry\"});this.alwaysAuth=ge.Boolean(\"--always-auth\",{description:\"Set the npmAlwaysAuth configuration\"})}static{this.paths=[[\"npm\",\"login\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"store new login info to access the npm registry\",details:\"\\n      This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\\n\\n      Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n    \",examples:[[\"Login to the default registry\",\"yarn npm login\"],[\"Login to the registry linked to the @my-scope registry\",\"yarn npm login --scope my-scope\"],[\"Login to the publish registry for the current package\",\"yarn npm login --publish\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await _L({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await Gjt({configuration:r,registry:s,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),f=await jjt(s,c,r);return await qjt(s,f,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};async function _L({scope:t,publish:e,configuration:r,cwd:s}){return t&&e?pi.getScopeRegistry(t,{configuration:r,type:pi.RegistryType.PUBLISH_REGISTRY}):t?pi.getScopeRegistry(t,{configuration:r}):e?pi.getPublishRegistry((await rC(r,s)).manifest,{configuration:r}):pi.getDefaultRegistry({configuration:r})}async function jjt(t,e,r){let s=`/-/user/org.couchdb.user:${encodeURIComponent(e.name)}`,a={_id:`org.couchdb.user:${e.name}`,name:e.name,password:e.password,type:\"user\",roles:[],date:new Date().toISOString()},n={attemptedAs:e.name,configuration:r,registry:t,jsonResponse:!0,authType:an.AuthType.NO_AUTH};try{return(await an.put(s,a,n)).token}catch(E){if(!(E.originalError?.name===\"HTTPError\"&&E.originalError?.response.statusCode===409))throw E}let c={...n,authType:an.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString(\"base64\")}`}},f=await an.get(s,c);for(let[E,C]of Object.entries(f))(!a[E]||E===\"roles\")&&(a[E]=C);let p=`${s}/-rev/${a._rev}`;return(await an.put(p,a,c)).token}async function qjt(t,e,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=je.isIndexableObject(f)?f:{},h=p[c],E=je.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(t)};return await ze.updateHomeConfiguration(n)}async function Gjt({configuration:t,registry:e,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${he.pretty(t,e,he.Type.URL)}`);let n=!1;if(e.match(/^https:\\/\\/npm\\.pkg\\.github\\.com(\\/|$)/)&&(r.reportInfo(0,\"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions.\"),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||\"\",password:t.env.YARN_INJECT_NPM_PASSWORD||\"\"};let c=await(0,BOe.prompt)([{type:\"input\",name:\"name\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}Ve();Ve();Wt();var Q1=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),T1=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Logout of the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Logout of the publish registry\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Logout of all registries\"})}static{this.paths=[[\"npm\",\"logout\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"logout of the npm registry\",details:\"\\n      This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\\n\\n      Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n\\n      Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\\n    \",examples:[[\"Logout of the default registry\",\"yarn npm logout\"],[\"Logout of the @my-scope scope\",\"yarn npm logout --scope my-scope\"],[\"Logout of the publish registry for the current package\",\"yarn npm logout --publish\"],[\"Logout of all registries\",\"yarn npm logout --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await _L({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=q.makeIdent(this.scope??null,\"pkg\");return!pi.getAuthConfiguration(n,{configuration:c,ident:f}).get(\"npmAuthToken\")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Yjt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await vOe(\"npmScopes\",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,\"Scope authentication settings removed, but some other ones settings still apply to it\");return}let c=await _L({configuration:r,cwd:this.context.cwd,publish:this.publish});await vOe(\"npmRegistries\",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};function Wjt(t,e){let r=t[e];if(!je.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...Q1].every(n=>!s.has(n)))return!1;for(let n of Q1)s.delete(n);if(s.size===0)return t[e]=void 0,!0;let a={...r};for(let n of Q1)delete a[n];return t[e]=a,!0}async function Yjt(){let t=e=>{let r=!1,s=je.isIndexableObject(e)?{...e}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Wjt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:e};return await ze.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function vOe(t,e){return await ze.updateHomeConfiguration({[t]:r=>{let s=je.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,e))return r;let a=s[e],n=je.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...Q1].every(p=>!c.has(p)))return r;for(let p of Q1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[e]:void 0};let f={};for(let p of Q1)f[p]=void 0;return{...s,[e]:{...n,...f}}}})}Ve();Wt();var R1=class extends ut{constructor(){super(...arguments);this.access=ge.String(\"--access\",{description:\"The access for the published package (public or restricted)\"});this.tag=ge.String(\"--tag\",\"latest\",{description:\"The tag on the registry that the package should be attached to\"});this.tolerateRepublish=ge.Boolean(\"--tolerate-republish\",!1,{description:\"Warn and exit when republishing an already existing version of a package\"});this.otp=ge.String(\"--otp\",{description:\"The OTP token to use with the command\"});this.provenance=ge.Boolean(\"--provenance\",!1,{description:\"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json.\"})}static{this.paths=[[\"npm\",\"publish\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"publish the active workspace to the npm registry\",details:'\\n      This command will pack the active workspace into a fresh archive and upload it to the npm registry.\\n\\n      The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\\n\\n      Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka \"private packages\"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\\n    ',examples:[[\"Publish the active workspace\",\"yarn npm publish\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new nt(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new nt(\"Workspaces must have valid names and versions to be published on an external registry\");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=pi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await an.get(an.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new Yt(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,c)){h.reportWarning(0,`Registry already knows about version ${c}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await In.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await IA.prepareForPack(a,{report:h},async()=>{let E=await IA.genPackList(a);for(let N of E)h.reportInfo(null,N);let C=await IA.genPackStream(a,E),S=await je.bufferStream(C),P=await D1.getGitHead(a.cwd),I=!1;a.manifest.publishConfig&&\"provenance\"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,I?h.reportInfo(null,\"Generating provenance statement because `publishConfig.provenance` field is set.\"):h.reportInfo(null,\"Skipping provenance statement because `publishConfig.provenance` field is set to false.\")):this.provenance?(I=!0,h.reportInfo(null,\"Generating provenance statement because `--provenance` flag is set.\")):r.get(\"npmPublishProvenance\")&&(I=!0,h.reportInfo(null,\"Generating provenance statement because `npmPublishProvenance` setting is set.\"));let R=await D1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:P,provenance:I});await an.put(an.getIdentUrl(n),R,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,\"Package archive published\")})).exitCode()}};Ve();Wt();var SOe=et(fi());Ve();bt();Wt();var F1=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String({required:!1})}static{this.paths=[[\"npm\",\"tag\",\"list\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"list all dist-tags of a package\",details:`\n      This command will list all tags of a package from the npm registry.\n\n      If the package is not specified, Yarn will default to the current workspace.\n    `,examples:[[\"List all tags of package `my-pkg`\",\"yarn npm tag list my-pkg\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=q.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new nt(`Missing 'name' field in ${ue.fromPortablePath(K.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await AP(n,r),p={children:je.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:he.tuple(he.Type.RESOLUTION,{descriptor:q.makeDescriptor(n,h),locator:q.makeLocator(n,E)})}))};return ks.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function AP(t,e){let r=`/-/package${an.getIdentUrl(t)}/dist-tags`;return an.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:an.customPackageError})}var N1=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[[\"npm\",\"tag\",\"add\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"add a tag for a specific version of a package\",details:`\n      This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n    `,examples:[[\"Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`\",\"yarn npm tag add my-pkg@2.3.4-beta.4 beta\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=q.parseDescriptor(this.package,!0),c=n.range;if(!SOe.default.valid(c))throw new nt(`The range ${he.pretty(r,n.range,he.Type.RANGE)} must be a valid semver version`);let f=pi.getPublishRegistry(a.manifest,{configuration:r}),p=he.pretty(r,n,he.Type.IDENT),h=he.pretty(r,c,he.Type.RANGE),E=he.pretty(r,this.tag,he.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let P=await AP(n,r);Object.hasOwn(P,this.tag)&&P[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};Ve();Wt();var O1=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[[\"npm\",\"tag\",\"remove\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"remove a tag from a package\",details:`\n      This command will remove a tag from a package from the npm registry.\n    `,examples:[[\"Remove the `beta` tag from package `my-pkg`\",\"yarn npm tag remove my-pkg beta\"]]})}async execute(){if(this.tag===\"latest\")throw new nt(\"The 'latest' tag cannot be removed.\");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=q.parseIdent(this.package),c=pi.getPublishRegistry(a.manifest,{configuration:r}),f=he.pretty(r,this.tag,he.Type.CODE),p=he.pretty(r,n,he.Type.IDENT),h=await AP(n,r);if(!Object.hasOwn(h,this.tag))throw new nt(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};Ve();Ve();Wt();var L1=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Print username for the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Print username for the publish registry\"})}static{this.paths=[[\"npm\",\"whoami\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"display the name of the authenticated user\",details:\"\\n      Print the username associated with the current authentication settings to the standard output.\\n\\n      When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\\n\\n      When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\\n    \",examples:[[\"Print username for the default registry\",\"yarn npm whoami\"],[\"Print username for the registry on a given scope\",\"yarn npm whoami --scope company\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=pi.getScopeRegistry(this.scope,{configuration:r,type:pi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=pi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=pi.getPublishRegistry((await rC(r,this.context.cwd)).manifest,{configuration:r}):s=pi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await an.get(\"/-/whoami\",{configuration:r,registry:s,authType:an.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?q.makeIdent(this.scope,\"\"):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Vjt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},npmPublishProvenance:{description:\"Whether to generate provenance for the published packages\",type:\"BOOLEAN\",default:!1},npmAuditExcludePackages:{description:\"Array of glob patterns of packages to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:\"Array of glob patterns of advisory IDs to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0}},commands:[P1,x1,k1,T1,R1,N1,F1,O1,L1]},Kjt=Vjt;var Fz={};Vt(Fz,{PatchCommand:()=>q1,PatchCommitCommand:()=>j1,PatchFetcher:()=>mP,PatchResolver:()=>yP,default:()=>A6t,patchUtils:()=>dy});Ve();Ve();bt();rA();var dy={};Vt(dy,{applyPatchFile:()=>HL,diffFolders:()=>Tz,ensureUnpatchedDescriptor:()=>Pz,ensureUnpatchedLocator:()=>qL,extractPackageToDisk:()=>Qz,extractPatchFlags:()=>TOe,isParentRequired:()=>kz,isPatchDescriptor:()=>jL,isPatchLocator:()=>Fg,loadPatchFiles:()=>dP,makeDescriptor:()=>WL,makeLocator:()=>xz,makePatchHash:()=>Rz,parseDescriptor:()=>hP,parseLocator:()=>gP,parsePatchFile:()=>pP,unpatchDescriptor:()=>c6t,unpatchLocator:()=>u6t});Ve();bt();Ve();bt();var Jjt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function M1(t){return K.relative(vt.root,K.resolve(vt.root,ue.toPortablePath(t)))}function zjt(t){let e=t.trim().match(Jjt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var Zjt=420,Xjt=493;var DOe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),$jt=t=>({header:zjt(t),parts:[]}),e6t={\"@\":\"header\",\"-\":\"deletion\",\"+\":\"insertion\",\" \":\"context\",\"\\\\\":\"pragma\",undefined:\"context\"};function t6t(t){let e=[],r=DOe(),s=\"parsing header\",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),e.push(r),r=DOe()}for(let p=0;p<t.length;p++){let h=t[p];if(s===\"parsing header\")if(h.startsWith(\"@@\"))s=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&f();let E=h.match(/^diff --git a\\/(.*?) b\\/(.*?)\\s*$/);if(!E)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=E[1],r.diffLineToPath=E[2]}else if(h.startsWith(\"old mode \"))r.oldMode=h.slice(9).trim();else if(h.startsWith(\"new mode \"))r.newMode=h.slice(9).trim();else if(h.startsWith(\"deleted file mode \"))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith(\"new file mode \"))r.newFileMode=h.slice(14).trim();else if(h.startsWith(\"rename from \"))r.renameFrom=h.slice(12).trim();else if(h.startsWith(\"rename to \"))r.renameTo=h.slice(10).trim();else if(h.startsWith(\"index \")){let E=h.match(/(\\w+)\\.\\.(\\w+)/);if(!E)continue;r.beforeHash=E[1],r.afterHash=E[2]}else h.startsWith(\"semver exclusivity \")?r.semverExclusivity=h.slice(19).trim():h.startsWith(\"--- \")?r.fromPath=h.slice(6).trim():h.startsWith(\"+++ \")&&(r.toPath=h.slice(6).trim());else{let E=e6t[h[0]]||null;switch(E){case\"header\":c(),a=$jt(h);break;case null:s=\"parsing header\",f(),p-=1;break;case\"pragma\":{if(!h.startsWith(\"\\\\ No newline at end of file\"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error(\"Bad parser state: No newline at EOF pragma encountered without context\");n.noNewlineAtEndOfFile=!0}break;case\"context\":case\"deletion\":case\"insertion\":{if(!a)throw new Error(\"Bad parser state: Hunk lines encountered before hunk header\");n&&n.type!==E&&(a.parts.push(n),n=null),n||(n={type:E,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:je.assertNever(E);break}}}f();for(let{hunks:p}of e)if(p)for(let h of p)n6t(h);return e}function r6t(t){let e=[];for(let r of t){let{semverExclusivity:s,diffLineFromPath:a,diffLineToPath:n,oldMode:c,newMode:f,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:C,beforeHash:S,afterHash:P,fromPath:I,toPath:R,hunks:N}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":N&&N.length>0?\"patch\":\"mode change\",W=null;switch(U){case\"rename\":{if(!E||!C)throw new Error(\"Bad parser state: rename from & to not given\");e.push({type:\"rename\",semverExclusivity:s,fromPath:M1(E),toPath:M1(C)}),W=C}break;case\"file deletion\":{let te=a||I;if(!te)throw new Error(\"Bad parse state: no path given for file deletion\");e.push({type:\"file deletion\",semverExclusivity:s,hunk:N&&N[0]||null,path:M1(te),mode:UL(p),hash:S})}break;case\"file creation\":{let te=n||R;if(!te)throw new Error(\"Bad parse state: no path given for file creation\");e.push({type:\"file creation\",semverExclusivity:s,hunk:N&&N[0]||null,path:M1(te),mode:UL(h),hash:P})}break;case\"patch\":case\"mode change\":W=R||n;break;default:je.assertNever(U);break}W&&c&&f&&c!==f&&e.push({type:\"mode change\",semverExclusivity:s,path:M1(W),oldMode:UL(c),newMode:UL(f)}),W&&N&&N.length&&e.push({type:\"patch\",semverExclusivity:s,path:M1(W),hunks:N,beforeHash:S,afterHash:P})}if(e.length===0)throw new Error(\"Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string\");return e}function UL(t){let e=parseInt(t,8)&511;if(e!==Zjt&&e!==Xjt)throw new Error(`Unexpected file mode string: ${t}`);return e}function pP(t){let e=t.split(/\\n/g);return e[e.length-1]===\"\"&&e.pop(),r6t(t6t(e))}function n6t(t){let e=0,r=0;for(let{type:s,lines:a}of t.parts)switch(s){case\"context\":r+=a.length,e+=a.length;break;case\"deletion\":e+=a.length;break;case\"insertion\":r+=a.length;break;default:je.assertNever(s);break}if(e!==t.header.original.length||r!==t.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(t.header.original.length)} ${s(t.header.patched.length)} @@, got @@ ${s(e)} ${s(r)} @@)`)}}Ve();bt();var _1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function U1(t,e,r){let s=await t.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await t.lutimesPromise(e,s.atime,s.mtime)}async function HL(t,{baseFs:e=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&s!==null&&!Or.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case\"file deletion\":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await U1(e,K.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case\"rename\":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await U1(e,K.dirname(a.fromPath),async()=>{await U1(e,K.dirname(a.toPath),async()=>{await U1(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case\"file creation\":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(`\n`)+(a.hunk.parts[0].noNewlineAtEndOfFile?\"\":`\n`):\"\";await e.mkdirpPromise(K.dirname(a.path),{chmod:493,utimes:[ui.SAFE_TIME,ui.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,ui.SAFE_TIME,ui.SAFE_TIME)}break;case\"patch\":await U1(e,a.path,async()=>{await o6t(a,{baseFs:e,dryRun:r})});break;case\"mode change\":{let c=(await e.statPromise(a.path)).mode;if(bOe(a.newMode)!==bOe(c))continue;await U1(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:je.assertNever(a);break}}function bOe(t){return(t&64)>0}function POe(t){return t.replace(/\\s+$/,\"\")}function s6t(t,e){return POe(t)===POe(e)}async function o6t({hunks:t,path:e},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(e).mode,c=(await r.readFileSync(e,\"utf8\")).split(/\\n/),f=[],p=0,h=0;for(let C of t){let S=Math.max(h,C.header.patched.start+p),P=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),R=Math.max(P,I),N=0,U=0,W=null;for(;N<=R;){if(N<=P&&(U=S-N,W=xOe(C,c,U),W!==null)){N=-N;break}if(N<=I&&(U=S+N,W=xOe(C,c,U),W!==null))break;N+=1}if(W===null)throw new _1(t.indexOf(C),C);f.push(W),p+=N,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case\"splice\":{let P=S.index+E;c.splice(P,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case\"pop\":c.pop();break;case\"push\":c.push(S.line);break;default:je.assertNever(S);break}await r.writeFilePromise(e,c.join(`\n`),{mode:a})}function xOe(t,e,r){let s=[];for(let a of t.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let c=e[r];if(c==null||!s6t(c,n))return null;r+=1}a.type===\"deletion\"&&(s.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:\"push\",line:\"\"}))}break;case\"insertion\":s.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:\"pop\"});break;default:je.assertNever(a.type);break}return s}var l6t=/^builtin<([^>]+)>$/;function H1(t,e){let{protocol:r,source:s,selector:a,params:n}=q.parseRange(t);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(s===null)throw new Error(\"Patch locators must explicitly define their source\");let c=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],f=n&&typeof n.locator==\"string\"?q.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=e(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function jL(t){return t.range.startsWith(\"patch:\")}function Fg(t){return t.reference.startsWith(\"patch:\")}function hP(t){let{sourceItem:e,...r}=H1(t.range,q.parseDescriptor);return{...r,sourceDescriptor:e}}function gP(t){let{sourceItem:e,...r}=H1(t.reference,q.parseLocator);return{...r,sourceLocator:e}}function c6t(t){let{sourceItem:e}=H1(t.range,q.parseDescriptor);return e}function u6t(t){let{sourceItem:e}=H1(t.reference,q.parseLocator);return e}function Pz(t){if(!jL(t))return t;let{sourceItem:e}=H1(t.range,q.parseDescriptor);return e}function qL(t){if(!Fg(t))return t;let{sourceItem:e}=H1(t.reference,q.parseLocator);return e}function kOe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=t!==null?{locator:q.stringifyLocator(t)}:{},f=typeof s<\"u\"?{version:s}:{},p=typeof a<\"u\"?{hash:a}:{};return q.makeRange({protocol:\"patch:\",source:n(e),selector:r.join(\"&\"),params:{...f,...p,...c}})}function WL(t,{parentLocator:e,sourceDescriptor:r,patchPaths:s}){return q.makeDescriptor(t,kOe({parentLocator:e,sourceItem:r,patchPaths:s},q.stringifyDescriptor))}function xz(t,{parentLocator:e,sourcePackage:r,patchPaths:s,patchHash:a}){return q.makeLocator(t,kOe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},q.stringifyLocator))}function QOe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let c=a.match(l6t);return c!==null?s(c[1]):a.startsWith(\"~/\")?r(a.slice(2)):K.isAbsolute(a)?t(a):e(a)}function TOe(t){let e=t.lastIndexOf(\"!\");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has(\"optional\")}}function kz(t){return QOe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function dP(t,e,r){let s=t!==null?await r.fetcher.fetch(t,r):null,a=s&&s.localPath?{packageFs:new Sn(vt.root),prefixPath:K.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await je.releaseAfterUseAsync(async()=>await Promise.all(e.map(async c=>{let f=TOe(c),p=await QOe({onAbsolute:async h=>await le.readFilePromise(h,\"utf8\"),onRelative:async h=>{if(a===null)throw new Error(\"Assertion failed: The parent locator should have been fetched\");return await a.packageFs.readFilePromise(K.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await le.readFilePromise(K.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source==\"string\"&&(c.source=c.source.replace(/\\r\\n?/g,`\n`));return n}async function Qz(t,{cache:e,project:r}){let s=r.storedPackages.get(t.locatorHash);if(typeof s>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=qL(t),n=r.storedChecksums,c=new Wi,f=await le.mktempPromise(),p=K.join(f,\"source\"),h=K.join(f,\"user\"),E=K.join(f,\".yarn-patch.json\"),C=r.configuration.makeFetcher(),S=[];try{let P,I;if(t.locatorHash===a.locatorHash){let R=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c});S.push(()=>R.releaseFs?.()),P=R,I=R}else P=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>P.releaseFs?.()),I=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([le.copyPromise(p,P.prefixPath,{baseFs:P.packageFs}),le.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),le.writeJsonPromise(E,{locator:q.stringifyLocator(t),version:s.version})])}finally{for(let P of S)P()}return le.detachTemp(f),h}async function Tz(t,e){let r=ue.fromPortablePath(t).replace(/\\\\/g,\"/\"),s=ue.fromPortablePath(e).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await Gr.execvp(\"git\",[\"-c\",\"core.safecrlf=false\",\"diff\",\"--src-prefix=a/\",\"--dst-prefix=b/\",\"--ignore-cr-at-eol\",\"--full-index\",\"--no-index\",\"--no-renames\",\"--text\",r,s],{cwd:ue.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:\"1\",HOME:\"\",XDG_CONFIG_HOME:\"\",USERPROFILE:\"\"}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.\nThe following error was reported by 'git':\n${n}`);let c=r.startsWith(\"/\")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${je.escapeRegExp(`/${c(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${je.escapeRegExp(`/${c(s)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(je.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(je.escapeRegExp(`${s}/`),\"g\"),\"\")}function Rz(t,e){let r=[];for(let{source:s}of t){if(s===null)continue;let a=pP(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&e!==null&&!Or.satisfiesWithPrereleases(e,c)||r.push(JSON.stringify(f))}}return Nn.makeHash(`${3}`,...r).slice(0,6)}Ve();function ROe(t,{configuration:e,report:r}){for(let s of t.parts)for(let a of s.lines)switch(s.type){case\"context\":r.reportInfo(null,`  ${he.pretty(e,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${he.pretty(e,a,he.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${he.pretty(e,a,he.Type.ADDED)}`);break;default:je.assertNever(s.type)}}var mP=class{supports(e,r){return!!Fg(e)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${q.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:q.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async patchPackage(e,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=gP(e),f=await dP(s,c,r),p=await le.mktempPromise(),h=K.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),C=q.getIdentVendorPath(e),S=new ps(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await je.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:P,optional:I}of f){if(P===null)continue;let R=new ps(h,{level:r.project.configuration.get(\"compressionLevel\")}),N=new Sn(K.resolve(vt.root,C),{baseFs:R});try{await HL(pP(P),{baseFs:N,version:n})}catch(U){if(!(U instanceof _1))throw U;let W=r.project.configuration.get(\"enableInlineHunks\"),te=!W&&!I?\" (set enableInlineHunks for details)\":\"\",ie=`${q.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,Ae=ce=>{W&&ROe(U.hunk,{configuration:r.project.configuration,report:ce})};if(R.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:Ae});continue}else throw new Yt(66,ie,Ae)}R.saveAndClose()}return new ps(h,{level:r.project.configuration.get(\"compressionLevel\")})}};Ve();var yP=class{supportsDescriptor(e,r){return!!jL(e)}supportsLocator(e,r){return!!Fg(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){let{patchPaths:a}=hP(e);return a.every(n=>!kz(n))?e:q.bindDescriptor(e,{locator:q.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:s}=hP(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=hP(e),c=await dP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=Rz(c,f.version);return[xz(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:s}=gP(e);return{...await r.resolver.resolve(s,r),...e}}};Ve();bt();Wt();var j1=class extends ut{constructor(){super(...arguments);this.save=ge.Boolean(\"-s,--save\",!1,{description:\"Add the patch to your resolution entries\"});this.patchFolder=ge.String()}static{this.paths=[[\"patch-commit\"]]}static{this.usage=ot.Usage({description:\"generate a patch out of a directory\",details:\"\\n      By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\\n\\n      With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\\n\\n      Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=K.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),c=K.join(n,\"../source\"),f=K.join(n,\"../.yarn-patch.json\");if(!le.existsSync(c))throw new nt(\"The argument folder didn't get created by 'yarn patch'\");let p=await Tz(c,n),h=await le.readJsonPromise(f),E=q.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new nt(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let C=r.get(\"patchFolder\"),S=K.join(C,`${q.slugifyLocator(E)}.patch`);await le.mkdirPromise(C,{recursive:!0}),await le.writeFilePromise(S,p);let P=[],I=new Map;for(let R of s.storedPackages.values()){if(q.isVirtualLocator(R))continue;let N=R.dependencies.get(E.identHash);if(!N)continue;let U=q.ensureDevirtualizedDescriptor(N),W=Pz(U),te=s.storedResolutions.get(W.descriptorHash);if(!te)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!s.storedPackages.get(te))throw new Error(\"Assertion failed: Expected the package to have been registered\");let Ae=s.tryWorkspaceByLocator(R);if(Ae)P.push(Ae);else{let ce=s.originalPackages.get(R.locatorHash);if(!ce)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let me=ce.dependencies.get(N.identHash);if(!me)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");I.set(me.descriptorHash,me)}}for(let R of P)for(let N of Ht.hardDependencies){let U=R.manifest[N].get(E.identHash);if(!U)continue;let W=WL(U,{parentLocator:null,sourceDescriptor:q.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});R.manifest[N].set(U.identHash,W)}for(let R of I.values()){let N=WL(R,{parentLocator:null,sourceDescriptor:q.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:q.stringifyIdent(N),description:R.range}},reference:N.range})}await s.persist()}};Ve();bt();Wt();var q1=class extends ut{constructor(){super(...arguments);this.update=ge.Boolean(\"-u,--update\",!1,{description:\"Reapply local patches that already apply to this packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String()}static{this.paths=[[\"patch\"]]}static{this.usage=ot.Usage({description:\"prepare a package for patching\",details:\"\\n      This command will cause a package to be extracted in a temporary directory intended to be editable at will.\\n\\n      Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\\n\\n      Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=q.parseLocator(this.package);if(c.reference===\"unknown\"){let f=je.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?je.mapAndFilter.skip:q.isVirtualLocator(p)?je.mapAndFilter.skip:Fg(p)!==this.update?je.mapAndFilter.skip:p);if(f.length===0)throw new nt(\"No package found in the project for the given locator\");if(f.length>1)throw new nt(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${f.map(p=>`\n- ${q.prettyLocator(r,p)}`).join(\"\")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new nt(\"No package found in the project for the given locator\");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=qL(c),h=await Qz(c,{cache:n,project:s});f.reportJson({locator:q.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";f.reportInfo(0,`Package ${q.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${he.pretty(r,ue.fromPortablePath(h),\"magenta\")}`),f.reportInfo(0,`Once you are done run ${he.pretty(r,`yarn patch-commit -s ${process.platform===\"win32\"?'\"':\"\"}${ue.fromPortablePath(h)}${process.platform===\"win32\"?'\"':\"\"}`,\"cyan\")} and Yarn will store a patchfile based on your changes.`)})}};var f6t={configuration:{enableInlineHunks:{description:\"If true, the installs will print unmatched patch hunks\",type:\"BOOLEAN\",default:!1},patchFolder:{description:\"Folder where the patch files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/patches\"}},commands:[j1,q1],fetchers:[mP],resolvers:[yP]},A6t=f6t;var Lz={};Vt(Lz,{PnpmLinker:()=>EP,default:()=>y6t});Ve();bt();Wt();var EP=class{getCustomDataKey(){return JSON.stringify({name:\"PnpmLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the pnpm linker to be enabled\");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>\"u\")throw new nt(`Couldn't find ${q.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\\/node_modules\\/(@[^/]*\\/)?[^/]+)(\\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=e,f=e;do{f=c,c=K.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(e){return new Nz(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},Nz=class{constructor(e){this.opts=e;this.asyncActions=new je.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=px(le,{indexPath:K.join(e.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(e){}async installPackage(e,r,s){switch(e.linkType){case\"SOFT\":return this.installPackageSoft(e,r,s);case\"HARD\":return this.installPackageHard(e,r,s)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(e,r,s){let a=K.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?K.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,s){let a=h6t(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,q.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await le.mkdirPromise(n,{recursive:!0}),await le.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=q.isVirtualLocator(e)?q.devirtualizeLocator(e):e,p={manifest:await Ht.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ht,misc:{hasBindingGyp:mA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,e.version),E=mA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\"||!FOe(e,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(e.locatorHash);if(typeof s>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${q.stringifyLocator(e)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(e.locatorHash,async n=>{await le.mkdirPromise(a,{recursive:!0});let c=await g6t(a),f=new Map(c),p=[n],h=(C,S)=>{let P=S;FOe(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),P=q.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(P.locatorHash);if(typeof I>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${q.stringifyLocator(S)})`);let R=q.stringifyIdent(C),N=K.join(a,R),U=K.relative(K.dirname(N),I.packageLocation),W=f.get(R);f.delete(R),p.push(Promise.resolve().then(async()=>{if(W){if(W.isSymbolicLink()&&await le.readlinkPromise(N)===U)return;await le.removePromise(N)}await le.mkdirpPromise(K.dirname(N)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await le.symlinkPromise(I.packageLocation,N,\"junction\"):await le.symlinkPromise(U,N)}))},E=!1;for(let[C,S]of r)C.identHash===e.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(q.convertLocatorToDescriptor(e),e),p.push(d6t(a,f)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the pnpm linker\")}async finalizeInstall(){let e=NOe(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await le.removePromise(e);else{let r;try{r=new Set(await le.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=K.contains(e,s);if(a===null)continue;let[n]=a.split(K.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await le.removePromise(K.join(e,s))}))}return await this.asyncActions.wait(),await Oz(e),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await Oz(p6t(this.opts.project)),{customData:this.customData}}};function p6t(t){return K.join(t.cwd,Er.nodeModules)}function NOe(t){return t.configuration.get(\"pnpmStoreFolder\")}function h6t(t,{project:e}){let r=q.slugifyLocator(t),s=NOe(e),a=K.join(s,r,\"package\"),n=K.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function FOe(t,{project:e}){return!q.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function g6t(t){let e=new Map,r=[];try{r=await le.readdirPromise(t,{withFileTypes:!0})}catch(s){if(s.code!==\"ENOENT\")throw s}try{for(let s of r)if(!s.name.startsWith(\".\"))if(s.name.startsWith(\"@\")){let a=await le.readdirPromise(K.join(t,s.name),{withFileTypes:!0});if(a.length===0)e.set(s.name,s);else for(let n of a)e.set(`${s.name}/${n.name}`,n)}else e.set(s.name,s)}catch(s){if(s.code!==\"ENOENT\")throw s}return e}async function d6t(t,e){let r=[],s=new Set;for(let a of e.keys()){r.push(le.removePromise(K.join(t,a)));let n=q.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>Oz(K.join(t,a)))))}async function Oz(t){try{await le.rmdirPromise(t)}catch(e){if(e.code!==\"ENOENT\"&&e.code!==\"ENOTEMPTY\")throw e}}var m6t={configuration:{pnpmStoreFolder:{description:\"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.\",type:\"ABSOLUTE_PATH\",default:\"./node_modules/.store\"}},linkers:[EP]},y6t=m6t;var Gz={};Vt(Gz,{StageCommand:()=>G1,default:()=>x6t,stageUtils:()=>VL});Ve();bt();Wt();Ve();bt();var VL={};Vt(VL,{ActionType:()=>Mz,checkConsensus:()=>YL,expandDirectory:()=>Hz,findConsensus:()=>jz,findVcsRoot:()=>_z,genCommitMessage:()=>qz,getCommitPrefix:()=>OOe,isYarnFile:()=>Uz});bt();var Mz=(n=>(n[n.CREATE=0]=\"CREATE\",n[n.DELETE=1]=\"DELETE\",n[n.ADD=2]=\"ADD\",n[n.REMOVE=3]=\"REMOVE\",n[n.MODIFY=4]=\"MODIFY\",n))(Mz||{});async function _z(t,{marker:e}){do if(!le.existsSync(K.join(t,e)))t=K.dirname(t);else return t;while(t!==\"/\");return null}function Uz(t,{roots:e,names:r}){if(r.has(K.basename(t)))return!0;do if(!e.has(t))t=K.dirname(t);else return!0;while(t!==\"/\");return!1}function Hz(t){let e=[],r=[t];for(;r.length>0;){let s=r.pop(),a=le.readdirSync(s);for(let n of a){let c=K.resolve(s,n);le.lstatSync(c).isDirectory()?r.push(c):e.push(c)}}return e}function YL(t,e){let r=0,s=0;for(let a of t)a!==\"wip\"&&(e.test(a)?r+=1:s+=1);return r>=s}function jz(t){let e=YL(t,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=YL(t,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),s=YL(t,/^\\w\\(\\w+\\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:s}}function OOe(t){return t.useComponent?\"chore(yarn): \":\"\"}var E6t=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function qz(t,e){let r=OOe(t),s=[],a=e.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=E6t.get(n);t.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),t.useThirdPerson&&(f+=\"s\");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=\" (and one other)\":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(\", \")}`}var I6t=\"Commit generated via `yarn stage`\",C6t=11;async function LOe(t){let{code:e,stdout:r}=await Gr.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:t});return e===0?r.trim():null}async function w6t(t,e){let r=[],s=e.filter(h=>K.basename(h.path)===\"package.json\");for(let{action:h,path:E}of s){let C=K.relative(t,E);if(h===4){let S=await LOe(t),{stdout:P}=await Gr.execvp(\"git\",[\"show\",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ht.fromText(P),R=await Ht.fromFile(E),N=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[W,te]of U){let ie=q.stringifyIdent(te),Ae=N.get(W);Ae?Ae.range!==te.range&&r.push([4,`${ie} to ${Ae.range}`]):r.push([3,ie])}for(let[W,te]of N)U.has(W)||r.push([2,q.stringifyIdent(te)])}else if(h===0){let S=await Ht.fromFile(E);S.name?r.push([0,q.stringifyIdent(S.name)]):r.push([0,\"a package\"])}else if(h===1){let S=await LOe(t),{stdout:P}=await Gr.execvp(\"git\",[\"show\",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ht.fromText(P);I.name?r.push([1,q.stringifyIdent(I.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await Gr.execvp(\"git\",[\"log\",`-${C6t}`,\"--pretty=format:%s\"],{cwd:t}),c=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],f=jz(c);return qz(f,r)}var B6t={0:[\" A \",\"?? \"],4:[\" M \"],1:[\" D \"]},v6t={0:[\"A  \"],4:[\"M  \"],1:[\"D  \"]},MOe={async findRoot(t){return await _z(t,{marker:\".git\"})},async filterChanges(t,e,r,s){let{stdout:a}=await Gr.execvp(\"git\",[\"status\",\"-s\"],{cwd:t,strict:!0}),n=a.toString().split(/\\n/g),c=s?.staged?v6t:B6t;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=K.resolve(t,p.slice(3));if(!s?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return Hz(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(P=>c[P].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>Uz(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await w6t(t,e)},async makeStage(t,e){let r=e.map(s=>ue.fromPortablePath(s.path));await Gr.execvp(\"git\",[\"add\",\"--\",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let s=e.map(a=>ue.fromPortablePath(a.path));await Gr.execvp(\"git\",[\"add\",\"-N\",\"--\",...s],{cwd:t,strict:!0}),await Gr.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${I6t}\n`,\"--\",...s],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(s=>ue.fromPortablePath(s.path));await Gr.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:t,strict:!0})}};var S6t=[MOe],G1=class extends ut{constructor(){super(...arguments);this.commit=ge.Boolean(\"-c,--commit\",!1,{description:\"Commit the staged files\"});this.reset=ge.Boolean(\"-r,--reset\",!1,{description:\"Remove all files from the staging area\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the commit message and the list of modified files without staging / committing\"});this.update=ge.Boolean(\"-u,--update\",!1,{hidden:!0})}static{this.paths=[[\"stage\"]]}static{this.usage=ot.Usage({description:\"add all yarn files to your vcs\",details:\"\\n      This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\\n\\n      Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\\n\\n      Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\\n    \",examples:[[\"Adds all modified project files to the staging area\",\"yarn stage\"],[\"Creates a new commit containing all modified project files\",\"yarn stage --commit\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),{driver:a,root:n}=await D6t(s.cwd),c=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of b6t(n,C))f.add(S);let p=new Set([r.get(\"rcFilename\"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let C of h)this.context.stdout.write(`${ue.fromPortablePath(C.path)}\n`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write(\"No changes found!\"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function D6t(t){let e=null,r=null;for(let s of S6t)if((r=await s.findRoot(t))!==null){e=s;break}if(e===null||r===null)throw new nt(\"No stage driver has been found for your current project\");return{driver:e,root:r}}function b6t(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let s;try{s=le.statSync(e)}catch{break}if(s.isSymbolicLink())e=K.resolve(K.dirname(e),le.readlinkSync(e));else break}return r}var P6t={commands:[G1]},x6t=P6t;var Wz={};Vt(Wz,{default:()=>L6t});Ve();Ve();bt();var HOe=et(fi());Ve();var _Oe=et(Z9()),k6t=\"e8e1bd300d860104bb8c58453ffa1eb4\",Q6t=\"OFCNCOG2CU\",UOe=async(t,e)=>{let r=q.stringifyIdent(t),a=T6t(e).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},T6t=t=>(0,_Oe.default)(Q6t,k6t,{requester:{async send(r){try{let s=await An.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var jOe=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,R6t=async(t,e,r,s)=>{if(r.scope===\"types\")return;let{project:a}=t,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??(le.existsSync(K.join(t.cwd,\"tsconfig.json\"))||le.existsSync(K.join(a.cwd,\"tsconfig.json\")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new Wi};if(!await UOe(r,n))return;let E=jOe(r),C=q.parseRange(r.range).selector;if(!Or.validRange(C)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},p);C=q.parseRange(U[0].reference).selector}let S=HOe.default.coerce(C);if(S===null)return;let P=`${Xu.Modifier.CARET}${S.major}`,I=q.makeDescriptor(q.makeIdent(\"types\",E),P),R=je.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,W=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&W!==r.descriptorHash)return je.mapAndFind.skip;let te=[];for(let ie of Ht.allDependencies){let Ae=N.manifest[ie].get(I.identHash);typeof Ae>\"u\"||te.push([ie,Ae])}return te.length===0?je.mapAndFind.skip:te});if(typeof R<\"u\")for(let[N,U]of R)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},p)).length===0)return}catch{return}t.manifest[Xu.Target.DEVELOPMENT].set(I.identHash,I)}},F6t=async(t,e,r)=>{if(r.scope===\"types\")return;let{project:s}=t,{configuration:a}=s;if(!(a.get(\"tsEnableAutoTypes\")??(le.existsSync(K.join(t.cwd,\"tsconfig.json\"))||le.existsSync(K.join(s.cwd,\"tsconfig.json\")))))return;let c=jOe(r),f=q.makeIdent(\"types\",c);for(let p of Ht.allDependencies)typeof t.manifest[p].get(f.identHash)>\"u\"||t.manifest[p].delete(f.identHash)},N6t=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},O6t={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:R6t,afterWorkspaceDependencyRemoval:F6t,beforeWorkspacePacking:N6t}},L6t=O6t;var zz={};Vt(zz,{VersionApplyCommand:()=>J1,VersionCheckCommand:()=>z1,VersionCommand:()=>Z1,default:()=>rqt,versionUtils:()=>K1});Ve();Ve();Wt();var K1={};Vt(K1,{Decision:()=>Y1,applyPrerelease:()=>KOe,applyReleases:()=>Jz,applyStrategy:()=>JL,clearVersionFiles:()=>Yz,getUndecidedDependentWorkspaces:()=>CP,getUndecidedWorkspaces:()=>KL,openVersionFile:()=>V1,requireMoreDecisions:()=>$6t,resolveVersionFiles:()=>IP,suggestStrategy:()=>Kz,updateVersionFiles:()=>Vz,validateReleaseDecision:()=>W1});Ve();bt();Bc();Wt();var VOe=et(YOe()),TA=et(fi()),X6t=/^(>=|[~^]|)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$/,Y1=(c=>(c.UNDECIDED=\"undecided\",c.DECLINE=\"decline\",c.MAJOR=\"major\",c.MINOR=\"minor\",c.PATCH=\"patch\",c.PRERELEASE=\"prerelease\",c))(Y1||{});function W1(t){let e=TA.default.valid(t);return e||je.validateEnum((0,VOe.default)(Y1,\"UNDECIDED\"),t)}async function IP(t,{prerelease:e=null}={}){let r=new Map,s=t.configuration.get(\"deferredVersionFolder\");if(!le.existsSync(s))return r;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(\".yml\"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,\"utf8\"),p=ls(f);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let C=q.parseIdent(h),S=t.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${K.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${q.prettyLocator(t.configuration,S.anchoredLocator)})`);let P=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),R=JL(P,W1(E));if(R===null)throw new Error(`Assertion failed: Expected ${P} to support being bumped via strategy ${E}`);let N=typeof I<\"u\"?TA.default.gt(R,I)?R:I:R;r.set(S,N)}}return e&&(r=new Map([...r].map(([n,c])=>[n,KOe(c,{current:n.manifest.version,prerelease:e})]))),r}async function Yz(t){let e=t.configuration.get(\"deferredVersionFolder\");le.existsSync(e)&&await le.removePromise(e)}async function Vz(t,e){let r=new Set(e),s=t.configuration.get(\"deferredVersionFolder\");if(!le.existsSync(s))return;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(\".yml\"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,\"utf8\"),p=ls(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=q.parseIdent(E),S=t.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await le.changeFilePromise(c,il(new il.PreserveOrdering(p))):await le.unlinkPromise(c)}}}async function V1(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new nt(\"This command can only be run from within a Yarn project\");let s=await Qa.fetchRoot(r.projectCwd),a=s!==null?await Qa.fetchBase(s,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=s!==null?await Qa.fetchChangedFiles(s,{base:a.hash,project:t}):[],c=r.get(\"deferredVersionFolder\"),f=n.filter(P=>K.contains(c,P)!==null);if(f.length>1)throw new nt(`Your current branch contains multiple versioning files; this isn't supported:\n- ${f.map(P=>ue.fromPortablePath(P)).join(`\n- `)}`);let p=new Set(je.mapAndFilter(n,P=>{let I=t.tryWorkspaceByFilePath(P);return I===null?je.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!e)return null;let h=f.length===1?f[0]:K.join(c,`${Nn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=le.existsSync(h)?await le.readFilePromise(h,\"utf8\"):\"{}\",C=ls(E),S=new Map;for(let P of C.declined||[]){let I=q.parseIdent(P),R=t.getWorkspaceByIdent(I);S.set(R,\"decline\")}for(let[P,I]of Object.entries(C.releases||{})){let R=q.parseIdent(P),N=t.getWorkspaceByIdent(R);S.set(N,W1(I))}return{project:t,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(P=>P.manifest.version!==null)),releases:S,async saveAll(){let P={},I=[],R=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=q.stringifyIdent(N.anchoredLocator),W=S.get(N);W===\"decline\"?I.push(U):typeof W<\"u\"?P[U]=W1(W):p.has(N)&&R.push(U)}await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.changeFilePromise(h,il(new il.PreserveOrdering({releases:Object.keys(P).length>0?P:void 0,declined:I.length>0?I:void 0,undecided:R.length>0?R:void 0})))}}}function $6t(t){return KL(t).size>0||CP(t).length>0}function KL(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function CP(t,{include:e=new Set}={}){let r=[],s=new Map(je.mapAndFilter([...t.releases],([n,c])=>c===\"decline\"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(je.mapAndFilter([...t.releases],([n,c])=>c!==\"decline\"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ht.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=t.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function Kz(t,e){let r=TA.default.clean(e);for(let s of Object.values(Y1))if(s!==\"undecided\"&&s!==\"decline\"&&TA.default.inc(t,s)===r)return s;return null}function JL(t,e){if(TA.default.valid(e))return e;if(t===null)throw new nt(`Cannot apply the release strategy \"${e}\" unless the workspace already has a valid version`);if(!TA.default.valid(t))throw new nt(`Cannot apply the release strategy \"${e}\" on a non-semver version (${t})`);let r=TA.default.inc(t,e);if(r===null)throw new nt(`Cannot apply the release strategy \"${e}\" on the specified version (${t})`);return r}function Jz(t,e,{report:r,exact:s}){let a=new Map;for(let n of t.workspaces)for(let c of Ht.allDependencies)for(let f of n.manifest[c].values()){let p=t.tryWorkspaceByDescriptor(f);if(p===null||!e.has(p))continue;je.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of e){let f=n.manifest.version;n.manifest.version=c,TA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?q.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${q.prettyLocator(t.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:ue.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>\"u\"))for(let[E,C,S]of h){let P=E.manifest[C].get(S);if(typeof P>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let I=P.range,R=!1;if(I.startsWith(yi.protocol)&&(I=I.slice(yi.protocol.length),R=!0,I===n.relativeCwd))continue;let N=I.match(X6t);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${q.prettyLocator(t.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${N[1]}${c}`;R&&(U=`${yi.protocol}${U}`);let W=q.makeDescriptor(P,U);E.manifest[C].set(S,W)}}}var eqt=new Map([[\"%n\",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function KOe(t,{current:e,prerelease:r}){let s=new TA.default.SemVer(e),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==t&&(a.length=0);let c=!0,f=r.split(/\\./g);for(let p of f){let h=eqt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${t}-${n.join(\".\")}`}var J1=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"--all\",!1,{description:\"Apply the deferred version changes on all workspaces\"});this.dryRun=ge.Boolean(\"--dry-run\",!1,{description:\"Print the versions without actually generating the package archive\"});this.prerelease=ge.String(\"--prerelease\",{description:\"Add a prerelease identifier to new versions\",tolerateBoolean:!0});this.exact=ge.Boolean(\"--exact\",!1,{description:\"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version.\"});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Release the transitive workspaces as well\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"version\",\"apply\"]]}static{this.usage=ot.Usage({category:\"Release-related commands\",description:\"apply all the deferred version bumps at once\",details:`\n      This command will apply the deferred version changes and remove their definitions from the repository.\n\n      Note that if \\`--prerelease\\` is set, the given prerelease identifier (by default \\`rc.%n\\`) will be used on all new versions and the version definitions will be kept as-is.\n\n      By default only the current workspace will be bumped, but you can configure this behavior by using one of:\n\n      - \\`--recursive\\` to also apply the version bump on its dependencies\n      - \\`--all\\` to apply the version bump on all packages in the repository\n\n      Note that this command will also update the \\`workspace:\\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump.\n    `,examples:[[\"Apply the version change to the local workspace\",\"yarn version apply\"],[\"Apply the version change to all the workspaces in the local workspace\",\"yarn version apply --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await IP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let P=h.get(S);typeof P<\"u\"&&E.set(S,P)}}if(E.size===0){let C=h.size>0?\" Did you want to add --all?\":\"\";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}Jz(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await Yz(s):await Vz(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};Ve();bt();Wt();var zL=et(fi());var z1=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}static{this.paths=[[\"version\",\"check\"]]}static{this.usage=ot.Usage({category:\"Release-related commands\",description:\"check that all the relevant packages have been bumped\",details:\"\\n      **Warning:** This command currently requires Git.\\n\\n      This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\\n\\n      In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\\n\\n      In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\\n    \",examples:[[\"Check whether the modified packages need a bump\",\"yarn version check\"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){ow(this.context);let{Gem:r}=await Promise.resolve().then(()=>($F(),CY)),{ScrollableItems:s}=await Promise.resolve().then(()=>(nN(),rN)),{FocusRequest:a}=await Promise.resolve().then(()=>(BY(),XPe)),{useListInput:n}=await Promise.resolve().then(()=>(tN(),$Pe)),{renderForm:c}=await Promise.resolve().then(()=>(aN(),oN)),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Vc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>et(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState();let R=await V1(P);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new nt(\"This command can only be run on Git repositories\");let N=()=>h.createElement(f,{flexDirection:\"row\",paddingBottom:1},h.createElement(f,{flexDirection:\"column\",width:60},h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select workspaces.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select release strategies.\"))),h.createElement(f,{flexDirection:\"column\"},h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:me,active:pe,decision:Be,setDecision:Ce})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${q.prettyLocator(S,me.anchoredLocator)})`);if(zL.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let we=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(Be,we,{active:pe,minus:\"left\",plus:\"right\",set:Ce});let Ee=Be===\"undecided\"?h.createElement(p,{color:\"yellow\"},g):Be===\"decline\"?h.createElement(p,{color:\"green\"},g):h.createElement(p,null,h.createElement(p,{color:\"magenta\"},g),\" \\u2192 \",h.createElement(p,{color:\"green\"},zL.default.valid(Be)?Be:zL.default.inc(g,Be)));return h.createElement(f,{flexDirection:\"column\"},h.createElement(f,null,h.createElement(p,null,q.prettyLocator(S,me.anchoredLocator),\" - \",Ee)),h.createElement(f,null,we.map(fe=>h.createElement(f,{key:fe,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:fe===Be}),\" \",fe)))))},W=me=>{let pe=new Set(R.releaseRoots),Be=new Map([...me].filter(([Ce])=>pe.has(Ce)));for(;;){let Ce=CP({project:R.project,releases:Be}),g=!1;if(Ce.length>0){for(let[we]of Ce)if(!pe.has(we)){pe.add(we),g=!0;let Ee=me.get(we);typeof Ee<\"u\"&&Be.set(we,Ee)}}if(!g)break}return{relevantWorkspaces:pe,relevantReleases:Be}},te=()=>{let[me,pe]=C(()=>new Map(R.releases)),Be=E((Ce,g)=>{let we=new Map(me);g!==\"undecided\"?we.set(Ce,g):we.delete(Ce);let{relevantReleases:Ee}=W(we);pe(Ee)},[me,pe]);return[me,Be]},ie=({workspaces:me,releases:pe})=>{let Be=[];Be.push(`${me.size} total`);let Ce=0,g=0;for(let we of me){let Ee=pe.get(we);typeof Ee>\"u\"?g+=1:Ee!==\"decline\"&&(Ce+=1)}return Be.push(`${Ce} release${Ce===1?\"\":\"s\"}`),Be.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},Be.join(\", \"))},ce=await c(({useSubmit:me})=>{let[pe,Be]=te();me(pe);let{relevantWorkspaces:Ce}=W(pe),g=new Set([...Ce].filter(se=>!R.releaseRoots.has(se))),[we,Ee]=C(0),fe=E(se=>{switch(se){case a.BEFORE:Ee(we-1);break;case a.AFTER:Ee(we+1);break}},[we,Ee]);return h.createElement(f,{flexDirection:\"column\"},h.createElement(N,null),h.createElement(f,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(f,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...R.changedFiles].map(se=>h.createElement(f,{key:se},h.createElement(p,null,h.createElement(p,{color:\"grey\"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(se)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):\")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:R.releaseRoots,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:\"column\"},h.createElement(s,{active:we%2===0,radius:1,size:2,onFocusRequest:fe},[...R.releaseRoots].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||\"undecided\",setDecision:X=>Be(se,X)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:\")),h.createElement(f,null,h.createElement(p,null,\"(Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<tab>\"),\" to move the focus between the workspace groups.)\")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:\"column\"},h.createElement(s,{active:we%2===1,radius:2,size:2,onFocusRequest:fe},[...g].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||\"undecided\",setDecision:X=>Be(se,X)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ce>\"u\")return 1;R.releases.clear();for(let[me,pe]of ce)R.releases.set(me,pe);await R.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await V1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new nt(\"This command can only be run on Git repositories\");if(c.reportInfo(0,`Your PR was started right after ${he.pretty(r,f.baseHash.slice(0,7),\"yellow\")} ${he.pretty(r,f.baseTitle,\"magenta\")}`),f.changedFiles.size>0){c.reportInfo(0,\"You have changed the following files since then:\"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${he.pretty(r,ue.fromPortablePath(f.root),\"gray\")}${ue.sep}${ue.relative(ue.fromPortablePath(f.root),ue.fromPortablePath(S))}`)}let p=!1,h=!1,E=KL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${q.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=CP(f);for(let[S,P]of C)h||c.reportSeparator(),c.reportError(0,`${q.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${q.prettyWorkspace(r,P)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,\"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed).\"),c.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};Ve();Wt();var ZL=et(fi());var Z1=class extends ut{constructor(){super(...arguments);this.deferred=ge.Boolean(\"-d,--deferred\",{description:\"Prepare the version to be bumped during the next release cycle\"});this.immediate=ge.Boolean(\"-i,--immediate\",{description:\"Bump the version immediately\"});this.strategy=ge.String()}static{this.paths=[[\"version\"]]}static{this.usage=ot.Usage({category:\"Release-related commands\",description:\"apply a new version to the current package\",details:\"\\n      This command will bump the version number for the given package, following the specified strategy:\\n\\n      - If `major`, the first number from the semver range will be increased (`X.0.0`).\\n      - If `minor`, the second number from the semver range will be increased (`0.X.0`).\\n      - If `patch`, the third number from the semver range will be increased (`0.0.X`).\\n      - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\\n      - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\\n      - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\\n      - If a valid semver range, it will be used as new version.\\n      - If unspecified, Yarn will ask you for guidance.\\n\\n      For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\\n    \",examples:[[\"Immediately bump the version to the next major\",\"yarn version major\"],[\"Prepare the version to be bumped to the next major\",\"yarn version major --deferred\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=ZL.default.valid(this.strategy),f=this.strategy===\"decline\",p;if(c)if(a.manifest.version!==null){let E=Kz(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new nt(\"Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.\");if(typeof E!=\"string\"||!ZL.default.valid(E))throw new nt(`Can't bump the version (${E}) if it's not valid semver`)}p=W1(this.strategy)}if(!n){let C=(await IP(s)).get(a);if(typeof C<\"u\"&&p!==\"decline\"){let S=JL(a.manifest.version,p);if(ZL.default.lt(S,C))throw new nt(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await V1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};var tqt={configuration:{deferredVersionFolder:{description:\"Folder where are stored the versioning files\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/versions\"},preferDeferredVersions:{description:\"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set\",type:\"BOOLEAN\",default:!1}},commands:[J1,z1,Z1]},rqt=tqt;var Zz={};Vt(Zz,{WorkspacesFocusCommand:()=>X1,WorkspacesForeachCommand:()=>e2,default:()=>sqt});Ve();Ve();Wt();var X1=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.production=ge.Boolean(\"--production\",!1,{description:\"Only install regular dependencies by omitting dev dependencies\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Install the entire project\"});this.workspaces=ge.Rest()}static{this.paths=[[\"workspaces\",\"focus\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"install a single workspace and its dependencies\",details:\"\\n      This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\\n\\n      Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\\n\\n      If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(q.parseIdent(f))));for(let f of c)for(let p of this.production?[\"dependencies\"]:Ht.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};Ve();Ve();Ve();Wt();var $1=et(Sa()),zOe=et(Md());Ul();var e2=class extends ut{constructor(){super(...arguments);this.from=ge.Array(\"--from\",{description:\"An array of glob pattern idents or paths from which to base any recursion\"});this.all=ge.Boolean(\"-A,--all\",{description:\"Run the command on all workspaces of a project\"});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Run the command on the current workspace and all of its recursive dependencies\"});this.worktree=ge.Boolean(\"-W,--worktree\",{description:\"Run the command on all workspaces of the current worktree\"});this.verbose=ge.Counter(\"-v,--verbose\",{description:\"Increase level of logging verbosity up to 2 times\"});this.parallel=ge.Boolean(\"-p,--parallel\",!1,{description:\"Run the commands in parallel\"});this.interlaced=ge.Boolean(\"-i,--interlaced\",!1,{description:\"Print the output of commands in real-time instead of buffering it\"});this.jobs=ge.String(\"-j,--jobs\",{description:\"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`\",validator:vU([Ao([\"unlimited\"]),rB(BU(),[DU(),SU(1)])])});this.topological=ge.Boolean(\"-t,--topological\",!1,{description:\"Run the command after all workspaces it depends on (regular) have finished\"});this.topologicalDev=ge.Boolean(\"--topological-dev\",!1,{description:\"Run the command after all workspaces it depends on (regular + dev) have finished\"});this.include=ge.Array(\"--include\",[],{description:\"An array of glob pattern idents or paths; only matching workspaces will be traversed\"});this.exclude=ge.Array(\"--exclude\",[],{description:\"An array of glob pattern idents or paths; matching workspaces won't be traversed\"});this.publicOnly=ge.Boolean(\"--no-private\",{description:\"Avoid running the command on private workspaces\"});this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.dryRun=ge.Boolean(\"-n,--dry-run\",{description:\"Print the commands that would be run, without actually running them\"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"workspaces\",\"foreach\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"run a command on all workspaces\",details:\"\\n      This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\\n\\n      - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\\n\\n      - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\\n\\n      - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\\n\\n      - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\\n\\n      - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\\n\\n      - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\\n\\n      - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\\n\\n      The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\\n\\n      If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\\n    \",examples:[[\"Publish all packages\",\"yarn workspaces foreach -A --no-private npm publish --tolerate-republish\"],[\"Run the build script on all descendant packages\",\"yarn workspaces foreach -A run build\"],[\"Run the build script on current and all descendant packages in parallel, building package dependencies first\",\"yarn workspaces foreach -Apt run build\"],[\"Run the build script on several packages and all their dependencies, building dependencies first\",\"yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build\"]]})}static{this.schema=[iB(\"all\",Wf.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),bU([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new nt(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let f=Ce=>{this.dryRun&&this.context.stdout.write(`${Ce}\n`)},p=()=>{let Ce=this.from.map(g=>$1.default.matcher(g));return s.workspaces.filter(g=>{let we=q.stringifyIdent(g.anchoredLocator),Ee=g.relativeCwd;return Ce.some(fe=>fe(we)||fe(Ee))})},h=[];if(this.since?(f(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await Qa.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(f(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(f(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(f(\"Option --all is set; selecting all workspaces\"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ce of h)f(`\n- ${Ce.relativeCwd}\n  ${q.prettyLocator(r,Ce.anchoredLocator)}`);h.length>0&&f(\"\")}let E;if(this.recursive?this.since?(f(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependents()]).flat())):(f(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ce of E)f(`\n- ${Ce.relativeCwd}\n  ${q.prettyLocator(r,Ce.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(\":\")){for(let Ce of s.workspaces)if(Ce.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ce of h){if(c&&!Ce.manifest.scripts.has(c)&&!S&&!(await In.getWorkspaceAccessibleBinaries(Ce)).has(c)){f(`Excluding ${Ce.relativeCwd} because it doesn't have a \"${c}\" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ce.cwd===a.cwd)){if(this.include.length>0&&!$1.default.isMatch(q.stringifyIdent(Ce.anchoredLocator),this.include)&&!$1.default.isMatch(Ce.relativeCwd,this.include)){f(`Excluding ${Ce.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&($1.default.isMatch(q.stringifyIdent(Ce.anchoredLocator),this.exclude)||$1.default.isMatch(Ce.relativeCwd,this.exclude))){f(`Excluding ${Ce.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ce.manifest.private===!0){f(`Excluding ${Ce.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ce)}}if(this.dryRun)return 0;let P=this.verbose??(this.context.stdout.isTTY?1/0:0),I=P>0,R=P>1,N=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(As.availableParallelism()/2):1,U=N===1?!1:this.parallel,W=U?this.interlaced:!0,te=(0,zOe.default)(N),ie=new Map,Ae=new Set,ce=0,me=null,pe=!1,Be=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ce=>{let g=async(we,{commandIndex:Ee})=>{if(pe)return-1;!U&&R&&Ee>1&&Ce.reportSeparator();let fe=nqt(we,{configuration:r,label:I,commandIndex:Ee}),[se,X]=JOe(Ce,{prefix:fe,interlaced:W}),[De,Re]=JOe(Ce,{prefix:fe,interlaced:W});try{R&&Ce.reportInfo(null,`${fe?`${fe} `:\"\"}Process started`);let gt=Date.now(),j=await this.cli.run([this.commandName,...this.args],{cwd:we.cwd,stdout:se,stderr:De})||0;se.end(),De.end(),await X,await Re;let rt=Date.now();if(R){let Fe=r.get(\"enableTimers\")?`, completed in ${he.pretty(r,rt-gt,he.Type.DURATION)}`:\"\";Ce.reportInfo(null,`${fe?`${fe} `:\"\"}Process exited (exit code ${j})${Fe}`)}return j===130&&(pe=!0,me=j),j}catch(gt){throw se.end(),De.end(),await X,await Re,gt}};for(let we of C)ie.set(we.anchoredLocator.locatorHash,we);for(;ie.size>0&&!Ce.hasErrors();){let we=[];for(let[X,De]of ie){if(Ae.has(De.anchoredDescriptor.descriptorHash))continue;let Re=!0;if(this.topological||this.topologicalDev){let gt=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let j of gt.values()){let rt=s.tryWorkspaceByDescriptor(j);if(Re=rt===null||!ie.has(rt.anchoredLocator.locatorHash),!Re)break}}if(Re&&(Ae.add(De.anchoredDescriptor.descriptorHash),we.push(te(async()=>{let gt=await g(De,{commandIndex:++ce});return ie.delete(X),Ae.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:gt}})),!U))break}if(we.length===0){let X=Array.from(ie.values()).map(De=>q.prettyLocator(r,De.anchoredLocator)).join(\", \");Ce.reportError(3,`Dependency cycle detected (${X})`);return}let Ee=await Promise.all(we);Ee.forEach(({workspace:X,exitCode:De})=>{De!==0&&Ce.reportError(0,`The command failed in workspace ${q.prettyLocator(r,X.anchoredLocator)} with exit code ${De}`)});let se=Ee.map(X=>X.exitCode).find(X=>X!==0);(this.topological||this.topologicalDev)&&typeof se<\"u\"&&Ce.reportError(0,\"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph\")}});return me!==null?me:Be.exitCode()}};function JOe(t,{prefix:e,interlaced:r}){let s=t.createStreamReporter(e),a=new je.DefaultStream;a.pipe(s,{end:!1}),a.on(\"finish\",()=>{s.end()});let n=new Promise(f=>{s.on(\"finish\",()=>{f(a.active)})});if(r)return[a,n];let c=new je.BufferStream;return c.pipe(a,{end:!1}),c.on(\"finish\",()=>{a.end()}),[c,n]}function nqt(t,{configuration:e,commandIndex:r,label:s}){if(!s)return null;let n=`[${q.stringifyIdent(t.anchoredLocator)}]:`,c=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],f=c[r%c.length];return he.pretty(e,n,f)}var iqt={commands:[X1,e2]},sqt=iqt;var nC=()=>({modules:new Map([[\"@yarnpkg/cli\",iS],[\"@yarnpkg/core\",nS],[\"@yarnpkg/fslib\",q2],[\"@yarnpkg/libzip\",Sv],[\"@yarnpkg/parsers\",Z2],[\"@yarnpkg/shell\",Qv],[\"clipanion\",cB],[\"semver\",oqt],[\"typanion\",Ia],[\"@yarnpkg/plugin-essentials\",$5],[\"@yarnpkg/plugin-compat\",i9],[\"@yarnpkg/plugin-constraints\",w9],[\"@yarnpkg/plugin-dlx\",B9],[\"@yarnpkg/plugin-exec\",D9],[\"@yarnpkg/plugin-file\",P9],[\"@yarnpkg/plugin-git\",X5],[\"@yarnpkg/plugin-github\",Q9],[\"@yarnpkg/plugin-http\",T9],[\"@yarnpkg/plugin-init\",R9],[\"@yarnpkg/plugin-interactive-tools\",TY],[\"@yarnpkg/plugin-jsr\",FY],[\"@yarnpkg/plugin-link\",NY],[\"@yarnpkg/plugin-nm\",yV],[\"@yarnpkg/plugin-npm\",yz],[\"@yarnpkg/plugin-npm-cli\",bz],[\"@yarnpkg/plugin-pack\",f7],[\"@yarnpkg/plugin-patch\",Fz],[\"@yarnpkg/plugin-pnp\",oV],[\"@yarnpkg/plugin-pnpm\",Lz],[\"@yarnpkg/plugin-stage\",Gz],[\"@yarnpkg/plugin-typescript\",Wz],[\"@yarnpkg/plugin-version\",zz],[\"@yarnpkg/plugin-workspace-tools\",Zz]]),plugins:new Set([\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-jsr\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"])});function $Oe({cwd:t,pluginConfiguration:e}){let r=new wa({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:un??\"<unknown>\"});return Object.assign(r,{defaultContext:{...wa.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function aqt(t){if(je.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=\">=18.12.0\";if(Or.satisfiesWithPrereleases(r,s))return!0;let a=new nt(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return wa.defaultContext.stdout.write(t.error(a)),!1}async function eLe({selfPath:t,pluginConfiguration:e}){return await ze.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function lqt(t,e,{yarnPath:r}){if(!le.existsSync(r))return t.error(new Error(`The \"yarn-path\" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on(\"SIGINT\",()=>{});let s={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,ZOe.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],s)}catch(a){return a.status??1}return 0}function cqt(t,e){let r=null,s=e;return e.length>=2&&e[0]===\"--cwd\"?(r=ue.toPortablePath(e[1]),s=e.slice(2)):e.length>=1&&e[0].startsWith(\"--cwd=\")?(r=ue.toPortablePath(e[0].slice(6)),s=e.slice(1)):e[0]===\"add\"&&e[e.length-2]===\"--cwd\"&&(r=ue.toPortablePath(e[e.length-1]),s=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?K.resolve(r):K.cwd(),s}function uqt(t,{configuration:e}){if(!e.get(\"enableTelemetry\")||XOe.isCI||!process.stdout.isTTY)return;ze.telemetry=new eC(e,\"puba9cdc10ec5790a2cf4969dd413a47270\");let s=/^@yarnpkg\\/plugin-(.*)$/;for(let a of e.plugins.keys())tC.has(a.match(s)?.[1]??\"\")&&ze.telemetry?.reportPluginName(a);t.binaryVersion&&ze.telemetry.reportVersion(t.binaryVersion)}function tLe(t,{configuration:e}){for(let r of e.plugins.values())for(let s of r.commands||[])t.register(s)}async function fqt(t,e,{selfPath:r,pluginConfiguration:s}){if(!aqt(t))return 1;let a=await eLe({selfPath:r,pluginConfiguration:s}),n=a.get(\"yarnPath\"),c=a.get(\"ignorePath\");if(n&&!c)return lqt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=cqt(t,e);uqt(t,{configuration:a}),tLe(t,{configuration:a});let p=t.process(f,t.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(\" \")),await t.run(p,t.defaultContext)}async function cwe({cwd:t=K.cwd(),pluginConfiguration:e=nC()}={}){let r=$Oe({cwd:t,pluginConfiguration:e}),s=await eLe({pluginConfiguration:e,selfPath:null});return tLe(r,{configuration:s}),r}async function zR(t,{cwd:e=K.cwd(),selfPath:r,pluginConfiguration:s}){let a=$Oe({cwd:e,pluginConfiguration:s});function n(){wa.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop.\nPlease report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once(\"beforeExit\",n);try{process.exitCode=42,process.exitCode=await fqt(a,t,{selfPath:r,pluginConfiguration:s})}catch(c){wa.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off(\"beforeExit\",n),await le.rmtempPromise()}}zR(process.argv.slice(2),{cwd:K.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:nC()});})();\n/**\n  @license\n  Copyright (c) 2015, Rebecca Turner\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted, provided that the above\n  copyright notice and this permission notice appear in all copies.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n */\n/**\n  @license\n  Copyright Node.js contributors. All rights reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to\n  deal in the Software without restriction, including without limitation the\n  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n  sell copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n  IN THE SOFTWARE.\n*/\n/**\n  @license\n  The MIT License (MIT)\n\n  Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n/**\n  @license\n  Copyright Joyent, Inc. and other Node contributors.\n\n  Permission is hereby granted, free of charge, to any person obtaining a\n  copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to permit\n  persons to whom the Software is furnished to do so, subject to the\n  following conditions:\n\n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/*! Bundled license information:\n\nis-number/index.js:\n  (*!\n   * is-number <https://github.com/jonschlinkert/is-number>\n   *\n   * Copyright (c) 2014-present, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nto-regex-range/index.js:\n  (*!\n   * to-regex-range <https://github.com/micromatch/to-regex-range>\n   *\n   * Copyright (c) 2015-present, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nfill-range/index.js:\n  (*!\n   * fill-range <https://github.com/jonschlinkert/fill-range>\n   *\n   * Copyright (c) 2014-present, Jon Schlinkert.\n   * Licensed under the MIT License.\n   *)\n\nis-extglob/index.js:\n  (*!\n   * is-extglob <https://github.com/jonschlinkert/is-extglob>\n   *\n   * Copyright (c) 2014-2016, Jon Schlinkert.\n   * Licensed under the MIT License.\n   *)\n\nis-glob/index.js:\n  (*!\n   * is-glob <https://github.com/jonschlinkert/is-glob>\n   *\n   * Copyright (c) 2014-2017, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nqueue-microtask/index.js:\n  (*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\nrun-parallel/index.js:\n  (*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\ngit-url-parse/lib/index.js:\n  (*!\n   * buildToken\n   * Builds OAuth token prefix (helper function)\n   *\n   * @name buildToken\n   * @function\n   * @param {GitUrl} obj The parsed Git url object.\n   * @return {String} token prefix\n   *)\n\nobject-assign/index.js:\n  (*\n  object-assign\n  (c) Sindre Sorhus\n  @license MIT\n  *)\n\nreact/cjs/react.production.min.js:\n  (** @license React v17.0.2\n   * react.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nscheduler/cjs/scheduler.production.min.js:\n  (** @license React v0.20.2\n   * scheduler.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nreact-reconciler/cjs/react-reconciler.production.min.js:\n  (** @license React v0.26.2\n   * react-reconciler.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nis-windows/index.js:\n  (*!\n   * is-windows <https://github.com/jonschlinkert/is-windows>\n   *\n   * Copyright © 2015-2018, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n*/\n"
  },
  {
    "path": ".yarnrc.yml",
    "content": "yarnPath: .yarn/releases/yarn-4.9.1.cjs\nnodeLinker: node-modules\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participation in our\ncommunity a harassment-free experience for everyone, regardless of age, body\nsize, visible or invisible disability, ethnicity, sex characteristics, gender\nidentity and expression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity\nand orientation.\n\nWe pledge to act and interact in ways that contribute to an open, welcoming,\ndiverse, inclusive, and healthy community.\n\n## Our Standards\n\nExamples of behavior that contributes to a positive environment for our\ncommunity include:\n\n- Demonstrating empathy and kindness toward other people\n- Being respectful of differing opinions, viewpoints, and experiences\n- Giving and gracefully accepting constructive feedback\n- Accepting responsibility and apologizing to those affected by our mistakes,\n  and learning from the experience\n- Focusing on what is best not just for us as individuals, but for the\n  overall community\n\nExamples of unacceptable behavior include:\n\n- The use of sexualized language or imagery, and sexual attention or\n  advances of any kind\n- Trolling, insulting or derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or email\n  address, without their explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Enforcement Responsibilities\n\nCommunity leaders are responsible for clarifying and enforcing our standards of\nacceptable behavior and will take appropriate and fair corrective action in\nresponse to any behavior that they deem inappropriate, threatening, offensive,\nor harmful.\n\nCommunity leaders have the right and responsibility to remove, edit, or reject\ncomments, commits, code, wiki edits, issues, and other contributions that are\nnot aligned to this Code of Conduct, and will communicate reasons for moderation\ndecisions when appropriate.\n\n## Scope\n\nThis Code of Conduct applies within all community spaces, and also applies when\nan individual is officially representing the community in public spaces.\nExamples of representing our community include using an official e-mail address,\nposting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported to the community leaders responsible for enforcement at\nGithub Issues or Discussions.\nAll complaints will be reviewed and investigated promptly and fairly.\n\nAll community leaders are obligated to respect the privacy and security of the\nreporter of any incident.\n\n## Enforcement Guidelines\n\nCommunity leaders will follow these Community Impact Guidelines in determining\nthe consequences for any action they deem in violation of this Code of Conduct:\n\n### 1. Correction\n\n**Community Impact**: Use of inappropriate language or other behavior deemed\nunprofessional or unwelcome in the community.\n\n**Consequence**: A private, written warning from community leaders, providing\nclarity around the nature of the violation and an explanation of why the\nbehavior was inappropriate. A public apology may be requested.\n\n### 2. Warning\n\n**Community Impact**: A violation through a single incident or series\nof actions.\n\n**Consequence**: A warning with consequences for continued behavior. No\ninteraction with the people involved, including unsolicited interaction with\nthose enforcing the Code of Conduct, for a specified period of time. This\nincludes avoiding interactions in community spaces as well as external channels\nlike social media. Violating these terms may lead to a temporary or\npermanent ban.\n\n### 3. Temporary Ban\n\n**Community Impact**: A serious violation of community standards, including\nsustained inappropriate behavior.\n\n**Consequence**: A temporary ban from any sort of interaction or public\ncommunication with the community for a specified period of time. No public or\nprivate interaction with the people involved, including unsolicited interaction\nwith those enforcing the Code of Conduct, is allowed during this period.\nViolating these terms may lead to a permanent ban.\n\n### 4. Permanent Ban\n\n**Community Impact**: Demonstrating a pattern of violation of community\nstandards, including sustained inappropriate behavior, harassment of an\nindividual, or aggression toward or disparagement of classes of individuals.\n\n**Consequence**: A permanent ban from any sort of public interaction within\nthe community.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage],\nversion 2.0, available at\nhttps://www.contributor-covenant.org/version/2/0/code_of_conduct.html.\n\nCommunity Impact Guidelines were inspired by [Mozilla's code of conduct\nenforcement ladder](https://github.com/mozilla/diversity).\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see the FAQ at\nhttps://www.contributor-covenant.org/faq. Translations are available at\nhttps://www.contributor-covenant.org/translations.\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nSee https://html-eslint.org/docs/developer-guide for our contributing guidelines.\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 YeonJuan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<h1 align=\"center\"> HTML ESLint </h1>\n\n<p align=\"center\">\n <a href=\"https://html-eslint.org\">\n    <img src=\"packages/website/src/assets/logo_180x180.png\" alt=\"Logo\" width=\"90\" height=\"90\">\n  </a>\n   <p align=\"center\">\n  Monorepo for ESLint plugin which supports linting HTML(HyperText Markup Language) with ESLint, including React-specific HTML linting.\n  <br/>\n  <br/>\n  <a href=\"https://html-eslint.org/playground\">View Demo</a>\n  ·\n  <a href=\"https://html-eslint.org/docs/getting-started\">Getting Started</a>\n  ·\n  <a href=\"https://html-eslint.org/docs/rules\">All Rules</a>\n  </p>\n  \n</p>\n\n<p align=\"center\">\n  <a href=\"https://codecov.io/gh/yeonjuan/html-eslint\">\n    <img src=\"https://codecov.io/gh/yeonjuan/html-eslint/branch/main/graph/badge.svg?token=0BVJ8GGDZ6\"/>\n  </a>\n  <img src=\"https://github.com/yeonjuan/html-eslint/actions/workflows/main.yml/badge.svg?branch=main\" alt=\"CI Badge\" />\n  <img src=\"https://img.shields.io/npm/v/@html-eslint/eslint-plugin?color=success\" alt=\"Version\" />\n  <img src=\"https://img.shields.io/npm/dw/@html-eslint/eslint-plugin\" alt=\"Downloads\" />\n  <img src=\"https://img.shields.io/npm/l/@html-eslint/eslint-plugin?color=success\" alt=\"License\" />\n</p>\n\n<p align=\"center\">\nIf you’d like to support html-eslint, please consider starring it on GitHub or making a donation! <br>\n<a href=\"https://www.buymeacoffee.com/yeonjuan93p\" target=\"_blank\"><img src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 40px !important;width: 144px !important;\" ></a>\n</p>\n\n## Table of Contents\n\n### HTML\n\n1. [Getting Started](https://html-eslint.org/docs/getting-started)\n   - [Installation](https://html-eslint.org/docs/getting-started#installation)\n   - [Configuration](https://html-eslint.org/docs/getting-started#configuration)\n   - [Editor Configuration](https://html-eslint.org/docs/getting-started#editor-configuration)\n   - [Integrating Template Engine](https://html-eslint.org/docs/integrating-template-engine)\n1. [Rules](https://html-eslint.org/docs/rules)\n1. [Playground](https://html-eslint.org/playground)\n1. [Developer Guide](https://html-eslint.org/developer-guide.md)\n1. [License](#License)\n\n### React\n\n1. [Getting Started](https://html-eslint.org/docs/react/getting-started)\n1. [Rules](https://html-eslint.org/docs/react/rules)\n1. [License](#License)\n\n## Lint JavaScript inside HTML\n\nThis ESLint plugin supports linting HTML syntax and does not provide JavaScript syntax linting. To lint JavaScript in HTML, such as inline scripts, you can use [eslint-plugin-html](https://github.com/BenoitZugmeyer/eslint-plugin-html).\n\n## License\n\nDistributed under the MIT License. See [LICENSE](./LICENSE) for more information.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Version\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 0.x     | :white_check_mark: |\n\n## Reporting a Vulnerability\n\nTo report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.\n"
  },
  {
    "path": "docs/angular-template/getting-started.md",
    "content": "---\ntitle: angular-template/Getting Started\ndescription: Learn how to install and configure HTML ESLint Angular Template plugin to validate HTML elements and attributes in Angular templates.\n---\n\n# Getting Started\n\n`@html-eslint/eslint-plugin-angular-template` is an ESLint plugin that validates HTML elements and attributes directly in Angular template files (`.html`). It extends the core `@html-eslint` functionality to work seamlessly with Angular templates parsed by `@angular-eslint/template-parser`.\n\n## Contents\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n\n## Installation\n\n- npm\n\n```console,Terminal\nnpm install --save-dev eslint @html-eslint/eslint-plugin-angular-template @angular-eslint/template-parser\n```\n\n- yarn\n\n```console,Terminal\nyarn add -D eslint @html-eslint/eslint-plugin-angular-template @angular-eslint/template-parser\n```\n\n## Configuration\n\nUpdate your ESLint configuration file:\n\n### Manual Configuration\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/use-baseline\": \"warn\",\n      \"@html-eslint/angular-template/no-duplicate-class\": \"error\",\n    },\n  },\n];\n```\n\n### Using Preset Configurations\n\nThe plugin provides two preset configurations:\n\n- `recommended` - Enables all available rules with recommended severity\n- `all` - Enables all available rules with error severity\n\n#### Using the Recommended Configuration\n\n```js\n// eslint.config.js\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    languageOptions: {\n      parser: templateParser,\n    },\n    rules: angularTemplate.configs.recommended.rules,\n  },\n];\n```\n\n#### Using the All Configuration\n\n```js\n// eslint.config.js\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    languageOptions: {\n      parser: templateParser,\n    },\n    rules: angularTemplate.configs.all.rules,\n  },\n];\n```\n"
  },
  {
    "path": "docs/angular-template/rules/class-spacing.md",
    "content": "---\ntitle: angular-template/class-spacing\ndescription: Disallow extra spacing in class attribute values in Angular templates.\n---\n\n# class-spacing\n\nThis rule disallows extra whitespace in `class` attribute values in Angular template files.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/class-spacing\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule enforces that static `class` attribute values have no leading spaces, no trailing spaces, and no consecutive spaces between class names.\n\n**Note**: Dynamic class bindings are ignored:\n\n- `[class]=\"expr\"` — property binding, value is an expression\n- `[class.active]=\"isActive\"` — class binding, value is an expression\n\nThis rule is auto-fixable using the `--fix` option.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- Leading space -->\n<div class=\" foo\"></div>\n\n<!-- Trailing space -->\n<div class=\"foo \"></div>\n\n<!-- Extra space between class names -->\n<div class=\"foo  bar\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Properly spaced class names -->\n<div class=\"foo\"></div>\n<div class=\"foo bar\"></div>\n<span class=\"foo bar baz\"></span>\n\n<!-- Dynamic binding — skipped -->\n<div [class]=\"classExpr\"></div>\n<div [class.active]=\"isActive\"></div>\n\n<!-- Angular control flow with valid elements -->\n@if (show) {\n<div class=\"foo bar\"></div>\n} @for (item of items; track item.id) {\n<li class=\"item item2\"></li>\n}\n```\n\n## When Not To Use It\n\nIf you don't care about extra whitespace in class attribute values, you can disable this rule.\n\n## Further Reading\n\n- [Angular Template Syntax](https://angular.dev/guide/templates)\n- [Angular Class Binding](https://angular.dev/guide/templates/class-binding)\n"
  },
  {
    "path": "docs/angular-template/rules/no-duplicate-class.md",
    "content": "---\ntitle: angular-template/no-duplicate-class\ndescription: Disallow duplicate class names in class attributes in Angular templates.\n---\n\n# no-duplicate-class\n\nThis rule disallows duplicate class names in `class` attributes in Angular template files.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-duplicate-class\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule enforces unique class names in static `class` attribute values.\n\n**Note**: Dynamic class bindings are ignored:\n\n- `[class]=\"expr\"` — property binding, value is an expression\n- `[class.active]=\"isActive\"` — class binding, value is an expression\n\nThis rule is auto-fixable using the `--fix` option.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- Duplicate class names -->\n<div class=\"foo foo\"></div>\n<span class=\"foo bar foo\"></span>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Unique class names -->\n<div class=\"foo bar\"></div>\n<span class=\"foo bar baz\"></span>\n\n<!-- Dynamic binding — skipped -->\n<div [class]=\"classExpr\"></div>\n<div [class.active]=\"isActive\"></div>\n```\n\n## When Not To Use It\n\nIf you don't care about duplicate class names in Angular templates, you can disable this rule.\n\n## Further Reading\n\n- [Angular Template Syntax](https://angular.dev/guide/templates)\n- [Angular Class Binding](https://angular.dev/guide/templates/class-binding)\n"
  },
  {
    "path": "docs/angular-template/rules/no-ineffective-attrs.md",
    "content": "---\ntitle: angular-template/no-ineffective-attrs\ndescription: Disallow HTML attributes that have no effect in their context in Angular templates.\n---\n\n# no-ineffective-attrs\n\nThis rule disallows HTML attributes that have no effect in their context in Angular template files.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-ineffective-attrs\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows HTML attributes that have no effect in their context. Such attributes may indicate errors or unnecessary code that should be removed.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<input>`, `<script>`). Custom elements with hyphens (e.g., `<my-input>`) are ignored.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- multiple has no effect on text inputs -->\n<input type=\"text\" multiple />\n\n<!-- multiple has no effect on checkbox inputs -->\n<input type=\"checkbox\" multiple />\n\n<!-- accept only works with file inputs -->\n<input type=\"text\" accept=\".jpg,.png\" />\n\n<!-- readonly has no effect on checkbox inputs -->\n<input type=\"checkbox\" readonly />\n\n<!-- readonly has no effect on file inputs -->\n<input type=\"file\" readonly />\n\n<!-- min/max/step only work with numeric, date, and time inputs -->\n<input type=\"text\" min=\"0\" max=\"100\" />\n<input type=\"password\" step=\"5\" />\n\n<!-- pattern only works with text-based inputs -->\n<input type=\"checkbox\" pattern=\"[0-9]+\" />\n\n<!-- maxlength/minlength only work with text-based inputs -->\n<input type=\"number\" maxlength=\"10\" />\n<input type=\"radio\" minlength=\"5\" />\n\n<!-- placeholder has no effect on these input types -->\n<input type=\"checkbox\" placeholder=\"Enter value\" />\n<input type=\"radio\" placeholder=\"Select\" />\n\n<!-- size only works with text-based inputs -->\n<input type=\"checkbox\" size=\"20\" />\n\n<!-- list has no effect on these input types -->\n<input type=\"checkbox\" list=\"suggestions\" />\n<input type=\"radio\" list=\"options\" />\n\n<!-- defer has no effect on inline scripts -->\n<script defer>\n  console.log(\"hello\");\n</script>\n\n<!-- async has no effect on inline scripts -->\n<script async>\n  console.log(\"hello\");\n</script>\n\n<!-- download needs href to work -->\n<a download=\"file.pdf\">Download</a>\n\n<!-- target needs href to work -->\n<a target=\"_blank\">Open</a>\n\n<!-- ping needs href to work -->\n<a ping=\"/analytics\">Link</a>\n\n<!-- controlslist needs controls to work -->\n<audio controlslist=\"nodownload\"></audio>\n<video controlslist=\"nofullscreen\"></video>\n\n<!-- enctype only has effect when method is \"post\" -->\n<form method=\"get\" enctype=\"multipart/form-data\"></form>\n\n<!-- form* attributes only work with type=\"submit\" -->\n<button type=\"button\" formaction=\"/submit\">Submit</button>\n<button type=\"reset\" formmethod=\"post\">Reset</button>\n\n<!-- usemap and ismap cannot be used together -->\n<img src=\"map.jpg\" usemap=\"#map\" ismap />\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- multiple works with email and file inputs -->\n<input type=\"email\" multiple />\n<input type=\"file\" multiple />\n<select multiple></select>\n\n<!-- accept works with file inputs -->\n<input type=\"file\" accept=\".jpg,.png\" />\n\n<!-- readonly works with text and password inputs -->\n<input type=\"text\" readonly />\n<input type=\"password\" readonly />\n\n<!-- min/max/step work with numeric, date, and time inputs -->\n<input type=\"number\" min=\"0\" max=\"100\" />\n<input type=\"range\" min=\"0\" max=\"10\" step=\"2\" />\n<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />\n\n<!-- pattern works with text-based inputs -->\n<input type=\"text\" pattern=\"[0-9]+\" />\n<input type=\"email\" pattern=\".+@example\\.com\" />\n\n<!-- maxlength/minlength work with text-based inputs -->\n<input type=\"text\" maxlength=\"10\" minlength=\"3\" />\n<input type=\"password\" maxlength=\"20\" />\n\n<!-- placeholder works with text and number inputs -->\n<input type=\"text\" placeholder=\"Enter name\" />\n<input type=\"number\" placeholder=\"Enter age\" />\n\n<!-- size works with text-based inputs -->\n<input type=\"text\" size=\"20\" />\n\n<!-- list works with appropriate input types -->\n<input type=\"text\" list=\"suggestions\" />\n<input type=\"email\" list=\"emails\" />\n\n<!-- defer and async work with external scripts -->\n<script defer src=\"script.js\"></script>\n<script async src=\"script.js\"></script>\n\n<!-- download works when href is present -->\n<a href=\"file.pdf\" download=\"file.pdf\">Download</a>\n\n<!-- target works when href is present -->\n<a href=\"https://example.com\" target=\"_blank\">Open</a>\n\n<!-- ping works when href is present -->\n<a href=\"/page\" ping=\"/analytics\">Link</a>\n\n<!-- controlslist works when controls is present -->\n<audio controls controlslist=\"nodownload\"></audio>\n<video controls controlslist=\"nofullscreen\"></video>\n\n<!-- enctype works when method is \"post\" -->\n<form method=\"post\" enctype=\"multipart/form-data\"></form>\n\n<!-- form* attributes work with type=\"submit\" -->\n<button type=\"submit\" formaction=\"/submit\">Submit</button>\n<button type=\"submit\" formmethod=\"post\">Submit</button>\n\n<!-- usemap without ismap -->\n<img src=\"map.jpg\" usemap=\"#map\" />\n\n<!-- Angular property binding is skipped (dynamic values) -->\n<input [type]=\"inputType\" multiple />\n\n<!-- Custom elements are ignored -->\n<custom-input type=\"text\" multiple />\n<my-button type=\"button\" formaction=\"/submit\">Click</my-button>\n```\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n- [Angular Template Syntax](https://angular.dev/guide/templates)\n"
  },
  {
    "path": "docs/angular-template/rules/no-invalid-attr-value.md",
    "content": "---\ntitle: angular-template/no-invalid-attr-value\ndescription: Disallow invalid attribute values according to HTML standards and validate against the HTML specification.\n---\n\n# no-invalid-attr-value\n\nThis rule disallows invalid attribute values according to HTML standards.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-invalid-attr-value\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule validates attribute values against [HTML standards](https://html.spec.whatwg.org) and reports errors when invalid values are used.\n\n**Note**: Custom elements with hyphens (e.g., `<my-input>`) are ignored. Angular property bindings (e.g., `[type]=\"value\"`) are skipped as they contain dynamic expressions.\n\n### Options\n\nThis rule accepts an options object with the following property:\n\n- `allow`: An array of objects specifying tag/attribute combinations to allow. Each object can have:\n  - `tag` (required): The HTML tag name to match (case-insensitive)\n  - `attr` (required): The attribute name to match (case-insensitive)\n  - `valuePattern` (optional): A regular expression pattern to match specific values. If omitted, all values for the specified tag/attribute combination are allowed.\n\n#### Allowing all values for a specific tag and attribute\n\n```js\n// eslint.config.js (flat config)\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-invalid-attr-value\": [\n        \"error\",\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\" },\n            { tag: \"button\", attr: \"type\" },\n          ],\n        },\n      ],\n    },\n  },\n];\n```\n\nWith this configuration, any value for `type` attribute on `input` and `button` elements will be allowed.\n\n#### Allowing specific values using regex patterns\n\n```js\n// eslint.config.js (flat config)\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-invalid-attr-value\": [\n        \"error\",\n        {\n          allow: [\n            // Allow exact match\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n            // Allow multiple values\n            { tag: \"button\", attr: \"type\", valuePattern: \"^(custom|special)$\" },\n            // Allow pattern matching\n            { tag: \"form\", attr: \"method\", valuePattern: \"^custom-.*$\" },\n          ],\n        },\n      ],\n    },\n  },\n];\n```\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- Invalid input type -->\n<input type=\"invalid-type\" />\n\n<!-- Invalid crossorigin value -->\n<img src=\"image.jpg\" crossorigin=\"invalid\" />\n\n<!-- Invalid autocomplete value -->\n<input type=\"text\" autocomplete=\"invalid-value\" />\n\n<!-- Invalid button type -->\n<button type=\"invalid\">Click</button>\n\n<!-- Invalid form method -->\n<form method=\"invalid\"></form>\n\n<!-- Invalid scope -->\n<th scope=\"invalid\">Header</th>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Valid input types -->\n<input type=\"text\" />\n<input type=\"email\" />\n<input type=\"number\" />\n\n<!-- Valid crossorigin values -->\n<img src=\"image.jpg\" crossorigin=\"anonymous\" />\n<img src=\"image.jpg\" crossorigin=\"use-credentials\" />\n\n<!-- Valid autocomplete values -->\n<input type=\"text\" autocomplete=\"name\" />\n<input type=\"email\" autocomplete=\"email\" />\n\n<!-- Valid button types -->\n<button type=\"button\">Click</button>\n<button type=\"submit\">Submit</button>\n\n<!-- Valid form methods -->\n<form method=\"post\"></form>\n<form method=\"get\"></form>\n\n<!-- Valid scope values -->\n<th scope=\"row\">Header</th>\n<th scope=\"col\">Header</th>\n\n<!-- Angular property bindings are skipped -->\n<input [type]=\"inputType\" />\n<button [type]=\"buttonType\">Click</button>\n\n<!-- Custom elements are ignored -->\n<custom-input type=\"invalid\" />\n```\n\n### With `allow` option\n\nExamples of **correct** code for this rule with the `allow` option:\n\n```js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\" }\n  ]\n}\n```\n\n```html\n<!-- Any value is allowed for input type when allowed -->\n<input type=\"custom-type\" />\n<input type=\"my-special-type\" />\n```\n\n```js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```html\n<!-- Only values matching the pattern are allowed -->\n<input type=\"custom-foo\" />\n<input type=\"custom-bar\" />\n```\n\nExamples of **incorrect** code for this rule with the `allow` option:\n\n```js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```html\n<!-- Does not match the pattern -->\n<input type=\"invalid-type\" />\n<input type=\"special-type\" />\n```\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n- [Angular Template Syntax](https://angular.dev/guide/templates)\n"
  },
  {
    "path": "docs/angular-template/rules/no-obsolete-attrs.md",
    "content": "---\ntitle: angular-template/no-obsolete-attrs\ndescription: Disallow obsolete HTML attributes in Angular templates that are deprecated in HTML5.\n---\n\n# no-obsolete-attrs\n\nThis rule disallows the use of obsolete attributes in HTML5 in Angular template files.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-obsolete-attrs\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows using obsolete attributes on HTML elements and provides suggestions for modern alternatives.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<table>`, `<div>`). Custom elements with hyphens (e.g., `<my-table>`) are ignored.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- Obsolete presentational attributes -->\n<table align=\"center\" bgcolor=\"#ffffff\" border=\"1\"></table>\n<div align=\"left\">Content</div>\n<img src=\"image.jpg\" border=\"0\" />\n\n<!-- Obsolete name attribute on certain elements -->\n<a name=\"anchor\">Link</a>\n<img name=\"myimage\" src=\"image.jpg\" />\n\n<!-- Obsolete charset attribute on non-script elements -->\n<a charset=\"UTF-8\" href=\"page.html\">Link</a>\n\n<!-- Obsolete manifest attribute -->\n<html manifest=\"app.appcache\"></html>\n\n<!-- Other obsolete attributes -->\n<iframe frameborder=\"0\" scrolling=\"no\"></iframe>\n<body bgcolor=\"#ffffff\" text=\"#000000\"></body>\n<td scope=\"row\">Cell</td>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Use CSS instead of presentational attributes -->\n<table\n  style=\"text-align: center; background-color: #ffffff; border: 1px solid black;\"\n></table>\n<div style=\"text-align: left;\">Content</div>\n<img src=\"image.jpg\" style=\"border: 0;\" />\n\n<!-- Use id instead of name on certain elements -->\n<a id=\"anchor\">Link</a>\n<img id=\"myimage\" src=\"image.jpg\" />\n\n<!-- Omit charset on non-script elements -->\n<a href=\"page.html\">Link</a>\n\n<!-- Use service workers instead of manifest -->\n<html></html>\n\n<!-- Use CSS for iframe styling -->\n<iframe style=\"border: 0;\"></iframe>\n<body style=\"background-color: #ffffff; color: #000000;\"></body>\n\n<!-- Use th with scope instead of td -->\n<th scope=\"row\">Header</th>\n\n<!-- Custom elements are ignored -->\n<custom-table align=\"center\">Content</custom-table>\n\n<!-- Angular property bindings are skipped -->\n<table [border]=\"borderWidth\"></table>\n```\n\n## Further Reading\n\n- [HTML Spec: Non-conforming features](https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features)\n- [Angular Template Syntax](https://angular.dev/guide/templates)\n"
  },
  {
    "path": "docs/angular-template/rules/no-obsolete-tags.md",
    "content": "---\ntitle: angular-template/no-obsolete-tags\ndescription: Disallow use of obsolete HTML elements in Angular templates.\n---\n\n# no-obsolete-tags\n\nThis rule disallows the use of obsolete HTML elements in Angular template files.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-obsolete-tags\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule enforces the avoidance of obsolete HTML elements as defined by the [HTML Living Standard](https://html.spec.whatwg.org/#non-conforming-features).\n\nObsolete elements include:\n`applet`, `acronym`, `bgsound`, `dir`, `frame`, `frameset`, `noframes`, `isindex`, `keygen`, `listing`, `menuitem`, `nextid`, `noembed`, `plaintext`, `rb`, `rtc`, `strike`, `xmp`, `basefont`, `big`, `blink`, `center`, `font`, `marquee`, `multicol`, `nobr`, `spacer`, `tt`\n\n**Note**: Custom elements containing a hyphen (e.g., `<my-font>`, `<custom-center>`) are ignored.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- Obsolete tags -->\n<center>Centered content</center>\n<font color=\"red\">Red text</font>\n<marquee>Scrolling text</marquee>\n<blink>Blinking text</blink>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Modern alternatives -->\n<div style=\"text-align: center\">Centered content</div>\n<span style=\"color: red\">Red text</span>\n<div class=\"scrolling-text\">Scrolling text</div>\n\n<!-- Custom elements are ignored -->\n<my-font>Text</my-font>\n<custom-center>Content</custom-center>\n```\n\n## When Not To Use It\n\nIf you need to support legacy HTML for compatibility reasons, you may want to disable this rule.\n\n## Further Reading\n\n- [HTML Living Standard - Non-conforming features](https://html.spec.whatwg.org/#non-conforming-features)\n- [MDN - Deprecated and obsolete features](https://developer.mozilla.org/en-US/docs/Web/HTML/Element#deprecated_and_obsolete_elements)\n"
  },
  {
    "path": "docs/angular-template/rules/use-baseline.md",
    "content": "---\ntitle: angular-template/use-baseline\ndescription: Enforce baseline browser-compatible features in Angular template files.\n---\n\n# use-baseline\n\nThis rule enforces the use of baseline features in Angular templates.\n\n## What is Baseline?\n\n[Baseline](https://web-platform-dx.github.io/web-features/) is an effort by the [W3C WebDX Community Group](https://www.w3.org/community/webdx/) that provides clear information about which web platform features work across [core browser set](https://web-platform-dx.github.io/web-features/#how-do-features-become-part-of-baseline%3F) today.\n\nBaseline features are available across popular browsers. Baseline has two stages:\n\n- **Newly available**: The feature works across the latest devices and browser versions. The feature might not work in older devices or browsers.\n- **Widely available**: The feature is well established and works across many devices and browser versions. It's been available across browsers for at least 2½ years (30 months).\n\nPrior to being newly available, a feature has **Limited availability** when it's not yet available across all browsers.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/use-baseline\": \"warn\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule warns when it finds any of the following in Angular template elements:\n\n- An element that isn't widely available.\n- An attribute that isn't widely available.\n- An attribute value that isn't widely available.\n\nThe data is provided via the [web-features](https://www.npmjs.com/package/web-features) package.\n\n**Note**: Custom elements containing a hyphen (e.g., `<my-component>`, `<app-header>`) are ignored. Property bindings (`[property]=\"expr\"`) and attribute bindings (`[attr.key]=\"expr\"`) are treated as expressions and their values are not checked.\n\n### Options\n\nThis rule has an object option:\n\n```ts\n\"@html-eslint/angular-template/use-baseline\": [\"warn\", {\n  \"available\": \"newly\" | \"widely\" | number; // default: \"widely\"\n}]\n```\n\n#### available: \"widely\"\n\nIf `\"widely\"` is used as an option, this rule allows features that are at the Baseline widely available stage: features that have been available across browsers for at least 30 months.\n\n#### available: \"newly\"\n\nIf `\"newly\"` is used as an option, this rule allows features that are at the Baseline newly available stage: features that have been supported on all core browsers for less than 30 months.\n\n#### available: number\n\nIf an integer `number` is used as an option, this rule allows features that became Baseline newly available that year, or earlier. (minimum: 2000)\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- <slot> is not widely available (added: 2019) -->\n<slot></slot>\n\n<!-- 'slot' attribute is not widely available -->\n<span slot=\"header\">Header</span>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Standard HTML elements -->\n<div class=\"container\"></div>\n<input type=\"text\" />\n<button type=\"button\">Click</button>\n\n<!-- Property binding — value is expression, skipped -->\n<input [disabled]=\"isDisabled\" />\n\n<!-- Attribute binding — value is expression, skipped -->\n<div [attr.aria-label]=\"label\"></div>\n\n<!-- Custom elements are ignored -->\n<my-component [title]=\"title\"></my-component>\n```\n\n## Further Reading\n\n- [W3C WebDX Community Group - Baseline](https://web-platform-dx.github.io/web-features/)\n- [web.dev - Baseline](https://web.dev/baseline)\n- [eslint-plugin-baseline-js](https://github.com/3ru/eslint-plugin-baseline-js)\n"
  },
  {
    "path": "docs/angular-template/rules.md",
    "content": "---\ntitle: angular-template/Rules\ndescription: Available rules for HTML ESLint Angular Template plugin including baseline browser compatibility and duplicate class detection in Angular templates.\n---\n\n# Rules\n\n## Available Rules\n\n| Rule                                                      | Description                                                   | Fixable |\n| --------------------------------------------------------- | ------------------------------------------------------------- | ------- |\n| [class-spacing](./rules/class-spacing.md)                 | Disallow extra spacing in class attribute values              | 🔧      |\n| [no-duplicate-class](./rules/no-duplicate-class.md)       | Disallow duplicate class names in class attributes            | 🔧      |\n| [no-ineffective-attrs](./rules/no-ineffective-attrs.md)   | Disallow HTML attributes that have no effect in their context |         |\n| [no-invalid-attr-value](./rules/no-invalid-attr-value.md) | Disallow invalid attribute values according to HTML standards |         |\n| [no-obsolete-attrs](./rules/no-obsolete-attrs.md)         | Disallow use of obsolete attributes in HTML5                  |         |\n| [no-obsolete-tags](./rules/no-obsolete-tags.md)           | Disallow use of obsolete elements in HTML5                    |         |\n| [use-baseline](./rules/use-baseline.md)                   | Enforce the use of baseline features                          |         |\n"
  },
  {
    "path": "docs/cli.md",
    "content": "---\nid: cli\ntitle: CLI\ndescription: Command-line interface for HTML ESLint to lint HTML files directly from URLs with configuration options.\n---\n\n# CLI\n\n## Installation\n\n```\n$ npm install -g @html-eslint/cli\n```\n\n## Configuration\n\n- `.htmleslintrc.js`\n\n```javascript\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-lang\": \"error\",\n    \"@html-eslint/require-img-alt\": \"error\",\n    \"@html-eslint/require-doctype\": \"error\",\n    \"@html-eslint/require-title\": \"error\",\n    \"@html-eslint/no-multiple-h1\": \"error\",\n    // ...\n  },\n};\n```\n\n## Run\n\n```\n$ html-eslint https://www.example.com\n```\n\n## Options\n\n- `--config` (`-c`)\n\n  Specify configuration file to use.\n\n  ```\n  $ html-eslint https://www.example.com --config path/of/configuration\n  # or\n  $ html-eslint https://www.example.com -c path/of/configuration\n  ```\n\n- `--check-style`\n\n  Enable `Style` rules in configuration. By default, all rules with the category `Style` are ignored.\n\n  ```\n  $ html-eslint https://www.example.com --check-style\n  ```\n"
  },
  {
    "path": "docs/developer-guide.md",
    "content": "---\ntitle: Developer Guide\ndescription: Comprehensive guide for contributing to HTML ESLint including how to propose new rules, modify existing rules, and test implementations.\n---\n\n# Developer Guide\n\nThank you for taking the time to contribute to our project. Your efforts are greatly appreciated and play a vital role in improving and growing our work!\n\n## Proposing a New Rule\n\nTo add a new rule, please follow these steps:\n\n- [Create a new issue on GitHub](https://github.com/yeonjuan/html-eslint/issues/new?template=Blank+issue) to discuss the new rule being added.\n- Generate the scaffolding for the new rule with the `yarn run new-rule <rule-name>` command. This command will generate the documentation for the rule, the implementation code, and the test code.\n- Sync the documentation by running: `yarn run build`\n- The ASTs used by html-eslint are generated by [es-html-parser](https://github.com/yeonjuan/es-html-parser). You can debug the ASTs [here](https://yeonjuan.github.io/es-html-parser/).\n- Once the implementation of the rule is complete, create a pull request to review it.\n\n## Proposing a Rule Change\n\nTo modify an existing rule, please follow these steps:\n\n- [Create a new issue on GitHub](https://github.com/yeonjuan/html-eslint/issues/new?template=Blank+issue) to discuss the changes to the rule.\n- Make changes to the rule in the following file: `packages/eslint-plugin/lib/rules/<rule-name>.js`\n- Add test cases for the rule change in the following file: `packages/eslint-plugin/tests/rules/<rule-name>.test.js`\n- Run the tests using the command: `yarn test`\n- Once the changes are complete, create a pull request to review them.\n"
  },
  {
    "path": "docs/disabling-rules.md",
    "content": "---\ntitle: Disabling Rules\ndescription: Learn how to disable HTML ESLint rules using inline HTML comments for entire files, specific lines, or individual rules.\n---\n\n# Disabling Rules\n\n## Disable rules with inline comments\n\nTo disable a rule in a file, use HTML comments (`<!-- ... -->`) in the following format:\n\nDisable all rules in an entire file:\n\n```html\n<!-- eslint-disable -->\n<div foo=\"foo\" foo=\"foo\"></div>\n```\n\nDisable or enable specific rules in an entire file:\n\n```html\n<!-- eslint-disable @html-eslint/no-duplicate-attrs -->\n<div foo=\"foo\" foo=\"foo\"></div>\n\n<!-- eslint-enable @html-eslint/no-duplicate-attrs  -->\n<div foo=\"foo\" foo=\"foo\"></div>\n```\n\nDisable all rules on a specific line:\n\n```html\n<!-- eslint-disable-next-line -->\n<div foo=\"foo\" foo=\"foo\"></div>\n```\n\nDisable a specific rule on a specific line:\n\n```html\n<!-- eslint-disable-next-line @html-eslint/no-duplicate-attrs -->\n<div foo=\"foo\" foo=\"foo\"></div>\n```\n"
  },
  {
    "path": "docs/faq.md",
    "content": "---\ntitle: FAQs\ndescription: Frequently asked questions about HTML ESLint including solutions for typescript-eslint typed linting compatibility issues.\n---\n\n# FAQs\n\n## Problem when using typescript-eslint typed linting.\n\n```\nError: Error while loading rule '@typescript-eslint/await-thenable': You have used a rule which requires type information, but don't have parserOptions set to generate type information for this file....\nParser: @html-eslint/parser\n```\n\nWhen using [typescript-eslint Typed-Linting](https://typescript-eslint.io/troubleshooting/typed-linting), the above error may occur for HTML files. In this case, disable typed-linting rules for HTML.\n\n```js\nexport default tseslint.config(\n  //...,\n  {\n    files: [\"**/*.html\"],\n    extends: [tseslint.configs.disableTypeChecked],\n  }\n  // ...\n);\n```\n"
  },
  {
    "path": "docs/getting-started.md",
    "content": "---\ntitle: Getting Started\ndescription: Learn how to install and configure HTML ESLint to lint HTML files and HTML in JavaScript template literals with ESLint.\n---\n\n# Getting Started\n\n## Contents\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n  - [ESLint v10](#eslint-v10)\n  - [ESLint v9](#eslint-v9)\n  - [ESLint v8 (Legacy)](#eslint-v8-legacy)\n- [Lint HTML in JavaScript Template Literals](#lint-html-code-inside-javascript-template-literals)\n- [Editor Configuration](#editor-configuration)\n\n## Installation\n\n- npm\n\n```console,Terminal\nnpm install --save-dev eslint @html-eslint/parser @html-eslint/eslint-plugin\n```\n\n- yarn\n\n```console,Terminal\nyarn add -D eslint @html-eslint/parser @html-eslint/eslint-plugin\n```\n\n## Configuration\n\n### ESLint v10\n\nIf you are using ESLint v10, update your configuration file:\n\n```js,eslint.config.js\nimport { defineConfig } from \"eslint/config\";\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.html\"],\n        plugins: {\n            html,\n        },\n        // When using the recommended rules (or \"html/all\" for all rules)\n        extends: [\"html/recommended\"],\n        language: \"html/html\",\n        rules: {\n            \"html/no-duplicate-class\": \"error\",\n        }\n    }\n]);\n```\n\n### ESLint v9\n\nIf you are using ESLint v9 (flat config), update your configuration file:\n\n```js,eslint.config.js\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default [\n    {\n        files: [\"**/*.html\"],\n        ...html.configs[\"flat/recommended\"],\n    },\n    {\n        files: [\"**/*.html\"],\n        rules: {\n            \"@html-eslint/no-duplicate-class\": \"error\",\n        },\n    },\n];\n```\n\n### ESLint v8 (Legacy)\n\nIf you are using ESLint v8 or earlier with legacy configuration:\n\n```js,.eslintrc.js\nmodule.exports = {\n    overrides: [\n        {\n            files: [\"**/*.html\"],\n            parser: '@html-eslint/parser',\n            extends: [\"plugin:@html-eslint/recommended-legacy\"],\n            plugins: [\n                '@html-eslint'\n            ],\n            rules: {\n                '@html-eslint/no-duplicate-class': \"error\"\n            }\n        },\n    ],\n}\n```\n\n## Lint HTML code inside JavaScript Template Literals\n\nIn addition to standalone HTML files, html-eslint also supports linting HTML inside JavaScript and TypeScript template literals, such as:\n\n```js\nhtml`<div class=\"box\">${content}</div>`;\n// or\nconst code = /* html */ `<img class=\"image\" src=${src}/>`;\n```\n\nTo enable this, you don't need to set a language. Just apply html-eslint rules to your JavaScript or TypeScript files, and the plugin will detect and lint HTML within template literals.\n\n**ESLint v10/v9:**\n\n```js,eslint.config.js\nimport { defineConfig } from \"eslint/config\";\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\", \"**/*.ts\"],\n        plugins: {\n            html,\n        },\n        rules: {\n            \"html/require-img-alt\": \"error\",\n        },\n    },\n]);\n```\n\n**ESLint v8 (Legacy):**\n\n```js,.eslintrc.js\nmodule.exports = {\n  plugins: [\"@html-eslint\"],\n  overrides: [\n    {\n      files: [\"*.js\", \"*.ts\"],\n      extends: [\"plugin:@html-eslint/recommended-legacy\"],\n      rules: {\n        \"@html-eslint/require-img-alt\": \"error\",\n      },\n    },\n  ],\n};\n```\n\n## Editor Configuration\n\n### VSCode\n\nTo enable [vscode-eslint](https://github.com/microsoft/vscode-eslint) support in VSCode, add the following to your VSCode settings.\n\n```json,.vscode/settings.json\n{\n  \"eslint.enable\": true,\n  \"eslint.validate\": [\n    \"javascript\", // ...\n    \"html\" // Add \"html\" to enable linting `.html` files.\n  ]\n}\n```\n"
  },
  {
    "path": "docs/integrating-template-engine.md",
    "content": "---\ntitle: Integrating Template Engine\ndescription: Learn how to integrate HTML ESLint with template engines like Handlebars, Twig, and ERB using parser options and presets.\n---\n\n# Integrating Template Engine with HTML ESLint Plugin\n\n## How to Enable Template Engine Integration\n\nTo integrate ESLint with your template engine, configure the `templateEngineSyntax` in your ESLint configuration as follows:\n\n### Legacy config (.eslintrc.\\*)\n\n```js,.eslintrc.js\nmodule.exports = {\n  //...\n  plugins: [\"@html-eslint\"],\n  overrides: [\n    {\n      files: [\"*.html\"],\n      parser: \"@html-eslint/parser\",\n      parserOptions: {\n        templateEngineSyntax: { // here\n            \"{{\": \"}}\"\n        }\n      },\n      extends: [\"plugin:@html-eslint/recommended\"],\n    },\n  ],\n};\n```\n\n### Flat config\n\n```js,eslint.config.js\nconst html = require(\"@html-eslint/eslint-plugin\");\nconst htmlParser = require(\"@html-eslint/parser\");\n\nmodule.exports = [\n  {\n    ...html.configs[\"flat/recommended\"],\n    files: [\"**/*.html\"],\n    plugins: {\n      \"@html-eslint\": html,\n    },\n    languageOptions: {\n      parser: htmlParser,\n      parserOptions: {\n        templateEngineSyntax: { // here\n             \"{{\": \"}}\"\n        }\n      }\n    },\n  },\n];\n```\n\n### Language\n\n```js,eslint.config.js\nconst html = require(\"@html-eslint/eslint-plugin\");\n\nmodule.exports = [\n  {\n    files: [\"**/*.html\"],\n    plugins: {\n      \"@html-eslint\": html\n    },\n    language: \"@html-eslint/html\",\n    languageOptions: {\n      templateEngineSyntax: {\n        \"{{\": \"}}\"\n      }\n    }\n  },\n];\n```\n\n## Using Presets\n\nTo simplify the setup, the plugin provides built-in presets for common template engines. You can enable these presets by importing them from @html-eslint/parser:\n\n```js\nconst { TEMPLATE_ENGINE_SYNTAX } = require(\"@html-eslint/parser\");\n\n// Handlebars integration\nparserOptions: {\n  templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.HANDLEBAR;\n}\n\n// Twig.js integration\nparserOptions: {\n  templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.TWIG;\n}\n\n// ERB integration\nparserOptions: {\n  templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.ERB;\n}\n```\n\n## Skip frontmatter\n\nIf you are using frontmatter in html, set the parser options to `\"frontmatter\": true`, which tells the plugin to ignore the frontmatter part. (default: `false`)\n\n```js\nparserOptions: {\n  frontmatter: true,\n}\n```\n\n## rawContentTags\n\nThe `rawContentTags` option allows you to specify a list of tag names whose child content should be treated as raw text, rather than being parsed as HTML syntax. This is useful when working with custom components or templating systems where the content inside certain tags may contain characters like `<` or `>` that should not be interpreted as HTML.\n\n### Example\n\n```js\nlanguageOptions: {\n  rawContentTags: [\"markdown\"],\n}\n```\n\nIn this example, the content inside <markdown> tags will be treated as raw text:\n\n```html\n<markdown>\n  const foo = <></>\n</markdown>\n```\n\nWithout rawContentTags, the parser may interpret `<></>` as invalid HTML syntax. With `rawContentTags: [\"markdown\"]`, the entire content inside `<markdown>` is preserved as plain text.\n"
  },
  {
    "path": "docs/react/getting-started.md",
    "content": "---\ntitle: react/Getting Started\ndescription: Learn how to install and configure HTML ESLint React plugin to validate HTML attribute values and baseline browser compatibility in React/JSX code.\n---\n\n# Getting Started\n\n`@html-eslint/eslint-plugin-react` is an ESLint plugin that validates HTML attribute values and baseline browser compatibility directly in your React/JSX code. It extends the core `@html-eslint` functionality to work seamlessly with React components,\n\n## Contents\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n\n## Installation\n\n- npm\n\n```console,Terminal\nnpm install --save-dev eslint @html-eslint/eslint-plugin-react\n```\n\n- yarn\n\n```console,Terminal\nyarn add -D eslint @html-eslint/eslint-plugin-react\n```\n\n## Configuration\n\nUpdate your ESLint configuration file:\n\n### Manual Configuration\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    languageOptions: {\n      parserOptions: {\n        ecmaFeatures: {\n          jsx: true,\n        },\n      },\n    },\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-invalid-attr-value\": \"error\",\n      \"@html-eslint/react/use-baseline\": \"error\",\n    },\n  },\n];\n```\n\n### Using Preset Configurations\n\nThe plugin provides two preset configurations:\n\n- `recommended` - Enables all available rules with error severity\n- `all` - Enables all available rules with error severity (currently identical to `recommended`)\n\n#### Using the Recommended Configuration\n\n```js\n// eslint.config.js\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    languageOptions: {\n      parserOptions: {\n        ecmaFeatures: {\n          jsx: true,\n        },\n      },\n    },\n    ...htmlReact.configs.recommended,\n  },\n];\n```\n\n#### Using the All Configuration\n\n```js\n// eslint.config.js\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    languageOptions: {\n      parserOptions: {\n        ecmaFeatures: {\n          jsx: true,\n        },\n      },\n    },\n    ...htmlReact.configs.all,\n  },\n];\n```\n"
  },
  {
    "path": "docs/react/rules/classname-spacing.md",
    "content": "---\ntitle: react/classname-spacing\ndescription: Disallow extra spacing in className attribute values in React/JSX.\n---\n\n# classname-spacing\n\nThis rule disallows extra spacing in `className` values in React/JSX code.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/classname-spacing\": \"error\",\n    },\n  },\n];\n```\n\n## Options\n\nThis rule accepts an options object with the following properties:\n\n### `callees`\n\nAn array of function names that should be checked for spacing issues. This is useful for checking utility functions like `clsx`, `cn`, or `classnames`.\n\n```js\n{\n  \"@html-eslint/react/classname-spacing\": [\"error\", {\n    \"callees\": [\"clsx\", \"cn\", \"classnames\"]\n  }]\n}\n```\n\n## Rule Details\n\nThis rule enforces proper spacing in `className` attribute values by:\n\n- Disallowing leading whitespace\n- Disallowing trailing whitespace\n- Disallowing multiple spaces between class names\n\nWhen the `callees` option is specified, the rule also checks string arguments passed to the specified functions.\n\nThis rule is auto-fixable using the `--fix` option.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```jsx\n// Leading spaces\n<button className=\" foo\"></button>\n<div className=\"  foo bar\"></div>\n\n// Trailing spaces\n<button className=\"foo \"></button>\n<div className=\"foo bar  \"></div>\n\n// Extra spaces between class names\n<button className=\"foo  bar\"></button>\n<div className=\"foo   bar   baz\"></div>\n\n// Multiple spacing issues\n<div className=\"  foo  bar  \"></div>\n\n// Also works with JSX expressions\n<div className={\" foo\"}></div>\n<div className={`foo `}></div>\n<div className={`foo  bar`}></div>\n\n// With callees option\n// eslint @html-eslint/react/classname-spacing: [\"error\", { \"callees\": [\"clsx\", \"cn\"] }]\nconst classes = clsx(\" foo\");\nconst styles = cn(\"foo \");\nconst combined = clsx(\"foo  bar\", \" baz \");\n```\n\nExamples of **correct** code for this rule:\n\n```jsx\n// Single class name\n<button className=\"foo\"></button>\n\n// Multiple class names with single spaces\n<button className=\"foo bar\"></button>\n<div className=\"foo bar baz\"></div>\n\n// Empty className\n<button className=\"\"></button>\n\n// Dynamic className expressions (not checked)\n<button className={someVar}></button>\n<div className={`${prefix}-${suffix}`}></div>\n\n// Other attributes are not affected\n<button id=\" foo \"></button>\n\n// Custom components are ignored\n<Button className=\" foo \"></Button>\n\n// Custom elements are ignored\n<custom-element className=\" foo \"></custom-element>\n\n// With callees option\n// eslint @html-eslint/react/classname-spacing: [\"error\", { \"callees\": [\"clsx\", \"cn\"] }]\nconst classes = clsx(\"foo bar\");\nconst styles = cn(\"foo bar\");\n\n// Function not in callees is ignored\nconst other = classnames(\" foo  bar \");\n```\n\n## When Not To Use It\n\nIf you don't care about extra spacing in className attributes, you can disable this rule.\n\n## Further Reading\n\n- [React className](https://react.dev/reference/react-dom/components/common#common-props)\n"
  },
  {
    "path": "docs/react/rules/no-duplicate-classname.md",
    "content": "---\ntitle: react/no-duplicate-classname\ndescription: Disallow duplicate class names in className attributes in React/JSX.\n---\n\n# no-duplicate-classname\n\nThis rule disallows duplicate class names in `className` attributes in React/JSX code.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-duplicate-classname\": \"error\",\n    },\n  },\n];\n```\n\n## Options\n\nThis rule accepts an options object with the following properties:\n\n### `callees`\n\nAn array of function names that should be checked for duplicate class names. This is useful for checking utility functions like `clsx`, `cn`, or `classnames`.\n\n```js\n{\n  \"@html-eslint/react/no-duplicate-classname\": [\"error\", {\n    \"callees\": [\"clsx\", \"cn\", \"classnames\"]\n  }]\n}\n```\n\n## Rule Details\n\nThis rule enforces unique class names in `className` attribute values by detecting and removing duplicate class names.\n\nWhen the `callees` option is specified, the rule also checks string arguments passed to the specified functions, including:\n\n- String literals\n- Template literals without expressions\n- Strings within logical expressions (`&&`, `||`)\n- Strings within conditional expressions (ternary operator)\n\nThis rule is auto-fixable using the `--fix` option.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```jsx\n// Duplicate class names\n<button className=\"foo foo\"></button>\n<div className=\"foo bar foo\"></div>\n\n// Works with extra spacing\n<button className=\"foo   foo\"></button>\n\n// Works with leading/trailing spaces\n<button className=\" foo foo bar \"></button>\n\n// Also works with JSX expressions containing literals\n<div className={\"foo foo\"}></div>\n<div className={`foo bar foo`}></div>\n\n// With callees option\n// eslint @html-eslint/react/no-duplicate-classname: [\"error\", { \"callees\": [\"clsx\", \"cn\"] }]\nconst classes = clsx(\"foo foo\");\nconst styles = cn(\"foo bar foo\");\nconst combined = classnames(\"foo foo bar\"); // ignored - not in callees\n\n// Works with template literals\nconst classes = clsx(`foo foo`);\n\n// Works with logical expressions\nconst classes = clsx(condition && \"foo foo\");\n\n// Works with conditional expressions\nconst classes = clsx(condition ? \"foo foo\" : \"bar bar\");\n```\n\nExamples of **correct** code for this rule:\n\n```jsx\n// Single class name\n<button className=\"foo\"></button>\n\n// Multiple unique class names\n<button className=\"foo bar\"></button>\n<div className=\"foo bar baz\"></div>\n\n// Similar but different class names\n<button className=\"foo foofoo\"></button>\n\n// Empty className\n<button className=\"\"></button>\n\n// Missing className value\n<button className></button>\n\n// Dynamic className expressions (not checked)\n<button className={someVar}></button>\n<div className={`foo ${bar} baz`}></div>\n\n// Other attributes are not affected\n<button id=\"foo foo\"></button>\n\n// Custom components\n<Button className=\"foo\"></Button>\n\n// Custom elements\n<custom-element className=\"foo\"></custom-element>\n\n// With callees option\n// eslint @html-eslint/react/no-duplicate-classname: [\"error\", { \"callees\": [\"clsx\", \"cn\"] }]\nconst classes = clsx(\"foo bar\");\nconst styles = cn(\"foo bar baz\");\n\n// Function not in callees is ignored\nconst other = classnames(\"foo foo\");\n\n// Multiple arguments with unique classes\nconst combined = clsx(\"foo\", bar, \"baz\");\n```\n\n## When Not To Use It\n\nIf you don't care about duplicate class names in className attributes, you can disable this rule.\n\n## Further Reading\n\n- [React className](https://react.dev/reference/react-dom/components/common#common-props)\n"
  },
  {
    "path": "docs/react/rules/no-ineffective-attrs.md",
    "content": "---\ntitle: react/no-ineffective-attrs\ndescription: Disallow HTML attributes that have no effect in their React/JSX context.\n---\n\n# no-ineffective-attrs\n\nThis rule disallows HTML attributes that have no effect in their context in React/JSX code.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-ineffective-attrs\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows HTML attributes that have no effect in their context. Such attributes may indicate errors or unnecessary code that should be removed.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<input>`, `<script>`). PascalCase React components (e.g., `<Input>`) and custom elements with hyphens (e.g., `<my-input>`) are ignored.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```jsx\n// multiple has no effect on text inputs\n<input type=\"text\" multiple />\n\n// multiple has no effect on checkbox inputs\n<input type=\"checkbox\" multiple />\n\n// accept only works with file inputs\n<input type=\"text\" accept=\".jpg,.png\" />\n\n// readonly has no effect on checkbox inputs\n<input type=\"checkbox\" readOnly />\n\n// readonly has no effect on file inputs\n<input type=\"file\" readOnly />\n\n// min/max/step only work with numeric, date, and time inputs\n<input type=\"text\" min=\"0\" max=\"100\" />\n<input type=\"password\" step=\"5\" />\n\n// pattern only works with text-based inputs\n<input type=\"checkbox\" pattern=\"[0-9]+\" />\n\n// maxlength/minlength only work with text-based inputs\n<input type=\"number\" maxLength=\"10\" />\n<input type=\"radio\" minLength=\"5\" />\n\n// placeholder has no effect on these input types\n<input type=\"checkbox\" placeholder=\"Enter value\" />\n<input type=\"radio\" placeholder=\"Select\" />\n\n// size only works with text-based inputs\n<input type=\"checkbox\" size=\"20\" />\n\n// list has no effect on these input types\n<input type=\"checkbox\" list=\"suggestions\" />\n<input type=\"radio\" list=\"options\" />\n\n// defer has no effect on inline scripts\n<script defer>\n  console.log(\"hello\");\n</script>\n\n// async has no effect on inline scripts\n<script async>\n  console.log(\"hello\");\n</script>\n\n// download needs href to work\n<a download=\"file.pdf\">Download</a>\n\n// target needs href to work\n<a target=\"_blank\">Open</a>\n\n// ping needs href to work\n<a ping=\"/analytics\">Link</a>\n\n// controlslist needs controls to work\n<audio controlsList=\"nodownload\"></audio>\n<video controlsList=\"nofullscreen\"></video>\n\n// enctype only has effect when method is \"post\"\n<form method=\"get\" encType=\"multipart/form-data\"></form>\n\n// form* attributes only work with type=\"submit\"\n<button type=\"button\" formAction=\"/submit\">Submit</button>\n<button type=\"reset\" formMethod=\"post\">Reset</button>\n\n// usemap and ismap cannot be used together\n<img src=\"map.jpg\" useMap=\"#map\" isMap />\n```\n\nExamples of **correct** code for this rule:\n\n```jsx\n// multiple works with email and file inputs\n<input type=\"email\" multiple />\n<input type=\"file\" multiple />\n<select multiple></select>\n\n// accept works with file inputs\n<input type=\"file\" accept=\".jpg,.png\" />\n\n// readonly works with text and password inputs\n<input type=\"text\" readOnly />\n<input type=\"password\" readOnly />\n\n// min/max/step work with numeric, date, and time inputs\n<input type=\"number\" min=\"0\" max=\"100\" />\n<input type=\"range\" min=\"0\" max=\"10\" step=\"2\" />\n<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />\n\n// pattern works with text-based inputs\n<input type=\"text\" pattern=\"[0-9]+\" />\n<input type=\"email\" pattern=\".+@example\\.com\" />\n\n// maxlength/minlength work with text-based inputs\n<input type=\"text\" maxLength=\"10\" minLength=\"3\" />\n<input type=\"password\" maxLength=\"20\" />\n\n// placeholder works with text and number inputs\n<input type=\"text\" placeholder=\"Enter name\" />\n<input type=\"number\" placeholder=\"Enter age\" />\n\n// size works with text-based inputs\n<input type=\"text\" size=\"20\" />\n\n// list works with appropriate input types\n<input type=\"text\" list=\"suggestions\" />\n<input type=\"email\" list=\"emails\" />\n\n// defer and async work with external scripts\n<script defer src=\"script.js\"></script>\n<script async src=\"script.js\"></script>\n\n// download works when href is present\n<a href=\"file.pdf\" download=\"file.pdf\">Download</a>\n\n// target works when href is present\n<a href=\"https://example.com\" target=\"_blank\">Open</a>\n\n// ping works when href is present\n<a href=\"/page\" ping=\"/analytics\">Link</a>\n\n// controlslist works when controls is present\n<audio controls controlsList=\"nodownload\"></audio>\n<video controls controlsList=\"nofullscreen\"></video>\n\n// enctype works when method is \"post\"\n<form method=\"post\" encType=\"multipart/form-data\"></form>\n\n// form* attributes work with type=\"submit\"\n<button type=\"submit\" formAction=\"/submit\">Submit</button>\n<button type=\"submit\" formMethod=\"post\">Submit</button>\n\n// usemap without ismap\n<img src=\"map.jpg\" useMap=\"#map\" />\n\n// JSX expressions are skipped (dynamic values)\n<input type={inputType} multiple />\n<script defer={shouldDefer}>alert('hi')</script>\n\n// Custom components are ignored\n<Input type=\"checkbox\" multiple />\n<MyButton type=\"button\" formAction=\"/submit\">Click</MyButton>\n<custom-input type=\"text\" multiple />\n```\n\n## Checked Attributes\n\n### Input Element\n\n- `multiple` - Only effective on email, file, and select inputs\n- `accept` - Only effective on file inputs\n- `readonly` - Not effective on checkbox, radio, file, range, color inputs\n- `min`, `max`, `step` - Only effective on number, range, date, datetime-local, month, time, week inputs\n- `pattern` - Only effective on text, search, url, tel, email, password inputs\n- `maxlength`, `minlength` - Only effective on text, search, url, tel, email, password inputs\n- `placeholder` - Only effective on text, search, url, tel, email, password, number inputs\n- `size` - Only effective on text, search, url, tel, email, password inputs\n- `list` - Not effective on checkbox, radio, file, submit, image, reset, button, hidden inputs\n\n### Script Element\n\n- `defer`, `async` - Only effective on external scripts (with `src` attribute)\n\n### Anchor (`<a>`) and Area Elements\n\n- `download`, `ping`, `target` - Only effective when `href` is present\n\n### Audio and Video Elements\n\n- `controlslist` - Only effective when `controls` is present\n\n### Form Element\n\n- `enctype` - Only effective when `method` is \"post\"\n\n### Button Element\n\n- `formaction`, `formmethod`, `formenctype`, `formnovalidate`, `formtarget` - Only effective when `type` is \"submit\"\n\n### Image Element\n\n- `usemap` - Cannot be used together with `ismap`\n\n### Link Element\n\n- `sizes` - Only effective with `rel=\"icon\"` or `rel=\"apple-touch-icon\"`\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n- [React DOM Elements](https://react.dev/reference/react-dom/components/common)\n"
  },
  {
    "path": "docs/react/rules/no-invalid-attr-value.md",
    "content": "---\ntitle: react/no-invalid-attr-value\ndescription: Disallow invalid attribute values in React/JSX according to HTML standards.\n---\n\n# no-invalid-attr-value\n\nThis rule disallows invalid attribute values according to HTML standards in React/JSX.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-invalid-attr-value\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule validates attribute values against [HTML standards](https://html.spec.whatwg.org) and reports errors when invalid values are used in JSX elements.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<div>`, `<input>`). PascalCase React components (e.g., `<MyComponent>`) and custom elements with hyphens (e.g., `<my-element>`) are ignored.\n\n### Options\n\nThis rule accepts an options object with the following property:\n\n- `allow`: An array of objects specifying tag/attribute combinations to allow. Each object can have:\n  - `tag` (required): The HTML tag name to match (case-insensitive)\n  - `attr` (required): The attribute name to match (case-insensitive)\n  - `valuePattern` (optional): A regular expression pattern to match specific values. If omitted, all values for the specified tag/attribute combination are allowed.\n\n#### Allowing all values for a specific tag and attribute\n\n```js\n// eslint.config.js\nexport default [\n  {\n    files: [\"**/*.jsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-invalid-attr-value\": [\n        \"error\",\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\" },\n            { tag: \"button\", attr: \"type\" },\n          ],\n        },\n      ],\n    },\n  },\n];\n```\n\nWith this configuration, any value for `type` attribute on `input` and `button` elements will be allowed.\n\n#### Allowing specific values using regex patterns\n\n```js\n// eslint.config.js\nexport default [\n  {\n    files: [\"**/*.jsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-invalid-attr-value\": [\n        \"error\",\n        {\n          allow: [\n            // Allow exact match\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n            // Allow multiple values\n            { tag: \"button\", attr: \"type\", valuePattern: \"^(custom|special)$\" },\n            // Allow pattern matching\n            { tag: \"form\", attr: \"method\", valuePattern: \"^custom-.*$\" },\n          ],\n        },\n      ],\n    },\n  },\n];\n```\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```jsx\n// Invalid input type\n<input type=\"invalid-type\" />\n<input type=\"txt\" />\n\n// Invalid crossorigin value\n<img src=\"image.jpg\" crossOrigin=\"invalid\" />\n\n// Invalid autocomplete value\n<input type=\"text\" autocomplete=\"invalid-value\" />\n\n// Invalid button type\n<button type=\"invalid\">Click</button>\n\n// Invalid form method\n<form method=\"put\"></form>\n\n// Invalid loading value\n<img src=\"image.jpg\" loading=\"invalid\" />\n\n// Invalid dir value\n<div dir=\"invalid\">Text</div>\n```\n\nExamples of **correct** code for this rule:\n\n```jsx\n// Valid input types\n<input type=\"text\" />\n<input type=\"email\" />\n<input type=\"number\" />\n\n// Valid crossorigin values\n<img src=\"image.jpg\" crossOrigin=\"anonymous\" />\n<img src=\"image.jpg\" crossOrigin=\"use-credentials\" />\n\n// Valid autocomplete values\n<input type=\"text\" autocomplete=\"name\" />\n<input type=\"email\" autocomplete=\"email\" />\n\n// Valid button types\n<button type=\"button\">Click</button>\n<button type=\"submit\">Submit</button>\n\n// Valid form methods\n<form method=\"post\"></form>\n<form method=\"get\"></form>\n\n// Valid loading values\n<img src=\"image.jpg\" loading=\"lazy\" />\n<img src=\"image.jpg\" loading=\"eager\" />\n\n// Valid dir values\n<div dir=\"ltr\">Text</div>\n<div dir=\"rtl\">Text</div>\n\n// JSX expressions are skipped (dynamic values)\n<input type={inputType} />\n<button type={type}>Click</button>\n<img loading={loading} />\n\n// JSX spread attributes are skipped\n<input {...props} />\n\n// Custom components are ignored\n<Input type=\"invalid-type\" />\n<MyButton type=\"invalid\">Click</MyButton>\n<custom-button type=\"invalid\">Click</custom-button>\n```\n\n### With `allow` option\n\nExamples of **correct** code for this rule with the `allow` option:\n\n```js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\" }\n  ]\n}\n```\n\n```jsx\n// Any value is allowed for input type when allowed\n<input type=\"custom-type\" />\n<input type=\"my-special-type\" />\n```\n\n```js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```jsx\n// Only values matching the pattern are allowed\n<input type=\"custom-foo\" />\n<input type=\"custom-bar\" />\n```\n\nExamples of **incorrect** code for this rule with the `allow` option:\n\n```js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```jsx\n// Does not match the pattern\n<input type=\"invalid-type\" />\n<input type=\"special-type\" />\n```\n\n## React-specific Notes\n\n- **Attribute naming**: React uses camelCase for HTML attributes (`className`, `htmlFor`, `crossOrigin`, etc.). This rule correctly handles both the camelCase React prop names and their lowercase HTML equivalents.\n\n- **JSX expressions**: Attribute values in JSX expression containers are treated as dynamic values and are not validated. For example:\n  - `<input type={someVar} />` - Not validated (dynamic)\n  - `<input type={\"text\"} />` - Not validated (expression container)\n  - `<input type=\"text\" />` - Validated (string literal)\n\n- **Custom components**: Components with PascalCase names (e.g., `<Input>`, `<Button>`) are treated as React components and ignored by this rule.\n\n- **Member expressions**: Components using dot notation (e.g., `<Form.Input>`) are also ignored.\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n"
  },
  {
    "path": "docs/react/rules/no-obsolete-attrs.md",
    "content": "---\ntitle: react/no-obsolete-attrs\ndescription: Disallow obsolete HTML attributes in React/JSX that are deprecated in HTML5.\n---\n\n# no-obsolete-attrs\n\nThis rule disallows the use of obsolete attributes in HTML5 in React/JSX code.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-obsolete-attrs\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows using obsolete attributes on HTML elements and provides suggestions for modern alternatives.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```jsx\n// Obsolete presentational attributes\n<table align=\"center\" bgcolor=\"#ffffff\" border=\"1\"></table>\n<div align=\"left\">Content</div>\n<img src=\"image.jpg\" border=\"0\" />\n\n// Obsolete name attribute on certain elements\n<a name=\"anchor\">Link</a>\n<img name=\"myimage\" src=\"image.jpg\" />\n\n// Obsolete charset attribute on non-script elements\n<a charset=\"UTF-8\" href=\"page.html\">Link</a>\n\n// Obsolete manifest attribute\n<html manifest=\"app.appcache\"></html>\n\n// Other obsolete attributes\n<iframe frameBorder=\"0\" scrolling=\"no\"></iframe>\n<body bgcolor=\"#ffffff\" text=\"#000000\"></body>\n<td scope=\"row\">Cell</td>\n\n// React camelCase attributes are also detected\n<table cellPadding=\"5\" cellSpacing=\"0\"></table>\n<iframe frameBorder=\"0\"></iframe>\n```\n\nExamples of **correct** code for this rule:\n\n```jsx\n// Use CSS instead of presentational attributes\n<table style={{ textAlign: \"center\", backgroundColor: \"#ffffff\", border: \"1px solid black\" }}></table>\n<div style={{ textAlign: \"left\" }}>Content</div>\n<img src=\"image.jpg\" style={{ border: 0 }} />\n\n// Use id instead of name on certain elements\n<a id=\"anchor\">Link</a>\n<img id=\"myimage\" src=\"image.jpg\" />\n\n// Omit charset on non-script elements\n<a href=\"page.html\">Link</a>\n\n// Use service workers instead of manifest\n<html></html>\n\n// Use CSS for iframe styling\n<iframe style={{ border: 0 }}></iframe>\n<body style={{ backgroundColor: \"#ffffff\", color: \"#000000\" }}></body>\n\n// Use th with scope instead of td\n<th scope=\"row\">Header</th>\n\n// Custom components are ignored\n<Table align=\"center\" bgcolor=\"#ffffff\">Content</Table>\n<MyDiv align=\"left\">Content</MyDiv>\n<custom-table align=\"center\">Content</custom-table>\n```\n\n## Further Reading\n\n- [HTML Spec: Non-conforming features](https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features)\n- [React DOM Elements](https://react.dev/reference/react-dom/components/common)\n"
  },
  {
    "path": "docs/react/rules/no-obsolete-tags.md",
    "content": "---\ntitle: react/no-obsolete-tags\ndescription: Disallow obsolete HTML elements in React/JSX that are deprecated in HTML5.\n---\n\n# no-obsolete-tags\n\nThis rule disallows the use of obsolete HTML elements in React/JSX code.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-obsolete-tags\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows the use of obsolete HTML elements that are no longer part of the HTML5 specification. These elements should be replaced with modern alternatives using CSS or semantic HTML.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<center>`, `<font>`). PascalCase React components (e.g., `<Center>`) and custom elements with hyphens (e.g., `<my-font>`) are ignored.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```jsx\n// Layout elements - use CSS instead\n<center>Centered content</center>\n<marquee>Scrolling text</marquee>\n\n// Font styling elements - use CSS instead\n<font color=\"red\">Red text</font>\n<big>Large text</big>\n<tt>Monospace text</tt>\n\n// Frame elements - use iframe or modern alternatives\n<frameset cols=\"25%,75%\">\n  <frame src=\"nav.html\" />\n  <frame src=\"content.html\" />\n</frameset>\n\n// Deprecated elements\n<applet code=\"game.class\">Java Applet</applet>\n<blink>Blinking text</blink>\n<strike>Strikethrough text</strike>\n<acronym title=\"World Wide Web\">WWW</acronym>\n```\n\nExamples of **correct** code for this rule:\n\n```jsx\n// Use CSS for centering\n<div style={{ textAlign: 'center' }}>Centered content</div>\n<div className=\"center\">Centered content</div>\n\n// Use CSS for font styling\n<span style={{ color: 'red' }}>Red text</span>\n<span style={{ fontSize: 'larger' }}>Large text</span>\n<code>Monospace text</code>\n\n// Use iframe for embedding\n<iframe src=\"content.html\" title=\"Content\" />\n\n// Use semantic HTML and CSS\n<del>Strikethrough text</del>\n<abbr title=\"World Wide Web\">WWW</abbr>\n\n// Custom React components are allowed (PascalCase)\n<Center>This is a custom component</Center>\n<Font color=\"red\">Custom Font component</Font>\n\n// Custom elements are allowed (with hyphens)\n<my-center>Custom element</my-center>\n<custom-font>Custom web component</custom-font>\n```\n\n## React-specific Notes\n\n- **Custom components**: Components with PascalCase names (e.g., `<Center>`, `<Font>`) are treated as React components and ignored by this rule. This allows you to create custom wrapper components with names that match obsolete HTML elements.\n\n- **Custom elements**: Web components with hyphens in their names (e.g., `<my-center>`, `<custom-font>`) are also ignored by this rule.\n\n## Obsolete Elements\n\nThe following elements are considered obsolete according to the HTML5 specification:\n\n### Presentational Elements (use CSS instead)\n\n- `<basefont>` - Use CSS font properties\n- `<big>` - Use CSS `font-size: larger`\n- `<blink>` - Use CSS animations\n- `<center>` - Use CSS `text-align: center` or flexbox\n- `<font>` - Use CSS font properties\n- `<marquee>` - Use CSS animations\n- `<nobr>` - Use CSS `white-space: nowrap`\n- `<spacer>` - Use CSS margins/padding\n- `<tt>` - Use `<code>`, `<kbd>`, or CSS `font-family: monospace`\n- `<strike>` - Use `<del>` or `<s>` with CSS\n\n### Frame Elements\n\n- `<frame>` - Use `<iframe>` instead\n- `<frameset>` - Use modern layout techniques\n- `<noframes>` - No longer needed\n\n### Other Obsolete Elements\n\n- `<acronym>` - Use `<abbr>` instead\n- `<applet>` - Use `<object>` or `<embed>` for plugins\n- `<bgsound>` - Use `<audio>` element\n- `<dir>` - Use `<ul>` instead\n- `<isindex>` - Use `<input>` in a `<form>`\n- `<keygen>` - No longer supported\n- `<listing>` - Use `<pre>` and `<code>`\n- `<menuitem>` - Use `<button>` or `<a>` in a menu\n- `<multicol>` - Use CSS multi-column layout\n- `<nextid>` - No replacement needed\n- `<noembed>` - No longer needed\n- `<plaintext>` - Use `<pre>` and escape content\n- `<rb>` - Ruby base (use `<ruby>` structure)\n- `<rtc>` - Ruby text container (use `<ruby>` structure)\n- `<xmp>` - Use `<pre>` and escape content\n\n## Modern Alternatives\n\n### Centering Content\n\n```jsx\n// ❌ Obsolete\n<center>Content</center>\n\n// ✅ Modern CSS\n<div style={{ textAlign: 'center' }}>Content</div>\n<div className=\"flex justify-center\">Content</div>\n```\n\n### Styling Text\n\n```jsx\n// ❌ Obsolete\n<font color=\"red\" size=\"5\">Text</font>\n\n// ✅ Modern CSS\n<span style={{ color: 'red', fontSize: '1.5rem' }}>Text</span>\n<span className=\"text-red-500 text-xl\">Text</span>\n```\n\n### Abbreviations\n\n```jsx\n// ❌ Obsolete\n<acronym title=\"HyperText Markup Language\">HTML</acronym>\n\n// ✅ Modern\n<abbr title=\"HyperText Markup Language\">HTML</abbr>\n```\n\n### Strikethrough\n\n```jsx\n// ❌ Obsolete\n<strike>Removed text</strike>\n\n// ✅ Modern\n<del>Removed text</del>\n<s>Incorrect text</s>\n```\n\n## Further Reading\n\n- [HTML Spec - Non-conforming features](https://html.spec.whatwg.org/#non-conforming-features)\n- [MDN - Obsolete and deprecated elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element#obsolete_and_deprecated_elements)\n- [React DOM Elements](https://react.dev/reference/react-dom/components/common)\n"
  },
  {
    "path": "docs/react/rules/use-baseline.md",
    "content": "---\ntitle: react/use-baseline\ndescription: Enforce baseline browser-compatible features in React/JSX components.\n---\n\n# use-baseline\n\nThis rule enforces the use of baseline features in React/JSX.\n\n## What is Baseline?\n\n[Baseline](https://web-platform-dx.github.io/web-features/) is an effort by the [W3C WebDX Community Group](https://www.w3.org/community/webdx/) that provides clear information about which web platform features work across [core browser set](https://web-platform-dx.github.io/web-features/#how-do-features-become-part-of-baseline%3F) today.\n\nBaseline features are available across popular browsers. Baseline has two stages:\n\n- **Newly available**: The feature works across the latest devices and browser versions. The feature might not work in older devices or browsers.\n- **Widely available**: The feature is well established and works across many devices and browser versions. It's been available across browsers for at least 2½ years (30 months).\n\nPrior to being newly available, a feature has **Limited availability** when it's not yet available across all browsers.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/use-baseline\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule warns when it finds any of the following in JSX elements:\n\n- An element that isn't widely available.\n- An attribute that isn't widely available.\n- An attribute value that isn't widely available.\n\nThe data is provided via the [web-features](https://www.npmjs.com/package/web-features) package.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<div>`, `<input>`). PascalCase React components (e.g., `<MyComponent>`) and custom elements with hyphens (e.g., `<my-element>`) are ignored.\n\n### Options\n\nThis rule has an object option:\n\n```ts\n\"@html-eslint/react/use-baseline\": [\"error\", {\n  \"available\": \"newly\" | \"widely\" | number; // default: \"widely\"\n}]\n```\n\n#### available: \"widely\"\n\nIf `\"widely\"` is used as an option, this rule allows features that are at the Baseline widely available stage: features that have been available across browsers for at least 30 months.\n\n#### available: \"newly\"\n\nIf `\"newly\"` is used as an option, this rule allows features that are at the Baseline newly available stage: features that have been supported on all core browsers for less than 30 months.\n\n#### available: number\n\nIf an integer `number` is used as an option, this rule allows features that became Baseline newly available that year, or earlier. (minimum: 2000)\n\n## Further Reading\n\n- [W3C WebDX Community Group - Baseline](https://web-platform-dx.github.io/web-features/)\n- [web.dev - Baseline](https://web.dev/baseline)\n- [Chrome Developers Blog - Baseline features availability in developer tools](https://developer.chrome.com/blog/web-at-io25#7_baseline_features_availability_is_now_in_your_familiar_tools_vs_code_eslint_and_more)\n- [eslint-plugin-baseline-js](https://github.com/3ru/eslint-plugin-baseline-js)\n"
  },
  {
    "path": "docs/react/rules.md",
    "content": "---\ntitle: react/Rules\ndescription: Available rules for HTML ESLint React plugin including validation for HTML attributes, obsolete elements, and baseline browser compatibility in React/JSX.\n---\n\n# Rules\n\n## Available Rules\n\n| Rule                                                        | Description                                                   |\n| ----------------------------------------------------------- | ------------------------------------------------------------- |\n| [classname-spacing](./rules/classname-spacing.md)           | Enforce spacing in className attributes                       |\n| [no-duplicate-classname](./rules/no-duplicate-classname.md) | Disallow duplicate class names in className attributes        |\n| [no-ineffective-attrs](./rules/no-ineffective-attrs.md)     | Disallow HTML attributes that have no effect in their context |\n| [no-invalid-attr-value](./rules/no-invalid-attr-value.md)   | Disallow invalid attribute values according to HTML standards |\n| [no-obsolete-attrs](./rules/no-obsolete-attrs.md)           | Disallow use of obsolete attributes in HTML5                  |\n| [no-obsolete-tags](./rules/no-obsolete-tags.md)             | Disallow use of obsolete HTML elements                        |\n| [use-baseline](./rules/use-baseline.md)                     | Enforce the use of baseline features                          |\n"
  },
  {
    "path": "docs/rules/attrs-newline.md",
    "content": "---\ntitle: attrs-newline\ndescription: >-\n  Enforce newline between attributes for better readability and maintainability\n  of HTML code.\n---\n\n# attrs-newline\n\nThis rule enforces a newline between attributes when more than a certain number of attributes are present.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/attrs-newline\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<p class=\"foo\" data-custom id=\"p\">\n  <img class=\"foo\" data-custom />\n</p>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<p\n  class=\"foo\"\n  data-custom\n  id=\"p\"\n>\n  <img class=\"foo\" data-custom />\n</p>\n```\n\n### Options\n\nThis rule has an object option:\n\n```ts\n//...\n\"@html-eslint/attrs-newline\": [\"error\", {\n  \"closeStyle\": \"sameline\" | \"newline\", // Default `\"newline\"`\n  \"ifAttrsMoreThan\": number, // Default `2`\n  \"skip\": string[], // Default `[]`\n  \"inline\": string[], // Default `[]`\n}]\n```\n\n#### ifAttrsMoreThan\n\nIf there are more than this number of attributes, all attributes should be separated by newlines.\n\nThe default is `2`.\n\nExamples of **correct** code for `\"ifAttrsMoreThan\": 2`\n\n<!-- prettier-ignore -->\n```html\n<p class=\"foo\" id=\"p\">\n  <img\n    class=\"foo\"\n    data-custom\n    id=\"img\"\n  />\n</p>\n```\n\n#### closeStyle\n\nHow the open tag's closing bracket `>` should be spaced:\n\n- `\"newline\"`: The closing bracket should be on a newline following the last attribute:\n  <!-- prettier-ignore -->\n  ```html\n  <img\n    class=\"foo\"\n    data-custom\n    id=\"img\"\n  />\n  ```\n\n- `\"sameline\"`: The closing bracket should be on the same line following the last attribute\n  <!-- prettier-ignore -->\n  ```html\n  <img\n    class=\"foo\"\n    data-custom\n    id=\"img\" />\n  ```\n\n#### skip\n\nA list of tag names for which the rule is entirely skipped — including all **descendant elements** — even if the number of attributes exceeds `ifAttrsMoreThan`. This is useful for tags like `<pre>` or `<code>` where formatting (including nested markup) must be preserved as-is.\n\n```json\n\"@html-eslint/attrs-newline\": [\"error\", {\n  \"ifAttrsMoreThan\": 1,\n  \"skip\": [\"pre\", \"code\"]\n}]\n```\n\n#### inline\n\nA list of tag names that are treated as inline elements. The rule is skipped for the **element itself only**; descendant elements inside it are still subject to the rule. This is useful for inline elements embedded inside prose where expanding attributes to multiple lines would break readability, while still enforcing newlines on any block-level children.\n\nSupports the `$inline` preset, which covers all [HTML inline text semantics elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics) (`a`, `abbr`, `b`, `span`, `strong`, etc.).\n\nExamples of **correct** code for `\"inline\": [\"$inline\"]`:\n\n<!-- prettier-ignore -->\n```html\n<p>\n  The quick brown <span class=\"highlight\" data-id=\"1\">fox jumps over</span>\n  the <a class=\"link\" href=\"/foo\" target=\"_blank\">lazy dog</a> today.\n</p>\n```\n"
  },
  {
    "path": "docs/rules/class-spacing.md",
    "content": "---\ntitle: class-spacing\ndescription: >-\n  Disallow extra spacing in class attribute values to maintain consistent\n  formatting.\n---\n\n# class-spacing\n\nDisallow extra spacing in class attribute values.\n\nThis rule aims to maintain consistent spacing in class attribute values by removing unnecessary leading, trailing, and extra spaces between class names.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/class-spacing\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows the following:\n\n- Leading spaces at the start of class attribute values\n- Trailing spaces at the end of class attribute values\n- Multiple consecutive spaces between class names\n\nExamples of **incorrect** code for this rule:\n\n```html\n<div class=\" foo\"></div>\n<div class=\"foo \"></div>\n<div class=\" foo \"></div>\n<div class=\"foo  bar\"></div>\n<div class=\"foo   bar\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<div class=\"foo\"></div>\n<div class=\"foo bar\"></div>\n<div class=\"foo bar baz\"></div>\n```\n"
  },
  {
    "path": "docs/rules/css-no-empty-blocks.md",
    "content": "---\ntitle: css-no-empty-blocks\ndescription: >-\n  Disallow empty CSS blocks in style tags to keep stylesheets clean and\n  meaningful.\n---\n\n# css-no-empty-blocks\n\nThis rule disallows empty CSS blocks in `<style>` tags.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/css-no-empty-blocks\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<style>\n  a { }\n</style>\n```\n\n```html,incorrect\n<style>\n  a { /* comment */ }\n</style>\n```\n\n```html,incorrect\n<style>\n  @media print { }\n</style>\n```\n\n```html,incorrect\n<style>\n  a {\n  }\n</style>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<style>\n  a { color: red; }\n</style>\n```\n\n```html,correct\n<style>\n  @media print {\n    a { color: black; }\n  }\n</style>\n```\n"
  },
  {
    "path": "docs/rules/element-newline.md",
    "content": "---\ntitle: element-newline\ndescription: Enforce newline between elements for improved code readability and structure.\n---\n\n# element-newline\n\nThis rule enforces newlines between tags.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/element-newline\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<html>\n  <head><title>newline</title></head>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <title>newline</title>\n  </head>\n</html>\n```\n\n### Options\n\nThis rule has an object option:\n\n- `\"skip\"`: Skips newline checking for the children of the specified elements.\n- `\"inline\"`: Instructs the linter that the specified elements can remain on the same line.\n\n```ts\n//...\n\"@html-eslint/element-newline\": [\"error\", {\n  \"skip\": Array<string>\n}]\n```\n\n#### skip\n\nYou can specify list of tag names in the `skip` option.\nNewline checking is not performed on children of the specified tags.\n\nExamples of **correct** code for the `{ \"skip\": [\"pre\", \"code\"] }` option:\n\n<!-- prettier-ignore -->\n```html\n<pre>\n    <div></div><div></div>\n</pre>\n```\n\n<!-- prettier-ignore -->\n```html\n<code>\n    <span></span><div></div>\n</code>\n```\n\n#### inline\n\nYou can specify list of tag names in the `inline` option.\nNewlines are not enforced between the specified tags.\nAs a shortcut, if you include the special value `$inline` in the list then all HTML tags that are usually inline (<a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\">as defined by Mozilla</a>) will be included.\n\nExamples of **correct** code for the `{ \"inline\": [\"$inline\"] }` option:\n\n<!-- prettier-ignore -->\n```html\n<div>\n    I <strong>like</strong> these <dfn>inline</dfn> tags.\n    <p>It's <em>true</em>!</p>\n</div>\n```\n"
  },
  {
    "path": "docs/rules/head-order.md",
    "content": "---\ntitle: head-order\ndescription: >-\n  Enforce optimal ordering of elements in the head tag for better performance\n  and SEO.\n---\n\n# head-order\n\n> Enforce optimal ordering of elements in `<head>`\n\nThe order of elements in the `<head>` tag can affect the (perceived) performance of a web page. This rule enforces the optimal ordering of `<head>` elements based on [capo.js](https://github.com/rviscomi/capo.js).\n\n**Fixable:** This rule is automatically fixable using the `--fix` flag on the command line.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/head-order\": \"error\",\n  },\n};\n```\n\n## Options\n\nThis rule has an optional object option with the following property:\n\n- `ignores`: An array of ignore pattern objects. Each object can have the following optional properties:\n  - `tagPattern`: Regex pattern for tag names (e.g., `\"^script$\"`, `\"^link$\"`)\n  - `attrKeyPattern`: Regex pattern for attribute keys (e.g., `\"^rel$\"`, `\"^data-\"`)\n  - `attrValuePattern`: Regex pattern for attribute values (e.g., `\"analytics\"`, `\"^https://cdn\"`)\n\nAll specified patterns within an ignore object must match (AND condition) for an element to be ignored.\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/head-order\": [\n      \"error\",\n      {\n        ignores: [\n          // Ignore all script tags\n          { tagPattern: \"^script$\" },\n          // Ignore link tags with rel=\"preconnect\" containing \"cdn\" in the value\n          {\n            tagPattern: \"^link$\",\n            attrKeyPattern: \"^rel$\",\n            attrValuePattern: \"cdn\",\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n## Rule Details\n\nThis rule enforces that elements within the `<head>` tag follow the optimal loading order for web performance. Elements are categorized and should appear in this order (from highest to lowest priority):\n\n1. **META** (weight: 10) - Critical meta tags (`<base>`, `<meta charset>`, `<meta name=\"viewport\">`, critical `http-equiv` meta tags)\n2. **TITLE** (weight: 9) - The `<title>` element\n3. **PRECONNECT** (weight: 8) - `<link rel=\"preconnect\">`\n4. **ASYNC_SCRIPT** (weight: 7) - `<script src=\"...\" async>`\n5. **IMPORT_STYLES** (weight: 6) - `<style>` elements with `@import`\n6. **SYNC_SCRIPT** (weight: 5) - Synchronous `<script>` elements (inline or blocking external scripts)\n7. **SYNC_STYLES** (weight: 4) - `<link rel=\"stylesheet\">` and inline `<style>` (without `@import`)\n8. **PRELOAD** (weight: 3) - `<link rel=\"preload\">`\n9. **DEFER_SCRIPT** (weight: 2) - `<script src=\"...\" defer>` and `<script type=\"module\">`\n10. **PREFETCH_PRERENDER** (weight: 1) - `<link rel=\"prefetch\">`, `<link rel=\"dns-prefetch\">`, `<link rel=\"prerender\">`\n11. **OTHER** (weight: 0) - Everything else\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- ✗ BAD: title should come before preconnect -->\n<head>\n  <meta charset=\"UTF-8\" />\n  <link rel=\"preconnect\" href=\"https://example.com\" />\n  <title>Page Title</title>\n</head>\n```\n\n```html\n<!-- ✗ BAD: meta charset should come before title -->\n<head>\n  <title>Page Title</title>\n  <meta charset=\"UTF-8\" />\n</head>\n```\n\n```html\n<!-- ✗ BAD: stylesheet should come before preload -->\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Page Title</title>\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\" />\n  <link rel=\"stylesheet\" href=\"styles.css\" />\n</head>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- ✓ GOOD: optimal order -->\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n  <title>Page Title</title>\n  <link rel=\"preconnect\" href=\"https://example.com\" />\n  <script src=\"script.js\" async></script>\n  <style>\n    @import url(\"styles.css\");\n  </style>\n  <script>\n    console.log(\"sync script\");\n  </script>\n  <link rel=\"stylesheet\" href=\"styles.css\" />\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\" />\n  <script src=\"deferred.js\" defer></script>\n  <link rel=\"prefetch\" href=\"next-page.html\" />\n</head>\n```\n\n```html\n<!-- ✓ GOOD: base comes before title (both are META category) -->\n<head>\n  <base href=\"/\" />\n  <meta charset=\"UTF-8\" />\n  <title>Page Title</title>\n</head>\n```\n\n### With `ignores` option\n\n#### Example 1: Ignore all script tags\n\n```html\n<!-- ✓ GOOD: all scripts are ignored, other elements follow optimal order -->\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Page Title</title>\n  <link rel=\"stylesheet\" href=\"styles.css\" />\n  <script src=\"analytics.js\" defer></script>\n  <!-- script position is ignored -->\n  <script src=\"app.js\"></script>\n  <!-- script position is ignored -->\n</head>\n```\n\nWith configuration:\n\n```js,.eslintrc.js\n{\n  ignores: [{ tagPattern: \"^script$\" }];\n}\n```\n\n#### Example 2: Ignore scripts with specific src (AND condition)\n\n```html\n<!-- ✓ GOOD: only analytics scripts are ignored -->\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Page Title</title>\n  <script src=\"async.js\" async></script>\n  <!-- follows optimal order -->\n  <script src=\"analytics.js\"></script>\n  <!-- ignored: matches both tagPattern AND attrValuePattern -->\n</head>\n```\n\nWith configuration:\n\n```js,.eslintrc.js\n{\n  ignores: [{ tagPattern: \"^script$\", attrValuePattern: \"analytics\" }];\n}\n```\n\n#### Example 3: Multiple ignore patterns\n\n```html\n<!-- ✓ GOOD: analytics scripts and cdn preconnect links are ignored -->\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Page Title</title>\n  <link rel=\"stylesheet\" href=\"styles.css\" />\n  <script src=\"analytics.js\"></script>\n  <!-- ignored -->\n  <link rel=\"preconnect\" href=\"https://cdn.example.com\" />\n  <!-- ignored -->\n</head>\n```\n\nWith configuration:\n\n```js,.eslintrc.js\n{\n  ignores: [\n    { tagPattern: \"^script$\", attrValuePattern: \"analytics\" },\n    { tagPattern: \"^link$\", attrValuePattern: \"cdn\" },\n  ];\n}\n```\n\n## Why?\n\nThe order of elements in the `<head>` affects how quickly a browser can start rendering a page and how soon users can interact with it:\n\n- **Critical metadata** (`charset`, `viewport`) should come first so the browser knows how to interpret the document\n- **Title** should come early for accessibility and SEO\n- **Preconnect** links should come before resources that use those connections\n- **Async scripts** can start downloading early without blocking rendering\n- **Synchronous scripts and styles** should be positioned to minimize render-blocking\n- **Preloads** should come after render-critical resources\n- **Deferred scripts** and **prefetch** resources have lower priority\n\nFollowing this order can improve Core Web Vitals metrics like First Contentful Paint (FCP) and Largest Contentful Paint (LCP).\n\n## Further Reading\n\n- [capo.js - Get your `<head>` in order](https://github.com/rviscomi/capo.js)\n- [CT.css - Let's take a look at your `<head>`](https://csswizardary.com/ct/)\n- [Vitaly Friedman - Nordic.js 2022](https://youtu.be/uqLl-Yew2o8?t=2873)\n"
  },
  {
    "path": "docs/rules/id-naming-convention.md",
    "content": "---\ntitle: id-naming-convention\ndescription: >-\n  Enforce consistent naming convention for id attributes across your HTML\n  documents.\n---\n\n# id-naming-convention\n\nThis rule enforces a consistent naming convention for `id` attribute values.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/id-naming-convention\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule supports four naming conventions. `camelCase`, `snake_case`, `PascalCase`, `kebab-case` (default `snake_case`). It also supports `regex`, which allows you to define a custom naming convention.\n\n### Options\n\n- `\"snake_case\"` (default): Enforce snake_case format.\n- `\"camelCase\"`: Enforce camelCase format.\n- `\"PascalCase\"`: Enforce PascalCase format.\n- `\"kebab-case\"`: Enforce kebab-case format.\n- `\"regex\", { \"pattern\": \"^my-regex$\", \"flags\": \"i\" }`: Enforce a format defined by a custom regex. The `flags` option is optional.\n\n#### \"snake_case\" (default)\n\nExamples of **incorrect** code for this rule with the default `\"snake_case\"` option:\n\n```html,incorrect\n<div id=\"Foo\"></div>\n```\n\nExamples of **correct** code for this rule with the default `\"snake_case\"` option:\n\n```html,correct\n<div id=\"foo_bar\"></div>\n```\n\n#### \"camelCase\"\n\nExamples of **incorrect** code for this rule with the `\"camelCase\"` option:\n\n```html,incorrect\n<div id=\"foo_bar\"></div>\n```\n\nExamples of **correct** code for this rule with the `\"camelCase\"` option:\n\n```html,correct\n<div id=\"fooBar\"></div>\n```\n\n#### \"PascalCase\"\n\nExamples of **incorrect** code for this rule with the `\"PascalCase\"` option:\n\n```html,incorrect\n<div id=\"foo_bar\"></div>\n```\n\nExamples of **correct** code for this rule with the `\"PascalCase\"` option:\n\n```html,correct\n<div id=\"FooBar\"></div>\n```\n\n#### \"kebab-case\"\n\nExamples of **incorrect** code for this rule with the `\"kebab-case\"` option:\n\n```html,incorrect\n<div id=\"foo_bar\"></div>\n```\n\nExamples of **correct** code for this rule with the `\"kebab-case\"` option:\n\n```html,correct\n<div id=\"foo-bar\"></div>\n```\n\n#### \"regex\"\n\nExamples of **incorrect** code for this rule with the `\"regex\"` option below:\n\n```js\n{\n  \"@html-eslint/id-naming-convention\": [\"error\", \"regex\", { \"pattern\": \"^([A-Z][a-z])+[A-Z]?$\" }]\n}\n```\n\n```html,incorrect\n<div id=\"foo_bar\"></div>\n```\n\nExamples of **correct** code for this rule with the `\"regex\"` option below:\n\n```js\n{\n  \"@html-eslint/id-naming-convention\": [\"error\", \"regex\", { \"pattern\": \"^([A-Z][a-z])+[A-Z]?$\" }]\n}\n```\n\n```html,correct\n<div id=\"CuStOmReGeX\"></div>\n```\n\n## Further Reading\n\n[Wiki - Naming convention](<https://en.wikipedia.org/wiki/Naming_convention_(programming)>)\n"
  },
  {
    "path": "docs/rules/indent.md",
    "content": "---\ntitle: indent\ndescription: Enforce consistent indentation for HTML elements and attributes.\n---\n\n# indent\n\nThis rule enforces consistent indentation.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/indent\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\n### Options\n\nThis rule has a mixed option:\n\nFor 4-space indentation (default option):\n\n```json\n{\n  \"@html-eslint/indent\": [\"error\", 4]\n}\n```\n\nOr, for tabbed indentation:\n\n```json\n{\n  \"@html-eslint/indent\": [\"error\", \"tab\"]\n}\n```\n\nExamples of **incorrect** code for this rule with the default option:\n\n```html,incorrect\n<html>\n  <body></body>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n<!-- prettier-ignore -->\n```html,correct\n<html>\n    <body></body>\n</html>\n```\n\n#### number (default: 4)\n\nIf the option is number it means the number of spaces for indentation.\n\n```json\n{\n  \"@html-eslint/indent\": [\"error\", 2]\n}\n```\n\nExamples of **incorrect** code for this rule with the `2` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<html>\n      <body></body>\n</html>\n```\n\nExamples of **correct** code for this rule with the `2` option:\n\n```html,correct\n<html>\n  <body></body>\n</html>\n```\n\n#### tab\n\nIf the option is `\"tab\"` it enforces tab-based indentation.\n\n```json\n{\n  \"@html-eslint/indent\": [\"error\", \"tab\"]\n}\n```\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<html>\n          <body></body>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <body></body>\n</html>\n```\n\n#### Customizing options\n\nThis rule has an object option:\n\n```json\n{\n  \"@html-eslint/indent\": [\n    \"error\",\n    2,\n    {\n      \"Attribute\": 2,\n      \"tagChildrenIndent\": {\n        \"html\": 0,\n        \"div\": 1\n        // ...\n      }\n    }\n  ]\n}\n```\n\n- `Attribute` (default: 1): Specifies the attribute indentation level. e.g. indent of 2 spaces with `Attribute` set to `2` will indent the attributes with `4` spaces (2 x 2).\n\n- `tagChildrenIndent` (default: `{}`): Specifies the indent increment of the child tags of the specified tag. e.g. For example, `\"tagChildrenIndent\": { \"html\": 0 }` will set the `<html/>` tag children to 0 indent (2 x 0).\n\n- `ignoreComment` (default: `false`): When set to `true`, the indentation of HTML comments (including opening `<!--`, closing `-->`, and content) will not be checked. This is useful when you want to allow free-form indentation for comments.\n\n- `templateIndentBase` (default: `\"templateTag\"`): Controls the indentation base for HTML in template literals.\n  - `\"templateTag\"`: Uses the indentation of the template tag (e.g., `html\\`...\\``) as the base indentation.\n  - `\"first\"`: Uses the first element of the template literal as the base indentation (elements on the same line as the template tag are ignored).\n"
  },
  {
    "path": "docs/rules/lowercase.md",
    "content": "---\ntitle: lowercase\ndescription: Enforce lowercase for tag and attribute names following HTML best practices.\n---\n\n# lowercase\n\nThis rule enforces the use of lowercase for tag and attribute names.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/lowercase\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<Div></Div>\n```\n\n<!-- prettier-ignore -->\n```html,incorrect\n<div ID=\"foo\"></div>\n```\n\n<!-- prettier-ignore -->\n```html,incorrect\n<SCRIPT></SCRIPT>\n```\n\n<!-- prettier-ignore -->\n```html,incorrect\n<sTyle></sTyle>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div></div>\n```\n\n```html,correct\n<div id=\"foo\"></div>\n```\n\n```html,correct\n<script></script>\n```\n\n```html,correct\n<style></style>\n```\n"
  },
  {
    "path": "docs/rules/max-element-depth.md",
    "content": "---\ntitle: max-element-depth\ndescription: Enforce maximum element depth to prevent overly nested HTML structures.\n---\n\n# max-element-depth\n\nThis rule enforces a maximum allowed depth for nested HTML elements.\n\n## Why?\n\nDeeply nested HTML structures are harder to read and understand, making the code more difficult to maintain. Flatter structures are more intuitive for developers, reducing the likelihood of errors and improving team collaboration.\n\nDeep nesting also increases rendering complexity for browsers. The browser’s layout engine must compute styles and positions for every element, and excessive nesting can slow this down — especially on resource-constrained devices.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/max-element-depth\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\n### Options\n\nThis rule has an object option:\n\n- `\"max\"`: Maximum element depth to allow.\n\n```ts\n\"@html-eslint/max-element-depth\": [\"error\", {\n  \"max\": number\n}]\n```\n\nExamples of **incorrect** code for this rule with the `{\"max\": 2}` option:\n\n```html,incorrect\n<div>\n    <div>\n        <div>\n        </div>\n    </div>\n</div>\n```\n\nExamples of **correct** code for this rule with the `{\"max\": 2}` option:\n\n```html,correct\n<div>\n    <div>\n    </div>\n</div>\n```\n\n## Further Reading\n\n- [Avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size)\n"
  },
  {
    "path": "docs/rules/no-abstract-roles.md",
    "content": "---\ntitle: no-abstract-roles\ndescription: Disallow use of abstract ARIA roles that should not be used in HTML markup.\n---\n\n# no-abstract-roles\n\nThis rule disallows the use of abstract ARIA roles.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-abstract-roles\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nAbstract roles are part of the ARIA (Accessible Rich Internet Applications) specification, but they are not intended for direct use in HTML. Using these roles has no effect and may lead to accessibility issues.\n\nThe following abstract roles are disallowed by this rule:\n\n- Abstract roles\n  - command\n  - composite\n  - input\n  - landmark\n  - range\n  - roletype\n  - section\n  - sectionhead\n  - select\n  - structure\n  - widget\n  - window\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div role=\"command\"></div>\n<div role=\"composite\"></div>\n<div role=\"input\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div role=\"button\"></div>\n```\n\n## Further Reading\n\n- [HTML spec - Abstract Roles](https://www.w3.org/TR/wai-aria-1.0/roles#abstract_roles)\n"
  },
  {
    "path": "docs/rules/no-accesskey-attrs.md",
    "content": "---\ntitle: no-accesskey-attrs\ndescription: >-\n  Disallow use of accesskey attribute due to accessibility and usability\n  concerns.\n---\n\n# no-accesskey-attrs\n\nThis rule disallows the use of the `accesskey` attributes.\n\n## Why?\n\nThe `accesskey` attribute allows developers to assign keyboard shortcuts to elements.\nHowever, these shortcuts can conflict with screen readers or keyboard-only navigation, leading to accessibility issues.\nTo prevent such problems, the use of `accesskey` is discouraged.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-accesskey-attrs\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div accesskey=\"h\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div></div>\n```\n\n## Further Reading\n\n- [MDN: accesskey](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey)\n"
  },
  {
    "path": "docs/rules/no-aria-hidden-body.md",
    "content": "---\ntitle: no-aria-hidden-body\ndescription: >-\n  Disallow aria-hidden attribute on the body element to ensure page content is\n  accessible.\n---\n\n# no-aria-hidden-body\n\nThis rule disallows the use of the `aria-hidden` attribute on the `body`.\n\n## Why?\n\nThe `aria-hidden` attribute is used to hide elements from assistive technologies, such as screen readers, when the content should not be exposed to users.\n\nApplying `aria-hidden=\"true\"` to the `<body>` element removes the entire page content from the accessibility tree, effectively making the page inaccessible to users who rely on assistive technologies.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-aria-hidden-body\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<body aria-hidden=\"true\">\n  <div>Main content</div>\n</body>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<body></body>\n```\n\n## Further Reading\n\n- [MDN: Using the aria-hidden attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute)\n"
  },
  {
    "path": "docs/rules/no-aria-hidden-on-focusable.md",
    "content": "---\ntitle: no-aria-hidden-on-focusable\ndescription: Disallow aria-hidden on focusable elements to prevent accessibility conflicts.\n---\n\n# no-aria-hidden-on-focusable\n\nThis rule disallows the use of `aria-hidden=\"true\"` on focusable elements.\n\n## Why?\n\nThe `aria-hidden=\"true\"` attribute is used to hide purely decorative content from screen reader users. When this attribute is applied to focusable elements (elements that can receive keyboard focus), it creates a confusing experience for screen reader users because:\n\n1. The element is still reachable via keyboard navigation\n2. But the screen reader won't announce it when focused\n3. This can lead to a situation where users can focus on an element but don't know what it is\n\nThis creates an inconsistent and potentially confusing user experience for people relying on screen readers.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-aria-hidden-on-focusable\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule considers an element focusable if any of these conditions are met:\n\n- It has a `tabindex` attribute with a value other than `-1`\n- It has a `contenteditable` attribute that is empty, `\"true\"`, or `\"plaintext-only\"`\n- It is one of the inherently focusable elements (like `button`, `input`, etc.)\n- It is an `<a>` element with an `href` attribute\n- It is an `<audio>` or `<video>` element with a `controls` attribute\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div aria-hidden=\"true\" tabindex=\"0\"></div>\n<input aria-hidden=\"true\">\n<a href=\"/\" aria-hidden=\"true\"></a>\n<button aria-hidden=\"true\"></button>\n<textarea aria-hidden=\"true\"></textarea>\n<div aria-hidden=\"true\" contenteditable></div>\n<div aria-hidden=\"true\" contenteditable=\"true\"></div>\n<summary aria-hidden=\"true\"></summary>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div aria-hidden=\"true\"></div>\n<img aria-hidden=\"true\">\n<a aria-hidden=\"false\" href=\"#\"></a>\n<button aria-hidden=\"true\" tabindex=\"-1\"></button>\n<a href=\"/\"></a>\n<div aria-hidden=\"true\"><a href=\"#\"></a></div>\n<div aria-hidden=\"true\" contenteditable=\"false\"></div>\n```\n\n## Resources\n\n- [aria-hidden elements do not contain focusable elements](https://dequeuniversity.com/rules/axe/html/4.4/aria-hidden-focus)\n- [Element with aria-hidden has no content in sequential focus navigation](https://www.w3.org/WAI/standards-guidelines/act/rules/6cfa84/proposed/)\n- [MDN aria-hidden](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-hidden)\n"
  },
  {
    "path": "docs/rules/no-duplicate-attrs.md",
    "content": "---\ntitle: no-duplicate-attrs\ndescription: >-\n  Disallow duplicate attributes on HTML elements as per HTML specification\n  requirements.\n---\n\n# no-duplicate-attrs\n\nThis rule disallows the use of duplicate attributes.\n\n## Why?\n\nAccording to the HTML specification, each attribute name must be unique within a single element.\nDuplicate attributes are invalid and can lead to unexpected behavior in browsers.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-duplicate-attrs\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows the use of duplicate attributes.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div foo=\"foo1\" foo=\"foo2\"></div>\n<div foo foo></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div foo=\"foo\"></div>\n<div bar></div>\n```\n"
  },
  {
    "path": "docs/rules/no-duplicate-class.md",
    "content": "---\ntitle: no-duplicate-class\ndescription: >-\n  Disallow duplicate class names in class attributes to avoid confusion and\n  errors.\n---\n\n# no-duplicate-class\n\nThis rule disallows duplicate class names in `class` attributes.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-duplicate-class\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div class=\"btn btn primary btn\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div class=\"btn primary\"></div>\n```\n"
  },
  {
    "path": "docs/rules/no-duplicate-id.md",
    "content": "---\ntitle: no-duplicate-id\ndescription: Disallow duplicate id attributes to ensure unique element identification.\n---\n\n# no-duplicate-id\n\nThis rule disallows duplicate `id` attributes.\n\n## Why?\n\nIn HTML, the id attribute must be unique within a document.\nDuplicate IDs can break CSS and JavaScript selectors and interfere with accessibility tools.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-duplicate-id\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div id=\"foo\"></div>\n<div id=\"foo\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div id=\"foo\"></div>\n<div id=\"bar\"></div>\n```\n\n## Further Reading\n\n- [MDN: id](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)\n"
  },
  {
    "path": "docs/rules/no-duplicate-in-head.md",
    "content": "---\ntitle: no-duplicate-in-head\ndescription: Disallow duplicate tags in the head element to avoid redundant metadata.\n---\n\n# no-duplicate-in-head\n\nThis rule disallows duplicate tags in the `<head>` section that should be unique.\n\n## Why?\n\nCertain HTML tags in the `<head>` section should appear only once per document for proper functionality and SEO optimization. Having duplicate tags can cause:\n\n- Multiple page titles confusing search engines and browsers\n- Conflicting character encodings\n- Multiple viewport declarations causing layout issues\n- Conflicting base URLs\n- Multiple canonical URLs diluting SEO value\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-duplicate-in-head\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule checks for duplicate occurrences of the following tags within `<head>`:\n\n- `<title>` - Document title\n- `<base>` - Base URL for relative URLs\n- `<meta charset>` - Character encoding declaration\n- `<meta name=\"viewport\">` - Viewport configuration\n- `<link rel=\"canonical\">` - Canonical URL declaration\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<head>\n  <title>First Title</title>\n  <title>Second Title</title>\n</head>\n```\n\n```html,incorrect\n<head>\n  <base href=\"/\" />\n  <base href=\"/home\" />\n</head>\n```\n\n```html,incorrect\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta charset=\"ISO-8859-1\" />\n</head>\n```\n\n```html,incorrect\n<head>\n  <meta name=\"viewport\" content=\"width=device-width\" />\n  <meta name=\"viewport\" content=\"initial-scale=1\" />\n</head>\n```\n\n```html,incorrect\n<head>\n  <link rel=\"canonical\" href=\"https://example.com\" />\n  <link rel=\"canonical\" href=\"https://example.org\" />\n</head>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<head>\n  <title>Page Title</title>\n  <base href=\"/\" />\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width\" />\n  <link rel=\"canonical\" href=\"https://example.com\" />\n</head>\n```\n\n```html,correct\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"description\" content=\"Page description\" />\n  <meta name=\"keywords\" content=\"html, css\" />\n  <link rel=\"stylesheet\" href=\"style.css\" />\n</head>\n```\n\nNote that tags outside the `<head>` section are not checked by this rule, and other meta tags (like `description`, `keywords`) are allowed to have multiple instances.\n\n## Further Reading\n\n- [MDN: Document metadata](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)\n- [MDN: title element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title)\n- [MDN: base element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base)\n- [MDN: meta element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta)\n- [MDN: link element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link)\n"
  },
  {
    "path": "docs/rules/no-empty-headings.md",
    "content": "---\ntitle: no-empty-headings\ndescription: >-\n  Disallow empty or inaccessible heading elements for better document structure\n  and accessibility.\n---\n\n# no-empty-headings\n\nThis rule enforces that all heading elements (h1–h6) and elements with `role=\"heading\"` must have accessible text content.\n\n### Why?\n\nHeadings relay the structure of a webpage and provide a meaningful, hierarchical order of its content. If headings are empty or their text contents are inaccessible, this could confuse users or prevent them from accessing sections of interest, especially for those using assistive technology.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-empty-headings\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nHeadings that are empty or whose text is only present in elements with `aria-hidden=\"true\"` are not allowed, as this can confuse users or prevent them from accessing sections of interest.\n\n### ❌ Incorrect\n\n```html\n<h1></h1>\n<div role=\"heading\" aria-level=\"1\"></div>\n<h2><span aria-hidden=\"true\">Inaccessible text</span></h2>\n```\n\n### ✅ Correct\n\n```html\n<h1>Heading Content</h1>\n<h2><span>Text</span></h2>\n<div role=\"heading\" aria-level=\"1\">Heading Content</div>\n<h3 aria-hidden=\"true\">Heading Content</h3>\n<h4 hidden>Heading Content</h4>\n```\n\n### Resources\n\n- [ember-template-lint: no-empty-headings](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/no-empty-headings.md)\n"
  },
  {
    "path": "docs/rules/no-extra-spacing-attrs.md",
    "content": "---\ntitle: no-extra-spacing-attrs\ndescription: Disallow extra spacing around attributes for cleaner and more consistent HTML.\n---\n\n# no-extra-spacing-attrs\n\n> **⚠️ Deprecated**: This rule has been deprecated. Use [`no-extra-spacing-tags`](./no-extra-spacing-tags.md) instead.\n\nThis rule disallows extra spaces around attributes and between the start or end of a tag.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-extra-spacing-attrs\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<!-- an extra space between attributes -->\n<div foo=\"foo\"  bar=\"bar\"></div>\n\n<!-- an extra space between tag start and attribute -->\n<div  foo=\"foo\"></div>\n\n<!-- an extra space between tag end and attribute -->\n<div foo=\"foo\" ></div>\n\n<!-- an extra space between tag start and end -->\n<div ></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div foo=\"foo\" bar=\"bar\"></div>\n<div foo=\"foo\"></div>\n<div></div>\n```\n\n## Options\n\n- `enforceBeforeSelfClose` (default: false): Enforce exactly one space before self closing tag (`/>`)\n\nExamples of **incorrect** code for this rule with the default `{ \"enforceBeforeSelfClose\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<img src=\"foo.png\"  />\n\n<img src=\"foo.png\"/>\n```\n\n<!-- prettier-ignore-end -->\n\nExamples of **correct** code for this rule with the default `{ \"enforceBeforeSelfClose\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<img src=\"foo.png\" />\n```\n\n<!-- prettier-ignore-end -->\n\n- `disallowMissing` (default: false): Requires at least one space between attributes (no missing whitespace).\n\nExample(s) of **incorrect** code for this rule with the `{ \"disallowMissing\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\"class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\nExample(s) of **correct** code for this rule with the `{ \"disallowMissing\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\" class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\n- `disallowTabs` (default: false): Disallows tabs between attributes; enforces the use of spaces instead.\n\nExample(s) of **incorrect** code for this rule with the `{ \"disallowTabs\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div\tid=\"foo\"\tclass=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\nExample(s) of **correct** code for this rule with the `{ \"disallowTabs\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\" class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\n- `disallowInAssignment` (default: false): Disallows spaces before or after the `=` in attribute assignments.\n\nExample(s) of **incorrect** code for this rule with the `{ \"disallowInAssignment\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id = \"foo\" class = \"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\nExample(s) of **correct** code for this rule with the `{ \"disallowInAssignment\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\" class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n"
  },
  {
    "path": "docs/rules/no-extra-spacing-tags.md",
    "content": "---\ntitle: no-extra-spacing-tags\ndescription: Disallow extra spacing inside tags.\n---\n\n# no-extra-spacing-tags\n\nThis rule disallows extra spaces inside tags, including between attributes and between the tag name and its attributes or closing bracket.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-extra-spacing-tags\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<!-- an extra space between attributes -->\n<div foo=\"foo\"  bar=\"bar\"></div>\n\n<!-- an extra space between tag start and attribute -->\n<div  foo=\"foo\"></div>\n\n<!-- an extra space between tag end and attribute -->\n<div foo=\"foo\" ></div>\n\n<!-- an extra space between tag start and end -->\n<div ></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div foo=\"foo\" bar=\"bar\"></div>\n<div foo=\"foo\"></div>\n<div></div>\n```\n\n## Options\n\n- `enforceBeforeSelfClose` (default: false): Enforce exactly one space before self closing tag (`/>`)\n\nExamples of **incorrect** code for this rule with the default `{ \"enforceBeforeSelfClose\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<img src=\"foo.png\"  />\n\n<img src=\"foo.png\"/>\n```\n\n<!-- prettier-ignore-end -->\n\nExamples of **correct** code for this rule with the default `{ \"enforceBeforeSelfClose\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<img src=\"foo.png\" />\n```\n\n<!-- prettier-ignore-end -->\n\n- `disallowMissing` (default: false): Requires at least one space between attributes (no missing whitespace).\n\nExample(s) of **incorrect** code for this rule with the `{ \"disallowMissing\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\"class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\nExample(s) of **correct** code for this rule with the `{ \"disallowMissing\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\" class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\n- `disallowTabs` (default: false): Disallows tabs between attributes; enforces the use of spaces instead.\n\nExample(s) of **incorrect** code for this rule with the `{ \"disallowTabs\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div\tid=\"foo\"\tclass=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\nExample(s) of **correct** code for this rule with the `{ \"disallowTabs\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\" class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\n- `disallowInAssignment` (default: false): Disallows spaces before or after the `=` in attribute assignments.\n\nExample(s) of **incorrect** code for this rule with the `{ \"disallowInAssignment\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id = \"foo\" class = \"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n\nExample(s) of **correct** code for this rule with the `{ \"disallowInAssignment\": true }` option:\n\n<!-- prettier-ignore-start -->\n\n```html\n<div id=\"foo\" class=\"bar\">\n</div>\n```\n\n<!-- prettier-ignore-end -->\n"
  },
  {
    "path": "docs/rules/no-extra-spacing-text.md",
    "content": "---\ntitle: no-extra-spacing-text\ndescription: Disallow unnecessary consecutive spaces in text content.\n---\n\n# no-extra-spacing-text\n\nThis rule disallows multiple consecutive spaces or tabs in text and comments.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-extra-spacing-text\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\n[Whitespace in HTML is largely ignored](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace), so the purpose of this rule is to prevent unnecessary whitespace in text and comments, such as:\n\n- Tab characters.\n- Sequences of two or more consecutive whitespace characters.\n- Whitespace at the end of a line.\n\nWhen used with `--fix`, the rule will replace invalid whitespace with a single space.\n\nNote:\n\n- This rule ignores whitespace at the start of lines in order to not conflict with indentation rules. See [@html-eslint/indent](./indent).\n- This rule strips whitespace from the end of lines, as does [@html-eslint/no-trailing-spaces](./no-trailing-spaces).\n- This rule does **not** affect whitespace around attributes. See [@html-eslint/no-extra-spacing-attrs](./no-extra-spacing-attrs).\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div foo   =   \"   bar   \"   >\n  foo     bar\n</div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div foo=\"bar\">\n  foo bar\n</div>\n```\n\n### Options\n\nThis rule has an object option:\n\n- `\"skip\"`: skips whitespace-checking within the specified elements.\n\n```ts\n//...\n\"@html-eslint/no-extra-spacing-text\": [\"error\", {\n  \"skip\": Array<string>\n}]\n```\n\n#### skip\n\nYou can specify a list of tag names in the `skip` option.\nWhitespace-checking is not performed on children of the specified tags.\n\nExamples of **correct** code for the `{ \"skip\": [\"pre\"] }` option:\n\n<!-- prettier-ignore -->\n```html\n<div>\n  Only short whitespace here.\n\n  <pre>    Any    kind    of   whitespace    here!    </pre>\n</div>\n```\n"
  },
  {
    "path": "docs/rules/no-heading-inside-button.md",
    "content": "---\ntitle: no-heading-inside-button\ndescription: >-\n  Disallow heading elements inside button elements to maintain proper semantic\n  structure.\n---\n\n# no-heading-inside-button\n\nThis rule disallows the use of heading elements inside `<button>`.\n\n## Why?\n\nAssistive technologies, such as screen readers, interpret headings as navigational landmarks. Including headings inside buttons may cause unexpected behavior, making it harder for users to understand and navigate the interface.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n    rules: {\n        \"@html-eslint/no-heading-inside-button\": \"error\",\n    }\n}\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<button><h1>Click Me</h1></button>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<button><span>Click Me</span></button>\n```\n"
  },
  {
    "path": "docs/rules/no-ineffective-attrs.md",
    "content": "---\ntitle: no-ineffective-attrs\ndescription: Disallow HTML attributes that have no effect in their context.\n---\n\n# no-ineffective-attrs\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-ineffective-attrs\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows HTML attributes that have no effect in their context. Such attributes may indicate errors or unnecessary code that should be removed.\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- multiple has no effect on text inputs -->\n<input type=\"text\" multiple />\n\n<!-- multiple has no effect on checkbox inputs -->\n<input type=\"checkbox\" multiple />\n\n<!-- accept only works with file inputs -->\n<input type=\"text\" accept=\".jpg,.png\" />\n\n<!-- readonly has no effect on checkbox inputs -->\n<input type=\"checkbox\" readonly />\n\n<!-- readonly has no effect on file inputs -->\n<input type=\"file\" readonly />\n\n<!-- defer has no effect on inline scripts -->\n<script defer>\n  console.log(\"hello\");\n</script>\n\n<!-- async has no effect on inline scripts -->\n<script async>\n  console.log(\"hello\");\n</script>\n\n<!-- download needs href to work -->\n<a download=\"file.pdf\">Download</a>\n\n<!-- controlslist needs controls to work -->\n<audio controlslist=\"nodownload\"></audio>\n<video controlslist=\"nofullscreen\"></video>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- multiple works with email and file inputs -->\n<input type=\"email\" multiple />\n<input type=\"file\" multiple />\n<select multiple></select>\n\n<!-- accept works with file inputs -->\n<input type=\"file\" accept=\".jpg,.png\" />\n\n<!-- readonly works with text and password inputs -->\n<input type=\"text\" readonly />\n<input type=\"password\" readonly />\n\n<!-- defer and async work with external scripts -->\n<script defer src=\"script.js\"></script>\n<script async src=\"script.js\"></script>\n\n<!-- download works when href is present -->\n<a href=\"file.pdf\" download=\"file.pdf\">Download</a>\n\n<!-- controlslist works when controls is present -->\n<audio controls controlslist=\"nodownload\"></audio>\n<video controls controlslist=\"nofullscreen\"></video>\n```\n"
  },
  {
    "path": "docs/rules/no-inline-styles.md",
    "content": "---\ntitle: no-inline-styles\ndescription: >-\n  Disallow inline styles to promote separation of concerns and CSS best\n  practices.\n---\n\n# no-inline-styles\n\nThis rule disallows the use of inline styles.\n\n## Why?\n\nUsing inline styles in HTML is generally considered bad practice for several reasons:\n\n- **Readability and Maintainability**:\n  - Inline styles can make the HTML code less readable and harder to maintain, especially as the project grows. It becomes challenging to identify and manage styles applied to different elements when they are scattered throughout the HTML.\n- **Reusability**:\n  - Inline styles don't promote code reuse. If you want the same style applied to multiple elements, you have to duplicate the inline style for each element. This can lead to redundancy and increases the chances of errors.\n- **CSS Specificity Issues**:\n  - Inline styles have a high level of specificity, making it harder to override them with external or internal styles. This can lead to unexpected styling behavior and conflicts.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-inline-styles\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div style=\"color:#ff0a00\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div class=\"some-color\"></div>\n```\n"
  },
  {
    "path": "docs/rules/no-invalid-attr-value.md",
    "content": "---\ntitle: no-invalid-attr-value\ndescription: Disallow invalid attribute values according to HTML standards and validate against the HTML specification.\n---\n\n# no-invalid-attr-value\n\nThis rule disallows invalid attribute values according to HTML standards.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-invalid-attr-value\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule validates attribute values against [HTML standards](https://html.spec.whatwg.org) and reports errors when invalid values are used.\n\n### Options\n\nThis rule accepts an options object with the following property:\n\n- `allow`: An array of objects specifying tag/attribute combinations to allow. Each object can have:\n  - `tag` (required): The HTML tag name to match (case-insensitive)\n  - `attr` (required): The attribute name to match (case-insensitive)\n  - `valuePattern` (optional): A regular expression pattern to match specific values. If omitted, all values for the specified tag/attribute combination are allowed.\n\n#### Allowing all values for a specific tag and attribute\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-invalid-attr-value\": [\n      \"error\",\n      {\n        allow: [\n          { tag: \"input\", attr: \"type\" },\n          { tag: \"button\", attr: \"type\" }\n        ]\n      }\n    ]\n  }\n};\n```\n\nWith this configuration, any value for `type` attribute on `input` and `button` elements will be allowed.\n\n#### Allowing specific values using regex patterns\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-invalid-attr-value\": [\n      \"error\",\n      {\n        allow: [\n          // Allow exact match\n          { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n          // Allow multiple values\n          { tag: \"button\", attr: \"type\", valuePattern: \"^(custom|special)$\" },\n          // Allow pattern matching\n          { tag: \"form\", attr: \"method\", valuePattern: \"^custom-.*$\" }\n        ]\n      }\n    ]\n  }\n};\n```\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<!-- Invalid input type -->\n<input type=\"invalid-type\" />\n\n<!-- Invalid crossorigin value -->\n<img src=\"image.jpg\" crossorigin=\"invalid\" />\n\n<!-- Invalid autocomplete value -->\n<input type=\"text\" autocomplete=\"invalid-value\" />\n\n<!-- Invalid button type -->\n<button type=\"invalid\">Click</button>\n\n<!-- Invalid form method -->\n<form method=\"invalid\"></form>\n\n<!-- Invalid enctype -->\n<form enctype=\"invalid\"></form>\n\n<!-- Invalid scope -->\n<th scope=\"invalid\">Header</th>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<!-- Valid input type -->\n<input type=\"text\" />\n<input type=\"email\" />\n<input type=\"number\" />\n\n<!-- Valid crossorigin value -->\n<img src=\"image.jpg\" crossorigin=\"anonymous\" />\n<img src=\"image.jpg\" crossorigin=\"use-credentials\" />\n\n<!-- Valid rel value -->\n<link rel=\"stylesheet\" href=\"style.css\" />\n<a href=\"page.html\" rel=\"noopener\">Link</a>\n\n<!-- Valid autocomplete value -->\n<input type=\"text\" autocomplete=\"name\" />\n<input type=\"email\" autocomplete=\"email\" />\n\n<!-- Valid button type -->\n<button type=\"button\">Click</button>\n<button type=\"submit\">Submit</button>\n\n<!-- Valid form method -->\n<form method=\"post\"></form>\n<form method=\"get\"></form>\n\n<!-- Valid enctype -->\n<form enctype=\"application/x-www-form-urlencoded\"></form>\n<form enctype=\"multipart/form-data\"></form>\n\n<!-- Valid scope -->\n<th scope=\"row\">Header</th>\n<th scope=\"col\">Header</th>\n```\n\n### With `allow` option\n\nExamples of **correct** code for this rule with the `allow` option:\n\n```js,.eslintrc.js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\" }\n  ]\n}\n```\n\n```html,correct\n<!-- Any value is allowed for input type when allowed -->\n<input type=\"custom-type\" />\n<input type=\"my-special-type\" />\n```\n\n```js,.eslintrc.js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```html,correct\n<!-- Only values matching the pattern are allowed -->\n<input type=\"custom-foo\" />\n<input type=\"custom-bar\" />\n```\n\nExamples of **incorrect** code for this rule with the `allow` option:\n\n```js,.eslintrc.js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```html,incorrect\n<!-- Does not match the pattern -->\n<input type=\"invalid-type\" />\n<input type=\"special-type\" />\n```\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n"
  },
  {
    "path": "docs/rules/no-invalid-entity.md",
    "content": "---\ntitle: no-invalid-entity\ndescription: Disallow invalid HTML entities to prevent rendering issues and invalid markup.\n---\n\n# no-invalid-entity\n\nDisallow use of invalid HTML entities.\n\n## Rule Details\n\nThis rule disallows the use of invalid HTML entities in your markup. HTML entities are special codes used to represent characters with specific meanings in HTML, such as `<` (`<`) or `&` (`&`). Invalid entities—such as typos, undefined entities, or malformed numeric references—can be silently ignored by browsers, leading to rendering issues or confusion.\n\nThe rule validates both named entities (e.g., ` `) and numeric entities (e.g., ` ` for decimal or ` ` for hexadecimal) against a list of valid entities defined in `entities.json`. An entity is considered invalid if:\n\n- It is a named entity not found in `entities.json` (e.g., `&nbsb;` or `&unknown;`).\n- It is a numeric entity with an invalid format (e.g., `&#zzzz;`).\n- It is a numeric entity outside the valid Unicode range (0 to 0x10FFFF, e.g., `�`).\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-invalid-entity\": \"error\",\n  },\n};\n```\n\n### Examples\n\n#### Incorrect Code\n\n```html\n<p>&nbsb;</p>        <!-- typo -->\n<p>&unknown;</p>     <!-- undefined entity -->\n<p>&#zzzz;</p>       <!-- invalid numeric reference -->\n```\n\n#### Correct Code\n\n```html\n<p>&lt; &gt; &amp; &nbsp; &#160; &#xA0;</p>\n```\n\n## When Not To Use It\n\nDisable this rule if you are intentionally using invalid entities for specific purposes, such as testing or non-standard rendering. Be aware that invalid entities may not render consistently across different browsers.\n"
  },
  {
    "path": "docs/rules/no-invalid-role.md",
    "content": "---\ntitle: no-invalid-role\ndescription: >-\n  Disallow invalid ARIA role attributes to ensure proper accessibility\n  semantics.\n---\n\n# no-invalid-role\n\nThis rule disallows the use of an invalid ARIA role on elements.\n\n## Why?\n\nThis rule checks for the following two cases:\n\n1. When a role not included in the [official ARIA role list](https://www.w3.org/TR/wai-aria/#roles_categorization) is used.\n\n1. When `role=\"presentation\"` or `role=\"none\"` is used on certain HTML elements.\n   - Certain HTML elements have built-in semantic roles that convey important meaning to assistive technologies (e.g., screen readers). Using `role=\"presentation\"` or `role=\"none\"` removes this meaning, making the content harder to interpret for users relying on assistive tools.\n   - Interactive elements, such as `<button>`, `<a>`, or `<input>`, are inherently focusable and actionable. Applying `role=\"presentation\"` or `role=\"none\"` to these elements breaks their expected functionality and can make them unusable for assistive technology users.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-invalid-role\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<button role=\"presentation\"></button>\n<div role=\"foo\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<img role=\"presentation\" alt=\"\">\n<span role=\"none\"></span>\n```\n"
  },
  {
    "path": "docs/rules/no-multiple-empty-lines.md",
    "content": "---\ntitle: no-multiple-empty-lines\ndescription: Disallow multiple consecutive empty lines for cleaner and more readable HTML.\n---\n\n# no-multiple-empty-lines\n\nThis rule disallows the use of multiple consecutive empty lines.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-multiple-empty-lines\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows consecutive empty lines that exceed the allowed maximum.\n\n### Options\n\n- `max` (default 2): Specifies the maximum number of consecutive empty lines allowed.\n\nExamples of **incorrect** code for this rule with the default `{ \"max\": 2 }` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<div id=\"foo\"></div>\n\n\n\n<div id=\"bar\"></div>\n```\n\nExamples of **correct** code for this rule with the default `{ \"max\": 2 }` option:\n\n<!-- prettier-ignore -->\n```html,correct\n<div id=\"foo\"></div>\n\n\n<div id=\"bar\"></div>\n```\n"
  },
  {
    "path": "docs/rules/no-multiple-h1.md",
    "content": "---\ntitle: no-multiple-h1\ndescription: Disallow multiple h1 elements for better SEO and document structure.\n---\n\n# no-multiple-h1\n\nThis rule disallows the use of multiple `<h1>`.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-multiple-h1\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows the use of multiple `<h1>`.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <body>\n    <h1>head</h1>\n    <h1>head</h1>\n  </body>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <body>\n    <h1>head</h1>\n  </body>\n</html>\n```\n\n## Further Reading\n\n- [MDN - heading elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements)\n"
  },
  {
    "path": "docs/rules/no-nested-interactive.md",
    "content": "---\ntitle: no-nested-interactive\ndescription: >-\n  Disallow nested interactive elements to prevent accessibility and usability\n  issues.\n---\n\n# no-nested-interactive\n\nThis rule disallows interactive elements from being nested within other interactive elements.\n\n## Why?\n\n- Screen readers and other assistive technologies may struggle to interpret nested interactive elements correctly. This can confuse users who rely on these tools, making the interface less accessible.\n\n- Interactive elements like `<button>`, `<a>`, or `<form>` are designed with specific, independent purposes. Nesting them can result in conflicting functionality, making it unclear what action will be performed when a user interacts with the element.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-nested-interactive\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<button><iframe src=\"https:...\"></iframe></button>\n\n<a href=\"/foo\"> <button>Click Me</button> </a>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<label> text: <input type=\"text\"> </label>\n<div><button>click me</button></div>\n```\n"
  },
  {
    "path": "docs/rules/no-non-scalable-viewport.md",
    "content": "---\ntitle: no-non-scalable-viewport\ndescription: Disallow user-scalable=no in viewport meta tag for better accessibility.\n---\n\n# no-non-scalable-viewport\n\nThis rule disallows the use of `user-scalable=no` in the `<meta name=\"viewport\">`.\n\nThe `user-scalable=no` setting disables zooming on a page, which can make it difficult for users with partial or low vision to read the content.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-non-scalable-viewport\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <head>\n    <meta name=\"viewport\" content=\"width=device-width, user-scalable=no\" />\n  </head>\n  <body></body>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <meta name=\"viewport\" content=\"width=device-width\" />\n  </head>\n  <body></body>\n</html>\n```\n\n## Further Reading\n\n- [MDN: Viewport meta tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag)\n"
  },
  {
    "path": "docs/rules/no-obsolete-attrs.md",
    "content": "---\ntitle: no-obsolete-attrs\ndescription: Disallow obsolete HTML attributes that are deprecated in HTML5.\n---\n\n# no-obsolete-attrs\n\nThis rule disallows the use of obsolete attributes in HTML5.\n\n## Why?\n\nMany attributes that were commonly used in earlier HTML versions are now obsolete in HTML5.\nThese attributes are discouraged and should be replaced with modern alternatives, typically CSS or JavaScript.\n\nUsing obsolete attributes can lead to:\n\n- Non-standard HTML that may not be future-proof\n- Inconsistent rendering across browsers\n- Maintenance issues when updating codebases\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-obsolete-attrs\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows using obsolete attributes on HTML elements and provides suggestions for modern alternatives.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<!-- Obsolete presentational attributes -->\n<table align=\"center\" bgcolor=\"#ffffff\" border=\"1\"></table>\n<div align=\"left\">Content</div>\n<img src=\"image.jpg\" border=\"0\">\n\n<!-- Obsolete name attribute on certain elements -->\n<a name=\"anchor\">Link</a>\n<img name=\"myimage\" src=\"image.jpg\">\n\n<!-- Obsolete charset attribute on non-script elements -->\n<a charset=\"UTF-8\" href=\"page.html\">Link</a>\n\n<!-- Obsolete manifest attribute -->\n<html manifest=\"app.appcache\"></html>\n\n<!-- Other obsolete attributes -->\n<iframe frameborder=\"0\" scrolling=\"no\"></iframe>\n<body bgcolor=\"#ffffff\" text=\"#000000\"></body>\n<td scope=\"row\">Cell</td>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<!-- Use CSS instead of presentational attributes -->\n<table style=\"text-align: center; background-color: #ffffff; border: 1px solid black;\"></table>\n<div style=\"text-align: left;\">Content</div>\n<img src=\"image.jpg\" style=\"border: 0;\">\n\n<!-- Use id instead of name on certain elements -->\n<a id=\"anchor\">Link</a>\n<img id=\"myimage\" src=\"image.jpg\">\n\n<!-- Omit charset on non-script elements -->\n<a href=\"page.html\">Link</a>\n\n<!-- Use service workers instead of manifest -->\n<html></html>\n\n<!-- Use CSS for iframe styling -->\n<iframe style=\"border: 0;\"></iframe>\n<body style=\"background-color: #ffffff; color: #000000;\"></body>\n\n<!-- Use th with scope instead of td -->\n<th scope=\"row\">Header</th>\n```\n\n## Further Reading\n\n- [HTML Spec: Non-conforming features](https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features)\n"
  },
  {
    "path": "docs/rules/no-obsolete-tags.md",
    "content": "---\ntitle: no-obsolete-tags\ndescription: Disallow obsolete HTML elements that are deprecated in HTML5.\n---\n\n# no-obsolete-tags\n\nThis rule disallows the use of obsolete tags in HTML5.\n\n## Why?\n\nThe following elements are obsolete in HTML5.\nThese tags are discouraged and should be avoided.\n\n```plaintext\napplet, acronym, bgsound, dir, frame, frameset, noframes, isindex, keygen, listing, menuitem, nextid, noembed, plaintext, rb, rtc, strike, xmp, basefont, big, blink, center, font, marquee, multicol, nobr, spacer, tt\n```\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-obsolete-tags\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows using obsolete tags.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<applet></applet>\n<dir></dir>\n```\n\n## Further Reading\n\n- [html spec 16.2. Non-conforming features](https://html.spec.whatwg.org/#non-conforming-features)\n"
  },
  {
    "path": "docs/rules/no-positive-tabindex.md",
    "content": "---\ntitle: no-positive-tabindex\ndescription: >-\n  Disallow positive tabindex values to maintain natural tab order for\n  accessibility.\n---\n\n# no-positive-tabindex\n\nThis rule disallows the use of positive `tabindex` attribute values.\n\n## Why?\n\nIn HTML, the `tabindex` attribute is used to specify the tab order of elements when navigating through a page using the \"Tab\" key.\nBy default, elements are included in the tab order based on their position in the HTML source code. The `tabindex` attribute allows you to modify this order.\n\nIt's generally a good practice to let the natural flow of elements in the HTML dictate the tab order whenever possible.\nSetting explicit `tabindex` values should be used sparingly and only when there's a specific reason to deviate from the default order.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-positive-tabindex\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<span tabindex=\"1\">foo</span> <span tabindex=\"3\">bar</span>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<span tabindex=\"0\">foo</span> <span tabindex=\"-1\">bar</span>\n```\n"
  },
  {
    "path": "docs/rules/no-redundant-role.md",
    "content": "---\ntitle: no-redundant-role\ndescription: >-\n  Disallow redundant ARIA role attributes that match the element's implicit\n  role.\n---\n\n# no-redundant-role\n\nThis rule disallows redundant role attributes that match the element's implicit role.\n\n## Why?\n\nMany HTML elements have implicit ARIA roles. Explicitly specifying a role attribute with the same value as the element's implicit role is redundant and adds unnecessary code.\n\nFor example, a `<button>` element already has an implicit role of `button`, so adding `role=\"button\"` is redundant.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-redundant-role\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<button role=\"button\">Click me</button>\n<nav role=\"navigation\">Navigation</nav>\n<main role=\"main\">Main content</main>\n<a href=\"/\" role=\"link\">Home</a>\n<article role=\"article\">Article content</article>\n<aside role=\"complementary\">Sidebar</aside>\n<h1 role=\"heading\">Title</h1>\n<ul role=\"list\">\n  <li>Item</li>\n</ul>\n<input type=\"checkbox\" role=\"checkbox\">\n<textarea role=\"textbox\"></textarea>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<button>Click me</button>\n<nav>Navigation</nav>\n<main>Main content</main>\n<a href=\"/\">Home</a>\n\n<!-- Role that differs from implicit role -->\n<button role=\"link\">Link styled as button</button>\n<nav role=\"tablist\">Tab navigation</nav>\n\n<!-- Elements without implicit roles -->\n<div role=\"button\">Custom button</div>\n<span role=\"navigation\">Navigation</span>\n```\n"
  },
  {
    "path": "docs/rules/no-restricted-attr-values.md",
    "content": "---\ntitle: no-restricted-attr-values\ndescription: Disallow specified attribute values based on custom configuration.\n---\n\n# no-restricted-attr-values\n\nThis rule disallows the use of specified attribute values.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    '@html-eslint/no-restricted-attr-values': [\"error\",  {\n    attrPatterns: [\"class\"],\n    attrValuePatterns: [\"data-.*\"],\n    message: \"\\'data-x\\' is restricted.\"\n  }]\n  }\n};\n```\n\n## Rule Details\n\nThis rule allows you to specify attribute values that you don't want to use in your application.\n\n### Options\n\nThis rule takes an array of option objects. Each object can contain the following properties:\n\n- `attrPatterns`: An array of strings, each representing a regular expression pattern. It disallows attribute names that match any of the patterns.\n- `attrValuePatterns`: An array of strings, each representing a regular expression pattern. It disallows attribute values that match any of the patterns.\n- `message` (optional): A custom error message to be shown when the rule is triggered.\n\n```js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-restricted-attr-values\": [\n      \"error\",\n      {\n        attrPatterns: [\"class\", \"alt\"],\n        attrValuePatterns: [\"data-.*\"],\n        message: \"'data-x' is restricted.\",\n      },\n      {\n        attrPatterns: [\".*\"],\n        attrValuePatterns: [\"^foo$\"],\n        message: \"'foo' is restricted.\",\n      },\n    ],\n  },\n};\n```\n\nExamples of **incorrect** code for this rule with the option below:\n\n```json\n{\n  \"attrPatterns\": [\"data-.*\"],\n  \"attrValuePatterns\": [\"foo\"],\n  \"message\": \"Do not use foo attr value\"\n}\n```\n\n```html,incorrect\n<div data-name=\"foo\"></div>\n<img data-name=\"foo\"></div>\n```\n"
  },
  {
    "path": "docs/rules/no-restricted-attrs.md",
    "content": "---\ntitle: no-restricted-attrs\ndescription: Disallow specified attributes based on custom configuration.\n---\n\n# no-restricted-attrs\n\nThis rule disallows the use of specified attributes.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-restricted-attrs\": [\n      \"error\",\n      {\n        tagPatterns: [\"^div$\", \"^img$\"],\n        attrPatterns: [\"data-.*\"],\n        message: \"'data-x' is restricted.\",\n      },\n    ],\n  },\n};\n```\n\n## Rule Details\n\nThis rule allows you to specify attributes that you don't want to use in your application.\n\n### Options\n\nThis rule takes an array of option objects, where the `tagPatterns` and `attrPatterns` are specified.\n\n- `tagPatterns`: An array of strings representing regular expression pattern. It disallows tag name that match any of the patterns.\n- `attrPatterns`: An array of strings representing regular expression pattern. It disallows attribute names that match any of the patterns.\n- `message` (optional): A custom error message to be shown when the rule is triggered.\n\n```js\nmodule.exports = {\n  \"rules\": {\n    \"@html-eslint/no-restricted-attrs\": [\n      \"error\",\n      {\n        tagPatterns: [\"^div$\", \"^img$\"],\n        attrPatterns: [\"data-.*\"]\n        message: \"\\'data-x\\' is restricted.\"\n      },\n      {\n        tagPatterns: [\"^img$\"],\n        attrPatterns: [\"^alt$\"]\n        message: \"\\'alt\\' is restricted.\"\n      }\n    ],\n  }\n};\n```\n\nExamples of **incorrect** code for this rule with the option below:\n\n```json\n{\n  \"tagPatterns\": [\"^img$\", \"^div$\"],\n  \"attrPatterns\": [\"^data-.*\"],\n  \"message\": \"Do not use data-* attr\"\n}\n```\n\n```html,incorrect\n<div data-name=\"foo\"></div>\n<img data-name=\"foo\"></div>\n```\n"
  },
  {
    "path": "docs/rules/no-restricted-tags.md",
    "content": "---\ntitle: no-restricted-tags\ndescription: Disallow specified HTML tags based on custom configuration.\n---\n\n# no-restricted-tags\n\nThis rule disallows the use of specified tags.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-restricted-tags\": [\n      \"error\",\n      {\n        tagPatterns: [\"^div$\", \"^span$\"],\n        message: \"Use semantic elements instead of div and span.\",\n      },\n    ],\n  },\n};\n```\n\n## Rule Details\n\nThis rule allows you to specify tags that you don't want to use in your application.\n\n### Options\n\nThis rule takes an array of option objects, where the `tagPatterns` are specified.\n\n- `tagPatterns`: An array of strings representing regular expression patterns. It disallows tag names that match any of the patterns.\n- `message` (optional): A custom error message to be shown when the rule is triggered.\n\n```js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-restricted-tags\": [\n      \"error\",\n      {\n        tagPatterns: [\"^div$\", \"^span$\"],\n        message: \"Use semantic elements instead of div and span.\",\n      },\n      {\n        tagPatterns: [\"h[1-6]\"],\n        message: \"Heading tags are not allowed in this context.\",\n      },\n      {\n        tagPatterns: [\".*-.*\"],\n        message: \"Custom elements should follow naming conventions.\",\n      },\n    ],\n  },\n};\n```\n\nExamples of **incorrect** code for this rule with the option below:\n\n```json\n{\n  \"tagPatterns\": [\"^div$\", \"^span$\"],\n  \"message\": \"Use semantic elements instead of generic containers\"\n}\n```\n\n```html,incorrect\n<div>Content</div>\n<span>Text</span>\n```\n\nExamples of **correct** code for this rule with the option above:\n\n```html,correct\n<article>Content</article>\n<p>Text</p>\n<section>Content</section>\n```\n\nExamples of **incorrect** code for this rule with regex patterns:\n\n```json\n{\n  \"tagPatterns\": [\"h[1-6]\"],\n  \"message\": \"Heading tags are restricted\"\n}\n```\n\n```html,incorrect\n<h1>Title</h1>\n<h2>Subtitle</h2>\n<h3>Section</h3>\n```\n\nExamples of **incorrect** code for this rule with custom element patterns:\n\n```json\n{\n  \"tagPatterns\": [\".*-.*\"],\n  \"message\": \"Custom elements should follow naming conventions\"\n}\n```\n\n```html,incorrect\n<custom-element></custom-element>\n<my-component></my-component>\n```\n\nExamples of **incorrect** code for this rule with deprecated tags:\n\n```json\n{\n  \"tagPatterns\": [\"font|center|marquee\"],\n  \"message\": \"Deprecated HTML tags are not allowed\"\n}\n```\n\n```html,incorrect\n<font size=\"3\">Old style text</font>\n<center>Centered content</center>\n<marquee>Scrolling text</marquee>\n```\n"
  },
  {
    "path": "docs/rules/no-script-style-type.md",
    "content": "---\ntitle: no-script-style-type\ndescription: Enforce omitting type attributes for script and style elements in HTML5.\n---\n\n# no-script-style-type\n\nThis rule disallows the use of `type` attributes for style sheets (unless not using CSS) and scripts (unless using a different language than CSS/JavaScript).\n\n## Why?\n\nSpecifying the `type` attributes on the following tags is unnecessary as HTML5 implies `text/css` and `text/javascript` as defaults.\n\n- script - `type=\"text/javascript\"`\n- style, link - `type=\"text/css\"`\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-script-style-type\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule disallows the use of `type` attributes for style sheets (unless not using CSS) and scripts (unless not using JavaScript).\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<script type=\"text/javascript\" src=\"https://script.js\"></script>\n```\n\n```html,incorrect\n<link type=\"text/css\" rel=\"stylesheet\" href=\"https://styles.css\" />\n```\n\n```html,incorrect\n<style type=\"text/css\"></style>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<script src=\"https://script.js\"></script>\n```\n\n```html,correct\n<script type=\"module\" src=\"https://script.js\"></script>\n```\n\n```html,correct\n<link rel=\"stylesheet\" href=\"https://styles.css\" />\n```\n\n```html,correct\n<style></style>\n```\n\n## Further Reading\n\n- [Google HTML/CSS Style Guide - type Attributes](https://google.github.io/styleguide/htmlcssguide.html#type_Attributes)\n"
  },
  {
    "path": "docs/rules/no-skip-heading-levels.md",
    "content": "---\ntitle: no-skip-heading-levels\ndescription: Disallow skipping heading levels to maintain proper document outline.\n---\n\n# no-skip-heading-levels\n\nThis rule disallows skipping heading levels in HTML documents, such as jumping from `<h1>` to `<h3>`\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-skip-heading-levels\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <body>\n    <h1>head1</h1>\n    <h3>head3</h3>\n  </body>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <body>\n    <h1>head1</h1>\n    <h2>head2</h2>\n  </body>\n</html>\n```\n\n## Further Reading\n\n- [MDN - heading elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements)\n"
  },
  {
    "path": "docs/rules/no-target-blank.md",
    "content": "---\ntitle: no-target-blank\ndescription: Disallow unsafe target=\"_blank\" without rel=\"noopener\" or rel=\"noreferrer\".\n---\n\n# no-target-blank\n\nThis rule disallows the use of `target=\"blank\"` without `rel=\"noreferrer\"`.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-target-blank\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<a target=\"_blank\" href=\"http://example.com/\"></a>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<a target=\"_blank\" href=\"relative/path/\"></a>\n<a target=\"_blank\" rel=\"noreferrer\" href=\"http://example.com/\"></a>\n```\n"
  },
  {
    "path": "docs/rules/no-trailing-spaces.md",
    "content": "---\ntitle: no-trailing-spaces\ndescription: Disallow trailing whitespace at the end of lines for cleaner code.\n---\n\n# no-trailing-spaces\n\nThis rule disallows trailing whitespace at the end of lines.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-trailing-spaces\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div>••</div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div></div>\n```\n"
  },
  {
    "path": "docs/rules/no-whitespace-only-children.md",
    "content": "---\ntitle: no-whitespace-only-children\ndescription: Disallow tags with only whitespace children to avoid unnecessary markup.\n---\n\n# no-whitespace-only-children\n\nThis rule disallows tags that contain only whitespace characters (spaces, tabs, newlines) as children.\n\n### Why?\n\nThis rule is particularly useful when working with web components like [Lit](https://lit.dev/), where slots use fallback content. If a user accidentally adds whitespace (such as a newline) between tags, it can unintentionally override the default slot content, leading to unexpected behavior.\n\nFor example, in Lit components:\n\n```html\n<!-- ❌ This will override the default slot content with whitespace -->\n<my-component> </my-component>\n\n<!-- ✅ This will use the default slot content -->\n<my-component></my-component>\n```\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-whitespace-only-children\": \"error\",\n  },\n};\n```\n\n### Options\n\nThis rule has an object option:\n\n- `\"tagPatterns\"`: An array of regex patterns (as strings) to match tag names. If specified, only tags matching these patterns will be checked. If not specified, all tags will be checked.\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/no-whitespace-only-children\": [\n      \"error\",\n      {\n        \"tagPatterns\": [\"^my-component$\", \"^custom-.*\"]\n      }\n    ],\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule with the `\"tagPatterns\": [\"^custom-element$]` option:\n\n```html,incorrect\n<custom-element>\n\n</custom-element>\n\n<custom-element> </custom-element>\n\n<custom-element>\n</custom-element>\n\n<custom-element> <!--comment --> </custom-element>\n```\n\nExamples of **correct** code for this rule with the `\"tagPatterns\": [\"^custom-element$]` option:\n\n```html,correct\n<custom-element> content </custom-element>\n<custom-element><!--comment --></custom-element>\n```\n"
  },
  {
    "path": "docs/rules/prefer-https.md",
    "content": "---\ntitle: prefer-https\ndescription: Prefer HTTPS over HTTP for embedded resources to ensure secure connections.\n---\n\n# prefer-https\n\nThis rule enforces the use of `HTTPS` for embedded resources (image, media, style sheet and script).\n\n## Why?\n\nUsing `HTTPS` instead of `HTTP` provides several advantages:\n\n- Security: `HTTPS` encrypts data, protecting it from being intercepted or tampered with during transmission.\n- SEO: Search engines prefer `HTTPS` websites, which can improve your site's ranking.\n- User Trust: Visitors feel safer browsing a website that uses `HTTPS`.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/prefer-https\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js\"></script>\n<img src=\"http://html-eslint.org/logo.svg\">\n<link rel=\"stylesheet\" href=\"http://style.css\">\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js\"></script>\n<img src=\"https://html-eslint.org/logo.svg\">\n<img src=\"/logo.svg\">\n<link rel=\"stylesheet\" href=\"https://style.css\">\n<link rel=\"stylesheet\" href=\"./style.css\">\n```\n"
  },
  {
    "path": "docs/rules/quotes.md",
    "content": "---\ntitle: quotes\ndescription: >-\n  Enforce consistent quoting style for attribute values using double or single\n  quotes.\n---\n\n# quotes\n\nThis rule enforces consistent use of quotes for attribute values (`'` or `\"`).\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/quotes\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\n### Options\n\nThis rule has two options, a string option and an object option.\n\n1. String option (quote style):\n   - `\"double\"` (default) enforces the use of double quotes (`\"`)\n   - `\"single\"` enforces the use of single quotes (`'`)\n2. Object option:\n   - `\"enforceTemplatedAttrValue\": false` (default) does not enforce quote style inside template expressions\n   - `\"enforceTemplatedAttrValue\": true` enforces quote style inside templated attribute values, which also means bare templated attributes are disallowed\n\n#### \"double\"\n\nExamples of **incorrect** code for this rule with the default `\"double\"` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<div id='foo'></div>\n```\n\n<!-- prettier-ignore-end -->\n\nExamples of **correct** code for this rule with the default `\"double\"` option:\n\n```html,correct\n<div id=\"foo\"></div>\n<div id='containing \"double\" quotes'></div>\n```\n\nExamples of **incorrect** code for this rule with the `\"double\"` and `enforceTemplatedAttrValue: true`:\n\n<!-- prettier-ignore -->\n```js,incorrect\nhtml`<div id=${value}></div>`;\nhtml`<div id='${value}'></div>`;\n```\n\n<!-- prettier-ignore-end -->\n\nExamples of **correct** code for this rule with the `\"double\"` and `enforceTemplatedAttrValue: true`:\n\n<!-- prettier-ignore -->\n```js,correct\nhtml`<div id=\"${value}\"></div>`;\n```\n\n<!-- prettier-ignore-end -->\n\n#### \"single\"\n\nExamples of **incorrect** code for this rule with the `\"single\"` option:\n\n```html,incorrect\n<div id=\"foo\"></div>\n```\n\nExamples of **correct** code for this rule with the default `\"single\"` option:\n\n<!-- prettier-ignore -->\n```html,correct\n<div id='foo'></div>\n<div id=\"containing 'single' quotes\"></div>\n```\n\n<!-- prettier-ignore-end -->\n\nExamples of **incorrect** code for this rule with the `\"single\"` and `enforceTemplatedAttrValue: true`:\n\n<!-- prettier-ignore -->\n```js,incorrect\nhtml`<div id=${value}></div>`;\nhtml`<div id=\"${value}\"></div>`;\n```\n\n<!-- prettier-ignore-end -->\n\nExamples of **correct** code for this rule with the `\"single\"` and `enforceTemplatedAttrValue: true`:\n\n<!-- prettier-ignore -->\n```js,correct\nhtml`<div id='${value}'></div>`;\n```\n\n<!-- prettier-ignore-end -->\n\n## Further Reading\n\n- [MDN - Quoting attributes](https://developer.mozilla.org/en-US/docs/MDN/Guidelines/Code_guidelines/HTML#Quoting_attributes)\n"
  },
  {
    "path": "docs/rules/require-attrs.md",
    "content": "---\ntitle: require-attrs\ndescription: Require specified attributes on elements based on custom configuration.\n---\n\n# require-attrs\n\nThis rule enforces the use of tags with specified attributes.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-attrs\": [\n      \"error\",\n      {\n        tag: \"svg\",\n        attr: \"viewBox\",\n      },\n    ],\n  },\n};\n```\n\n## Rule Details\n\n### Options\n\nThis rule takes an array of option objects:\n\n```js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-attrs\": [\n      \"error\",\n      {\n        tag: \"img\",\n        attr: \"alt\",\n      },\n      {\n        tag: \"svg\",\n        attr: \"viewBox\",\n        value: \"0 0 100 100\",\n      },\n    ],\n  },\n};\n```\n\n#### tag\n\n- Type: `string`\n- **Required**\n\nThe HTML tag name to check for the specified attribute.\n\n#### attr\n\n- Type: `string`\n- **Required**\n\nThe attribute name that must be present on the specified tag.\n\n#### value\n\n- Type: `string`\n- _Optional_\n\nThe expected value for the attribute. If specified, the attribute must have this exact value.\n\n#### message\n\n- Type: `string`\n- _Optional_\n\nCustom error message to display when the rule is violated. If not provided, a default message will be used.\n\n```js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-attrs\": [\n      \"error\",\n      {\n        tag: \"img\",\n        attr: \"alt\",\n        message: \"Images must have alternative text for accessibility\",\n      },\n    ],\n  },\n};\n```\n\nExamples of **incorrect** code for this rule:\n\n```html\n<!-- Missing alt attribute -->\n<img />\n\n<!-- Missing viewBox attribute -->\n<svg></svg>\n\n<!-- Wrong viewBox value -->\n<svg viewBox=\"wrong\"></svg>\n```\n\nExamples of **correct** code for this rule:\n\n```html\n<!-- Has required alt attribute -->\n<img alt=\"\" />\n\n<!-- Has required viewBox attribute -->\n<svg viewBox=\"0 0 100 100\"></svg>\n\n<!-- Correct viewBox value -->\n<svg viewBox=\"0 0 100 100\"></svg>\n```\n"
  },
  {
    "path": "docs/rules/require-button-type.md",
    "content": "---\ntitle: require-button-type\ndescription: >-\n  Require type attribute on button elements to prevent unintended form\n  submissions.\n---\n\n# require-button-type\n\nThis rule enforces that `button` elements include a valid `type` attribute: `\"button\"`, `\"submit\"`, or `\"reset\"`\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-button-type\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<button></button>\n<button type=\"invalid\"></button>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<button type=\"submit\"></button>\n<button type=\"button\"></button>\n<button type=\"reset\"></button>\n```\n\n## Further Reading\n\n- [HTML spec - the button element](https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-type)\n"
  },
  {
    "path": "docs/rules/require-closing-tags.md",
    "content": "---\ntitle: require-closing-tags\ndescription: Require closing tags for all elements to ensure valid HTML structure.\n---\n\n# require-closing-tags\n\nThis rule enforces closing tags.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-closing-tags\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<div>\n```\n\nExamples of **correct** code for this rule:\n\n<!-- prettier-ignore -->\n```html,correct\n<div></div>\n```\n\n### Options\n\nThis rule has an object option for [Void Elements](https://html.spec.whatwg.org/multipage/syntax.html#void-elements) and custom element patterns.\n\n- `\"selfClosing\": \"never\"`: (default) disallow using self closing tag on [Void Elements](https://html.spec.whatwg.org/multipage/syntax.html#void-elements).\n\n- `\"selfClosing\": \"always\"`: enforce using self closing tag on [Void Elements](https://html.spec.whatwg.org/multipage/syntax.html#void-elements).\n\n- `\"selfClosingCustomPatterns\": []`: (default) disallow self-closing for custom tags.\n\n- `\"selfClosingCustomPatterns\": [\"-\"]`: enforce self-closing for tags matching any of an array of strings representing regular expression pattern (e.g. tags including `-` in the name).\n\n#### selfClosing : \"never\"\n\nExamples of **incorrect** code for the `{ \"selfClosing\": \"never\"}` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<img />\n<base />\n```\n\nExamples of **correct** code for the `{ \"selfClosing\": \"never\"}` option:\n\n<!-- prettier-ignore -->\n```html,correct\n<img>\n<base>\n```\n\n#### selfClosing : \"always\"\n\nExamples of **incorrect** code for the `{ \"selfClosing\": \"always\" }` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<img>\n<base>\n```\n\nExamples of **correct** code for the `{ \"selfClosing\": \"always\" }` option:\n\n<!-- prettier-ignore -->\n```html,correct\n<img />\n<base />\n```\n\n#### selfClosingCustomPatterns: [\"-\"]\n\nExamples of **incorrect** code for the `{ \"selfClosingCustomPatterns\": [\"-\"] }` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<custom-tag> </custom-tag>\n```\n\nExamples of **correct** code for the `{ \"selfClosingCustomPatterns\": [\"-\"] }` option:\n\n<!-- prettier-ignore -->\n```html,correct\n<custom-tag>children</custom-tag>\n<custom-tag />\n```\n\n#### selfClosingCustomPatterns: []\n\nExamples of **incorrect** code for the `{ \"selfClosingCustomPatterns\": [] }` option:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<custom-tag />\n```\n\nExamples of **correct** code for the `{ \"selfClosingCustomPatterns\": [] }` option:\n\n<!-- prettier-ignore -->\n```html,correct\n<custom-tag> </custom-tag>\n```\n\n## Further Reading\n\n- [Void Elements](https://html.spec.whatwg.org/multipage/syntax.html#void-elements)\n"
  },
  {
    "path": "docs/rules/require-content.md",
    "content": "---\ntitle: require-content\ndescription: >-\n  Require that certain elements have meaningful content or an accessible name.\n---\n\n# require-content\n\nThis rule enforces that elements which must convey meaning contain actual content (text or child elements), or declare an accessible name via ARIA attributes.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-content\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nEmpty elements that are expected to carry meaning are flagged. The following elements are checked: `h1–h6`, `p`, `a`, `button`, `li`, `dt`, `dd`, `option`, `label`.\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<p></p>\n<button></button>\n<a href=\"/home\"></a>\n<h1>   </h1>\n<label></label>\n```\n\nExamples of **correct** code for this rule:\n\n<!-- prettier-ignore -->\n```html,correct\n<p>Welcome to the site.</p>\n<button>Submit</button>\n<a href=\"/home\">Home</a>\n<h1>Page title</h1>\n<label>Name</label>\n\n<!-- ARIA accessible name — visible content is optional -->\n<button aria-label=\"Close dialog\"></button>\n<a href=\"/home\" aria-labelledby=\"nav-home\"></a>\n\n<!-- Hidden elements are exempt -->\n<p hidden></p>\n<button aria-hidden=\"true\"></button>\n\n<!-- Child elements count as content -->\n<button><img src=\"icon.svg\" alt=\"Submit\" /></button>\n```\n\n### Exemptions\n\nThe rule does **not** flag an element when any of the following are true:\n\n- **`aria-label`** or **`aria-labelledby`** is present — the element has an accessible name via ARIA.\n- **`hidden`** attribute is present — the element is hidden from the accessibility tree.\n- **`aria-hidden=\"true\"`** is present — the element is hidden from assistive technology.\n"
  },
  {
    "path": "docs/rules/require-details-summary.md",
    "content": "---\ntitle: require-details-summary\ndescription: >-\n  Require `<details>` elements to have a `<summary>` as their first child element.\n---\n\n# require-details-summary\n\nThe HTML specification states that the first child element of a `<details>` element should be a `<summary>`. The `<summary>` serves as the visible label/toggle for the disclosure widget. Without it, browsers generate a default label (typically \"Details\") which is rarely appropriate for users.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-details-summary\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n<!-- prettier-ignore -->\n```html,incorrect\n<!-- No <summary> at all -->\n<details>\n  <p>Hidden content</p>\n</details>\n\n<!-- <summary> is not the first element child -->\n<details>\n  <p>Content before summary</p>\n  <summary>Toggle</summary>\n</details>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<details>\n  <summary>Show more</summary>\n  <p>Hidden content</p>\n</details>\n\n<details>\n  <summary>Configuration options</summary>\n  <ul>\n    <li>Option A</li>\n    <li>Option B</li>\n  </ul>\n</details>\n```\n\n## Further Reading\n\n- [HTML spec - the details element](https://html.spec.whatwg.org/multipage/interactive-elements.html#the-details-element)\n- [HTML spec - the summary element](https://html.spec.whatwg.org/multipage/interactive-elements.html#the-summary-element)\n"
  },
  {
    "path": "docs/rules/require-doctype.md",
    "content": "---\ntitle: require-doctype\ndescription: Require DOCTYPE declaration in HTML documents for proper rendering mode.\n---\n\n# require-doctype\n\nThis rule enforces the use of `<!DOCTYPE html>` in the document.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-doctype\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html></html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<!DOCTYPE html>\n<html></html>\n```\n\n## Further Reading\n\n- [MDN - Doctype](https://developer.mozilla.org/en-US/docs/Glossary/Doctype)\n"
  },
  {
    "path": "docs/rules/require-explicit-size.md",
    "content": "---\ntitle: require-explicit-size\ndescription: Require explicit width and height attributes on img and iframe elements.\n---\n\n# require-explicit-size\n\nThis rule enforces that certain elements such as `img` and `iframe`, have explicitly defined width and height attributes.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-explicit-size\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<img src=\"/my-image.png\">\n<iframe src=\"/page\"></iframe>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<img src=\"/my-image.png\" width=\"400\" height=\"300\">\n<iframe src=\"/page\" width=\"400\" height=\"300\"></iframe>\n```\n\n### Options\n\nThis rule has an object option:\n\n- `\"allowClass\"`: An array of class names. If an element has one of these classes, it will be exempt from this rule.\n- `\"allowId\"`: An array of IDs. If an element has one of these IDs, it will be exempt from this rule.\n\n```ts\n\"@html-eslint/require-explicit-size\": [\"error\", {\n  \"allowClass\": string[];\n  \"allowId\": string[];\n}]\n```\n\nExamples of **correct** code for the `{ \"allowClass\": [\"foo\"], \"allowId\": [\"bar\"] }` option:\n\n```html,correct\n<img class=\"foo\">\n<iframe id=\"bar\"></iframe>\n```\n\n## Further Reading\n\n- [smashingmagazine - Setting Height And Width On Images Is Important Again](https://www.smashingmagazine.com/2020/03/setting-height-width-images-important-again/)\n"
  },
  {
    "path": "docs/rules/require-form-method.md",
    "content": "---\ntitle: require-form-method\ndescription: Require method attribute on form elements for clear form submission behavior.\n---\n\n# require-form-method\n\nThis rule enforces the use of a valid `method` attribute on `<form>` elements.\n\n## Why?\n\nThe absence of the method attribute means the form will use the default `GET` method.\nWith `GET`, form data is included in the URL (e.g., `?username=john&password=secret`), which can expose sensitive information in browser history, logs, or the network request.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-form-method\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<form></form>\n<form method=\"foo\"></form>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<form method=\"post\"></form>\n<form method=\"get\"></form>\n<form method=\"dialog\"></form>\n```\n"
  },
  {
    "path": "docs/rules/require-frame-title.md",
    "content": "---\ntitle: require-frame-title\ndescription: Require title attribute on frame and iframe elements for accessibility.\n---\n\n# require-frame-title\n\nThis rule enforces the use of `title` attribute on `<frame>` and `<iframe>`.\n\n## Why?\n\nThe `title` attribute provides additional information about the content within the frame or iframe.\nThis is especially important for users with disabilities who may be using screen readers.\nWhen a screen reader encounters a frame or iframe with a title attribute, it can announce the title to the user, providing context and improving the overall accessibility of the web page.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-frame-title\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<iframe src=\"...\"></iframe> <iframe src=\"...\" title=\"\"></iframe>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<iframe src=\"...\" title=\"frame title\"></iframe>\n```\n"
  },
  {
    "path": "docs/rules/require-img-alt.md",
    "content": "---\ntitle: require-img-alt\ndescription: Enforce alt attribute on img tags for accessibility, SEO, and fallback text when images fail to load.\n---\n\n# require-img-alt\n\nThis rule enforces the use of `alt` attribute in `img` tags.\n\n## Why?\n\n- **Accessibility**\n  - The primary purpose of the `alt` attribute is to enhance web accessibility. Screen readers and other assistive technologies rely on alternative text to describe images to users with visual impairments. This allows users who cannot see the images to understand the content and context of the images on a webpage.\n- **SEO**\n  - Search engines use the `alt` text as part of their algorithms to understand the content and context of images. Providing descriptive and relevant alternative text can improve the search engine optimization (SEO) of your website, making it more likely to appear in relevant search results.\n- **Broken Image Replacement**\n  - If an image fails to load for any reason, the `alt` text is displayed in its place. This helps users understand what the image was supposed to convey, even if they cannot see the actual image.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-img-alt\": \"error\",\n  },\n};\n```\n\nScreen readers use `alt` attributes in `img` tags for describing images.\nThe `alt` value is displayed if the image fails to load.\nSo the `img` tag should contain the `alt` attribute for those who cannot see images.\n\n## Rule Details\n\nThis rule enforces the `alt` attribute at `img` tag.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<img src=\"image.png\" />\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<img src=\"image.png\" alt=\"some description\" />\n\n<img src=\"image.png\" alt=\"\" />\n<!-- empty value for decorative image -->\n```\n\n### Options\n\nThis rule takes an object option.\n\n- `substitute`: Specifies an array of attribute keys that can replace the alt attribute.\n\nExamples of **correct** code for the `{ substitute: [\"[alt]\", \"[attr.alt]\"] }` option:\n\n```html,correct\n<img src=\"image.png\" [alt]=\"...\" />\n\n<img src=\"image.png\" [attr.alt]=\"...\" />\n```\n\n## Further Reading\n\n- [MDN - img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img)\n"
  },
  {
    "path": "docs/rules/require-input-label.md",
    "content": "---\ntitle: require-input-label\ndescription: \"Require labels for input, textarea, and select elements for accessibility.\"\n---\n\n# require-input-label\n\nThis rule enforces the presence of accessible labels for input elements such as `<input type=\"text\">`, `<select>` and `<textarea>`.\n\n## Why?\n\nLabels improve accessibility for users of assistive technologies by ensuring that form controls are properly described.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-input-label\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<input type=\"text\">\n<input type=\"hidden\">\n<textarea></textarea>\n<select></select>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<input id=\"fo\">\n<label>name: <input></label>\n<textarea aria-labelledby=\"foo\"></textarea>\n```\n"
  },
  {
    "path": "docs/rules/require-lang.md",
    "content": "---\ntitle: require-lang\ndescription: >-\n  Require lang attribute on the html element for accessibility and\n  internationalization.\n---\n\n# require-lang\n\nThis rule enforces the presence of the `lang` attribute on the `<html>` tag.\n\n## Why?\n\nThe `lang` attribute in the HTML tag (`<html>`) is used to declare the language of the document.\nThis attribute is important for accessibility and helps browsers, search engines, and other software understand the language of the content.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-lang\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  ...\n</html>\n\n<html lang=\"\">\n  ...\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html lang=\"ko\">\n  ...\n</html>\n```\n\n## Further Reading\n\n- [MDN: lang](https://developer.mozilla.org/ko/docs/Web/HTML/Global_attributes/lang)\n"
  },
  {
    "path": "docs/rules/require-li-container.md",
    "content": "---\ntitle: require-li-container\ndescription: \"Require li elements to be inside ul, ol, or menu elements.\"\n---\n\n# require-li-container\n\nThis rule enforces that `<li>` elements must be children of `<ul>`, `<ol>` or `<menu>`.\n\n## Why?\n\nThe `<li>` tag should be contained in a parent element: `<ol>`, `<ul>` or `<menu>`.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-li-container\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div>\n  <li>item 1</li>\n  <li>item 2</li>\n</div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<ol>\n  <li>item 1</li>\n  <li>item 2</li>\n</ol>\n\n<ul>\n  <li>item 1</li>\n  <li>item 2</li>\n</ul>\n```\n\n## Further Reading\n\n- [MDN - li](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li)\n"
  },
  {
    "path": "docs/rules/require-meta-charset.md",
    "content": "---\ntitle: require-meta-charset\ndescription: Require meta charset declaration in the head for proper character encoding.\n---\n\n# require-meta-charset\n\nThis rule requires a `<meta charset=\"...\">` tag within the `<head>`.\n\n## Why?\n\n- **Character Encoding Declaration**\n  - The primary purpose of the `<meta charset=\"...\">` tag is to declare the character encoding used in the HTML document. Character encoding specifies how characters are represented as binary data. This declaration helps the browser interpret and display the text content correctly.\n- **Unicode Support**\n  - The most widely used character encoding for web documents is UTF-8, which supports a broad range of characters, including those from different languages and scripts. Declaring UTF-8 using `<meta charset=\"UTF-8\">` ensures proper handling of diverse character sets.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-meta-charset\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <head> </head>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <meta charset=\"UTF-8\" />\n  </head>\n</html>\n```\n"
  },
  {
    "path": "docs/rules/require-meta-description.md",
    "content": "---\ntitle: require-meta-description\ndescription: Require meta description tag in the head for SEO purposes.\n---\n\n# require-meta-description\n\nThis rule requires a `<meta name=\"description\">` tag within the `<head></head>`.\n\n## Why?\n\n`<meta name=\"description\" content=\"...\">` tag provides a concise and accurate summary of a web page's content.\n\n- **SEO**:\n  - Search engines often use the meta description as a snippet in search results to give users a preview of the content on a page. A well-crafted and relevant meta description can improve click-through rates, as it provides users with a clear idea of what to expect on the page.\n- **User Experience**:\n  - The meta description serves as a brief summary that helps users understand the content of a page before clicking on it. This enhances the user experience by allowing visitors to make informed decisions about whether to visit the page based on their interests and needs.\n- **Social Media Sharing**:\n  - When a web page is shared on social media platforms, the meta description is often used as the default description. Having a well-crafted meta description ensures that the shared content provides valuable information and encourages engagement.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-meta-description\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <head>\n    <meta name=\"author\" content=\"YeonJuAn\" />\n  </head>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <meta name=\"description\" content=\"ESLint plugin for HTML\" />\n    <meta name=\"author\" content=\"YeonJuAn\" />\n  </head>\n</html>\n```\n"
  },
  {
    "path": "docs/rules/require-meta-viewport.md",
    "content": "---\ntitle: require-meta-viewport\ndescription: Require viewport meta tag in the head for responsive design.\n---\n\n# require-meta-viewport\n\nThis rule enforces the use of `<meta name=\"viewport\">` in the `<head>`.\n\n## Why?\n\nDifferent browsers and devices may have default viewport settings.\nIncluding a `<meta name=\"viewport\">` tag ensures a consistent and predictable layout across screen sizes and platforms.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-meta-viewport\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <head></head>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n  </head>\n</html>\n```\n"
  },
  {
    "path": "docs/rules/require-open-graph-protocol.md",
    "content": "---\ntitle: require-open-graph-protocol\ndescription: Require specified Open Graph meta tags for social media sharing.\n---\n\n# require-open-graph-protocol\n\nThis rule enforces the use of specified meta tags for open graph protocol.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-open-graph-protocol\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\n### Options\n\nYou can specify an array of ogp names to enforce.\n\nExamples of **incorrect** code for this rule with the default `['og:title', 'og:type', 'og:url', 'og:image']` options:\n\n```html,incorrect\n<html>\n  <head>\n    <title>title</title>\n  </head>\n</html>\n```\n\n<!-- prettier-ignore -->\n```html,incorrect\n<html>\n  <head>\n    <title>title</title>\n    <!-- empty values -->\n    <meta property=\"og:url\" />\n    <meta property=\"og:image\" content=\"\" /> \n  </head>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <title>title</title>\n    <meta property=\"og:url\" content=\"https://canonical-url.com\" />\n    <meta property=\"og:type\" content=\"video.movie\" />\n    <meta property=\"og:title\" content=\"title\" />\n    <meta property=\"og:image\" content=\"https://image.png\" />\n  </head>\n</html>\n```\n\n## Further Reading\n\n- [The Open Graph protocol](https://ogp.me/)\n"
  },
  {
    "path": "docs/rules/require-title.md",
    "content": "---\ntitle: require-title\ndescription: Require title element in the head for document title and SEO.\n---\n\n# require-title\n\nThis rule enforces the use of `<title>` tag in the `<head>`.\n\n## Why?\n\n- **Browser Tab/Window Title**\n  - The primary purpose of the `<title>` tag is to define the title of the HTML document. The text within the `<title>` tag is displayed in the title bar of the web browser or as the tab name, providing a quick and easily identifiable reference to the page for users.\n- **Search Engine Optimization (SEO)**\n  - Search engines use the title of a page as one of the key factors in determining the content and relevance of the page to a user's search query. A descriptive and accurate title can improve search engine ranking and make it more likely that users will click on your page in search results.\n- **Browser History**\n  - The title of a page is also recorded in the browser's history. This makes it easier for users to identify and locate previously visited pages.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/require-title\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule enforces the use of `<title>` tag in the `<head>`.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<html>\n  <head> </head>\n</html>\n```\n\n```html,incorrect\n<html>\n  <head>\n    <title> </title>\n  </head>\n</html>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<html>\n  <head>\n    <title>Site Title</title>\n  </head>\n</html>\n```\n\n## Further Reading\n\n- [MDN - title](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title)\n"
  },
  {
    "path": "docs/rules/sort-attrs.md",
    "content": "---\ntitle: sort-attrs\ndescription: Enforce priority and alphabetical sorting of attributes for consistency.\n---\n\n# sort-attrs\n\nThis rule enforces priority-based and alphabetical sorting of attributes.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/sort-attrs\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<input checked autocomplete=\"foo\" />\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<input autocomplete=\"foo\" checked />\n```\n\n### Options\n\n```ts\n//...\n\"@html-eslint/sort-attrs\": [\"error\", {\n  \"priority\": Array<string | {pattern: string}>\n}]\n```\n\n#### priority\n\nThis option allows you to set an array of attribute names or pattern objects.\nWhen `priority` is defined, the specified attributes are sorted to the front with the highest priority.\n\nPriority items can be:\n\n- Strings: exact attribute name matches\n- Objects with `pattern` property: regular expression patterns to match attribute names\n\nThe default value of `priority` is `[\"id\", \"type\", \"class\", \"style\"]`.\n\nExamples of **incorrect** code for this rule with the default options (`{ \"priority\": [\"id\", \"type\", \"class\", \"style\"] }`).\n\n```html,incorrect\n<button type=\"submit\" id=\"foo\" style=\"background:red\" class=\"bar\"></button>\n```\n\nExamples of **correct** code for this rule with the default options (`{ \"priority\": [\"id\", \"type\", \"class\", \"style\"] }`).\n\n```html,correct\n<button id=\"foo\" type=\"submit\" class=\"bar\" style=\"background:red\"></button>\n```\n\nYou can also define your own priority. If set, it will override the default.\n\nExamples of **incorrect** code for this rule with the `{ \"priority\": [\"id\", \"style\"] }` option:\n\n```html,incorrect\n<div onclick=\"foo\" style=\"color:red\" id=\"foo\"></div>\n```\n\n```html,incorrect\n<div style=\"color:red\" id=\"foo\" onclick=\"foo\"></div>\n```\n\nExamples of **correct** code for this rule with the `{ \"priority\": [\"id\", \"style\"] }` option:\n\n```html,correct\n<div id=\"foo\" style=\"color:red\" onclick=\"foo\"></div>\n```\n\n##### Pattern Support\n\nYou can use regular expressions in priority items using the pattern object format:\n\nExamples of **correct** code for this rule with the `{ \"priority\": [\"id\", { \"pattern\": \"data-.*\" }, \"style\"] }` option:\n\n```html,correct\n<div id=\"foo\" data-test=\"value\" data-custom=\"attr\" style=\"color:red\" onclick=\"foo\"></div>\n```\n\nIn this example:\n\n- `id` has the highest priority (position 0)\n- Any attribute matching `data-.*` pattern has the second priority (position 1)\n- `style` has the third priority (position 2)\n- All other attributes are sorted alphabetically after the priority items\n\nExamples of **incorrect** code for this rule with the `{ \"priority\": [\"id\", { \"pattern\": \"data-.*\" }, \"style\"] }` option:\n\n```html,incorrect\n<div style=\"color:red\" data-test=\"value\" id=\"foo\" onclick=\"foo\"></div>\n```\n"
  },
  {
    "path": "docs/rules/svg-require-viewbox.md",
    "content": "---\ntitle: svg-require-viewbox\ndescription: Require `viewBox` attribute on `<svg>` elements.\n---\n\n# svg-require-viewbox\n\nThe `viewBox` attribute defines the coordinate system and aspect ratio of an SVG. Without it, the SVG has no intrinsic size information, which causes inconsistent scaling across browsers and makes it difficult to use the SVG responsively (e.g., with CSS `width: 100%`).\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/svg-require-viewbox\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<svg></svg>\n\n<svg width=\"100\" height=\"100\"></svg>\n\n<svg xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M0 0h24v24H0z\"/>\n</svg>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<svg viewBox=\"0 0 100 100\"></svg>\n\n<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n  <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n</svg>\n```\n\n## Further Reading\n\n- [MDN - SVG `viewBox` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox)\n- [CSS Tricks - How to Scale SVG](https://css-tricks.com/scale-svg/)\n"
  },
  {
    "path": "docs/rules/use-baseline.md",
    "content": "---\ntitle: use-baseline\ndescription: Enforce the use of baseline browser-compatible features and attribute values.\n---\n\n# use-baseline\n\nThis rule enforces the use of baseline features.\n\n## What is Baseline?\n\n[Baseline](https://web-platform-dx.github.io/web-features/) is an effort by the [W3C WebDX Community Group](https://www.w3.org/community/webdx/) that provides clear information about which web platform features work across [core browser set](https://web-platform-dx.github.io/web-features/#how-do-features-become-part-of-baseline%3F) today.\n\nBaseline features are available across popular browsers. Baseline has two stages:\n\n- **Newly available**: The feature works across the latest devices and browser versions. The feature might not work in older devices or browsers.\n- **Widely available**: The feature is well established and works across many devices and browser versions. It's been available across browsers for at least 2½ years (30 months).\n\nPrior to being newly available, a feature has **Limited availability** when it's not yet available across all browsers.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/use-baseline\": \"error\",\n  },\n};\n```\n\n## Rule Details\n\nThis rule warns when it finds any of the following:\n\n- An element that isn't widely available.\n- An attribute that isn't widely available.\n- An attribute value that isn't widely available.\n\nThe data is provided via the [web-features](https://www.npmjs.com/package/web-features) package.\n\n### Options\n\nThis rule has an object option:\n\n```ts\n\"@html-eslint/use-baseline\": [\"error\", {\n  \"available\": \"newly\" | \"widely\" | number; // default: \"widely\"\n}]\n```\n\n#### available: \"widely\"\n\nIf `\"widely\"` is used as an option, this rule allows features that are at the Baseline widely available stage: features that have been available across browsers for at least 30 months.\n\n#### available: \"newly\"\n\nIf `\"newly\"` is used as an option, this rule allows features that are at the Baseline newly available stage: features that have been supported on all core browsers for less than 30 months.\n\n#### available: number\n\nIf an integer `number` is used as an option, this rule allows features that became Baseline newly available that year, or earlier. (minimum: 2000)\n\n## Further Reading\n\n- [W3C WebDX Community Group - Baseline](https://web-platform-dx.github.io/web-features/)\n- [web.dev - Baseline](https://web.dev/baseline)\n- [Chrome Developers Blog - Baseline features availability in developer tools](https://developer.chrome.com/blog/web-at-io25#7_baseline_features_availability_is_now_in_your_familiar_tools_vs_code_eslint_and_more)\n- [eslint-plugin-baseline-js](https://github.com/3ru/eslint-plugin-baseline-js)\n"
  },
  {
    "path": "docs/rules.md",
    "content": "<!-- This file is generated by 'yarn docs' command. Don't edit this -->\n\n# Rules\n\n- 🔧: Meaning the rule can fix problems automatically by running eslint `--fix` options.\n- ⭐: Meaning the rule is recommended.\n\n## Best Practice\n\n| Rule                                                             | Description                                                                                    |       |\n| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----- |\n| [css-no-empty-blocks](rules/css-no-empty-blocks)                 | Disallows empty CSS blocks in `<style>` tags.                                                  |       |\n| [head-order](rules/head-order)                                   | Enforce optimal ordering of elements in `<head>`                                               | 🔧    |\n| [max-element-depth](rules/max-element-depth)                     | Enforce maximum element depth                                                                  |       |\n| [no-duplicate-attrs](rules/no-duplicate-attrs)                   | Disallow duplicate attributes                                                                  | ⭐    |\n| [no-duplicate-class](rules/no-duplicate-class)                   | Disallow duplicate class names                                                                 | 🔧    |\n| [no-duplicate-id](rules/no-duplicate-id)                         | Disallow duplicate id attributes                                                               | ⭐    |\n| [no-duplicate-in-head](rules/no-duplicate-in-head)               | Disallow duplicate tags in `<head>`                                                            |       |\n| [no-ineffective-attrs](rules/no-ineffective-attrs)               | Disallow HTML attributes that have no effect in their context                                  |       |\n| [no-inline-styles](rules/no-inline-styles)                       | Disallow using inline style                                                                    |       |\n| [no-invalid-attr-value](rules/no-invalid-attr-value)             | Disallow invalid attribute values according to HTML standards                                  |       |\n| [no-invalid-entity](rules/no-invalid-entity)                     | Disallows the use of invalid HTML entities                                                     |       |\n| [no-nested-interactive](rules/no-nested-interactive)             | Disallows nested interactive elements                                                          |       |\n| [no-obsolete-attrs](rules/no-obsolete-attrs)                     | Disallow use of obsolete attributes in HTML5                                                   | ⭐    |\n| [no-obsolete-tags](rules/no-obsolete-tags)                       | Disallow use of obsolete elements in HTML5                                                     | ⭐    |\n| [no-restricted-attr-values](rules/no-restricted-attr-values)     | Disallow specified attributes                                                                  |       |\n| [no-restricted-attrs](rules/no-restricted-attrs)                 | Disallow specified attributes                                                                  |       |\n| [no-restricted-tags](rules/no-restricted-tags)                   | Disallow specified tags                                                                        |       |\n| [no-script-style-type](rules/no-script-style-type)               | Enforce to omit type attributes for style sheets and scripts                                   | 🔧    |\n| [no-target-blank](rules/no-target-blank)                         | Disallow usage of unsafe `target='_blank'`                                                     |       |\n| [no-whitespace-only-children](rules/no-whitespace-only-children) | Disallow tags with only whitespace children.                                                   | 🔧    |\n| [prefer-https](rules/prefer-https)                               | Prefer to use HTTPS for embedded resources                                                     |       |\n| [require-attrs](rules/require-attrs)                             | Require specified attributes                                                                   | 🔧    |\n| [require-button-type](rules/require-button-type)                 | Require use of the button element with a valid type attribute.                                 | 🔧    |\n| [require-closing-tags](rules/require-closing-tags)               | Require closing tags.                                                                          | ⭐ 🔧 |\n| [require-details-summary](rules/require-details-summary)         | Require `<details>` elements to have a `<summary>` as their first child element.               |       |\n| [require-doctype](rules/require-doctype)                         | Require `<!DOCTYPE HTML>` in HTML                                                              | ⭐ 🔧 |\n| [require-explicit-size](rules/require-explicit-size)             | Enforces that some elements (img, iframe) have explicitly defined width and height attributes. |       |\n| [require-li-container](rules/require-li-container)               | Enforce `<li>` to be in `<ul>`, `<ol>` or `<menu>`.                                            | ⭐    |\n| [require-meta-charset](rules/require-meta-charset)               | Enforce use of `<meta charset=\"...\">` in `<head>`                                              | 🔧    |\n| [svg-require-viewbox](rules/svg-require-viewbox)                 | Require `viewBox` attribute on `<svg>` elements                                                |       |\n| [use-baseline](rules/use-baseline)                               | Enforce the use of baseline features.                                                          | ⭐    |\n\n## SEO\n\n| Rule                                                             | Description                                                 |     |\n| ---------------------------------------------------------------- | ----------------------------------------------------------- | --- |\n| [no-multiple-h1](rules/no-multiple-h1)                           | Disallow multiple `<h1></h1>`.                              | ⭐  |\n| [require-lang](rules/require-lang)                               | Require `lang` attribute on `<html>` tag                    | ⭐  |\n| [require-meta-description](rules/require-meta-description)       | Require use of `<meta name=\"description\">` in `<head>`      |     |\n| [require-open-graph-protocol](rules/require-open-graph-protocol) | Enforce use of specified meta tags for open graph protocol. |     |\n| [require-title](rules/require-title)                             | Require `<title>` in the `<head>`                           | ⭐  |\n\n## Accessibility\n\n| Rule                                                             | Description                                                               |     |\n| ---------------------------------------------------------------- | ------------------------------------------------------------------------- | --- |\n| [no-abstract-roles](rules/no-abstract-roles)                     | Disallow use of abstract roles                                            |     |\n| [no-accesskey-attrs](rules/no-accesskey-attrs)                   | Disallow use of accesskey attribute                                       |     |\n| [no-aria-hidden-body](rules/no-aria-hidden-body)                 | Disallow use of aria-hidden attributes on the `body` element.             |     |\n| [no-aria-hidden-on-focusable](rules/no-aria-hidden-on-focusable) | Disallow aria-hidden=\"true\" on focusable elements                         |     |\n| [no-empty-headings](rules/no-empty-headings)                     | Disallow empty or inaccessible headings.                                  |     |\n| [no-heading-inside-button](rules/no-heading-inside-button)       | Disallows the use of heading elements inside <button>.                    |     |\n| [no-invalid-role](rules/no-invalid-role)                         | Disallows use of invalid role.                                            |     |\n| [no-non-scalable-viewport](rules/no-non-scalable-viewport)       | Disallow use of `user-scalable=no` in `<meta name=\"viewport\">`.           |     |\n| [no-positive-tabindex](rules/no-positive-tabindex)               | Disallow use of positive `tabindex`.                                      |     |\n| [no-redundant-role](rules/no-redundant-role)                     | Disallow redundant role attributes that match the element's implicit role | 🔧  |\n| [no-skip-heading-levels](rules/no-skip-heading-levels)           | Disallow skipping heading levels                                          |     |\n| [require-content](rules/require-content)                         | Require that certain elements have meaningful content.                    |     |\n| [require-form-method](rules/require-form-method)                 | Require `method` attribute in `<form>`                                    |     |\n| [require-frame-title](rules/require-frame-title)                 | Require `title` in `<frame>`, `<iframe>`                                  |     |\n| [require-img-alt](rules/require-img-alt)                         | Require `alt` attribute on `<img>` tag                                    | ⭐  |\n| [require-input-label](rules/require-input-label)                 | Enforces use of label for form elements(`input`, `textarea`, `select`)    |     |\n| [require-meta-viewport](rules/require-meta-viewport)             | Enforce use of `<meta name=\"viewport\">` in `<head>`                       |     |\n\n## Style\n\n| Rule                                                       | Description                                                                                                                 |       |\n| ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----- |\n| [attrs-newline](rules/attrs-newline)                       | Enforce newline between attributes                                                                                          | ⭐ 🔧 |\n| [class-spacing](rules/class-spacing)                       | Disallow extra spacing in class attribute values                                                                            | 🔧    |\n| [element-newline](rules/element-newline)                   | Enforce newline between elements.                                                                                           | ⭐ 🔧 |\n| [id-naming-convention](rules/id-naming-convention)         | Enforce consistent naming of id attributes                                                                                  |       |\n| [indent](rules/indent)                                     | Enforce consistent indentation                                                                                              | ⭐ 🔧 |\n| [lowercase](rules/lowercase)                               | Enforce use of lowercase for tag and attribute names.                                                                       | 🔧    |\n| ~~[no-extra-spacing-attrs](rules/no-extra-spacing-attrs)~~ | ~~Disallow extra spacing around attributes~~ (Deprecated) Use [no-extra-spacing-tags](rules/no-extra-spacing-tags) instead. | ⭐ 🔧 |\n| [no-extra-spacing-tags](rules/no-extra-spacing-tags)       | Disallow extra spacing inside tags                                                                                          | ⭐ 🔧 |\n| [no-extra-spacing-text](rules/no-extra-spacing-text)       | Disallow unnecessary consecutive spaces                                                                                     | 🔧    |\n| [no-multiple-empty-lines](rules/no-multiple-empty-lines)   | Disallow multiple empty lines                                                                                               | 🔧    |\n| [no-trailing-spaces](rules/no-trailing-spaces)             | Disallow trailing whitespace at the end of lines                                                                            | 🔧    |\n| [quotes](rules/quotes)                                     | Enforce consistent quoting attributes with double(\") or single(')                                                           | ⭐ 🔧 |\n| [sort-attrs](rules/sort-attrs)                             | Enforce priority and alphabetical sorting of attributes                                                                     | 🔧    |\n"
  },
  {
    "path": "docs/svelte/getting-started.md",
    "content": "---\ntitle: svelte/getting-started\ndescription: Getting started guide for @html-eslint/eslint-plugin-svelte - installation and configuration.\n---\n\n# Getting Started\n\n`@html-eslint/eslint-plugin-svelte` is an ESLint plugin that validates HTML attribute values and baseline browser compatibility directly in your Svelte code. It extends the core `@html-eslint` functionality to work seamlessly with Svelte components.\n\n## Contents\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n\n## Installation\n\n- npm\n\n```console,Terminal\nnpm install --save-dev eslint @html-eslint/eslint-plugin-svelte svelte-eslint-parser\n```\n\n- yarn\n\n```console,Terminal\nyarn add -D eslint @html-eslint/eslint-plugin-svelte svelte-eslint-parser\n```\n\n## Configuration\n\nUpdate your ESLint configuration file:\n\n### Manual Configuration\n\n```js\n// eslint.config.js (flat config)\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n  {\n    files: [\n      \"**/*.svelte\",\n      \"*.svelte\",\n      // Need to specify the file extension for Svelte 5 with rune symbols\n      \"**/*.svelte.js\",\n      \"*.svelte.js\",\n      \"**/*.svelte.ts\",\n      \"*.svelte.ts\",\n    ],\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n      \"@html-eslint/svelte/class-spacing\": \"error\",\n    },\n  },\n];\n```\n\n### Using Preset Configurations\n\nThe plugin provides two preset configurations:\n\n- `recommended` - Enables all available rules with error severity\n- `all` - Enables all available rules with error severity (currently identical to `recommended`)\n\n#### Using the Recommended Configuration\n\n```js\n// eslint.config.js\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    languageOptions: {\n      parser: svelteParser,\n    },\n    ...htmlSvelte.configs.recommended,\n  },\n];\n```\n\n#### Using the All Configuration\n\n```js\n// eslint.config.js\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    languageOptions: {\n      parser: svelteParser,\n    },\n    ...htmlSvelte.configs.all,\n  },\n];\n```\n"
  },
  {
    "path": "docs/svelte/rules/class-spacing.md",
    "content": "---\ntitle: svelte/class-spacing\ndescription: Disallow extra spacing in class attribute values in Svelte code.\n---\n\n# class-spacing\n\nThis rule disallows extra spacing in `class` attribute values in Svelte code.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport svelteParser from \"svelte-eslint-parser\";\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n      \"@html-eslint/svelte/class-spacing\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule enforces proper spacing in `class` attribute values by:\n\n- Disallowing leading whitespace\n- Disallowing trailing whitespace\n- Disallowing multiple spaces between class names\n\nThis rule only checks fully static `class` attributes. Attributes with dynamic expressions (e.g., `class=\"foo {bar}\"`) are not checked by this rule.\n\nThis rule is auto-fixable using the `--fix` option.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```svelte\n<!-- Leading spaces -->\n<button class=\" foo\"></button>\n<div class=\"  foo bar\"></div>\n\n<!-- Trailing spaces -->\n<button class=\"foo \"></button>\n<div class=\"foo bar  \"></div>\n\n<!-- Extra spaces between class names -->\n<button class=\"foo  bar\"></button>\n<div class=\"foo   bar   baz\"></div>\n\n<!-- Multiple spacing issues -->\n<div class=\"  foo  bar  \"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```svelte\n<!-- Single class name -->\n<button class=\"foo\"></button>\n\n<!-- Multiple class names with single spaces -->\n<button class=\"foo bar\"></button>\n<div class=\"foo bar baz\"></div>\n\n<!-- Empty class -->\n<button class=\"\"></button>\n\n<!-- Dynamic class expressions (not checked) -->\n<button class=\"foo {someVar}\"></button>\n<div class=\"foo {active ? 'active' : ''}\"></div>\n\n<!-- Other attributes are not affected -->\n<button id=\" foo \"></button>\n\n<!-- Custom components are checked -->\n<Button class=\" foo \"></Button>\n\n<!-- Custom elements are checked -->\n<custom-element class=\" foo \"></custom-element>\n```\n\n## When Not To Use It\n\nIf you don't care about extra spacing in class attributes, you can disable this rule.\n\n## Further Reading\n\n- [Svelte class directive](https://svelte.dev/docs/svelte/class)\n"
  },
  {
    "path": "docs/svelte/rules/no-duplicate-class.md",
    "content": "---\ntitle: svelte/no-duplicate-class\ndescription: >-\n  Disallow duplicate class names in class attributes to avoid confusion and\n  errors.\n---\n\n# no-duplicate-class\n\nThis rule disallows duplicate class names in `class` attributes.\n\n## How to use\n\n```js,.eslintrc.js\nimport svelteParser from \"svelte-eslint-parser\";\nexport default  [\n {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n         \"@html-eslint/svelte/no-duplicate-class\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<div class=\"btn btn primary btn\"></div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div class=\"btn primary\"></div>\n```\n"
  },
  {
    "path": "docs/svelte/rules/no-ineffective-attrs.md",
    "content": "---\ntitle: svelte/no-ineffective-attrs\ndescription: Disallow HTML attributes that have no effect in their Svelte context.\n---\n\n# no-ineffective-attrs\n\nThis rule disallows HTML attributes that have no effect in their context in Svelte components.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    languageOptions: {\n      parser: svelteParser,\n    },\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    rules: {\n      \"@html-eslint/svelte/no-ineffective-attrs\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows HTML attributes that have no effect in their context. Such attributes may indicate errors or unnecessary code that should be removed.\n\n**Note**: This rule only checks lowercase HTML elements (e.g., `<input>`, `<script>`). PascalCase Svelte components (e.g., `<Input>`) and custom elements with hyphens (e.g., `<my-input>`) are ignored.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```svelte\n<!-- multiple has no effect on text inputs -->\n<input type=\"text\" multiple />\n\n<!-- multiple has no effect on checkbox inputs -->\n<input type=\"checkbox\" multiple />\n\n<!-- accept only works with file inputs -->\n<input type=\"text\" accept=\".jpg,.png\" />\n\n<!-- readonly has no effect on checkbox inputs -->\n<input type=\"checkbox\" readonly />\n\n<!-- readonly has no effect on file inputs -->\n<input type=\"file\" readonly />\n\n<!-- min/max/step only work with numeric, date, and time inputs -->\n<input type=\"text\" min=\"0\" max=\"100\" />\n<input type=\"password\" step=\"5\" />\n\n<!-- pattern only works with text-based inputs -->\n<input type=\"checkbox\" pattern=\"[0-9]+\" />\n\n<!-- maxlength/minlength only work with text-based inputs -->\n<input type=\"number\" maxlength=\"10\" />\n<input type=\"radio\" minlength=\"5\" />\n\n<!-- placeholder has no effect on these input types -->\n<input type=\"checkbox\" placeholder=\"Enter value\" />\n<input type=\"radio\" placeholder=\"Select\" />\n\n<!-- size only works with text-based inputs -->\n<input type=\"checkbox\" size=\"20\" />\n\n<!-- list has no effect on these input types -->\n<input type=\"checkbox\" list=\"suggestions\" />\n<input type=\"radio\" list=\"options\" />\n\n<!-- defer has no effect on inline scripts -->\n<script defer>\n  console.log(\"hello\");\n</script>\n\n<!-- async has no effect on inline scripts -->\n<script async>\n  console.log(\"hello\");\n</script>\n\n<!-- download needs href to work -->\n<a download=\"file.pdf\">Download</a>\n\n<!-- target needs href to work -->\n<a target=\"_blank\">Open</a>\n\n<!-- ping needs href to work -->\n<a ping=\"/analytics\">Link</a>\n\n<!-- controlslist needs controls to work -->\n<audio controlslist=\"nodownload\"></audio>\n<video controlslist=\"nofullscreen\"></video>\n\n<!-- enctype only has effect when method is \"post\" -->\n<form method=\"get\" enctype=\"multipart/form-data\"></form>\n\n<!-- form* attributes only work with type=\"submit\" -->\n<button type=\"button\" formaction=\"/submit\">Submit</button>\n<button type=\"reset\" formmethod=\"post\">Reset</button>\n\n<!-- usemap and ismap cannot be used together -->\n<img src=\"map.jpg\" usemap=\"#map\" ismap />\n```\n\nExamples of **correct** code for this rule:\n\n```svelte\n<!-- multiple works with email and file inputs -->\n<input type=\"email\" multiple />\n<input type=\"file\" multiple />\n<select multiple></select>\n\n<!-- accept works with file inputs -->\n<input type=\"file\" accept=\".jpg,.png\" />\n\n<!-- readonly works with text and password inputs -->\n<input type=\"text\" readonly />\n<input type=\"password\" readonly />\n\n<!-- min/max/step work with numeric, date, and time inputs -->\n<input type=\"number\" min=\"0\" max=\"100\" />\n<input type=\"range\" min=\"0\" max=\"10\" step=\"2\" />\n<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />\n\n<!-- pattern works with text-based inputs -->\n<input type=\"text\" pattern=\"[0-9]+\" />\n<input type=\"email\" pattern=\".+@example\\.com\" />\n\n<!-- maxlength/minlength work with text-based inputs -->\n<input type=\"text\" maxlength=\"10\" minlength=\"3\" />\n<input type=\"password\" maxlength=\"20\" />\n\n<!-- placeholder works with text and number inputs -->\n<input type=\"text\" placeholder=\"Enter name\" />\n<input type=\"number\" placeholder=\"Enter age\" />\n\n<!-- size works with text-based inputs -->\n<input type=\"text\" size=\"20\" />\n\n<!-- list works with appropriate input types -->\n<input type=\"text\" list=\"suggestions\" />\n<input type=\"email\" list=\"emails\" />\n\n<!-- defer and async work with external scripts -->\n<script defer src=\"script.js\"></script>\n<script async src=\"script.js\"></script>\n\n<!-- download works when href is present -->\n<a href=\"file.pdf\" download=\"file.pdf\">Download</a>\n\n<!-- target works when href is present -->\n<a href=\"https://example.com\" target=\"_blank\">Open</a>\n\n<!-- ping works when href is present -->\n<a href=\"/page\" ping=\"/analytics\">Link</a>\n\n<!-- controlslist works when controls is present -->\n<audio controls controlslist=\"nodownload\"></audio>\n<video controls controlslist=\"nofullscreen\"></video>\n\n<!-- enctype works when method is \"post\" -->\n<form method=\"post\" enctype=\"multipart/form-data\"></form>\n\n<!-- form* attributes work with type=\"submit\" -->\n<button type=\"submit\" formaction=\"/submit\">Submit</button>\n<button type=\"submit\" formmethod=\"post\">Submit</button>\n\n<!-- usemap without ismap -->\n<img src=\"map.jpg\" usemap=\"#map\" />\n\n<!-- Svelte expressions are skipped (dynamic values) -->\n<input type={inputType} multiple />\n<script defer={shouldDefer}>alert('hi')</script>\n\n<!-- Svelte components are ignored -->\n<Input type=\"checkbox\" multiple />\n<Script defer>console.log(\"hi\")</Script>\n\n<!-- Custom elements are ignored -->\n<custom-input type=\"text\" multiple />\n```\n\n## Checked Attributes\n\n### Input Element\n\n- `multiple` - Only effective on email, file, and select inputs\n- `accept` - Only effective on file inputs\n- `readonly` - Not effective on checkbox, radio, file, range, color inputs\n- `min`, `max`, `step` - Only effective on number, range, date, datetime-local, month, time, week inputs\n- `pattern` - Only effective on text, search, url, tel, email, password inputs\n- `maxlength`, `minlength` - Only effective on text, search, url, tel, email, password inputs\n- `placeholder` - Only effective on text, search, url, tel, email, password, number inputs\n- `size` - Only effective on text, search, url, tel, email, password inputs\n- `list` - Not effective on checkbox, radio, file, submit, image, reset, button, hidden inputs\n\n### Script Element\n\n- `defer`, `async` - Only effective on external scripts (with `src` attribute)\n\n### Anchor (`<a>`) and Area Elements\n\n- `download`, `ping`, `target` - Only effective when `href` is present\n\n### Audio and Video Elements\n\n- `controlslist` - Only effective when `controls` is present\n\n### Form Element\n\n- `enctype` - Only effective when `method` is \"post\"\n\n### Button Element\n\n- `formaction`, `formmethod`, `formenctype`, `formnovalidate`, `formtarget` - Only effective when `type` is \"submit\"\n\n### Image Element\n\n- `usemap` - Cannot be used together with `ismap`\n\n### Link Element\n\n- `sizes` - Only effective with `rel=\"icon\"` or `rel=\"apple-touch-icon\"`\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n- [Svelte Documentation](https://svelte.dev/docs)\n"
  },
  {
    "path": "docs/svelte/rules/no-invalid-attr-value.md",
    "content": "---\ntitle: svelte/no-invalid-attr-value\ndescription: Disallow invalid attribute values according to HTML standards and validate against the HTML specification.\n---\n\n# no-invalid-attr-value\n\nThis rule disallows invalid attribute values according to HTML standards.\n\n## How to use\n\n```js,.eslintrc.js\nimport svelteParser from \"svelte-eslint-parser\";\nexport default  [\n {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n         \"@html-eslint/svelte/no-invalid-attr-value\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule validates attribute values against [HTML standards](https://html.spec.whatwg.org) and reports errors when invalid values are used.\n\n### Options\n\nThis rule accepts an options object with the following property:\n\n- `allow`: An array of objects specifying tag/attribute combinations to allow. Each object can have:\n  - `tag` (required): The HTML tag name to match (case-insensitive)\n  - `attr` (required): The attribute name to match (case-insensitive)\n  - `valuePattern` (optional): A regular expression pattern to match specific values. If omitted, all values for the specified tag/attribute combination are allowed.\n\n#### Allowing all values for a specific tag and attribute\n\n```js,.eslintrc.js\nexport default  [\n {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n      \"@html-eslint/svelte/no-invalid-attr-value\": [\n        \"error\",\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\" },\n            { tag: \"button\", attr: \"type\" }\n          ]\n        }\n      ]\n    },\n  },\n];\n```\n\nWith this configuration, any value for `type` attribute on `input` and `button` elements will be allowed.\n\n#### Allowing specific values using regex patterns\n\n```js,.eslintrc.js\nexport default  [\n {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n      \"@html-eslint/svelte/no-invalid-attr-value\": [\n        \"error\",\n        {\n          allow: [\n            // Allow exact match\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n            // Allow multiple values\n            { tag: \"button\", attr: \"type\", valuePattern: \"^(custom|special)$\" },\n            // Allow pattern matching\n            { tag: \"form\", attr: \"method\", valuePattern: \"^custom-.*$\" }\n          ]\n        }\n      ]\n    },\n  },\n];\n```\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<!-- Invalid input type -->\n<input type=\"invalid-type\" />\n\n<!-- Invalid crossorigin value -->\n<img src=\"image.jpg\" crossorigin=\"invalid\" />\n\n<!-- Invalid autocomplete value -->\n<input type=\"text\" autocomplete=\"invalid-value\" />\n\n<!-- Invalid button type -->\n<button type=\"invalid\">Click</button>\n\n<!-- Invalid form method -->\n<form method=\"invalid\"></form>\n\n<!-- Invalid enctype -->\n<form enctype=\"invalid\"></form>\n\n<!-- Invalid scope -->\n<th scope=\"invalid\">Header</th>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<!-- Valid input type -->\n<input type=\"text\" />\n<input type=\"email\" />\n<input type=\"number\" />\n\n<!-- Valid crossorigin value -->\n<img src=\"image.jpg\" crossorigin=\"anonymous\" />\n<img src=\"image.jpg\" crossorigin=\"use-credentials\" />\n\n<!-- Valid rel value -->\n<link rel=\"stylesheet\" href=\"style.css\" />\n<a href=\"page.html\" rel=\"noopener\">Link</a>\n\n<!-- Valid autocomplete value -->\n<input type=\"text\" autocomplete=\"name\" />\n<input type=\"email\" autocomplete=\"email\" />\n\n<!-- Valid button type -->\n<button type=\"button\">Click</button>\n<button type=\"submit\">Submit</button>\n\n<!-- Valid form method -->\n<form method=\"post\"></form>\n<form method=\"get\"></form>\n\n<!-- Valid enctype -->\n<form enctype=\"application/x-www-form-urlencoded\"></form>\n<form enctype=\"multipart/form-data\"></form>\n\n<!-- Valid scope -->\n<th scope=\"row\">Header</th>\n<th scope=\"col\">Header</th>\n\n<!-- Svelte expressions are allowed -->\n<input type={inputType} />\n<button type={type}>Click</button>\n```\n\n### With `allow` option\n\nExamples of **correct** code for this rule with the `allow` option:\n\n```js,.eslintrc.js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\" }\n  ]\n}\n```\n\n```html,correct\n<!-- Any value is allowed for input type when allowed -->\n<input type=\"custom-type\" />\n<input type=\"my-special-type\" />\n```\n\n```js,.eslintrc.js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```html,correct\n<!-- Only values matching the pattern are allowed -->\n<input type=\"custom-foo\" />\n<input type=\"custom-bar\" />\n```\n\nExamples of **incorrect** code for this rule with the `allow` option:\n\n```js,.eslintrc.js\n{\n  \"allow\": [\n    { \"tag\": \"input\", \"attr\": \"type\", \"valuePattern\": \"^custom-.*$\" }\n  ]\n}\n```\n\n```html,incorrect\n<!-- Does not match the pattern -->\n<input type=\"invalid-type\" />\n<input type=\"special-type\" />\n```\n\n## Further Reading\n\n- [HTML Spec](https://html.spec.whatwg.org)\n"
  },
  {
    "path": "docs/svelte/rules/no-obsolete-attrs.md",
    "content": "---\ntitle: svelte/no-obsolete-attrs\ndescription: Disallow obsolete HTML attributes in Svelte that are deprecated in HTML5.\n---\n\n# no-obsolete-attrs\n\nThis rule disallows the use of obsolete attributes in HTML5 in Svelte components.\n\n## How to use\n\n```js\n// eslint.config.js (flat config)\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    languageOptions: {\n      parser: svelteParser,\n    },\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    rules: {\n      \"@html-eslint/svelte/no-obsolete-attrs\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows using obsolete attributes on HTML elements and provides suggestions for modern alternatives.\n\n## Examples\n\nExamples of **incorrect** code for this rule:\n\n```svelte\n<!-- Obsolete presentational attributes -->\n<table align=\"center\" bgcolor=\"#ffffff\" border=\"1\"></table>\n<div align=\"left\">Content</div>\n<img src=\"image.jpg\" border=\"0\" />\n\n<!-- Obsolete name attribute on certain elements -->\n<a name=\"anchor\">Link</a>\n<img name=\"myimage\" src=\"image.jpg\" />\n\n<!-- Obsolete charset attribute on non-script elements -->\n<a charset=\"UTF-8\" href=\"page.html\">Link</a>\n\n<!-- Obsolete manifest attribute -->\n<html manifest=\"app.appcache\"></html>\n\n<!-- Other obsolete attributes -->\n<iframe frameborder=\"0\" scrolling=\"no\"></iframe>\n<body bgcolor=\"#ffffff\" text=\"#000000\"></body>\n<td scope=\"row\">Cell</td>\n\n<!-- Table layout attributes -->\n<table cellpadding=\"5\" cellspacing=\"0\"></table>\n```\n\nExamples of **correct** code for this rule:\n\n```svelte\n<!-- Use CSS instead of presentational attributes -->\n<table style=\"text-align: center; background-color: #ffffff; border: 1px solid black;\"></table>\n<div style=\"text-align: left;\">Content</div>\n<img src=\"image.jpg\" style=\"border: 0;\" />\n\n<!-- Use id instead of name on certain elements -->\n<a id=\"anchor\">Link</a>\n<img id=\"myimage\" src=\"image.jpg\" />\n\n<!-- Omit charset on non-script elements -->\n<a href=\"page.html\">Link</a>\n\n<!-- Use service workers instead of manifest -->\n<html></html>\n\n<!-- Use CSS for iframe styling -->\n<iframe style=\"border: 0;\"></iframe>\n<body style=\"background-color: #ffffff; color: #000000;\"></body>\n\n<!-- Use th with scope instead of td -->\n<th scope=\"row\">Header</th>\n\n<!-- Svelte components are ignored -->\n<Table align=\"center\" bgcolor=\"#ffffff\">Content</Table>\n<MyDiv align=\"left\">Content</MyDiv>\n\n<!-- Custom elements with dashes are ignored -->\n<custom-table align=\"center\">Content</custom-table>\n```\n\n## Further Reading\n\n- [HTML Spec: Non-conforming features](https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features)\n- [Svelte Documentation](https://svelte.dev/docs)\n"
  },
  {
    "path": "docs/svelte/rules/no-obsolete-tags.md",
    "content": "---\ntitle: svelte/no-obsolete-tags\ndescription: Disallow obsolete HTML elements that are deprecated in HTML5.\n---\n\n# no-obsolete-tags\n\nThis rule disallows the use of obsolete tags in HTML5 within Svelte components.\n\n## Why?\n\nThe following elements are obsolete in HTML5.\nThese tags are discouraged and should be avoided.\n\n```plaintext\napplet, acronym, bgsound, dir, frame, frameset, noframes, isindex, keygen, listing, menuitem, nextid, noembed, plaintext, rb, rtc, strike, xmp, basefont, big, blink, center, font, marquee, multicol, nobr, spacer, tt\n```\n\n## How to use\n\n```js,.eslintrc.js\n// eslint.config.js (flat config)\nimport svelteParser from \"svelte-eslint-parser\";\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n         \"@html-eslint/svelte/no-obsolete-tags\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n\nThis rule disallows using obsolete tags in Svelte components.\n\nExamples of **incorrect** code for this rule:\n\n```html,incorrect\n<center>Centered text</center>\n\n<font color=\"red\">Red text</font>\n\n<div>\n  <marquee>Scrolling text</marquee>\n</div>\n```\n\nExamples of **correct** code for this rule:\n\n```html,correct\n<div style=\"text-align: center\">Centered text</div>\n\n<span style=\"color: red\">Red text</span>\n\n<script>\n  let count = 0;\n</script>\n\n<div>\n  <p>{count}</p>\n</div>\n```\n\n## Further Reading\n\n- [html spec 16.2. Non-conforming features](https://html.spec.whatwg.org/#non-conforming-features)\n"
  },
  {
    "path": "docs/svelte/rules/use-baseline.md",
    "content": "---\ntitle: svelte/use-baseline\ndescription: Enforce baseline browser-compatible features in Svelte components.\n---\n\n# use-baseline\n\nEnforce the use of baseline web platform features.\n\nThis rule checks whether HTML elements and attributes are baseline features according to the [web-features](https://github.com/web-platform-dx/web-features) specification. It helps ensure browser compatibility by warning about features that may not be widely supported.\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/svelte/use-baseline\": \"error\",\n  },\n};\n```\n\n## Options\n\nThis rule has an object option:\n\n- `available`: (default: `\"widely\"`) - Specifies the baseline availability level\n  - `\"widely\"`: Features that are widely available (default)\n  - `\"newly\"`: Features that are newly available\n  - `number`: A specific year (e.g., 2017, 2019) for baseline features\n\n### Examples\n\n#### Default (widely available)\n\n```js\n{\n  \"@html-eslint/svelte/use-baseline\": \"error\"\n}\n```\n\n#### Newly available features\n\n```js\n{\n  \"@html-eslint/svelte/use-baseline\": [\"error\", { \"available\": \"newly\" }]\n}\n```\n\n#### Specific year\n\n```js\n{\n  \"@html-eslint/svelte/use-baseline\": [\"error\", { \"available\": 2019 }]\n}\n```\n\n## Rule Details\n\nThis rule reports HTML elements and attributes that are not baseline features according to the specified availability level.\n\n**Note:** Svelte components (PascalCase or kebab-case with dashes like `<CustomComponent>` or `<my-component>`) are automatically skipped by this rule.\n\nExamples of **incorrect** code for this rule:\n\n```svelte\n<template shadowrootmode=\"open\"></template>\n```\n\n```svelte\n<div contenteditable=\"plaintext-only\"></div>\n```\n\n```svelte\n<input type=\"week\" />\n```\n\nExamples of **correct** code for this rule:\n\n```svelte\n<div id=\"foo\"></div>\n```\n\n```svelte\n<input type=\"number\" />\n```\n\n```svelte\n<CustomComponent popovertarget=\"mypopover\"></CustomComponent>\n```\n"
  },
  {
    "path": "docs/svelte/rules.md",
    "content": "---\ntitle: svelte/rules\ndescription: List of all available rules for @html-eslint/eslint-plugin-svelte.\n---\n\n# Rules\n\n## Available Rules\n\n| Rule                                                      | Description                                                   |\n| --------------------------------------------------------- | ------------------------------------------------------------- |\n| [class-spacing](./rules/class-spacing.md)                 | Disallow extra spacing in class attribute values              |\n| [no-duplicate-class](./rules/no-duplicate-class.md)       | Disallow duplicate class names                                |\n| [no-ineffective-attrs](./rules/no-ineffective-attrs.md)   | Disallow HTML attributes that have no effect in their context |\n| [no-invalid-attr-value](./rules/no-invalid-attr-value.md) | Disallow invalid attribute values according to HTML standards |\n| [no-obsolete-attrs](./rules/no-obsolete-attrs.md)         | Disallow use of obsolete attributes in HTML5                  |\n| [no-obsolete-tags](./rules/no-obsolete-tags.md)           | Disallow use of obsolete elements in HTML5                    |\n| [use-baseline](./rules/use-baseline.md)                   | Enforce the use of baseline features                          |\n"
  },
  {
    "path": "eslint.config.js",
    "content": "const jest = require(\"eslint-plugin-jest\");\nconst node = require(\"eslint-plugin-n\");\nconst globals = require(\"globals\");\nconst js = require(\"@eslint/js\");\nconst { FlatCompat } = require(\"@eslint/eslintrc\");\n\nconst compat = new FlatCompat({\n  baseDirectory: __dirname,\n  recommendedConfig: js.configs.recommended,\n  allConfig: js.configs.all,\n});\n\nmodule.exports = [\n  {\n    ignores: [\n      \"**/node_modules\",\n      \"**/.vscode\",\n      \"**/.parcel-cache\",\n      \"**/out\",\n      \"**/integration-test-projects\",\n      \"**/coverage\",\n      \"prettier.config.mjs\",\n      \"**/dist\",\n      \"tools/rule/templates/**/*.js\",\n    ],\n  },\n  ...compat.extends(\"eslint:recommended\"),\n  {\n    rules: {\n      \"prefer-destructuring\": [\n        \"error\",\n        {\n          VariableDeclarator: {\n            array: false,\n            object: true,\n          },\n          AssignmentExpression: {\n            array: false,\n            object: false,\n          },\n        },\n      ],\n    },\n  },\n  {\n    plugins: {\n      jest,\n      node,\n    },\n\n    languageOptions: {\n      globals: {\n        ...globals.node,\n      },\n\n      ecmaVersion: 2020,\n      sourceType: \"commonjs\",\n    },\n\n    rules: {\n      \"node/no-unsupported-features/es-builtins\": \"error\",\n      \"node/no-unsupported-features/es-syntax\": \"error\",\n      \"node/no-unsupported-features/node-builtins\": \"error\",\n    },\n  },\n  {\n    files: [\"**/*.test.js\"],\n\n    languageOptions: {\n      globals: {\n        ...jest.environments.globals.globals,\n      },\n    },\n  },\n  {\n    files: [\n      \"tools/**/*.mjs\",\n      \"packages/core/**/*.js\",\n      \"packages/eslint-plugin-svelte/**/*.js\",\n      \"**/*.mjs\",\n    ],\n    languageOptions: {\n      sourceType: \"module\",\n      parserOptions: {\n        ecmaVersion: 2020,\n      },\n    },\n  },\n];\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"$schema\": \"node_modules/@lerna-lite/cli/schemas/lerna-schema.json\",\n  \"version\": \"0.60.0\",\n  \"npmClient\": \"yarn\",\n  \"useWorkspaces\": true,\n  \"syncWorkspaceLock\": true\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@html-eslint/html-eslint\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"author\": \"yeonjuan\",\n  \"scripts\": {\n    \"test\": \"turbo run test\",\n    \"test:legacy\": \"turbo run test:legacy\",\n    \"test:integration\": \"turbo run test:integration\",\n    \"lint\": \"turbo run lint\",\n    \"format\": \"prettier --write .\",\n    \"dev\": \"turbo run dev\",\n    \"build\": \"turbo run build --no-cache --force\",\n    \"publish\": \"lerna publish\",\n    \"publish:alpha\": \"lerna publish --dist-tag alpha\",\n    \"check:ts\": \"turbo run ts\",\n    \"check:format\": \"prettier --check .\",\n    \"check:spell\": \"cspell --config .cspell.json \\\"**/*.{js,ts,tsx,md,html}\\\" --quiet\",\n    \"check\": \"yarn test && yarn check:format && yarn check:spell && yarn check:ts\",\n    \"publish:website\": \"yarn workspace website deploy\",\n    \"prepare\": \"husky\",\n    \"new-rule\": \"node ./tools/rule/new-rule.js\",\n    \"baseline\": \"node ./tools/baseline/generate-baseline.mjs\"\n  },\n  \"devDependencies\": {\n    \"@lerna-lite/cli\": \"^4.11.2\",\n    \"@lerna-lite/publish\": \"^4.11.2\",\n    \"@mdn/browser-compat-data\": \"^7.3.13\",\n    \"@parcel/packager-raw-url\": \"2.16.4\",\n    \"@parcel/transformer-jsonld\": \"2.16.4\",\n    \"@types/jest\": \"^29.5.14\",\n    \"compute-baseline\": \"^0.4.0\",\n    \"cspell\": \"^8.0.0\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-plugin-jest\": \"^29.15.0\",\n    \"eslint-plugin-n\": \"^17.24.0\",\n    \"husky\": \"^9.1.7\",\n    \"jest\": \"^29.7.0\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-jsdoc\": \"^1.8.0\",\n    \"rimraf\": \"^6.1.3\",\n    \"turbo\": \"^2.8.9\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"engines\": {\n    \"node\": \"^18.18.0 || ^20.9.0 || >=21.1.0\"\n  },\n  \"packageManager\": \"yarn@4.9.1\",\n  \"workspaces\": [\n    \"packages/**\"\n  ]\n}\n"
  },
  {
    "path": "packages/cli/README.md",
    "content": "# `@html-eslint/cli`\n\n> TODO: description\n\n## Usage\n\n```\nconst cli = require('@html-eslint/cli');\n\n// TODO: DEMONSTRATE API\n```\n"
  },
  {
    "path": "packages/cli/eslint.config.js",
    "content": "/** @type {import(\"eslint\").Linter.Config} */\nmodule.exports = {\n  root: true,\n  parserOptions: {\n    ecmaVersion: 6,\n  },\n};\n"
  },
  {
    "path": "packages/cli/lib/cli.js",
    "content": "#!/usr/bin/env node\nconst options = require(\"./options\");\nconst packageJSON = require(\"../package.json\");\nconst log = require(\"./log\");\nconst request = require(\"./request\");\nconst lint = require(\"./lint\");\nconst print = require(\"./print\");\nconst nodeFs = require(\"fs\");\nconst nodePath = require(\"path\");\n\nfunction requireRCConfig(path = \".htmleslintrc.js\") {\n  let resolved = path;\n  if (!nodePath.isAbsolute(resolved)) {\n    resolved = nodePath.join(process.cwd(), resolved);\n  }\n\n  if (!nodeFs.existsSync(path)) {\n    throw new Error(\"Cannot find config file.\");\n  }\n  return require(resolved);\n}\n\n(function cli(argv) {\n  const parsed = options.parseArgv(argv);\n\n  if (parsed.version) {\n    log(packageJSON.version);\n    return;\n  }\n  if (parsed.help) {\n    log(options.generateHelp());\n    return;\n  }\n\n  const [url] = parsed._;\n  const config = requireRCConfig(parsed.config);\n  request(url).then((res) => {\n    const results = lint(res.data, config, parsed.checkStyle);\n    print(url, results);\n    if (results.some((result) => result.fatal || result.severity === 2)) {\n      process.exit(1);\n    }\n    process.exit(0);\n  });\n})(process.argv);\n"
  },
  {
    "path": "packages/cli/lib/lint.js",
    "content": "const Linter = require(\"eslint\").Linter;\nconst htmlParser = require(\"@html-eslint/parser\");\nconst htmlPlugin = require(\"@html-eslint/eslint-plugin\");\nconst SCOPE = \"@html-eslint\";\n\nfunction createESLintConfig(config) {\n  return {\n    parser: \"@html-eslint/parser\",\n    rules: config.rules,\n  };\n}\n\nfunction getAllRules(plugin) {\n  return Object.entries(plugin.rules).reduce((rules, [name, rule]) => {\n    rules[`${SCOPE}/${name}`] = rule;\n    return rules;\n  }, {});\n}\n\n/**\n * @param {string} code\n * @param {object} rcConfig\n * @param {boolean} checkStyle\n */\nmodule.exports = function lint(code, config, checkStyle = false) {\n  const linter = new Linter();\n  const allRules = getAllRules(htmlPlugin);\n  const eslintConfig = createESLintConfig(config, checkStyle);\n\n  if (!checkStyle) {\n    Object.entries(eslintConfig.rules).forEach(([key]) => {\n      if (allRules[key].meta.docs?.category === \"Style\") {\n        eslintConfig.rules[key] = \"off\";\n      }\n    });\n  }\n\n  linter.defineParser(`${SCOPE}/parser`, htmlParser);\n  linter.defineRules(allRules);\n\n  return linter.verify(code, eslintConfig);\n};\n"
  },
  {
    "path": "packages/cli/lib/log.js",
    "content": "/** @param {string} message */\nmodule.exports = function log(message) {\n  console.log(message);\n};\n"
  },
  {
    "path": "packages/cli/lib/options.js",
    "content": "const optionator = require(\"optionator\");\n\nmodule.exports = optionator({\n  prepend: \"Usage: html-eslint <url> [options[\",\n  options: [\n    {\n      heading: \"Basic configuration\",\n    },\n    {\n      option: \"config\",\n      alias: \"c\",\n      type: \"path::String\",\n      description: \"Specify configuration files.\",\n    },\n    {\n      option: \"check-style\",\n      type: \"Boolean\",\n      default: \"false\",\n      description: \"Enable `Style` rules in configuration.\",\n    },\n    {\n      heading: \"Miscellaneous\",\n    },\n    {\n      option: \"version\",\n      alias: \"v\",\n      type: \"Boolean\",\n      description: \"Print the version number\",\n    },\n    {\n      option: \"help\",\n      alias: \"h\",\n      type: \"Boolean\",\n      description: \"Show help\",\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/cli/lib/print.js",
    "content": "const chalk = require(\"chalk\");\nconst log = require(\"./log\");\n\nconst SEVERITY_NAMES = [\"off\", \"warn\", \"error\"];\n\nfunction printSeverity(severity) {\n  const printWithColor =\n    SEVERITY_NAMES[severity] === \"error\" ? chalk.red : chalk.yellow;\n  return printWithColor(SEVERITY_NAMES[severity]);\n}\n\nmodule.exports = function print(url, results) {\n  log(chalk.underline.white(url));\n  results.forEach((result) => {\n    const { line, column, message, severity } = result;\n    log(\n      `  ${chalk.dim(`${line}:${column}`)}  ${printSeverity(\n        severity\n      )}  ${message}`\n    );\n  });\n};\n"
  },
  {
    "path": "packages/cli/lib/request.js",
    "content": "const axios = require(\"axios\");\n\nmodule.exports = function request(url) {\n  return axios.get(url);\n};\n"
  },
  {
    "path": "packages/cli/package.json",
    "content": "{\n  \"name\": \"@html-eslint/cli\",\n  \"version\": \"0.60.0\",\n  \"description\": \"HTML-ESLint CLI\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/cli.js\",\n  \"bin\": {\n    \"html-eslint\": \"./lib/cli.js\"\n  },\n  \"files\": [\n    \"lib\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"dependencies\": {\n    \"@html-eslint/eslint-plugin\": \"^0.60.0\",\n    \"@html-eslint/parser\": \"^0.60.0\",\n    \"axios\": \"^1.13.5\",\n    \"chalk\": \"^5.6.2\",\n    \"eslint\": \"^9.39.1\",\n    \"optionator\": \"^0.9.4\"\n  }\n}\n"
  },
  {
    "path": "packages/core/README.md",
    "content": "# @html-eslint/core\n\nCore HTML validation logic for html-eslint.\n\n## Overview\n\nThis package provides framework-agnostic HTML validation utilities that can be used across different ESLint plugins (Angular, Svelte, etc.).\n\n## Installation\n\n```bash\nnpm install @html-eslint/core\n```\n\n## Usage\n\n```javascript\nimport { noInvalidAttrValue } from \"@html-eslint/core\";\n\n// Create a rule instance with options\nconst rule = noInvalidAttrValue({\n  allow: [{ tag: \"img\", attr: \"src\", valuePattern: \"^https://.*\" }],\n});\n\n// Validate attributes using an adapter\nconst result = rule.checkAttributes(elementAdapter);\n```\n\n## License\n\nMIT\n"
  },
  {
    "path": "packages/core/lib/index.js",
    "content": "export {\n  noInvalidAttrValue,\n  NO_INVALID_ATTR_VALUE_MESSAGE_IDS,\n} from \"./rules/no-invalid-attr-value\";\nexport { useBaseline, USE_BASELINE_MESSAGE_IDS } from \"./rules/use-baseline\";\nexport {\n  noIneffectiveAttrs,\n  NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} from \"./rules/no-ineffective-attrs\";\nexport {\n  noObsoleteTags,\n  NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} from \"./rules/no-obsolete-tags\";\nexport {\n  noObsoleteAttrs,\n  NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} from \"./rules/no-obsolete-attrs\";\nexport { classSpacing, CLASS_SPACING_MESSAGE_IDS } from \"./rules/class-spacing\";\nexport {\n  noDuplicateClass,\n  NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} from \"./rules/no-duplicate-class\";\nexport * from \"./types\";\n"
  },
  {
    "path": "packages/core/lib/rules/class-spacing.js",
    "content": "/**\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {\n *   AttributeValueAdapter,\n *   ClassSpacingResult\n * } from \"../types\"\n */\n\nconst CLASS_BETWEEN_EXTRA_SPACES_REGEX = /\\s{2,}/;\nconst CLASS_BETWEEN_EXTRA_SPACES_REGEX_GLOBAL = /\\s{2,}/g;\nconst LINE_BREAK_REGEX = /\\r\\n|[\\r\\n\\u2028\\u2029]/u;\n/**\n * @type {{\n *   extraSpacing: \"extraSpacing\";\n * }}\n */\nexport const CLASS_SPACING_MESSAGE_IDS = {\n  extraSpacing: \"extraSpacing\",\n};\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkLeading(value, loc, range, result) {\n  // Skip leading whitespace check if value starts with newline\n  if (value.startsWith(\"\\n\")) {\n    return;\n  }\n\n  if (value.startsWith(\" \")) {\n    const leadingSpaces = value.length - value.trimStart().length;\n    const spacingStart = loc.start;\n    const spacingEnd = {\n      line: spacingStart.line,\n      column: spacingStart.column + leadingSpaces,\n    };\n    /** @type {Range} */\n    const spacingRange = [range[0], range[0] + leadingSpaces];\n    result.push({\n      messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n      loc: {\n        start: spacingStart,\n        end: spacingEnd,\n      },\n      range: spacingRange,\n    });\n  }\n}\n\n/**\n * @param {string} value\n * @returns {{ line: string; start: number }[]}\n */\nfunction splitLines(value) {\n  const lines = value.split(LINE_BREAK_REGEX);\n  let pos = 0;\n  return lines.map((line, i) => {\n    const entry = { line, start: pos };\n    const lineBreakLength = i < lines.length - 1 ? 1 : 0;\n    pos += line.length + lineBreakLength;\n    return entry;\n  });\n}\n\n/**\n * @param {number} lineIndex\n * @param {number} columnInLine\n * @param {SourceLocation} loc\n */\nfunction toColumn(lineIndex, columnInLine, loc) {\n  return lineIndex === 0 ? loc.start.column + columnInLine : columnInLine;\n}\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkBetween(value, loc, range, result) {\n  const lineEntries = splitLines(value);\n  for (let lineIndex = 0; lineIndex < lineEntries.length; lineIndex++) {\n    const { line, start: lineStart } = lineEntries[lineIndex];\n    const trimmedLine = line.trim();\n    if (!CLASS_BETWEEN_EXTRA_SPACES_REGEX.test(trimmedLine)) continue;\n\n    const lineLeadingSpaces = line.length - line.trimStart().length;\n\n    for (const match of trimmedLine.matchAll(\n      CLASS_BETWEEN_EXTRA_SPACES_REGEX_GLOBAL\n    )) {\n      const matchStartInLine = lineLeadingSpaces + match.index;\n      const matchEndInLine = matchStartInLine + match[0].length;\n\n      result.push({\n        messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n        loc: {\n          start: {\n            line: loc.start.line + lineIndex,\n            column: toColumn(lineIndex, matchStartInLine, loc) + 1,\n          },\n          end: {\n            line: loc.start.line + lineIndex,\n            column: toColumn(lineIndex, matchEndInLine, loc),\n          },\n        },\n        range: [\n          range[0] + lineStart + matchStartInLine + 1,\n          range[0] + lineStart + matchEndInLine,\n        ],\n      });\n    }\n  }\n}\n\n/**\n * @param {string} line\n * @param {number} lineIndex\n * @param {boolean} isSingleLine\n * @param {SourceLocation} loc\n */\nfunction trailingLoc(line, lineIndex, isSingleLine, loc) {\n  const trailingSpaces = line.length - line.trimEnd().length;\n  if (isSingleLine) {\n    return {\n      start: { line: loc.end.line, column: loc.end.column - trailingSpaces },\n      end: { line: loc.end.line, column: loc.end.column },\n    };\n  }\n  const columnOffset = lineIndex === 0 ? loc.start.column : 0;\n  return {\n    start: {\n      line: loc.start.line + lineIndex,\n      column: columnOffset + line.length - trailingSpaces,\n    },\n    end: {\n      line: loc.start.line + lineIndex,\n      column: columnOffset + line.length,\n    },\n  };\n}\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkTrailing(value, loc, range, result) {\n  const lineEntries = splitLines(value);\n  const isSingleLine = lineEntries.length === 1;\n\n  for (let i = 0; i < lineEntries.length; i++) {\n    const { line, start: lineStart } = lineEntries[i];\n    if (!line.endsWith(\" \")) continue;\n\n    const trailingSpaces = line.length - line.trimEnd().length;\n    result.push({\n      messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n      loc: trailingLoc(line, i, isSingleLine, loc),\n      range: [\n        range[0] + lineStart + line.length - trailingSpaces,\n        range[0] + lineStart + line.length,\n      ],\n    });\n  }\n}\n\nexport function classSpacing() {\n  return {\n    /**\n     * @param {AttributeValueAdapter} classValue\n     * @returns {ClassSpacingResult}\n     */\n    checkClassValue(classValue) {\n      /** @type {ClassSpacingResult} */\n      const result = [];\n\n      if (classValue.hasExpression()) {\n        return result;\n      }\n\n      const value = classValue.getValue();\n      if (!value) {\n        return result;\n      }\n\n      const loc = classValue.getLocation();\n      const range = classValue.getRange();\n\n      checkLeading(value, loc, range, result);\n      checkBetween(value, loc, range, result);\n      checkTrailing(value, loc, range, result);\n\n      return result;\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/rules/no-duplicate-class.js",
    "content": "/**\n * @import {\n *   AttributeValueAdapter,\n *   NoDuplicateClassResult\n * } from \"../types\"\n */\n\n/**\n * @type {{\n *   duplicateClass: \"duplicateClass\";\n * }}\n */\nexport const NO_DUPLICATE_CLASS_MESSAGE_IDS = {\n  duplicateClass: \"duplicateClass\",\n};\n\n/**\n * Split class string into tokens (class names and spaces) with their positions\n *\n * @param {string} value - The class attribute value\n * @returns {{ value: string; pos: number }[]}\n */\nfunction splitClassAndSpaces(value) {\n  /** @type {{ value: string; pos: number }[]} */\n  const result = [];\n  const regex = /(\\s+|\\S+)/g;\n  /** @type {RegExpExecArray | null} */\n  let match = null;\n\n  while ((match = regex.exec(value)) !== null) {\n    result.push({\n      value: match[0],\n      pos: match.index,\n    });\n  }\n\n  return result;\n}\n\nexport function noDuplicateClass() {\n  return {\n    /**\n     * @param {AttributeValueAdapter} classValue\n     * @returns {NoDuplicateClassResult}\n     */\n    checkClassValue(classValue) {\n      /** @type {NoDuplicateClassResult} */\n      const result = [];\n\n      if (classValue.hasExpression()) {\n        return result;\n      }\n\n      const value = classValue.getValue();\n      if (!value) {\n        return result;\n      }\n\n      const loc = classValue.getLocation();\n      const range = classValue.getRange();\n\n      const classesAndSpaces = splitClassAndSpaces(value);\n      const classSet = new Set();\n\n      classesAndSpaces.forEach(({ value, pos }) => {\n        const className = value.trim();\n\n        if (className.length) {\n          if (classSet.has(className)) {\n            const classStart = {\n              line: loc.start.line,\n              column: loc.start.column + pos,\n            };\n            const classEnd = {\n              line: loc.start.line,\n              column: loc.start.column + pos + value.length,\n            };\n            result.push({\n              messageId: NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass,\n              loc: {\n                start: classStart,\n                end: classEnd,\n              },\n              range: [range[0] + pos, range[0] + pos + value.length],\n              data: {\n                className,\n              },\n            });\n          } else {\n            classSet.add(className);\n          }\n        }\n      });\n\n      return result;\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/rules/no-ineffective-attrs.js",
    "content": "/**\n * @import {\n *   ElementAdapter,\n *   NoIneffectiveAttrsResult\n * } from \"../types\"\n */\n\n/**\n * @typedef {{\n *   attr: string;\n *   when: (adapter: ElementAdapter) => boolean;\n *   message: string;\n * }} AttributeChecker\n */\n\n/**\n * @type {{\n *   ineffective: \"ineffective\";\n * }}\n */\nexport const NO_INEFFECTIVE_ATTRS_MESSAGE_IDS = {\n  ineffective: \"ineffective\",\n};\n\nexport function noIneffectiveAttrs() {\n  /**\n   * @param {ElementAdapter} adapter\n   * @param {string} attrName\n   * @returns {string | null}\n   */\n  function getAttrValue(adapter, attrName) {\n    for (const attribute of adapter.getAttributes()) {\n      const attrKeyValue = attribute.getKey()?.getValue();\n      if (attrKeyValue && attrKeyValue === attrName) {\n        const value = attribute.getValue()?.getValue();\n        return value || null;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @param {ElementAdapter} adapter\n   * @param {string} attrName\n   * @returns {boolean}\n   */\n  function hasAttr(adapter, attrName) {\n    for (const attribute of adapter.getAttributes()) {\n      const keyValue = attribute.getKey()?.getValue();\n      if (\n        keyValue &&\n        keyValue.toLocaleLowerCase() === attrName.toLocaleLowerCase()\n      ) {\n        return true;\n      }\n    }\n    return false;\n  }\n  /**\n   * @param {ElementAdapter} adapter\n   * @param {string} attrName\n   * @returns {boolean}\n   */\n  function isAttrValueExpression(adapter, attrName) {\n    return adapter.getAttributes().some((attr) => {\n      const key = attr.getKey();\n      return (\n        key?.getValue() === attrName && !!attr?.getValue()?.hasExpression()\n      );\n    });\n  }\n\n  /** @type {Record<string, AttributeChecker[]>} */\n  const checkersByTag = {\n    input: [\n      {\n        attr: \"multiple\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return [\n            \"text\",\n            \"password\",\n            \"radio\",\n            \"checkbox\",\n            \"image\",\n            \"hidden\",\n            \"reset\",\n            \"button\",\n          ].includes(type);\n        },\n        message: 'The \"multiple\" attribute has no effect on this input type.',\n      },\n      {\n        attr: \"accept\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return type !== \"file\";\n        },\n        message:\n          'The \"accept\" attribute has no effect unless input type is \"file\".',\n      },\n      {\n        attr: \"readonly\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return [\"checkbox\", \"radio\", \"file\", \"range\", \"color\"].includes(type);\n        },\n        message: 'The \"readonly\" attribute has no effect on this input type.',\n      },\n      {\n        attr: \"min\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"number\",\n            \"range\",\n            \"date\",\n            \"datetime-local\",\n            \"month\",\n            \"time\",\n            \"week\",\n          ].includes(type);\n        },\n        message:\n          'The \"min\" attribute only works with numeric, date, and time input types.',\n      },\n      {\n        attr: \"max\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"number\",\n            \"range\",\n            \"date\",\n            \"datetime-local\",\n            \"month\",\n            \"time\",\n            \"week\",\n          ].includes(type);\n        },\n        message:\n          'The \"max\" attribute only works with numeric, date, and time input types.',\n      },\n      {\n        attr: \"step\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"number\",\n            \"range\",\n            \"date\",\n            \"datetime-local\",\n            \"month\",\n            \"time\",\n            \"week\",\n          ].includes(type);\n        },\n        message:\n          'The \"step\" attribute only works with numeric, date, and time input types.',\n      },\n      {\n        attr: \"pattern\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"text\",\n            \"search\",\n            \"url\",\n            \"tel\",\n            \"email\",\n            \"password\",\n          ].includes(type);\n        },\n        message:\n          'The \"pattern\" attribute only works with text-based input types.',\n      },\n      {\n        attr: \"maxlength\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"text\",\n            \"search\",\n            \"url\",\n            \"tel\",\n            \"email\",\n            \"password\",\n          ].includes(type);\n        },\n        message:\n          'The \"maxlength\" attribute only works with text-based input types.',\n      },\n      {\n        attr: \"minlength\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"text\",\n            \"search\",\n            \"url\",\n            \"tel\",\n            \"email\",\n            \"password\",\n          ].includes(type);\n        },\n        message:\n          'The \"minlength\" attribute only works with text-based input types.',\n      },\n      {\n        attr: \"placeholder\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"text\",\n            \"search\",\n            \"url\",\n            \"tel\",\n            \"email\",\n            \"password\",\n            \"number\",\n          ].includes(type);\n        },\n        message:\n          'The \"placeholder\" attribute has no effect on this input type.',\n      },\n      {\n        attr: \"size\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return ![\n            \"text\",\n            \"search\",\n            \"url\",\n            \"tel\",\n            \"email\",\n            \"password\",\n          ].includes(type);\n        },\n        message: 'The \"size\" attribute only works with text-based input types.',\n      },\n      {\n        attr: \"list\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"text\";\n          return [\n            \"checkbox\",\n            \"radio\",\n            \"file\",\n            \"submit\",\n            \"image\",\n            \"reset\",\n            \"button\",\n            \"hidden\",\n          ].includes(type);\n        },\n        message: 'The \"list\" attribute has no effect on this input type.',\n      },\n    ],\n    script: [\n      {\n        attr: \"defer\",\n        when: (adapter) => !hasAttr(adapter, \"src\"),\n        message: 'The \"defer\" attribute has no effect on inline scripts.',\n      },\n      {\n        attr: \"async\",\n        when: (adapter) => !hasAttr(adapter, \"src\"),\n        message: 'The \"async\" attribute has no effect on inline scripts.',\n      },\n    ],\n    a: [\n      {\n        attr: \"download\",\n        when: (adapter) => !hasAttr(adapter, \"href\"),\n        message: 'The \"download\" attribute has no effect without an \"href\".',\n      },\n      {\n        attr: \"ping\",\n        when: (adapter) => !hasAttr(adapter, \"href\"),\n        message: 'The \"ping\" attribute has no effect without an \"href\".',\n      },\n      {\n        attr: \"target\",\n        when: (adapter) => !hasAttr(adapter, \"href\"),\n        message: 'The \"target\" attribute has no effect without an \"href\".',\n      },\n    ],\n    audio: [\n      {\n        attr: \"controlslist\",\n        when: (adapter) => !hasAttr(adapter, \"controls\"),\n        message:\n          'The \"controlslist\" attribute has no effect without \"controls\".',\n      },\n    ],\n    video: [\n      {\n        attr: \"controlslist\",\n        when: (adapter) => !hasAttr(adapter, \"controls\"),\n        message:\n          'The \"controlslist\" attribute has no effect without \"controls\".',\n      },\n    ],\n    form: [\n      {\n        attr: \"enctype\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"method\")) {\n            return false;\n          }\n          const method = getAttrValue(adapter, \"method\") || \"get\";\n          return method ? method.toLowerCase() !== \"post\" : false;\n        },\n        message:\n          'The \"enctype\" attribute only has effect when method is \"post\".',\n      },\n    ],\n    button: [\n      {\n        attr: \"formaction\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"submit\";\n          return type !== \"submit\";\n        },\n        message: 'The \"formaction\" attribute only works with type=\"submit\".',\n      },\n      {\n        attr: \"formmethod\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"submit\";\n          return type !== \"submit\";\n        },\n        message: 'The \"formmethod\" attribute only works with type=\"submit\".',\n      },\n      {\n        attr: \"formenctype\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"submit\";\n          return type !== \"submit\";\n        },\n        message: 'The \"formenctype\" attribute only works with type=\"submit\".',\n      },\n      {\n        attr: \"formnovalidate\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"submit\";\n          return type !== \"submit\";\n        },\n        message:\n          'The \"formnovalidate\" attribute only works with type=\"submit\".',\n      },\n      {\n        attr: \"formtarget\",\n        when: (adapter) => {\n          if (isAttrValueExpression(adapter, \"type\")) {\n            return false;\n          }\n          const type = getAttrValue(adapter, \"type\") || \"submit\";\n          return type !== \"submit\";\n        },\n        message: 'The \"formtarget\" attribute only works with type=\"submit\".',\n      },\n    ],\n    area: [\n      {\n        attr: \"download\",\n        when: (adapter) => !hasAttr(adapter, \"href\"),\n        message: 'The \"download\" attribute has no effect without an \"href\".',\n      },\n      {\n        attr: \"ping\",\n        when: (adapter) => !hasAttr(adapter, \"href\"),\n        message: 'The \"ping\" attribute has no effect without an \"href\".',\n      },\n      {\n        attr: \"target\",\n        when: (adapter) => !hasAttr(adapter, \"href\"),\n        message: 'The \"target\" attribute has no effect without an \"href\".',\n      },\n    ],\n    img: [\n      {\n        attr: \"usemap\",\n        when: (adapter) => hasAttr(adapter, \"ismap\"),\n        message: 'The \"usemap\" and \"ismap\" attributes cannot be used together.',\n      },\n    ],\n  };\n\n  return {\n    /**\n     * @param {ElementAdapter} adapter\n     * @returns {NoIneffectiveAttrsResult}\n     */\n    checkAttributes(adapter) {\n      const elementName = adapter.getElementName();\n      const tagCheckers = checkersByTag[elementName];\n\n      if (!tagCheckers) {\n        return [];\n      }\n\n      /** @type {NoIneffectiveAttrsResult} */\n      const result = [];\n      for (const check of tagCheckers) {\n        for (const attribute of adapter.getAttributes()) {\n          const attributeKey = attribute.getKey();\n          if (!attributeKey) {\n            continue;\n          }\n          if (attributeKey.hasExpression()) {\n            continue;\n          }\n          const attributeValue = attribute.getValue();\n          if (attributeValue?.hasExpression()) {\n            continue;\n          }\n          const attributeKeyValue = attributeKey.getValue();\n          const attributeValueValue = attributeValue?.getValue();\n          if (\n            attributeValueValue === null ||\n            attributeKeyValue?.toLowerCase() !== check.attr\n          ) {\n            continue;\n          }\n\n          if (check.when(adapter)) {\n            result.push({\n              loc: attributeKey.getLocation(),\n              messageId: NO_INEFFECTIVE_ATTRS_MESSAGE_IDS.ineffective,\n              data: {\n                message: check.message,\n              },\n            });\n          }\n        }\n      }\n\n      return result;\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/rules/no-invalid-attr-value.js",
    "content": "/**\n * @import {\n *   ElementAdapter,\n *   NoInvalidAttrValueOptions,\n *   NoInvalidAttrValueResult\n * } from \"../types\"\n */\n\nimport { element } from \"html-standard\";\n\n/**\n * @type {{\n *   invalid: \"invalid\";\n * }}\n */\nexport const NO_INVALID_ATTR_VALUE_MESSAGE_IDS = {\n  invalid: \"invalid\",\n};\n\n/** @param {NoInvalidAttrValueOptions} options */\nexport function noInvalidAttrValue(options) {\n  const allowList = options.allow || [];\n  const compiledAllowList = allowList.map((rule) => ({\n    tag: rule.tag.toLowerCase(),\n    attr: rule.attr.toLowerCase(),\n    valuePattern: rule.valuePattern ? new RegExp(rule.valuePattern) : undefined,\n  }));\n\n  /**\n   * @param {string} elementName\n   * @param {string} attrKey\n   * @param {string} attrValue\n   * @returns\n   */\n  function shouldAllow(elementName, attrKey, attrValue) {\n    return compiledAllowList.some((allowRule) => {\n      const tagMatch = allowRule.tag === elementName.toLowerCase();\n      const attrMatch = allowRule.attr === attrKey.toLowerCase();\n\n      if (!tagMatch || !attrMatch) {\n        return false;\n      }\n\n      if (allowRule.valuePattern === undefined) {\n        return true;\n      }\n\n      return allowRule.valuePattern.test(attrValue);\n    });\n  }\n\n  return {\n    /**\n     * @param {ElementAdapter} adapter\n     * @returns {NoInvalidAttrValueResult}\n     */\n    checkAttributes(adapter) {\n      const name = adapter.getElementName();\n      if (name.includes(\"-\")) {\n        return [];\n      }\n      const spec = element(name);\n      /** @type {NoInvalidAttrValueResult} */\n      const result = [];\n\n      for (const attribute of adapter.getAttributes()) {\n        const attributeKey = attribute.getKey();\n        if (!attributeKey) {\n          continue;\n        }\n\n        if (attributeKey.hasExpression()) {\n          continue;\n        }\n\n        const attributeValue = attribute.getValue();\n\n        if (attributeValue?.hasExpression()) {\n          continue;\n        }\n\n        const attrKeyValue = attributeKey.getValue();\n\n        const attrValueValue = attributeValue?.getValue() ?? null;\n        if (attrValueValue === null) {\n          continue;\n        }\n\n        if (attrKeyValue && shouldAllow(name, attrKeyValue, attrValueValue)) {\n          continue;\n        }\n        if (!attrKeyValue || attrValueValue === null) {\n          continue;\n        }\n        const validator = spec.attributes.get(attrKeyValue);\n        if (validator) {\n          const validateResult = validator.validateValue(attrValueValue);\n          if (!validateResult.valid) {\n            result.push({\n              loc: attributeValue?.getLocation() ?? attributeKey?.getLocation(),\n              messageId: NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid,\n              data: {\n                value: attrValueValue || \"\",\n                attr: attrKeyValue,\n                element: name,\n                suggestion: validateResult.reason || \"Use a valid value.\",\n              },\n            });\n          }\n        }\n      }\n      return result;\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/rules/no-obsolete-attrs.js",
    "content": "/**\n * @import {\n *   ElementAdapter,\n *   NoObsoleteAttrsResult\n * } from \"../types\"\n */\n\nimport { OBSOLETE_ATTRS } from \"../utils/obsolete-attrs\";\n\n/**\n * @type {{\n *   obsolete: \"obsolete\";\n * }}\n */\nexport const NO_OBSOLETE_ATTRS_MESSAGE_IDS = {\n  obsolete: \"obsolete\",\n};\n\nexport function noObsoleteAttrs() {\n  return {\n    /**\n     * @param {ElementAdapter} adapter\n     * @returns {NoObsoleteAttrsResult}\n     */\n    checkAttributes(adapter) {\n      const elementName = adapter.getElementName();\n\n      /** @type {NoObsoleteAttrsResult} */\n      const result = [];\n\n      for (const attribute of adapter.getAttributes()) {\n        const attributeKey = attribute.getKey();\n        if (!attributeKey) {\n          continue;\n        }\n\n        const attrKeyValue = attributeKey.getValue();\n        const attributeValue = attribute.getValue();\n        const attrValueValueValue = attributeValue?.getValue();\n        // Skip if attribute key is an expression or doesn't have a value\n        if (\n          attributeKey.hasExpression() ||\n          attrKeyValue === null ||\n          attrValueValueValue === null\n        ) {\n          continue;\n        }\n\n        const attrName = attrKeyValue.toLowerCase();\n\n        // Check if this attribute is in the obsolete list\n        if (OBSOLETE_ATTRS[attrName]) {\n          const obsoleteConfigs = OBSOLETE_ATTRS[attrName];\n\n          // Check if this attribute is obsolete for this specific element\n          for (const config of obsoleteConfigs) {\n            // Handle wildcard (*) for all elements\n            if (\n              config.elements.includes(\"*\") ||\n              config.elements.includes(elementName)\n            ) {\n              result.push({\n                loc: attributeKey.getLocation(),\n                messageId: NO_OBSOLETE_ATTRS_MESSAGE_IDS.obsolete,\n                data: {\n                  attr: attrName,\n                  element: elementName,\n                  suggestion: config.suggestion,\n                },\n              });\n              break;\n            }\n          }\n        }\n      }\n\n      return result;\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/rules/no-obsolete-tags.js",
    "content": "/**\n * @import {\n *   ElementAdapter,\n *   NoObsoleteTagsResult\n * } from \"../types\"\n */\n\n// https://html.spec.whatwg.org/#non-conforming-features\nconst OBSOLETE_TAGS = [\n  \"applet\",\n  \"acronym\",\n  \"bgsound\",\n  \"dir\",\n  \"frame\",\n  \"frameset\",\n  \"noframes\",\n  \"isindex\",\n  \"keygen\",\n  \"listing\",\n  \"menuitem\",\n  \"nextid\",\n  \"noembed\",\n  \"plaintext\",\n  \"rb\",\n  \"rtc\",\n  \"strike\",\n  \"xmp\",\n  \"basefont\",\n  \"big\",\n  \"blink\",\n  \"center\",\n  \"font\",\n  \"marquee\",\n  \"multicol\",\n  \"nobr\",\n  \"spacer\",\n  \"tt\",\n];\n\nconst OBSOLETE_TAGS_SET = new Set(OBSOLETE_TAGS);\n\n/**\n * @type {{\n *   unexpected: \"unexpected\";\n * }}\n */\nexport const NO_OBSOLETE_TAGS_MESSAGE_IDS = {\n  unexpected: \"unexpected\",\n};\n\nexport function noObsoleteTags() {\n  return {\n    /**\n     * @param {ElementAdapter} adapter\n     * @returns {NoObsoleteTagsResult}\n     */\n    checkElement(adapter) {\n      const tagName = adapter.getElementName();\n\n      if (OBSOLETE_TAGS_SET.has(tagName)) {\n        return [\n          {\n            messageId: NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected,\n            loc: adapter.getOpenStartLocation(),\n            data: {\n              tag: tagName,\n            },\n          },\n        ];\n      }\n\n      return [];\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/rules/use-baseline.js",
    "content": "/**\n * @import {\n *   ElementAdapter,\n *   UseBaselineOptions,\n *   UseBaselineResult\n * } from \"../types\"\n */\nimport {\n  elements,\n  globalAttributes,\n  BASELINE_HIGH,\n  BASELINE_LOW,\n} from \"../utils/baseline\";\nimport { isCustomElement } from \"../utils/node\";\n\n/**\n * @type {{\n *   noBaselineElement: \"noBaselineElement\";\n *   notBaselineElementAttribute: \"notBaselineElementAttribute\";\n *   notBaselineGlobalAttribute: \"notBaselineGlobalAttribute\";\n * }}\n */\nexport const USE_BASELINE_MESSAGE_IDS = {\n  noBaselineElement: \"noBaselineElement\",\n  notBaselineElementAttribute: \"notBaselineElementAttribute\",\n  notBaselineGlobalAttribute: \"notBaselineGlobalAttribute\",\n};\n\n/**\n * @param {string[]} parts\n * @returns {string}\n */\nfunction toStatusKey(...parts) {\n  return parts.map((part) => part.toLowerCase().trim()).join(\".\");\n}\n\n/**\n * @param {string} encoded\n * @returns {[number, number]}\n */\nfunction decodeStatus(encoded) {\n  const [status, year = NaN] = encoded.split(\":\").map((part) => Number(part));\n  return [status, year];\n}\n\n/**\n * @param {string} element\n * @param {string} key\n * @param {string} value\n * @returns {string | null}\n */\nfunction getElementAttributeSpecificStatusKey(element, key, value) {\n  const elementName = element.toLowerCase();\n  const attributeKey = key.toLowerCase();\n  const attributeValue = value.toLowerCase();\n\n  // <input type=\"...\">\n  if (elementName === \"input\" && attributeKey === \"type\") {\n    return `input.type_${attributeValue}`;\n  }\n\n  // <a href=\"sms:0000..\">\n  if (\n    elementName === \"a\" &&\n    attributeKey === \"href\" &&\n    attributeValue.trim().startsWith(\"sms:\")\n  ) {\n    return \"a.href.href_sms\";\n  }\n\n  // <td rowspan=\"0\"> <th rowspan=\"0\">\n  if (\n    (elementName === \"td\" || elementName === \"th\") &&\n    attributeKey === \"rowspan\" &&\n    attributeValue === \"0\"\n  ) {\n    return `${elementName}.rowspan.rowspan_zero`;\n  }\n  return null;\n}\n\n/**\n * @template ElementNode\n * @template AttributeKeyNode\n * @template AttributeValueNode\n * @param {UseBaselineOptions} options\n */\nexport function useBaseline({ available }) {\n  const baseYear = typeof available === \"number\" ? available : null;\n  const baseStatus = available === \"widely\" ? BASELINE_HIGH : BASELINE_LOW;\n  const availability = String(available);\n\n  /**\n   * @param {string} encoded\n   * @returns {boolean}\n   */\n  function isSupported(encoded) {\n    const [status, year = NaN] = decodeStatus(encoded);\n    if (baseYear) {\n      return year <= baseYear;\n    }\n    return status >= baseStatus;\n  }\n\n  /**\n   * @param {string} element\n   * @param {string} key\n   * @returns {boolean}\n   */\n  function isSupportedElementAttributeKey(element, key) {\n    const elementStatus = elements.get(toStatusKey(element, key));\n    if (!elementStatus) {\n      return true;\n    }\n    return isSupported(elementStatus);\n  }\n\n  /**\n   * @param {string} key\n   * @returns {boolean}\n   */\n  function isSupportedGlobalAttributeKey(key) {\n    const globalAttrStatus = globalAttributes.get(toStatusKey(key));\n    if (!globalAttrStatus) {\n      return true;\n    }\n    return isSupported(globalAttrStatus);\n  }\n\n  /**\n   * @param {string} element\n   * @param {string} key\n   * @param {string} value\n   * @returns {boolean}\n   */\n  function isSupportedElementAttributeKeyValue(element, key, value) {\n    const elementStatus = elements.get(toStatusKey(element, key, value));\n    if (!elementStatus) {\n      return true;\n    }\n    return isSupported(elementStatus);\n  }\n\n  /**\n   * @param {string} key\n   * @param {string} value\n   * @returns {boolean}\n   */\n  function isSupportedGlobalAttributeKeyValue(key, value) {\n    const globalAttrStatus = globalAttributes.get(toStatusKey(key, value));\n    if (!globalAttrStatus) {\n      return true;\n    }\n    return isSupported(globalAttrStatus);\n  }\n\n  /**\n   * @param {string} element\n   * @param {string} key\n   * @param {string} value\n   * @returns {boolean}\n   */\n  function isSupportedElementSpecificAttributeKeyValue(element, key, value) {\n    const statusKey = getElementAttributeSpecificStatusKey(element, key, value);\n    if (!statusKey) {\n      return true;\n    }\n    const elementStatus = elements.get(statusKey);\n    if (!elementStatus) {\n      return true;\n    }\n    return isSupported(elementStatus);\n  }\n\n  /**\n   * @param {string} element\n   * @returns {boolean}\n   */\n  function isSupportedElement(element) {\n    const elementEncoded = elements.get(element);\n    if (!elementEncoded) {\n      return true;\n    }\n    return isSupported(elementEncoded);\n  }\n\n  return {\n    /**\n     * @param {ElementAdapter} adapter\n     * @returns {UseBaselineResult}\n     */\n    checkAttributes(adapter) {\n      const elementName = adapter.getElementName();\n      if (isCustomElement(elementName)) {\n        return [];\n      }\n\n      if (!isSupportedElement(elementName)) {\n        return [\n          {\n            messageId: USE_BASELINE_MESSAGE_IDS.noBaselineElement,\n            loc: adapter.getLocation(),\n            data: {\n              element: `<${elementName}>`,\n              availability,\n            },\n          },\n        ];\n      }\n\n      /** @type {UseBaselineResult} */\n      const result = [];\n\n      for (const attribute of adapter.getAttributes()) {\n        const attributeKey = attribute.getKey();\n        if (!attributeKey) {\n          continue;\n        }\n        const attributeKeyValue = attributeKey.getValue();\n        const attributeKeyHasExpression = attributeKey.hasExpression();\n        if (!attributeKeyValue || attributeKeyHasExpression) {\n          continue;\n        }\n        const attributeValue = attribute.getValue();\n        const attributeValueValue = attributeValue?.getValue();\n        if (attributeValueValue === null) {\n          continue;\n        }\n\n        if (!isSupportedElementAttributeKey(elementName, attributeKeyValue)) {\n          result.push({\n            messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n            loc: attributeKey.getLocation(),\n            data: {\n              element: `<${elementName}>`,\n              attr: attributeKey.getValue(),\n              availability,\n            },\n          });\n        } else if (!isSupportedGlobalAttributeKey(attributeKeyValue)) {\n          result.push({\n            messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n            loc: attributeKey.getLocation(),\n            data: {\n              attr: attributeKey.getValue(),\n              availability,\n            },\n          });\n        } else if (attributeValue !== null) {\n          if (\n            !isSupportedElementAttributeKeyValue(\n              elementName,\n              attributeKeyValue,\n              attributeValueValue || \"\"\n            ) ||\n            !isSupportedElementSpecificAttributeKeyValue(\n              elementName,\n              attributeKeyValue,\n              attributeValueValue || \"\"\n            )\n          ) {\n            result.push({\n              messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n              loc: attributeValue.getLocation(),\n              data: {\n                element: `<${elementName}>`,\n                attr: `${attributeKeyValue}=\"${attributeValueValue}\"`,\n                availability,\n              },\n            });\n          } else if (\n            !isSupportedGlobalAttributeKeyValue(\n              attributeKeyValue,\n              attributeValueValue || \"\"\n            )\n          ) {\n            result.push({\n              messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n              loc: attributeValue.getLocation(),\n              data: {\n                attr: `${attributeKeyValue}=\"${attributeValueValue}\"`,\n                availability,\n              },\n            });\n          }\n        }\n      }\n      return result;\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/lib/types.js",
    "content": "export default {};\n"
  },
  {
    "path": "packages/core/lib/types.ts",
    "content": "import type { Range, SourceLocation } from \"@html-eslint/types\";\n\nexport interface ElementAdapter {\n  getElementName(): string;\n  getAttributes(): AttributeAdapter[];\n  getLocation(): SourceLocation;\n  getRange(): Range;\n  getOpenStartLocation(): SourceLocation;\n  getOpenStartRange(): Range;\n}\n\nexport interface AttributeAdapter {\n  getKey(): AttributeKeyAdapter | null;\n  getValue(): AttributeValueAdapter | null;\n}\n\nexport interface AttributeValueAdapter {\n  getValue(): string | null;\n  hasExpression(): boolean;\n  getLocation(): SourceLocation;\n  getRange(): Range;\n}\n\nexport interface AttributeKeyAdapter {\n  getValue(): string;\n  hasExpression(): boolean;\n  getLocation(): SourceLocation;\n  getRange(): Range;\n}\n\nexport interface NoInvalidAttrValueOptions {\n  allow?: Array<{\n    tag: string;\n    attr: string;\n    valuePattern?: string;\n  }>;\n}\n\nexport type NoInvalidAttrValueResult = Array<{\n  messageId: \"invalid\";\n  loc: SourceLocation;\n  data: {\n    value: string;\n    attr: string;\n    element: string;\n    suggestion: string;\n  };\n}>;\n\nexport interface UseBaselineOptions {\n  available: \"widely\" | \"newly\" | number;\n}\n\nexport type UseBaselineResult = Array<\n  | {\n      messageId: \"noBaselineElement\";\n      loc: SourceLocation;\n      data: {\n        element: string;\n        availability: string;\n      };\n    }\n  | {\n      messageId: \"notBaselineElementAttribute\";\n      loc: SourceLocation;\n      data: {\n        element: string;\n        attr: string;\n        availability: string;\n      };\n    }\n  | {\n      messageId: \"notBaselineGlobalAttribute\";\n      loc: SourceLocation;\n      data: {\n        attr: string;\n        availability: string;\n      };\n    }\n>;\n\nexport type NoIneffectiveAttrsResult = Array<{\n  messageId: \"ineffective\";\n  loc: SourceLocation;\n  data: {\n    message: string;\n  };\n}>;\n\nexport type NoObsoleteTagsResult = Array<{\n  messageId: \"unexpected\";\n  loc: SourceLocation;\n  data: {\n    tag: string;\n  };\n}>;\n\nexport type NoObsoleteAttrsResult = Array<{\n  messageId: \"obsolete\";\n  loc: SourceLocation;\n  data: {\n    attr: string;\n    element: string;\n    suggestion: string;\n  };\n}>;\n\nexport type ClassSpacingResult = Array<{\n  messageId: \"extraSpacing\";\n  range: Range;\n  loc: SourceLocation;\n}>;\n\nexport type NoDuplicateClassResult = Array<{\n  messageId: \"duplicateClass\";\n  range: Range;\n  loc: SourceLocation;\n  data: {\n    className: string;\n  };\n}>;\n"
  },
  {
    "path": "packages/core/lib/utils/baseline.js",
    "content": "/** This file is auto-generated. (yarn run baseline) */\nconst BASELINE_HIGH = 10;\nconst BASELINE_LOW = 5;\nconst BASELINE_FALSE = 0;\n\nconst elements = new Map([\n  [\"a\", \"10:2015\"],\n  [\"a.attributionsourceid\", \"0:\"],\n  [\"a.attributionsrc\", \"0:\"],\n  [\"a.download\", \"10:2019\"],\n  [\"a.href\", \"10:2015\"],\n  [\"a.href.href_sms\", \"0:\"],\n  [\"a.href.href_top\", \"10:2015\"],\n  [\"a.hreflang\", \"10:2015\"],\n  [\"a.implicit_noopener\", \"10:2021\"],\n  [\"a.interestfor\", \"0:\"],\n  [\"a.ping\", \"0:\"],\n  [\"a.referrerpolicy\", \"10:2020\"],\n  [\"a.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n  [\"a.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n  [\"a.referrerpolicy.unsafe-url\", \"0:\"],\n  [\"a.rel\", \"10:2015\"],\n  [\"a.rel.noopener\", \"10:2020\"],\n  [\"a.rel.noreferrer\", \"10:2015\"],\n  [\"a.target\", \"10:2015\"],\n  [\"a.target.unfencedTop\", \"0:\"],\n  [\"a.text_fragments\", \"5:2024\"],\n  [\"a.type\", \"10:2015\"],\n  [\"abbr\", \"10:2015\"],\n  [\"address\", \"10:2015\"],\n  [\"area\", \"10:2015\"],\n  [\"area.alt\", \"10:2015\"],\n  [\"area.attributionsrc\", \"0:\"],\n  [\"area.coords\", \"10:2015\"],\n  [\"area.download\", \"10:2017\"],\n  [\"area.href\", \"10:2015\"],\n  [\"area.implicit_noopener\", \"10:2021\"],\n  [\"area.interestfor\", \"0:\"],\n  [\"area.ping\", \"0:\"],\n  [\"area.referrerpolicy\", \"10:2020\"],\n  [\"area.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n  [\"area.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n  [\"area.referrerpolicy.unsafe-url\", \"0:\"],\n  [\"area.rel\", \"10:2015\"],\n  [\"area.rel.noopener\", \"10:2020\"],\n  [\"area.rel.noreferrer\", \"10:2015\"],\n  [\"area.shape\", \"10:2015\"],\n  [\"area.target\", \"10:2015\"],\n  [\"article\", \"10:2015\"],\n  [\"aside\", \"10:2015\"],\n  [\"audio\", \"10:2015\"],\n  [\"audio.controls\", \"10:2015\"],\n  [\"audio.controlslist\", \"0:\"],\n  [\"audio.crossorigin\", \"10:2020\"],\n  [\"audio.disableremoteplayback\", \"0:\"],\n  [\"audio.loading\", \"0:\"],\n  [\"audio.loop\", \"10:2015\"],\n  [\"audio.muted\", \"10:2018\"],\n  [\"audio.preload\", \"10:2015\"],\n  [\"audio.src\", \"10:2015\"],\n  [\"b\", \"10:2015\"],\n  [\"base\", \"10:2015\"],\n  [\"base.href\", \"10:2015\"],\n  [\"base.href.forbid_data_javascript_urls\", \"5:2024\"],\n  [\"base.href.relative_url\", \"10:2015\"],\n  [\"base.target\", \"10:2015\"],\n  [\"bdi\", \"10:2020\"],\n  [\"bdo\", \"10:2015\"],\n  [\"blockquote\", \"10:2015\"],\n  [\"blockquote.cite\", \"10:2015\"],\n  [\"body\", \"10:2015\"],\n  [\"br\", \"10:2015\"],\n  [\"button\", \"10:2015\"],\n  [\"button.command\", \"5:2025\"],\n  [\"button.command.request-close\", \"5:2025\"],\n  [\"button.commandfor\", \"5:2025\"],\n  [\"button.commandfor.implicit_anchor_reference\", \"5:2026\"],\n  [\"button.disabled\", \"10:2015\"],\n  [\"button.form\", \"10:2017\"],\n  [\"button.formaction\", \"10:2015\"],\n  [\"button.formenctype\", \"10:2015\"],\n  [\"button.formmethod\", \"10:2015\"],\n  [\"button.formnovalidate\", \"10:2015\"],\n  [\"button.formtarget\", \"10:2015\"],\n  [\"button.interestfor\", \"0:\"],\n  [\"button.name\", \"10:2015\"],\n  [\"button.popovertarget\", \"5:2024\"],\n  [\"button.popovertarget.implicit_anchor_reference\", \"5:2026\"],\n  [\"button.popovertargetaction\", \"5:2024\"],\n  [\"button.type\", \"10:2015\"],\n  [\"button.value\", \"10:2015\"],\n  [\"canvas\", \"10:2015\"],\n  [\"canvas.height\", \"10:2015\"],\n  [\"canvas.width\", \"10:2015\"],\n  [\"caption\", \"10:2015\"],\n  [\"caption.align\", \"0:\"],\n  [\"cite\", \"10:2015\"],\n  [\"code\", \"10:2015\"],\n  [\"col\", \"10:2015\"],\n  [\"col.align\", \"0:\"],\n  [\"col.char\", \"0:\"],\n  [\"col.charoff\", \"0:\"],\n  [\"col.span\", \"10:2015\"],\n  [\"col.valign\", \"0:\"],\n  [\"col.width\", \"0:\"],\n  [\"colgroup\", \"10:2015\"],\n  [\"colgroup.align\", \"0:\"],\n  [\"colgroup.char\", \"0:\"],\n  [\"colgroup.charoff\", \"0:\"],\n  [\"colgroup.span\", \"10:2015\"],\n  [\"colgroup.valign\", \"0:\"],\n  [\"colgroup.width\", \"0:\"],\n  [\"data\", \"10:2017\"],\n  [\"data.value\", \"10:2017\"],\n  [\"datalist\", \"0:\"],\n  [\"datalist.input_type_color\", \"0:\"],\n  [\"datalist.input_type_date\", \"0:\"],\n  [\"datalist.input_type_email\", \"0:\"],\n  [\"datalist.input_type_number\", \"0:\"],\n  [\"datalist.input_type_range\", \"0:\"],\n  [\"datalist.input_type_search\", \"0:\"],\n  [\"datalist.input_type_tel\", \"0:\"],\n  [\"datalist.input_type_text\", \"0:\"],\n  [\"datalist.input_type_time\", \"0:\"],\n  [\"datalist.input_type_url\", \"0:\"],\n  [\"dd\", \"10:2015\"],\n  [\"del\", \"10:2015\"],\n  [\"del.cite\", \"10:2015\"],\n  [\"del.datetime\", \"10:2015\"],\n  [\"details\", \"10:2020\"],\n  [\"details.name\", \"5:2024\"],\n  [\"details.open\", \"10:2020\"],\n  [\"dfn\", \"10:2015\"],\n  [\"dialog\", \"10:2022\"],\n  [\"dialog.closedby\", \"0:\"],\n  [\"dialog.open\", \"10:2022\"],\n  [\"div\", \"10:2015\"],\n  [\"dl\", \"10:2015\"],\n  [\"dt\", \"10:2015\"],\n  [\"em\", \"10:2015\"],\n  [\"embed\", \"10:2015\"],\n  [\"embed.height\", \"10:2015\"],\n  [\"embed.src\", \"10:2015\"],\n  [\"embed.type\", \"10:2020\"],\n  [\"embed.width\", \"10:2015\"],\n  [\"fencedframe\", \"0:\"],\n  [\"fencedframe.allow\", \"0:\"],\n  [\"fencedframe.height\", \"0:\"],\n  [\"fencedframe.width\", \"0:\"],\n  [\"fieldset\", \"10:2015\"],\n  [\"fieldset.disabled\", \"10:2020\"],\n  [\"fieldset.form\", \"10:2015\"],\n  [\"fieldset.name\", \"10:2015\"],\n  [\"figcaption\", \"10:2015\"],\n  [\"figure\", \"10:2015\"],\n  [\"footer\", \"10:2015\"],\n  [\"form\", \"10:2015\"],\n  [\"form.accept-charset\", \"10:2015\"],\n  [\"form.action\", \"10:2015\"],\n  [\"form.autocomplete\", \"10:2015\"],\n  [\"form.enctype\", \"10:2015\"],\n  [\"form.method\", \"10:2015\"],\n  [\"form.name\", \"10:2015\"],\n  [\"form.novalidate\", \"10:2017\"],\n  [\"form.rel\", \"10:2023\"],\n  [\"form.target\", \"10:2015\"],\n  [\"geolocation\", \"0:\"],\n  [\"geolocation.autolocate\", \"0:\"],\n  [\"geolocation.watch\", \"0:\"],\n  [\"h1\", \"10:2015\"],\n  [\"h1.no_ua_styles_in_article_aside_nav_section\", \"0:\"],\n  [\"h2\", \"10:2015\"],\n  [\"h3\", \"10:2015\"],\n  [\"h4\", \"10:2015\"],\n  [\"h5\", \"10:2015\"],\n  [\"h6\", \"10:2015\"],\n  [\"head\", \"10:2015\"],\n  [\"header\", \"10:2015\"],\n  [\"hgroup\", \"10:2015\"],\n  [\"hr\", \"10:2015\"],\n  [\"html\", \"10:2015\"],\n  [\"i\", \"10:2015\"],\n  [\"iframe\", \"10:2015\"],\n  [\"iframe.allow\", \"10:2020\"],\n  [\"iframe.allow.accelerometer\", \"0:\"],\n  [\"iframe.allow.ambient-light-sensor\", \"0:\"],\n  [\"iframe.allow.attribution-reporting\", \"0:\"],\n  [\"iframe.allow.bluetooth\", \"0:\"],\n  [\"iframe.allow.browsing-topics\", \"0:\"],\n  [\"iframe.allow.camera\", \"10:2020\"],\n  [\"iframe.allow.compute-pressure\", \"0:\"],\n  [\"iframe.allow.display-capture\", \"0:\"],\n  [\"iframe.allow.encrypted-media\", \"0:\"],\n  [\"iframe.allow.fullscreen\", \"0:\"],\n  [\"iframe.allow.gamepad\", \"0:\"],\n  [\"iframe.allow.geolocation\", \"0:\"],\n  [\"iframe.allow.gyroscope\", \"0:\"],\n  [\"iframe.allow.hid\", \"0:\"],\n  [\"iframe.allow.idle-detection\", \"0:\"],\n  [\"iframe.allow.local-fonts\", \"0:\"],\n  [\"iframe.allow.magnetometer\", \"0:\"],\n  [\"iframe.allow.microphone\", \"10:2020\"],\n  [\"iframe.allow.midi\", \"0:\"],\n  [\"iframe.allow.otp-credentials\", \"0:\"],\n  [\"iframe.allow.payment\", \"0:\"],\n  [\"iframe.allow.picture-in-picture\", \"0:\"],\n  [\"iframe.allow.publickey-credentials-create\", \"0:\"],\n  [\"iframe.allow.publickey-credentials-get\", \"0:\"],\n  [\"iframe.allow.screen-wake-lock\", \"5:2024\"],\n  [\"iframe.allow.serial\", \"0:\"],\n  [\"iframe.allow.storage-access\", \"0:\"],\n  [\"iframe.allow.usb\", \"0:\"],\n  [\"iframe.allow.web-share\", \"0:\"],\n  [\"iframe.allow.window-management\", \"0:\"],\n  [\"iframe.allow.xr-spatial-tracking\", \"0:\"],\n  [\"iframe.allowfullscreen\", \"0:\"],\n  [\"iframe.browsingtopics\", \"0:\"],\n  [\"iframe.credentialless\", \"0:\"],\n  [\"iframe.csp\", \"0:\"],\n  [\"iframe.height\", \"10:2015\"],\n  [\"iframe.loading\", \"5:2023\"],\n  [\"iframe.name\", \"10:2015\"],\n  [\"iframe.referrerpolicy\", \"10:2020\"],\n  [\"iframe.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n  [\"iframe.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n  [\"iframe.referrerpolicy.unsafe-url\", \"0:\"],\n  [\"iframe.sandbox\", \"10:2015\"],\n  [\"iframe.sandbox.allow-downloads\", \"10:2023\"],\n  [\"iframe.sandbox.allow-forms\", \"10:2020\"],\n  [\"iframe.sandbox.allow-modals\", \"10:2020\"],\n  [\"iframe.sandbox.allow-pointer-lock\", \"0:\"],\n  [\"iframe.sandbox.allow-popups\", \"10:2015\"],\n  [\"iframe.sandbox.allow-popups-to-escape-sandbox\", \"10:2020\"],\n  [\"iframe.sandbox.allow-presentation\", \"0:\"],\n  [\"iframe.sandbox.allow-same-origin\", \"10:2020\"],\n  [\"iframe.sandbox.allow-scripts\", \"10:2020\"],\n  [\"iframe.sandbox.allow-top-navigation\", \"10:2020\"],\n  [\"iframe.sandbox.allow-top-navigation-by-user-activation\", \"10:2020\"],\n  [\"iframe.sandbox.allow-top-navigation-to-custom-protocols\", \"0:\"],\n  [\"iframe.src\", \"10:2015\"],\n  [\"iframe.srcdoc\", \"10:2020\"],\n  [\"iframe.width\", \"10:2015\"],\n  [\"img\", \"10:2015\"],\n  [\"img.alt\", \"10:2015\"],\n  [\"img.aspect_ratio_computed_from_attributes\", \"10:2021\"],\n  [\"img.attributionsrc\", \"0:\"],\n  [\"img.crossorigin\", \"10:2015\"],\n  [\"img.decoding\", \"10:2020\"],\n  [\"img.fetchpriority\", \"5:2024\"],\n  [\"img.height\", \"10:2015\"],\n  [\"img.ismap\", \"10:2015\"],\n  [\"img.loading\", \"10:2022\"],\n  [\"img.referrerpolicy\", \"10:2020\"],\n  [\"img.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n  [\"img.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n  [\"img.referrerpolicy.unsafe-url\", \"0:\"],\n  [\"img.sizes\", \"10:2016\"],\n  [\"img.sizes.auto\", \"0:\"],\n  [\"img.src\", \"10:2015\"],\n  [\"img.srcset\", \"10:2015\"],\n  [\"img.usemap\", \"10:2015\"],\n  [\"img.width\", \"10:2015\"],\n  [\"input\", \"10:2015\"],\n  [\"input.accept\", \"10:2015\"],\n  [\"input.alpha\", \"0:\"],\n  [\"input.alt\", \"10:2015\"],\n  [\"input.capture\", \"0:\"],\n  [\"input.checked\", \"10:2015\"],\n  [\"input.colorspace\", \"0:\"],\n  [\"input.dirname\", \"10:2023\"],\n  [\"input.disabled\", \"10:2015\"],\n  [\"input.form\", \"10:2015\"],\n  [\"input.formaction\", \"10:2015\"],\n  [\"input.formenctype\", \"10:2015\"],\n  [\"input.formmethod\", \"10:2015\"],\n  [\"input.formnovalidate\", \"10:2015\"],\n  [\"input.formtarget\", \"10:2015\"],\n  [\"input.max\", \"10:2015\"],\n  [\"input.maxlength\", \"10:2015\"],\n  [\"input.min\", \"10:2015\"],\n  [\"input.minlength\", \"10:2018\"],\n  [\"input.multiple\", \"10:2015\"],\n  [\"input.name\", \"10:2015\"],\n  [\"input.pattern\", \"10:2015\"],\n  [\"input.placeholder\", \"10:2015\"],\n  [\"input.popovertarget\", \"5:2024\"],\n  [\"input.popovertarget.implicit_anchor_reference\", \"5:2026\"],\n  [\"input.popovertargetaction\", \"5:2024\"],\n  [\"input.readonly\", \"10:2015\"],\n  [\"input.required\", \"10:2015\"],\n  [\"input.size\", \"10:2015\"],\n  [\"input.src\", \"10:2015\"],\n  [\"input.step\", \"10:2015\"],\n  [\"input.switch\", \"0:\"],\n  [\"input.type_button\", \"10:2015\"],\n  [\"input.type_checkbox\", \"10:2015\"],\n  [\"input.type_color\", \"0:\"],\n  [\"input.type_color.accepts_css_colors\", \"0:\"],\n  [\"input.type_color.list\", \"0:\"],\n  [\"input.type_date\", \"10:2021\"],\n  [\"input.type_date.list\", \"0:\"],\n  [\"input.type_datetime-local\", \"10:2021\"],\n  [\"input.type_email\", \"10:2015\"],\n  [\"input.type_email.list\", \"10:2019\"],\n  [\"input.type_file\", \"10:2015\"],\n  [\"input.type_hidden\", \"10:2015\"],\n  [\"input.type_image\", \"10:2015\"],\n  [\"input.type_month\", \"0:\"],\n  [\"input.type_number\", \"10:2015\"],\n  [\"input.type_number.list\", \"10:2019\"],\n  [\"input.type_password\", \"10:2015\"],\n  [\"input.type_password.insecure_login_handling\", \"0:\"],\n  [\"input.type_radio\", \"10:2015\"],\n  [\"input.type_range\", \"10:2017\"],\n  [\"input.type_range.labeled_values\", \"0:\"],\n  [\"input.type_range.list\", \"0:\"],\n  [\"input.type_range.tick_marks\", \"10:2023\"],\n  [\"input.type_range.vertical_orientation\", \"5:2024\"],\n  [\"input.type_reset\", \"10:2015\"],\n  [\"input.type_search\", \"10:2015\"],\n  [\"input.type_search.list\", \"10:2019\"],\n  [\"input.type_submit\", \"10:2015\"],\n  [\"input.type_tel\", \"10:2015\"],\n  [\"input.type_tel.list\", \"10:2019\"],\n  [\"input.type_text\", \"10:2015\"],\n  [\"input.type_text.list\", \"10:2019\"],\n  [\"input.type_time\", \"10:2021\"],\n  [\"input.type_time.list\", \"0:\"],\n  [\"input.type_url\", \"10:2015\"],\n  [\"input.type_url.list\", \"10:2019\"],\n  [\"input.type_week\", \"0:\"],\n  [\"input.webkitdirectory\", \"5:2025\"],\n  [\"ins\", \"10:2015\"],\n  [\"ins.cite\", \"10:2015\"],\n  [\"ins.datetime\", \"10:2015\"],\n  [\"kbd\", \"10:2015\"],\n  [\"label\", \"10:2015\"],\n  [\"label.for\", \"10:2015\"],\n  [\"legend\", \"10:2015\"],\n  [\"li\", \"10:2015\"],\n  [\"li.value\", \"10:2015\"],\n  [\"link\", \"10:2015\"],\n  [\"link.as\", \"10:2018\"],\n  [\"link.blocking\", \"0:\"],\n  [\"link.crossorigin\", \"10:2018\"],\n  [\"link.disabled\", \"10:2015\"],\n  [\"link.fetchpriority\", \"5:2024\"],\n  [\"link.href\", \"10:2015\"],\n  [\"link.hreflang\", \"10:2015\"],\n  [\"link.imagesizes\", \"5:2023\"],\n  [\"link.imagesrcset\", \"5:2023\"],\n  [\"link.integrity\", \"10:2018\"],\n  [\"link.media\", \"10:2015\"],\n  [\"link.referrerpolicy\", \"10:2020\"],\n  [\"link.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n  [\"link.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n  [\"link.referrerpolicy.unsafe-url\", \"0:\"],\n  [\"link.rel\", \"10:2015\"],\n  [\"link.rel.alternate_stylesheet\", \"0:\"],\n  [\"link.rel.compression-dictionary\", \"0:\"],\n  [\"link.rel.dns-prefetch\", \"5:2025\"],\n  [\"link.rel.expect\", \"0:\"],\n  [\"link.rel.manifest\", \"0:\"],\n  [\"link.rel.modulepreload\", \"10:2023\"],\n  [\"link.rel.preconnect\", \"10:2020\"],\n  [\"link.rel.prefetch\", \"0:\"],\n  [\"link.rel.preload\", \"10:2021\"],\n  [\"link.rel.preload.as-fetch\", \"10:2021\"],\n  [\"link.rel.preload.as-font\", \"10:2021\"],\n  [\"link.rel.preload.as-image\", \"10:2021\"],\n  [\"link.rel.preload.as-script\", \"10:2021\"],\n  [\"link.rel.preload.as-style\", \"10:2021\"],\n  [\"link.rel.preload.as-track\", \"0:\"],\n  [\"link.sizes\", \"10:2020\"],\n  [\"link.type\", \"10:2015\"],\n  [\"main\", \"10:2015\"],\n  [\"map\", \"10:2015\"],\n  [\"map.name\", \"10:2015\"],\n  [\"mark\", \"10:2015\"],\n  [\"menu\", \"10:2015\"],\n  [\"meta\", \"10:2015\"],\n  [\"meta.charset\", \"10:2015\"],\n  [\"meta.content\", \"10:2015\"],\n  [\"meta.http-equiv\", \"10:2015\"],\n  [\"meta.http-equiv.content-security-policy\", \"10:2017\"],\n  [\"meta.http-equiv.content-type\", \"10:2017\"],\n  [\"meta.http-equiv.refresh\", \"10:2015\"],\n  [\"meta.name\", \"10:2015\"],\n  [\"meta.name.application-title\", \"0:\"],\n  [\"meta.name.color-scheme\", \"10:2022\"],\n  [\"meta.name.referrer\", \"10:2020\"],\n  [\"meta.name.text-scale\", \"0:\"],\n  [\"meta.name.theme-color\", \"0:\"],\n  [\"meter\", \"10:2017\"],\n  [\"meter.high\", \"10:2017\"],\n  [\"meter.low\", \"10:2017\"],\n  [\"meter.max\", \"10:2017\"],\n  [\"meter.min\", \"10:2017\"],\n  [\"meter.optimum\", \"10:2017\"],\n  [\"meter.value\", \"10:2017\"],\n  [\"nav\", \"10:2015\"],\n  [\"noscript\", \"10:2015\"],\n  [\"object\", \"10:2015\"],\n  [\"object.data\", \"10:2015\"],\n  [\"object.form\", \"10:2015\"],\n  [\"object.height\", \"10:2015\"],\n  [\"object.name\", \"10:2015\"],\n  [\"object.type\", \"10:2015\"],\n  [\"object.width\", \"10:2015\"],\n  [\"ol\", \"10:2015\"],\n  [\"ol.reversed\", \"10:2020\"],\n  [\"ol.start\", \"10:2015\"],\n  [\"ol.type\", \"10:2015\"],\n  [\"optgroup\", \"10:2015\"],\n  [\"optgroup.disabled\", \"0:\"],\n  [\"optgroup.label\", \"10:2015\"],\n  [\"option\", \"10:2015\"],\n  [\"option.disabled\", \"10:2015\"],\n  [\"option.label\", \"10:2015\"],\n  [\"option.selected\", \"10:2015\"],\n  [\"option.value\", \"10:2015\"],\n  [\"output\", \"10:2018\"],\n  [\"output.for\", \"10:2018\"],\n  [\"output.form\", \"10:2018\"],\n  [\"output.name\", \"10:2018\"],\n  [\"p\", \"10:2015\"],\n  [\"picture\", \"10:2016\"],\n  [\"pre\", \"10:2015\"],\n  [\"progress\", \"10:2015\"],\n  [\"progress.max\", \"10:2015\"],\n  [\"progress.value\", \"10:2015\"],\n  [\"q\", \"10:2015\"],\n  [\"q.cite\", \"10:2015\"],\n  [\"rp\", \"10:2015\"],\n  [\"rt\", \"10:2015\"],\n  [\"ruby\", \"10:2015\"],\n  [\"s\", \"10:2015\"],\n  [\"samp\", \"10:2015\"],\n  [\"script\", \"10:2015\"],\n  [\"script.async\", \"10:2015\"],\n  [\"script.attributionsrc\", \"0:\"],\n  [\"script.blocking\", \"0:\"],\n  [\"script.crossorigin\", \"10:2016\"],\n  [\"script.defer\", \"10:2015\"],\n  [\"script.fetchpriority\", \"5:2024\"],\n  [\"script.integrity\", \"10:2018\"],\n  [\"script.integrity.ed25519_public_key\", \"0:\"],\n  [\"script.nomodule\", \"10:2018\"],\n  [\"script.referrerpolicy\", \"10:2020\"],\n  [\"script.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n  [\"script.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n  [\"script.referrerpolicy.unsafe-url\", \"0:\"],\n  [\"script.src\", \"10:2015\"],\n  [\"script.type\", \"10:2015\"],\n  [\"script.type.importmap\", \"10:2023\"],\n  [\"script.type.module\", \"10:2018\"],\n  [\"script.type.speculationrules\", \"0:\"],\n  [\"script.type.speculationrules.eagerness\", \"0:\"],\n  [\"script.type.speculationrules.expects_no_vary_search\", \"0:\"],\n  [\"script.type.speculationrules.prefetch\", \"0:\"],\n  [\"script.type.speculationrules.prerender\", \"0:\"],\n  [\"script.type.speculationrules.referrer_policy\", \"0:\"],\n  [\"script.type.speculationrules.relative_to\", \"0:\"],\n  [\"script.type.speculationrules.requires\", \"0:\"],\n  [\n    \"script.type.speculationrules.requires.anonymous-client-ip-when-cross-origin\",\n    \"0:\",\n  ],\n  [\"script.type.speculationrules.source_optional\", \"0:\"],\n  [\"script.type.speculationrules.tag\", \"0:\"],\n  [\"script.type.speculationrules.target_hint\", \"0:\"],\n  [\"script.type.speculationrules.urls\", \"0:\"],\n  [\"script.type.speculationrules.where\", \"0:\"],\n  [\"search\", \"10:2023\"],\n  [\"section\", \"10:2015\"],\n  [\"select\", \"10:2015\"],\n  [\"select.disabled\", \"10:2015\"],\n  [\"select.form\", \"10:2015\"],\n  [\"select.hr_in_select\", \"0:\"],\n  [\"select.multiple\", \"10:2015\"],\n  [\"select.name\", \"10:2015\"],\n  [\"select.required\", \"10:2015\"],\n  [\"select.size\", \"0:\"],\n  [\"selectedcontent\", \"0:\"],\n  [\"slot\", \"10:2020\"],\n  [\"slot.name\", \"10:2020\"],\n  [\"small\", \"10:2015\"],\n  [\"source\", \"10:2015\"],\n  [\"source.height\", \"10:2022\"],\n  [\"source.media\", \"10:2015\"],\n  [\"source.sizes\", \"10:2016\"],\n  [\"source.src\", \"10:2015\"],\n  [\"source.srcset\", \"10:2016\"],\n  [\"source.type\", \"10:2015\"],\n  [\"source.width\", \"10:2022\"],\n  [\"span\", \"10:2015\"],\n  [\"strong\", \"10:2015\"],\n  [\"style\", \"10:2015\"],\n  [\"style.blocking\", \"0:\"],\n  [\"style.media\", \"10:2015\"],\n  [\"sub\", \"10:2015\"],\n  [\"summary\", \"10:2020\"],\n  [\"summary.display_list_item\", \"0:\"],\n  [\"sup\", \"10:2015\"],\n  [\"table\", \"10:2015\"],\n  [\"table.align\", \"0:\"],\n  [\"table.bgcolor\", \"0:\"],\n  [\"table.border\", \"0:\"],\n  [\"table.cellpadding\", \"0:\"],\n  [\"table.cellspacing\", \"0:\"],\n  [\"table.frame\", \"0:\"],\n  [\"table.rules\", \"0:\"],\n  [\"table.summary\", \"0:\"],\n  [\"table.width\", \"0:\"],\n  [\"tbody\", \"10:2015\"],\n  [\"tbody.align\", \"0:\"],\n  [\"tbody.bgcolor\", \"0:\"],\n  [\"tbody.char\", \"0:\"],\n  [\"tbody.charoff\", \"0:\"],\n  [\"tbody.valign\", \"0:\"],\n  [\"td\", \"10:2015\"],\n  [\"td.abbr\", \"0:\"],\n  [\"td.align\", \"0:\"],\n  [\"td.axis\", \"0:\"],\n  [\"td.bgcolor\", \"0:\"],\n  [\"td.char\", \"0:\"],\n  [\"td.charoff\", \"0:\"],\n  [\"td.colspan\", \"10:2015\"],\n  [\"td.headers\", \"10:2015\"],\n  [\"td.rowspan\", \"10:2015\"],\n  [\"td.rowspan.rowspan_zero\", \"0:\"],\n  [\"td.scope\", \"0:\"],\n  [\"td.valign\", \"0:\"],\n  [\"td.width\", \"0:\"],\n  [\"template\", \"10:2015\"],\n  [\"template.shadowrootclonable\", \"5:2024\"],\n  [\"template.shadowrootcustomelementregistry\", \"0:\"],\n  [\"template.shadowrootdelegatesfocus\", \"5:2024\"],\n  [\"template.shadowrootmode\", \"5:2024\"],\n  [\"template.shadowrootreferencetarget\", \"0:\"],\n  [\"template.shadowrootserializable\", \"0:\"],\n  [\"template.shadowrootslotassignment\", \"0:\"],\n  [\"textarea\", \"10:2015\"],\n  [\"textarea.autocomplete\", \"10:2020\"],\n  [\"textarea.cols\", \"10:2015\"],\n  [\"textarea.dirname\", \"10:2023\"],\n  [\"textarea.disabled\", \"10:2015\"],\n  [\"textarea.form\", \"10:2015\"],\n  [\"textarea.maxlength\", \"10:2015\"],\n  [\"textarea.minlength\", \"10:2018\"],\n  [\"textarea.name\", \"10:2015\"],\n  [\"textarea.placeholder\", \"10:2015\"],\n  [\"textarea.placeholder.line_breaks\", \"10:2022\"],\n  [\"textarea.readonly\", \"10:2015\"],\n  [\"textarea.required\", \"10:2015\"],\n  [\"textarea.rows\", \"10:2015\"],\n  [\"textarea.wrap\", \"10:2015\"],\n  [\"textarea.wrap.hard\", \"0:\"],\n  [\"tfoot\", \"10:2015\"],\n  [\"tfoot.align\", \"0:\"],\n  [\"tfoot.bgcolor\", \"0:\"],\n  [\"tfoot.char\", \"0:\"],\n  [\"tfoot.charoff\", \"0:\"],\n  [\"tfoot.valign\", \"0:\"],\n  [\"th\", \"10:2015\"],\n  [\"th.abbr\", \"10:2015\"],\n  [\"th.align\", \"0:\"],\n  [\"th.axis\", \"0:\"],\n  [\"th.bgcolor\", \"0:\"],\n  [\"th.char\", \"0:\"],\n  [\"th.charoff\", \"0:\"],\n  [\"th.colspan\", \"10:2015\"],\n  [\"th.headers\", \"10:2015\"],\n  [\"th.rowspan\", \"10:2015\"],\n  [\"th.rowspan.rowspan_zero\", \"0:\"],\n  [\"th.scope\", \"10:2015\"],\n  [\"th.valign\", \"0:\"],\n  [\"th.width\", \"0:\"],\n  [\"thead\", \"10:2015\"],\n  [\"thead.align\", \"0:\"],\n  [\"thead.bgcolor\", \"0:\"],\n  [\"thead.char\", \"0:\"],\n  [\"thead.charoff\", \"0:\"],\n  [\"thead.valign\", \"0:\"],\n  [\"time\", \"10:2017\"],\n  [\"time.datetime\", \"10:2017\"],\n  [\"title\", \"10:2015\"],\n  [\"tr\", \"10:2015\"],\n  [\"tr.align\", \"0:\"],\n  [\"tr.bgcolor\", \"0:\"],\n  [\"tr.char\", \"0:\"],\n  [\"tr.charoff\", \"0:\"],\n  [\"tr.valign\", \"0:\"],\n  [\"track\", \"10:2015\"],\n  [\"track.default\", \"10:2015\"],\n  [\"track.kind\", \"10:2015\"],\n  [\"track.label\", \"10:2015\"],\n  [\"track.src\", \"10:2016\"],\n  [\"track.srclang\", \"10:2015\"],\n  [\"u\", \"10:2015\"],\n  [\"ul\", \"10:2015\"],\n  [\"var\", \"10:2015\"],\n  [\"video\", \"10:2015\"],\n  [\"video.aspect_ratio_computed_from_attributes\", \"10:2020\"],\n  [\"video.autoplay\", \"10:2016\"],\n  [\"video.controls\", \"10:2015\"],\n  [\"video.controlslist\", \"0:\"],\n  [\"video.crossorigin\", \"10:2020\"],\n  [\"video.disablepictureinpicture\", \"0:\"],\n  [\"video.disableremoteplayback\", \"0:\"],\n  [\"video.height\", \"10:2015\"],\n  [\"video.loading\", \"0:\"],\n  [\"video.loop\", \"10:2015\"],\n  [\"video.muted\", \"10:2015\"],\n  [\"video.playsinline\", \"0:\"],\n  [\"video.poster\", \"10:2015\"],\n  [\"video.preload\", \"10:2015\"],\n  [\"video.src\", \"10:2015\"],\n  [\"video.width\", \"10:2015\"],\n  [\"wbr\", \"10:2015\"],\n]);\nconst globalAttributes = new Map([\n  [\"accesskey\", \"10:2015\"],\n  [\"autocapitalize\", \"0:\"],\n  [\"autocorrect\", \"0:\"],\n  [\"autofocus\", \"10:2023\"],\n  [\"contenteditable\", \"10:2015\"],\n  [\"contenteditable.plaintext-only\", \"5:2025\"],\n  [\"enterkeyhint\", \"10:2021\"],\n  [\"exportparts\", \"10:2020\"],\n  [\"inert\", \"10:2023\"],\n  [\"inert.ignores_find_in_page\", \"0:\"],\n  [\"inputmode\", \"10:2021\"],\n  [\"is\", \"0:\"],\n  [\"lang\", \"10:2015\"],\n  [\"nonce\", \"10:2022\"],\n  [\"part\", \"10:2020\"],\n  [\"popover\", \"5:2024\"],\n  [\"popover.hint\", \"0:\"],\n  [\"slot\", \"10:2020\"],\n  [\"spellcheck\", \"10:2017\"],\n  [\"style\", \"10:2015\"],\n  [\"tabindex\", \"10:2015\"],\n  [\"title\", \"10:2015\"],\n  [\"title.multi-line_titles\", \"10:2018\"],\n  [\"translate\", \"10:2023\"],\n  [\"virtualkeyboardpolicy\", \"0:\"],\n  [\"writingsuggestions\", \"0:\"],\n]);\nexport {\n  elements,\n  globalAttributes,\n  BASELINE_HIGH,\n  BASELINE_LOW,\n  BASELINE_FALSE,\n};\n"
  },
  {
    "path": "packages/core/lib/utils/node.js",
    "content": "/**\n * @param {string} name Element name\n * @returns {boolean}\n */\nexport function isCustomElement(name) {\n  return name.includes(\"-\");\n}\n"
  },
  {
    "path": "packages/core/lib/utils/obsolete-attrs.js",
    "content": "/**\n * @typedef {Object} ObsoleteAttrConfig\n * @property {string[]} elements - List of HTML elements where this attribute is\n *   obsolete. Use \"*\" for all elements.\n * @property {string} suggestion - Suggestion for what to use instead of this\n *   obsolete attribute.\n */\n\n/** @typedef {Record<string, ObsoleteAttrConfig[]>} ObsoleteAttrs */\n\n// https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features\n/** @type {ObsoleteAttrs} */\nexport const OBSOLETE_ATTRS = {\n  charset: [\n    {\n      elements: [\"a\", \"link\"],\n      suggestion:\n        \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n    },\n    {\n      elements: [\"script\"],\n      suggestion:\n        \"It is redundant to specify it on the script element since it inherits from the document.\",\n    },\n  ],\n  coords: [\n    {\n      elements: [\"a\"],\n      suggestion: \"Use area instead of a for image maps.\",\n    },\n  ],\n  shape: [\n    {\n      elements: [\"a\"],\n      suggestion: \"Use area instead of a for image maps.\",\n    },\n  ],\n  methods: [\n    {\n      elements: [\"a\", \"link\"],\n      suggestion: \"Use the HTTP OPTIONS feature instead.\",\n    },\n  ],\n  name: [\n    {\n      elements: [\"a\", \"embed\", \"img\", \"option\"],\n      suggestion: \"Use the id attribute instead.\",\n    },\n  ],\n  rev: [\n    {\n      elements: [\"a\", \"link\"],\n      suggestion:\n        'Use the rel attribute instead, with an opposite term. (For example, instead of rev=\"made\", use rel=\"author\".)',\n    },\n  ],\n  urn: [\n    {\n      elements: [\"a\", \"link\"],\n      suggestion:\n        \"Specify the preferred persistent identifier using the href attribute instead.\",\n    },\n  ],\n  accept: [\n    {\n      elements: [\"form\"],\n      suggestion:\n        \"Use the accept attribute directly on the input elements instead.\",\n    },\n  ],\n  hreflang: [\n    {\n      elements: [\"area\"],\n      suggestion:\n        \"These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on area elements. Omit them altogether.\",\n    },\n  ],\n  type: [\n    {\n      elements: [\"area\"],\n      suggestion:\n        \"These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on area elements. Omit them altogether.\",\n    },\n    {\n      elements: [\"li\"],\n      suggestion: \"Use CSS instead.\",\n    },\n    {\n      elements: [\"menu\"],\n      suggestion:\n        \"To implement a custom context menu, use script to handle the contextmenu event. For toolbar menus, omit the attribute.\",\n    },\n    {\n      elements: [\"style\"],\n      suggestion:\n        \"Omit the attribute for CSS; for data blocks, use script as the container instead of style.\",\n    },\n    {\n      elements: [\"ul\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  nohref: [\n    {\n      elements: [\"area\"],\n      suggestion:\n        \"Omitting the href attribute is sufficient; the nohref attribute is unnecessary. Omit it altogether.\",\n    },\n  ],\n  profile: [\n    {\n      elements: [\"head\"],\n      suggestion: \"Unnecessary. Omit it altogether.\",\n    },\n  ],\n  manifest: [\n    {\n      elements: [\"html\"],\n      suggestion: \"Use service workers instead.\",\n    },\n  ],\n  version: [\n    {\n      elements: [\"html\"],\n      suggestion: \"Unnecessary. Omit it altogether.\",\n    },\n  ],\n  ismap: [\n    {\n      elements: [\"input\"],\n      suggestion:\n        \"Unnecessary. Omit it altogether. All input elements with a type attribute in the Image Button state are processed as server-side image maps.\",\n    },\n  ],\n  usemap: [\n    {\n      elements: [\"input\", \"object\"],\n      suggestion: \"Use the img element for image maps.\",\n    },\n  ],\n  longdesc: [\n    {\n      elements: [\"iframe\", \"img\"],\n      suggestion:\n        \"Use a regular a element to link to the description, or (in the case of images) use an image map to provide a link from the image to the image's description.\",\n    },\n  ],\n  lowsrc: [\n    {\n      elements: [\"img\"],\n      suggestion:\n        \"Use a progressive JPEG image (given in the src attribute), instead of using two separate images.\",\n    },\n  ],\n  target: [\n    {\n      elements: [\"link\"],\n      suggestion: \"Unnecessary. Omit it altogether.\",\n    },\n  ],\n  label: [\n    {\n      elements: [\"menu\"],\n      suggestion:\n        \"To implement a custom context menu, use script to handle the contextmenu event.\",\n    },\n  ],\n  contextmenu: [\n    {\n      elements: [\"*\"],\n      suggestion:\n        \"To implement a custom context menu, use script to handle the contextmenu event.\",\n    },\n  ],\n  onshow: [\n    {\n      elements: [\"*\"],\n      suggestion:\n        \"To implement a custom context menu, use script to handle the contextmenu event.\",\n    },\n  ],\n  scheme: [\n    {\n      elements: [\"meta\"],\n      suggestion:\n        \"Use only one scheme per field, or make the scheme declaration part of the value.\",\n    },\n  ],\n  archive: [\n    {\n      elements: [\"object\"],\n      suggestion: \"Use the data and type attributes to invoke plugins.\",\n    },\n  ],\n  classid: [\n    {\n      elements: [\"object\"],\n      suggestion: \"Use the data and type attributes to invoke plugins.\",\n    },\n  ],\n  code: [\n    {\n      elements: [\"object\"],\n      suggestion: \"Use the data and type attributes to invoke plugins.\",\n    },\n  ],\n  codebase: [\n    {\n      elements: [\"object\"],\n      suggestion: \"Use the data and type attributes to invoke plugins.\",\n    },\n  ],\n  codetype: [\n    {\n      elements: [\"object\"],\n      suggestion: \"Use the data and type attributes to invoke plugins.\",\n    },\n  ],\n  declare: [\n    {\n      elements: [\"object\"],\n      suggestion:\n        \"Repeat the object element completely each time the resource is to be reused.\",\n    },\n  ],\n  standby: [\n    {\n      elements: [\"object\"],\n      suggestion:\n        \"Optimize the linked resource so that it loads quickly or, at least, incrementally.\",\n    },\n  ],\n  typemustmatch: [\n    {\n      elements: [\"object\"],\n      suggestion: \"Avoid using object elements with untrusted resources.\",\n    },\n  ],\n  language: [\n    {\n      elements: [\"script\"],\n      suggestion:\n        \"Omit the attribute for JavaScript; for data blocks, use the type attribute instead.\",\n    },\n  ],\n  event: [\n    {\n      elements: [\"script\"],\n      suggestion: \"Use DOM events mechanisms to register event listeners.\",\n    },\n  ],\n  for: [\n    {\n      elements: [\"script\"],\n      suggestion: \"Use DOM events mechanisms to register event listeners.\",\n    },\n  ],\n  datapagesize: [\n    {\n      elements: [\"table\"],\n      suggestion: \"Unnecessary. Omit it altogether.\",\n    },\n  ],\n  summary: [\n    {\n      elements: [\"table\"],\n      suggestion:\n        \"Use one of the techniques for describing tables given in the table section instead.\",\n    },\n  ],\n  abbr: [\n    {\n      elements: [\"td\"],\n      suggestion:\n        \"Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The title attribute can also be useful in including more detailed text, so that the cell's contents can be made terse. If it's a heading, use th (which has an abbr attribute).\",\n    },\n  ],\n  axis: [\n    {\n      elements: [\"td\", \"th\"],\n      suggestion: \"Use the scope attribute on the relevant th.\",\n    },\n  ],\n  scope: [\n    {\n      elements: [\"td\"],\n      suggestion: \"Use th elements for heading cells.\",\n    },\n  ],\n  datasrc: [\n    {\n      elements: [\n        \"a\",\n        \"button\",\n        \"div\",\n        \"frame\",\n        \"iframe\",\n        \"img\",\n        \"input\",\n        \"label\",\n        \"legend\",\n        \"marquee\",\n        \"object\",\n        \"option\",\n        \"select\",\n        \"span\",\n        \"table\",\n        \"textarea\",\n      ],\n      suggestion:\n        \"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.\",\n    },\n  ],\n  datafld: [\n    {\n      elements: [\n        \"a\",\n        \"button\",\n        \"div\",\n        \"fieldset\",\n        \"frame\",\n        \"iframe\",\n        \"img\",\n        \"input\",\n        \"label\",\n        \"legend\",\n        \"marquee\",\n        \"object\",\n        \"select\",\n        \"span\",\n        \"textarea\",\n      ],\n      suggestion:\n        \"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.\",\n    },\n  ],\n  dataformatas: [\n    {\n      elements: [\n        \"button\",\n        \"div\",\n        \"input\",\n        \"label\",\n        \"legend\",\n        \"marquee\",\n        \"object\",\n        \"option\",\n        \"select\",\n        \"span\",\n        \"table\",\n      ],\n      suggestion:\n        \"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.\",\n    },\n  ],\n  dropzone: [\n    {\n      elements: [\"*\"],\n      suggestion:\n        \"Use script to handle the dragenter and dragover events instead.\",\n    },\n  ],\n  alink: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  bgcolor: [\n    {\n      elements: [\"body\", \"table\", \"td\", \"th\", \"tr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  bottommargin: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  leftmargin: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  link: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  marginheight: [\n    {\n      elements: [\"body\", \"iframe\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  marginwidth: [\n    {\n      elements: [\"body\", \"iframe\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  rightmargin: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  text: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  topmargin: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  vlink: [\n    {\n      elements: [\"body\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  clear: [\n    {\n      elements: [\"br\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  align: [\n    {\n      elements: [\n        \"caption\",\n        \"col\",\n        \"div\",\n        \"embed\",\n        \"h1\",\n        \"h2\",\n        \"h3\",\n        \"h4\",\n        \"h5\",\n        \"h6\",\n        \"hr\",\n        \"iframe\",\n        \"input\",\n        \"img\",\n        \"legend\",\n        \"object\",\n        \"p\",\n        \"table\",\n        \"tbody\",\n        \"thead\",\n        \"tfoot\",\n        \"td\",\n        \"th\",\n        \"tr\",\n      ],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  char: [\n    {\n      elements: [\"col\", \"tbody\", \"thead\", \"tfoot\", \"td\", \"th\", \"tr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  charoff: [\n    {\n      elements: [\"col\", \"tbody\", \"thead\", \"tfoot\", \"td\", \"th\", \"tr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  valign: [\n    {\n      elements: [\"col\", \"tbody\", \"thead\", \"tfoot\", \"td\", \"th\", \"tr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  width: [\n    {\n      elements: [\"col\", \"hr\", \"pre\", \"table\", \"td\", \"th\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  compact: [\n    {\n      elements: [\"dl\", \"menu\", \"ol\", \"ul\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  hspace: [\n    {\n      elements: [\"embed\", \"iframe\", \"input\", \"img\", \"object\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  vspace: [\n    {\n      elements: [\"embed\", \"iframe\", \"input\", \"img\", \"object\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  color: [\n    {\n      elements: [\"hr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  noshade: [\n    {\n      elements: [\"hr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  size: [\n    {\n      elements: [\"hr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  allowtransparency: [\n    {\n      elements: [\"iframe\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  frameborder: [\n    {\n      elements: [\"iframe\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  framespacing: [\n    {\n      elements: [\"iframe\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  scrolling: [\n    {\n      elements: [\"iframe\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  border: [\n    {\n      elements: [\"input\", \"img\", \"object\", \"table\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  frame: [\n    {\n      elements: [\"table\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  bordercolor: [\n    {\n      elements: [\"table\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  cellpadding: [\n    {\n      elements: [\"table\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  cellspacing: [\n    {\n      elements: [\"table\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  height: [\n    {\n      elements: [\"table\", \"thead\", \"tbody\", \"tfoot\", \"td\", \"th\", \"tr\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  rules: [\n    {\n      elements: [\"table\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  nowrap: [\n    {\n      elements: [\"td\", \"th\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n  background: [\n    {\n      elements: [\"body\", \"table\", \"thead\", \"tbody\", \"tfoot\", \"tr\", \"td\", \"th\"],\n      suggestion: \"Use CSS instead.\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/core/package.json",
    "content": "{\n  \"name\": \"@html-eslint/core\",\n  \"version\": \"0.60.0\",\n  \"description\": \"Core HTML validation logic for html-eslint\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"./dist/index.js\",\n  \"module\": \"./dist/index.mjs\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/index.d.mts\",\n        \"default\": \"./dist/index.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/index.d.ts\",\n        \"default\": \"./dist/index.js\"\n      }\n    }\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"build\": \"tsup\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"html\",\n    \"eslint\",\n    \"validation\",\n    \"core\",\n    \"lint\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/types\": \"^0.60.0\",\n    \"html-standard\": \"^0.0.13\"\n  },\n  \"devDependencies\": {\n    \"tsup\": \"^8.5.1\"\n  },\n  \"engines\": {\n    \"node\": \"^18.18.0 || ^20.9.0 || >=21.1.0\"\n  }\n}\n"
  },
  {
    "path": "packages/core/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\",\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"declaration\": true\n  }\n}\n"
  },
  {
    "path": "packages/core/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"]\n}\n"
  },
  {
    "path": "packages/core/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  entry: [\"lib/index.js\"],\n  format: [\"cjs\", \"esm\"],\n  dts: true,\n  splitting: false,\n  sourcemap: true,\n  clean: true,\n  outDir: \"dist\",\n});\n"
  },
  {
    "path": "packages/eslint-plugin/README.md",
    "content": "# `@html-eslint/eslint-plugin`\n\nAn ESLint plugin which provides lint rules for HTML.\n\n1. [Getting Started](https://yeonjuan.github.io/html-eslint/docs/getting-started)\n   - [Installation](https://yeonjuan.github.io/html-eslint/docs/getting-started#installation)\n   - [Configuration](https://yeonjuan.github.io/html-eslint/docs/getting-started#configuration)\n   - [Editor Configuration](https://yeonjuan.github.io/html-eslint/docs/getting-started#editor-configuration)\n     - [VSCode](https://yeonjuan.github.io/html-eslint/docs/getting-started#vscode)\n1. [Recommended Configs](https://yeonjuan.github.io/html-eslint/docs/getting-started#recommended-configs)\n1. [Rules](https://yeonjuan.github.io/html-eslint/docs/rules)\n1. [CLI](https://yeonjuan.github.io/html-eslint/docs/cli)\n1. [Playground](https://yeonjuan.github.io/html-eslint/playground)\n1. [License](#License)\n\n## License\n\nDistributed under the MIT License.\n"
  },
  {
    "path": "packages/eslint-plugin/lib/adapters/attribute-key.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {AttributeKey} from \"@html-eslint/types\"\n */\n\nconst { hasTemplate } = require(\"../rules/utils/node\");\n\n/** @implements {AttributeKeyAdapter} */\nclass HTMLAttributeKeyAdapter {\n  /** @param {AttributeKey} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getValue() {\n    return this.node.value;\n  }\n\n  hasExpression() {\n    return hasTemplate(this.node);\n  }\n\n  getRange() {\n    return this.node.range;\n  }\n\n  getLocation() {\n    return this.node.loc;\n  }\n}\n\nmodule.exports = {\n  HTMLAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/adapters/attribute-value.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {AttributeValue} from \"@html-eslint/types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nclass HTMLAttributeValueAdapter {\n  /** @param {AttributeValue} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return this.node.loc;\n  }\n\n  getRange() {\n    return this.node.range;\n  }\n\n  hasExpression() {\n    return !!this.node.parts.length;\n  }\n\n  getValue() {\n    return this.node.value;\n  }\n}\n\nmodule.exports = {\n  HTMLAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/adapters/attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {Attribute} from \"@html-eslint/types\"\n */\n\nconst { HTMLAttributeKeyAdapter } = require(\"./attribute-key\");\nconst { HTMLAttributeValueAdapter } = require(\"./attribute-value\");\n\n/** @implements {AttributeAdapter} */\nclass HTMLAttributeAdapter {\n  /** @param {Attribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getKey() {\n    return new HTMLAttributeKeyAdapter(this.node.key);\n  }\n\n  getValue() {\n    if (!this.node.value) {\n      return null;\n    }\n    return new HTMLAttributeValueAdapter(this.node.value);\n  }\n}\n\nmodule.exports = {\n  HTMLAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/adapters/element.js",
    "content": "/**\n * @import {ElementAdapter} from \"@html-eslint/core\"\n * @import {\n *   AttributeValue,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n */\n\nconst { getNameOf } = require(\"../rules/utils/node\");\nconst { HTMLAttributeAdapter } = require(\"./attribute\");\n\n/** @implements {ElementAdapter} */\nclass HTMLElementAdapter {\n  /** @param {Tag | ScriptTag | StyleTag} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return this.node.loc;\n  }\n\n  getRange() {\n    return this.node.range;\n  }\n\n  getElementName() {\n    return getNameOf(this.node);\n  }\n\n  getOpenStartLocation() {\n    return this.node.openStart.loc;\n  }\n\n  getOpenStartRange() {\n    return this.node.openStart.range;\n  }\n\n  getAttributes() {\n    return this.node.attributes.map(\n      (attribute) => new HTMLAttributeAdapter(attribute)\n    );\n  }\n}\n\nmodule.exports = {\n  HTMLElementAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/adapters/factory.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   AttributeKey,\n *   AttributeValue,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n */\n\nconst { HTMLAttributeAdapter } = require(\"./attribute\");\nconst { HTMLAttributeKeyAdapter } = require(\"./attribute-key\");\nconst { HTMLAttributeValueAdapter } = require(\"./attribute-value\");\nconst { HTMLElementAdapter } = require(\"./element\");\n\n/** @param {ScriptTag | StyleTag | Tag} node */\nfunction createElementAdapter(node) {\n  return new HTMLElementAdapter(node);\n}\n\n/** @param {Attribute} node */\nfunction createAttributeAdapter(node) {\n  return new HTMLAttributeAdapter(node);\n}\n\n/** @param {AttributeKey} node */\nfunction createAttributeKeyAdapter(node) {\n  return new HTMLAttributeKeyAdapter(node);\n}\n\n/** @param {AttributeValue} node */\nfunction createAttributeValueAdapter(node) {\n  return new HTMLAttributeValueAdapter(node);\n}\n\nmodule.exports = {\n  createElementAdapter,\n  createAttributeAdapter,\n  createAttributeKeyAdapter,\n  createAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/configs/all.js",
    "content": "const rules = require(\"../rules\");\nconst ruleKeys = Object.entries(rules)\n  .filter(([, rule]) => !rule.meta?.deprecated)\n  .map(([ruleName]) => ruleName);\n\nconst allRulesLegacy = ruleKeys.reduce((acc, ruleName) => {\n  acc[`@html-eslint/${ruleName}`] = \"error\";\n  return acc;\n}, /** @type {Record<string, \"error\">} */ ({}));\n\nconst allRules = ruleKeys.reduce((acc, ruleName) => {\n  acc[`html/${ruleName}`] = \"error\";\n  return acc;\n}, /** @type {Record<string, \"error\">} */ ({}));\n\nmodule.exports = {\n  allRulesLegacy,\n  allRules,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/configs/recommended.js",
    "content": "/** @satisfies {import(\"eslint\").Linter.Config[\"rules\"]} */\nconst recommendedRules = {\n  \"html/require-lang\": \"error\",\n  \"html/require-img-alt\": \"error\",\n  \"html/require-doctype\": \"error\",\n  \"html/require-title\": \"error\",\n  \"html/no-multiple-h1\": \"error\",\n  \"html/no-extra-spacing-tags\": \"error\",\n  \"html/attrs-newline\": \"error\",\n  \"html/element-newline\": [\n    \"error\",\n    {\n      inline: [`$inline`],\n    },\n  ],\n  \"html/no-duplicate-id\": \"error\",\n  \"html/indent\": \"error\",\n  \"html/require-li-container\": \"error\",\n  \"html/quotes\": \"error\",\n  \"html/no-obsolete-tags\": \"error\",\n  \"html/no-obsolete-attrs\": \"error\",\n  \"html/require-closing-tags\": \"error\",\n  \"html/no-duplicate-attrs\": \"error\",\n  \"html/use-baseline\": \"error\",\n  \"html/no-duplicate-in-head\": \"error\",\n};\n\nconst recommendedLegacyRules = Object.entries(recommendedRules).reduce(\n  (acc, [key, value]) => {\n    acc[key.replace(\"html/\", \"@html-eslint/\")] = value;\n    return acc;\n  },\n  /**\n   * @type {Record<\n   *   string,\n   *   (typeof recommendedRules)[keyof typeof recommendedRules]\n   * >}\n   */\n  ({})\n);\n\nmodule.exports = {\n  recommendedRules,\n  recommendedLegacyRules,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/constants/index.js",
    "content": "const RULE_CATEGORY = require(\"./rule-category\");\nconst OBSOLETE_TAGS = require(\"./obsolete-tags\");\nconst VOID_ELEMENTS = require(\"./void-elements\");\n\nmodule.exports = {\n  RULE_CATEGORY,\n  OBSOLETE_TAGS,\n  VOID_ELEMENTS,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/constants/obsolete-tags.js",
    "content": "// https://html.spec.whatwg.org/#non-conforming-features\n/** @type {string[]} */\nmodule.exports = [\n  \"applet\",\n  \"acronym\",\n  \"bgsound\",\n  \"dir\",\n  \"frame\",\n  \"frameset\",\n  \"noframes\",\n  \"isindex\",\n  \"keygen\",\n  \"listing\",\n  \"menuitem\",\n  \"nextid\",\n  \"noembed\",\n  \"plaintext\",\n  \"rb\",\n  \"rtc\",\n  \"strike\",\n  \"xmp\",\n  \"basefont\",\n  \"big\",\n  \"blink\",\n  \"center\",\n  \"font\",\n  \"marquee\",\n  \"multicol\",\n  \"nobr\",\n  \"spacer\",\n  \"tt\",\n];\n"
  },
  {
    "path": "packages/eslint-plugin/lib/constants/rule-category.js",
    "content": "module.exports = {\n  BEST_PRACTICE: \"Best Practice\",\n  SEO: \"SEO\",\n  ACCESSIBILITY: \"Accessibility\",\n  STYLE: \"Style\",\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/constants/svg-camel-case-attributes.js",
    "content": "module.exports = [\n  \"allowReorder\",\n  \"attributeName\",\n  \"attributeType\",\n  \"autoReverse\",\n  \"baseFrequency\",\n  \"baseProfile\",\n  \"calcMode\",\n  \"clipPath\",\n  \"clipPathUnits\",\n  \"contentScriptType\",\n  \"contentStyleType\",\n  \"diffuseConstant\",\n  \"edgeMode\",\n  \"externalResourcesRequired\",\n  \"filterRes\",\n  \"filterUnits\",\n  \"glyphRef\",\n  \"gradientTransform\",\n  \"gradientUnits\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keyPoints\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"lengthAdjust\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerUnits\",\n  \"markerWidth\",\n  \"maskContentUnits\",\n  \"maskUnits\",\n  \"numOctaves\",\n  \"onBlur\",\n  \"onChange\",\n  \"onClick\",\n  \"onFocus\",\n  \"onKeyUp\",\n  \"onLoad\",\n  \"pathLength\",\n  \"patternContentUnits\",\n  \"patternTransform\",\n  \"patternUnits\",\n  \"pointsAtX\",\n  \"pointsAtY\",\n  \"pointsAtZ\",\n  \"preserveAlpha\",\n  \"preserveAspectRatio\",\n  \"primitiveUnits\",\n  \"refX\",\n  \"refY\",\n  \"repeatCount\",\n  \"repeatDur\",\n  \"requiredExtensions\",\n  \"requiredFeatures\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"spreadMethod\",\n  \"startOffset\",\n  \"stdDeviation\",\n  \"stitchTiles\",\n  \"surfaceScale\",\n  \"systemLanguage\",\n  \"tableValues\",\n  \"targetX\",\n  \"targetY\",\n  \"textLength\",\n  \"viewBox\",\n  \"viewTarget\",\n  \"xChannelSelector\",\n  \"yChannelSelector\",\n  \"zoomAndPan\",\n];\n"
  },
  {
    "path": "packages/eslint-plugin/lib/constants/void-elements.js",
    "content": "/** @type {string[]} */\nmodule.exports = [\n  \"area\",\n  \"base\",\n  \"br\",\n  \"col\",\n  \"embed\",\n  \"hr\",\n  \"img\",\n  \"input\",\n  \"link\",\n  \"meta\",\n  \"param\",\n  \"source\",\n  \"track\",\n  \"wbr\",\n];\n"
  },
  {
    "path": "packages/eslint-plugin/lib/data/entities.json",
    "content": "{\n  \"&AElig\": { \"codepoints\": [198], \"characters\": \"\\u00C6\" },\n  \"&AElig;\": { \"codepoints\": [198], \"characters\": \"\\u00C6\" },\n  \"&AMP\": { \"codepoints\": [38], \"characters\": \"\\u0026\" },\n  \"&AMP;\": { \"codepoints\": [38], \"characters\": \"\\u0026\" },\n  \"&Aacute\": { \"codepoints\": [193], \"characters\": \"\\u00C1\" },\n  \"&Aacute;\": { \"codepoints\": [193], \"characters\": \"\\u00C1\" },\n  \"&Abreve;\": { \"codepoints\": [258], \"characters\": \"\\u0102\" },\n  \"&Acirc\": { \"codepoints\": [194], \"characters\": \"\\u00C2\" },\n  \"&Acirc;\": { \"codepoints\": [194], \"characters\": \"\\u00C2\" },\n  \"&Acy;\": { \"codepoints\": [1040], \"characters\": \"\\u0410\" },\n  \"&Afr;\": { \"codepoints\": [120068], \"characters\": \"\\uD835\\uDD04\" },\n  \"&Agrave\": { \"codepoints\": [192], \"characters\": \"\\u00C0\" },\n  \"&Agrave;\": { \"codepoints\": [192], \"characters\": \"\\u00C0\" },\n  \"&Alpha;\": { \"codepoints\": [913], \"characters\": \"\\u0391\" },\n  \"&Amacr;\": { \"codepoints\": [256], \"characters\": \"\\u0100\" },\n  \"&And;\": { \"codepoints\": [10835], \"characters\": \"\\u2A53\" },\n  \"&Aogon;\": { \"codepoints\": [260], \"characters\": \"\\u0104\" },\n  \"&Aopf;\": { \"codepoints\": [120120], \"characters\": \"\\uD835\\uDD38\" },\n  \"&ApplyFunction;\": { \"codepoints\": [8289], \"characters\": \"\\u2061\" },\n  \"&Aring\": { \"codepoints\": [197], \"characters\": \"\\u00C5\" },\n  \"&Aring;\": { \"codepoints\": [197], \"characters\": \"\\u00C5\" },\n  \"&Ascr;\": { \"codepoints\": [119964], \"characters\": \"\\uD835\\uDC9C\" },\n  \"&Assign;\": { \"codepoints\": [8788], \"characters\": \"\\u2254\" },\n  \"&Atilde\": { \"codepoints\": [195], \"characters\": \"\\u00C3\" },\n  \"&Atilde;\": { \"codepoints\": [195], \"characters\": \"\\u00C3\" },\n  \"&Auml\": { \"codepoints\": [196], \"characters\": \"\\u00C4\" },\n  \"&Auml;\": { \"codepoints\": [196], \"characters\": \"\\u00C4\" },\n  \"&Backslash;\": { \"codepoints\": [8726], \"characters\": \"\\u2216\" },\n  \"&Barv;\": { \"codepoints\": [10983], \"characters\": \"\\u2AE7\" },\n  \"&Barwed;\": { \"codepoints\": [8966], \"characters\": \"\\u2306\" },\n  \"&Bcy;\": { \"codepoints\": [1041], \"characters\": \"\\u0411\" },\n  \"&Because;\": { \"codepoints\": [8757], \"characters\": \"\\u2235\" },\n  \"&Bernoullis;\": { \"codepoints\": [8492], \"characters\": \"\\u212C\" },\n  \"&Beta;\": { \"codepoints\": [914], \"characters\": \"\\u0392\" },\n  \"&Bfr;\": { \"codepoints\": [120069], \"characters\": \"\\uD835\\uDD05\" },\n  \"&Bopf;\": { \"codepoints\": [120121], \"characters\": \"\\uD835\\uDD39\" },\n  \"&Breve;\": { \"codepoints\": [728], \"characters\": \"\\u02D8\" },\n  \"&Bscr;\": { \"codepoints\": [8492], \"characters\": \"\\u212C\" },\n  \"&Bumpeq;\": { \"codepoints\": [8782], \"characters\": \"\\u224E\" },\n  \"&CHcy;\": { \"codepoints\": [1063], \"characters\": \"\\u0427\" },\n  \"&COPY\": { \"codepoints\": [169], \"characters\": \"\\u00A9\" },\n  \"&COPY;\": { \"codepoints\": [169], \"characters\": \"\\u00A9\" },\n  \"&Cacute;\": { \"codepoints\": [262], \"characters\": \"\\u0106\" },\n  \"&Cap;\": { \"codepoints\": [8914], \"characters\": \"\\u22D2\" },\n  \"&CapitalDifferentialD;\": { \"codepoints\": [8517], \"characters\": \"\\u2145\" },\n  \"&Cayleys;\": { \"codepoints\": [8493], \"characters\": \"\\u212D\" },\n  \"&Ccaron;\": { \"codepoints\": [268], \"characters\": \"\\u010C\" },\n  \"&Ccedil\": { \"codepoints\": [199], \"characters\": \"\\u00C7\" },\n  \"&Ccedil;\": { \"codepoints\": [199], \"characters\": \"\\u00C7\" },\n  \"&Ccirc;\": { \"codepoints\": [264], \"characters\": \"\\u0108\" },\n  \"&Cconint;\": { \"codepoints\": [8752], \"characters\": \"\\u2230\" },\n  \"&Cdot;\": { \"codepoints\": [266], \"characters\": \"\\u010A\" },\n  \"&Cedilla;\": { \"codepoints\": [184], \"characters\": \"\\u00B8\" },\n  \"&CenterDot;\": { \"codepoints\": [183], \"characters\": \"\\u00B7\" },\n  \"&Cfr;\": { \"codepoints\": [8493], \"characters\": \"\\u212D\" },\n  \"&Chi;\": { \"codepoints\": [935], \"characters\": \"\\u03A7\" },\n  \"&CircleDot;\": { \"codepoints\": [8857], \"characters\": \"\\u2299\" },\n  \"&CircleMinus;\": { \"codepoints\": [8854], \"characters\": \"\\u2296\" },\n  \"&CirclePlus;\": { \"codepoints\": [8853], \"characters\": \"\\u2295\" },\n  \"&CircleTimes;\": { \"codepoints\": [8855], \"characters\": \"\\u2297\" },\n  \"&ClockwiseContourIntegral;\": {\n    \"codepoints\": [8754],\n    \"characters\": \"\\u2232\"\n  },\n  \"&CloseCurlyDoubleQuote;\": { \"codepoints\": [8221], \"characters\": \"\\u201D\" },\n  \"&CloseCurlyQuote;\": { \"codepoints\": [8217], \"characters\": \"\\u2019\" },\n  \"&Colon;\": { \"codepoints\": [8759], \"characters\": \"\\u2237\" },\n  \"&Colone;\": { \"codepoints\": [10868], \"characters\": \"\\u2A74\" },\n  \"&Congruent;\": { \"codepoints\": [8801], \"characters\": \"\\u2261\" },\n  \"&Conint;\": { \"codepoints\": [8751], \"characters\": \"\\u222F\" },\n  \"&ContourIntegral;\": { \"codepoints\": [8750], \"characters\": \"\\u222E\" },\n  \"&Copf;\": { \"codepoints\": [8450], \"characters\": \"\\u2102\" },\n  \"&Coproduct;\": { \"codepoints\": [8720], \"characters\": \"\\u2210\" },\n  \"&CounterClockwiseContourIntegral;\": {\n    \"codepoints\": [8755],\n    \"characters\": \"\\u2233\"\n  },\n  \"&Cross;\": { \"codepoints\": [10799], \"characters\": \"\\u2A2F\" },\n  \"&Cscr;\": { \"codepoints\": [119966], \"characters\": \"\\uD835\\uDC9E\" },\n  \"&Cup;\": { \"codepoints\": [8915], \"characters\": \"\\u22D3\" },\n  \"&CupCap;\": { \"codepoints\": [8781], \"characters\": \"\\u224D\" },\n  \"&DD;\": { \"codepoints\": [8517], \"characters\": \"\\u2145\" },\n  \"&DDotrahd;\": { \"codepoints\": [10513], \"characters\": \"\\u2911\" },\n  \"&DJcy;\": { \"codepoints\": [1026], \"characters\": \"\\u0402\" },\n  \"&DScy;\": { \"codepoints\": [1029], \"characters\": \"\\u0405\" },\n  \"&DZcy;\": { \"codepoints\": [1039], \"characters\": \"\\u040F\" },\n  \"&Dagger;\": { \"codepoints\": [8225], \"characters\": \"\\u2021\" },\n  \"&Darr;\": { \"codepoints\": [8609], \"characters\": \"\\u21A1\" },\n  \"&Dashv;\": { \"codepoints\": [10980], \"characters\": \"\\u2AE4\" },\n  \"&Dcaron;\": { \"codepoints\": [270], \"characters\": \"\\u010E\" },\n  \"&Dcy;\": { \"codepoints\": [1044], \"characters\": \"\\u0414\" },\n  \"&Del;\": { \"codepoints\": [8711], \"characters\": \"\\u2207\" },\n  \"&Delta;\": { \"codepoints\": [916], \"characters\": \"\\u0394\" },\n  \"&Dfr;\": { \"codepoints\": [120071], \"characters\": \"\\uD835\\uDD07\" },\n  \"&DiacriticalAcute;\": { \"codepoints\": [180], \"characters\": \"\\u00B4\" },\n  \"&DiacriticalDot;\": { \"codepoints\": [729], \"characters\": \"\\u02D9\" },\n  \"&DiacriticalDoubleAcute;\": { \"codepoints\": [733], \"characters\": \"\\u02DD\" },\n  \"&DiacriticalGrave;\": { \"codepoints\": [96], \"characters\": \"\\u0060\" },\n  \"&DiacriticalTilde;\": { \"codepoints\": [732], \"characters\": \"\\u02DC\" },\n  \"&Diamond;\": { \"codepoints\": [8900], \"characters\": \"\\u22C4\" },\n  \"&DifferentialD;\": { \"codepoints\": [8518], \"characters\": \"\\u2146\" },\n  \"&Dopf;\": { \"codepoints\": [120123], \"characters\": \"\\uD835\\uDD3B\" },\n  \"&Dot;\": { \"codepoints\": [168], \"characters\": \"\\u00A8\" },\n  \"&DotDot;\": { \"codepoints\": [8412], \"characters\": \"\\u20DC\" },\n  \"&DotEqual;\": { \"codepoints\": [8784], \"characters\": \"\\u2250\" },\n  \"&DoubleContourIntegral;\": { \"codepoints\": [8751], \"characters\": \"\\u222F\" },\n  \"&DoubleDot;\": { \"codepoints\": [168], \"characters\": \"\\u00A8\" },\n  \"&DoubleDownArrow;\": { \"codepoints\": [8659], \"characters\": \"\\u21D3\" },\n  \"&DoubleLeftArrow;\": { \"codepoints\": [8656], \"characters\": \"\\u21D0\" },\n  \"&DoubleLeftRightArrow;\": { \"codepoints\": [8660], \"characters\": \"\\u21D4\" },\n  \"&DoubleLeftTee;\": { \"codepoints\": [10980], \"characters\": \"\\u2AE4\" },\n  \"&DoubleLongLeftArrow;\": { \"codepoints\": [10232], \"characters\": \"\\u27F8\" },\n  \"&DoubleLongLeftRightArrow;\": {\n    \"codepoints\": [10234],\n    \"characters\": \"\\u27FA\"\n  },\n  \"&DoubleLongRightArrow;\": { \"codepoints\": [10233], \"characters\": \"\\u27F9\" },\n  \"&DoubleRightArrow;\": { \"codepoints\": [8658], \"characters\": \"\\u21D2\" },\n  \"&DoubleRightTee;\": { \"codepoints\": [8872], \"characters\": \"\\u22A8\" },\n  \"&DoubleUpArrow;\": { \"codepoints\": [8657], \"characters\": \"\\u21D1\" },\n  \"&DoubleUpDownArrow;\": { \"codepoints\": [8661], \"characters\": \"\\u21D5\" },\n  \"&DoubleVerticalBar;\": { \"codepoints\": [8741], \"characters\": \"\\u2225\" },\n  \"&DownArrow;\": { \"codepoints\": [8595], \"characters\": \"\\u2193\" },\n  \"&DownArrowBar;\": { \"codepoints\": [10515], \"characters\": \"\\u2913\" },\n  \"&DownArrowUpArrow;\": { \"codepoints\": [8693], \"characters\": \"\\u21F5\" },\n  \"&DownBreve;\": { \"codepoints\": [785], \"characters\": \"\\u0311\" },\n  \"&DownLeftRightVector;\": { \"codepoints\": [10576], \"characters\": \"\\u2950\" },\n  \"&DownLeftTeeVector;\": { \"codepoints\": [10590], \"characters\": \"\\u295E\" },\n  \"&DownLeftVector;\": { \"codepoints\": [8637], \"characters\": \"\\u21BD\" },\n  \"&DownLeftVectorBar;\": { \"codepoints\": [10582], \"characters\": \"\\u2956\" },\n  \"&DownRightTeeVector;\": { \"codepoints\": [10591], \"characters\": \"\\u295F\" },\n  \"&DownRightVector;\": { \"codepoints\": [8641], \"characters\": \"\\u21C1\" },\n  \"&DownRightVectorBar;\": { \"codepoints\": [10583], \"characters\": \"\\u2957\" },\n  \"&DownTee;\": { \"codepoints\": [8868], \"characters\": \"\\u22A4\" },\n  \"&DownTeeArrow;\": { \"codepoints\": [8615], \"characters\": \"\\u21A7\" },\n  \"&Downarrow;\": { \"codepoints\": [8659], \"characters\": \"\\u21D3\" },\n  \"&Dscr;\": { \"codepoints\": [119967], \"characters\": \"\\uD835\\uDC9F\" },\n  \"&Dstrok;\": { \"codepoints\": [272], \"characters\": \"\\u0110\" },\n  \"&ENG;\": { \"codepoints\": [330], \"characters\": \"\\u014A\" },\n  \"&ETH\": { \"codepoints\": [208], \"characters\": \"\\u00D0\" },\n  \"&ETH;\": { \"codepoints\": [208], \"characters\": \"\\u00D0\" },\n  \"&Eacute\": { \"codepoints\": [201], \"characters\": \"\\u00C9\" },\n  \"&Eacute;\": { \"codepoints\": [201], \"characters\": \"\\u00C9\" },\n  \"&Ecaron;\": { \"codepoints\": [282], \"characters\": \"\\u011A\" },\n  \"&Ecirc\": { \"codepoints\": [202], \"characters\": \"\\u00CA\" },\n  \"&Ecirc;\": { \"codepoints\": [202], \"characters\": \"\\u00CA\" },\n  \"&Ecy;\": { \"codepoints\": [1069], \"characters\": \"\\u042D\" },\n  \"&Edot;\": { \"codepoints\": [278], \"characters\": \"\\u0116\" },\n  \"&Efr;\": { \"codepoints\": [120072], \"characters\": \"\\uD835\\uDD08\" },\n  \"&Egrave\": { \"codepoints\": [200], \"characters\": \"\\u00C8\" },\n  \"&Egrave;\": { \"codepoints\": [200], \"characters\": \"\\u00C8\" },\n  \"&Element;\": { \"codepoints\": [8712], \"characters\": \"\\u2208\" },\n  \"&Emacr;\": { \"codepoints\": [274], \"characters\": \"\\u0112\" },\n  \"&EmptySmallSquare;\": { \"codepoints\": [9723], \"characters\": \"\\u25FB\" },\n  \"&EmptyVerySmallSquare;\": { \"codepoints\": [9643], \"characters\": \"\\u25AB\" },\n  \"&Eogon;\": { \"codepoints\": [280], \"characters\": \"\\u0118\" },\n  \"&Eopf;\": { \"codepoints\": [120124], \"characters\": \"\\uD835\\uDD3C\" },\n  \"&Epsilon;\": { \"codepoints\": [917], \"characters\": \"\\u0395\" },\n  \"&Equal;\": { \"codepoints\": [10869], \"characters\": \"\\u2A75\" },\n  \"&EqualTilde;\": { \"codepoints\": [8770], \"characters\": \"\\u2242\" },\n  \"&Equilibrium;\": { \"codepoints\": [8652], \"characters\": \"\\u21CC\" },\n  \"&Escr;\": { \"codepoints\": [8496], \"characters\": \"\\u2130\" },\n  \"&Esim;\": { \"codepoints\": [10867], \"characters\": \"\\u2A73\" },\n  \"&Eta;\": { \"codepoints\": [919], \"characters\": \"\\u0397\" },\n  \"&Euml\": { \"codepoints\": [203], \"characters\": \"\\u00CB\" },\n  \"&Euml;\": { \"codepoints\": [203], \"characters\": \"\\u00CB\" },\n  \"&Exists;\": { \"codepoints\": [8707], \"characters\": \"\\u2203\" },\n  \"&ExponentialE;\": { \"codepoints\": [8519], \"characters\": \"\\u2147\" },\n  \"&Fcy;\": { \"codepoints\": [1060], \"characters\": \"\\u0424\" },\n  \"&Ffr;\": { \"codepoints\": [120073], \"characters\": \"\\uD835\\uDD09\" },\n  \"&FilledSmallSquare;\": { \"codepoints\": [9724], \"characters\": \"\\u25FC\" },\n  \"&FilledVerySmallSquare;\": { \"codepoints\": [9642], \"characters\": \"\\u25AA\" },\n  \"&Fopf;\": { \"codepoints\": [120125], \"characters\": \"\\uD835\\uDD3D\" },\n  \"&ForAll;\": { \"codepoints\": [8704], \"characters\": \"\\u2200\" },\n  \"&Fouriertrf;\": { \"codepoints\": [8497], \"characters\": \"\\u2131\" },\n  \"&Fscr;\": { \"codepoints\": [8497], \"characters\": \"\\u2131\" },\n  \"&GJcy;\": { \"codepoints\": [1027], \"characters\": \"\\u0403\" },\n  \"&GT\": { \"codepoints\": [62], \"characters\": \"\\u003E\" },\n  \"&GT;\": { \"codepoints\": [62], \"characters\": \"\\u003E\" },\n  \"&Gamma;\": { \"codepoints\": [915], \"characters\": \"\\u0393\" },\n  \"&Gammad;\": { \"codepoints\": [988], \"characters\": \"\\u03DC\" },\n  \"&Gbreve;\": { \"codepoints\": [286], \"characters\": \"\\u011E\" },\n  \"&Gcedil;\": { \"codepoints\": [290], \"characters\": \"\\u0122\" },\n  \"&Gcirc;\": { \"codepoints\": [284], \"characters\": \"\\u011C\" },\n  \"&Gcy;\": { \"codepoints\": [1043], \"characters\": \"\\u0413\" },\n  \"&Gdot;\": { \"codepoints\": [288], \"characters\": \"\\u0120\" },\n  \"&Gfr;\": { \"codepoints\": [120074], \"characters\": \"\\uD835\\uDD0A\" },\n  \"&Gg;\": { \"codepoints\": [8921], \"characters\": \"\\u22D9\" },\n  \"&Gopf;\": { \"codepoints\": [120126], \"characters\": \"\\uD835\\uDD3E\" },\n  \"&GreaterEqual;\": { \"codepoints\": [8805], \"characters\": \"\\u2265\" },\n  \"&GreaterEqualLess;\": { \"codepoints\": [8923], \"characters\": \"\\u22DB\" },\n  \"&GreaterFullEqual;\": { \"codepoints\": [8807], \"characters\": \"\\u2267\" },\n  \"&GreaterGreater;\": { \"codepoints\": [10914], \"characters\": \"\\u2AA2\" },\n  \"&GreaterLess;\": { \"codepoints\": [8823], \"characters\": \"\\u2277\" },\n  \"&GreaterSlantEqual;\": { \"codepoints\": [10878], \"characters\": \"\\u2A7E\" },\n  \"&GreaterTilde;\": { \"codepoints\": [8819], \"characters\": \"\\u2273\" },\n  \"&Gscr;\": { \"codepoints\": [119970], \"characters\": \"\\uD835\\uDCA2\" },\n  \"&Gt;\": { \"codepoints\": [8811], \"characters\": \"\\u226B\" },\n  \"&HARDcy;\": { \"codepoints\": [1066], \"characters\": \"\\u042A\" },\n  \"&Hacek;\": { \"codepoints\": [711], \"characters\": \"\\u02C7\" },\n  \"&Hat;\": { \"codepoints\": [94], \"characters\": \"\\u005E\" },\n  \"&Hcirc;\": { \"codepoints\": [292], \"characters\": \"\\u0124\" },\n  \"&Hfr;\": { \"codepoints\": [8460], \"characters\": \"\\u210C\" },\n  \"&HilbertSpace;\": { \"codepoints\": [8459], \"characters\": \"\\u210B\" },\n  \"&Hopf;\": { \"codepoints\": [8461], \"characters\": \"\\u210D\" },\n  \"&HorizontalLine;\": { \"codepoints\": [9472], \"characters\": \"\\u2500\" },\n  \"&Hscr;\": { \"codepoints\": [8459], \"characters\": \"\\u210B\" },\n  \"&Hstrok;\": { \"codepoints\": [294], \"characters\": \"\\u0126\" },\n  \"&HumpDownHump;\": { \"codepoints\": [8782], \"characters\": \"\\u224E\" },\n  \"&HumpEqual;\": { \"codepoints\": [8783], \"characters\": \"\\u224F\" },\n  \"&IEcy;\": { \"codepoints\": [1045], \"characters\": \"\\u0415\" },\n  \"&IJlig;\": { \"codepoints\": [306], \"characters\": \"\\u0132\" },\n  \"&IOcy;\": { \"codepoints\": [1025], \"characters\": \"\\u0401\" },\n  \"&Iacute\": { \"codepoints\": [205], \"characters\": \"\\u00CD\" },\n  \"&Iacute;\": { \"codepoints\": [205], \"characters\": \"\\u00CD\" },\n  \"&Icirc\": { \"codepoints\": [206], \"characters\": \"\\u00CE\" },\n  \"&Icirc;\": { \"codepoints\": [206], \"characters\": \"\\u00CE\" },\n  \"&Icy;\": { \"codepoints\": [1048], \"characters\": \"\\u0418\" },\n  \"&Idot;\": { \"codepoints\": [304], \"characters\": \"\\u0130\" },\n  \"&Ifr;\": { \"codepoints\": [8465], \"characters\": \"\\u2111\" },\n  \"&Igrave\": { \"codepoints\": [204], \"characters\": \"\\u00CC\" },\n  \"&Igrave;\": { \"codepoints\": [204], \"characters\": \"\\u00CC\" },\n  \"&Im;\": { \"codepoints\": [8465], \"characters\": \"\\u2111\" },\n  \"&Imacr;\": { \"codepoints\": [298], \"characters\": \"\\u012A\" },\n  \"&ImaginaryI;\": { \"codepoints\": [8520], \"characters\": \"\\u2148\" },\n  \"&Implies;\": { \"codepoints\": [8658], \"characters\": \"\\u21D2\" },\n  \"&Int;\": { \"codepoints\": [8748], \"characters\": \"\\u222C\" },\n  \"&Integral;\": { \"codepoints\": [8747], \"characters\": \"\\u222B\" },\n  \"&Intersection;\": { \"codepoints\": [8898], \"characters\": \"\\u22C2\" },\n  \"&InvisibleComma;\": { \"codepoints\": [8291], \"characters\": \"\\u2063\" },\n  \"&InvisibleTimes;\": { \"codepoints\": [8290], \"characters\": \"\\u2062\" },\n  \"&Iogon;\": { \"codepoints\": [302], \"characters\": \"\\u012E\" },\n  \"&Iopf;\": { \"codepoints\": [120128], \"characters\": \"\\uD835\\uDD40\" },\n  \"&Iota;\": { \"codepoints\": [921], \"characters\": \"\\u0399\" },\n  \"&Iscr;\": { \"codepoints\": [8464], \"characters\": \"\\u2110\" },\n  \"&Itilde;\": { \"codepoints\": [296], \"characters\": \"\\u0128\" },\n  \"&Iukcy;\": { \"codepoints\": [1030], \"characters\": \"\\u0406\" },\n  \"&Iuml\": { \"codepoints\": [207], \"characters\": \"\\u00CF\" },\n  \"&Iuml;\": { \"codepoints\": [207], \"characters\": \"\\u00CF\" },\n  \"&Jcirc;\": { \"codepoints\": [308], \"characters\": \"\\u0134\" },\n  \"&Jcy;\": { \"codepoints\": [1049], \"characters\": \"\\u0419\" },\n  \"&Jfr;\": { \"codepoints\": [120077], \"characters\": \"\\uD835\\uDD0D\" },\n  \"&Jopf;\": { \"codepoints\": [120129], \"characters\": \"\\uD835\\uDD41\" },\n  \"&Jscr;\": { \"codepoints\": [119973], \"characters\": \"\\uD835\\uDCA5\" },\n  \"&Jsercy;\": { \"codepoints\": [1032], \"characters\": \"\\u0408\" },\n  \"&Jukcy;\": { \"codepoints\": [1028], \"characters\": \"\\u0404\" },\n  \"&KHcy;\": { \"codepoints\": [1061], \"characters\": \"\\u0425\" },\n  \"&KJcy;\": { \"codepoints\": [1036], \"characters\": \"\\u040C\" },\n  \"&Kappa;\": { \"codepoints\": [922], \"characters\": \"\\u039A\" },\n  \"&Kcedil;\": { \"codepoints\": [310], \"characters\": \"\\u0136\" },\n  \"&Kcy;\": { \"codepoints\": [1050], \"characters\": \"\\u041A\" },\n  \"&Kfr;\": { \"codepoints\": [120078], \"characters\": \"\\uD835\\uDD0E\" },\n  \"&Kopf;\": { \"codepoints\": [120130], \"characters\": \"\\uD835\\uDD42\" },\n  \"&Kscr;\": { \"codepoints\": [119974], \"characters\": \"\\uD835\\uDCA6\" },\n  \"&LJcy;\": { \"codepoints\": [1033], \"characters\": \"\\u0409\" },\n  \"&LT\": { \"codepoints\": [60], \"characters\": \"\\u003C\" },\n  \"&LT;\": { \"codepoints\": [60], \"characters\": \"\\u003C\" },\n  \"&Lacute;\": { \"codepoints\": [313], \"characters\": \"\\u0139\" },\n  \"&Lambda;\": { \"codepoints\": [923], \"characters\": \"\\u039B\" },\n  \"&Lang;\": { \"codepoints\": [10218], \"characters\": \"\\u27EA\" },\n  \"&Laplacetrf;\": { \"codepoints\": [8466], \"characters\": \"\\u2112\" },\n  \"&Larr;\": { \"codepoints\": [8606], \"characters\": \"\\u219E\" },\n  \"&Lcaron;\": { \"codepoints\": [317], \"characters\": \"\\u013D\" },\n  \"&Lcedil;\": { \"codepoints\": [315], \"characters\": \"\\u013B\" },\n  \"&Lcy;\": { \"codepoints\": [1051], \"characters\": \"\\u041B\" },\n  \"&LeftAngleBracket;\": { \"codepoints\": [10216], \"characters\": \"\\u27E8\" },\n  \"&LeftArrow;\": { \"codepoints\": [8592], \"characters\": \"\\u2190\" },\n  \"&LeftArrowBar;\": { \"codepoints\": [8676], \"characters\": \"\\u21E4\" },\n  \"&LeftArrowRightArrow;\": { \"codepoints\": [8646], \"characters\": \"\\u21C6\" },\n  \"&LeftCeiling;\": { \"codepoints\": [8968], \"characters\": \"\\u2308\" },\n  \"&LeftDoubleBracket;\": { \"codepoints\": [10214], \"characters\": \"\\u27E6\" },\n  \"&LeftDownTeeVector;\": { \"codepoints\": [10593], \"characters\": \"\\u2961\" },\n  \"&LeftDownVector;\": { \"codepoints\": [8643], \"characters\": \"\\u21C3\" },\n  \"&LeftDownVectorBar;\": { \"codepoints\": [10585], \"characters\": \"\\u2959\" },\n  \"&LeftFloor;\": { \"codepoints\": [8970], \"characters\": \"\\u230A\" },\n  \"&LeftRightArrow;\": { \"codepoints\": [8596], \"characters\": \"\\u2194\" },\n  \"&LeftRightVector;\": { \"codepoints\": [10574], \"characters\": \"\\u294E\" },\n  \"&LeftTee;\": { \"codepoints\": [8867], \"characters\": \"\\u22A3\" },\n  \"&LeftTeeArrow;\": { \"codepoints\": [8612], \"characters\": \"\\u21A4\" },\n  \"&LeftTeeVector;\": { \"codepoints\": [10586], \"characters\": \"\\u295A\" },\n  \"&LeftTriangle;\": { \"codepoints\": [8882], \"characters\": \"\\u22B2\" },\n  \"&LeftTriangleBar;\": { \"codepoints\": [10703], \"characters\": \"\\u29CF\" },\n  \"&LeftTriangleEqual;\": { \"codepoints\": [8884], \"characters\": \"\\u22B4\" },\n  \"&LeftUpDownVector;\": { \"codepoints\": [10577], \"characters\": \"\\u2951\" },\n  \"&LeftUpTeeVector;\": { \"codepoints\": [10592], \"characters\": \"\\u2960\" },\n  \"&LeftUpVector;\": { \"codepoints\": [8639], \"characters\": \"\\u21BF\" },\n  \"&LeftUpVectorBar;\": { \"codepoints\": [10584], \"characters\": \"\\u2958\" },\n  \"&LeftVector;\": { \"codepoints\": [8636], \"characters\": \"\\u21BC\" },\n  \"&LeftVectorBar;\": { \"codepoints\": [10578], \"characters\": \"\\u2952\" },\n  \"&Leftarrow;\": { \"codepoints\": [8656], \"characters\": \"\\u21D0\" },\n  \"&Leftrightarrow;\": { \"codepoints\": [8660], \"characters\": \"\\u21D4\" },\n  \"&LessEqualGreater;\": { \"codepoints\": [8922], \"characters\": \"\\u22DA\" },\n  \"&LessFullEqual;\": { \"codepoints\": [8806], \"characters\": \"\\u2266\" },\n  \"&LessGreater;\": { \"codepoints\": [8822], \"characters\": \"\\u2276\" },\n  \"&LessLess;\": { \"codepoints\": [10913], \"characters\": \"\\u2AA1\" },\n  \"&LessSlantEqual;\": { \"codepoints\": [10877], \"characters\": \"\\u2A7D\" },\n  \"&LessTilde;\": { \"codepoints\": [8818], \"characters\": \"\\u2272\" },\n  \"&Lfr;\": { \"codepoints\": [120079], \"characters\": \"\\uD835\\uDD0F\" },\n  \"&Ll;\": { \"codepoints\": [8920], \"characters\": \"\\u22D8\" },\n  \"&Lleftarrow;\": { \"codepoints\": [8666], \"characters\": \"\\u21DA\" },\n  \"&Lmidot;\": { \"codepoints\": [319], \"characters\": \"\\u013F\" },\n  \"&LongLeftArrow;\": { \"codepoints\": [10229], \"characters\": \"\\u27F5\" },\n  \"&LongLeftRightArrow;\": { \"codepoints\": [10231], \"characters\": \"\\u27F7\" },\n  \"&LongRightArrow;\": { \"codepoints\": [10230], \"characters\": \"\\u27F6\" },\n  \"&Longleftarrow;\": { \"codepoints\": [10232], \"characters\": \"\\u27F8\" },\n  \"&Longleftrightarrow;\": { \"codepoints\": [10234], \"characters\": \"\\u27FA\" },\n  \"&Longrightarrow;\": { \"codepoints\": [10233], \"characters\": \"\\u27F9\" },\n  \"&Lopf;\": { \"codepoints\": [120131], \"characters\": \"\\uD835\\uDD43\" },\n  \"&LowerLeftArrow;\": { \"codepoints\": [8601], \"characters\": \"\\u2199\" },\n  \"&LowerRightArrow;\": { \"codepoints\": [8600], \"characters\": \"\\u2198\" },\n  \"&Lscr;\": { \"codepoints\": [8466], \"characters\": \"\\u2112\" },\n  \"&Lsh;\": { \"codepoints\": [8624], \"characters\": \"\\u21B0\" },\n  \"&Lstrok;\": { \"codepoints\": [321], \"characters\": \"\\u0141\" },\n  \"&Lt;\": { \"codepoints\": [8810], \"characters\": \"\\u226A\" },\n  \"&Map;\": { \"codepoints\": [10501], \"characters\": \"\\u2905\" },\n  \"&Mcy;\": { \"codepoints\": [1052], \"characters\": \"\\u041C\" },\n  \"&MediumSpace;\": { \"codepoints\": [8287], \"characters\": \"\\u205F\" },\n  \"&Mellintrf;\": { \"codepoints\": [8499], \"characters\": \"\\u2133\" },\n  \"&Mfr;\": { \"codepoints\": [120080], \"characters\": \"\\uD835\\uDD10\" },\n  \"&MinusPlus;\": { \"codepoints\": [8723], \"characters\": \"\\u2213\" },\n  \"&Mopf;\": { \"codepoints\": [120132], \"characters\": \"\\uD835\\uDD44\" },\n  \"&Mscr;\": { \"codepoints\": [8499], \"characters\": \"\\u2133\" },\n  \"&Mu;\": { \"codepoints\": [924], \"characters\": \"\\u039C\" },\n  \"&NJcy;\": { \"codepoints\": [1034], \"characters\": \"\\u040A\" },\n  \"&Nacute;\": { \"codepoints\": [323], \"characters\": \"\\u0143\" },\n  \"&Ncaron;\": { \"codepoints\": [327], \"characters\": \"\\u0147\" },\n  \"&Ncedil;\": { \"codepoints\": [325], \"characters\": \"\\u0145\" },\n  \"&Ncy;\": { \"codepoints\": [1053], \"characters\": \"\\u041D\" },\n  \"&NegativeMediumSpace;\": { \"codepoints\": [8203], \"characters\": \"\\u200B\" },\n  \"&NegativeThickSpace;\": { \"codepoints\": [8203], \"characters\": \"\\u200B\" },\n  \"&NegativeThinSpace;\": { \"codepoints\": [8203], \"characters\": \"\\u200B\" },\n  \"&NegativeVeryThinSpace;\": { \"codepoints\": [8203], \"characters\": \"\\u200B\" },\n  \"&NestedGreaterGreater;\": { \"codepoints\": [8811], \"characters\": \"\\u226B\" },\n  \"&NestedLessLess;\": { \"codepoints\": [8810], \"characters\": \"\\u226A\" },\n  \"&NewLine;\": { \"codepoints\": [10], \"characters\": \"\\u000A\" },\n  \"&Nfr;\": { \"codepoints\": [120081], \"characters\": \"\\uD835\\uDD11\" },\n  \"&NoBreak;\": { \"codepoints\": [8288], \"characters\": \"\\u2060\" },\n  \"&NonBreakingSpace;\": { \"codepoints\": [160], \"characters\": \"\\u00A0\" },\n  \"&Nopf;\": { \"codepoints\": [8469], \"characters\": \"\\u2115\" },\n  \"&Not;\": { \"codepoints\": [10988], \"characters\": \"\\u2AEC\" },\n  \"&NotCongruent;\": { \"codepoints\": [8802], \"characters\": \"\\u2262\" },\n  \"&NotCupCap;\": { \"codepoints\": [8813], \"characters\": \"\\u226D\" },\n  \"&NotDoubleVerticalBar;\": { \"codepoints\": [8742], \"characters\": \"\\u2226\" },\n  \"&NotElement;\": { \"codepoints\": [8713], \"characters\": \"\\u2209\" },\n  \"&NotEqual;\": { \"codepoints\": [8800], \"characters\": \"\\u2260\" },\n  \"&NotEqualTilde;\": {\n    \"codepoints\": [8770, 824],\n    \"characters\": \"\\u2242\\u0338\"\n  },\n  \"&NotExists;\": { \"codepoints\": [8708], \"characters\": \"\\u2204\" },\n  \"&NotGreater;\": { \"codepoints\": [8815], \"characters\": \"\\u226F\" },\n  \"&NotGreaterEqual;\": { \"codepoints\": [8817], \"characters\": \"\\u2271\" },\n  \"&NotGreaterFullEqual;\": {\n    \"codepoints\": [8807, 824],\n    \"characters\": \"\\u2267\\u0338\"\n  },\n  \"&NotGreaterGreater;\": {\n    \"codepoints\": [8811, 824],\n    \"characters\": \"\\u226B\\u0338\"\n  },\n  \"&NotGreaterLess;\": { \"codepoints\": [8825], \"characters\": \"\\u2279\" },\n  \"&NotGreaterSlantEqual;\": {\n    \"codepoints\": [10878, 824],\n    \"characters\": \"\\u2A7E\\u0338\"\n  },\n  \"&NotGreaterTilde;\": { \"codepoints\": [8821], \"characters\": \"\\u2275\" },\n  \"&NotHumpDownHump;\": {\n    \"codepoints\": [8782, 824],\n    \"characters\": \"\\u224E\\u0338\"\n  },\n  \"&NotHumpEqual;\": { \"codepoints\": [8783, 824], \"characters\": \"\\u224F\\u0338\" },\n  \"&NotLeftTriangle;\": { \"codepoints\": [8938], \"characters\": \"\\u22EA\" },\n  \"&NotLeftTriangleBar;\": {\n    \"codepoints\": [10703, 824],\n    \"characters\": \"\\u29CF\\u0338\"\n  },\n  \"&NotLeftTriangleEqual;\": { \"codepoints\": [8940], \"characters\": \"\\u22EC\" },\n  \"&NotLess;\": { \"codepoints\": [8814], \"characters\": \"\\u226E\" },\n  \"&NotLessEqual;\": { \"codepoints\": [8816], \"characters\": \"\\u2270\" },\n  \"&NotLessGreater;\": { \"codepoints\": [8824], \"characters\": \"\\u2278\" },\n  \"&NotLessLess;\": { \"codepoints\": [8810, 824], \"characters\": \"\\u226A\\u0338\" },\n  \"&NotLessSlantEqual;\": {\n    \"codepoints\": [10877, 824],\n    \"characters\": \"\\u2A7D\\u0338\"\n  },\n  \"&NotLessTilde;\": { \"codepoints\": [8820], \"characters\": \"\\u2274\" },\n  \"&NotNestedGreaterGreater;\": {\n    \"codepoints\": [10914, 824],\n    \"characters\": \"\\u2AA2\\u0338\"\n  },\n  \"&NotNestedLessLess;\": {\n    \"codepoints\": [10913, 824],\n    \"characters\": \"\\u2AA1\\u0338\"\n  },\n  \"&NotPrecedes;\": { \"codepoints\": [8832], \"characters\": \"\\u2280\" },\n  \"&NotPrecedesEqual;\": {\n    \"codepoints\": [10927, 824],\n    \"characters\": \"\\u2AAF\\u0338\"\n  },\n  \"&NotPrecedesSlantEqual;\": { \"codepoints\": [8928], \"characters\": \"\\u22E0\" },\n  \"&NotReverseElement;\": { \"codepoints\": [8716], \"characters\": \"\\u220C\" },\n  \"&NotRightTriangle;\": { \"codepoints\": [8939], \"characters\": \"\\u22EB\" },\n  \"&NotRightTriangleBar;\": {\n    \"codepoints\": [10704, 824],\n    \"characters\": \"\\u29D0\\u0338\"\n  },\n  \"&NotRightTriangleEqual;\": { \"codepoints\": [8941], \"characters\": \"\\u22ED\" },\n  \"&NotSquareSubset;\": {\n    \"codepoints\": [8847, 824],\n    \"characters\": \"\\u228F\\u0338\"\n  },\n  \"&NotSquareSubsetEqual;\": { \"codepoints\": [8930], \"characters\": \"\\u22E2\" },\n  \"&NotSquareSuperset;\": {\n    \"codepoints\": [8848, 824],\n    \"characters\": \"\\u2290\\u0338\"\n  },\n  \"&NotSquareSupersetEqual;\": { \"codepoints\": [8931], \"characters\": \"\\u22E3\" },\n  \"&NotSubset;\": { \"codepoints\": [8834, 8402], \"characters\": \"\\u2282\\u20D2\" },\n  \"&NotSubsetEqual;\": { \"codepoints\": [8840], \"characters\": \"\\u2288\" },\n  \"&NotSucceeds;\": { \"codepoints\": [8833], \"characters\": \"\\u2281\" },\n  \"&NotSucceedsEqual;\": {\n    \"codepoints\": [10928, 824],\n    \"characters\": \"\\u2AB0\\u0338\"\n  },\n  \"&NotSucceedsSlantEqual;\": { \"codepoints\": [8929], \"characters\": \"\\u22E1\" },\n  \"&NotSucceedsTilde;\": {\n    \"codepoints\": [8831, 824],\n    \"characters\": \"\\u227F\\u0338\"\n  },\n  \"&NotSuperset;\": { \"codepoints\": [8835, 8402], \"characters\": \"\\u2283\\u20D2\" },\n  \"&NotSupersetEqual;\": { \"codepoints\": [8841], \"characters\": \"\\u2289\" },\n  \"&NotTilde;\": { \"codepoints\": [8769], \"characters\": \"\\u2241\" },\n  \"&NotTildeEqual;\": { \"codepoints\": [8772], \"characters\": \"\\u2244\" },\n  \"&NotTildeFullEqual;\": { \"codepoints\": [8775], \"characters\": \"\\u2247\" },\n  \"&NotTildeTilde;\": { \"codepoints\": [8777], \"characters\": \"\\u2249\" },\n  \"&NotVerticalBar;\": { \"codepoints\": [8740], \"characters\": \"\\u2224\" },\n  \"&Nscr;\": { \"codepoints\": [119977], \"characters\": \"\\uD835\\uDCA9\" },\n  \"&Ntilde\": { \"codepoints\": [209], \"characters\": \"\\u00D1\" },\n  \"&Ntilde;\": { \"codepoints\": [209], \"characters\": \"\\u00D1\" },\n  \"&Nu;\": { \"codepoints\": [925], \"characters\": \"\\u039D\" },\n  \"&OElig;\": { \"codepoints\": [338], \"characters\": \"\\u0152\" },\n  \"&Oacute\": { \"codepoints\": [211], \"characters\": \"\\u00D3\" },\n  \"&Oacute;\": { \"codepoints\": [211], \"characters\": \"\\u00D3\" },\n  \"&Ocirc\": { \"codepoints\": [212], \"characters\": \"\\u00D4\" },\n  \"&Ocirc;\": { \"codepoints\": [212], \"characters\": \"\\u00D4\" },\n  \"&Ocy;\": { \"codepoints\": [1054], \"characters\": \"\\u041E\" },\n  \"&Odblac;\": { \"codepoints\": [336], \"characters\": \"\\u0150\" },\n  \"&Ofr;\": { \"codepoints\": [120082], \"characters\": \"\\uD835\\uDD12\" },\n  \"&Ograve\": { \"codepoints\": [210], \"characters\": \"\\u00D2\" },\n  \"&Ograve;\": { \"codepoints\": [210], \"characters\": \"\\u00D2\" },\n  \"&Omacr;\": { \"codepoints\": [332], \"characters\": \"\\u014C\" },\n  \"&Omega;\": { \"codepoints\": [937], \"characters\": \"\\u03A9\" },\n  \"&Omicron;\": { \"codepoints\": [927], \"characters\": \"\\u039F\" },\n  \"&Oopf;\": { \"codepoints\": [120134], \"characters\": \"\\uD835\\uDD46\" },\n  \"&OpenCurlyDoubleQuote;\": { \"codepoints\": [8220], \"characters\": \"\\u201C\" },\n  \"&OpenCurlyQuote;\": { \"codepoints\": [8216], \"characters\": \"\\u2018\" },\n  \"&Or;\": { \"codepoints\": [10836], \"characters\": \"\\u2A54\" },\n  \"&Oscr;\": { \"codepoints\": [119978], \"characters\": \"\\uD835\\uDCAA\" },\n  \"&Oslash\": { \"codepoints\": [216], \"characters\": \"\\u00D8\" },\n  \"&Oslash;\": { \"codepoints\": [216], \"characters\": \"\\u00D8\" },\n  \"&Otilde\": { \"codepoints\": [213], \"characters\": \"\\u00D5\" },\n  \"&Otilde;\": { \"codepoints\": [213], \"characters\": \"\\u00D5\" },\n  \"&Otimes;\": { \"codepoints\": [10807], \"characters\": \"\\u2A37\" },\n  \"&Ouml\": { \"codepoints\": [214], \"characters\": \"\\u00D6\" },\n  \"&Ouml;\": { \"codepoints\": [214], \"characters\": \"\\u00D6\" },\n  \"&OverBar;\": { \"codepoints\": [8254], \"characters\": \"\\u203E\" },\n  \"&OverBrace;\": { \"codepoints\": [9182], \"characters\": \"\\u23DE\" },\n  \"&OverBracket;\": { \"codepoints\": [9140], \"characters\": \"\\u23B4\" },\n  \"&OverParenthesis;\": { \"codepoints\": [9180], \"characters\": \"\\u23DC\" },\n  \"&PartialD;\": { \"codepoints\": [8706], \"characters\": \"\\u2202\" },\n  \"&Pcy;\": { \"codepoints\": [1055], \"characters\": \"\\u041F\" },\n  \"&Pfr;\": { \"codepoints\": [120083], \"characters\": \"\\uD835\\uDD13\" },\n  \"&Phi;\": { \"codepoints\": [934], \"characters\": \"\\u03A6\" },\n  \"&Pi;\": { \"codepoints\": [928], \"characters\": \"\\u03A0\" },\n  \"&PlusMinus;\": { \"codepoints\": [177], \"characters\": \"\\u00B1\" },\n  \"&Poincareplane;\": { \"codepoints\": [8460], \"characters\": \"\\u210C\" },\n  \"&Popf;\": { \"codepoints\": [8473], \"characters\": \"\\u2119\" },\n  \"&Pr;\": { \"codepoints\": [10939], \"characters\": \"\\u2ABB\" },\n  \"&Precedes;\": { \"codepoints\": [8826], \"characters\": \"\\u227A\" },\n  \"&PrecedesEqual;\": { \"codepoints\": [10927], \"characters\": \"\\u2AAF\" },\n  \"&PrecedesSlantEqual;\": { \"codepoints\": [8828], \"characters\": \"\\u227C\" },\n  \"&PrecedesTilde;\": { \"codepoints\": [8830], \"characters\": \"\\u227E\" },\n  \"&Prime;\": { \"codepoints\": [8243], \"characters\": \"\\u2033\" },\n  \"&Product;\": { \"codepoints\": [8719], \"characters\": \"\\u220F\" },\n  \"&Proportion;\": { \"codepoints\": [8759], \"characters\": \"\\u2237\" },\n  \"&Proportional;\": { \"codepoints\": [8733], \"characters\": \"\\u221D\" },\n  \"&Pscr;\": { \"codepoints\": [119979], \"characters\": \"\\uD835\\uDCAB\" },\n  \"&Psi;\": { \"codepoints\": [936], \"characters\": \"\\u03A8\" },\n  \"&QUOT\": { \"codepoints\": [34], \"characters\": \"\\u0022\" },\n  \"&QUOT;\": { \"codepoints\": [34], \"characters\": \"\\u0022\" },\n  \"&Qfr;\": { \"codepoints\": [120084], \"characters\": \"\\uD835\\uDD14\" },\n  \"&Qopf;\": { \"codepoints\": [8474], \"characters\": \"\\u211A\" },\n  \"&Qscr;\": { \"codepoints\": [119980], \"characters\": \"\\uD835\\uDCAC\" },\n  \"&RBarr;\": { \"codepoints\": [10512], \"characters\": \"\\u2910\" },\n  \"&REG\": { \"codepoints\": [174], \"characters\": \"\\u00AE\" },\n  \"&REG;\": { \"codepoints\": [174], \"characters\": \"\\u00AE\" },\n  \"&Racute;\": { \"codepoints\": [340], \"characters\": \"\\u0154\" },\n  \"&Rang;\": { \"codepoints\": [10219], \"characters\": \"\\u27EB\" },\n  \"&Rarr;\": { \"codepoints\": [8608], \"characters\": \"\\u21A0\" },\n  \"&Rarrtl;\": { \"codepoints\": [10518], \"characters\": \"\\u2916\" },\n  \"&Rcaron;\": { \"codepoints\": [344], \"characters\": \"\\u0158\" },\n  \"&Rcedil;\": { \"codepoints\": [342], \"characters\": \"\\u0156\" },\n  \"&Rcy;\": { \"codepoints\": [1056], \"characters\": \"\\u0420\" },\n  \"&Re;\": { \"codepoints\": [8476], \"characters\": \"\\u211C\" },\n  \"&ReverseElement;\": { \"codepoints\": [8715], \"characters\": \"\\u220B\" },\n  \"&ReverseEquilibrium;\": { \"codepoints\": [8651], \"characters\": \"\\u21CB\" },\n  \"&ReverseUpEquilibrium;\": { \"codepoints\": [10607], \"characters\": \"\\u296F\" },\n  \"&Rfr;\": { \"codepoints\": [8476], \"characters\": \"\\u211C\" },\n  \"&Rho;\": { \"codepoints\": [929], \"characters\": \"\\u03A1\" },\n  \"&RightAngleBracket;\": { \"codepoints\": [10217], \"characters\": \"\\u27E9\" },\n  \"&RightArrow;\": { \"codepoints\": [8594], \"characters\": \"\\u2192\" },\n  \"&RightArrowBar;\": { \"codepoints\": [8677], \"characters\": \"\\u21E5\" },\n  \"&RightArrowLeftArrow;\": { \"codepoints\": [8644], \"characters\": \"\\u21C4\" },\n  \"&RightCeiling;\": { \"codepoints\": [8969], \"characters\": \"\\u2309\" },\n  \"&RightDoubleBracket;\": { \"codepoints\": [10215], \"characters\": \"\\u27E7\" },\n  \"&RightDownTeeVector;\": { \"codepoints\": [10589], \"characters\": \"\\u295D\" },\n  \"&RightDownVector;\": { \"codepoints\": [8642], \"characters\": \"\\u21C2\" },\n  \"&RightDownVectorBar;\": { \"codepoints\": [10581], \"characters\": \"\\u2955\" },\n  \"&RightFloor;\": { \"codepoints\": [8971], \"characters\": \"\\u230B\" },\n  \"&RightTee;\": { \"codepoints\": [8866], \"characters\": \"\\u22A2\" },\n  \"&RightTeeArrow;\": { \"codepoints\": [8614], \"characters\": \"\\u21A6\" },\n  \"&RightTeeVector;\": { \"codepoints\": [10587], \"characters\": \"\\u295B\" },\n  \"&RightTriangle;\": { \"codepoints\": [8883], \"characters\": \"\\u22B3\" },\n  \"&RightTriangleBar;\": { \"codepoints\": [10704], \"characters\": \"\\u29D0\" },\n  \"&RightTriangleEqual;\": { \"codepoints\": [8885], \"characters\": \"\\u22B5\" },\n  \"&RightUpDownVector;\": { \"codepoints\": [10575], \"characters\": \"\\u294F\" },\n  \"&RightUpTeeVector;\": { \"codepoints\": [10588], \"characters\": \"\\u295C\" },\n  \"&RightUpVector;\": { \"codepoints\": [8638], \"characters\": \"\\u21BE\" },\n  \"&RightUpVectorBar;\": { \"codepoints\": [10580], \"characters\": \"\\u2954\" },\n  \"&RightVector;\": { \"codepoints\": [8640], \"characters\": \"\\u21C0\" },\n  \"&RightVectorBar;\": { \"codepoints\": [10579], \"characters\": \"\\u2953\" },\n  \"&Rightarrow;\": { \"codepoints\": [8658], \"characters\": \"\\u21D2\" },\n  \"&Ropf;\": { \"codepoints\": [8477], \"characters\": \"\\u211D\" },\n  \"&RoundImplies;\": { \"codepoints\": [10608], \"characters\": \"\\u2970\" },\n  \"&Rrightarrow;\": { \"codepoints\": [8667], \"characters\": \"\\u21DB\" },\n  \"&Rscr;\": { \"codepoints\": [8475], \"characters\": \"\\u211B\" },\n  \"&Rsh;\": { \"codepoints\": [8625], \"characters\": \"\\u21B1\" },\n  \"&RuleDelayed;\": { \"codepoints\": [10740], \"characters\": \"\\u29F4\" },\n  \"&SHCHcy;\": { \"codepoints\": [1065], \"characters\": \"\\u0429\" },\n  \"&SHcy;\": { \"codepoints\": [1064], \"characters\": \"\\u0428\" },\n  \"&SOFTcy;\": { \"codepoints\": [1068], \"characters\": \"\\u042C\" },\n  \"&Sacute;\": { \"codepoints\": [346], \"characters\": \"\\u015A\" },\n  \"&Sc;\": { \"codepoints\": [10940], \"characters\": \"\\u2ABC\" },\n  \"&Scaron;\": { \"codepoints\": [352], \"characters\": \"\\u0160\" },\n  \"&Scedil;\": { \"codepoints\": [350], \"characters\": \"\\u015E\" },\n  \"&Scirc;\": { \"codepoints\": [348], \"characters\": \"\\u015C\" },\n  \"&Scy;\": { \"codepoints\": [1057], \"characters\": \"\\u0421\" },\n  \"&Sfr;\": { \"codepoints\": [120086], \"characters\": \"\\uD835\\uDD16\" },\n  \"&ShortDownArrow;\": { \"codepoints\": [8595], \"characters\": \"\\u2193\" },\n  \"&ShortLeftArrow;\": { \"codepoints\": [8592], \"characters\": \"\\u2190\" },\n  \"&ShortRightArrow;\": { \"codepoints\": [8594], \"characters\": \"\\u2192\" },\n  \"&ShortUpArrow;\": { \"codepoints\": [8593], \"characters\": \"\\u2191\" },\n  \"&Sigma;\": { \"codepoints\": [931], \"characters\": \"\\u03A3\" },\n  \"&SmallCircle;\": { \"codepoints\": [8728], \"characters\": \"\\u2218\" },\n  \"&Sopf;\": { \"codepoints\": [120138], \"characters\": \"\\uD835\\uDD4A\" },\n  \"&Sqrt;\": { \"codepoints\": [8730], \"characters\": \"\\u221A\" },\n  \"&Square;\": { \"codepoints\": [9633], \"characters\": \"\\u25A1\" },\n  \"&SquareIntersection;\": { \"codepoints\": [8851], \"characters\": \"\\u2293\" },\n  \"&SquareSubset;\": { \"codepoints\": [8847], \"characters\": \"\\u228F\" },\n  \"&SquareSubsetEqual;\": { \"codepoints\": [8849], \"characters\": \"\\u2291\" },\n  \"&SquareSuperset;\": { \"codepoints\": [8848], \"characters\": \"\\u2290\" },\n  \"&SquareSupersetEqual;\": { \"codepoints\": [8850], \"characters\": \"\\u2292\" },\n  \"&SquareUnion;\": { \"codepoints\": [8852], \"characters\": \"\\u2294\" },\n  \"&Sscr;\": { \"codepoints\": [119982], \"characters\": \"\\uD835\\uDCAE\" },\n  \"&Star;\": { \"codepoints\": [8902], \"characters\": \"\\u22C6\" },\n  \"&Sub;\": { \"codepoints\": [8912], \"characters\": \"\\u22D0\" },\n  \"&Subset;\": { \"codepoints\": [8912], \"characters\": \"\\u22D0\" },\n  \"&SubsetEqual;\": { \"codepoints\": [8838], \"characters\": \"\\u2286\" },\n  \"&Succeeds;\": { \"codepoints\": [8827], \"characters\": \"\\u227B\" },\n  \"&SucceedsEqual;\": { \"codepoints\": [10928], \"characters\": \"\\u2AB0\" },\n  \"&SucceedsSlantEqual;\": { \"codepoints\": [8829], \"characters\": \"\\u227D\" },\n  \"&SucceedsTilde;\": { \"codepoints\": [8831], \"characters\": \"\\u227F\" },\n  \"&SuchThat;\": { \"codepoints\": [8715], \"characters\": \"\\u220B\" },\n  \"&Sum;\": { \"codepoints\": [8721], \"characters\": \"\\u2211\" },\n  \"&Sup;\": { \"codepoints\": [8913], \"characters\": \"\\u22D1\" },\n  \"&Superset;\": { \"codepoints\": [8835], \"characters\": \"\\u2283\" },\n  \"&SupersetEqual;\": { \"codepoints\": [8839], \"characters\": \"\\u2287\" },\n  \"&Supset;\": { \"codepoints\": [8913], \"characters\": \"\\u22D1\" },\n  \"&THORN\": { \"codepoints\": [222], \"characters\": \"\\u00DE\" },\n  \"&THORN;\": { \"codepoints\": [222], \"characters\": \"\\u00DE\" },\n  \"&TRADE;\": { \"codepoints\": [8482], \"characters\": \"\\u2122\" },\n  \"&TSHcy;\": { \"codepoints\": [1035], \"characters\": \"\\u040B\" },\n  \"&TScy;\": { \"codepoints\": [1062], \"characters\": \"\\u0426\" },\n  \"&Tab;\": { \"codepoints\": [9], \"characters\": \"\\u0009\" },\n  \"&Tau;\": { \"codepoints\": [932], \"characters\": \"\\u03A4\" },\n  \"&Tcaron;\": { \"codepoints\": [356], \"characters\": \"\\u0164\" },\n  \"&Tcedil;\": { \"codepoints\": [354], \"characters\": \"\\u0162\" },\n  \"&Tcy;\": { \"codepoints\": [1058], \"characters\": \"\\u0422\" },\n  \"&Tfr;\": { \"codepoints\": [120087], \"characters\": \"\\uD835\\uDD17\" },\n  \"&Therefore;\": { \"codepoints\": [8756], \"characters\": \"\\u2234\" },\n  \"&Theta;\": { \"codepoints\": [920], \"characters\": \"\\u0398\" },\n  \"&ThickSpace;\": { \"codepoints\": [8287, 8202], \"characters\": \"\\u205F\\u200A\" },\n  \"&ThinSpace;\": { \"codepoints\": [8201], \"characters\": \"\\u2009\" },\n  \"&Tilde;\": { \"codepoints\": [8764], \"characters\": \"\\u223C\" },\n  \"&TildeEqual;\": { \"codepoints\": [8771], \"characters\": \"\\u2243\" },\n  \"&TildeFullEqual;\": { \"codepoints\": [8773], \"characters\": \"\\u2245\" },\n  \"&TildeTilde;\": { \"codepoints\": [8776], \"characters\": \"\\u2248\" },\n  \"&Topf;\": { \"codepoints\": [120139], \"characters\": \"\\uD835\\uDD4B\" },\n  \"&TripleDot;\": { \"codepoints\": [8411], \"characters\": \"\\u20DB\" },\n  \"&Tscr;\": { \"codepoints\": [119983], \"characters\": \"\\uD835\\uDCAF\" },\n  \"&Tstrok;\": { \"codepoints\": [358], \"characters\": \"\\u0166\" },\n  \"&Uacute\": { \"codepoints\": [218], \"characters\": \"\\u00DA\" },\n  \"&Uacute;\": { \"codepoints\": [218], \"characters\": \"\\u00DA\" },\n  \"&Uarr;\": { \"codepoints\": [8607], \"characters\": \"\\u219F\" },\n  \"&Uarrocir;\": { \"codepoints\": [10569], \"characters\": \"\\u2949\" },\n  \"&Ubrcy;\": { \"codepoints\": [1038], \"characters\": \"\\u040E\" },\n  \"&Ubreve;\": { \"codepoints\": [364], \"characters\": \"\\u016C\" },\n  \"&Ucirc\": { \"codepoints\": [219], \"characters\": \"\\u00DB\" },\n  \"&Ucirc;\": { \"codepoints\": [219], \"characters\": \"\\u00DB\" },\n  \"&Ucy;\": { \"codepoints\": [1059], \"characters\": \"\\u0423\" },\n  \"&Udblac;\": { \"codepoints\": [368], \"characters\": \"\\u0170\" },\n  \"&Ufr;\": { \"codepoints\": [120088], \"characters\": \"\\uD835\\uDD18\" },\n  \"&Ugrave\": { \"codepoints\": [217], \"characters\": \"\\u00D9\" },\n  \"&Ugrave;\": { \"codepoints\": [217], \"characters\": \"\\u00D9\" },\n  \"&Umacr;\": { \"codepoints\": [362], \"characters\": \"\\u016A\" },\n  \"&UnderBar;\": { \"codepoints\": [95], \"characters\": \"\\u005F\" },\n  \"&UnderBrace;\": { \"codepoints\": [9183], \"characters\": \"\\u23DF\" },\n  \"&UnderBracket;\": { \"codepoints\": [9141], \"characters\": \"\\u23B5\" },\n  \"&UnderParenthesis;\": { \"codepoints\": [9181], \"characters\": \"\\u23DD\" },\n  \"&Union;\": { \"codepoints\": [8899], \"characters\": \"\\u22C3\" },\n  \"&UnionPlus;\": { \"codepoints\": [8846], \"characters\": \"\\u228E\" },\n  \"&Uogon;\": { \"codepoints\": [370], \"characters\": \"\\u0172\" },\n  \"&Uopf;\": { \"codepoints\": [120140], \"characters\": \"\\uD835\\uDD4C\" },\n  \"&UpArrow;\": { \"codepoints\": [8593], \"characters\": \"\\u2191\" },\n  \"&UpArrowBar;\": { \"codepoints\": [10514], \"characters\": \"\\u2912\" },\n  \"&UpArrowDownArrow;\": { \"codepoints\": [8645], \"characters\": \"\\u21C5\" },\n  \"&UpDownArrow;\": { \"codepoints\": [8597], \"characters\": \"\\u2195\" },\n  \"&UpEquilibrium;\": { \"codepoints\": [10606], \"characters\": \"\\u296E\" },\n  \"&UpTee;\": { \"codepoints\": [8869], \"characters\": \"\\u22A5\" },\n  \"&UpTeeArrow;\": { \"codepoints\": [8613], \"characters\": \"\\u21A5\" },\n  \"&Uparrow;\": { \"codepoints\": [8657], \"characters\": \"\\u21D1\" },\n  \"&Updownarrow;\": { \"codepoints\": [8661], \"characters\": \"\\u21D5\" },\n  \"&UpperLeftArrow;\": { \"codepoints\": [8598], \"characters\": \"\\u2196\" },\n  \"&UpperRightArrow;\": { \"codepoints\": [8599], \"characters\": \"\\u2197\" },\n  \"&Upsi;\": { \"codepoints\": [978], \"characters\": \"\\u03D2\" },\n  \"&Upsilon;\": { \"codepoints\": [933], \"characters\": \"\\u03A5\" },\n  \"&Uring;\": { \"codepoints\": [366], \"characters\": \"\\u016E\" },\n  \"&Uscr;\": { \"codepoints\": [119984], \"characters\": \"\\uD835\\uDCB0\" },\n  \"&Utilde;\": { \"codepoints\": [360], \"characters\": \"\\u0168\" },\n  \"&Uuml\": { \"codepoints\": [220], \"characters\": \"\\u00DC\" },\n  \"&Uuml;\": { \"codepoints\": [220], \"characters\": \"\\u00DC\" },\n  \"&VDash;\": { \"codepoints\": [8875], \"characters\": \"\\u22AB\" },\n  \"&Vbar;\": { \"codepoints\": [10987], \"characters\": \"\\u2AEB\" },\n  \"&Vcy;\": { \"codepoints\": [1042], \"characters\": \"\\u0412\" },\n  \"&Vdash;\": { \"codepoints\": [8873], \"characters\": \"\\u22A9\" },\n  \"&Vdashl;\": { \"codepoints\": [10982], \"characters\": \"\\u2AE6\" },\n  \"&Vee;\": { \"codepoints\": [8897], \"characters\": \"\\u22C1\" },\n  \"&Verbar;\": { \"codepoints\": [8214], \"characters\": \"\\u2016\" },\n  \"&Vert;\": { \"codepoints\": [8214], \"characters\": \"\\u2016\" },\n  \"&VerticalBar;\": { \"codepoints\": [8739], \"characters\": \"\\u2223\" },\n  \"&VerticalLine;\": { \"codepoints\": [124], \"characters\": \"\\u007C\" },\n  \"&VerticalSeparator;\": { \"codepoints\": [10072], \"characters\": \"\\u2758\" },\n  \"&VerticalTilde;\": { \"codepoints\": [8768], \"characters\": \"\\u2240\" },\n  \"&VeryThinSpace;\": { \"codepoints\": [8202], \"characters\": \"\\u200A\" },\n  \"&Vfr;\": { \"codepoints\": [120089], \"characters\": \"\\uD835\\uDD19\" },\n  \"&Vopf;\": { \"codepoints\": [120141], \"characters\": \"\\uD835\\uDD4D\" },\n  \"&Vscr;\": { \"codepoints\": [119985], \"characters\": \"\\uD835\\uDCB1\" },\n  \"&Vvdash;\": { \"codepoints\": [8874], \"characters\": \"\\u22AA\" },\n  \"&Wcirc;\": { \"codepoints\": [372], \"characters\": \"\\u0174\" },\n  \"&Wedge;\": { \"codepoints\": [8896], \"characters\": \"\\u22C0\" },\n  \"&Wfr;\": { \"codepoints\": [120090], \"characters\": \"\\uD835\\uDD1A\" },\n  \"&Wopf;\": { \"codepoints\": [120142], \"characters\": \"\\uD835\\uDD4E\" },\n  \"&Wscr;\": { \"codepoints\": [119986], \"characters\": \"\\uD835\\uDCB2\" },\n  \"&Xfr;\": { \"codepoints\": [120091], \"characters\": \"\\uD835\\uDD1B\" },\n  \"&Xi;\": { \"codepoints\": [926], \"characters\": \"\\u039E\" },\n  \"&Xopf;\": { \"codepoints\": [120143], \"characters\": \"\\uD835\\uDD4F\" },\n  \"&Xscr;\": { \"codepoints\": [119987], \"characters\": \"\\uD835\\uDCB3\" },\n  \"&YAcy;\": { \"codepoints\": [1071], \"characters\": \"\\u042F\" },\n  \"&YIcy;\": { \"codepoints\": [1031], \"characters\": \"\\u0407\" },\n  \"&YUcy;\": { \"codepoints\": [1070], \"characters\": \"\\u042E\" },\n  \"&Yacute\": { \"codepoints\": [221], \"characters\": \"\\u00DD\" },\n  \"&Yacute;\": { \"codepoints\": [221], \"characters\": \"\\u00DD\" },\n  \"&Ycirc;\": { \"codepoints\": [374], \"characters\": \"\\u0176\" },\n  \"&Ycy;\": { \"codepoints\": [1067], \"characters\": \"\\u042B\" },\n  \"&Yfr;\": { \"codepoints\": [120092], \"characters\": \"\\uD835\\uDD1C\" },\n  \"&Yopf;\": { \"codepoints\": [120144], \"characters\": \"\\uD835\\uDD50\" },\n  \"&Yscr;\": { \"codepoints\": [119988], \"characters\": \"\\uD835\\uDCB4\" },\n  \"&Yuml;\": { \"codepoints\": [376], \"characters\": \"\\u0178\" },\n  \"&ZHcy;\": { \"codepoints\": [1046], \"characters\": \"\\u0416\" },\n  \"&Zacute;\": { \"codepoints\": [377], \"characters\": \"\\u0179\" },\n  \"&Zcaron;\": { \"codepoints\": [381], \"characters\": \"\\u017D\" },\n  \"&Zcy;\": { \"codepoints\": [1047], \"characters\": \"\\u0417\" },\n  \"&Zdot;\": { \"codepoints\": [379], \"characters\": \"\\u017B\" },\n  \"&ZeroWidthSpace;\": { \"codepoints\": [8203], \"characters\": \"\\u200B\" },\n  \"&Zeta;\": { \"codepoints\": [918], \"characters\": \"\\u0396\" },\n  \"&Zfr;\": { \"codepoints\": [8488], \"characters\": \"\\u2128\" },\n  \"&Zopf;\": { \"codepoints\": [8484], \"characters\": \"\\u2124\" },\n  \"&Zscr;\": { \"codepoints\": [119989], \"characters\": \"\\uD835\\uDCB5\" },\n  \"&aacute\": { \"codepoints\": [225], \"characters\": \"\\u00E1\" },\n  \"&aacute;\": { \"codepoints\": [225], \"characters\": \"\\u00E1\" },\n  \"&abreve;\": { \"codepoints\": [259], \"characters\": \"\\u0103\" },\n  \"&ac;\": { \"codepoints\": [8766], \"characters\": \"\\u223E\" },\n  \"&acE;\": { \"codepoints\": [8766, 819], \"characters\": \"\\u223E\\u0333\" },\n  \"&acd;\": { \"codepoints\": [8767], \"characters\": \"\\u223F\" },\n  \"&acirc\": { \"codepoints\": [226], \"characters\": \"\\u00E2\" },\n  \"&acirc;\": { \"codepoints\": [226], \"characters\": \"\\u00E2\" },\n  \"&acute\": { \"codepoints\": [180], \"characters\": \"\\u00B4\" },\n  \"&acute;\": { \"codepoints\": [180], \"characters\": \"\\u00B4\" },\n  \"&acy;\": { \"codepoints\": [1072], \"characters\": \"\\u0430\" },\n  \"&aelig\": { \"codepoints\": [230], \"characters\": \"\\u00E6\" },\n  \"&aelig;\": { \"codepoints\": [230], \"characters\": \"\\u00E6\" },\n  \"&af;\": { \"codepoints\": [8289], \"characters\": \"\\u2061\" },\n  \"&afr;\": { \"codepoints\": [120094], \"characters\": \"\\uD835\\uDD1E\" },\n  \"&agrave\": { \"codepoints\": [224], \"characters\": \"\\u00E0\" },\n  \"&agrave;\": { \"codepoints\": [224], \"characters\": \"\\u00E0\" },\n  \"&alefsym;\": { \"codepoints\": [8501], \"characters\": \"\\u2135\" },\n  \"&aleph;\": { \"codepoints\": [8501], \"characters\": \"\\u2135\" },\n  \"&alpha;\": { \"codepoints\": [945], \"characters\": \"\\u03B1\" },\n  \"&amacr;\": { \"codepoints\": [257], \"characters\": \"\\u0101\" },\n  \"&amalg;\": { \"codepoints\": [10815], \"characters\": \"\\u2A3F\" },\n  \"&amp\": { \"codepoints\": [38], \"characters\": \"\\u0026\" },\n  \"&amp;\": { \"codepoints\": [38], \"characters\": \"\\u0026\" },\n  \"&and;\": { \"codepoints\": [8743], \"characters\": \"\\u2227\" },\n  \"&andand;\": { \"codepoints\": [10837], \"characters\": \"\\u2A55\" },\n  \"&andd;\": { \"codepoints\": [10844], \"characters\": \"\\u2A5C\" },\n  \"&andslope;\": { \"codepoints\": [10840], \"characters\": \"\\u2A58\" },\n  \"&andv;\": { \"codepoints\": [10842], \"characters\": \"\\u2A5A\" },\n  \"&ang;\": { \"codepoints\": [8736], \"characters\": \"\\u2220\" },\n  \"&ange;\": { \"codepoints\": [10660], \"characters\": \"\\u29A4\" },\n  \"&angle;\": { \"codepoints\": [8736], \"characters\": \"\\u2220\" },\n  \"&angmsd;\": { \"codepoints\": [8737], \"characters\": \"\\u2221\" },\n  \"&angmsdaa;\": { \"codepoints\": [10664], \"characters\": \"\\u29A8\" },\n  \"&angmsdab;\": { \"codepoints\": [10665], \"characters\": \"\\u29A9\" },\n  \"&angmsdac;\": { \"codepoints\": [10666], \"characters\": \"\\u29AA\" },\n  \"&angmsdad;\": { \"codepoints\": [10667], \"characters\": \"\\u29AB\" },\n  \"&angmsdae;\": { \"codepoints\": [10668], \"characters\": \"\\u29AC\" },\n  \"&angmsdaf;\": { \"codepoints\": [10669], \"characters\": \"\\u29AD\" },\n  \"&angmsdag;\": { \"codepoints\": [10670], \"characters\": \"\\u29AE\" },\n  \"&angmsdah;\": { \"codepoints\": [10671], \"characters\": \"\\u29AF\" },\n  \"&angrt;\": { \"codepoints\": [8735], \"characters\": \"\\u221F\" },\n  \"&angrtvb;\": { \"codepoints\": [8894], \"characters\": \"\\u22BE\" },\n  \"&angrtvbd;\": { \"codepoints\": [10653], \"characters\": \"\\u299D\" },\n  \"&angsph;\": { \"codepoints\": [8738], \"characters\": \"\\u2222\" },\n  \"&angst;\": { \"codepoints\": [197], \"characters\": \"\\u00C5\" },\n  \"&angzarr;\": { \"codepoints\": [9084], \"characters\": \"\\u237C\" },\n  \"&aogon;\": { \"codepoints\": [261], \"characters\": \"\\u0105\" },\n  \"&aopf;\": { \"codepoints\": [120146], \"characters\": \"\\uD835\\uDD52\" },\n  \"&ap;\": { \"codepoints\": [8776], \"characters\": \"\\u2248\" },\n  \"&apE;\": { \"codepoints\": [10864], \"characters\": \"\\u2A70\" },\n  \"&apacir;\": { \"codepoints\": [10863], \"characters\": \"\\u2A6F\" },\n  \"&ape;\": { \"codepoints\": [8778], \"characters\": \"\\u224A\" },\n  \"&apid;\": { \"codepoints\": [8779], \"characters\": \"\\u224B\" },\n  \"&apos;\": { \"codepoints\": [39], \"characters\": \"\\u0027\" },\n  \"&approx;\": { \"codepoints\": [8776], \"characters\": \"\\u2248\" },\n  \"&approxeq;\": { \"codepoints\": [8778], \"characters\": \"\\u224A\" },\n  \"&aring\": { \"codepoints\": [229], \"characters\": \"\\u00E5\" },\n  \"&aring;\": { \"codepoints\": [229], \"characters\": \"\\u00E5\" },\n  \"&ascr;\": { \"codepoints\": [119990], \"characters\": \"\\uD835\\uDCB6\" },\n  \"&ast;\": { \"codepoints\": [42], \"characters\": \"\\u002A\" },\n  \"&asymp;\": { \"codepoints\": [8776], \"characters\": \"\\u2248\" },\n  \"&asympeq;\": { \"codepoints\": [8781], \"characters\": \"\\u224D\" },\n  \"&atilde\": { \"codepoints\": [227], \"characters\": \"\\u00E3\" },\n  \"&atilde;\": { \"codepoints\": [227], \"characters\": \"\\u00E3\" },\n  \"&auml\": { \"codepoints\": [228], \"characters\": \"\\u00E4\" },\n  \"&auml;\": { \"codepoints\": [228], \"characters\": \"\\u00E4\" },\n  \"&awconint;\": { \"codepoints\": [8755], \"characters\": \"\\u2233\" },\n  \"&awint;\": { \"codepoints\": [10769], \"characters\": \"\\u2A11\" },\n  \"&bNot;\": { \"codepoints\": [10989], \"characters\": \"\\u2AED\" },\n  \"&backcong;\": { \"codepoints\": [8780], \"characters\": \"\\u224C\" },\n  \"&backepsilon;\": { \"codepoints\": [1014], \"characters\": \"\\u03F6\" },\n  \"&backprime;\": { \"codepoints\": [8245], \"characters\": \"\\u2035\" },\n  \"&backsim;\": { \"codepoints\": [8765], \"characters\": \"\\u223D\" },\n  \"&backsimeq;\": { \"codepoints\": [8909], \"characters\": \"\\u22CD\" },\n  \"&barvee;\": { \"codepoints\": [8893], \"characters\": \"\\u22BD\" },\n  \"&barwed;\": { \"codepoints\": [8965], \"characters\": \"\\u2305\" },\n  \"&barwedge;\": { \"codepoints\": [8965], \"characters\": \"\\u2305\" },\n  \"&bbrk;\": { \"codepoints\": [9141], \"characters\": \"\\u23B5\" },\n  \"&bbrktbrk;\": { \"codepoints\": [9142], \"characters\": \"\\u23B6\" },\n  \"&bcong;\": { \"codepoints\": [8780], \"characters\": \"\\u224C\" },\n  \"&bcy;\": { \"codepoints\": [1073], \"characters\": \"\\u0431\" },\n  \"&bdquo;\": { \"codepoints\": [8222], \"characters\": \"\\u201E\" },\n  \"&becaus;\": { \"codepoints\": [8757], \"characters\": \"\\u2235\" },\n  \"&because;\": { \"codepoints\": [8757], \"characters\": \"\\u2235\" },\n  \"&bemptyv;\": { \"codepoints\": [10672], \"characters\": \"\\u29B0\" },\n  \"&bepsi;\": { \"codepoints\": [1014], \"characters\": \"\\u03F6\" },\n  \"&bernou;\": { \"codepoints\": [8492], \"characters\": \"\\u212C\" },\n  \"&beta;\": { \"codepoints\": [946], \"characters\": \"\\u03B2\" },\n  \"&beth;\": { \"codepoints\": [8502], \"characters\": \"\\u2136\" },\n  \"&between;\": { \"codepoints\": [8812], \"characters\": \"\\u226C\" },\n  \"&bfr;\": { \"codepoints\": [120095], \"characters\": \"\\uD835\\uDD1F\" },\n  \"&bigcap;\": { \"codepoints\": [8898], \"characters\": \"\\u22C2\" },\n  \"&bigcirc;\": { \"codepoints\": [9711], \"characters\": \"\\u25EF\" },\n  \"&bigcup;\": { \"codepoints\": [8899], \"characters\": \"\\u22C3\" },\n  \"&bigodot;\": { \"codepoints\": [10752], \"characters\": \"\\u2A00\" },\n  \"&bigoplus;\": { \"codepoints\": [10753], \"characters\": \"\\u2A01\" },\n  \"&bigotimes;\": { \"codepoints\": [10754], \"characters\": \"\\u2A02\" },\n  \"&bigsqcup;\": { \"codepoints\": [10758], \"characters\": \"\\u2A06\" },\n  \"&bigstar;\": { \"codepoints\": [9733], \"characters\": \"\\u2605\" },\n  \"&bigtriangledown;\": { \"codepoints\": [9661], \"characters\": \"\\u25BD\" },\n  \"&bigtriangleup;\": { \"codepoints\": [9651], \"characters\": \"\\u25B3\" },\n  \"&biguplus;\": { \"codepoints\": [10756], \"characters\": \"\\u2A04\" },\n  \"&bigvee;\": { \"codepoints\": [8897], \"characters\": \"\\u22C1\" },\n  \"&bigwedge;\": { \"codepoints\": [8896], \"characters\": \"\\u22C0\" },\n  \"&bkarow;\": { \"codepoints\": [10509], \"characters\": \"\\u290D\" },\n  \"&blacklozenge;\": { \"codepoints\": [10731], \"characters\": \"\\u29EB\" },\n  \"&blacksquare;\": { \"codepoints\": [9642], \"characters\": \"\\u25AA\" },\n  \"&blacktriangle;\": { \"codepoints\": [9652], \"characters\": \"\\u25B4\" },\n  \"&blacktriangledown;\": { \"codepoints\": [9662], \"characters\": \"\\u25BE\" },\n  \"&blacktriangleleft;\": { \"codepoints\": [9666], \"characters\": \"\\u25C2\" },\n  \"&blacktriangleright;\": { \"codepoints\": [9656], \"characters\": \"\\u25B8\" },\n  \"&blank;\": { \"codepoints\": [9251], \"characters\": \"\\u2423\" },\n  \"&blk12;\": { \"codepoints\": [9618], \"characters\": \"\\u2592\" },\n  \"&blk14;\": { \"codepoints\": [9617], \"characters\": \"\\u2591\" },\n  \"&blk34;\": { \"codepoints\": [9619], \"characters\": \"\\u2593\" },\n  \"&block;\": { \"codepoints\": [9608], \"characters\": \"\\u2588\" },\n  \"&bne;\": { \"codepoints\": [61, 8421], \"characters\": \"\\u003D\\u20E5\" },\n  \"&bnequiv;\": { \"codepoints\": [8801, 8421], \"characters\": \"\\u2261\\u20E5\" },\n  \"&bnot;\": { \"codepoints\": [8976], \"characters\": \"\\u2310\" },\n  \"&bopf;\": { \"codepoints\": [120147], \"characters\": \"\\uD835\\uDD53\" },\n  \"&bot;\": { \"codepoints\": [8869], \"characters\": \"\\u22A5\" },\n  \"&bottom;\": { \"codepoints\": [8869], \"characters\": \"\\u22A5\" },\n  \"&bowtie;\": { \"codepoints\": [8904], \"characters\": \"\\u22C8\" },\n  \"&boxDL;\": { \"codepoints\": [9559], \"characters\": \"\\u2557\" },\n  \"&boxDR;\": { \"codepoints\": [9556], \"characters\": \"\\u2554\" },\n  \"&boxDl;\": { \"codepoints\": [9558], \"characters\": \"\\u2556\" },\n  \"&boxDr;\": { \"codepoints\": [9555], \"characters\": \"\\u2553\" },\n  \"&boxH;\": { \"codepoints\": [9552], \"characters\": \"\\u2550\" },\n  \"&boxHD;\": { \"codepoints\": [9574], \"characters\": \"\\u2566\" },\n  \"&boxHU;\": { \"codepoints\": [9577], \"characters\": \"\\u2569\" },\n  \"&boxHd;\": { \"codepoints\": [9572], \"characters\": \"\\u2564\" },\n  \"&boxHu;\": { \"codepoints\": [9575], \"characters\": \"\\u2567\" },\n  \"&boxUL;\": { \"codepoints\": [9565], \"characters\": \"\\u255D\" },\n  \"&boxUR;\": { \"codepoints\": [9562], \"characters\": \"\\u255A\" },\n  \"&boxUl;\": { \"codepoints\": [9564], \"characters\": \"\\u255C\" },\n  \"&boxUr;\": { \"codepoints\": [9561], \"characters\": \"\\u2559\" },\n  \"&boxV;\": { \"codepoints\": [9553], \"characters\": \"\\u2551\" },\n  \"&boxVH;\": { \"codepoints\": [9580], \"characters\": \"\\u256C\" },\n  \"&boxVL;\": { \"codepoints\": [9571], \"characters\": \"\\u2563\" },\n  \"&boxVR;\": { \"codepoints\": [9568], \"characters\": \"\\u2560\" },\n  \"&boxVh;\": { \"codepoints\": [9579], \"characters\": \"\\u256B\" },\n  \"&boxVl;\": { \"codepoints\": [9570], \"characters\": \"\\u2562\" },\n  \"&boxVr;\": { \"codepoints\": [9567], \"characters\": \"\\u255F\" },\n  \"&boxbox;\": { \"codepoints\": [10697], \"characters\": \"\\u29C9\" },\n  \"&boxdL;\": { \"codepoints\": [9557], \"characters\": \"\\u2555\" },\n  \"&boxdR;\": { \"codepoints\": [9554], \"characters\": \"\\u2552\" },\n  \"&boxdl;\": { \"codepoints\": [9488], \"characters\": \"\\u2510\" },\n  \"&boxdr;\": { \"codepoints\": [9484], \"characters\": \"\\u250C\" },\n  \"&boxh;\": { \"codepoints\": [9472], \"characters\": \"\\u2500\" },\n  \"&boxhD;\": { \"codepoints\": [9573], \"characters\": \"\\u2565\" },\n  \"&boxhU;\": { \"codepoints\": [9576], \"characters\": \"\\u2568\" },\n  \"&boxhd;\": { \"codepoints\": [9516], \"characters\": \"\\u252C\" },\n  \"&boxhu;\": { \"codepoints\": [9524], \"characters\": \"\\u2534\" },\n  \"&boxminus;\": { \"codepoints\": [8863], \"characters\": \"\\u229F\" },\n  \"&boxplus;\": { \"codepoints\": [8862], \"characters\": \"\\u229E\" },\n  \"&boxtimes;\": { \"codepoints\": [8864], \"characters\": \"\\u22A0\" },\n  \"&boxuL;\": { \"codepoints\": [9563], \"characters\": \"\\u255B\" },\n  \"&boxuR;\": { \"codepoints\": [9560], \"characters\": \"\\u2558\" },\n  \"&boxul;\": { \"codepoints\": [9496], \"characters\": \"\\u2518\" },\n  \"&boxur;\": { \"codepoints\": [9492], \"characters\": \"\\u2514\" },\n  \"&boxv;\": { \"codepoints\": [9474], \"characters\": \"\\u2502\" },\n  \"&boxvH;\": { \"codepoints\": [9578], \"characters\": \"\\u256A\" },\n  \"&boxvL;\": { \"codepoints\": [9569], \"characters\": \"\\u2561\" },\n  \"&boxvR;\": { \"codepoints\": [9566], \"characters\": \"\\u255E\" },\n  \"&boxvh;\": { \"codepoints\": [9532], \"characters\": \"\\u253C\" },\n  \"&boxvl;\": { \"codepoints\": [9508], \"characters\": \"\\u2524\" },\n  \"&boxvr;\": { \"codepoints\": [9500], \"characters\": \"\\u251C\" },\n  \"&bprime;\": { \"codepoints\": [8245], \"characters\": \"\\u2035\" },\n  \"&breve;\": { \"codepoints\": [728], \"characters\": \"\\u02D8\" },\n  \"&brvbar\": { \"codepoints\": [166], \"characters\": \"\\u00A6\" },\n  \"&brvbar;\": { \"codepoints\": [166], \"characters\": \"\\u00A6\" },\n  \"&bscr;\": { \"codepoints\": [119991], \"characters\": \"\\uD835\\uDCB7\" },\n  \"&bsemi;\": { \"codepoints\": [8271], \"characters\": \"\\u204F\" },\n  \"&bsim;\": { \"codepoints\": [8765], \"characters\": \"\\u223D\" },\n  \"&bsime;\": { \"codepoints\": [8909], \"characters\": \"\\u22CD\" },\n  \"&bsol;\": { \"codepoints\": [92], \"characters\": \"\\u005C\" },\n  \"&bsolb;\": { \"codepoints\": [10693], \"characters\": \"\\u29C5\" },\n  \"&bsolhsub;\": { \"codepoints\": [10184], \"characters\": \"\\u27C8\" },\n  \"&bull;\": { \"codepoints\": [8226], \"characters\": \"\\u2022\" },\n  \"&bullet;\": { \"codepoints\": [8226], \"characters\": \"\\u2022\" },\n  \"&bump;\": { \"codepoints\": [8782], \"characters\": \"\\u224E\" },\n  \"&bumpE;\": { \"codepoints\": [10926], \"characters\": \"\\u2AAE\" },\n  \"&bumpe;\": { \"codepoints\": [8783], \"characters\": \"\\u224F\" },\n  \"&bumpeq;\": { \"codepoints\": [8783], \"characters\": \"\\u224F\" },\n  \"&cacute;\": { \"codepoints\": [263], \"characters\": \"\\u0107\" },\n  \"&cap;\": { \"codepoints\": [8745], \"characters\": \"\\u2229\" },\n  \"&capand;\": { \"codepoints\": [10820], \"characters\": \"\\u2A44\" },\n  \"&capbrcup;\": { \"codepoints\": [10825], \"characters\": \"\\u2A49\" },\n  \"&capcap;\": { \"codepoints\": [10827], \"characters\": \"\\u2A4B\" },\n  \"&capcup;\": { \"codepoints\": [10823], \"characters\": \"\\u2A47\" },\n  \"&capdot;\": { \"codepoints\": [10816], \"characters\": \"\\u2A40\" },\n  \"&caps;\": { \"codepoints\": [8745, 65024], \"characters\": \"\\u2229\\uFE00\" },\n  \"&caret;\": { \"codepoints\": [8257], \"characters\": \"\\u2041\" },\n  \"&caron;\": { \"codepoints\": [711], \"characters\": \"\\u02C7\" },\n  \"&ccaps;\": { \"codepoints\": [10829], \"characters\": \"\\u2A4D\" },\n  \"&ccaron;\": { \"codepoints\": [269], \"characters\": \"\\u010D\" },\n  \"&ccedil\": { \"codepoints\": [231], \"characters\": \"\\u00E7\" },\n  \"&ccedil;\": { \"codepoints\": [231], \"characters\": \"\\u00E7\" },\n  \"&ccirc;\": { \"codepoints\": [265], \"characters\": \"\\u0109\" },\n  \"&ccups;\": { \"codepoints\": [10828], \"characters\": \"\\u2A4C\" },\n  \"&ccupssm;\": { \"codepoints\": [10832], \"characters\": \"\\u2A50\" },\n  \"&cdot;\": { \"codepoints\": [267], \"characters\": \"\\u010B\" },\n  \"&cedil\": { \"codepoints\": [184], \"characters\": \"\\u00B8\" },\n  \"&cedil;\": { \"codepoints\": [184], \"characters\": \"\\u00B8\" },\n  \"&cemptyv;\": { \"codepoints\": [10674], \"characters\": \"\\u29B2\" },\n  \"&cent\": { \"codepoints\": [162], \"characters\": \"\\u00A2\" },\n  \"&cent;\": { \"codepoints\": [162], \"characters\": \"\\u00A2\" },\n  \"&centerdot;\": { \"codepoints\": [183], \"characters\": \"\\u00B7\" },\n  \"&cfr;\": { \"codepoints\": [120096], \"characters\": \"\\uD835\\uDD20\" },\n  \"&chcy;\": { \"codepoints\": [1095], \"characters\": \"\\u0447\" },\n  \"&check;\": { \"codepoints\": [10003], \"characters\": \"\\u2713\" },\n  \"&checkmark;\": { \"codepoints\": [10003], \"characters\": \"\\u2713\" },\n  \"&chi;\": { \"codepoints\": [967], \"characters\": \"\\u03C7\" },\n  \"&cir;\": { \"codepoints\": [9675], \"characters\": \"\\u25CB\" },\n  \"&cirE;\": { \"codepoints\": [10691], \"characters\": \"\\u29C3\" },\n  \"&circ;\": { \"codepoints\": [710], \"characters\": \"\\u02C6\" },\n  \"&circeq;\": { \"codepoints\": [8791], \"characters\": \"\\u2257\" },\n  \"&circlearrowleft;\": { \"codepoints\": [8634], \"characters\": \"\\u21BA\" },\n  \"&circlearrowright;\": { \"codepoints\": [8635], \"characters\": \"\\u21BB\" },\n  \"&circledR;\": { \"codepoints\": [174], \"characters\": \"\\u00AE\" },\n  \"&circledS;\": { \"codepoints\": [9416], \"characters\": \"\\u24C8\" },\n  \"&circledast;\": { \"codepoints\": [8859], \"characters\": \"\\u229B\" },\n  \"&circledcirc;\": { \"codepoints\": [8858], \"characters\": \"\\u229A\" },\n  \"&circleddash;\": { \"codepoints\": [8861], \"characters\": \"\\u229D\" },\n  \"&cire;\": { \"codepoints\": [8791], \"characters\": \"\\u2257\" },\n  \"&cirfnint;\": { \"codepoints\": [10768], \"characters\": \"\\u2A10\" },\n  \"&cirmid;\": { \"codepoints\": [10991], \"characters\": \"\\u2AEF\" },\n  \"&cirscir;\": { \"codepoints\": [10690], \"characters\": \"\\u29C2\" },\n  \"&clubs;\": { \"codepoints\": [9827], \"characters\": \"\\u2663\" },\n  \"&clubsuit;\": { \"codepoints\": [9827], \"characters\": \"\\u2663\" },\n  \"&colon;\": { \"codepoints\": [58], \"characters\": \"\\u003A\" },\n  \"&colone;\": { \"codepoints\": [8788], \"characters\": \"\\u2254\" },\n  \"&coloneq;\": { \"codepoints\": [8788], \"characters\": \"\\u2254\" },\n  \"&comma;\": { \"codepoints\": [44], \"characters\": \"\\u002C\" },\n  \"&commat;\": { \"codepoints\": [64], \"characters\": \"\\u0040\" },\n  \"&comp;\": { \"codepoints\": [8705], \"characters\": \"\\u2201\" },\n  \"&compfn;\": { \"codepoints\": [8728], \"characters\": \"\\u2218\" },\n  \"&complement;\": { \"codepoints\": [8705], \"characters\": \"\\u2201\" },\n  \"&complexes;\": { \"codepoints\": [8450], \"characters\": \"\\u2102\" },\n  \"&cong;\": { \"codepoints\": [8773], \"characters\": \"\\u2245\" },\n  \"&congdot;\": { \"codepoints\": [10861], \"characters\": \"\\u2A6D\" },\n  \"&conint;\": { \"codepoints\": [8750], \"characters\": \"\\u222E\" },\n  \"&copf;\": { \"codepoints\": [120148], \"characters\": \"\\uD835\\uDD54\" },\n  \"&coprod;\": { \"codepoints\": [8720], \"characters\": \"\\u2210\" },\n  \"&copy\": { \"codepoints\": [169], \"characters\": \"\\u00A9\" },\n  \"&copy;\": { \"codepoints\": [169], \"characters\": \"\\u00A9\" },\n  \"&copysr;\": { \"codepoints\": [8471], \"characters\": \"\\u2117\" },\n  \"&crarr;\": { \"codepoints\": [8629], \"characters\": \"\\u21B5\" },\n  \"&cross;\": { \"codepoints\": [10007], \"characters\": \"\\u2717\" },\n  \"&cscr;\": { \"codepoints\": [119992], \"characters\": \"\\uD835\\uDCB8\" },\n  \"&csub;\": { \"codepoints\": [10959], \"characters\": \"\\u2ACF\" },\n  \"&csube;\": { \"codepoints\": [10961], \"characters\": \"\\u2AD1\" },\n  \"&csup;\": { \"codepoints\": [10960], \"characters\": \"\\u2AD0\" },\n  \"&csupe;\": { \"codepoints\": [10962], \"characters\": \"\\u2AD2\" },\n  \"&ctdot;\": { \"codepoints\": [8943], \"characters\": \"\\u22EF\" },\n  \"&cudarrl;\": { \"codepoints\": [10552], \"characters\": \"\\u2938\" },\n  \"&cudarrr;\": { \"codepoints\": [10549], \"characters\": \"\\u2935\" },\n  \"&cuepr;\": { \"codepoints\": [8926], \"characters\": \"\\u22DE\" },\n  \"&cuesc;\": { \"codepoints\": [8927], \"characters\": \"\\u22DF\" },\n  \"&cularr;\": { \"codepoints\": [8630], \"characters\": \"\\u21B6\" },\n  \"&cularrp;\": { \"codepoints\": [10557], \"characters\": \"\\u293D\" },\n  \"&cup;\": { \"codepoints\": [8746], \"characters\": \"\\u222A\" },\n  \"&cupbrcap;\": { \"codepoints\": [10824], \"characters\": \"\\u2A48\" },\n  \"&cupcap;\": { \"codepoints\": [10822], \"characters\": \"\\u2A46\" },\n  \"&cupcup;\": { \"codepoints\": [10826], \"characters\": \"\\u2A4A\" },\n  \"&cupdot;\": { \"codepoints\": [8845], \"characters\": \"\\u228D\" },\n  \"&cupor;\": { \"codepoints\": [10821], \"characters\": \"\\u2A45\" },\n  \"&cups;\": { \"codepoints\": [8746, 65024], \"characters\": \"\\u222A\\uFE00\" },\n  \"&curarr;\": { \"codepoints\": [8631], \"characters\": \"\\u21B7\" },\n  \"&curarrm;\": { \"codepoints\": [10556], \"characters\": \"\\u293C\" },\n  \"&curlyeqprec;\": { \"codepoints\": [8926], \"characters\": \"\\u22DE\" },\n  \"&curlyeqsucc;\": { \"codepoints\": [8927], \"characters\": \"\\u22DF\" },\n  \"&curlyvee;\": { \"codepoints\": [8910], \"characters\": \"\\u22CE\" },\n  \"&curlywedge;\": { \"codepoints\": [8911], \"characters\": \"\\u22CF\" },\n  \"&curren\": { \"codepoints\": [164], \"characters\": \"\\u00A4\" },\n  \"&curren;\": { \"codepoints\": [164], \"characters\": \"\\u00A4\" },\n  \"&curvearrowleft;\": { \"codepoints\": [8630], \"characters\": \"\\u21B6\" },\n  \"&curvearrowright;\": { \"codepoints\": [8631], \"characters\": \"\\u21B7\" },\n  \"&cuvee;\": { \"codepoints\": [8910], \"characters\": \"\\u22CE\" },\n  \"&cuwed;\": { \"codepoints\": [8911], \"characters\": \"\\u22CF\" },\n  \"&cwconint;\": { \"codepoints\": [8754], \"characters\": \"\\u2232\" },\n  \"&cwint;\": { \"codepoints\": [8753], \"characters\": \"\\u2231\" },\n  \"&cylcty;\": { \"codepoints\": [9005], \"characters\": \"\\u232D\" },\n  \"&dArr;\": { \"codepoints\": [8659], \"characters\": \"\\u21D3\" },\n  \"&dHar;\": { \"codepoints\": [10597], \"characters\": \"\\u2965\" },\n  \"&dagger;\": { \"codepoints\": [8224], \"characters\": \"\\u2020\" },\n  \"&daleth;\": { \"codepoints\": [8504], \"characters\": \"\\u2138\" },\n  \"&darr;\": { \"codepoints\": [8595], \"characters\": \"\\u2193\" },\n  \"&dash;\": { \"codepoints\": [8208], \"characters\": \"\\u2010\" },\n  \"&dashv;\": { \"codepoints\": [8867], \"characters\": \"\\u22A3\" },\n  \"&dbkarow;\": { \"codepoints\": [10511], \"characters\": \"\\u290F\" },\n  \"&dblac;\": { \"codepoints\": [733], \"characters\": \"\\u02DD\" },\n  \"&dcaron;\": { \"codepoints\": [271], \"characters\": \"\\u010F\" },\n  \"&dcy;\": { \"codepoints\": [1076], \"characters\": \"\\u0434\" },\n  \"&dd;\": { \"codepoints\": [8518], \"characters\": \"\\u2146\" },\n  \"&ddagger;\": { \"codepoints\": [8225], \"characters\": \"\\u2021\" },\n  \"&ddarr;\": { \"codepoints\": [8650], \"characters\": \"\\u21CA\" },\n  \"&ddotseq;\": { \"codepoints\": [10871], \"characters\": \"\\u2A77\" },\n  \"&deg\": { \"codepoints\": [176], \"characters\": \"\\u00B0\" },\n  \"&deg;\": { \"codepoints\": [176], \"characters\": \"\\u00B0\" },\n  \"&delta;\": { \"codepoints\": [948], \"characters\": \"\\u03B4\" },\n  \"&demptyv;\": { \"codepoints\": [10673], \"characters\": \"\\u29B1\" },\n  \"&dfisht;\": { \"codepoints\": [10623], \"characters\": \"\\u297F\" },\n  \"&dfr;\": { \"codepoints\": [120097], \"characters\": \"\\uD835\\uDD21\" },\n  \"&dharl;\": { \"codepoints\": [8643], \"characters\": \"\\u21C3\" },\n  \"&dharr;\": { \"codepoints\": [8642], \"characters\": \"\\u21C2\" },\n  \"&diam;\": { \"codepoints\": [8900], \"characters\": \"\\u22C4\" },\n  \"&diamond;\": { \"codepoints\": [8900], \"characters\": \"\\u22C4\" },\n  \"&diamondsuit;\": { \"codepoints\": [9830], \"characters\": \"\\u2666\" },\n  \"&diams;\": { \"codepoints\": [9830], \"characters\": \"\\u2666\" },\n  \"&die;\": { \"codepoints\": [168], \"characters\": \"\\u00A8\" },\n  \"&digamma;\": { \"codepoints\": [989], \"characters\": \"\\u03DD\" },\n  \"&disin;\": { \"codepoints\": [8946], \"characters\": \"\\u22F2\" },\n  \"&div;\": { \"codepoints\": [247], \"characters\": \"\\u00F7\" },\n  \"&divide\": { \"codepoints\": [247], \"characters\": \"\\u00F7\" },\n  \"&divide;\": { \"codepoints\": [247], \"characters\": \"\\u00F7\" },\n  \"&divideontimes;\": { \"codepoints\": [8903], \"characters\": \"\\u22C7\" },\n  \"&divonx;\": { \"codepoints\": [8903], \"characters\": \"\\u22C7\" },\n  \"&djcy;\": { \"codepoints\": [1106], \"characters\": \"\\u0452\" },\n  \"&dlcorn;\": { \"codepoints\": [8990], \"characters\": \"\\u231E\" },\n  \"&dlcrop;\": { \"codepoints\": [8973], \"characters\": \"\\u230D\" },\n  \"&dollar;\": { \"codepoints\": [36], \"characters\": \"\\u0024\" },\n  \"&dopf;\": { \"codepoints\": [120149], \"characters\": \"\\uD835\\uDD55\" },\n  \"&dot;\": { \"codepoints\": [729], \"characters\": \"\\u02D9\" },\n  \"&doteq;\": { \"codepoints\": [8784], \"characters\": \"\\u2250\" },\n  \"&doteqdot;\": { \"codepoints\": [8785], \"characters\": \"\\u2251\" },\n  \"&dotminus;\": { \"codepoints\": [8760], \"characters\": \"\\u2238\" },\n  \"&dotplus;\": { \"codepoints\": [8724], \"characters\": \"\\u2214\" },\n  \"&dotsquare;\": { \"codepoints\": [8865], \"characters\": \"\\u22A1\" },\n  \"&doublebarwedge;\": { \"codepoints\": [8966], \"characters\": \"\\u2306\" },\n  \"&downarrow;\": { \"codepoints\": [8595], \"characters\": \"\\u2193\" },\n  \"&downdownarrows;\": { \"codepoints\": [8650], \"characters\": \"\\u21CA\" },\n  \"&downharpoonleft;\": { \"codepoints\": [8643], \"characters\": \"\\u21C3\" },\n  \"&downharpoonright;\": { \"codepoints\": [8642], \"characters\": \"\\u21C2\" },\n  \"&drbkarow;\": { \"codepoints\": [10512], \"characters\": \"\\u2910\" },\n  \"&drcorn;\": { \"codepoints\": [8991], \"characters\": \"\\u231F\" },\n  \"&drcrop;\": { \"codepoints\": [8972], \"characters\": \"\\u230C\" },\n  \"&dscr;\": { \"codepoints\": [119993], \"characters\": \"\\uD835\\uDCB9\" },\n  \"&dscy;\": { \"codepoints\": [1109], \"characters\": \"\\u0455\" },\n  \"&dsol;\": { \"codepoints\": [10742], \"characters\": \"\\u29F6\" },\n  \"&dstrok;\": { \"codepoints\": [273], \"characters\": \"\\u0111\" },\n  \"&dtdot;\": { \"codepoints\": [8945], \"characters\": \"\\u22F1\" },\n  \"&dtri;\": { \"codepoints\": [9663], \"characters\": \"\\u25BF\" },\n  \"&dtrif;\": { \"codepoints\": [9662], \"characters\": \"\\u25BE\" },\n  \"&duarr;\": { \"codepoints\": [8693], \"characters\": \"\\u21F5\" },\n  \"&duhar;\": { \"codepoints\": [10607], \"characters\": \"\\u296F\" },\n  \"&dwangle;\": { \"codepoints\": [10662], \"characters\": \"\\u29A6\" },\n  \"&dzcy;\": { \"codepoints\": [1119], \"characters\": \"\\u045F\" },\n  \"&dzigrarr;\": { \"codepoints\": [10239], \"characters\": \"\\u27FF\" },\n  \"&eDDot;\": { \"codepoints\": [10871], \"characters\": \"\\u2A77\" },\n  \"&eDot;\": { \"codepoints\": [8785], \"characters\": \"\\u2251\" },\n  \"&eacute\": { \"codepoints\": [233], \"characters\": \"\\u00E9\" },\n  \"&eacute;\": { \"codepoints\": [233], \"characters\": \"\\u00E9\" },\n  \"&easter;\": { \"codepoints\": [10862], \"characters\": \"\\u2A6E\" },\n  \"&ecaron;\": { \"codepoints\": [283], \"characters\": \"\\u011B\" },\n  \"&ecir;\": { \"codepoints\": [8790], \"characters\": \"\\u2256\" },\n  \"&ecirc\": { \"codepoints\": [234], \"characters\": \"\\u00EA\" },\n  \"&ecirc;\": { \"codepoints\": [234], \"characters\": \"\\u00EA\" },\n  \"&ecolon;\": { \"codepoints\": [8789], \"characters\": \"\\u2255\" },\n  \"&ecy;\": { \"codepoints\": [1101], \"characters\": \"\\u044D\" },\n  \"&edot;\": { \"codepoints\": [279], \"characters\": \"\\u0117\" },\n  \"&ee;\": { \"codepoints\": [8519], \"characters\": \"\\u2147\" },\n  \"&efDot;\": { \"codepoints\": [8786], \"characters\": \"\\u2252\" },\n  \"&efr;\": { \"codepoints\": [120098], \"characters\": \"\\uD835\\uDD22\" },\n  \"&eg;\": { \"codepoints\": [10906], \"characters\": \"\\u2A9A\" },\n  \"&egrave\": { \"codepoints\": [232], \"characters\": \"\\u00E8\" },\n  \"&egrave;\": { \"codepoints\": [232], \"characters\": \"\\u00E8\" },\n  \"&egs;\": { \"codepoints\": [10902], \"characters\": \"\\u2A96\" },\n  \"&egsdot;\": { \"codepoints\": [10904], \"characters\": \"\\u2A98\" },\n  \"&el;\": { \"codepoints\": [10905], \"characters\": \"\\u2A99\" },\n  \"&elinters;\": { \"codepoints\": [9191], \"characters\": \"\\u23E7\" },\n  \"&ell;\": { \"codepoints\": [8467], \"characters\": \"\\u2113\" },\n  \"&els;\": { \"codepoints\": [10901], \"characters\": \"\\u2A95\" },\n  \"&elsdot;\": { \"codepoints\": [10903], \"characters\": \"\\u2A97\" },\n  \"&emacr;\": { \"codepoints\": [275], \"characters\": \"\\u0113\" },\n  \"&empty;\": { \"codepoints\": [8709], \"characters\": \"\\u2205\" },\n  \"&emptyset;\": { \"codepoints\": [8709], \"characters\": \"\\u2205\" },\n  \"&emptyv;\": { \"codepoints\": [8709], \"characters\": \"\\u2205\" },\n  \"&emsp13;\": { \"codepoints\": [8196], \"characters\": \"\\u2004\" },\n  \"&emsp14;\": { \"codepoints\": [8197], \"characters\": \"\\u2005\" },\n  \"&emsp;\": { \"codepoints\": [8195], \"characters\": \"\\u2003\" },\n  \"&eng;\": { \"codepoints\": [331], \"characters\": \"\\u014B\" },\n  \"&ensp;\": { \"codepoints\": [8194], \"characters\": \"\\u2002\" },\n  \"&eogon;\": { \"codepoints\": [281], \"characters\": \"\\u0119\" },\n  \"&eopf;\": { \"codepoints\": [120150], \"characters\": \"\\uD835\\uDD56\" },\n  \"&epar;\": { \"codepoints\": [8917], \"characters\": \"\\u22D5\" },\n  \"&eparsl;\": { \"codepoints\": [10723], \"characters\": \"\\u29E3\" },\n  \"&eplus;\": { \"codepoints\": [10865], \"characters\": \"\\u2A71\" },\n  \"&epsi;\": { \"codepoints\": [949], \"characters\": \"\\u03B5\" },\n  \"&epsilon;\": { \"codepoints\": [949], \"characters\": \"\\u03B5\" },\n  \"&epsiv;\": { \"codepoints\": [1013], \"characters\": \"\\u03F5\" },\n  \"&eqcirc;\": { \"codepoints\": [8790], \"characters\": \"\\u2256\" },\n  \"&eqcolon;\": { \"codepoints\": [8789], \"characters\": \"\\u2255\" },\n  \"&eqsim;\": { \"codepoints\": [8770], \"characters\": \"\\u2242\" },\n  \"&eqslantgtr;\": { \"codepoints\": [10902], \"characters\": \"\\u2A96\" },\n  \"&eqslantless;\": { \"codepoints\": [10901], \"characters\": \"\\u2A95\" },\n  \"&equals;\": { \"codepoints\": [61], \"characters\": \"\\u003D\" },\n  \"&equest;\": { \"codepoints\": [8799], \"characters\": \"\\u225F\" },\n  \"&equiv;\": { \"codepoints\": [8801], \"characters\": \"\\u2261\" },\n  \"&equivDD;\": { \"codepoints\": [10872], \"characters\": \"\\u2A78\" },\n  \"&eqvparsl;\": { \"codepoints\": [10725], \"characters\": \"\\u29E5\" },\n  \"&erDot;\": { \"codepoints\": [8787], \"characters\": \"\\u2253\" },\n  \"&erarr;\": { \"codepoints\": [10609], \"characters\": \"\\u2971\" },\n  \"&escr;\": { \"codepoints\": [8495], \"characters\": \"\\u212F\" },\n  \"&esdot;\": { \"codepoints\": [8784], \"characters\": \"\\u2250\" },\n  \"&esim;\": { \"codepoints\": [8770], \"characters\": \"\\u2242\" },\n  \"&eta;\": { \"codepoints\": [951], \"characters\": \"\\u03B7\" },\n  \"&eth\": { \"codepoints\": [240], \"characters\": \"\\u00F0\" },\n  \"&eth;\": { \"codepoints\": [240], \"characters\": \"\\u00F0\" },\n  \"&euml\": { \"codepoints\": [235], \"characters\": \"\\u00EB\" },\n  \"&euml;\": { \"codepoints\": [235], \"characters\": \"\\u00EB\" },\n  \"&euro;\": { \"codepoints\": [8364], \"characters\": \"\\u20AC\" },\n  \"&excl;\": { \"codepoints\": [33], \"characters\": \"\\u0021\" },\n  \"&exist;\": { \"codepoints\": [8707], \"characters\": \"\\u2203\" },\n  \"&expectation;\": { \"codepoints\": [8496], \"characters\": \"\\u2130\" },\n  \"&exponentiale;\": { \"codepoints\": [8519], \"characters\": \"\\u2147\" },\n  \"&fallingdotseq;\": { \"codepoints\": [8786], \"characters\": \"\\u2252\" },\n  \"&fcy;\": { \"codepoints\": [1092], \"characters\": \"\\u0444\" },\n  \"&female;\": { \"codepoints\": [9792], \"characters\": \"\\u2640\" },\n  \"&ffilig;\": { \"codepoints\": [64259], \"characters\": \"\\uFB03\" },\n  \"&fflig;\": { \"codepoints\": [64256], \"characters\": \"\\uFB00\" },\n  \"&ffllig;\": { \"codepoints\": [64260], \"characters\": \"\\uFB04\" },\n  \"&ffr;\": { \"codepoints\": [120099], \"characters\": \"\\uD835\\uDD23\" },\n  \"&filig;\": { \"codepoints\": [64257], \"characters\": \"\\uFB01\" },\n  \"&fjlig;\": { \"codepoints\": [102, 106], \"characters\": \"\\u0066\\u006A\" },\n  \"&flat;\": { \"codepoints\": [9837], \"characters\": \"\\u266D\" },\n  \"&fllig;\": { \"codepoints\": [64258], \"characters\": \"\\uFB02\" },\n  \"&fltns;\": { \"codepoints\": [9649], \"characters\": \"\\u25B1\" },\n  \"&fnof;\": { \"codepoints\": [402], \"characters\": \"\\u0192\" },\n  \"&fopf;\": { \"codepoints\": [120151], \"characters\": \"\\uD835\\uDD57\" },\n  \"&forall;\": { \"codepoints\": [8704], \"characters\": \"\\u2200\" },\n  \"&fork;\": { \"codepoints\": [8916], \"characters\": \"\\u22D4\" },\n  \"&forkv;\": { \"codepoints\": [10969], \"characters\": \"\\u2AD9\" },\n  \"&fpartint;\": { \"codepoints\": [10765], \"characters\": \"\\u2A0D\" },\n  \"&frac12\": { \"codepoints\": [189], \"characters\": \"\\u00BD\" },\n  \"&frac12;\": { \"codepoints\": [189], \"characters\": \"\\u00BD\" },\n  \"&frac13;\": { \"codepoints\": [8531], \"characters\": \"\\u2153\" },\n  \"&frac14\": { \"codepoints\": [188], \"characters\": \"\\u00BC\" },\n  \"&frac14;\": { \"codepoints\": [188], \"characters\": \"\\u00BC\" },\n  \"&frac15;\": { \"codepoints\": [8533], \"characters\": \"\\u2155\" },\n  \"&frac16;\": { \"codepoints\": [8537], \"characters\": \"\\u2159\" },\n  \"&frac18;\": { \"codepoints\": [8539], \"characters\": \"\\u215B\" },\n  \"&frac23;\": { \"codepoints\": [8532], \"characters\": \"\\u2154\" },\n  \"&frac25;\": { \"codepoints\": [8534], \"characters\": \"\\u2156\" },\n  \"&frac34\": { \"codepoints\": [190], \"characters\": \"\\u00BE\" },\n  \"&frac34;\": { \"codepoints\": [190], \"characters\": \"\\u00BE\" },\n  \"&frac35;\": { \"codepoints\": [8535], \"characters\": \"\\u2157\" },\n  \"&frac38;\": { \"codepoints\": [8540], \"characters\": \"\\u215C\" },\n  \"&frac45;\": { \"codepoints\": [8536], \"characters\": \"\\u2158\" },\n  \"&frac56;\": { \"codepoints\": [8538], \"characters\": \"\\u215A\" },\n  \"&frac58;\": { \"codepoints\": [8541], \"characters\": \"\\u215D\" },\n  \"&frac78;\": { \"codepoints\": [8542], \"characters\": \"\\u215E\" },\n  \"&frasl;\": { \"codepoints\": [8260], \"characters\": \"\\u2044\" },\n  \"&frown;\": { \"codepoints\": [8994], \"characters\": \"\\u2322\" },\n  \"&fscr;\": { \"codepoints\": [119995], \"characters\": \"\\uD835\\uDCBB\" },\n  \"&gE;\": { \"codepoints\": [8807], \"characters\": \"\\u2267\" },\n  \"&gEl;\": { \"codepoints\": [10892], \"characters\": \"\\u2A8C\" },\n  \"&gacute;\": { \"codepoints\": [501], \"characters\": \"\\u01F5\" },\n  \"&gamma;\": { \"codepoints\": [947], \"characters\": \"\\u03B3\" },\n  \"&gammad;\": { \"codepoints\": [989], \"characters\": \"\\u03DD\" },\n  \"&gap;\": { \"codepoints\": [10886], \"characters\": \"\\u2A86\" },\n  \"&gbreve;\": { \"codepoints\": [287], \"characters\": \"\\u011F\" },\n  \"&gcirc;\": { \"codepoints\": [285], \"characters\": \"\\u011D\" },\n  \"&gcy;\": { \"codepoints\": [1075], \"characters\": \"\\u0433\" },\n  \"&gdot;\": { \"codepoints\": [289], \"characters\": \"\\u0121\" },\n  \"&ge;\": { \"codepoints\": [8805], \"characters\": \"\\u2265\" },\n  \"&gel;\": { \"codepoints\": [8923], \"characters\": \"\\u22DB\" },\n  \"&geq;\": { \"codepoints\": [8805], \"characters\": \"\\u2265\" },\n  \"&geqq;\": { \"codepoints\": [8807], \"characters\": \"\\u2267\" },\n  \"&geqslant;\": { \"codepoints\": [10878], \"characters\": \"\\u2A7E\" },\n  \"&ges;\": { \"codepoints\": [10878], \"characters\": \"\\u2A7E\" },\n  \"&gescc;\": { \"codepoints\": [10921], \"characters\": \"\\u2AA9\" },\n  \"&gesdot;\": { \"codepoints\": [10880], \"characters\": \"\\u2A80\" },\n  \"&gesdoto;\": { \"codepoints\": [10882], \"characters\": \"\\u2A82\" },\n  \"&gesdotol;\": { \"codepoints\": [10884], \"characters\": \"\\u2A84\" },\n  \"&gesl;\": { \"codepoints\": [8923, 65024], \"characters\": \"\\u22DB\\uFE00\" },\n  \"&gesles;\": { \"codepoints\": [10900], \"characters\": \"\\u2A94\" },\n  \"&gfr;\": { \"codepoints\": [120100], \"characters\": \"\\uD835\\uDD24\" },\n  \"&gg;\": { \"codepoints\": [8811], \"characters\": \"\\u226B\" },\n  \"&ggg;\": { \"codepoints\": [8921], \"characters\": \"\\u22D9\" },\n  \"&gimel;\": { \"codepoints\": [8503], \"characters\": \"\\u2137\" },\n  \"&gjcy;\": { \"codepoints\": [1107], \"characters\": \"\\u0453\" },\n  \"&gl;\": { \"codepoints\": [8823], \"characters\": \"\\u2277\" },\n  \"&glE;\": { \"codepoints\": [10898], \"characters\": \"\\u2A92\" },\n  \"&gla;\": { \"codepoints\": [10917], \"characters\": \"\\u2AA5\" },\n  \"&glj;\": { \"codepoints\": [10916], \"characters\": \"\\u2AA4\" },\n  \"&gnE;\": { \"codepoints\": [8809], \"characters\": \"\\u2269\" },\n  \"&gnap;\": { \"codepoints\": [10890], \"characters\": \"\\u2A8A\" },\n  \"&gnapprox;\": { \"codepoints\": [10890], \"characters\": \"\\u2A8A\" },\n  \"&gne;\": { \"codepoints\": [10888], \"characters\": \"\\u2A88\" },\n  \"&gneq;\": { \"codepoints\": [10888], \"characters\": \"\\u2A88\" },\n  \"&gneqq;\": { \"codepoints\": [8809], \"characters\": \"\\u2269\" },\n  \"&gnsim;\": { \"codepoints\": [8935], \"characters\": \"\\u22E7\" },\n  \"&gopf;\": { \"codepoints\": [120152], \"characters\": \"\\uD835\\uDD58\" },\n  \"&grave;\": { \"codepoints\": [96], \"characters\": \"\\u0060\" },\n  \"&gscr;\": { \"codepoints\": [8458], \"characters\": \"\\u210A\" },\n  \"&gsim;\": { \"codepoints\": [8819], \"characters\": \"\\u2273\" },\n  \"&gsime;\": { \"codepoints\": [10894], \"characters\": \"\\u2A8E\" },\n  \"&gsiml;\": { \"codepoints\": [10896], \"characters\": \"\\u2A90\" },\n  \"&gt\": { \"codepoints\": [62], \"characters\": \"\\u003E\" },\n  \"&gt;\": { \"codepoints\": [62], \"characters\": \"\\u003E\" },\n  \"&gtcc;\": { \"codepoints\": [10919], \"characters\": \"\\u2AA7\" },\n  \"&gtcir;\": { \"codepoints\": [10874], \"characters\": \"\\u2A7A\" },\n  \"&gtdot;\": { \"codepoints\": [8919], \"characters\": \"\\u22D7\" },\n  \"&gtlPar;\": { \"codepoints\": [10645], \"characters\": \"\\u2995\" },\n  \"&gtquest;\": { \"codepoints\": [10876], \"characters\": \"\\u2A7C\" },\n  \"&gtrapprox;\": { \"codepoints\": [10886], \"characters\": \"\\u2A86\" },\n  \"&gtrarr;\": { \"codepoints\": [10616], \"characters\": \"\\u2978\" },\n  \"&gtrdot;\": { \"codepoints\": [8919], \"characters\": \"\\u22D7\" },\n  \"&gtreqless;\": { \"codepoints\": [8923], \"characters\": \"\\u22DB\" },\n  \"&gtreqqless;\": { \"codepoints\": [10892], \"characters\": \"\\u2A8C\" },\n  \"&gtrless;\": { \"codepoints\": [8823], \"characters\": \"\\u2277\" },\n  \"&gtrsim;\": { \"codepoints\": [8819], \"characters\": \"\\u2273\" },\n  \"&gvertneqq;\": { \"codepoints\": [8809, 65024], \"characters\": \"\\u2269\\uFE00\" },\n  \"&gvnE;\": { \"codepoints\": [8809, 65024], \"characters\": \"\\u2269\\uFE00\" },\n  \"&hArr;\": { \"codepoints\": [8660], \"characters\": \"\\u21D4\" },\n  \"&hairsp;\": { \"codepoints\": [8202], \"characters\": \"\\u200A\" },\n  \"&half;\": { \"codepoints\": [189], \"characters\": \"\\u00BD\" },\n  \"&hamilt;\": { \"codepoints\": [8459], \"characters\": \"\\u210B\" },\n  \"&hardcy;\": { \"codepoints\": [1098], \"characters\": \"\\u044A\" },\n  \"&harr;\": { \"codepoints\": [8596], \"characters\": \"\\u2194\" },\n  \"&harrcir;\": { \"codepoints\": [10568], \"characters\": \"\\u2948\" },\n  \"&harrw;\": { \"codepoints\": [8621], \"characters\": \"\\u21AD\" },\n  \"&hbar;\": { \"codepoints\": [8463], \"characters\": \"\\u210F\" },\n  \"&hcirc;\": { \"codepoints\": [293], \"characters\": \"\\u0125\" },\n  \"&hearts;\": { \"codepoints\": [9829], \"characters\": \"\\u2665\" },\n  \"&heartsuit;\": { \"codepoints\": [9829], \"characters\": \"\\u2665\" },\n  \"&hellip;\": { \"codepoints\": [8230], \"characters\": \"\\u2026\" },\n  \"&hercon;\": { \"codepoints\": [8889], \"characters\": \"\\u22B9\" },\n  \"&hfr;\": { \"codepoints\": [120101], \"characters\": \"\\uD835\\uDD25\" },\n  \"&hksearow;\": { \"codepoints\": [10533], \"characters\": \"\\u2925\" },\n  \"&hkswarow;\": { \"codepoints\": [10534], \"characters\": \"\\u2926\" },\n  \"&hoarr;\": { \"codepoints\": [8703], \"characters\": \"\\u21FF\" },\n  \"&homtht;\": { \"codepoints\": [8763], \"characters\": \"\\u223B\" },\n  \"&hookleftarrow;\": { \"codepoints\": [8617], \"characters\": \"\\u21A9\" },\n  \"&hookrightarrow;\": { \"codepoints\": [8618], \"characters\": \"\\u21AA\" },\n  \"&hopf;\": { \"codepoints\": [120153], \"characters\": \"\\uD835\\uDD59\" },\n  \"&horbar;\": { \"codepoints\": [8213], \"characters\": \"\\u2015\" },\n  \"&hscr;\": { \"codepoints\": [119997], \"characters\": \"\\uD835\\uDCBD\" },\n  \"&hslash;\": { \"codepoints\": [8463], \"characters\": \"\\u210F\" },\n  \"&hstrok;\": { \"codepoints\": [295], \"characters\": \"\\u0127\" },\n  \"&hybull;\": { \"codepoints\": [8259], \"characters\": \"\\u2043\" },\n  \"&hyphen;\": { \"codepoints\": [8208], \"characters\": \"\\u2010\" },\n  \"&iacute\": { \"codepoints\": [237], \"characters\": \"\\u00ED\" },\n  \"&iacute;\": { \"codepoints\": [237], \"characters\": \"\\u00ED\" },\n  \"&ic;\": { \"codepoints\": [8291], \"characters\": \"\\u2063\" },\n  \"&icirc\": { \"codepoints\": [238], \"characters\": \"\\u00EE\" },\n  \"&icirc;\": { \"codepoints\": [238], \"characters\": \"\\u00EE\" },\n  \"&icy;\": { \"codepoints\": [1080], \"characters\": \"\\u0438\" },\n  \"&iecy;\": { \"codepoints\": [1077], \"characters\": \"\\u0435\" },\n  \"&iexcl\": { \"codepoints\": [161], \"characters\": \"\\u00A1\" },\n  \"&iexcl;\": { \"codepoints\": [161], \"characters\": \"\\u00A1\" },\n  \"&iff;\": { \"codepoints\": [8660], \"characters\": \"\\u21D4\" },\n  \"&ifr;\": { \"codepoints\": [120102], \"characters\": \"\\uD835\\uDD26\" },\n  \"&igrave\": { \"codepoints\": [236], \"characters\": \"\\u00EC\" },\n  \"&igrave;\": { \"codepoints\": [236], \"characters\": \"\\u00EC\" },\n  \"&ii;\": { \"codepoints\": [8520], \"characters\": \"\\u2148\" },\n  \"&iiiint;\": { \"codepoints\": [10764], \"characters\": \"\\u2A0C\" },\n  \"&iiint;\": { \"codepoints\": [8749], \"characters\": \"\\u222D\" },\n  \"&iinfin;\": { \"codepoints\": [10716], \"characters\": \"\\u29DC\" },\n  \"&iiota;\": { \"codepoints\": [8489], \"characters\": \"\\u2129\" },\n  \"&ijlig;\": { \"codepoints\": [307], \"characters\": \"\\u0133\" },\n  \"&imacr;\": { \"codepoints\": [299], \"characters\": \"\\u012B\" },\n  \"&image;\": { \"codepoints\": [8465], \"characters\": \"\\u2111\" },\n  \"&imagline;\": { \"codepoints\": [8464], \"characters\": \"\\u2110\" },\n  \"&imagpart;\": { \"codepoints\": [8465], \"characters\": \"\\u2111\" },\n  \"&imath;\": { \"codepoints\": [305], \"characters\": \"\\u0131\" },\n  \"&imof;\": { \"codepoints\": [8887], \"characters\": \"\\u22B7\" },\n  \"&imped;\": { \"codepoints\": [437], \"characters\": \"\\u01B5\" },\n  \"&in;\": { \"codepoints\": [8712], \"characters\": \"\\u2208\" },\n  \"&incare;\": { \"codepoints\": [8453], \"characters\": \"\\u2105\" },\n  \"&infin;\": { \"codepoints\": [8734], \"characters\": \"\\u221E\" },\n  \"&infintie;\": { \"codepoints\": [10717], \"characters\": \"\\u29DD\" },\n  \"&inodot;\": { \"codepoints\": [305], \"characters\": \"\\u0131\" },\n  \"&int;\": { \"codepoints\": [8747], \"characters\": \"\\u222B\" },\n  \"&intcal;\": { \"codepoints\": [8890], \"characters\": \"\\u22BA\" },\n  \"&integers;\": { \"codepoints\": [8484], \"characters\": \"\\u2124\" },\n  \"&intercal;\": { \"codepoints\": [8890], \"characters\": \"\\u22BA\" },\n  \"&intlarhk;\": { \"codepoints\": [10775], \"characters\": \"\\u2A17\" },\n  \"&intprod;\": { \"codepoints\": [10812], \"characters\": \"\\u2A3C\" },\n  \"&iocy;\": { \"codepoints\": [1105], \"characters\": \"\\u0451\" },\n  \"&iogon;\": { \"codepoints\": [303], \"characters\": \"\\u012F\" },\n  \"&iopf;\": { \"codepoints\": [120154], \"characters\": \"\\uD835\\uDD5A\" },\n  \"&iota;\": { \"codepoints\": [953], \"characters\": \"\\u03B9\" },\n  \"&iprod;\": { \"codepoints\": [10812], \"characters\": \"\\u2A3C\" },\n  \"&iquest\": { \"codepoints\": [191], \"characters\": \"\\u00BF\" },\n  \"&iquest;\": { \"codepoints\": [191], \"characters\": \"\\u00BF\" },\n  \"&iscr;\": { \"codepoints\": [119998], \"characters\": \"\\uD835\\uDCBE\" },\n  \"&isin;\": { \"codepoints\": [8712], \"characters\": \"\\u2208\" },\n  \"&isinE;\": { \"codepoints\": [8953], \"characters\": \"\\u22F9\" },\n  \"&isindot;\": { \"codepoints\": [8949], \"characters\": \"\\u22F5\" },\n  \"&isins;\": { \"codepoints\": [8948], \"characters\": \"\\u22F4\" },\n  \"&isinsv;\": { \"codepoints\": [8947], \"characters\": \"\\u22F3\" },\n  \"&isinv;\": { \"codepoints\": [8712], \"characters\": \"\\u2208\" },\n  \"&it;\": { \"codepoints\": [8290], \"characters\": \"\\u2062\" },\n  \"&itilde;\": { \"codepoints\": [297], \"characters\": \"\\u0129\" },\n  \"&iukcy;\": { \"codepoints\": [1110], \"characters\": \"\\u0456\" },\n  \"&iuml\": { \"codepoints\": [239], \"characters\": \"\\u00EF\" },\n  \"&iuml;\": { \"codepoints\": [239], \"characters\": \"\\u00EF\" },\n  \"&jcirc;\": { \"codepoints\": [309], \"characters\": \"\\u0135\" },\n  \"&jcy;\": { \"codepoints\": [1081], \"characters\": \"\\u0439\" },\n  \"&jfr;\": { \"codepoints\": [120103], \"characters\": \"\\uD835\\uDD27\" },\n  \"&jmath;\": { \"codepoints\": [567], \"characters\": \"\\u0237\" },\n  \"&jopf;\": { \"codepoints\": [120155], \"characters\": \"\\uD835\\uDD5B\" },\n  \"&jscr;\": { \"codepoints\": [119999], \"characters\": \"\\uD835\\uDCBF\" },\n  \"&jsercy;\": { \"codepoints\": [1112], \"characters\": \"\\u0458\" },\n  \"&jukcy;\": { \"codepoints\": [1108], \"characters\": \"\\u0454\" },\n  \"&kappa;\": { \"codepoints\": [954], \"characters\": \"\\u03BA\" },\n  \"&kappav;\": { \"codepoints\": [1008], \"characters\": \"\\u03F0\" },\n  \"&kcedil;\": { \"codepoints\": [311], \"characters\": \"\\u0137\" },\n  \"&kcy;\": { \"codepoints\": [1082], \"characters\": \"\\u043A\" },\n  \"&kfr;\": { \"codepoints\": [120104], \"characters\": \"\\uD835\\uDD28\" },\n  \"&kgreen;\": { \"codepoints\": [312], \"characters\": \"\\u0138\" },\n  \"&khcy;\": { \"codepoints\": [1093], \"characters\": \"\\u0445\" },\n  \"&kjcy;\": { \"codepoints\": [1116], \"characters\": \"\\u045C\" },\n  \"&kopf;\": { \"codepoints\": [120156], \"characters\": \"\\uD835\\uDD5C\" },\n  \"&kscr;\": { \"codepoints\": [120000], \"characters\": \"\\uD835\\uDCC0\" },\n  \"&lAarr;\": { \"codepoints\": [8666], \"characters\": \"\\u21DA\" },\n  \"&lArr;\": { \"codepoints\": [8656], \"characters\": \"\\u21D0\" },\n  \"&lAtail;\": { \"codepoints\": [10523], \"characters\": \"\\u291B\" },\n  \"&lBarr;\": { \"codepoints\": [10510], \"characters\": \"\\u290E\" },\n  \"&lE;\": { \"codepoints\": [8806], \"characters\": \"\\u2266\" },\n  \"&lEg;\": { \"codepoints\": [10891], \"characters\": \"\\u2A8B\" },\n  \"&lHar;\": { \"codepoints\": [10594], \"characters\": \"\\u2962\" },\n  \"&lacute;\": { \"codepoints\": [314], \"characters\": \"\\u013A\" },\n  \"&laemptyv;\": { \"codepoints\": [10676], \"characters\": \"\\u29B4\" },\n  \"&lagran;\": { \"codepoints\": [8466], \"characters\": \"\\u2112\" },\n  \"&lambda;\": { \"codepoints\": [955], \"characters\": \"\\u03BB\" },\n  \"&lang;\": { \"codepoints\": [10216], \"characters\": \"\\u27E8\" },\n  \"&langd;\": { \"codepoints\": [10641], \"characters\": \"\\u2991\" },\n  \"&langle;\": { \"codepoints\": [10216], \"characters\": \"\\u27E8\" },\n  \"&lap;\": { \"codepoints\": [10885], \"characters\": \"\\u2A85\" },\n  \"&laquo\": { \"codepoints\": [171], \"characters\": \"\\u00AB\" },\n  \"&laquo;\": { \"codepoints\": [171], \"characters\": \"\\u00AB\" },\n  \"&larr;\": { \"codepoints\": [8592], \"characters\": \"\\u2190\" },\n  \"&larrb;\": { \"codepoints\": [8676], \"characters\": \"\\u21E4\" },\n  \"&larrbfs;\": { \"codepoints\": [10527], \"characters\": \"\\u291F\" },\n  \"&larrfs;\": { \"codepoints\": [10525], \"characters\": \"\\u291D\" },\n  \"&larrhk;\": { \"codepoints\": [8617], \"characters\": \"\\u21A9\" },\n  \"&larrlp;\": { \"codepoints\": [8619], \"characters\": \"\\u21AB\" },\n  \"&larrpl;\": { \"codepoints\": [10553], \"characters\": \"\\u2939\" },\n  \"&larrsim;\": { \"codepoints\": [10611], \"characters\": \"\\u2973\" },\n  \"&larrtl;\": { \"codepoints\": [8610], \"characters\": \"\\u21A2\" },\n  \"&lat;\": { \"codepoints\": [10923], \"characters\": \"\\u2AAB\" },\n  \"&latail;\": { \"codepoints\": [10521], \"characters\": \"\\u2919\" },\n  \"&late;\": { \"codepoints\": [10925], \"characters\": \"\\u2AAD\" },\n  \"&lates;\": { \"codepoints\": [10925, 65024], \"characters\": \"\\u2AAD\\uFE00\" },\n  \"&lbarr;\": { \"codepoints\": [10508], \"characters\": \"\\u290C\" },\n  \"&lbbrk;\": { \"codepoints\": [10098], \"characters\": \"\\u2772\" },\n  \"&lbrace;\": { \"codepoints\": [123], \"characters\": \"\\u007B\" },\n  \"&lbrack;\": { \"codepoints\": [91], \"characters\": \"\\u005B\" },\n  \"&lbrke;\": { \"codepoints\": [10635], \"characters\": \"\\u298B\" },\n  \"&lbrksld;\": { \"codepoints\": [10639], \"characters\": \"\\u298F\" },\n  \"&lbrkslu;\": { \"codepoints\": [10637], \"characters\": \"\\u298D\" },\n  \"&lcaron;\": { \"codepoints\": [318], \"characters\": \"\\u013E\" },\n  \"&lcedil;\": { \"codepoints\": [316], \"characters\": \"\\u013C\" },\n  \"&lceil;\": { \"codepoints\": [8968], \"characters\": \"\\u2308\" },\n  \"&lcub;\": { \"codepoints\": [123], \"characters\": \"\\u007B\" },\n  \"&lcy;\": { \"codepoints\": [1083], \"characters\": \"\\u043B\" },\n  \"&ldca;\": { \"codepoints\": [10550], \"characters\": \"\\u2936\" },\n  \"&ldquo;\": { \"codepoints\": [8220], \"characters\": \"\\u201C\" },\n  \"&ldquor;\": { \"codepoints\": [8222], \"characters\": \"\\u201E\" },\n  \"&ldrdhar;\": { \"codepoints\": [10599], \"characters\": \"\\u2967\" },\n  \"&ldrushar;\": { \"codepoints\": [10571], \"characters\": \"\\u294B\" },\n  \"&ldsh;\": { \"codepoints\": [8626], \"characters\": \"\\u21B2\" },\n  \"&le;\": { \"codepoints\": [8804], \"characters\": \"\\u2264\" },\n  \"&leftarrow;\": { \"codepoints\": [8592], \"characters\": \"\\u2190\" },\n  \"&leftarrowtail;\": { \"codepoints\": [8610], \"characters\": \"\\u21A2\" },\n  \"&leftharpoondown;\": { \"codepoints\": [8637], \"characters\": \"\\u21BD\" },\n  \"&leftharpoonup;\": { \"codepoints\": [8636], \"characters\": \"\\u21BC\" },\n  \"&leftleftarrows;\": { \"codepoints\": [8647], \"characters\": \"\\u21C7\" },\n  \"&leftrightarrow;\": { \"codepoints\": [8596], \"characters\": \"\\u2194\" },\n  \"&leftrightarrows;\": { \"codepoints\": [8646], \"characters\": \"\\u21C6\" },\n  \"&leftrightharpoons;\": { \"codepoints\": [8651], \"characters\": \"\\u21CB\" },\n  \"&leftrightsquigarrow;\": { \"codepoints\": [8621], \"characters\": \"\\u21AD\" },\n  \"&leftthreetimes;\": { \"codepoints\": [8907], \"characters\": \"\\u22CB\" },\n  \"&leg;\": { \"codepoints\": [8922], \"characters\": \"\\u22DA\" },\n  \"&leq;\": { \"codepoints\": [8804], \"characters\": \"\\u2264\" },\n  \"&leqq;\": { \"codepoints\": [8806], \"characters\": \"\\u2266\" },\n  \"&leqslant;\": { \"codepoints\": [10877], \"characters\": \"\\u2A7D\" },\n  \"&les;\": { \"codepoints\": [10877], \"characters\": \"\\u2A7D\" },\n  \"&lescc;\": { \"codepoints\": [10920], \"characters\": \"\\u2AA8\" },\n  \"&lesdot;\": { \"codepoints\": [10879], \"characters\": \"\\u2A7F\" },\n  \"&lesdoto;\": { \"codepoints\": [10881], \"characters\": \"\\u2A81\" },\n  \"&lesdotor;\": { \"codepoints\": [10883], \"characters\": \"\\u2A83\" },\n  \"&lesg;\": { \"codepoints\": [8922, 65024], \"characters\": \"\\u22DA\\uFE00\" },\n  \"&lesges;\": { \"codepoints\": [10899], \"characters\": \"\\u2A93\" },\n  \"&lessapprox;\": { \"codepoints\": [10885], \"characters\": \"\\u2A85\" },\n  \"&lessdot;\": { \"codepoints\": [8918], \"characters\": \"\\u22D6\" },\n  \"&lesseqgtr;\": { \"codepoints\": [8922], \"characters\": \"\\u22DA\" },\n  \"&lesseqqgtr;\": { \"codepoints\": [10891], \"characters\": \"\\u2A8B\" },\n  \"&lessgtr;\": { \"codepoints\": [8822], \"characters\": \"\\u2276\" },\n  \"&lesssim;\": { \"codepoints\": [8818], \"characters\": \"\\u2272\" },\n  \"&lfisht;\": { \"codepoints\": [10620], \"characters\": \"\\u297C\" },\n  \"&lfloor;\": { \"codepoints\": [8970], \"characters\": \"\\u230A\" },\n  \"&lfr;\": { \"codepoints\": [120105], \"characters\": \"\\uD835\\uDD29\" },\n  \"&lg;\": { \"codepoints\": [8822], \"characters\": \"\\u2276\" },\n  \"&lgE;\": { \"codepoints\": [10897], \"characters\": \"\\u2A91\" },\n  \"&lhard;\": { \"codepoints\": [8637], \"characters\": \"\\u21BD\" },\n  \"&lharu;\": { \"codepoints\": [8636], \"characters\": \"\\u21BC\" },\n  \"&lharul;\": { \"codepoints\": [10602], \"characters\": \"\\u296A\" },\n  \"&lhblk;\": { \"codepoints\": [9604], \"characters\": \"\\u2584\" },\n  \"&ljcy;\": { \"codepoints\": [1113], \"characters\": \"\\u0459\" },\n  \"&ll;\": { \"codepoints\": [8810], \"characters\": \"\\u226A\" },\n  \"&llarr;\": { \"codepoints\": [8647], \"characters\": \"\\u21C7\" },\n  \"&llcorner;\": { \"codepoints\": [8990], \"characters\": \"\\u231E\" },\n  \"&llhard;\": { \"codepoints\": [10603], \"characters\": \"\\u296B\" },\n  \"&lltri;\": { \"codepoints\": [9722], \"characters\": \"\\u25FA\" },\n  \"&lmidot;\": { \"codepoints\": [320], \"characters\": \"\\u0140\" },\n  \"&lmoust;\": { \"codepoints\": [9136], \"characters\": \"\\u23B0\" },\n  \"&lmoustache;\": { \"codepoints\": [9136], \"characters\": \"\\u23B0\" },\n  \"&lnE;\": { \"codepoints\": [8808], \"characters\": \"\\u2268\" },\n  \"&lnap;\": { \"codepoints\": [10889], \"characters\": \"\\u2A89\" },\n  \"&lnapprox;\": { \"codepoints\": [10889], \"characters\": \"\\u2A89\" },\n  \"&lne;\": { \"codepoints\": [10887], \"characters\": \"\\u2A87\" },\n  \"&lneq;\": { \"codepoints\": [10887], \"characters\": \"\\u2A87\" },\n  \"&lneqq;\": { \"codepoints\": [8808], \"characters\": \"\\u2268\" },\n  \"&lnsim;\": { \"codepoints\": [8934], \"characters\": \"\\u22E6\" },\n  \"&loang;\": { \"codepoints\": [10220], \"characters\": \"\\u27EC\" },\n  \"&loarr;\": { \"codepoints\": [8701], \"characters\": \"\\u21FD\" },\n  \"&lobrk;\": { \"codepoints\": [10214], \"characters\": \"\\u27E6\" },\n  \"&longleftarrow;\": { \"codepoints\": [10229], \"characters\": \"\\u27F5\" },\n  \"&longleftrightarrow;\": { \"codepoints\": [10231], \"characters\": \"\\u27F7\" },\n  \"&longmapsto;\": { \"codepoints\": [10236], \"characters\": \"\\u27FC\" },\n  \"&longrightarrow;\": { \"codepoints\": [10230], \"characters\": \"\\u27F6\" },\n  \"&looparrowleft;\": { \"codepoints\": [8619], \"characters\": \"\\u21AB\" },\n  \"&looparrowright;\": { \"codepoints\": [8620], \"characters\": \"\\u21AC\" },\n  \"&lopar;\": { \"codepoints\": [10629], \"characters\": \"\\u2985\" },\n  \"&lopf;\": { \"codepoints\": [120157], \"characters\": \"\\uD835\\uDD5D\" },\n  \"&loplus;\": { \"codepoints\": [10797], \"characters\": \"\\u2A2D\" },\n  \"&lotimes;\": { \"codepoints\": [10804], \"characters\": \"\\u2A34\" },\n  \"&lowast;\": { \"codepoints\": [8727], \"characters\": \"\\u2217\" },\n  \"&lowbar;\": { \"codepoints\": [95], \"characters\": \"\\u005F\" },\n  \"&loz;\": { \"codepoints\": [9674], \"characters\": \"\\u25CA\" },\n  \"&lozenge;\": { \"codepoints\": [9674], \"characters\": \"\\u25CA\" },\n  \"&lozf;\": { \"codepoints\": [10731], \"characters\": \"\\u29EB\" },\n  \"&lpar;\": { \"codepoints\": [40], \"characters\": \"\\u0028\" },\n  \"&lparlt;\": { \"codepoints\": [10643], \"characters\": \"\\u2993\" },\n  \"&lrarr;\": { \"codepoints\": [8646], \"characters\": \"\\u21C6\" },\n  \"&lrcorner;\": { \"codepoints\": [8991], \"characters\": \"\\u231F\" },\n  \"&lrhar;\": { \"codepoints\": [8651], \"characters\": \"\\u21CB\" },\n  \"&lrhard;\": { \"codepoints\": [10605], \"characters\": \"\\u296D\" },\n  \"&lrm;\": { \"codepoints\": [8206], \"characters\": \"\\u200E\" },\n  \"&lrtri;\": { \"codepoints\": [8895], \"characters\": \"\\u22BF\" },\n  \"&lsaquo;\": { \"codepoints\": [8249], \"characters\": \"\\u2039\" },\n  \"&lscr;\": { \"codepoints\": [120001], \"characters\": \"\\uD835\\uDCC1\" },\n  \"&lsh;\": { \"codepoints\": [8624], \"characters\": \"\\u21B0\" },\n  \"&lsim;\": { \"codepoints\": [8818], \"characters\": \"\\u2272\" },\n  \"&lsime;\": { \"codepoints\": [10893], \"characters\": \"\\u2A8D\" },\n  \"&lsimg;\": { \"codepoints\": [10895], \"characters\": \"\\u2A8F\" },\n  \"&lsqb;\": { \"codepoints\": [91], \"characters\": \"\\u005B\" },\n  \"&lsquo;\": { \"codepoints\": [8216], \"characters\": \"\\u2018\" },\n  \"&lsquor;\": { \"codepoints\": [8218], \"characters\": \"\\u201A\" },\n  \"&lstrok;\": { \"codepoints\": [322], \"characters\": \"\\u0142\" },\n  \"&lt\": { \"codepoints\": [60], \"characters\": \"\\u003C\" },\n  \"&lt;\": { \"codepoints\": [60], \"characters\": \"\\u003C\" },\n  \"&ltcc;\": { \"codepoints\": [10918], \"characters\": \"\\u2AA6\" },\n  \"&ltcir;\": { \"codepoints\": [10873], \"characters\": \"\\u2A79\" },\n  \"&ltdot;\": { \"codepoints\": [8918], \"characters\": \"\\u22D6\" },\n  \"&lthree;\": { \"codepoints\": [8907], \"characters\": \"\\u22CB\" },\n  \"&ltimes;\": { \"codepoints\": [8905], \"characters\": \"\\u22C9\" },\n  \"&ltlarr;\": { \"codepoints\": [10614], \"characters\": \"\\u2976\" },\n  \"&ltquest;\": { \"codepoints\": [10875], \"characters\": \"\\u2A7B\" },\n  \"&ltrPar;\": { \"codepoints\": [10646], \"characters\": \"\\u2996\" },\n  \"&ltri;\": { \"codepoints\": [9667], \"characters\": \"\\u25C3\" },\n  \"&ltrie;\": { \"codepoints\": [8884], \"characters\": \"\\u22B4\" },\n  \"&ltrif;\": { \"codepoints\": [9666], \"characters\": \"\\u25C2\" },\n  \"&lurdshar;\": { \"codepoints\": [10570], \"characters\": \"\\u294A\" },\n  \"&luruhar;\": { \"codepoints\": [10598], \"characters\": \"\\u2966\" },\n  \"&lvertneqq;\": { \"codepoints\": [8808, 65024], \"characters\": \"\\u2268\\uFE00\" },\n  \"&lvnE;\": { \"codepoints\": [8808, 65024], \"characters\": \"\\u2268\\uFE00\" },\n  \"&mDDot;\": { \"codepoints\": [8762], \"characters\": \"\\u223A\" },\n  \"&macr\": { \"codepoints\": [175], \"characters\": \"\\u00AF\" },\n  \"&macr;\": { \"codepoints\": [175], \"characters\": \"\\u00AF\" },\n  \"&male;\": { \"codepoints\": [9794], \"characters\": \"\\u2642\" },\n  \"&malt;\": { \"codepoints\": [10016], \"characters\": \"\\u2720\" },\n  \"&maltese;\": { \"codepoints\": [10016], \"characters\": \"\\u2720\" },\n  \"&map;\": { \"codepoints\": [8614], \"characters\": \"\\u21A6\" },\n  \"&mapsto;\": { \"codepoints\": [8614], \"characters\": \"\\u21A6\" },\n  \"&mapstodown;\": { \"codepoints\": [8615], \"characters\": \"\\u21A7\" },\n  \"&mapstoleft;\": { \"codepoints\": [8612], \"characters\": \"\\u21A4\" },\n  \"&mapstoup;\": { \"codepoints\": [8613], \"characters\": \"\\u21A5\" },\n  \"&marker;\": { \"codepoints\": [9646], \"characters\": \"\\u25AE\" },\n  \"&mcomma;\": { \"codepoints\": [10793], \"characters\": \"\\u2A29\" },\n  \"&mcy;\": { \"codepoints\": [1084], \"characters\": \"\\u043C\" },\n  \"&mdash;\": { \"codepoints\": [8212], \"characters\": \"\\u2014\" },\n  \"&measuredangle;\": { \"codepoints\": [8737], \"characters\": \"\\u2221\" },\n  \"&mfr;\": { \"codepoints\": [120106], \"characters\": \"\\uD835\\uDD2A\" },\n  \"&mho;\": { \"codepoints\": [8487], \"characters\": \"\\u2127\" },\n  \"&micro\": { \"codepoints\": [181], \"characters\": \"\\u00B5\" },\n  \"&micro;\": { \"codepoints\": [181], \"characters\": \"\\u00B5\" },\n  \"&mid;\": { \"codepoints\": [8739], \"characters\": \"\\u2223\" },\n  \"&midast;\": { \"codepoints\": [42], \"characters\": \"\\u002A\" },\n  \"&midcir;\": { \"codepoints\": [10992], \"characters\": \"\\u2AF0\" },\n  \"&middot\": { \"codepoints\": [183], \"characters\": \"\\u00B7\" },\n  \"&middot;\": { \"codepoints\": [183], \"characters\": \"\\u00B7\" },\n  \"&minus;\": { \"codepoints\": [8722], \"characters\": \"\\u2212\" },\n  \"&minusb;\": { \"codepoints\": [8863], \"characters\": \"\\u229F\" },\n  \"&minusd;\": { \"codepoints\": [8760], \"characters\": \"\\u2238\" },\n  \"&minusdu;\": { \"codepoints\": [10794], \"characters\": \"\\u2A2A\" },\n  \"&mlcp;\": { \"codepoints\": [10971], \"characters\": \"\\u2ADB\" },\n  \"&mldr;\": { \"codepoints\": [8230], \"characters\": \"\\u2026\" },\n  \"&mnplus;\": { \"codepoints\": [8723], \"characters\": \"\\u2213\" },\n  \"&models;\": { \"codepoints\": [8871], \"characters\": \"\\u22A7\" },\n  \"&mopf;\": { \"codepoints\": [120158], \"characters\": \"\\uD835\\uDD5E\" },\n  \"&mp;\": { \"codepoints\": [8723], \"characters\": \"\\u2213\" },\n  \"&mscr;\": { \"codepoints\": [120002], \"characters\": \"\\uD835\\uDCC2\" },\n  \"&mstpos;\": { \"codepoints\": [8766], \"characters\": \"\\u223E\" },\n  \"&mu;\": { \"codepoints\": [956], \"characters\": \"\\u03BC\" },\n  \"&multimap;\": { \"codepoints\": [8888], \"characters\": \"\\u22B8\" },\n  \"&mumap;\": { \"codepoints\": [8888], \"characters\": \"\\u22B8\" },\n  \"&nGg;\": { \"codepoints\": [8921, 824], \"characters\": \"\\u22D9\\u0338\" },\n  \"&nGt;\": { \"codepoints\": [8811, 8402], \"characters\": \"\\u226B\\u20D2\" },\n  \"&nGtv;\": { \"codepoints\": [8811, 824], \"characters\": \"\\u226B\\u0338\" },\n  \"&nLeftarrow;\": { \"codepoints\": [8653], \"characters\": \"\\u21CD\" },\n  \"&nLeftrightarrow;\": { \"codepoints\": [8654], \"characters\": \"\\u21CE\" },\n  \"&nLl;\": { \"codepoints\": [8920, 824], \"characters\": \"\\u22D8\\u0338\" },\n  \"&nLt;\": { \"codepoints\": [8810, 8402], \"characters\": \"\\u226A\\u20D2\" },\n  \"&nLtv;\": { \"codepoints\": [8810, 824], \"characters\": \"\\u226A\\u0338\" },\n  \"&nRightarrow;\": { \"codepoints\": [8655], \"characters\": \"\\u21CF\" },\n  \"&nVDash;\": { \"codepoints\": [8879], \"characters\": \"\\u22AF\" },\n  \"&nVdash;\": { \"codepoints\": [8878], \"characters\": \"\\u22AE\" },\n  \"&nabla;\": { \"codepoints\": [8711], \"characters\": \"\\u2207\" },\n  \"&nacute;\": { \"codepoints\": [324], \"characters\": \"\\u0144\" },\n  \"&nang;\": { \"codepoints\": [8736, 8402], \"characters\": \"\\u2220\\u20D2\" },\n  \"&nap;\": { \"codepoints\": [8777], \"characters\": \"\\u2249\" },\n  \"&napE;\": { \"codepoints\": [10864, 824], \"characters\": \"\\u2A70\\u0338\" },\n  \"&napid;\": { \"codepoints\": [8779, 824], \"characters\": \"\\u224B\\u0338\" },\n  \"&napos;\": { \"codepoints\": [329], \"characters\": \"\\u0149\" },\n  \"&napprox;\": { \"codepoints\": [8777], \"characters\": \"\\u2249\" },\n  \"&natur;\": { \"codepoints\": [9838], \"characters\": \"\\u266E\" },\n  \"&natural;\": { \"codepoints\": [9838], \"characters\": \"\\u266E\" },\n  \"&naturals;\": { \"codepoints\": [8469], \"characters\": \"\\u2115\" },\n  \"&nbsp\": { \"codepoints\": [160], \"characters\": \"\\u00A0\" },\n  \"&nbsp;\": { \"codepoints\": [160], \"characters\": \"\\u00A0\" },\n  \"&nbump;\": { \"codepoints\": [8782, 824], \"characters\": \"\\u224E\\u0338\" },\n  \"&nbumpe;\": { \"codepoints\": [8783, 824], \"characters\": \"\\u224F\\u0338\" },\n  \"&ncap;\": { \"codepoints\": [10819], \"characters\": \"\\u2A43\" },\n  \"&ncaron;\": { \"codepoints\": [328], \"characters\": \"\\u0148\" },\n  \"&ncedil;\": { \"codepoints\": [326], \"characters\": \"\\u0146\" },\n  \"&ncong;\": { \"codepoints\": [8775], \"characters\": \"\\u2247\" },\n  \"&ncongdot;\": { \"codepoints\": [10861, 824], \"characters\": \"\\u2A6D\\u0338\" },\n  \"&ncup;\": { \"codepoints\": [10818], \"characters\": \"\\u2A42\" },\n  \"&ncy;\": { \"codepoints\": [1085], \"characters\": \"\\u043D\" },\n  \"&ndash;\": { \"codepoints\": [8211], \"characters\": \"\\u2013\" },\n  \"&ne;\": { \"codepoints\": [8800], \"characters\": \"\\u2260\" },\n  \"&neArr;\": { \"codepoints\": [8663], \"characters\": \"\\u21D7\" },\n  \"&nearhk;\": { \"codepoints\": [10532], \"characters\": \"\\u2924\" },\n  \"&nearr;\": { \"codepoints\": [8599], \"characters\": \"\\u2197\" },\n  \"&nearrow;\": { \"codepoints\": [8599], \"characters\": \"\\u2197\" },\n  \"&nedot;\": { \"codepoints\": [8784, 824], \"characters\": \"\\u2250\\u0338\" },\n  \"&nequiv;\": { \"codepoints\": [8802], \"characters\": \"\\u2262\" },\n  \"&nesear;\": { \"codepoints\": [10536], \"characters\": \"\\u2928\" },\n  \"&nesim;\": { \"codepoints\": [8770, 824], \"characters\": \"\\u2242\\u0338\" },\n  \"&nexist;\": { \"codepoints\": [8708], \"characters\": \"\\u2204\" },\n  \"&nexists;\": { \"codepoints\": [8708], \"characters\": \"\\u2204\" },\n  \"&nfr;\": { \"codepoints\": [120107], \"characters\": \"\\uD835\\uDD2B\" },\n  \"&ngE;\": { \"codepoints\": [8807, 824], \"characters\": \"\\u2267\\u0338\" },\n  \"&nge;\": { \"codepoints\": [8817], \"characters\": \"\\u2271\" },\n  \"&ngeq;\": { \"codepoints\": [8817], \"characters\": \"\\u2271\" },\n  \"&ngeqq;\": { \"codepoints\": [8807, 824], \"characters\": \"\\u2267\\u0338\" },\n  \"&ngeqslant;\": { \"codepoints\": [10878, 824], \"characters\": \"\\u2A7E\\u0338\" },\n  \"&nges;\": { \"codepoints\": [10878, 824], \"characters\": \"\\u2A7E\\u0338\" },\n  \"&ngsim;\": { \"codepoints\": [8821], \"characters\": \"\\u2275\" },\n  \"&ngt;\": { \"codepoints\": [8815], \"characters\": \"\\u226F\" },\n  \"&ngtr;\": { \"codepoints\": [8815], \"characters\": \"\\u226F\" },\n  \"&nhArr;\": { \"codepoints\": [8654], \"characters\": \"\\u21CE\" },\n  \"&nharr;\": { \"codepoints\": [8622], \"characters\": \"\\u21AE\" },\n  \"&nhpar;\": { \"codepoints\": [10994], \"characters\": \"\\u2AF2\" },\n  \"&ni;\": { \"codepoints\": [8715], \"characters\": \"\\u220B\" },\n  \"&nis;\": { \"codepoints\": [8956], \"characters\": \"\\u22FC\" },\n  \"&nisd;\": { \"codepoints\": [8954], \"characters\": \"\\u22FA\" },\n  \"&niv;\": { \"codepoints\": [8715], \"characters\": \"\\u220B\" },\n  \"&njcy;\": { \"codepoints\": [1114], \"characters\": \"\\u045A\" },\n  \"&nlArr;\": { \"codepoints\": [8653], \"characters\": \"\\u21CD\" },\n  \"&nlE;\": { \"codepoints\": [8806, 824], \"characters\": \"\\u2266\\u0338\" },\n  \"&nlarr;\": { \"codepoints\": [8602], \"characters\": \"\\u219A\" },\n  \"&nldr;\": { \"codepoints\": [8229], \"characters\": \"\\u2025\" },\n  \"&nle;\": { \"codepoints\": [8816], \"characters\": \"\\u2270\" },\n  \"&nleftarrow;\": { \"codepoints\": [8602], \"characters\": \"\\u219A\" },\n  \"&nleftrightarrow;\": { \"codepoints\": [8622], \"characters\": \"\\u21AE\" },\n  \"&nleq;\": { \"codepoints\": [8816], \"characters\": \"\\u2270\" },\n  \"&nleqq;\": { \"codepoints\": [8806, 824], \"characters\": \"\\u2266\\u0338\" },\n  \"&nleqslant;\": { \"codepoints\": [10877, 824], \"characters\": \"\\u2A7D\\u0338\" },\n  \"&nles;\": { \"codepoints\": [10877, 824], \"characters\": \"\\u2A7D\\u0338\" },\n  \"&nless;\": { \"codepoints\": [8814], \"characters\": \"\\u226E\" },\n  \"&nlsim;\": { \"codepoints\": [8820], \"characters\": \"\\u2274\" },\n  \"&nlt;\": { \"codepoints\": [8814], \"characters\": \"\\u226E\" },\n  \"&nltri;\": { \"codepoints\": [8938], \"characters\": \"\\u22EA\" },\n  \"&nltrie;\": { \"codepoints\": [8940], \"characters\": \"\\u22EC\" },\n  \"&nmid;\": { \"codepoints\": [8740], \"characters\": \"\\u2224\" },\n  \"&nopf;\": { \"codepoints\": [120159], \"characters\": \"\\uD835\\uDD5F\" },\n  \"&not\": { \"codepoints\": [172], \"characters\": \"\\u00AC\" },\n  \"&not;\": { \"codepoints\": [172], \"characters\": \"\\u00AC\" },\n  \"&notin;\": { \"codepoints\": [8713], \"characters\": \"\\u2209\" },\n  \"&notinE;\": { \"codepoints\": [8953, 824], \"characters\": \"\\u22F9\\u0338\" },\n  \"&notindot;\": { \"codepoints\": [8949, 824], \"characters\": \"\\u22F5\\u0338\" },\n  \"&notinva;\": { \"codepoints\": [8713], \"characters\": \"\\u2209\" },\n  \"&notinvb;\": { \"codepoints\": [8951], \"characters\": \"\\u22F7\" },\n  \"&notinvc;\": { \"codepoints\": [8950], \"characters\": \"\\u22F6\" },\n  \"&notni;\": { \"codepoints\": [8716], \"characters\": \"\\u220C\" },\n  \"&notniva;\": { \"codepoints\": [8716], \"characters\": \"\\u220C\" },\n  \"&notnivb;\": { \"codepoints\": [8958], \"characters\": \"\\u22FE\" },\n  \"&notnivc;\": { \"codepoints\": [8957], \"characters\": \"\\u22FD\" },\n  \"&npar;\": { \"codepoints\": [8742], \"characters\": \"\\u2226\" },\n  \"&nparallel;\": { \"codepoints\": [8742], \"characters\": \"\\u2226\" },\n  \"&nparsl;\": { \"codepoints\": [11005, 8421], \"characters\": \"\\u2AFD\\u20E5\" },\n  \"&npart;\": { \"codepoints\": [8706, 824], \"characters\": \"\\u2202\\u0338\" },\n  \"&npolint;\": { \"codepoints\": [10772], \"characters\": \"\\u2A14\" },\n  \"&npr;\": { \"codepoints\": [8832], \"characters\": \"\\u2280\" },\n  \"&nprcue;\": { \"codepoints\": [8928], \"characters\": \"\\u22E0\" },\n  \"&npre;\": { \"codepoints\": [10927, 824], \"characters\": \"\\u2AAF\\u0338\" },\n  \"&nprec;\": { \"codepoints\": [8832], \"characters\": \"\\u2280\" },\n  \"&npreceq;\": { \"codepoints\": [10927, 824], \"characters\": \"\\u2AAF\\u0338\" },\n  \"&nrArr;\": { \"codepoints\": [8655], \"characters\": \"\\u21CF\" },\n  \"&nrarr;\": { \"codepoints\": [8603], \"characters\": \"\\u219B\" },\n  \"&nrarrc;\": { \"codepoints\": [10547, 824], \"characters\": \"\\u2933\\u0338\" },\n  \"&nrarrw;\": { \"codepoints\": [8605, 824], \"characters\": \"\\u219D\\u0338\" },\n  \"&nrightarrow;\": { \"codepoints\": [8603], \"characters\": \"\\u219B\" },\n  \"&nrtri;\": { \"codepoints\": [8939], \"characters\": \"\\u22EB\" },\n  \"&nrtrie;\": { \"codepoints\": [8941], \"characters\": \"\\u22ED\" },\n  \"&nsc;\": { \"codepoints\": [8833], \"characters\": \"\\u2281\" },\n  \"&nsccue;\": { \"codepoints\": [8929], \"characters\": \"\\u22E1\" },\n  \"&nsce;\": { \"codepoints\": [10928, 824], \"characters\": \"\\u2AB0\\u0338\" },\n  \"&nscr;\": { \"codepoints\": [120003], \"characters\": \"\\uD835\\uDCC3\" },\n  \"&nshortmid;\": { \"codepoints\": [8740], \"characters\": \"\\u2224\" },\n  \"&nshortparallel;\": { \"codepoints\": [8742], \"characters\": \"\\u2226\" },\n  \"&nsim;\": { \"codepoints\": [8769], \"characters\": \"\\u2241\" },\n  \"&nsime;\": { \"codepoints\": [8772], \"characters\": \"\\u2244\" },\n  \"&nsimeq;\": { \"codepoints\": [8772], \"characters\": \"\\u2244\" },\n  \"&nsmid;\": { \"codepoints\": [8740], \"characters\": \"\\u2224\" },\n  \"&nspar;\": { \"codepoints\": [8742], \"characters\": \"\\u2226\" },\n  \"&nsqsube;\": { \"codepoints\": [8930], \"characters\": \"\\u22E2\" },\n  \"&nsqsupe;\": { \"codepoints\": [8931], \"characters\": \"\\u22E3\" },\n  \"&nsub;\": { \"codepoints\": [8836], \"characters\": \"\\u2284\" },\n  \"&nsubE;\": { \"codepoints\": [10949, 824], \"characters\": \"\\u2AC5\\u0338\" },\n  \"&nsube;\": { \"codepoints\": [8840], \"characters\": \"\\u2288\" },\n  \"&nsubset;\": { \"codepoints\": [8834, 8402], \"characters\": \"\\u2282\\u20D2\" },\n  \"&nsubseteq;\": { \"codepoints\": [8840], \"characters\": \"\\u2288\" },\n  \"&nsubseteqq;\": { \"codepoints\": [10949, 824], \"characters\": \"\\u2AC5\\u0338\" },\n  \"&nsucc;\": { \"codepoints\": [8833], \"characters\": \"\\u2281\" },\n  \"&nsucceq;\": { \"codepoints\": [10928, 824], \"characters\": \"\\u2AB0\\u0338\" },\n  \"&nsup;\": { \"codepoints\": [8837], \"characters\": \"\\u2285\" },\n  \"&nsupE;\": { \"codepoints\": [10950, 824], \"characters\": \"\\u2AC6\\u0338\" },\n  \"&nsupe;\": { \"codepoints\": [8841], \"characters\": \"\\u2289\" },\n  \"&nsupset;\": { \"codepoints\": [8835, 8402], \"characters\": \"\\u2283\\u20D2\" },\n  \"&nsupseteq;\": { \"codepoints\": [8841], \"characters\": \"\\u2289\" },\n  \"&nsupseteqq;\": { \"codepoints\": [10950, 824], \"characters\": \"\\u2AC6\\u0338\" },\n  \"&ntgl;\": { \"codepoints\": [8825], \"characters\": \"\\u2279\" },\n  \"&ntilde\": { \"codepoints\": [241], \"characters\": \"\\u00F1\" },\n  \"&ntilde;\": { \"codepoints\": [241], \"characters\": \"\\u00F1\" },\n  \"&ntlg;\": { \"codepoints\": [8824], \"characters\": \"\\u2278\" },\n  \"&ntriangleleft;\": { \"codepoints\": [8938], \"characters\": \"\\u22EA\" },\n  \"&ntrianglelefteq;\": { \"codepoints\": [8940], \"characters\": \"\\u22EC\" },\n  \"&ntriangleright;\": { \"codepoints\": [8939], \"characters\": \"\\u22EB\" },\n  \"&ntrianglerighteq;\": { \"codepoints\": [8941], \"characters\": \"\\u22ED\" },\n  \"&nu;\": { \"codepoints\": [957], \"characters\": \"\\u03BD\" },\n  \"&num;\": { \"codepoints\": [35], \"characters\": \"\\u0023\" },\n  \"&numero;\": { \"codepoints\": [8470], \"characters\": \"\\u2116\" },\n  \"&numsp;\": { \"codepoints\": [8199], \"characters\": \"\\u2007\" },\n  \"&nvDash;\": { \"codepoints\": [8877], \"characters\": \"\\u22AD\" },\n  \"&nvHarr;\": { \"codepoints\": [10500], \"characters\": \"\\u2904\" },\n  \"&nvap;\": { \"codepoints\": [8781, 8402], \"characters\": \"\\u224D\\u20D2\" },\n  \"&nvdash;\": { \"codepoints\": [8876], \"characters\": \"\\u22AC\" },\n  \"&nvge;\": { \"codepoints\": [8805, 8402], \"characters\": \"\\u2265\\u20D2\" },\n  \"&nvgt;\": { \"codepoints\": [62, 8402], \"characters\": \"\\u003E\\u20D2\" },\n  \"&nvinfin;\": { \"codepoints\": [10718], \"characters\": \"\\u29DE\" },\n  \"&nvlArr;\": { \"codepoints\": [10498], \"characters\": \"\\u2902\" },\n  \"&nvle;\": { \"codepoints\": [8804, 8402], \"characters\": \"\\u2264\\u20D2\" },\n  \"&nvlt;\": { \"codepoints\": [60, 8402], \"characters\": \"\\u003C\\u20D2\" },\n  \"&nvltrie;\": { \"codepoints\": [8884, 8402], \"characters\": \"\\u22B4\\u20D2\" },\n  \"&nvrArr;\": { \"codepoints\": [10499], \"characters\": \"\\u2903\" },\n  \"&nvrtrie;\": { \"codepoints\": [8885, 8402], \"characters\": \"\\u22B5\\u20D2\" },\n  \"&nvsim;\": { \"codepoints\": [8764, 8402], \"characters\": \"\\u223C\\u20D2\" },\n  \"&nwArr;\": { \"codepoints\": [8662], \"characters\": \"\\u21D6\" },\n  \"&nwarhk;\": { \"codepoints\": [10531], \"characters\": \"\\u2923\" },\n  \"&nwarr;\": { \"codepoints\": [8598], \"characters\": \"\\u2196\" },\n  \"&nwarrow;\": { \"codepoints\": [8598], \"characters\": \"\\u2196\" },\n  \"&nwnear;\": { \"codepoints\": [10535], \"characters\": \"\\u2927\" },\n  \"&oS;\": { \"codepoints\": [9416], \"characters\": \"\\u24C8\" },\n  \"&oacute\": { \"codepoints\": [243], \"characters\": \"\\u00F3\" },\n  \"&oacute;\": { \"codepoints\": [243], \"characters\": \"\\u00F3\" },\n  \"&oast;\": { \"codepoints\": [8859], \"characters\": \"\\u229B\" },\n  \"&ocir;\": { \"codepoints\": [8858], \"characters\": \"\\u229A\" },\n  \"&ocirc\": { \"codepoints\": [244], \"characters\": \"\\u00F4\" },\n  \"&ocirc;\": { \"codepoints\": [244], \"characters\": \"\\u00F4\" },\n  \"&ocy;\": { \"codepoints\": [1086], \"characters\": \"\\u043E\" },\n  \"&odash;\": { \"codepoints\": [8861], \"characters\": \"\\u229D\" },\n  \"&odblac;\": { \"codepoints\": [337], \"characters\": \"\\u0151\" },\n  \"&odiv;\": { \"codepoints\": [10808], \"characters\": \"\\u2A38\" },\n  \"&odot;\": { \"codepoints\": [8857], \"characters\": \"\\u2299\" },\n  \"&odsold;\": { \"codepoints\": [10684], \"characters\": \"\\u29BC\" },\n  \"&oelig;\": { \"codepoints\": [339], \"characters\": \"\\u0153\" },\n  \"&ofcir;\": { \"codepoints\": [10687], \"characters\": \"\\u29BF\" },\n  \"&ofr;\": { \"codepoints\": [120108], \"characters\": \"\\uD835\\uDD2C\" },\n  \"&ogon;\": { \"codepoints\": [731], \"characters\": \"\\u02DB\" },\n  \"&ograve\": { \"codepoints\": [242], \"characters\": \"\\u00F2\" },\n  \"&ograve;\": { \"codepoints\": [242], \"characters\": \"\\u00F2\" },\n  \"&ogt;\": { \"codepoints\": [10689], \"characters\": \"\\u29C1\" },\n  \"&ohbar;\": { \"codepoints\": [10677], \"characters\": \"\\u29B5\" },\n  \"&ohm;\": { \"codepoints\": [937], \"characters\": \"\\u03A9\" },\n  \"&oint;\": { \"codepoints\": [8750], \"characters\": \"\\u222E\" },\n  \"&olarr;\": { \"codepoints\": [8634], \"characters\": \"\\u21BA\" },\n  \"&olcir;\": { \"codepoints\": [10686], \"characters\": \"\\u29BE\" },\n  \"&olcross;\": { \"codepoints\": [10683], \"characters\": \"\\u29BB\" },\n  \"&oline;\": { \"codepoints\": [8254], \"characters\": \"\\u203E\" },\n  \"&olt;\": { \"codepoints\": [10688], \"characters\": \"\\u29C0\" },\n  \"&omacr;\": { \"codepoints\": [333], \"characters\": \"\\u014D\" },\n  \"&omega;\": { \"codepoints\": [969], \"characters\": \"\\u03C9\" },\n  \"&omicron;\": { \"codepoints\": [959], \"characters\": \"\\u03BF\" },\n  \"&omid;\": { \"codepoints\": [10678], \"characters\": \"\\u29B6\" },\n  \"&ominus;\": { \"codepoints\": [8854], \"characters\": \"\\u2296\" },\n  \"&oopf;\": { \"codepoints\": [120160], \"characters\": \"\\uD835\\uDD60\" },\n  \"&opar;\": { \"codepoints\": [10679], \"characters\": \"\\u29B7\" },\n  \"&operp;\": { \"codepoints\": [10681], \"characters\": \"\\u29B9\" },\n  \"&oplus;\": { \"codepoints\": [8853], \"characters\": \"\\u2295\" },\n  \"&or;\": { \"codepoints\": [8744], \"characters\": \"\\u2228\" },\n  \"&orarr;\": { \"codepoints\": [8635], \"characters\": \"\\u21BB\" },\n  \"&ord;\": { \"codepoints\": [10845], \"characters\": \"\\u2A5D\" },\n  \"&order;\": { \"codepoints\": [8500], \"characters\": \"\\u2134\" },\n  \"&orderof;\": { \"codepoints\": [8500], \"characters\": \"\\u2134\" },\n  \"&ordf\": { \"codepoints\": [170], \"characters\": \"\\u00AA\" },\n  \"&ordf;\": { \"codepoints\": [170], \"characters\": \"\\u00AA\" },\n  \"&ordm\": { \"codepoints\": [186], \"characters\": \"\\u00BA\" },\n  \"&ordm;\": { \"codepoints\": [186], \"characters\": \"\\u00BA\" },\n  \"&origof;\": { \"codepoints\": [8886], \"characters\": \"\\u22B6\" },\n  \"&oror;\": { \"codepoints\": [10838], \"characters\": \"\\u2A56\" },\n  \"&orslope;\": { \"codepoints\": [10839], \"characters\": \"\\u2A57\" },\n  \"&orv;\": { \"codepoints\": [10843], \"characters\": \"\\u2A5B\" },\n  \"&oscr;\": { \"codepoints\": [8500], \"characters\": \"\\u2134\" },\n  \"&oslash\": { \"codepoints\": [248], \"characters\": \"\\u00F8\" },\n  \"&oslash;\": { \"codepoints\": [248], \"characters\": \"\\u00F8\" },\n  \"&osol;\": { \"codepoints\": [8856], \"characters\": \"\\u2298\" },\n  \"&otilde\": { \"codepoints\": [245], \"characters\": \"\\u00F5\" },\n  \"&otilde;\": { \"codepoints\": [245], \"characters\": \"\\u00F5\" },\n  \"&otimes;\": { \"codepoints\": [8855], \"characters\": \"\\u2297\" },\n  \"&otimesas;\": { \"codepoints\": [10806], \"characters\": \"\\u2A36\" },\n  \"&ouml\": { \"codepoints\": [246], \"characters\": \"\\u00F6\" },\n  \"&ouml;\": { \"codepoints\": [246], \"characters\": \"\\u00F6\" },\n  \"&ovbar;\": { \"codepoints\": [9021], \"characters\": \"\\u233D\" },\n  \"&par;\": { \"codepoints\": [8741], \"characters\": \"\\u2225\" },\n  \"&para\": { \"codepoints\": [182], \"characters\": \"\\u00B6\" },\n  \"&para;\": { \"codepoints\": [182], \"characters\": \"\\u00B6\" },\n  \"&parallel;\": { \"codepoints\": [8741], \"characters\": \"\\u2225\" },\n  \"&parsim;\": { \"codepoints\": [10995], \"characters\": \"\\u2AF3\" },\n  \"&parsl;\": { \"codepoints\": [11005], \"characters\": \"\\u2AFD\" },\n  \"&part;\": { \"codepoints\": [8706], \"characters\": \"\\u2202\" },\n  \"&pcy;\": { \"codepoints\": [1087], \"characters\": \"\\u043F\" },\n  \"&percnt;\": { \"codepoints\": [37], \"characters\": \"\\u0025\" },\n  \"&period;\": { \"codepoints\": [46], \"characters\": \"\\u002E\" },\n  \"&permil;\": { \"codepoints\": [8240], \"characters\": \"\\u2030\" },\n  \"&perp;\": { \"codepoints\": [8869], \"characters\": \"\\u22A5\" },\n  \"&pertenk;\": { \"codepoints\": [8241], \"characters\": \"\\u2031\" },\n  \"&pfr;\": { \"codepoints\": [120109], \"characters\": \"\\uD835\\uDD2D\" },\n  \"&phi;\": { \"codepoints\": [966], \"characters\": \"\\u03C6\" },\n  \"&phiv;\": { \"codepoints\": [981], \"characters\": \"\\u03D5\" },\n  \"&phmmat;\": { \"codepoints\": [8499], \"characters\": \"\\u2133\" },\n  \"&phone;\": { \"codepoints\": [9742], \"characters\": \"\\u260E\" },\n  \"&pi;\": { \"codepoints\": [960], \"characters\": \"\\u03C0\" },\n  \"&pitchfork;\": { \"codepoints\": [8916], \"characters\": \"\\u22D4\" },\n  \"&piv;\": { \"codepoints\": [982], \"characters\": \"\\u03D6\" },\n  \"&planck;\": { \"codepoints\": [8463], \"characters\": \"\\u210F\" },\n  \"&planckh;\": { \"codepoints\": [8462], \"characters\": \"\\u210E\" },\n  \"&plankv;\": { \"codepoints\": [8463], \"characters\": \"\\u210F\" },\n  \"&plus;\": { \"codepoints\": [43], \"characters\": \"\\u002B\" },\n  \"&plusacir;\": { \"codepoints\": [10787], \"characters\": \"\\u2A23\" },\n  \"&plusb;\": { \"codepoints\": [8862], \"characters\": \"\\u229E\" },\n  \"&pluscir;\": { \"codepoints\": [10786], \"characters\": \"\\u2A22\" },\n  \"&plusdo;\": { \"codepoints\": [8724], \"characters\": \"\\u2214\" },\n  \"&plusdu;\": { \"codepoints\": [10789], \"characters\": \"\\u2A25\" },\n  \"&pluse;\": { \"codepoints\": [10866], \"characters\": \"\\u2A72\" },\n  \"&plusmn\": { \"codepoints\": [177], \"characters\": \"\\u00B1\" },\n  \"&plusmn;\": { \"codepoints\": [177], \"characters\": \"\\u00B1\" },\n  \"&plussim;\": { \"codepoints\": [10790], \"characters\": \"\\u2A26\" },\n  \"&plustwo;\": { \"codepoints\": [10791], \"characters\": \"\\u2A27\" },\n  \"&pm;\": { \"codepoints\": [177], \"characters\": \"\\u00B1\" },\n  \"&pointint;\": { \"codepoints\": [10773], \"characters\": \"\\u2A15\" },\n  \"&popf;\": { \"codepoints\": [120161], \"characters\": \"\\uD835\\uDD61\" },\n  \"&pound\": { \"codepoints\": [163], \"characters\": \"\\u00A3\" },\n  \"&pound;\": { \"codepoints\": [163], \"characters\": \"\\u00A3\" },\n  \"&pr;\": { \"codepoints\": [8826], \"characters\": \"\\u227A\" },\n  \"&prE;\": { \"codepoints\": [10931], \"characters\": \"\\u2AB3\" },\n  \"&prap;\": { \"codepoints\": [10935], \"characters\": \"\\u2AB7\" },\n  \"&prcue;\": { \"codepoints\": [8828], \"characters\": \"\\u227C\" },\n  \"&pre;\": { \"codepoints\": [10927], \"characters\": \"\\u2AAF\" },\n  \"&prec;\": { \"codepoints\": [8826], \"characters\": \"\\u227A\" },\n  \"&precapprox;\": { \"codepoints\": [10935], \"characters\": \"\\u2AB7\" },\n  \"&preccurlyeq;\": { \"codepoints\": [8828], \"characters\": \"\\u227C\" },\n  \"&preceq;\": { \"codepoints\": [10927], \"characters\": \"\\u2AAF\" },\n  \"&precnapprox;\": { \"codepoints\": [10937], \"characters\": \"\\u2AB9\" },\n  \"&precneqq;\": { \"codepoints\": [10933], \"characters\": \"\\u2AB5\" },\n  \"&precnsim;\": { \"codepoints\": [8936], \"characters\": \"\\u22E8\" },\n  \"&precsim;\": { \"codepoints\": [8830], \"characters\": \"\\u227E\" },\n  \"&prime;\": { \"codepoints\": [8242], \"characters\": \"\\u2032\" },\n  \"&primes;\": { \"codepoints\": [8473], \"characters\": \"\\u2119\" },\n  \"&prnE;\": { \"codepoints\": [10933], \"characters\": \"\\u2AB5\" },\n  \"&prnap;\": { \"codepoints\": [10937], \"characters\": \"\\u2AB9\" },\n  \"&prnsim;\": { \"codepoints\": [8936], \"characters\": \"\\u22E8\" },\n  \"&prod;\": { \"codepoints\": [8719], \"characters\": \"\\u220F\" },\n  \"&profalar;\": { \"codepoints\": [9006], \"characters\": \"\\u232E\" },\n  \"&profline;\": { \"codepoints\": [8978], \"characters\": \"\\u2312\" },\n  \"&profsurf;\": { \"codepoints\": [8979], \"characters\": \"\\u2313\" },\n  \"&prop;\": { \"codepoints\": [8733], \"characters\": \"\\u221D\" },\n  \"&propto;\": { \"codepoints\": [8733], \"characters\": \"\\u221D\" },\n  \"&prsim;\": { \"codepoints\": [8830], \"characters\": \"\\u227E\" },\n  \"&prurel;\": { \"codepoints\": [8880], \"characters\": \"\\u22B0\" },\n  \"&pscr;\": { \"codepoints\": [120005], \"characters\": \"\\uD835\\uDCC5\" },\n  \"&psi;\": { \"codepoints\": [968], \"characters\": \"\\u03C8\" },\n  \"&puncsp;\": { \"codepoints\": [8200], \"characters\": \"\\u2008\" },\n  \"&qfr;\": { \"codepoints\": [120110], \"characters\": \"\\uD835\\uDD2E\" },\n  \"&qint;\": { \"codepoints\": [10764], \"characters\": \"\\u2A0C\" },\n  \"&qopf;\": { \"codepoints\": [120162], \"characters\": \"\\uD835\\uDD62\" },\n  \"&qprime;\": { \"codepoints\": [8279], \"characters\": \"\\u2057\" },\n  \"&qscr;\": { \"codepoints\": [120006], \"characters\": \"\\uD835\\uDCC6\" },\n  \"&quaternions;\": { \"codepoints\": [8461], \"characters\": \"\\u210D\" },\n  \"&quatint;\": { \"codepoints\": [10774], \"characters\": \"\\u2A16\" },\n  \"&quest;\": { \"codepoints\": [63], \"characters\": \"\\u003F\" },\n  \"&questeq;\": { \"codepoints\": [8799], \"characters\": \"\\u225F\" },\n  \"&quot\": { \"codepoints\": [34], \"characters\": \"\\u0022\" },\n  \"&quot;\": { \"codepoints\": [34], \"characters\": \"\\u0022\" },\n  \"&rAarr;\": { \"codepoints\": [8667], \"characters\": \"\\u21DB\" },\n  \"&rArr;\": { \"codepoints\": [8658], \"characters\": \"\\u21D2\" },\n  \"&rAtail;\": { \"codepoints\": [10524], \"characters\": \"\\u291C\" },\n  \"&rBarr;\": { \"codepoints\": [10511], \"characters\": \"\\u290F\" },\n  \"&rHar;\": { \"codepoints\": [10596], \"characters\": \"\\u2964\" },\n  \"&race;\": { \"codepoints\": [8765, 817], \"characters\": \"\\u223D\\u0331\" },\n  \"&racute;\": { \"codepoints\": [341], \"characters\": \"\\u0155\" },\n  \"&radic;\": { \"codepoints\": [8730], \"characters\": \"\\u221A\" },\n  \"&raemptyv;\": { \"codepoints\": [10675], \"characters\": \"\\u29B3\" },\n  \"&rang;\": { \"codepoints\": [10217], \"characters\": \"\\u27E9\" },\n  \"&rangd;\": { \"codepoints\": [10642], \"characters\": \"\\u2992\" },\n  \"&range;\": { \"codepoints\": [10661], \"characters\": \"\\u29A5\" },\n  \"&rangle;\": { \"codepoints\": [10217], \"characters\": \"\\u27E9\" },\n  \"&raquo\": { \"codepoints\": [187], \"characters\": \"\\u00BB\" },\n  \"&raquo;\": { \"codepoints\": [187], \"characters\": \"\\u00BB\" },\n  \"&rarr;\": { \"codepoints\": [8594], \"characters\": \"\\u2192\" },\n  \"&rarrap;\": { \"codepoints\": [10613], \"characters\": \"\\u2975\" },\n  \"&rarrb;\": { \"codepoints\": [8677], \"characters\": \"\\u21E5\" },\n  \"&rarrbfs;\": { \"codepoints\": [10528], \"characters\": \"\\u2920\" },\n  \"&rarrc;\": { \"codepoints\": [10547], \"characters\": \"\\u2933\" },\n  \"&rarrfs;\": { \"codepoints\": [10526], \"characters\": \"\\u291E\" },\n  \"&rarrhk;\": { \"codepoints\": [8618], \"characters\": \"\\u21AA\" },\n  \"&rarrlp;\": { \"codepoints\": [8620], \"characters\": \"\\u21AC\" },\n  \"&rarrpl;\": { \"codepoints\": [10565], \"characters\": \"\\u2945\" },\n  \"&rarrsim;\": { \"codepoints\": [10612], \"characters\": \"\\u2974\" },\n  \"&rarrtl;\": { \"codepoints\": [8611], \"characters\": \"\\u21A3\" },\n  \"&rarrw;\": { \"codepoints\": [8605], \"characters\": \"\\u219D\" },\n  \"&ratail;\": { \"codepoints\": [10522], \"characters\": \"\\u291A\" },\n  \"&ratio;\": { \"codepoints\": [8758], \"characters\": \"\\u2236\" },\n  \"&rationals;\": { \"codepoints\": [8474], \"characters\": \"\\u211A\" },\n  \"&rbarr;\": { \"codepoints\": [10509], \"characters\": \"\\u290D\" },\n  \"&rbbrk;\": { \"codepoints\": [10099], \"characters\": \"\\u2773\" },\n  \"&rbrace;\": { \"codepoints\": [125], \"characters\": \"\\u007D\" },\n  \"&rbrack;\": { \"codepoints\": [93], \"characters\": \"\\u005D\" },\n  \"&rbrke;\": { \"codepoints\": [10636], \"characters\": \"\\u298C\" },\n  \"&rbrksld;\": { \"codepoints\": [10638], \"characters\": \"\\u298E\" },\n  \"&rbrkslu;\": { \"codepoints\": [10640], \"characters\": \"\\u2990\" },\n  \"&rcaron;\": { \"codepoints\": [345], \"characters\": \"\\u0159\" },\n  \"&rcedil;\": { \"codepoints\": [343], \"characters\": \"\\u0157\" },\n  \"&rceil;\": { \"codepoints\": [8969], \"characters\": \"\\u2309\" },\n  \"&rcub;\": { \"codepoints\": [125], \"characters\": \"\\u007D\" },\n  \"&rcy;\": { \"codepoints\": [1088], \"characters\": \"\\u0440\" },\n  \"&rdca;\": { \"codepoints\": [10551], \"characters\": \"\\u2937\" },\n  \"&rdldhar;\": { \"codepoints\": [10601], \"characters\": \"\\u2969\" },\n  \"&rdquo;\": { \"codepoints\": [8221], \"characters\": \"\\u201D\" },\n  \"&rdquor;\": { \"codepoints\": [8221], \"characters\": \"\\u201D\" },\n  \"&rdsh;\": { \"codepoints\": [8627], \"characters\": \"\\u21B3\" },\n  \"&real;\": { \"codepoints\": [8476], \"characters\": \"\\u211C\" },\n  \"&realine;\": { \"codepoints\": [8475], \"characters\": \"\\u211B\" },\n  \"&realpart;\": { \"codepoints\": [8476], \"characters\": \"\\u211C\" },\n  \"&reals;\": { \"codepoints\": [8477], \"characters\": \"\\u211D\" },\n  \"&rect;\": { \"codepoints\": [9645], \"characters\": \"\\u25AD\" },\n  \"&reg\": { \"codepoints\": [174], \"characters\": \"\\u00AE\" },\n  \"&reg;\": { \"codepoints\": [174], \"characters\": \"\\u00AE\" },\n  \"&rfisht;\": { \"codepoints\": [10621], \"characters\": \"\\u297D\" },\n  \"&rfloor;\": { \"codepoints\": [8971], \"characters\": \"\\u230B\" },\n  \"&rfr;\": { \"codepoints\": [120111], \"characters\": \"\\uD835\\uDD2F\" },\n  \"&rhard;\": { \"codepoints\": [8641], \"characters\": \"\\u21C1\" },\n  \"&rharu;\": { \"codepoints\": [8640], \"characters\": \"\\u21C0\" },\n  \"&rharul;\": { \"codepoints\": [10604], \"characters\": \"\\u296C\" },\n  \"&rho;\": { \"codepoints\": [961], \"characters\": \"\\u03C1\" },\n  \"&rhov;\": { \"codepoints\": [1009], \"characters\": \"\\u03F1\" },\n  \"&rightarrow;\": { \"codepoints\": [8594], \"characters\": \"\\u2192\" },\n  \"&rightarrowtail;\": { \"codepoints\": [8611], \"characters\": \"\\u21A3\" },\n  \"&rightharpoondown;\": { \"codepoints\": [8641], \"characters\": \"\\u21C1\" },\n  \"&rightharpoonup;\": { \"codepoints\": [8640], \"characters\": \"\\u21C0\" },\n  \"&rightleftarrows;\": { \"codepoints\": [8644], \"characters\": \"\\u21C4\" },\n  \"&rightleftharpoons;\": { \"codepoints\": [8652], \"characters\": \"\\u21CC\" },\n  \"&rightrightarrows;\": { \"codepoints\": [8649], \"characters\": \"\\u21C9\" },\n  \"&rightsquigarrow;\": { \"codepoints\": [8605], \"characters\": \"\\u219D\" },\n  \"&rightthreetimes;\": { \"codepoints\": [8908], \"characters\": \"\\u22CC\" },\n  \"&ring;\": { \"codepoints\": [730], \"characters\": \"\\u02DA\" },\n  \"&risingdotseq;\": { \"codepoints\": [8787], \"characters\": \"\\u2253\" },\n  \"&rlarr;\": { \"codepoints\": [8644], \"characters\": \"\\u21C4\" },\n  \"&rlhar;\": { \"codepoints\": [8652], \"characters\": \"\\u21CC\" },\n  \"&rlm;\": { \"codepoints\": [8207], \"characters\": \"\\u200F\" },\n  \"&rmoust;\": { \"codepoints\": [9137], \"characters\": \"\\u23B1\" },\n  \"&rmoustache;\": { \"codepoints\": [9137], \"characters\": \"\\u23B1\" },\n  \"&rnmid;\": { \"codepoints\": [10990], \"characters\": \"\\u2AEE\" },\n  \"&roang;\": { \"codepoints\": [10221], \"characters\": \"\\u27ED\" },\n  \"&roarr;\": { \"codepoints\": [8702], \"characters\": \"\\u21FE\" },\n  \"&robrk;\": { \"codepoints\": [10215], \"characters\": \"\\u27E7\" },\n  \"&ropar;\": { \"codepoints\": [10630], \"characters\": \"\\u2986\" },\n  \"&ropf;\": { \"codepoints\": [120163], \"characters\": \"\\uD835\\uDD63\" },\n  \"&roplus;\": { \"codepoints\": [10798], \"characters\": \"\\u2A2E\" },\n  \"&rotimes;\": { \"codepoints\": [10805], \"characters\": \"\\u2A35\" },\n  \"&rpar;\": { \"codepoints\": [41], \"characters\": \"\\u0029\" },\n  \"&rpargt;\": { \"codepoints\": [10644], \"characters\": \"\\u2994\" },\n  \"&rppolint;\": { \"codepoints\": [10770], \"characters\": \"\\u2A12\" },\n  \"&rrarr;\": { \"codepoints\": [8649], \"characters\": \"\\u21C9\" },\n  \"&rsaquo;\": { \"codepoints\": [8250], \"characters\": \"\\u203A\" },\n  \"&rscr;\": { \"codepoints\": [120007], \"characters\": \"\\uD835\\uDCC7\" },\n  \"&rsh;\": { \"codepoints\": [8625], \"characters\": \"\\u21B1\" },\n  \"&rsqb;\": { \"codepoints\": [93], \"characters\": \"\\u005D\" },\n  \"&rsquo;\": { \"codepoints\": [8217], \"characters\": \"\\u2019\" },\n  \"&rsquor;\": { \"codepoints\": [8217], \"characters\": \"\\u2019\" },\n  \"&rthree;\": { \"codepoints\": [8908], \"characters\": \"\\u22CC\" },\n  \"&rtimes;\": { \"codepoints\": [8906], \"characters\": \"\\u22CA\" },\n  \"&rtri;\": { \"codepoints\": [9657], \"characters\": \"\\u25B9\" },\n  \"&rtrie;\": { \"codepoints\": [8885], \"characters\": \"\\u22B5\" },\n  \"&rtrif;\": { \"codepoints\": [9656], \"characters\": \"\\u25B8\" },\n  \"&rtriltri;\": { \"codepoints\": [10702], \"characters\": \"\\u29CE\" },\n  \"&ruluhar;\": { \"codepoints\": [10600], \"characters\": \"\\u2968\" },\n  \"&rx;\": { \"codepoints\": [8478], \"characters\": \"\\u211E\" },\n  \"&sacute;\": { \"codepoints\": [347], \"characters\": \"\\u015B\" },\n  \"&sbquo;\": { \"codepoints\": [8218], \"characters\": \"\\u201A\" },\n  \"&sc;\": { \"codepoints\": [8827], \"characters\": \"\\u227B\" },\n  \"&scE;\": { \"codepoints\": [10932], \"characters\": \"\\u2AB4\" },\n  \"&scap;\": { \"codepoints\": [10936], \"characters\": \"\\u2AB8\" },\n  \"&scaron;\": { \"codepoints\": [353], \"characters\": \"\\u0161\" },\n  \"&sccue;\": { \"codepoints\": [8829], \"characters\": \"\\u227D\" },\n  \"&sce;\": { \"codepoints\": [10928], \"characters\": \"\\u2AB0\" },\n  \"&scedil;\": { \"codepoints\": [351], \"characters\": \"\\u015F\" },\n  \"&scirc;\": { \"codepoints\": [349], \"characters\": \"\\u015D\" },\n  \"&scnE;\": { \"codepoints\": [10934], \"characters\": \"\\u2AB6\" },\n  \"&scnap;\": { \"codepoints\": [10938], \"characters\": \"\\u2ABA\" },\n  \"&scnsim;\": { \"codepoints\": [8937], \"characters\": \"\\u22E9\" },\n  \"&scpolint;\": { \"codepoints\": [10771], \"characters\": \"\\u2A13\" },\n  \"&scsim;\": { \"codepoints\": [8831], \"characters\": \"\\u227F\" },\n  \"&scy;\": { \"codepoints\": [1089], \"characters\": \"\\u0441\" },\n  \"&sdot;\": { \"codepoints\": [8901], \"characters\": \"\\u22C5\" },\n  \"&sdotb;\": { \"codepoints\": [8865], \"characters\": \"\\u22A1\" },\n  \"&sdote;\": { \"codepoints\": [10854], \"characters\": \"\\u2A66\" },\n  \"&seArr;\": { \"codepoints\": [8664], \"characters\": \"\\u21D8\" },\n  \"&searhk;\": { \"codepoints\": [10533], \"characters\": \"\\u2925\" },\n  \"&searr;\": { \"codepoints\": [8600], \"characters\": \"\\u2198\" },\n  \"&searrow;\": { \"codepoints\": [8600], \"characters\": \"\\u2198\" },\n  \"&sect\": { \"codepoints\": [167], \"characters\": \"\\u00A7\" },\n  \"&sect;\": { \"codepoints\": [167], \"characters\": \"\\u00A7\" },\n  \"&semi;\": { \"codepoints\": [59], \"characters\": \"\\u003B\" },\n  \"&seswar;\": { \"codepoints\": [10537], \"characters\": \"\\u2929\" },\n  \"&setminus;\": { \"codepoints\": [8726], \"characters\": \"\\u2216\" },\n  \"&setmn;\": { \"codepoints\": [8726], \"characters\": \"\\u2216\" },\n  \"&sext;\": { \"codepoints\": [10038], \"characters\": \"\\u2736\" },\n  \"&sfr;\": { \"codepoints\": [120112], \"characters\": \"\\uD835\\uDD30\" },\n  \"&sfrown;\": { \"codepoints\": [8994], \"characters\": \"\\u2322\" },\n  \"&sharp;\": { \"codepoints\": [9839], \"characters\": \"\\u266F\" },\n  \"&shchcy;\": { \"codepoints\": [1097], \"characters\": \"\\u0449\" },\n  \"&shcy;\": { \"codepoints\": [1096], \"characters\": \"\\u0448\" },\n  \"&shortmid;\": { \"codepoints\": [8739], \"characters\": \"\\u2223\" },\n  \"&shortparallel;\": { \"codepoints\": [8741], \"characters\": \"\\u2225\" },\n  \"&shy\": { \"codepoints\": [173], \"characters\": \"\\u00AD\" },\n  \"&shy;\": { \"codepoints\": [173], \"characters\": \"\\u00AD\" },\n  \"&sigma;\": { \"codepoints\": [963], \"characters\": \"\\u03C3\" },\n  \"&sigmaf;\": { \"codepoints\": [962], \"characters\": \"\\u03C2\" },\n  \"&sigmav;\": { \"codepoints\": [962], \"characters\": \"\\u03C2\" },\n  \"&sim;\": { \"codepoints\": [8764], \"characters\": \"\\u223C\" },\n  \"&simdot;\": { \"codepoints\": [10858], \"characters\": \"\\u2A6A\" },\n  \"&sime;\": { \"codepoints\": [8771], \"characters\": \"\\u2243\" },\n  \"&simeq;\": { \"codepoints\": [8771], \"characters\": \"\\u2243\" },\n  \"&simg;\": { \"codepoints\": [10910], \"characters\": \"\\u2A9E\" },\n  \"&simgE;\": { \"codepoints\": [10912], \"characters\": \"\\u2AA0\" },\n  \"&siml;\": { \"codepoints\": [10909], \"characters\": \"\\u2A9D\" },\n  \"&simlE;\": { \"codepoints\": [10911], \"characters\": \"\\u2A9F\" },\n  \"&simne;\": { \"codepoints\": [8774], \"characters\": \"\\u2246\" },\n  \"&simplus;\": { \"codepoints\": [10788], \"characters\": \"\\u2A24\" },\n  \"&simrarr;\": { \"codepoints\": [10610], \"characters\": \"\\u2972\" },\n  \"&slarr;\": { \"codepoints\": [8592], \"characters\": \"\\u2190\" },\n  \"&smallsetminus;\": { \"codepoints\": [8726], \"characters\": \"\\u2216\" },\n  \"&smashp;\": { \"codepoints\": [10803], \"characters\": \"\\u2A33\" },\n  \"&smeparsl;\": { \"codepoints\": [10724], \"characters\": \"\\u29E4\" },\n  \"&smid;\": { \"codepoints\": [8739], \"characters\": \"\\u2223\" },\n  \"&smile;\": { \"codepoints\": [8995], \"characters\": \"\\u2323\" },\n  \"&smt;\": { \"codepoints\": [10922], \"characters\": \"\\u2AAA\" },\n  \"&smte;\": { \"codepoints\": [10924], \"characters\": \"\\u2AAC\" },\n  \"&smtes;\": { \"codepoints\": [10924, 65024], \"characters\": \"\\u2AAC\\uFE00\" },\n  \"&softcy;\": { \"codepoints\": [1100], \"characters\": \"\\u044C\" },\n  \"&sol;\": { \"codepoints\": [47], \"characters\": \"\\u002F\" },\n  \"&solb;\": { \"codepoints\": [10692], \"characters\": \"\\u29C4\" },\n  \"&solbar;\": { \"codepoints\": [9023], \"characters\": \"\\u233F\" },\n  \"&sopf;\": { \"codepoints\": [120164], \"characters\": \"\\uD835\\uDD64\" },\n  \"&spades;\": { \"codepoints\": [9824], \"characters\": \"\\u2660\" },\n  \"&spadesuit;\": { \"codepoints\": [9824], \"characters\": \"\\u2660\" },\n  \"&spar;\": { \"codepoints\": [8741], \"characters\": \"\\u2225\" },\n  \"&sqcap;\": { \"codepoints\": [8851], \"characters\": \"\\u2293\" },\n  \"&sqcaps;\": { \"codepoints\": [8851, 65024], \"characters\": \"\\u2293\\uFE00\" },\n  \"&sqcup;\": { \"codepoints\": [8852], \"characters\": \"\\u2294\" },\n  \"&sqcups;\": { \"codepoints\": [8852, 65024], \"characters\": \"\\u2294\\uFE00\" },\n  \"&sqsub;\": { \"codepoints\": [8847], \"characters\": \"\\u228F\" },\n  \"&sqsube;\": { \"codepoints\": [8849], \"characters\": \"\\u2291\" },\n  \"&sqsubset;\": { \"codepoints\": [8847], \"characters\": \"\\u228F\" },\n  \"&sqsubseteq;\": { \"codepoints\": [8849], \"characters\": \"\\u2291\" },\n  \"&sqsup;\": { \"codepoints\": [8848], \"characters\": \"\\u2290\" },\n  \"&sqsupe;\": { \"codepoints\": [8850], \"characters\": \"\\u2292\" },\n  \"&sqsupset;\": { \"codepoints\": [8848], \"characters\": \"\\u2290\" },\n  \"&sqsupseteq;\": { \"codepoints\": [8850], \"characters\": \"\\u2292\" },\n  \"&squ;\": { \"codepoints\": [9633], \"characters\": \"\\u25A1\" },\n  \"&square;\": { \"codepoints\": [9633], \"characters\": \"\\u25A1\" },\n  \"&squarf;\": { \"codepoints\": [9642], \"characters\": \"\\u25AA\" },\n  \"&squf;\": { \"codepoints\": [9642], \"characters\": \"\\u25AA\" },\n  \"&srarr;\": { \"codepoints\": [8594], \"characters\": \"\\u2192\" },\n  \"&sscr;\": { \"codepoints\": [120008], \"characters\": \"\\uD835\\uDCC8\" },\n  \"&ssetmn;\": { \"codepoints\": [8726], \"characters\": \"\\u2216\" },\n  \"&ssmile;\": { \"codepoints\": [8995], \"characters\": \"\\u2323\" },\n  \"&sstarf;\": { \"codepoints\": [8902], \"characters\": \"\\u22C6\" },\n  \"&star;\": { \"codepoints\": [9734], \"characters\": \"\\u2606\" },\n  \"&starf;\": { \"codepoints\": [9733], \"characters\": \"\\u2605\" },\n  \"&straightepsilon;\": { \"codepoints\": [1013], \"characters\": \"\\u03F5\" },\n  \"&straightphi;\": { \"codepoints\": [981], \"characters\": \"\\u03D5\" },\n  \"&strns;\": { \"codepoints\": [175], \"characters\": \"\\u00AF\" },\n  \"&sub;\": { \"codepoints\": [8834], \"characters\": \"\\u2282\" },\n  \"&subE;\": { \"codepoints\": [10949], \"characters\": \"\\u2AC5\" },\n  \"&subdot;\": { \"codepoints\": [10941], \"characters\": \"\\u2ABD\" },\n  \"&sube;\": { \"codepoints\": [8838], \"characters\": \"\\u2286\" },\n  \"&subedot;\": { \"codepoints\": [10947], \"characters\": \"\\u2AC3\" },\n  \"&submult;\": { \"codepoints\": [10945], \"characters\": \"\\u2AC1\" },\n  \"&subnE;\": { \"codepoints\": [10955], \"characters\": \"\\u2ACB\" },\n  \"&subne;\": { \"codepoints\": [8842], \"characters\": \"\\u228A\" },\n  \"&subplus;\": { \"codepoints\": [10943], \"characters\": \"\\u2ABF\" },\n  \"&subrarr;\": { \"codepoints\": [10617], \"characters\": \"\\u2979\" },\n  \"&subset;\": { \"codepoints\": [8834], \"characters\": \"\\u2282\" },\n  \"&subseteq;\": { \"codepoints\": [8838], \"characters\": \"\\u2286\" },\n  \"&subseteqq;\": { \"codepoints\": [10949], \"characters\": \"\\u2AC5\" },\n  \"&subsetneq;\": { \"codepoints\": [8842], \"characters\": \"\\u228A\" },\n  \"&subsetneqq;\": { \"codepoints\": [10955], \"characters\": \"\\u2ACB\" },\n  \"&subsim;\": { \"codepoints\": [10951], \"characters\": \"\\u2AC7\" },\n  \"&subsub;\": { \"codepoints\": [10965], \"characters\": \"\\u2AD5\" },\n  \"&subsup;\": { \"codepoints\": [10963], \"characters\": \"\\u2AD3\" },\n  \"&succ;\": { \"codepoints\": [8827], \"characters\": \"\\u227B\" },\n  \"&succapprox;\": { \"codepoints\": [10936], \"characters\": \"\\u2AB8\" },\n  \"&succcurlyeq;\": { \"codepoints\": [8829], \"characters\": \"\\u227D\" },\n  \"&succeq;\": { \"codepoints\": [10928], \"characters\": \"\\u2AB0\" },\n  \"&succnapprox;\": { \"codepoints\": [10938], \"characters\": \"\\u2ABA\" },\n  \"&succneqq;\": { \"codepoints\": [10934], \"characters\": \"\\u2AB6\" },\n  \"&succnsim;\": { \"codepoints\": [8937], \"characters\": \"\\u22E9\" },\n  \"&succsim;\": { \"codepoints\": [8831], \"characters\": \"\\u227F\" },\n  \"&sum;\": { \"codepoints\": [8721], \"characters\": \"\\u2211\" },\n  \"&sung;\": { \"codepoints\": [9834], \"characters\": \"\\u266A\" },\n  \"&sup1\": { \"codepoints\": [185], \"characters\": \"\\u00B9\" },\n  \"&sup1;\": { \"codepoints\": [185], \"characters\": \"\\u00B9\" },\n  \"&sup2\": { \"codepoints\": [178], \"characters\": \"\\u00B2\" },\n  \"&sup2;\": { \"codepoints\": [178], \"characters\": \"\\u00B2\" },\n  \"&sup3\": { \"codepoints\": [179], \"characters\": \"\\u00B3\" },\n  \"&sup3;\": { \"codepoints\": [179], \"characters\": \"\\u00B3\" },\n  \"&sup;\": { \"codepoints\": [8835], \"characters\": \"\\u2283\" },\n  \"&supE;\": { \"codepoints\": [10950], \"characters\": \"\\u2AC6\" },\n  \"&supdot;\": { \"codepoints\": [10942], \"characters\": \"\\u2ABE\" },\n  \"&supdsub;\": { \"codepoints\": [10968], \"characters\": \"\\u2AD8\" },\n  \"&supe;\": { \"codepoints\": [8839], \"characters\": \"\\u2287\" },\n  \"&supedot;\": { \"codepoints\": [10948], \"characters\": \"\\u2AC4\" },\n  \"&suphsol;\": { \"codepoints\": [10185], \"characters\": \"\\u27C9\" },\n  \"&suphsub;\": { \"codepoints\": [10967], \"characters\": \"\\u2AD7\" },\n  \"&suplarr;\": { \"codepoints\": [10619], \"characters\": \"\\u297B\" },\n  \"&supmult;\": { \"codepoints\": [10946], \"characters\": \"\\u2AC2\" },\n  \"&supnE;\": { \"codepoints\": [10956], \"characters\": \"\\u2ACC\" },\n  \"&supne;\": { \"codepoints\": [8843], \"characters\": \"\\u228B\" },\n  \"&supplus;\": { \"codepoints\": [10944], \"characters\": \"\\u2AC0\" },\n  \"&supset;\": { \"codepoints\": [8835], \"characters\": \"\\u2283\" },\n  \"&supseteq;\": { \"codepoints\": [8839], \"characters\": \"\\u2287\" },\n  \"&supseteqq;\": { \"codepoints\": [10950], \"characters\": \"\\u2AC6\" },\n  \"&supsetneq;\": { \"codepoints\": [8843], \"characters\": \"\\u228B\" },\n  \"&supsetneqq;\": { \"codepoints\": [10956], \"characters\": \"\\u2ACC\" },\n  \"&supsim;\": { \"codepoints\": [10952], \"characters\": \"\\u2AC8\" },\n  \"&supsub;\": { \"codepoints\": [10964], \"characters\": \"\\u2AD4\" },\n  \"&supsup;\": { \"codepoints\": [10966], \"characters\": \"\\u2AD6\" },\n  \"&swArr;\": { \"codepoints\": [8665], \"characters\": \"\\u21D9\" },\n  \"&swarhk;\": { \"codepoints\": [10534], \"characters\": \"\\u2926\" },\n  \"&swarr;\": { \"codepoints\": [8601], \"characters\": \"\\u2199\" },\n  \"&swarrow;\": { \"codepoints\": [8601], \"characters\": \"\\u2199\" },\n  \"&swnwar;\": { \"codepoints\": [10538], \"characters\": \"\\u292A\" },\n  \"&szlig\": { \"codepoints\": [223], \"characters\": \"\\u00DF\" },\n  \"&szlig;\": { \"codepoints\": [223], \"characters\": \"\\u00DF\" },\n  \"&target;\": { \"codepoints\": [8982], \"characters\": \"\\u2316\" },\n  \"&tau;\": { \"codepoints\": [964], \"characters\": \"\\u03C4\" },\n  \"&tbrk;\": { \"codepoints\": [9140], \"characters\": \"\\u23B4\" },\n  \"&tcaron;\": { \"codepoints\": [357], \"characters\": \"\\u0165\" },\n  \"&tcedil;\": { \"codepoints\": [355], \"characters\": \"\\u0163\" },\n  \"&tcy;\": { \"codepoints\": [1090], \"characters\": \"\\u0442\" },\n  \"&tdot;\": { \"codepoints\": [8411], \"characters\": \"\\u20DB\" },\n  \"&telrec;\": { \"codepoints\": [8981], \"characters\": \"\\u2315\" },\n  \"&tfr;\": { \"codepoints\": [120113], \"characters\": \"\\uD835\\uDD31\" },\n  \"&there4;\": { \"codepoints\": [8756], \"characters\": \"\\u2234\" },\n  \"&therefore;\": { \"codepoints\": [8756], \"characters\": \"\\u2234\" },\n  \"&theta;\": { \"codepoints\": [952], \"characters\": \"\\u03B8\" },\n  \"&thetasym;\": { \"codepoints\": [977], \"characters\": \"\\u03D1\" },\n  \"&thetav;\": { \"codepoints\": [977], \"characters\": \"\\u03D1\" },\n  \"&thickapprox;\": { \"codepoints\": [8776], \"characters\": \"\\u2248\" },\n  \"&thicksim;\": { \"codepoints\": [8764], \"characters\": \"\\u223C\" },\n  \"&thinsp;\": { \"codepoints\": [8201], \"characters\": \"\\u2009\" },\n  \"&thkap;\": { \"codepoints\": [8776], \"characters\": \"\\u2248\" },\n  \"&thksim;\": { \"codepoints\": [8764], \"characters\": \"\\u223C\" },\n  \"&thorn\": { \"codepoints\": [254], \"characters\": \"\\u00FE\" },\n  \"&thorn;\": { \"codepoints\": [254], \"characters\": \"\\u00FE\" },\n  \"&tilde;\": { \"codepoints\": [732], \"characters\": \"\\u02DC\" },\n  \"&times\": { \"codepoints\": [215], \"characters\": \"\\u00D7\" },\n  \"&times;\": { \"codepoints\": [215], \"characters\": \"\\u00D7\" },\n  \"&timesb;\": { \"codepoints\": [8864], \"characters\": \"\\u22A0\" },\n  \"&timesbar;\": { \"codepoints\": [10801], \"characters\": \"\\u2A31\" },\n  \"&timesd;\": { \"codepoints\": [10800], \"characters\": \"\\u2A30\" },\n  \"&tint;\": { \"codepoints\": [8749], \"characters\": \"\\u222D\" },\n  \"&toea;\": { \"codepoints\": [10536], \"characters\": \"\\u2928\" },\n  \"&top;\": { \"codepoints\": [8868], \"characters\": \"\\u22A4\" },\n  \"&topbot;\": { \"codepoints\": [9014], \"characters\": \"\\u2336\" },\n  \"&topcir;\": { \"codepoints\": [10993], \"characters\": \"\\u2AF1\" },\n  \"&topf;\": { \"codepoints\": [120165], \"characters\": \"\\uD835\\uDD65\" },\n  \"&topfork;\": { \"codepoints\": [10970], \"characters\": \"\\u2ADA\" },\n  \"&tosa;\": { \"codepoints\": [10537], \"characters\": \"\\u2929\" },\n  \"&tprime;\": { \"codepoints\": [8244], \"characters\": \"\\u2034\" },\n  \"&trade;\": { \"codepoints\": [8482], \"characters\": \"\\u2122\" },\n  \"&triangle;\": { \"codepoints\": [9653], \"characters\": \"\\u25B5\" },\n  \"&triangledown;\": { \"codepoints\": [9663], \"characters\": \"\\u25BF\" },\n  \"&triangleleft;\": { \"codepoints\": [9667], \"characters\": \"\\u25C3\" },\n  \"&trianglelefteq;\": { \"codepoints\": [8884], \"characters\": \"\\u22B4\" },\n  \"&triangleq;\": { \"codepoints\": [8796], \"characters\": \"\\u225C\" },\n  \"&triangleright;\": { \"codepoints\": [9657], \"characters\": \"\\u25B9\" },\n  \"&trianglerighteq;\": { \"codepoints\": [8885], \"characters\": \"\\u22B5\" },\n  \"&tridot;\": { \"codepoints\": [9708], \"characters\": \"\\u25EC\" },\n  \"&trie;\": { \"codepoints\": [8796], \"characters\": \"\\u225C\" },\n  \"&triminus;\": { \"codepoints\": [10810], \"characters\": \"\\u2A3A\" },\n  \"&triplus;\": { \"codepoints\": [10809], \"characters\": \"\\u2A39\" },\n  \"&trisb;\": { \"codepoints\": [10701], \"characters\": \"\\u29CD\" },\n  \"&tritime;\": { \"codepoints\": [10811], \"characters\": \"\\u2A3B\" },\n  \"&trpezium;\": { \"codepoints\": [9186], \"characters\": \"\\u23E2\" },\n  \"&tscr;\": { \"codepoints\": [120009], \"characters\": \"\\uD835\\uDCC9\" },\n  \"&tscy;\": { \"codepoints\": [1094], \"characters\": \"\\u0446\" },\n  \"&tshcy;\": { \"codepoints\": [1115], \"characters\": \"\\u045B\" },\n  \"&tstrok;\": { \"codepoints\": [359], \"characters\": \"\\u0167\" },\n  \"&twixt;\": { \"codepoints\": [8812], \"characters\": \"\\u226C\" },\n  \"&twoheadleftarrow;\": { \"codepoints\": [8606], \"characters\": \"\\u219E\" },\n  \"&twoheadrightarrow;\": { \"codepoints\": [8608], \"characters\": \"\\u21A0\" },\n  \"&uArr;\": { \"codepoints\": [8657], \"characters\": \"\\u21D1\" },\n  \"&uHar;\": { \"codepoints\": [10595], \"characters\": \"\\u2963\" },\n  \"&uacute\": { \"codepoints\": [250], \"characters\": \"\\u00FA\" },\n  \"&uacute;\": { \"codepoints\": [250], \"characters\": \"\\u00FA\" },\n  \"&uarr;\": { \"codepoints\": [8593], \"characters\": \"\\u2191\" },\n  \"&ubrcy;\": { \"codepoints\": [1118], \"characters\": \"\\u045E\" },\n  \"&ubreve;\": { \"codepoints\": [365], \"characters\": \"\\u016D\" },\n  \"&ucirc\": { \"codepoints\": [251], \"characters\": \"\\u00FB\" },\n  \"&ucirc;\": { \"codepoints\": [251], \"characters\": \"\\u00FB\" },\n  \"&ucy;\": { \"codepoints\": [1091], \"characters\": \"\\u0443\" },\n  \"&udarr;\": { \"codepoints\": [8645], \"characters\": \"\\u21C5\" },\n  \"&udblac;\": { \"codepoints\": [369], \"characters\": \"\\u0171\" },\n  \"&udhar;\": { \"codepoints\": [10606], \"characters\": \"\\u296E\" },\n  \"&ufisht;\": { \"codepoints\": [10622], \"characters\": \"\\u297E\" },\n  \"&ufr;\": { \"codepoints\": [120114], \"characters\": \"\\uD835\\uDD32\" },\n  \"&ugrave\": { \"codepoints\": [249], \"characters\": \"\\u00F9\" },\n  \"&ugrave;\": { \"codepoints\": [249], \"characters\": \"\\u00F9\" },\n  \"&uharl;\": { \"codepoints\": [8639], \"characters\": \"\\u21BF\" },\n  \"&uharr;\": { \"codepoints\": [8638], \"characters\": \"\\u21BE\" },\n  \"&uhblk;\": { \"codepoints\": [9600], \"characters\": \"\\u2580\" },\n  \"&ulcorn;\": { \"codepoints\": [8988], \"characters\": \"\\u231C\" },\n  \"&ulcorner;\": { \"codepoints\": [8988], \"characters\": \"\\u231C\" },\n  \"&ulcrop;\": { \"codepoints\": [8975], \"characters\": \"\\u230F\" },\n  \"&ultri;\": { \"codepoints\": [9720], \"characters\": \"\\u25F8\" },\n  \"&umacr;\": { \"codepoints\": [363], \"characters\": \"\\u016B\" },\n  \"&uml\": { \"codepoints\": [168], \"characters\": \"\\u00A8\" },\n  \"&uml;\": { \"codepoints\": [168], \"characters\": \"\\u00A8\" },\n  \"&uogon;\": { \"codepoints\": [371], \"characters\": \"\\u0173\" },\n  \"&uopf;\": { \"codepoints\": [120166], \"characters\": \"\\uD835\\uDD66\" },\n  \"&uparrow;\": { \"codepoints\": [8593], \"characters\": \"\\u2191\" },\n  \"&updownarrow;\": { \"codepoints\": [8597], \"characters\": \"\\u2195\" },\n  \"&upharpoonleft;\": { \"codepoints\": [8639], \"characters\": \"\\u21BF\" },\n  \"&upharpoonright;\": { \"codepoints\": [8638], \"characters\": \"\\u21BE\" },\n  \"&uplus;\": { \"codepoints\": [8846], \"characters\": \"\\u228E\" },\n  \"&upsi;\": { \"codepoints\": [965], \"characters\": \"\\u03C5\" },\n  \"&upsih;\": { \"codepoints\": [978], \"characters\": \"\\u03D2\" },\n  \"&upsilon;\": { \"codepoints\": [965], \"characters\": \"\\u03C5\" },\n  \"&upuparrows;\": { \"codepoints\": [8648], \"characters\": \"\\u21C8\" },\n  \"&urcorn;\": { \"codepoints\": [8989], \"characters\": \"\\u231D\" },\n  \"&urcorner;\": { \"codepoints\": [8989], \"characters\": \"\\u231D\" },\n  \"&urcrop;\": { \"codepoints\": [8974], \"characters\": \"\\u230E\" },\n  \"&uring;\": { \"codepoints\": [367], \"characters\": \"\\u016F\" },\n  \"&urtri;\": { \"codepoints\": [9721], \"characters\": \"\\u25F9\" },\n  \"&uscr;\": { \"codepoints\": [120010], \"characters\": \"\\uD835\\uDCCA\" },\n  \"&utdot;\": { \"codepoints\": [8944], \"characters\": \"\\u22F0\" },\n  \"&utilde;\": { \"codepoints\": [361], \"characters\": \"\\u0169\" },\n  \"&utri;\": { \"codepoints\": [9653], \"characters\": \"\\u25B5\" },\n  \"&utrif;\": { \"codepoints\": [9652], \"characters\": \"\\u25B4\" },\n  \"&uuarr;\": { \"codepoints\": [8648], \"characters\": \"\\u21C8\" },\n  \"&uuml\": { \"codepoints\": [252], \"characters\": \"\\u00FC\" },\n  \"&uuml;\": { \"codepoints\": [252], \"characters\": \"\\u00FC\" },\n  \"&uwangle;\": { \"codepoints\": [10663], \"characters\": \"\\u29A7\" },\n  \"&vArr;\": { \"codepoints\": [8661], \"characters\": \"\\u21D5\" },\n  \"&vBar;\": { \"codepoints\": [10984], \"characters\": \"\\u2AE8\" },\n  \"&vBarv;\": { \"codepoints\": [10985], \"characters\": \"\\u2AE9\" },\n  \"&vDash;\": { \"codepoints\": [8872], \"characters\": \"\\u22A8\" },\n  \"&vangrt;\": { \"codepoints\": [10652], \"characters\": \"\\u299C\" },\n  \"&varepsilon;\": { \"codepoints\": [1013], \"characters\": \"\\u03F5\" },\n  \"&varkappa;\": { \"codepoints\": [1008], \"characters\": \"\\u03F0\" },\n  \"&varnothing;\": { \"codepoints\": [8709], \"characters\": \"\\u2205\" },\n  \"&varphi;\": { \"codepoints\": [981], \"characters\": \"\\u03D5\" },\n  \"&varpi;\": { \"codepoints\": [982], \"characters\": \"\\u03D6\" },\n  \"&varpropto;\": { \"codepoints\": [8733], \"characters\": \"\\u221D\" },\n  \"&varr;\": { \"codepoints\": [8597], \"characters\": \"\\u2195\" },\n  \"&varrho;\": { \"codepoints\": [1009], \"characters\": \"\\u03F1\" },\n  \"&varsigma;\": { \"codepoints\": [962], \"characters\": \"\\u03C2\" },\n  \"&varsubsetneq;\": {\n    \"codepoints\": [8842, 65024],\n    \"characters\": \"\\u228A\\uFE00\"\n  },\n  \"&varsubsetneqq;\": {\n    \"codepoints\": [10955, 65024],\n    \"characters\": \"\\u2ACB\\uFE00\"\n  },\n  \"&varsupsetneq;\": {\n    \"codepoints\": [8843, 65024],\n    \"characters\": \"\\u228B\\uFE00\"\n  },\n  \"&varsupsetneqq;\": {\n    \"codepoints\": [10956, 65024],\n    \"characters\": \"\\u2ACC\\uFE00\"\n  },\n  \"&vartheta;\": { \"codepoints\": [977], \"characters\": \"\\u03D1\" },\n  \"&vartriangleleft;\": { \"codepoints\": [8882], \"characters\": \"\\u22B2\" },\n  \"&vartriangleright;\": { \"codepoints\": [8883], \"characters\": \"\\u22B3\" },\n  \"&vcy;\": { \"codepoints\": [1074], \"characters\": \"\\u0432\" },\n  \"&vdash;\": { \"codepoints\": [8866], \"characters\": \"\\u22A2\" },\n  \"&vee;\": { \"codepoints\": [8744], \"characters\": \"\\u2228\" },\n  \"&veebar;\": { \"codepoints\": [8891], \"characters\": \"\\u22BB\" },\n  \"&veeeq;\": { \"codepoints\": [8794], \"characters\": \"\\u225A\" },\n  \"&vellip;\": { \"codepoints\": [8942], \"characters\": \"\\u22EE\" },\n  \"&verbar;\": { \"codepoints\": [124], \"characters\": \"\\u007C\" },\n  \"&vert;\": { \"codepoints\": [124], \"characters\": \"\\u007C\" },\n  \"&vfr;\": { \"codepoints\": [120115], \"characters\": \"\\uD835\\uDD33\" },\n  \"&vltri;\": { \"codepoints\": [8882], \"characters\": \"\\u22B2\" },\n  \"&vnsub;\": { \"codepoints\": [8834, 8402], \"characters\": \"\\u2282\\u20D2\" },\n  \"&vnsup;\": { \"codepoints\": [8835, 8402], \"characters\": \"\\u2283\\u20D2\" },\n  \"&vopf;\": { \"codepoints\": [120167], \"characters\": \"\\uD835\\uDD67\" },\n  \"&vprop;\": { \"codepoints\": [8733], \"characters\": \"\\u221D\" },\n  \"&vrtri;\": { \"codepoints\": [8883], \"characters\": \"\\u22B3\" },\n  \"&vscr;\": { \"codepoints\": [120011], \"characters\": \"\\uD835\\uDCCB\" },\n  \"&vsubnE;\": { \"codepoints\": [10955, 65024], \"characters\": \"\\u2ACB\\uFE00\" },\n  \"&vsubne;\": { \"codepoints\": [8842, 65024], \"characters\": \"\\u228A\\uFE00\" },\n  \"&vsupnE;\": { \"codepoints\": [10956, 65024], \"characters\": \"\\u2ACC\\uFE00\" },\n  \"&vsupne;\": { \"codepoints\": [8843, 65024], \"characters\": \"\\u228B\\uFE00\" },\n  \"&vzigzag;\": { \"codepoints\": [10650], \"characters\": \"\\u299A\" },\n  \"&wcirc;\": { \"codepoints\": [373], \"characters\": \"\\u0175\" },\n  \"&wedbar;\": { \"codepoints\": [10847], \"characters\": \"\\u2A5F\" },\n  \"&wedge;\": { \"codepoints\": [8743], \"characters\": \"\\u2227\" },\n  \"&wedgeq;\": { \"codepoints\": [8793], \"characters\": \"\\u2259\" },\n  \"&weierp;\": { \"codepoints\": [8472], \"characters\": \"\\u2118\" },\n  \"&wfr;\": { \"codepoints\": [120116], \"characters\": \"\\uD835\\uDD34\" },\n  \"&wopf;\": { \"codepoints\": [120168], \"characters\": \"\\uD835\\uDD68\" },\n  \"&wp;\": { \"codepoints\": [8472], \"characters\": \"\\u2118\" },\n  \"&wr;\": { \"codepoints\": [8768], \"characters\": \"\\u2240\" },\n  \"&wreath;\": { \"codepoints\": [8768], \"characters\": \"\\u2240\" },\n  \"&wscr;\": { \"codepoints\": [120012], \"characters\": \"\\uD835\\uDCCC\" },\n  \"&xcap;\": { \"codepoints\": [8898], \"characters\": \"\\u22C2\" },\n  \"&xcirc;\": { \"codepoints\": [9711], \"characters\": \"\\u25EF\" },\n  \"&xcup;\": { \"codepoints\": [8899], \"characters\": \"\\u22C3\" },\n  \"&xdtri;\": { \"codepoints\": [9661], \"characters\": \"\\u25BD\" },\n  \"&xfr;\": { \"codepoints\": [120117], \"characters\": \"\\uD835\\uDD35\" },\n  \"&xhArr;\": { \"codepoints\": [10234], \"characters\": \"\\u27FA\" },\n  \"&xharr;\": { \"codepoints\": [10231], \"characters\": \"\\u27F7\" },\n  \"&xi;\": { \"codepoints\": [958], \"characters\": \"\\u03BE\" },\n  \"&xlArr;\": { \"codepoints\": [10232], \"characters\": \"\\u27F8\" },\n  \"&xlarr;\": { \"codepoints\": [10229], \"characters\": \"\\u27F5\" },\n  \"&xmap;\": { \"codepoints\": [10236], \"characters\": \"\\u27FC\" },\n  \"&xnis;\": { \"codepoints\": [8955], \"characters\": \"\\u22FB\" },\n  \"&xodot;\": { \"codepoints\": [10752], \"characters\": \"\\u2A00\" },\n  \"&xopf;\": { \"codepoints\": [120169], \"characters\": \"\\uD835\\uDD69\" },\n  \"&xoplus;\": { \"codepoints\": [10753], \"characters\": \"\\u2A01\" },\n  \"&xotime;\": { \"codepoints\": [10754], \"characters\": \"\\u2A02\" },\n  \"&xrArr;\": { \"codepoints\": [10233], \"characters\": \"\\u27F9\" },\n  \"&xrarr;\": { \"codepoints\": [10230], \"characters\": \"\\u27F6\" },\n  \"&xscr;\": { \"codepoints\": [120013], \"characters\": \"\\uD835\\uDCCD\" },\n  \"&xsqcup;\": { \"codepoints\": [10758], \"characters\": \"\\u2A06\" },\n  \"&xuplus;\": { \"codepoints\": [10756], \"characters\": \"\\u2A04\" },\n  \"&xutri;\": { \"codepoints\": [9651], \"characters\": \"\\u25B3\" },\n  \"&xvee;\": { \"codepoints\": [8897], \"characters\": \"\\u22C1\" },\n  \"&xwedge;\": { \"codepoints\": [8896], \"characters\": \"\\u22C0\" },\n  \"&yacute\": { \"codepoints\": [253], \"characters\": \"\\u00FD\" },\n  \"&yacute;\": { \"codepoints\": [253], \"characters\": \"\\u00FD\" },\n  \"&yacy;\": { \"codepoints\": [1103], \"characters\": \"\\u044F\" },\n  \"&ycirc;\": { \"codepoints\": [375], \"characters\": \"\\u0177\" },\n  \"&ycy;\": { \"codepoints\": [1099], \"characters\": \"\\u044B\" },\n  \"&yen\": { \"codepoints\": [165], \"characters\": \"\\u00A5\" },\n  \"&yen;\": { \"codepoints\": [165], \"characters\": \"\\u00A5\" },\n  \"&yfr;\": { \"codepoints\": [120118], \"characters\": \"\\uD835\\uDD36\" },\n  \"&yicy;\": { \"codepoints\": [1111], \"characters\": \"\\u0457\" },\n  \"&yopf;\": { \"codepoints\": [120170], \"characters\": \"\\uD835\\uDD6A\" },\n  \"&yscr;\": { \"codepoints\": [120014], \"characters\": \"\\uD835\\uDCCE\" },\n  \"&yucy;\": { \"codepoints\": [1102], \"characters\": \"\\u044E\" },\n  \"&yuml\": { \"codepoints\": [255], \"characters\": \"\\u00FF\" },\n  \"&yuml;\": { \"codepoints\": [255], \"characters\": \"\\u00FF\" },\n  \"&zacute;\": { \"codepoints\": [378], \"characters\": \"\\u017A\" },\n  \"&zcaron;\": { \"codepoints\": [382], \"characters\": \"\\u017E\" },\n  \"&zcy;\": { \"codepoints\": [1079], \"characters\": \"\\u0437\" },\n  \"&zdot;\": { \"codepoints\": [380], \"characters\": \"\\u017C\" },\n  \"&zeetrf;\": { \"codepoints\": [8488], \"characters\": \"\\u2128\" },\n  \"&zeta;\": { \"codepoints\": [950], \"characters\": \"\\u03B6\" },\n  \"&zfr;\": { \"codepoints\": [120119], \"characters\": \"\\uD835\\uDD37\" },\n  \"&zhcy;\": { \"codepoints\": [1078], \"characters\": \"\\u0436\" },\n  \"&zigrarr;\": { \"codepoints\": [8669], \"characters\": \"\\u21DD\" },\n  \"&zopf;\": { \"codepoints\": [120171], \"characters\": \"\\uD835\\uDD6B\" },\n  \"&zscr;\": { \"codepoints\": [120015], \"characters\": \"\\uD835\\uDCCF\" },\n  \"&zwj;\": { \"codepoints\": [8205], \"characters\": \"\\u200D\" },\n  \"&zwnj;\": { \"codepoints\": [8204], \"characters\": \"\\u200C\" }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/exports.ts",
    "content": "import plugin = require(\"./index\");\nexport = plugin;\n"
  },
  {
    "path": "packages/eslint-plugin/lib/index.js",
    "content": "const rules = require(\"./rules\");\nconst {\n  recommendedRules,\n  recommendedLegacyRules,\n} = require(\"./configs/recommended\");\nconst { allRules, allRulesLegacy } = require(\"./configs/all\");\nconst { HTMLLanguage } = require(\"./languages/html-language\");\nconst { name, version } = require(\"../package.json\");\nconst parser = require(\"@html-eslint/parser\");\n/** @import {ESLint} from \"eslint\" */\n\nconst plugin = {\n  meta: {\n    name,\n    version,\n  },\n  languages: {\n    html: new HTMLLanguage(),\n  },\n  rules,\n  configs: {\n    recommended: {\n      rules: recommendedRules,\n      plugins: {},\n    },\n    all: {\n      rules: allRules,\n      plugins: {},\n    },\n    [\"recommended-legacy\"]: {\n      rules: recommendedLegacyRules,\n    },\n    \"flat/recommended\": {\n      plugins: {\n        /** @type {ESLint.Plugin} */\n        get \"@html-eslint\"() {\n          return plugin;\n        },\n      },\n      languageOptions: {\n        parser,\n      },\n      rules: recommendedLegacyRules,\n    },\n    \"flat/all\": {\n      plugins: {\n        /** @type {ESLint.Plugin} */\n        get \"@html-eslint\"() {\n          return plugin;\n        },\n      },\n      languageOptions: {\n        parser,\n      },\n      rules: allRulesLegacy,\n    },\n  },\n};\n\n{\n  // @ts-ignore\n  plugin.configs.recommended.plugins.html = plugin;\n}\n\nmodule.exports = plugin;\n"
  },
  {
    "path": "packages/eslint-plugin/lib/languages/html-language.js",
    "content": "/* eslint-disable prefer-destructuring */\n/**\n * @import {\n *   File,\n *   FileError,\n *   Language,\n *   OkParseResult,\n *   ParseResult\n * } from \"@eslint/core\"\n * @import {ParserOptions, HTMLProgram} from \"@html-eslint/parser\"\n */\n\nconst { visitorKeys, parseForESLint } = require(\"@html-eslint/parser\");\nconst { createHTMLSourceCode } = require(\"./html-source-code\");\n\n/**\n * @typedef {Language<{ LangOptions: ParserOptions; Code: ReturnType<typeof createHTMLSourceCode>; RootNode: HTMLProgram; Node: {};}>} HTMLLanguageType\n */\n\n/**\n * @implements {HTMLLanguageType}\n */\nclass HTMLLanguage {\n  constructor() {\n    /**\n     * @type {\"text\"}\n     * @property\n     */\n    this.fileType = \"text\";\n\n    /**\n     * @type {0 | 1}\n     * @property\n     */\n    this.lineStart = 1;\n\n    /**\n     * @type {0 | 1}\n     * @property\n     */\n    this.columnStart = 0;\n\n    /** @type {string} */\n    this.nodeTypeKey = \"type\";\n\n    /**\n     * The visitor keys for the es-html-parser AST.\n     *\n     * @type {Record<string, string[]>}\n     */\n    this.visitorKeys = visitorKeys;\n  }\n\n  /** @param {ParserOptions} languageOptions */\n  validateLanguageOptions(languageOptions) {\n    if (!languageOptions) {\n      return;\n    }\n    if (\n      \"frontmatter\" in languageOptions &&\n      typeof languageOptions.frontmatter !== \"boolean\"\n    ) {\n      throw new TypeError(\"Expected a boolean value for 'frontmatter' option.\");\n    }\n    if (\n      \"templateEngineSyntax\" in languageOptions &&\n      (typeof languageOptions.templateEngineSyntax !== \"object\" ||\n        !languageOptions.templateEngineSyntax)\n    ) {\n      throw new TypeError(\n        \"Expected an key-value record value for 'templateEngineSyntax' option.\"\n      );\n    }\n    if (\n      \"rawContentTags\" in languageOptions &&\n      (!Array.isArray(languageOptions.rawContentTags) ||\n        !languageOptions.rawContentTags.every((tag) => typeof tag === \"string\"))\n    ) {\n      throw new TypeError(\n        \"Expected an array of strings for 'rawContentTags' option.\"\n      );\n    }\n  }\n\n  /**\n   * @param {File} file\n   * @param {Object} [context]\n   * @param {ParserOptions} context.languageOptions\n   * @returns {ParseResult<HTMLProgram>}\n   */\n  parse(file, context) {\n    const code = /** @type {string} */ (file.body);\n    const languageOptions = (context && context.languageOptions) || {};\n    try {\n      const result = parseForESLint(code, languageOptions);\n      /** @type {HTMLProgram} */\n      // @ts-ignore\n      const ast = result.ast;\n\n      return {\n        ok: true,\n        ast,\n        comments: ast.comments,\n      };\n    } catch (e) {\n      return {\n        ok: false,\n        errors: [/** @type {FileError} */ (e)],\n      };\n    }\n  }\n\n  /**\n   * @param {File} file\n   * @param {OkParseResult<HTMLProgram>} parseResult\n   */\n  createSourceCode(file, parseResult) {\n    return createHTMLSourceCode({\n      text: /** @type {string} */ (file.body),\n      ast: parseResult.ast,\n      comments: parseResult.comments,\n    });\n  }\n}\n\nmodule.exports = {\n  HTMLLanguage: /** @type {new () => HTMLLanguageType} */ (HTMLLanguage),\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/languages/html-source-code.js",
    "content": "/**\n * @import {TraversalStep} from \"@eslint/core\"\n * @import {\n *   DirectiveType,\n *   SourceLocation\n * } from \"@eslint/plugin-kit\"\n * @import {\n *   HTMLComment,\n *   HTMLProgram\n * } from \"@html-eslint/parser\"\n * @import {\n *   AnyHTMLNode,\n *   AnyToken,\n *   CommentContent,\n *   NodeOrTokenData\n * } from \"@html-eslint/types\"\n * @import {Scope} from \"eslint\"\n * @import {BaseNode} from \"../types\"\n * @import {\n *   SourceCodeOptions,\n *   TokenOrHTMLComment\n * } from \"./types\"\n */\nconst {\n  TextSourceCodeBase,\n  ConfigCommentParser,\n  Directive,\n} = require(\"@eslint/plugin-kit\");\nconst { HTMLTraversalStep, STEP_PHASE } = require(\"./html-traversal-step\");\nconst { visitorKeys } = require(\"@html-eslint/parser\");\n\nconst lineBreakPattern = /\\r\\n|[\\r\\n\\u2028\\u2029]/u;\n\nfunction createGlobalLinebreakMatcher() {\n  return new RegExp(lineBreakPattern.source, \"gu\");\n}\n\nconst INLINE_CONFIG =\n  /^\\s*(?:eslint(?:-enable|-disable(?:(?:-next)?-line)?)?)(?:\\s|$)/u;\n\nconst commentParser = new ConfigCommentParser();\n\n/** @extends TextSourceCodeBase<SourceCodeOptions> */\nclass HTMLSourceCode extends TextSourceCodeBase {\n  /** @param {{ ast: HTMLProgram; text: string; comments: CommentContent[] }} config */\n  constructor({ ast, text, comments }) {\n    super({ ast, text });\n\n    /** @property */\n    this.ast = ast;\n    /** @property */\n    this.comments = comments;\n    this.parentsMap = new Map();\n\n    this.lineStartIndices = [0];\n\n    const lineEndingPattern = createGlobalLinebreakMatcher();\n    let match;\n    while ((match = lineEndingPattern.exec(this.text))) {\n      this.lineStartIndices.push(match.index + match[0].length);\n    }\n  }\n\n  /**\n   * @param {BaseNode} node\n   * @returns {[number, number]}\n   */\n  getRange(node) {\n    return node.range;\n  }\n\n  /**\n   * @param {BaseNode} node\n   * @returns {import(\"@eslint/plugin-kit\").SourceLocation}\n   */\n  getLoc(node) {\n    return node.loc;\n  }\n\n  getLines() {\n    return this.lines;\n  }\n\n  /**\n   * @private\n   * @returns {CommentContent[]}\n   */\n  getAllComments() {\n    return [];\n  }\n\n  getInlineConfigNodes() {\n    return this.comments.filter((comment) => INLINE_CONFIG.test(comment.value));\n  }\n\n  getDisableDirectives() {\n    /**\n     * @type {{\n     *   ruleId: null | string;\n     *   message: string;\n     *   loc: SourceLocation;\n     * }[]}\n     */\n    const problems = [];\n    /** @type {Directive[]} */\n    const directives = [];\n\n    this.getInlineConfigNodes().forEach((comment) => {\n      const parsed = commentParser.parseDirective(comment.value);\n      if (!parsed) return;\n      const { label, value, justification } = parsed;\n      // `eslint-disable-line` directives are not allowed to span multiple lines as it would be confusing to which lines they apply\n      if (\n        label === \"eslint-disable-line\" &&\n        comment.loc.start.line !== comment.loc.end.line\n      ) {\n        const message = `${label} comment should not span multiple lines.`;\n\n        problems.push({\n          ruleId: null,\n          message,\n          loc: comment.loc,\n        });\n        return;\n      }\n\n      switch (label) {\n        case \"eslint-disable\":\n        case \"eslint-enable\":\n        case \"eslint-disable-next-line\":\n        case \"eslint-disable-line\": {\n          const directiveType = label.slice(\"eslint-\".length);\n          directives.push(\n            new Directive({\n              type: /** @type {DirectiveType} */ (directiveType),\n              node: comment,\n              value,\n              justification,\n            })\n          );\n        }\n      }\n    });\n\n    return { problems, directives };\n  }\n\n  traverse() {\n    /** @type {TraversalStep[]} */\n    const steps = [];\n\n    /**\n     * @param {AnyHTMLNode | HTMLProgram} node\n     * @param {AnyHTMLNode | HTMLProgram | null} parent\n     */\n    const visit = (node, parent) => {\n      this.parentsMap.set(node, parent);\n      // @ts-ignore\n      node.parent = parent;\n      steps.push(\n        new HTMLTraversalStep({\n          target: node,\n          phase: STEP_PHASE.ENTER,\n          args: [node, parent],\n        })\n      );\n      // @ts-ignore\n      for (const key of visitorKeys[node.type] || []) {\n        // @ts-ignore\n        const child = node[key];\n\n        if (child) {\n          if (Array.isArray(child)) {\n            child.forEach((grandchild) => {\n              visit(grandchild, node);\n            });\n          } else {\n            visit(child, node);\n          }\n        }\n      }\n      steps.push(\n        new HTMLTraversalStep({\n          target: node,\n          phase: STEP_PHASE.EXIT,\n          args: [node, parent],\n        })\n      );\n    };\n    visit(this.ast, null);\n\n    return steps;\n  }\n\n  /**\n   * @param {AnyHTMLNode} node\n   * @returns\n   */\n  getParent(node) {\n    return this.parentsMap.get(node);\n  }\n\n  // TODO the following methods are stubs\n  /* eslint-disable no-unused-vars */\n\n  /**\n   * @private\n   * @param {NodeOrTokenData} _node\n   * @returns {HTMLComment | null}\n   */\n  getJSDocComment(_node) {\n    return null;\n  }\n\n  /** Stub implementations for ESLint's SourceCode API Compatibility */\n\n  /**\n   * @private\n   * @deprecated HTM does not have scopes\n   * @param {NodeOrTokenData} node\n   * @returns {Scope.Scope | null}\n   */\n  getScope(node) {\n    if (node?.type !== \"Program\") {\n      return null;\n    }\n    return createFakeGlobalScope(this.ast);\n  }\n\n  /**\n   * @private\n   * @deprecated HTML does not have scopes\n   * @returns {Scope.ScopeManager | null}\n   */\n  get scopeManager() {\n    return {\n      scopes: [],\n      globalScope: createFakeGlobalScope(this.ast),\n      acquire: (node) => {\n        if (node.type === \"Program\") {\n          return createFakeGlobalScope(this.ast);\n        }\n        return null;\n      },\n      getDeclaredVariables: () => [],\n      /** @param {any[]} _ */\n      // @ts-ignore\n      addGlobals(..._) {},\n    };\n  }\n\n  /* eslint-enable no-unused-vars */\n}\n/**\n * @param {{ ast: HTMLProgram; text: string; comments: CommentContent[] }} config\n * @returns {HTMLSourceCode}\n */\nfunction createHTMLSourceCode(config) {\n  return new HTMLSourceCode(config);\n}\n\n/**\n * @deprecated HTML does not have scopes\n * @param {HTMLProgram} node\n * @returns {Scope.Scope}\n */\nfunction createFakeGlobalScope(node) {\n  /** @type {Scope.Scope} */\n  const fakeGlobalScope = {\n    type: \"global\",\n    // @ts-ignore\n    block: node,\n    set: new Map(),\n    through: [],\n    childScopes: [],\n    // @ts-ignore\n    variableScope: null,\n    variables: [],\n    references: [],\n    functionExpressionScope: false,\n    isStrict: false,\n    upper: null,\n    implicit: {\n      variables: [],\n      set: new Map(),\n    },\n  };\n  fakeGlobalScope.variableScope = fakeGlobalScope;\n  return fakeGlobalScope;\n}\n\nmodule.exports = {\n  createHTMLSourceCode,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/languages/html-traversal-step.js",
    "content": "/**\n * @import {HTMLProgram} from \"@html-eslint/parser\"\n * @import {AnyHTMLNode} from \"@html-eslint/types\"\n * @import {AST} from \"eslint\"\n */\n\nconst { VisitNodeStep } = require(\"@eslint/plugin-kit\");\n\nconst STEP_PHASE = {\n  /** @type {1} */\n  ENTER: 1,\n  /** @type {2} */\n  EXIT: 2,\n};\n\nclass HTMLTraversalStep extends VisitNodeStep {\n  /**\n   * @param {Object} options\n   * @param {AnyHTMLNode | HTMLProgram} options.target\n   * @param {1 | 2} options.phase\n   * @param {any[]} options.args\n   */\n  constructor({ target, phase, args }) {\n    super({ target, phase, args });\n    this.target = target;\n  }\n}\n\nmodule.exports = {\n  HTMLTraversalStep,\n  STEP_PHASE,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/languages/types.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/languages/types.ts",
    "content": "import type {\n  HTMLComment,\n  HTMLProgram,\n  ParserOptions,\n} from \"@html-eslint/parser\";\nimport type { AnyHTMLNode, AnyToken } from \"@html-eslint/types\";\n\nexport type SourceCodeOptions = {\n  LangOptions: ParserOptions;\n  RootNode: HTMLProgram;\n  SyntaxElementWithLoc: AnyHTMLNode;\n  ConfigNode: HTMLComment;\n};\n\nexport type TokenOrHTMLComment = AnyToken | HTMLComment;\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/attrs-newline.js",
    "content": "/**\n * @import {\n *   RuleFixer,\n *   RuleModule\n * } from \"../types\"\n * @typedef {Object} MessageId\n * @property {\"closeStyleWrong\"} CLOSE_STYLE_WRONG\n * @property {\"newlineMissing\"} NEWLINE_MISSING\n *\n * @typedef {Object} Option\n * @property {\"sameline\" | \"newline\"} [option.closeStyle]\n * @property {number} [options.ifAttrsMoreThan]\n * @property {string[]} [options.skip]\n * @property {string[]} [options.inline]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\n/** @type {MessageId} */\nconst MESSAGE_ID = {\n  CLOSE_STYLE_WRONG: \"closeStyleWrong\",\n  NEWLINE_MISSING: \"newlineMissing\",\n};\n\n/** @type {Object<string, string[]>} */\nconst PRESETS = {\n  // From https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n  $inline: `\na\nabbr\nb\nbdi\nbdo\nbr\ncite\ncode\ndata\ndfn\nem\ni\nkbd\nmark\nq\nrp\nrt\nruby\ns\nsamp\nsmall\nspan\nstrong\nsub\nsup\ntime\nu\nvar\nwbr\n  `\n    .trim()\n    .split(`\\n`),\n};\n\n/**\n * Expand preset tokens (e.g. \"$inline\") into the corresponding tag list.\n *\n * @param {string[]} options\n * @returns {string[]}\n */\nfunction optionsOrPresets(options) {\n  const result = [];\n  for (const option of options) {\n    if (option in PRESETS) {\n      result.push(...PRESETS[option]);\n    } else {\n      result.push(option);\n    }\n  }\n  return result;\n}\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce newline between attributes\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: true,\n      url: getRuleUrl(\"attrs-newline\"),\n    },\n\n    fixable: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          closeStyle: {\n            enum: [\"newline\", \"sameline\"],\n          },\n          ifAttrsMoreThan: {\n            type: \"integer\",\n          },\n          skip: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          inline: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_ID.CLOSE_STYLE_WRONG]:\n        \"Closing bracket was on {{actual}}; expected {{expected}}\",\n      [MESSAGE_ID.NEWLINE_MISSING]: \"Newline expected before {{attrName}}\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    const attrMin =\n      typeof options.ifAttrsMoreThan !== \"number\" ? 2 : options.ifAttrsMoreThan;\n    const closeStyle = options.closeStyle || \"newline\";\n    const skipTags = optionsOrPresets(options.skip || []);\n    const inlineTags = optionsOrPresets(options.inline || []);\n\n    /**\n     * Tracks nesting depth inside `skip` elements. When > 0, the current node\n     * is a descendant of a skipped element.\n     *\n     * @type {number}\n     */\n    let skipDepth = 0;\n\n    return createVisitors(context, {\n      \"Tag:exit\"() {\n        if (skipDepth > 0) {\n          skipDepth--;\n        }\n      },\n\n      Tag(node) {\n        const tagName = node.name.toLowerCase();\n\n        // Inside a skip ancestor — skip this descendant too.\n        if (skipDepth > 0) {\n          skipDepth++;\n          return;\n        }\n\n        // This tag is in skip — suppress the rule AND its descendants.\n        if (skipTags.includes(tagName)) {\n          skipDepth++;\n          return;\n        }\n\n        // This tag is in inline — suppress only this tag; descendants are still checked.\n        if (inlineTags.includes(tagName)) {\n          return;\n        }\n\n        const shouldBeMultiline = node.attributes.length > attrMin;\n        if (!shouldBeMultiline) return;\n\n        /**\n         * This doesn't do any indentation, so the result will look silly.\n         * Indentation should be covered by the `indent` rule\n         *\n         * @param {RuleFixer} fixer\n         */\n        function fix(fixer) {\n          let expected = node.openStart.value;\n          for (const attr of node.attributes) {\n            expected += `\\n${attr.key.value}`;\n            if (attr.value) {\n              const startWrapper = attr.startWrapper\n                ? attr.startWrapper.value\n                : \"\";\n              const endWrapper = attr.endWrapper ? attr.endWrapper.value : \"\";\n              expected += `=${startWrapper}${attr.value.value}${endWrapper}`;\n            }\n          }\n\n          if (closeStyle === \"newline\") {\n            expected += \"\\n\";\n          } else if (node.selfClosing) {\n            expected += \" \";\n          }\n          expected += node.openEnd.value;\n\n          return fixer.replaceTextRange(\n            [node.openStart.range[0], node.openEnd.range[1]],\n            expected\n          );\n        }\n\n        let index = 0;\n        for (const attr of node.attributes) {\n          const attrPrevious = node.attributes[index - 1];\n          const relativeToNode = attrPrevious || node.openStart;\n          if (attr.loc.start.line === relativeToNode.loc.end.line) {\n            return context.report({\n              node,\n              data: {\n                attrName: attr.key.value,\n              },\n              fix,\n              messageId: MESSAGE_ID.NEWLINE_MISSING,\n            });\n          }\n          index += 1;\n        }\n\n        const attrLast = node.attributes[node.attributes.length - 1];\n        const closeStyleActual =\n          node.openEnd.loc.start.line === attrLast.loc.end.line\n            ? \"sameline\"\n            : \"newline\";\n        if (closeStyle !== closeStyleActual) {\n          return context.report({\n            node,\n            data: {\n              actual: closeStyleActual,\n              expected: closeStyle,\n            },\n            fix,\n            messageId: MESSAGE_ID.CLOSE_STYLE_WRONG,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/class-spacing.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst {\n  classSpacing,\n  CLASS_SPACING_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createAttributeValueAdapter } = require(\"../adapters/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"layout\",\n    docs: {\n      description: \"Disallow extra spacing in class attribute values\",\n      recommended: false,\n      category: RULE_CATEGORY.STYLE,\n      url: getRuleUrl(\"class-spacing\"),\n    },\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [CLASS_SPACING_MESSAGE_IDS.extraSpacing]:\n        \"Unexpected extra spacing in class attribute value\",\n    },\n  },\n\n  create(context) {\n    const { checkClassValue } = classSpacing();\n    return createVisitors(context, {\n      Attribute(node) {\n        if (node.key.value.toLowerCase() !== \"class\" || !node.value) {\n          return;\n        }\n\n        const adapter = createAttributeValueAdapter(node.value);\n        const result = checkClassValue(adapter);\n        for (const { loc, messageId, range } of result) {\n          context.report({\n            loc,\n            messageId,\n            fix(fixer) {\n              return fixer.removeRange(range);\n            },\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/css-no-empty-blocks.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst MESSAGE_IDS = {\n  EMPTY_BLOCK: \"emptyBlock\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallows empty CSS blocks in `<style>` tags.\",\n      recommended: false,\n      category: RULE_CATEGORY.BEST_PRACTICE,\n    },\n    messages: {\n      [MESSAGE_IDS.EMPTY_BLOCK]: \"Unexpected empty block found.\",\n    },\n  },\n  fixable: null,\n  schema: [],\n  create(context) {\n    return {\n      CssBlock(node) {\n        if (node.children.length === 0) {\n          context.report({\n            loc: node.loc,\n            messageId: MESSAGE_IDS.EMPTY_BLOCK,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/element-newline.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   CloseTag,\n *   OpenTagEnd,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {\n *   Line,\n *   RuleModule\n * } from \"../types\"\n * @typedef {AnyNode | Line} AnyNodeOrLine\n *\n * @typedef {Object} Option\n * @property {string[]} [Option.skip]\n * @property {string[]} [Option.inline]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst {\n  isTag,\n  isComment,\n  isText,\n  splitToLineNodes,\n  isLine,\n  isScript,\n  isStyle,\n  getNameOf,\n} = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  EXPECT_NEW_LINE_AFTER: \"expectAfter\",\n};\n\n/** @type {Object<string, string[]>} */\nconst PRESETS = {\n  // From https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n  $inline: `\na\nabbr\nb\nbdi\nbdo\nbr\ncite\ncode\ndata\ndfn\nem\ni\nkbd\nmark\nq\nrp\nrt\nruby\ns\nsamp\nsmall\nspan\nstrong\nsub\nsup\ntime\nu\nvar\nwbr\n  `\n    .trim()\n    .split(`\\n`),\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce newline between elements.\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: true,\n      url: getRuleUrl(\"element-newline\"),\n    },\n\n    fixable: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          inline: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n\n          skip: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.EXPECT_NEW_LINE_AFTER]:\n        \"There should be a linebreak after {{name}}.\",\n    },\n  },\n\n  create(context) {\n    const option = context.options[0] || {};\n    /** @type {string[]} */\n    const skipTags = option.skip || [\"pre\", \"code\"];\n    const inlineTags = optionsOrPresets(option.inline || []);\n\n    /**\n     * @param {AnyNodeOrLine[]} children\n     * @returns {Exclude<AnyNodeOrLine, Text>[]}\n     */\n    function getChildrenToCheck(children) {\n      /** @type {Exclude<AnyNodeOrLine, Text>[]} */\n      const childrenToCheck = [];\n\n      for (const child of children) {\n        if (isText(child)) {\n          const lines = splitToLineNodes(child);\n          childrenToCheck.push(...lines);\n          continue;\n        }\n        childrenToCheck.push(child);\n      }\n      return childrenToCheck.filter((child) => !isEmptyText(child));\n    }\n\n    /**\n     * @param {AnyNodeOrLine} before\n     * @param {AnyNodeOrLine} after\n     * @returns {boolean}\n     */\n    function isOnTheSameLine(before, after) {\n      return before.loc.end.line === after.loc.start.line;\n    }\n\n    /**\n     * @param {AnyNode} node\n     * @returns {boolean}\n     */\n    function shouldSkipChildren(node) {\n      if (isTag(node)) {\n        if (skipTags.includes(getNameOf(node))) {\n          return true;\n        }\n        if (node.children.some((child) => child.type === \"RawContent\")) {\n          return true;\n        }\n      }\n      return false;\n    }\n\n    /**\n     * @param {AnyNodeOrLine} node\n     * @returns {boolean}\n     */\n    function isInline(node) {\n      return (\n        isLine(node) || (isTag(node) && inlineTags.includes(getNameOf(node)))\n      );\n    }\n\n    /**\n     * @param {AnyNode[]} children\n     * @param {AnyNode} parent\n     * @param {[OpenTagEnd, CloseTag]} [wrapper]\n     */\n    function checkChildren(children, parent, wrapper) {\n      if (shouldSkipChildren(parent)) {\n        return;\n      }\n\n      const childrenToCheck = getChildrenToCheck(children);\n      const firstChild = childrenToCheck[0];\n      if (\n        wrapper &&\n        firstChild &&\n        childrenToCheck.some((child) => !isInline(child))\n      ) {\n        const open = wrapper[0];\n        if (isOnTheSameLine(open, firstChild)) {\n          context.report({\n            node: open,\n            messageId: MESSAGE_IDS.EXPECT_NEW_LINE_AFTER,\n            data: { name: getName(parent) },\n            fix(fixer) {\n              return fixer.insertTextAfter(open, `\\n`);\n            },\n          });\n        }\n      }\n\n      childrenToCheck.forEach((current, index) => {\n        const next = childrenToCheck[index + 1];\n\n        if (\n          !next ||\n          !isOnTheSameLine(current, next) ||\n          (isInline(current) && isInline(next))\n        ) {\n          return;\n        }\n\n        context.report({\n          node: current,\n          messageId: MESSAGE_IDS.EXPECT_NEW_LINE_AFTER,\n          data: { name: getName(current, { isClose: true }) },\n          fix(fixer) {\n            return fixer.insertTextAfter(current, `\\n`);\n          },\n        });\n      });\n\n      childrenToCheck.forEach((child) => {\n        if (isTag(child)) {\n          /** @type {[OpenTagEnd, CloseTag] | undefined} */\n          const wrapper = child.close\n            ? [child.openEnd, child.close]\n            : undefined;\n          checkChildren(child.children, child, wrapper);\n        }\n      });\n\n      const lastChild = childrenToCheck[childrenToCheck.length - 1];\n      if (\n        wrapper &&\n        lastChild &&\n        childrenToCheck.some((child) => !isInline(child))\n      ) {\n        const close = wrapper[1];\n        if (isOnTheSameLine(close, lastChild)) {\n          context.report({\n            node: lastChild,\n            messageId: MESSAGE_IDS.EXPECT_NEW_LINE_AFTER,\n            data: { name: getName(lastChild, { isClose: true }) },\n            fix(fixer) {\n              return fixer.insertTextAfter(lastChild, `\\n`);\n            },\n          });\n        }\n      }\n    }\n\n    /**\n     * @param {AnyNodeOrLine} node\n     * @returns {boolean}\n     */\n    function isEmptyText(node) {\n      return (\n        (isText(node) && node.value.trim().length === 0) ||\n        (isLine(node) && node.value.trim().length === 0)\n      );\n    }\n\n    /**\n     * @param {AnyNodeOrLine} node\n     * @param {{ isClose?: boolean }} options\n     */\n    function getName(node, options = {}) {\n      const isClose = options.isClose || false;\n      if (isTag(node)) {\n        if (isClose) {\n          return `</${node.name}>`;\n        }\n        return `<${node.name}>`;\n      }\n      if (isLine(node)) {\n        return \"text\";\n      }\n      if (isComment(node)) {\n        return \"comment\";\n      }\n      if (isScript(node)) {\n        if (isClose) {\n          return `</script>`;\n        }\n        return \"<script>\";\n      }\n      if (isStyle(node)) {\n        if (isClose) {\n          return `</style>`;\n        }\n        return \"<style>\";\n      }\n      return `<${node.type}>`;\n    }\n\n    /** @param {string[]} options */\n    function optionsOrPresets(options) {\n      const result = [];\n      for (const option of options) {\n        if (option in PRESETS) {\n          const preset = PRESETS[option];\n          result.push(...preset);\n        } else {\n          result.push(option);\n        }\n      }\n      return result;\n    }\n\n    return createVisitors(context, {\n      Document(node) {\n        checkChildren(node.children, node);\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/head-order.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { HtmlEslintAdapter } = require(\"./utils/capo-adapter\");\nconst { analyzeHeadWithOrdering, getWeight } = require(\"@rviscomi/capo.js\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { parseTemplateLiteral } = require(\"./utils/template-literal\");\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"./utils/settings\");\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\n\nconst MESSAGE_IDS = {\n  WRONG_ORDER: \"wrongOrder\",\n};\n\n/**\n * @typedef {Object} IgnorePattern\n * @property {string} [tagPattern] - Regex pattern for tag (e.g., \"script\",\n *   \"link\")\n * @property {string} [attrKeyPattern] - Regex pattern for attribute key (e.g.,\n *   \"rel\", \"src\")\n * @property {string} [attrValuePattern] - Regex pattern for attribute value\n */\n\n/**\n * @typedef {Object} RuleOptions\n * @property {IgnorePattern[]} [ignores] - Array of ignore pattern objects\n */\n\n/** @type {RuleModule<[RuleOptions?]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce optimal ordering of elements in `<head>`\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"head-order\"),\n    },\n\n    fixable: \"code\",\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          ignores: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              properties: {\n                tagPattern: {\n                  type: \"string\",\n                },\n                attrKeyPattern: {\n                  type: \"string\",\n                },\n                attrValuePattern: {\n                  type: \"string\",\n                },\n              },\n              additionalProperties: false,\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.WRONG_ORDER]:\n        \"{{nextCategory}} element should come before {{currentCategory}} element for optimal performance\",\n    },\n  },\n\n  create(context) {\n    const adapter = new HtmlEslintAdapter();\n    const sourceCode = getSourceCode(context);\n    /** @type {RuleOptions} */\n    const options = context.options[0] || {};\n    const ignorePatterns = (options.ignores || []).map((pattern) => ({\n      tagRegex: pattern.tagPattern ? new RegExp(pattern.tagPattern, \"u\") : null,\n      attrKeyRegex: pattern.attrKeyPattern\n        ? new RegExp(pattern.attrKeyPattern, \"u\")\n        : null,\n      attrValueRegex: pattern.attrValuePattern\n        ? new RegExp(pattern.attrValuePattern, \"u\")\n        : null,\n    }));\n\n    /**\n     * Check if a tag should be ignored based on ignore patterns or if it's a\n     * comment\n     *\n     * @param {any} element - Element node to check\n     * @returns {boolean} - True if the element should be ignored\n     */\n    function shouldIgnoreElement(element) {\n      // Ignore HTML comments\n      if (element.type === NODE_TYPES.Comment) {\n        return true;\n      }\n\n      return ignorePatterns.some(\n        ({ tagRegex, attrKeyRegex, attrValueRegex }) => {\n          /** @type {boolean[]} */\n          const checks = [];\n\n          if (tagRegex) {\n            const tagName = adapter.getTagName(element);\n            checks.push(tagRegex.test(tagName));\n          }\n\n          if (attrKeyRegex) {\n            const attrNames = adapter.getAttributeNames(element);\n            checks.push(attrNames.some((name) => attrKeyRegex.test(name)));\n          }\n\n          if (attrValueRegex) {\n            const attrNames = adapter.getAttributeNames(element);\n            const hasMatchingValue = attrNames.some((name) => {\n              const value = adapter.getAttribute(element, name);\n              return value !== null && attrValueRegex.test(value);\n            });\n            checks.push(hasMatchingValue);\n          }\n\n          // All specified patterns must match (AND condition)\n          return checks.length > 0 && checks.every((check) => check === true);\n        }\n      );\n    }\n\n    /**\n     * Process a head tag node and report violations\n     *\n     * @param {any} node - Head tag node to process\n     */\n    function processHeadTag(node) {\n      if (node.name !== \"head\") {\n        return;\n      }\n      const analysis = analyzeHeadWithOrdering(node, adapter);\n\n      if (analysis.orderingViolations.length === 0) {\n        return;\n      }\n\n      const children = adapter.getChildren(node);\n\n      // Filter violations to exclude ignored elements\n      const filteredViolations = analysis.orderingViolations.filter(\n        (violation) =>\n          !shouldIgnoreElement(violation.nextElement) &&\n          !shouldIgnoreElement(violation.currentElement)\n      );\n\n      for (const violation of filteredViolations) {\n        context.report({\n          node: violation.nextElement,\n          messageId: MESSAGE_IDS.WRONG_ORDER,\n          data: {\n            nextCategory: violation.nextCategory,\n            currentCategory: violation.currentCategory,\n          },\n          fix(fixer) {\n            // Separate children into ignored and non-ignored\n            const childrenWithIgnoreFlag = children.map((child) => ({\n              element: child,\n              ignored: shouldIgnoreElement(child),\n              originalIndex: children.indexOf(child),\n            }));\n\n            // Get non-ignored children and sort them\n            const nonIgnoredChildren = childrenWithIgnoreFlag\n              .filter((item) => !item.ignored)\n              .map((item) => item.element);\n\n            const sortedNonIgnored = [...nonIgnoredChildren].sort((a, b) => {\n              const weightA = getWeight(a, adapter);\n              const weightB = getWeight(b, adapter);\n              return weightB - weightA;\n            });\n\n            const fixes = [];\n\n            // Only replace non-ignored children\n            let sortedIndex = 0;\n            for (let i = 0; i < children.length; i++) {\n              const originalChild = children[i];\n\n              if (!shouldIgnoreElement(originalChild)) {\n                const sortedChild = sortedNonIgnored[sortedIndex];\n                sortedIndex++;\n\n                if (originalChild !== sortedChild) {\n                  // @ts-ignore\n                  const sortedText = sourceCode.getText(sortedChild);\n                  fixes.push(fixer.replaceText(originalChild, sortedText));\n                }\n              }\n            }\n\n            return fixes;\n          },\n        });\n      }\n    }\n\n    return {\n      Tag(node) {\n        processHeadTag(node);\n      },\n\n      TaggedTemplateExpression(node) {\n        if (shouldCheckTaggedTemplateExpression(node, context)) {\n          const visitor = {\n            Tag: processHeadTag,\n          };\n          parseTemplateLiteral(node.quasi, sourceCode, visitor);\n        }\n      },\n\n      TemplateLiteral(node) {\n        if (shouldCheckTemplateLiteral(node, context)) {\n          const visitor = {\n            Tag: processHeadTag,\n          };\n          parseTemplateLiteral(node, sourceCode, visitor);\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/id-naming-convention.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {\"camelCase\"\n *   | \"snake_case\"\n *   | \"PascalCase\"\n *   | \"kebab-case\"\n *   | \"regex\"} Option1\n *\n *\n * @typedef {Object} Option2\n * @property {string} pattern\n * @property {string} [flags]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst {\n  isCamelCase,\n  isSnakeCase,\n  isPascalCase,\n  isKebabCase,\n} = require(\"./utils/naming\");\nconst { findAttr, isAttributesEmpty, hasTemplate } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  WRONG: \"wrong\",\n};\n\nconst CONVENTIONS = {\n  CAMEL_CASE: \"camelCase\",\n  SNAKE_CASE: \"snake_case\",\n  PASCAL_CASE: \"PascalCase\",\n  KEBAB_CASE: \"kebab-case\",\n  REGEX: \"regex\",\n};\n\nconst CONVENTION_CHECKERS = {\n  [CONVENTIONS.CAMEL_CASE]: isCamelCase,\n  [CONVENTIONS.SNAKE_CASE]: isSnakeCase,\n  [CONVENTIONS.PASCAL_CASE]: isPascalCase,\n  [CONVENTIONS.KEBAB_CASE]: isKebabCase,\n};\n\n/** @type {RuleModule<[Option1, Option2]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce consistent naming of id attributes\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: false,\n      url: getRuleUrl(\"id-naming-convention\"),\n    },\n\n    fixable: null,\n    schema: [\n      {\n        enum: Object.values(CONVENTIONS),\n      },\n      {\n        type: \"object\",\n        properties: {\n          pattern: { type: \"string\" },\n          flags: { type: \"string\" },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.WRONG]:\n        \"The id '{{actual}}' is not matched with the {{convention}}.\",\n    },\n  },\n\n  create(context) {\n    const convention = context.options?.[0] ?? CONVENTIONS.SNAKE_CASE;\n\n    const checkNaming =\n      convention === CONVENTIONS.REGEX\n        ? (/** @type string */ name) =>\n            new RegExp(\n              context.options[1].pattern,\n              context.options[1].flags || \"\"\n            ).test(name)\n        : CONVENTION_CHECKERS[convention];\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      if (isAttributesEmpty(node)) {\n        return;\n      }\n      const idAttr = findAttr(node, \"id\");\n      if (\n        idAttr?.value &&\n        !hasTemplate(idAttr.value) &&\n        !checkNaming(idAttr.value.value)\n      ) {\n        context.report({\n          node: idAttr,\n          data: {\n            actual: idAttr.value.value,\n            convention,\n          },\n          messageId: MESSAGE_IDS.WRONG,\n        });\n      }\n    }\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function checkInTemplate(node) {\n      if (isAttributesEmpty(node)) {\n        return;\n      }\n      const idAttr = findAttr(node, \"id\");\n      if (\n        idAttr?.value &&\n        !hasTemplate(idAttr.value) &&\n        !checkNaming(idAttr.value.value)\n      ) {\n        context.report({\n          node: idAttr,\n          data: {\n            actual: idAttr.value.value,\n            convention,\n          },\n          messageId: MESSAGE_IDS.WRONG,\n        });\n      }\n    }\n\n    return createVisitors(\n      context,\n      {\n        Tag: check,\n        ScriptTag: check,\n        StyleTag: check,\n      },\n      {\n        Tag: checkInTemplate,\n        ScriptTag: checkInTemplate,\n        StyleTag: checkInTemplate,\n      }\n    );\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/indent/indent-level.js",
    "content": "/**\n * @import {AnyNode} from \"@html-eslint/types\"\n * @typedef {{ [key in AnyNode[\"type\"]]?: number }} IncLevelOptions\n *\n * @typedef {(node: AnyNode) => number} GetIncreasingLevel\n */\n\nclass IndentLevel {\n  /**\n   * @param {Object} config\n   * @param {GetIncreasingLevel} config.getIncreasingLevel\n   */\n  constructor(config) {\n    /**\n     * @private\n     * @member\n     * @type {number}\n     */\n    this.level = -1;\n    /**\n     * @private\n     * @member\n     * @type {number}\n     */\n    this.baseLevel = 0;\n    /**\n     * @private\n     * @member\n     */\n    this.getInc = config.getIncreasingLevel;\n  }\n\n  /** @returns {number} */\n  value() {\n    return this.level + this.baseLevel;\n  }\n\n  /** @param {AnyNode} node */\n  indent(node) {\n    this.level += this.getInc(node);\n  }\n\n  /** @param {AnyNode} node */\n  dedent(node) {\n    this.level -= this.getInc(node);\n  }\n\n  /** @param {number} base */\n  setBase(base) {\n    this.baseLevel = base;\n  }\n}\n\nmodule.exports = IndentLevel;\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/indent/indent.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   CloseTemplate,\n *   OpenTemplate,\n *   ScriptTag,\n *   StyleTag,\n *   Tag,\n *   TemplateLiteral,\n *   TemplateText,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {AST} from \"eslint\"\n * @import {\n *   Context,\n *   Line,\n *   RuleListener,\n *   RuleModule\n * } from \"../../types\"\n * @typedef {AnyNode | Line} AnyNodeOrLine\n *\n * @typedef {Object} IndentType\n * @property {\"tab\"} TAB\n * @property {\"space\"} SPACE\n *\n * @typedef {Object} MessageId\n * @property {\"wrongIndent\"} WRONG_INDENT\n *\n * @typedef {Object} IndentOptionInfo\n * @property {IndentType[\"TAB\"] | IndentType[\"SPACE\"]} indentType\n * @property {number} indentSize\n * @property {string} indentChar\n *\n * @typedef {\"tab\" | number} Option1\n *\n * @typedef {Object} Option2\n * @property {number} [Option2.Attribute]\n * @property {Record<string, number>} [Option2.tagChildrenIndent]\n * @property {boolean} [Option2.ignoreComment]\n * @property {\"first\" | \"templateTag\"} [Option2.templateIndentBase]\n */\n\nconst { parseTemplateLiteral } = require(\"../utils/template-literal\");\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { RULE_CATEGORY } = require(\"../../constants\");\nconst {\n  splitToLineNodes,\n  isLine,\n  isTag,\n  isScript,\n  isStyle,\n  isText,\n  isRangesOverlap,\n} = require(\"../utils/node\");\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"../utils/settings\");\nconst { getSourceCode } = require(\"../utils/source-code\");\nconst IndentLevel = require(\"./indent-level\");\n\n/** @type {MessageId} */\nconst MESSAGE_ID = {\n  WRONG_INDENT: \"wrongIndent\",\n};\n\n/** @type {IndentType} */\nconst INDENT_TYPES = {\n  TAB: \"tab\",\n  SPACE: \"space\",\n};\n\nconst IGNORING_NODES = [\"pre\", \"xmp\"];\n\n/** @type {RuleModule<[Option1, Option2]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce consistent indentation\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: true,\n    },\n\n    fixable: true,\n    schema: [\n      {\n        oneOf: [\n          {\n            enum: [\"tab\"],\n          },\n          {\n            type: \"integer\",\n            minimum: 0,\n          },\n        ],\n      },\n      {\n        type: \"object\",\n        properties: {\n          Attribute: {\n            type: \"integer\",\n            minimum: 1,\n            default: 1,\n          },\n          tagChildrenIndent: {\n            default: {},\n            type: \"object\",\n            patternProperties: {\n              \"^[a-z]+$\": {\n                type: \"integer\",\n                minimum: 0,\n              },\n            },\n            additionalProperties: false,\n          },\n          ignoreComment: {\n            type: \"boolean\",\n            default: false,\n          },\n          templateIndentBase: {\n            type: \"string\",\n            enum: [\"first\", \"templateTag\"],\n            default: \"templateTag\",\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_ID.WRONG_INDENT]:\n        \"Expected indentation of {{expected}} but found {{actual}}.\",\n    },\n  },\n  create(context) {\n    const sourceCode = getSourceCode(context);\n    const indentLevelOptions = (context.options && context.options[1]) || {};\n    const lines = sourceCode.getLines();\n    const ignoreComment = indentLevelOptions.ignoreComment === true;\n    const autoBaseIndent = indentLevelOptions.templateIndentBase === \"first\";\n    const { indentType, indentSize, indentChar } = getIndentOptionInfo(context);\n    /** @type {number[]} */\n    const visitedTextLines = [];\n    /**\n     * @param {Tag | ScriptTag | StyleTag | Text} node\n     * @returns {number}\n     */\n    function getTagIncreasingLevel(node) {\n      if (\n        node.parent &&\n        isTag(node.parent) &&\n        indentLevelOptions &&\n        typeof indentLevelOptions.tagChildrenIndent === \"object\" &&\n        indentLevelOptions.tagChildrenIndent\n      ) {\n        const option =\n          indentLevelOptions.tagChildrenIndent[node.parent.name.toLowerCase()];\n        if (typeof option === \"number\") {\n          return option;\n        }\n      }\n\n      return 1;\n    }\n\n    /**\n     * @param {AnyNode} node\n     * @returns {number}\n     */\n    function getIncreasingLevel(node) {\n      if (isLine(node)) {\n        return 1;\n      }\n      if (isTag(node) || isScript(node) || isStyle(node) || isText(node)) {\n        return getTagIncreasingLevel(node);\n      }\n      if (node.type === NODE_TYPES.Attribute) {\n        const optionIndent = indentLevelOptions[node.type];\n        if (typeof optionIndent === \"number\") {\n          return optionIndent;\n        }\n      }\n      return 1;\n    }\n\n    /**\n     * @param {TemplateLiteral} node\n     * @returns {number}\n     */\n    function getAutoBaseSpaces(node) {\n      if (!autoBaseIndent) {\n        return 0;\n      }\n      const startLineIndex = node.loc.start.line;\n      const endLineIndex = node.loc.end.line - 1;\n      const templateLines = lines.slice(startLineIndex, endLineIndex);\n      for (let i = 0; i < templateLines.length; i++) {\n        const line = templateLines[i];\n        if (line.trim()) {\n          return countLeftPadding(line);\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * @param {TemplateLiteral} node\n     * @returns {number}\n     */\n    function getTemplateLiteralBaseIndentLevel(node) {\n      if (autoBaseIndent) {\n        return 0;\n      }\n      // @ts-ignore\n      const lineIndex = node.loc.start.line - 1;\n      const line = lines[lineIndex];\n\n      const spaceCount = countLeftPadding(line);\n      if (indentType === \"space\") {\n        return Math.floor(spaceCount / indentSize) + 1;\n      } else {\n        return spaceCount + 1;\n      }\n    }\n\n    /**\n     * Returns true when a line with hasCloseTemplate should skip indent check.\n     * Skip when there is non-whitespace content before the close delimiter on\n     * the line, meaning the line is a template expression continuation rather\n     * than an HTML-structural closing line.\n     *\n     * In template literal context, additional ESLint token checks are applied\n     * to avoid false positives (e.g. `})}` or single-token expressions like\n     * `${\\ncontent}`).\n     *\n     * @param {Line} lineNode\n     * @param {Text[\"parts\"]} parts\n     * @param {boolean} inTemplateLiteral\n     * @returns {boolean}\n     */\n    function shouldSkipCloseTemplateLine(lineNode, parts, inTemplateLiteral) {\n      const sourceLines = sourceCode.getLines();\n      for (const part of parts || []) {\n        if (\n          part.type !== NODE_TYPES.Template ||\n          !part.close ||\n          !isRangesOverlap(part.close.range, lineNode.range)\n        ) {\n          continue;\n        }\n\n        // Skip this part if only whitespace precedes the close delimiter on the line\n        const closeLineContent = sourceLines[part.close.loc.start.line - 1];\n        const contentBeforeClose = closeLineContent.slice(\n          0,\n          part.close.loc.start.column\n        );\n        if (!contentBeforeClose.trim()) continue;\n\n        if (inTemplateLiteral) {\n          // In template literal context, use ESLint tokens for precise detection\n          // to avoid false positives (e.g. `})}` or `${\\ncontent}`)\n          const closeToken = sourceCode.getTokenByRangeStart(\n            part.close.range[0]\n          );\n          if (!closeToken) continue;\n\n          // Walk backward to find the leftmost token on the current line\n          let prevToken = sourceCode.getTokenBefore(closeToken);\n          let firstTokenOnLine = null;\n          while (\n            prevToken &&\n            prevToken.loc.start.line === lineNode.loc.start.line\n          ) {\n            firstTokenOnLine = prevToken;\n            prevToken = sourceCode.getTokenBefore(prevToken);\n          }\n\n          // No token before close delimiter → it is first → don't skip\n          if (!firstTokenOnLine) continue;\n\n          // Line starts with the same value as the close delimiter (e.g. `})}`) → don't skip\n          if (firstTokenOnLine.value === part.close.value) continue;\n\n          // If prevToken starts before the expression opened, it is the\n          // enclosing template literal — firstTokenOnLine is the only\n          // expression token, so don't skip (e.g. `${\\ncontent}`).\n          // Nested templates inside the expression have range[0] after\n          // part.open.range[1] and are not caught by this check.\n          if (\n            !prevToken ||\n            !part.open ||\n            prevToken.range[0] < part.open.range[1]\n          )\n            continue;\n        }\n\n        return true;\n      }\n      return false;\n    }\n\n    /**\n     * @param {number} baseLevel\n     * @param {number} baseSpaces\n     * @param {boolean} [inTemplateLiteral]\n     */\n    function createIndentVisitor(\n      baseLevel,\n      baseSpaces,\n      inTemplateLiteral = false\n    ) {\n      const indentLevel = new IndentLevel({\n        getIncreasingLevel,\n      });\n      indentLevel.setBase(baseLevel);\n\n      let parentIgnoringChildCount = 0;\n\n      /**\n       * @param {AnyNode | Line | TemplateText | OpenTemplate} node\n       * @returns {string}\n       */\n      function getActualIndent(node) {\n        const lines = sourceCode.getLines();\n        const line = lines[node.loc.start.line - 1];\n        let { column } = node.loc.start;\n\n        if (isLine(node)) {\n          column += countLeftPadding(node.value);\n        }\n\n        return line.slice(0, column);\n      }\n\n      /** @returns {string} */\n      function getExpectedIndent() {\n        let base = \"\";\n        if (indentType === \"space\") {\n          base = \" \".repeat(baseSpaces);\n        } else {\n          base = indentChar.repeat(baseSpaces);\n        }\n\n        return base + indentChar.repeat(indentLevel.value());\n      }\n\n      /**\n       * @param {string} actualIndent\n       * @param {number} expectedIndentSize\n       */\n      function getMessageData(actualIndent, expectedIndentSize) {\n        const actualTabs = (actualIndent.match(/\\t/g) || []).length;\n        const actualSpaces = (actualIndent.match(/[^\\S\\t\\n\\r]/g) || []).length;\n        let actual = \"\";\n        if (!actualTabs && !actualSpaces) {\n          actual = \"no indent\";\n        } else {\n          if (actualTabs) {\n            actual += `${actualTabs} tab`;\n          }\n          if (actualSpaces) {\n            if (actual) {\n              actual += \", \";\n            }\n            actual += `${actualSpaces} space`;\n          }\n        }\n\n        if (indentType === \"space\") {\n          expectedIndentSize *= indentSize;\n        }\n\n        return {\n          actual,\n          expected: `${expectedIndentSize} ${indentType}`,\n        };\n      }\n\n      /** @param {AnyNode | Line | TemplateText | OpenTemplate} node */\n      function checkIndent(node) {\n        if (parentIgnoringChildCount > 0) {\n          return;\n        }\n        const actualIndent = getActualIndent(node);\n        const expectedIndent = getExpectedIndent();\n        if (actualIndent.trim().length) {\n          return;\n        }\n        if (actualIndent !== expectedIndent) {\n          const targetNode = getIndentNodeToReport(node, actualIndent);\n          context.report({\n            loc: targetNode.loc,\n            messageId: MESSAGE_ID.WRONG_INDENT,\n            data: getMessageData(actualIndent, indentLevel.value()),\n            fix(fixer) {\n              return fixer.replaceTextRange(targetNode.range, expectedIndent);\n            },\n          });\n        }\n      }\n\n      /** @type {RuleListener} */\n      const commentVisitor = {\n        Comment(node) {\n          indentLevel.indent(node);\n        },\n        CommentOpen: checkIndent,\n        CommentContent(node) {\n          indentLevel.indent(node);\n          const lineNodes = splitToLineNodes(node);\n          lineNodes.forEach((lineNode) => {\n            if (\n              lineNode.isOverlapTemplate &&\n              !lineNode.hasCloseTemplate &&\n              !lineNode.hasOpenTemplate\n            ) {\n              return;\n            }\n            if (lineNode.value.trim().length) {\n              checkIndent(lineNode);\n            }\n          });\n        },\n        CommentClose: checkIndent,\n        \"Comment:exit\"(node) {\n          indentLevel.dedent(node);\n        },\n        \"CommentContent:exit\"(node) {\n          indentLevel.dedent(node);\n        },\n      };\n\n      /** @type {RuleListener} */\n      const visitor = {\n        Tag(node) {\n          if (IGNORING_NODES.includes(node.name)) {\n            parentIgnoringChildCount++;\n          }\n          indentLevel.indent(node);\n        },\n        ScriptTag(node) {\n          indentLevel.indent(node);\n        },\n        \"ScriptTag:exit\"(node) {\n          indentLevel.dedent(node);\n        },\n        OpenScriptTagStart: checkIndent,\n        OpenScriptTagEnd: checkIndent,\n        CloseScriptTag: checkIndent,\n        StyleTag(node) {\n          indentLevel.indent(node);\n        },\n        \"StyleTag:exit\"(node) {\n          indentLevel.dedent(node);\n        },\n        OpenStyleTagStart: checkIndent,\n        OpenStyleTagEnd: checkIndent,\n        CloseStyleTag: checkIndent,\n        OpenTagStart: checkIndent,\n        OpenTagEnd(node) {\n          checkIndent(node);\n        },\n        CloseTag: checkIndent,\n        \"Tag:exit\"(node) {\n          if (IGNORING_NODES.includes(node.name)) {\n            parentIgnoringChildCount--;\n          }\n          indentLevel.dedent(node);\n        },\n\n        Attribute(node) {\n          indentLevel.indent(node);\n        },\n        AttributeKey: checkIndent,\n        AttributeValue: checkIndent,\n        \"Attribute:exit\"(node) {\n          indentLevel.dedent(node);\n        },\n        Text(node) {\n          indentLevel.indent(node);\n          const lineNodes = splitToLineNodes(node);\n          lineNodes.forEach((lineNode) => {\n            if (visitedTextLines.includes(lineNode.loc.start.line)) {\n              return;\n            }\n            if (\n              lineNode.isOverlapTemplate &&\n              !lineNode.hasCloseTemplate &&\n              !lineNode.hasOpenTemplate\n            ) {\n              return;\n            }\n            if (\n              lineNode.hasCloseTemplate &&\n              !lineNode.hasOpenTemplate &&\n              shouldSkipCloseTemplateLine(\n                lineNode,\n                node.parts,\n                inTemplateLiteral\n              )\n            ) {\n              return;\n            }\n            if (lineNode.value.trim().length) {\n              visitedTextLines.push(lineNode.loc.start.line);\n              checkIndent(lineNode);\n            }\n          });\n        },\n        \"Text:exit\"(node) {\n          indentLevel.dedent(node);\n        },\n        ...(ignoreComment ? {} : commentVisitor),\n      };\n      return visitor;\n    }\n\n    return {\n      ...createIndentVisitor(0, 0),\n      \"TaggedTemplateExpression:exit\"(node) {\n        if (shouldCheckTaggedTemplateExpression(node, context)) {\n          const base = getTemplateLiteralBaseIndentLevel(node.quasi);\n          const baseSpaces = getAutoBaseSpaces(node.quasi);\n          parseTemplateLiteral(\n            node.quasi,\n            getSourceCode(context),\n            createIndentVisitor(base, baseSpaces, true)\n          );\n        }\n      },\n      \"TemplateLiteral:exit\"(node) {\n        if (shouldCheckTemplateLiteral(node, context)) {\n          const base = getTemplateLiteralBaseIndentLevel(node);\n          const baseSpaces = getAutoBaseSpaces(node);\n          parseTemplateLiteral(\n            node,\n            getSourceCode(context),\n            createIndentVisitor(base, baseSpaces, true)\n          );\n        }\n      },\n    };\n  },\n};\n\n/**\n * @param {AnyNodeOrLine | TemplateText | OpenTemplate | CloseTemplate} node\n * @param {string} actualIndent\n * @returns {{ range: AST.Range; loc: AST.SourceLocation }}\n */\nfunction getIndentNodeToReport(node, actualIndent) {\n  let rangeStart = node.range[0];\n\n  if (!isLine(node)) {\n    rangeStart -= actualIndent.length;\n  }\n\n  return {\n    range: [rangeStart, rangeStart + actualIndent.length],\n    loc: {\n      start: {\n        column: 0,\n        line: node.loc.start.line,\n      },\n      end: {\n        column: actualIndent.length,\n        line: node.loc.start.line,\n      },\n    },\n  };\n}\n\n/**\n * @param {string} str\n * @returns {number}\n */\nfunction countLeftPadding(str) {\n  return str.length - str.replace(/^[\\s\\t]+/, \"\").length;\n}\n\n/**\n * @param {Context<any[]>} context\n * @returns {IndentOptionInfo}\n */\nfunction getIndentOptionInfo({ options }) {\n  /** @type {IndentType[\"SPACE\"] | IndentType[\"TAB\"]} */\n  let indentType = INDENT_TYPES.SPACE;\n  let indentSize = 4;\n  if (options.length) {\n    if (options[0] === INDENT_TYPES.TAB) {\n      indentType = INDENT_TYPES.TAB;\n    } else {\n      indentSize = options[0];\n    }\n  }\n  const indentChar =\n    indentType === INDENT_TYPES.SPACE ? \" \".repeat(indentSize) : \"\\t\";\n  return { indentType, indentSize, indentChar };\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/indent/index.js",
    "content": "const indent = require(\"./indent\");\nmodule.exports = indent;\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/index.js",
    "content": "const requireLang = require(\"./require-lang\");\nconst requireImgAlt = require(\"./require-img-alt\");\nconst requireDoctype = require(\"./require-doctype\");\nconst requireTitle = require(\"./require-title\");\nconst noDuplicateId = require(\"./no-duplicate-id\");\nconst noInlineStyles = require(\"./no-inline-styles\");\nconst noMultipleH1 = require(\"./no-multiple-h1\");\nconst noExtraSpacingAttrs = require(\"./no-extra-spacing-attrs\");\nconst noExtraSpacingTags = require(\"./no-extra-spacing-tags\");\nconst noExtraSpacingText = require(\"./no-extra-spacing-text\");\nconst attrsNewline = require(\"./attrs-newline\");\nconst elementNewLine = require(\"./element-newline\");\nconst noSkipHeadingLevels = require(\"./no-skip-heading-levels\");\nconst indent = require(\"./indent\");\nconst requireLiContainer = require(\"./require-li-container\");\nconst quotes = require(\"./quotes\");\nconst idNamingConvention = require(\"./id-naming-convention\");\nconst noObsoleteTags = require(\"./no-obsolete-tags\");\nconst requireClosingTags = require(\"./require-closing-tags\");\nconst requireMetaDescription = require(\"./require-meta-description\");\nconst requireFrameTitle = require(\"./require-frame-title\");\nconst noNonScalableViewport = require(\"./no-non-scalable-viewport\");\nconst noPositiveTabindex = require(\"./no-positive-tabindex\");\nconst requireMetaViewport = require(\"./require-meta-viewport\");\nconst requireMetaCharset = require(\"./require-meta-charset\");\nconst noTargetBlank = require(\"./no-target-blank\");\nconst noDuplicateAttrs = require(\"./no-duplicate-attrs\");\nconst noAbstractRoles = require(\"./no-abstract-roles\");\nconst requireButtonType = require(\"./require-button-type\");\nconst noAriaHiddenBody = require(\"./no-aria-hidden-body\");\nconst noAriaHiddenOnFocusable = require(\"./no-aria-hidden-on-focusable\");\nconst noMultipleEmptyLines = require(\"./no-multiple-empty-lines\");\nconst noAccesskeyAttrs = require(\"./no-accesskey-attrs\");\nconst noRestrictedAttrs = require(\"./no-restricted-attrs\");\nconst noTrailingSpaces = require(\"./no-trailing-spaces\");\nconst requireAttrs = require(\"./require-attrs\");\nconst noRestrictedAttrValues = require(\"./no-restricted-attr-values\");\nconst noScriptStyleType = require(\"./no-script-style-type\");\nconst lowercase = require(\"./lowercase\");\nconst requireOpenGraphProtocol = require(\"./require-open-graph-protocol\");\nconst sortAttrs = require(\"./sort-attrs\");\nconst preferHttps = require(\"./prefer-https\");\nconst requireInputLabel = require(\"./require-input-label\");\nconst requireFormMethod = require(\"./require-form-method\");\nconst noHeadingInsideButton = require(\"./no-heading-inside-button\");\nconst noInvalidRole = require(\"./no-invalid-role\");\nconst noNestedInteractive = require(\"./no-nested-interactive\");\nconst maxElementDepth = require(\"./max-element-depth\");\nconst requireExplicitSize = require(\"./require-explicit-size\");\nconst useBaseLine = require(\"./use-baseline\");\nconst noDuplicateClass = require(\"./no-duplicate-class\");\nconst noEmptyHeadings = require(\"./no-empty-headings\");\nconst requireContent = require(\"./require-content\");\nconst requireDetailsSummary = require(\"./require-details-summary\");\nconst noInvalidEntity = require(\"./no-invalid-entity\");\nconst noDuplicateInHead = require(\"./no-duplicate-in-head\");\nconst noIneffectiveAttrs = require(\"./no-ineffective-attrs\");\nconst noRestrictedTags = require(\"./no-restricted-tags\");\nconst noWhitespaceOnlyChildren = require(\"./no-whitespace-only-children\");\nconst noObsoleteAttrs = require(\"./no-obsolete-attrs\");\nconst classSpacing = require(\"./class-spacing\");\nconst cssNoEmptyBlocks = require(\"./css-no-empty-blocks\");\nconst noRedundantRole = require(\"./no-redundant-role\");\nconst noInvalidAttrValue = require(\"./no-invalid-attr-value\");\nconst headOrder = require(\"./head-order\");\nconst svgRequireViewbox = require(\"./svg-require-viewbox\");\n// import new rule here ↑\n// DO NOT REMOVE THIS COMMENT\n\nconst rules = {\n  \"require-lang\": requireLang,\n  \"require-img-alt\": requireImgAlt,\n  \"require-doctype\": requireDoctype,\n  \"require-title\": requireTitle,\n  \"no-duplicate-id\": noDuplicateId,\n  \"no-inline-styles\": noInlineStyles,\n  \"no-multiple-h1\": noMultipleH1,\n  \"no-extra-spacing-attrs\": noExtraSpacingAttrs,\n  \"no-extra-spacing-tags\": noExtraSpacingTags,\n  \"no-extra-spacing-text\": noExtraSpacingText,\n  \"attrs-newline\": attrsNewline,\n  \"element-newline\": elementNewLine,\n  \"no-skip-heading-levels\": noSkipHeadingLevels,\n  \"require-li-container\": requireLiContainer,\n  indent: indent,\n  quotes: quotes,\n  \"id-naming-convention\": idNamingConvention,\n  \"no-obsolete-tags\": noObsoleteTags,\n  \"require-attrs\": requireAttrs,\n  \"require-closing-tags\": requireClosingTags,\n  \"require-meta-description\": requireMetaDescription,\n  \"require-frame-title\": requireFrameTitle,\n  \"no-non-scalable-viewport\": noNonScalableViewport,\n  \"no-positive-tabindex\": noPositiveTabindex,\n  \"require-meta-viewport\": requireMetaViewport,\n  \"require-meta-charset\": requireMetaCharset,\n  \"no-target-blank\": noTargetBlank,\n  \"no-duplicate-attrs\": noDuplicateAttrs,\n  \"no-abstract-roles\": noAbstractRoles,\n  \"require-button-type\": requireButtonType,\n  \"no-aria-hidden-body\": noAriaHiddenBody,\n  \"no-aria-hidden-on-focusable\": noAriaHiddenOnFocusable,\n  \"no-multiple-empty-lines\": noMultipleEmptyLines,\n  \"no-accesskey-attrs\": noAccesskeyAttrs,\n  \"no-restricted-attrs\": noRestrictedAttrs,\n  \"no-trailing-spaces\": noTrailingSpaces,\n  \"no-restricted-attr-values\": noRestrictedAttrValues,\n  \"no-script-style-type\": noScriptStyleType,\n  \"no-heading-inside-button\": noHeadingInsideButton,\n  \"no-invalid-role\": noInvalidRole,\n  \"no-nested-interactive\": noNestedInteractive,\n  lowercase: lowercase,\n  \"require-open-graph-protocol\": requireOpenGraphProtocol,\n  \"require-form-method\": requireFormMethod,\n  \"sort-attrs\": sortAttrs,\n  \"prefer-https\": preferHttps,\n  \"require-input-label\": requireInputLabel,\n  \"max-element-depth\": maxElementDepth,\n  \"require-explicit-size\": requireExplicitSize,\n  \"use-baseline\": useBaseLine,\n  \"no-duplicate-class\": noDuplicateClass,\n  \"no-empty-headings\": noEmptyHeadings,\n  \"require-content\": requireContent,\n  \"no-invalid-entity\": noInvalidEntity,\n  \"no-duplicate-in-head\": noDuplicateInHead,\n  \"no-ineffective-attrs\": noIneffectiveAttrs,\n  \"no-restricted-tags\": noRestrictedTags,\n  \"no-whitespace-only-children\": noWhitespaceOnlyChildren,\n  \"no-obsolete-attrs\": noObsoleteAttrs,\n  \"class-spacing\": classSpacing,\n  \"css-no-empty-blocks\": cssNoEmptyBlocks,\n  \"no-redundant-role\": noRedundantRole,\n  \"no-invalid-attr-value\": noInvalidAttrValue,\n  \"head-order\": headOrder,\n  \"require-details-summary\": requireDetailsSummary,\n  \"svg-require-viewbox\": svgRequireViewbox,\n  // export new rule here ↑\n  // DO NOT REMOVE THIS COMMENT\n};\n\nmodule.exports =\n  /** @type {Record<string, import(\"@eslint/core\").RuleDefinition>} */ (\n    /** @type {unknown} */ (rules)\n  );\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/lowercase.js",
    "content": "/**\n * @import {\n *   Doctype,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst SVG_CAMEL_CASE_ATTRIBUTES = require(\"../constants/svg-camel-case-attributes\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { hasTemplate, getNameOf } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"suggestion\",\n\n    docs: {\n      description: \"Enforce use of lowercase for tag and attribute names.\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: false,\n      url: getRuleUrl(\"lowercase\"),\n    },\n\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"'{{name}}' is not in lowercase.\",\n    },\n  },\n\n  create(context) {\n    const allowedAttrKeySet = new Set(SVG_CAMEL_CASE_ATTRIBUTES);\n    /** @type {Tag[]} */\n    const svgStack = [];\n\n    /** @param {Tag} node */\n    function enterSvg(node) {\n      svgStack.push(node);\n    }\n\n    function exitSvg() {\n      svgStack.pop();\n    }\n\n    /**\n     * @param {string} key\n     * @returns {boolean}\n     */\n    function isAllowedAttributeKey(key) {\n      return !!svgStack.length && allowedAttrKeySet.has(key);\n    }\n\n    /** @param {Tag | StyleTag | ScriptTag} node */\n    function check(node) {\n      const raw = node.openStart.value.slice(1);\n      const name = getNameOf(node);\n      if (\n        name !== raw &&\n        (svgStack.length === 0 || name.toLowerCase() === \"svg\")\n      ) {\n        context.report({\n          node: node.openStart,\n          messageId: MESSAGE_IDS.UNEXPECTED,\n          data: {\n            name: raw,\n          },\n          fix(fixer) {\n            const fixes = [\n              fixer.replaceTextRange(node.openStart.range, `<${name}`),\n            ];\n\n            if (node.close) {\n              fixes.push(\n                fixer.replaceTextRange(node.close.range, `</${name}>`)\n              );\n            }\n\n            return fixes;\n          },\n        });\n      }\n      if (node.attributes?.length) {\n        node.attributes.forEach((attribute) => {\n          if (isAllowedAttributeKey(attribute.key.value)) {\n            return;\n          }\n          if (hasTemplate(attribute.key)) {\n            return;\n          }\n          if (attribute.key.value !== attribute.key.value.toLowerCase()) {\n            context.report({\n              node: attribute.key,\n              messageId: MESSAGE_IDS.UNEXPECTED,\n              data: {\n                name: attribute.key.value,\n              },\n              fix(fixer) {\n                return fixer.replaceText(\n                  attribute.key,\n                  attribute.key.value.toLowerCase()\n                );\n              },\n            });\n          }\n        });\n      }\n    }\n\n    /** @param {Doctype} doctype */\n    function checkDoctype(doctype) {\n      if (doctype.open.value !== doctype.open.value.toLowerCase()) {\n        context.report({\n          node: doctype.open,\n          messageId: MESSAGE_IDS.UNEXPECTED,\n          data: {\n            name: doctype.open.value.slice(1),\n          },\n          fix(fixer) {\n            return fixer.replaceTextRange(doctype.open.range, \"<!doctype\");\n          },\n        });\n      }\n      if (doctype.attributes?.length) {\n        doctype.attributes.forEach((attribute) => {\n          if (\n            attribute.value &&\n            attribute.value.value !== attribute.value.value.toLowerCase()\n          ) {\n            context.report({\n              node: attribute.value,\n              messageId: MESSAGE_IDS.UNEXPECTED,\n              data: {\n                name: attribute.value.value,\n              },\n              fix(fixer) {\n                return fixer.replaceText(\n                  // @ts-ignore\n                  attribute.value,\n                  // @ts-ignore\n                  attribute.value.value.toLowerCase()\n                );\n              },\n            });\n          }\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name.toLocaleLowerCase() === \"svg\") {\n          enterSvg(node);\n        }\n        check(node);\n      },\n      \"Tag:exit\"(node) {\n        if (node.name.toLocaleLowerCase() === \"svg\") {\n          exitSvg();\n        }\n      },\n      StyleTag: check,\n      ScriptTag: check,\n      Doctype: checkDoctype,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/max-element-depth.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {number} [Option.max]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MAX_DEPTH_EXCEEDED: \"maxDepthExceeded\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce maximum element depth\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"max-element-depth\"),\n    },\n\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          max: {\n            type: \"integer\",\n            minimum: 1,\n            default: 32,\n          },\n        },\n        required: [\"max\"],\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.MAX_DEPTH_EXCEEDED]:\n        \"Expected the depth of nested elements to be <= {{needed}}, but found {{found}}\",\n    },\n  },\n\n  create(context) {\n    const maxDepth =\n      typeof context.options?.[0]?.max === \"number\"\n        ? context.options[0].max\n        : 32;\n\n    let depth = 0;\n\n    function resetDepth() {\n      depth = 0;\n    }\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function increaseDepth(node) {\n      depth++;\n      if (depth > maxDepth) {\n        context.report({\n          node,\n          messageId: MESSAGE_IDS.MAX_DEPTH_EXCEEDED,\n          data: {\n            needed: `${maxDepth}`,\n            found: String(depth),\n          },\n        });\n      }\n    }\n\n    function decreaseDepth() {\n      depth--;\n    }\n\n    return createVisitors(context, {\n      Document: resetDepth,\n      \"Document:exit\": resetDepth,\n      Tag: increaseDepth,\n      \"Tag:exit\": decreaseDepth,\n      ScriptTag: increaseDepth,\n      \"ScriptTag:exit\": decreaseDepth,\n      StyleTag: increaseDepth,\n      \"StyleTag:exit\": decreaseDepth,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-abstract-roles.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\nconst ABSTRACT_ROLE_SET = new Set([\n  \"command\",\n  \"composite\",\n  \"input\",\n  \"landmark\",\n  \"range\",\n  \"roletype\",\n  \"section\",\n  \"sectionhead\",\n  \"select\",\n  \"structure\",\n  \"widget\",\n  \"window\",\n]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow use of abstract roles\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-abstract-roles\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected use of an abstract role.\",\n    },\n  },\n\n  create(context) {\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      const roleAttr = findAttr(node, \"role\");\n      if (roleAttr?.value && ABSTRACT_ROLE_SET.has(roleAttr.value.value)) {\n        context.report({\n          messageId: MESSAGE_IDS.UNEXPECTED,\n          node: roleAttr,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      ScriptTag: check,\n      StyleTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-accesskey-attrs.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow use of accesskey attribute\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-accesskey-attrs\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected use of accesskey attribute.\",\n    },\n  },\n\n  create(context) {\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      const accessKeyAttr = findAttr(node, \"accesskey\");\n      if (accessKeyAttr) {\n        context.report({\n          node: accessKeyAttr,\n          messageId: MESSAGE_IDS.UNEXPECTED,\n        });\n      }\n    }\n    return createVisitors(context, {\n      Tag: check,\n      ScriptTag: check,\n      StyleTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-aria-hidden-body.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Disallow use of aria-hidden attributes on the `body` element.\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-aria-hidden-body\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected aria-hidden on body tag.\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"body\") {\n          return;\n        }\n        const ariaHiddenAttr = findAttr(node, \"aria-hidden\");\n        if (!ariaHiddenAttr) {\n          return;\n        }\n        if (ariaHiddenAttr.value?.parts.length) {\n          return;\n        }\n\n        if (ariaHiddenAttr.value?.value !== \"false\" || !ariaHiddenAttr.value) {\n          context.report({\n            node: ariaHiddenAttr,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-aria-hidden-on-focusable.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n// List of elements that are inherently focusable\nconst FOCUSABLE_ELEMENTS = new Set([\n  \"a\", // if href is present\n  \"button\",\n  \"input\",\n  \"select\",\n  \"textarea\",\n  \"video\", // if controls is present\n  \"audio\", // if controls is present\n  \"details\",\n  \"embed\",\n  \"iframe\",\n  \"summary\",\n]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: 'Disallow aria-hidden=\"true\" on focusable elements',\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-aria-hidden-on-focusable\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]:\n        'Unexpected aria-hidden=\"true\" on focusable element.',\n    },\n  },\n\n  create(context) {\n    /**\n     * Checks if an element is focusable\n     *\n     * @param {Tag} node\n     * @returns {boolean}\n     */\n    function isFocusable(node) {\n      const tagName = getNameOf(node);\n\n      const contentEditableAttr = findAttr(node, \"contenteditable\");\n      if (contentEditableAttr) {\n        const value = contentEditableAttr.value?.value.toLowerCase() ?? \"\";\n\n        if (value === \"\" || value === \"true\" || value === \"plaintext-only\") {\n          return true;\n        }\n      }\n\n      // Check for tabindex attribute\n      const tabIndexAttr = findAttr(node, \"tabindex\");\n      if (tabIndexAttr?.value) {\n        const tabIndexValue = tabIndexAttr.value.value;\n        // If tabindex is -1, the element is not focusable\n        if (tabIndexValue === \"-1\") {\n          return false;\n        }\n        // If tabindex is present and not -1, the element is focusable\n        return true;\n      }\n\n      // Special cases for elements that are only focusable with certain attributes\n      if (tagName === \"a\") {\n        return !!findAttr(node, \"href\");\n      }\n\n      if (tagName === \"audio\" || tagName === \"video\") {\n        return !!findAttr(node, \"controls\");\n      }\n\n      // Check if element is inherently focusable\n      return FOCUSABLE_ELEMENTS.has(tagName);\n    }\n\n    return createVisitors(context, {\n      Tag(node) {\n        const ariaHiddenAttr = findAttr(node, \"aria-hidden\");\n        if (!ariaHiddenAttr?.value) {\n          return;\n        }\n\n        // Only check for aria-hidden=\"true\"\n        if (ariaHiddenAttr.value.value !== \"true\") {\n          return;\n        }\n\n        // Check if the element is focusable\n        if (isFocusable(node)) {\n          context.report({\n            node: ariaHiddenAttr,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-duplicate-attrs.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {\n *   RuleModule,\n *   SuggestionReportDescriptor\n * } from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { hasTemplate } = require(\"./utils/node\");\n\nconst MESSAGE_IDS = {\n  DUPLICATE_ATTRS: \"duplicateAttrs\",\n  REMOVE_ATTR: \"removeAttr\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow duplicate attributes\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"no-duplicate-attrs\"),\n    },\n\n    fixable: null,\n    hasSuggestions: true,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.DUPLICATE_ATTRS]:\n        \"The attribute '{{attrName}}' is duplicated.\",\n      [MESSAGE_IDS.REMOVE_ATTR]:\n        \"Remove this duplicate '{{attrName}}' attribute.\",\n    },\n  },\n\n  create(context) {\n    /**\n     * @param {Attribute} node\n     * @returns {SuggestionReportDescriptor[]}\n     */\n    function getSuggestions(node) {\n      return [\n        {\n          messageId: MESSAGE_IDS.REMOVE_ATTR,\n          fix: (fixer) => fixer.removeRange(node.range),\n          data: {\n            attrName: node.key.value,\n          },\n        },\n      ];\n    }\n\n    /** @param {Tag | StyleTag | ScriptTag} node */\n    function check(node) {\n      if (Array.isArray(node.attributes)) {\n        const attrsSet = new Set();\n        node.attributes.forEach((attr) => {\n          if (hasTemplate(attr.key)) {\n            return;\n          }\n          if (attrsSet.has(attr.key.value.toLowerCase())) {\n            context.report({\n              node: attr,\n              data: {\n                attrName: attr.key.value,\n              },\n              messageId: MESSAGE_IDS.DUPLICATE_ATTRS,\n              suggest: getSuggestions(attr),\n            });\n          } else {\n            attrsSet.add(attr.key.value.toLowerCase());\n          }\n        });\n      }\n    }\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-duplicate-class.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst {\n  noDuplicateClass,\n  NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createAttributeValueAdapter } = require(\"../adapters/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow duplicate class names\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-duplicate-class\"),\n    },\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass]:\n        \"The class '{{className}}' is duplicated.\",\n    },\n  },\n\n  create(context) {\n    const { checkClassValue } = noDuplicateClass();\n\n    return createVisitors(context, {\n      Attribute(node) {\n        if (node.key.value.toLowerCase() !== \"class\" || !node.value) {\n          return;\n        }\n\n        const adapter = createAttributeValueAdapter(node.value);\n        const result = checkClassValue(adapter);\n\n        for (const { loc, messageId, range, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n            fix(fixer) {\n              return fixer.removeRange(range);\n            },\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-duplicate-id.js",
    "content": "/**\n * @import {\n *   AttributeValue,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { parseTemplateLiteral } = require(\"./utils/template-literal\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"./utils/settings\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  DUPLICATE_ID: \"duplicateId\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow duplicate id attributes\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"no-duplicate-id\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.DUPLICATE_ID]: \"The id '{{id}}' is duplicated.\",\n    },\n  },\n\n  create(context) {\n    const htmlIdAttrsMap = new Map();\n    /** @param {Map<string, AttributeValue[]>} map */\n    function createTagVisitor(map) {\n      /** @param {Tag} node */\n      return function (node) {\n        if (!node.attributes || node.attributes.length <= 0) {\n          return;\n        }\n        const idAttr = findAttr(node, \"id\");\n        if (idAttr?.value) {\n          if (!map.has(idAttr.value.value)) {\n            map.set(idAttr.value.value, []);\n          }\n          const nodes = map.get(idAttr.value.value);\n          if (nodes) {\n            nodes.push(idAttr.value);\n          }\n        }\n      };\n    }\n\n    /** @param {Map<string, AttributeValue[]>} map */\n    function report(map) {\n      map.forEach((attrs) => {\n        if (Array.isArray(attrs) && attrs.length > 1) {\n          attrs.forEach((attr) => {\n            context.report({\n              node: attr,\n              data: { id: attr.value },\n              messageId: MESSAGE_IDS.DUPLICATE_ID,\n            });\n          });\n        }\n      });\n    }\n\n    return {\n      Tag: createTagVisitor(htmlIdAttrsMap),\n      \"Document:exit\"() {\n        report(htmlIdAttrsMap);\n      },\n      TaggedTemplateExpression(node) {\n        const idAttrsMap = new Map();\n        if (shouldCheckTaggedTemplateExpression(node, context)) {\n          parseTemplateLiteral(node.quasi, getSourceCode(context), {\n            Tag: createTagVisitor(idAttrsMap),\n          });\n        }\n        report(idAttrsMap);\n      },\n      TemplateLiteral(node) {\n        const idAttrsMap = new Map();\n        if (shouldCheckTemplateLiteral(node, context)) {\n          parseTemplateLiteral(node, getSourceCode(context), {\n            Tag: createTagVisitor(idAttrsMap),\n          });\n        }\n        report(idAttrsMap);\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-duplicate-in-head.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { parseTemplateLiteral } = require(\"./utils/template-literal\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, getNameOf } = require(\"./utils/node\");\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"./utils/settings\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  DUPLICATE_TAG: \"duplicateTag\",\n};\n\n/**\n * Returns a formatted string representing a tag's key detail. E.g.,\n * meta[charset=UTF-8], meta[name=viewport], link[rel=canonical]\n *\n * @param {Tag} node\n * @returns {string | null}\n */\nfunction getTrackingKey(node) {\n  const tagName = getNameOf(node);\n\n  if ([\"title\", \"base\"].includes(tagName)) {\n    return tagName;\n  }\n\n  if (tagName === \"meta\") {\n    const charsetAttr = findAttr(node, \"charset\");\n    if (charsetAttr) {\n      return \"meta[charset]\";\n    }\n\n    const nameAttr = findAttr(node, \"name\");\n    if (nameAttr?.value?.value === \"viewport\") {\n      return \"meta[name=viewport]\";\n    }\n  }\n\n  if (tagName === \"link\") {\n    const relAttr = findAttr(node, \"rel\");\n    const hrefAttr = findAttr(node, \"href\");\n    if (relAttr?.value?.value === \"canonical\" && hrefAttr) {\n      return \"link[rel=canonical]\";\n    }\n  }\n\n  return null;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow duplicate tags in `<head>`\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-duplicate-in-head\"),\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.DUPLICATE_TAG]: \"Duplicate <{{tag}}> tag in <head>.\",\n    },\n  },\n\n  create(context) {\n    const htmlTagsMap = new Map();\n    let headCount = 0;\n\n    /**\n     * @param {Map<string, Tag[]>} map\n     * @param {{ count: number } | null} headCountRef\n     */\n    function createTagVisitor(map, headCountRef = null) {\n      return {\n        /** @param {Tag} node */\n        Tag(node) {\n          const tagName = getNameOf(node);\n\n          if (tagName === \"head\") {\n            if (headCountRef !== null) {\n              headCountRef.count++;\n            } else {\n              headCount++;\n            }\n            return;\n          }\n\n          const currentHeadCount = headCountRef?.count ?? headCount;\n          if (currentHeadCount === 0) return;\n\n          const trackingKey = getTrackingKey(node);\n          if (typeof trackingKey !== \"string\") return;\n\n          if (!map.has(trackingKey)) {\n            map.set(trackingKey, []);\n          }\n\n          const nodes = map.get(trackingKey);\n          if (nodes) {\n            nodes.push(node);\n          }\n        },\n\n        /** @param {Tag} node */\n        \"Tag:exit\"(node) {\n          const tagName = getNameOf(node);\n          if (tagName === \"head\") {\n            if (headCountRef !== null) {\n              headCountRef.count--;\n            } else {\n              headCount--;\n            }\n          }\n        },\n      };\n    }\n\n    /** @param {Map<string, Tag[]>} map */\n    function report(map) {\n      map.forEach((tags, tagKey) => {\n        if (Array.isArray(tags) && tags.length > 1) {\n          tags.slice(1).forEach((tag) => {\n            context.report({\n              node: tag,\n              data: { tag: tagKey },\n              messageId: MESSAGE_IDS.DUPLICATE_TAG,\n            });\n          });\n        }\n      });\n    }\n\n    const htmlVisitor = createTagVisitor(htmlTagsMap);\n\n    return {\n      Tag: htmlVisitor.Tag,\n      \"Tag:exit\": htmlVisitor[\"Tag:exit\"],\n\n      \"Document:exit\"() {\n        report(htmlTagsMap);\n      },\n\n      TaggedTemplateExpression(node) {\n        const tagsMap = new Map();\n        const headCountRef = { count: 0 };\n\n        if (shouldCheckTaggedTemplateExpression(node, context)) {\n          const visitor = createTagVisitor(tagsMap, headCountRef);\n          parseTemplateLiteral(node.quasi, getSourceCode(context), visitor);\n          report(tagsMap);\n        }\n      },\n\n      TemplateLiteral(node) {\n        const tagsMap = new Map();\n        const headCountRef = { count: 0 };\n\n        if (shouldCheckTemplateLiteral(node, context)) {\n          const visitor = createTagVisitor(tagsMap, headCountRef);\n          parseTemplateLiteral(node, getSourceCode(context), visitor);\n          report(tagsMap);\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-empty-headings.js",
    "content": "/**\n * @import {\n *   Tag,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, isTag, isText, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  EMPTY_HEADING: \"emptyHeading\",\n  INACCESSIBLE_HEADING: \"inaccessibleHeading\",\n};\n\nconst HEADING_NAMES = new Set([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\n/** @param {Tag} node */\nfunction isAriaHidden(node) {\n  const ariaHiddenAttr = findAttr(node, \"aria-hidden\");\n  return ariaHiddenAttr?.value?.value === \"true\";\n}\n\n/**\n * @param {Tag} node\n * @returns {boolean}\n */\nfunction isRoleHeading(node) {\n  const roleAttr = findAttr(node, \"role\");\n  return roleAttr?.value?.value === \"heading\";\n}\n\n/**\n * @param {Tag} node\n * @returns {string}\n */\nfunction getAltText(node) {\n  if (getNameOf(node) === \"img\") {\n    const altAttr = findAttr(node, \"alt\");\n    if (altAttr?.value?.value) {\n      return altAttr.value.value;\n    }\n  }\n  return \"\";\n}\n\n/**\n * @param {Text | Tag} node\n * @returns {string}\n */\nfunction getAllText(node) {\n  if (!isTag(node)) return \"\";\n\n  let text = \"\";\n  for (const child of node.children) {\n    if (isText(child)) {\n      text += child.value.trim();\n    } else if (isTag(child)) {\n      text += getAllText(child) || getAltText(child);\n    }\n  }\n  return text;\n}\n\n/**\n * @param {Text | Tag} node\n * @returns {string}\n */\nfunction getAccessibleText(node) {\n  if (!isTag(node) || !node.children.length) return \"\";\n  let text = \"\";\n  for (const child of node.children) {\n    if (isText(child)) {\n      text += child.value.trim();\n    } else if (isTag(child) && !isAriaHidden(child)) {\n      text += getAccessibleText(child) || getAltText(child);\n    }\n  }\n  return text;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow empty or inaccessible headings.\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-empty-headings\"),\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.EMPTY_HEADING]: \"Headings must not be empty.\",\n      [MESSAGE_IDS.INACCESSIBLE_HEADING]:\n        \"Heading text is inaccessible to assistive technology.\",\n    },\n  },\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        const tagName = getNameOf(node);\n        const isHeadingTag = HEADING_NAMES.has(tagName);\n        const isRoleHeadingEl = isRoleHeading(node);\n        if (!isHeadingTag && !isRoleHeadingEl) return;\n\n        // Gather all text (including aria-hidden)\n        const allText = getAllText(node);\n        if (!allText) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.EMPTY_HEADING,\n          });\n          return;\n        }\n        // Gather accessible text (not aria-hidden)\n        const accessibleText = getAccessibleText(node);\n        if (!accessibleText) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.INACCESSIBLE_HEADING,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-extra-spacing-attrs.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Attribute,\n *   OpenScriptTagStart,\n *   OpenStyleTagStart,\n *   OpenTagStart,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {boolean} [Option.disallowInAssignment]\n * @property {boolean} [Option.disallowMissing]\n * @property {boolean} [Option.disallowTabs]\n * @property {boolean} [Option.enforceBeforeSelfClose]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getLocBetween } = require(\"./utils/node\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  EXTRA_BETWEEN: \"unexpectedBetween\",\n  EXTRA_AFTER: \"unexpectedAfter\",\n  EXTRA_BEFORE: \"unexpectedBefore\",\n  EXTRA_BEFORE_CLOSE: \"unexpectedBeforeClose\",\n  EXTRA_IN_ASSIGNMENT: \"unexpectedInAssignment\",\n  MISSING_BEFORE: \"missingBefore\",\n  MISSING_BEFORE_SELF_CLOSE: \"missingBeforeSelfClose\",\n  EXTRA_BEFORE_SELF_CLOSE: \"unexpectedBeforeSelfClose\",\n  EXTRA_TAB_BEFORE: \"unexpectedTabBefore\",\n  EXTRA_TAB_BEFORE_SELF_CLOSE: \"unexpectedTabBeforeSelfClose\",\n  EXTRA_TAB_BETWEEN: \"unexpectedTabBetween\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    deprecated: true,\n    replacedBy: [\"no-extra-spacing-tags\"],\n\n    docs: {\n      description: \"Disallow extra spacing around attributes\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: true,\n      url: getRuleUrl(\"no-extra-spacing-attrs\"),\n    },\n\n    fixable: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          disallowInAssignment: {\n            type: \"boolean\",\n          },\n          disallowMissing: {\n            type: \"boolean\",\n          },\n          disallowTabs: {\n            type: \"boolean\",\n          },\n          enforceBeforeSelfClose: {\n            type: \"boolean\",\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.EXTRA_BETWEEN]: \"Unexpected space between attributes\",\n      [MESSAGE_IDS.EXTRA_AFTER]: \"Unexpected space after attribute\",\n      [MESSAGE_IDS.EXTRA_BEFORE]: \"Unexpected space before attribute\",\n      [MESSAGE_IDS.EXTRA_BEFORE_CLOSE]: \"Unexpected space before closing\",\n      [MESSAGE_IDS.EXTRA_IN_ASSIGNMENT]:\n        \"Unexpected space in attribute assignment\",\n      [MESSAGE_IDS.MISSING_BEFORE_SELF_CLOSE]:\n        \"Missing space before self closing\",\n      [MESSAGE_IDS.EXTRA_BEFORE_SELF_CLOSE]:\n        \"Unexpected extra spaces before self closing\",\n      [MESSAGE_IDS.MISSING_BEFORE]: \"Missing space before attribute\",\n      [MESSAGE_IDS.EXTRA_TAB_BEFORE]:\n        \"Unexpected tab before attribute; use space instead\",\n      [MESSAGE_IDS.EXTRA_TAB_BEFORE_SELF_CLOSE]:\n        \"Unexpected tab before self closing; use space instead\",\n      [MESSAGE_IDS.EXTRA_TAB_BETWEEN]:\n        \"Unexpected tab between attributes; use space instead\",\n    },\n  },\n  create(context) {\n    const enforceBeforeSelfClose = !!(context.options[0] || {})\n      .enforceBeforeSelfClose;\n    const disallowMissing = !!(context.options[0] || {}).disallowMissing;\n    const disallowTabs = !!(context.options[0] || {}).disallowTabs;\n    const disallowInAssignment = !!(context.options[0] || [])\n      .disallowInAssignment;\n\n    const sourceCode = getSourceCode(context).text;\n\n    /** @param {Attribute[]} attrs */\n    function checkExtraSpacesBetweenAttrs(attrs) {\n      attrs.forEach((current, index, attrs) => {\n        if (index >= attrs.length - 1) {\n          return;\n        }\n        const after = attrs[index + 1];\n        if (current.loc.end.line !== after.loc.start.line) {\n          // skip the attributes on the other line\n          return;\n        }\n        const spacesBetween = after.loc.start.column - current.loc.end.column;\n        if (spacesBetween > 1) {\n          context.report({\n            loc: getLocBetween(current, after),\n            messageId: MESSAGE_IDS.EXTRA_BETWEEN,\n            fix(fixer) {\n              return fixer.replaceTextRange(\n                [current.range[1], after.range[0]],\n                ` `\n              );\n            },\n          });\n        } else if (disallowMissing && spacesBetween < 1) {\n          context.report({\n            loc: after.loc,\n            messageId: MESSAGE_IDS.MISSING_BEFORE,\n            fix(fixer) {\n              return fixer.insertTextAfter(current, \" \");\n            },\n          });\n        } else if (disallowTabs) {\n          if (sourceCode[current.range[1]] === `\\t`) {\n            context.report({\n              loc: getLocBetween(current, after),\n              messageId: MESSAGE_IDS.EXTRA_TAB_BETWEEN,\n              fix(fixer) {\n                return fixer.replaceTextRange(\n                  [current.range[1], after.range[0]],\n                  ` `\n                );\n              },\n            });\n          }\n        }\n      });\n    }\n\n    /**\n     * @param {OpenScriptTagStart | OpenTagStart | OpenStyleTagStart} node\n     * @param {Attribute} firstAttr\n     * @returns\n     */\n    function checkExtraSpaceBefore(node, firstAttr) {\n      if (node.loc.start.line !== firstAttr.loc.start.line) {\n        // skip the attribute on the different line with the start tag\n        return;\n      }\n\n      const spacesBetween = firstAttr.loc.start.column - node.loc.end.column;\n      if (spacesBetween >= 2) {\n        context.report({\n          loc: getLocBetween(node, firstAttr),\n\n          messageId: MESSAGE_IDS.EXTRA_BEFORE,\n          fix(fixer) {\n            return fixer.removeRange([\n              firstAttr.range[0] - spacesBetween + 1,\n              firstAttr.range[0],\n            ]);\n          },\n        });\n      } else if (disallowTabs) {\n        if (sourceCode[firstAttr.range[0] - 1] === `\\t`) {\n          context.report({\n            loc: firstAttr.loc,\n            messageId: MESSAGE_IDS.EXTRA_TAB_BEFORE,\n            fix(fixer) {\n              return fixer.replaceTextRange(\n                [firstAttr.range[0] - 1, firstAttr.range[0]],\n                ` `\n              );\n            },\n          });\n        }\n      }\n    }\n    /**\n     * @param {Tag | StyleTag | ScriptTag} node\n     * @returns\n     */\n    function check(node) {\n      if (!node.attributes) {\n        return;\n      }\n\n      if (node.attributes.length) {\n        checkExtraSpaceBefore(node.openStart, node.attributes[0]);\n\n        for (const attr of node.attributes) {\n          if (attr.startWrapper && attr.value) {\n            if (\n              disallowInAssignment &&\n              attr.startWrapper.loc.start.column - attr.key.loc.end.column > 1\n            ) {\n              const start = attr.key.range[1];\n              const end = attr.startWrapper.range[0];\n              context.report({\n                node: attr,\n                messageId: MESSAGE_IDS.EXTRA_IN_ASSIGNMENT,\n                fix(fixer) {\n                  return fixer.replaceTextRange([start, end], `=`);\n                },\n              });\n            }\n          }\n        }\n      }\n\n      if (node.openEnd) {\n        checkExtraSpacesBetweenAttrs(node.attributes);\n\n        const lastAttr = node.attributes[node.attributes.length - 1];\n        const nodeBeforeEnd =\n          node.attributes.length === 0 ? node.openStart : lastAttr;\n\n        if (nodeBeforeEnd.loc.end.line !== node.openEnd.loc.start.line) {\n          return;\n        }\n\n        const isSelfClosing = node.openEnd.value === \"/>\";\n\n        const spacesBetween =\n          node.openEnd.loc.start.column - nodeBeforeEnd.loc.end.column;\n        const locBetween = getLocBetween(nodeBeforeEnd, node.openEnd);\n\n        if (isSelfClosing && enforceBeforeSelfClose) {\n          if (spacesBetween < 1) {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.MISSING_BEFORE_SELF_CLOSE,\n              fix(fixer) {\n                return fixer.insertTextAfter(nodeBeforeEnd, \" \");\n              },\n            });\n          } else if (spacesBetween === 1) {\n            if (\n              disallowTabs &&\n              sourceCode[node.openEnd.range[0] - 1] === `\\t`\n            ) {\n              context.report({\n                loc: node.openEnd.loc,\n                messageId: MESSAGE_IDS.EXTRA_TAB_BEFORE_SELF_CLOSE,\n                fix(fixer) {\n                  return fixer.replaceTextRange(\n                    [node.openEnd.range[0] - 1, node.openEnd.range[0]],\n                    ` `\n                  );\n                },\n              });\n            }\n          } else {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.EXTRA_BEFORE_SELF_CLOSE,\n              fix(fixer) {\n                return fixer.removeRange([\n                  nodeBeforeEnd.range[1] + 1,\n                  node.openEnd.range[0],\n                ]);\n              },\n            });\n          }\n\n          return;\n        }\n\n        if (spacesBetween > 0) {\n          if (node.attributes.length > 0) {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.EXTRA_AFTER,\n              fix(fixer) {\n                return fixer.removeRange([\n                  lastAttr.range[1],\n                  node.openEnd.range[0],\n                ]);\n              },\n            });\n          } else {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.EXTRA_BEFORE_CLOSE,\n              fix(fixer) {\n                return fixer.removeRange([\n                  node.openStart.range[1],\n                  node.openEnd.range[0],\n                ]);\n              },\n            });\n          }\n        }\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-extra-spacing-tags.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Attribute,\n *   OpenScriptTagStart,\n *   OpenStyleTagStart,\n *   OpenTagStart,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {boolean} [Option.disallowInAssignment]\n * @property {boolean} [Option.disallowMissing]\n * @property {boolean} [Option.disallowTabs]\n * @property {boolean} [Option.enforceBeforeSelfClose]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getLocBetween } = require(\"./utils/node\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  EXTRA_BETWEEN: \"unexpectedBetween\",\n  EXTRA_AFTER: \"unexpectedAfter\",\n  EXTRA_BEFORE: \"unexpectedBefore\",\n  EXTRA_BEFORE_CLOSE: \"unexpectedBeforeClose\",\n  EXTRA_IN_ASSIGNMENT: \"unexpectedInAssignment\",\n  MISSING_BEFORE: \"missingBefore\",\n  MISSING_BEFORE_SELF_CLOSE: \"missingBeforeSelfClose\",\n  EXTRA_BEFORE_SELF_CLOSE: \"unexpectedBeforeSelfClose\",\n  EXTRA_TAB_BEFORE: \"unexpectedTabBefore\",\n  EXTRA_TAB_BEFORE_SELF_CLOSE: \"unexpectedTabBeforeSelfClose\",\n  EXTRA_TAB_BETWEEN: \"unexpectedTabBetween\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow extra spacing inside tags\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: true,\n      url: getRuleUrl(\"no-extra-spacing-tags\"),\n    },\n\n    fixable: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          disallowInAssignment: {\n            type: \"boolean\",\n          },\n          disallowMissing: {\n            type: \"boolean\",\n          },\n          disallowTabs: {\n            type: \"boolean\",\n          },\n          enforceBeforeSelfClose: {\n            type: \"boolean\",\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.EXTRA_BETWEEN]: \"Unexpected space between attributes\",\n      [MESSAGE_IDS.EXTRA_AFTER]: \"Unexpected space after attribute\",\n      [MESSAGE_IDS.EXTRA_BEFORE]: \"Unexpected space before attribute\",\n      [MESSAGE_IDS.EXTRA_BEFORE_CLOSE]: \"Unexpected space before closing\",\n      [MESSAGE_IDS.EXTRA_IN_ASSIGNMENT]:\n        \"Unexpected space in attribute assignment\",\n      [MESSAGE_IDS.MISSING_BEFORE_SELF_CLOSE]:\n        \"Missing space before self closing\",\n      [MESSAGE_IDS.EXTRA_BEFORE_SELF_CLOSE]:\n        \"Unexpected extra spaces before self closing\",\n      [MESSAGE_IDS.MISSING_BEFORE]: \"Missing space before attribute\",\n      [MESSAGE_IDS.EXTRA_TAB_BEFORE]:\n        \"Unexpected tab before attribute; use space instead\",\n      [MESSAGE_IDS.EXTRA_TAB_BEFORE_SELF_CLOSE]:\n        \"Unexpected tab before self closing; use space instead\",\n      [MESSAGE_IDS.EXTRA_TAB_BETWEEN]:\n        \"Unexpected tab between attributes; use space instead\",\n    },\n  },\n  create(context) {\n    const enforceBeforeSelfClose = !!(context.options[0] || {})\n      .enforceBeforeSelfClose;\n    const disallowMissing = !!(context.options[0] || {}).disallowMissing;\n    const disallowTabs = !!(context.options[0] || {}).disallowTabs;\n    const disallowInAssignment = !!(context.options[0] || [])\n      .disallowInAssignment;\n\n    const sourceCode = getSourceCode(context).text;\n\n    /** @param {Attribute[]} attrs */\n    function checkExtraSpacesBetweenAttrs(attrs) {\n      attrs.forEach((current, index, attrs) => {\n        if (index >= attrs.length - 1) {\n          return;\n        }\n        const after = attrs[index + 1];\n        if (current.loc.end.line !== after.loc.start.line) {\n          // skip the attributes on the other line\n          return;\n        }\n        const spacesBetween = after.loc.start.column - current.loc.end.column;\n        if (spacesBetween > 1) {\n          context.report({\n            loc: getLocBetween(current, after),\n            messageId: MESSAGE_IDS.EXTRA_BETWEEN,\n            fix(fixer) {\n              return fixer.replaceTextRange(\n                [current.range[1], after.range[0]],\n                ` `\n              );\n            },\n          });\n        } else if (disallowMissing && spacesBetween < 1) {\n          context.report({\n            loc: after.loc,\n            messageId: MESSAGE_IDS.MISSING_BEFORE,\n            fix(fixer) {\n              return fixer.insertTextAfter(current, \" \");\n            },\n          });\n        } else if (disallowTabs) {\n          if (sourceCode[current.range[1]] === `\\t`) {\n            context.report({\n              loc: getLocBetween(current, after),\n              messageId: MESSAGE_IDS.EXTRA_TAB_BETWEEN,\n              fix(fixer) {\n                return fixer.replaceTextRange(\n                  [current.range[1], after.range[0]],\n                  ` `\n                );\n              },\n            });\n          }\n        }\n      });\n    }\n\n    /**\n     * @param {OpenScriptTagStart | OpenTagStart | OpenStyleTagStart} node\n     * @param {Attribute} firstAttr\n     * @returns\n     */\n    function checkExtraSpaceBefore(node, firstAttr) {\n      if (node.loc.start.line !== firstAttr.loc.start.line) {\n        // skip the attribute on the different line with the start tag\n        return;\n      }\n\n      const spacesBetween = firstAttr.loc.start.column - node.loc.end.column;\n      if (spacesBetween >= 2) {\n        context.report({\n          loc: getLocBetween(node, firstAttr),\n\n          messageId: MESSAGE_IDS.EXTRA_BEFORE,\n          fix(fixer) {\n            return fixer.removeRange([\n              firstAttr.range[0] - spacesBetween + 1,\n              firstAttr.range[0],\n            ]);\n          },\n        });\n      } else if (disallowTabs) {\n        if (sourceCode[firstAttr.range[0] - 1] === `\\t`) {\n          context.report({\n            loc: firstAttr.loc,\n            messageId: MESSAGE_IDS.EXTRA_TAB_BEFORE,\n            fix(fixer) {\n              return fixer.replaceTextRange(\n                [firstAttr.range[0] - 1, firstAttr.range[0]],\n                ` `\n              );\n            },\n          });\n        }\n      }\n    }\n    /**\n     * @param {Tag | StyleTag | ScriptTag} node\n     * @returns\n     */\n    function check(node) {\n      if (!node.attributes) {\n        return;\n      }\n\n      if (node.attributes.length) {\n        checkExtraSpaceBefore(node.openStart, node.attributes[0]);\n\n        for (const attr of node.attributes) {\n          if (attr.startWrapper && attr.value) {\n            if (\n              disallowInAssignment &&\n              attr.startWrapper.loc.start.column - attr.key.loc.end.column > 1\n            ) {\n              const start = attr.key.range[1];\n              const end = attr.startWrapper.range[0];\n              context.report({\n                node: attr,\n                messageId: MESSAGE_IDS.EXTRA_IN_ASSIGNMENT,\n                fix(fixer) {\n                  return fixer.replaceTextRange([start, end], `=`);\n                },\n              });\n            }\n          }\n        }\n      }\n\n      if (node.openEnd) {\n        checkExtraSpacesBetweenAttrs(node.attributes);\n\n        const lastAttr = node.attributes[node.attributes.length - 1];\n        const nodeBeforeEnd =\n          node.attributes.length === 0 ? node.openStart : lastAttr;\n\n        if (nodeBeforeEnd.loc.end.line !== node.openEnd.loc.start.line) {\n          return;\n        }\n\n        const isSelfClosing = node.openEnd.value === \"/>\";\n\n        const spacesBetween =\n          node.openEnd.loc.start.column - nodeBeforeEnd.loc.end.column;\n        const locBetween = getLocBetween(nodeBeforeEnd, node.openEnd);\n\n        if (isSelfClosing && enforceBeforeSelfClose) {\n          if (spacesBetween < 1) {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.MISSING_BEFORE_SELF_CLOSE,\n              fix(fixer) {\n                return fixer.insertTextAfter(nodeBeforeEnd, \" \");\n              },\n            });\n          } else if (spacesBetween === 1) {\n            if (\n              disallowTabs &&\n              sourceCode[node.openEnd.range[0] - 1] === `\\t`\n            ) {\n              context.report({\n                loc: node.openEnd.loc,\n                messageId: MESSAGE_IDS.EXTRA_TAB_BEFORE_SELF_CLOSE,\n                fix(fixer) {\n                  return fixer.replaceTextRange(\n                    [node.openEnd.range[0] - 1, node.openEnd.range[0]],\n                    ` `\n                  );\n                },\n              });\n            }\n          } else {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.EXTRA_BEFORE_SELF_CLOSE,\n              fix(fixer) {\n                return fixer.removeRange([\n                  nodeBeforeEnd.range[1] + 1,\n                  node.openEnd.range[0],\n                ]);\n              },\n            });\n          }\n\n          return;\n        }\n\n        if (spacesBetween > 0) {\n          if (node.attributes.length > 0) {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.EXTRA_AFTER,\n              fix(fixer) {\n                return fixer.removeRange([\n                  lastAttr.range[1],\n                  node.openEnd.range[0],\n                ]);\n              },\n            });\n          } else {\n            context.report({\n              loc: locBetween,\n              messageId: MESSAGE_IDS.EXTRA_BEFORE_CLOSE,\n              fix(fixer) {\n                return fixer.removeRange([\n                  node.openStart.range[1],\n                  node.openEnd.range[0],\n                ]);\n              },\n            });\n          }\n        }\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-extra-spacing-text.js",
    "content": "/**\n * @import {\n *   Comment,\n *   CommentContent,\n *   Tag,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {string[]} [Option.skip]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { isTag, isOverlapWithTemplates } = require(\"./utils/node\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow unnecessary consecutive spaces\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: false,\n      url: getRuleUrl(\"no-extra-spacing-text\"),\n    },\n\n    fixable: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          skip: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]:\n        \"Tabs and/or multiple consecutive spaces not allowed here\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    /** @type {string[]} */\n    const skipTags = options.skip || [];\n    const sourceCode = getSourceCode(context);\n    /** @type {Tag[]} */\n    const tagStack = [];\n\n    /**\n     * @param {Comment | Text} node\n     * @returns {boolean}\n     */\n    function hasSkipTagOnParent(node) {\n      // @ts-ignore\n      const { parent } = node;\n      if (\n        parent &&\n        // @ts-ignore\n        isTag(parent) &&\n        skipTags.some((skipTag) => skipTag === parent.name)\n      ) {\n        return true;\n      }\n      return false;\n    }\n\n    /** @param {CommentContent | Text} node */\n    function stripConsecutiveSpaces(node) {\n      const text = node.value;\n      const matcher = /(^|[^\\n \\t])([ \\t]+\\n|\\t[\\t ]*|[ \\t]{2,})/g;\n\n      while (true) {\n        const offender = matcher.exec(text);\n        if (offender === null) {\n          break;\n        }\n\n        const space = offender[2];\n        const indexStart = node.range[0] + matcher.lastIndex - space.length;\n        const indexEnd = indexStart + space.length;\n\n        const hasOverlap = isOverlapWithTemplates(node.parts, [\n          indexStart,\n          indexEnd,\n        ]);\n\n        if (hasOverlap) {\n          return;\n        }\n\n        context.report({\n          node: node,\n          loc: {\n            start: sourceCode.getLocFromIndex(indexStart),\n            end: sourceCode.getLocFromIndex(indexEnd),\n          },\n          messageId: MESSAGE_IDS.UNEXPECTED,\n          fix(fixer) {\n            return fixer.replaceTextRange(\n              [indexStart, indexEnd],\n              space.endsWith(`\\n`) ? `\\n` : ` `\n            );\n          },\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Comment(node) {\n        if (hasSkipTagOnParent(node)) {\n          return;\n        }\n        stripConsecutiveSpaces(node.value);\n      },\n      Text(node) {\n        if (hasSkipTagOnParent(node)) {\n          return;\n        }\n        stripConsecutiveSpaces(node);\n      },\n      Tag(node) {\n        tagStack.push(node);\n        if (\n          skipTags.some((skipTag) =>\n            tagStack.some((tag) => tag.name === skipTag)\n          )\n        ) {\n          return;\n        }\n      },\n      \"Tag:exit\"() {\n        tagStack.pop();\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-heading-inside-button.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findParent, isTag, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\nconst HEADING_NAMES = new Set([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallows the use of heading elements inside <button>.\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-heading-inside-button\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected heading inside button\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (!HEADING_NAMES.has(getNameOf(node))) {\n          return;\n        }\n        const button = findParent(\n          node,\n          (parent) => isTag(parent) && getNameOf(parent) === \"button\"\n        );\n\n        if (button) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-ineffective-attrs.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst {\n  noIneffectiveAttrs,\n  NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description:\n        \"Disallow HTML attributes that have no effect in their context\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-ineffective-attrs\"),\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_INEFFECTIVE_ATTRS_MESSAGE_IDS.ineffective]: \"{{ message }}\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = /** @type {ReturnType<typeof noIneffectiveAttrs>} */ (\n      noIneffectiveAttrs()\n    );\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function checkAttributes(node) {\n      const adapter = createElementAdapter(node);\n      const result = ruleCore.checkAttributes(adapter);\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: checkAttributes,\n      ScriptTag: checkAttributes,\n      StyleTag: checkAttributes,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-inline-styles.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  INLINE_STYLE: \"unexpectedInlineStyle\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow using inline style\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-inline-styles\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.INLINE_STYLE]: \"Unexpected usage of inline style\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        const styleAttr = findAttr(node, \"style\");\n        if (styleAttr) {\n          context.report({\n            node: styleAttr,\n            messageId: MESSAGE_IDS.INLINE_STYLE,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-invalid-attr-value.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst {\n  noInvalidAttrValue,\n  NO_INVALID_ATTR_VALUE_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/factory\");\n\n/**\n * @type {RuleModule<\n *   [{ allow?: { tag: string; attr: string; valuePattern?: string }[] }]\n * >}\n */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Disallow invalid attribute values according to HTML standards\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-invalid-attr-value\"),\n    },\n\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          allow: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              properties: {\n                tag: {\n                  type: \"string\",\n                },\n                attr: {\n                  type: \"string\",\n                },\n                valuePattern: {\n                  type: \"string\",\n                },\n              },\n              required: [\"tag\", \"attr\"],\n              additionalProperties: false,\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid]:\n        \"Invalid value '{{value}}' for attribute '{{attr}}' on <{{element}}>. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n\n    const { checkAttributes } = noInvalidAttrValue(options);\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkAttributes(adapter);\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      ScriptTag: check,\n      StyleTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-invalid-entity.js",
    "content": "/**\n * @import {Text} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\n// Define the type for entities.json\n/**\n * @typedef {Object} EntityData\n * @property {number[]} codepoints\n * @property {string} characters\n */\n\n/** @type {{ [key: string]: EntityData }} */\nconst entities = require(\"../data/entities.json\");\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  INVALID_ENTITY: \"invalidEntity\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallows the use of invalid HTML entities\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-invalid-entity\"),\n    },\n    fixable: null,\n    hasSuggestions: false,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.INVALID_ENTITY]: \"Invalid HTML entity '{{entity}}' used.\",\n    },\n  },\n\n  create(context) {\n    /** @param {Text} node */\n    function check(node) {\n      const text = node.value;\n\n      // Regular expression to match named and numeric entities\n      const entityRegex = /&([a-zA-Z]+|#[0-9]+|#x[0-9a-fA-F]+|[#][^;]+);/g;\n      let match;\n\n      while ((match = entityRegex.exec(text)) !== null) {\n        const entity = match[0];\n        const entityName = match[1];\n\n        // Check named entities\n        if (!entityName.startsWith(\"#\")) {\n          const fullEntity = `&${entityName};`;\n          if (!Object.prototype.hasOwnProperty.call(entities, fullEntity)) {\n            context.report({\n              node,\n              messageId: MESSAGE_IDS.INVALID_ENTITY,\n              data: { entity },\n            });\n          }\n        }\n        // Check numeric entities\n        else {\n          const isHex = entityName[1] === \"x\";\n          const numStr = isHex ? entityName.slice(2) : entityName.slice(1);\n          const num = isHex ? parseInt(numStr, 16) : parseInt(numStr, 10);\n\n          // If the number is not a valid integer, report an error\n          if (isNaN(num)) {\n            context.report({\n              node,\n              messageId: MESSAGE_IDS.INVALID_ENTITY,\n              data: { entity },\n            });\n            continue;\n          }\n\n          // Check if the numeric entity is valid (exists in entities.json or within valid Unicode range)\n          const entityKey = Object.values(entities).find(({ codepoints }) => {\n            return codepoints.length === 1 && codepoints[0] === num;\n          });\n\n          if (!entityKey && (num < 0 || num > 0x10ffff)) {\n            context.report({\n              node,\n              messageId: MESSAGE_IDS.INVALID_ENTITY,\n              data: { entity },\n            });\n          }\n        }\n      }\n    }\n\n    return createVisitors(context, {\n      Text: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-invalid-role.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  INVALID: \"invalid\",\n  INVALID_PRESENTATION: \"invalidPresentation\",\n};\n\n/**\n * Elements and role attribute constants are taken from ember-template-lint.\n * https://github.com/ember-template-lint/ember-template-lint/blob/master/lib/rules/no-invalid-role.js\n */\n\n// https://www.w3.org/TR/wai-aria/#document_structure_roles\nconst DOCUMENT_STRUCTURE_ROLES = new Set([\n  \"application\",\n  \"article\",\n  \"associationlist\",\n  \"associationlistitemkey\",\n  \"associationlistitemvalue\",\n  \"blockquote\",\n  \"caption\",\n  \"cell\",\n  \"code\",\n  \"columnheader\",\n  \"comment\",\n  \"definition\",\n  \"deletion\",\n  \"directory\",\n  \"document\",\n  \"emphasis\",\n  \"feed\",\n  \"figure\",\n  \"generic\",\n  \"group\",\n  \"heading\",\n  \"img\",\n  \"insertion\",\n  \"list\",\n  \"listitem\",\n  \"mark\",\n  \"math\",\n  \"meter\",\n  \"none\",\n  \"note\",\n  \"paragraph\",\n  \"presentation\",\n  \"row\",\n  \"rowgroup\",\n  \"rowheader\",\n  \"separator\", // When not focusable\n  \"strong\",\n  \"subscript\",\n  \"suggestion\",\n  \"superscript\",\n  \"table\",\n  \"term\",\n  \"time\",\n  \"toolbar\",\n  \"tooltip\",\n]);\n\n// https://www.w3.org/TR/wai-aria/#widget_roles\nconst WIDGET_ROLES = new Set([\n  \"button\",\n  \"checkbox\",\n  \"gridcell\",\n  \"link\",\n  \"menuitem\",\n  \"menuitemcheckbox\",\n  \"menuitemradio\",\n  \"option\",\n  \"progressbar\",\n  \"radio\",\n  \"scrollbar\",\n  \"searchbox\",\n  \"separator\", // When focusable\n  \"slider\",\n  \"spinbutton\",\n  \"switch\",\n  \"tab\",\n  \"tabpanel\",\n  \"textbox\",\n  \"treeitem\",\n]);\n\nconst COMPOSITE_WIDGET_ROLES = new Set([\n  \"combobox\",\n  \"grid\",\n  \"listbox\",\n  \"menu\",\n  \"menubar\",\n  \"radiogroup\",\n  \"tablist\",\n  \"tree\",\n  \"treegrid\",\n]);\n\n// https://www.w3.org/TR/wai-aria/#landmark_roles\nconst LANDMARK_ROLES = new Set([\n  \"banner\",\n  \"complementary\",\n  \"contentinfo\",\n  \"form\",\n  \"main\",\n  \"navigation\",\n  \"region\",\n  \"search\",\n]);\n\n// https://www.w3.org/TR/wai-aria/#live_region_roles\nconst LIVE_REGION_ROLES = new Set([\n  \"alert\",\n  \"log\",\n  \"marquee\",\n  \"status\",\n  \"timer\",\n]);\n\n// https://www.w3.org/TR/wai-aria/#window_roles\nconst WINDOW_ROLES = new Set([\"alertdialog\", \"dialog\"]);\n\nconst ALL_ROLES = new Set([\n  ...DOCUMENT_STRUCTURE_ROLES,\n  ...WIDGET_ROLES,\n  ...COMPOSITE_WIDGET_ROLES,\n  ...LANDMARK_ROLES,\n  ...LIVE_REGION_ROLES,\n  ...WINDOW_ROLES,\n]);\n\nconst ELEMENTS_DISALLOWING_PRESENTATION_OR_NONE_ROLE = new Set([\n  \"a\",\n  \"abbr\",\n  \"applet\",\n  \"area\",\n  \"audio\",\n  \"b\",\n  \"bdi\",\n  \"bdo\",\n  \"blockquote\",\n  \"br\",\n  \"button\",\n  \"caption\",\n  \"cite\",\n  \"code\",\n  \"col\",\n  \"colgroup\",\n  \"data\",\n  \"datalist\",\n  \"dd\",\n  \"del\",\n  \"details\",\n  \"dfn\",\n  \"dialog\",\n  \"dir\",\n  \"dl\",\n  \"dt\",\n  \"em\",\n  \"embed\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"form\",\n  \"hr\",\n  \"i\",\n  \"iframe\",\n  \"input\",\n  \"ins\",\n  \"kbd\",\n  \"label\",\n  \"legend\",\n  \"main\",\n  \"map\",\n  \"mark\",\n  \"menu\",\n  \"menuitem\",\n  \"meter\",\n  \"noembed\",\n  \"object\",\n  \"ol\",\n  \"optgroup\",\n  \"option\",\n  \"output\",\n  \"p\",\n  \"param\",\n  \"pre\",\n  \"progress\",\n  \"q\",\n  \"rb\",\n  \"rp\",\n  \"rt\",\n  \"rtc\",\n  \"ruby\",\n  \"s\",\n  \"samp\",\n  \"select\",\n  \"small\",\n  \"source\",\n  \"strong\",\n  \"sub\",\n  \"summary\",\n  \"sup\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"textarea\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"time\",\n  \"tr\",\n  \"track\",\n  \"tt\",\n  \"u\",\n  \"ul\",\n  \"var\",\n  \"video\",\n  \"wbr\",\n]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallows use of invalid role.\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-invalid-role\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.INVALID]: \"Unexpected use of invalid role '{{role}}'\",\n      [MESSAGE_IDS.INVALID_PRESENTATION]:\n        \"Unexpected use of presentation role on <{{element}}>\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        const role = findAttr(node, \"role\");\n        if (!role) {\n          return;\n        }\n        /** Allow template expression. ex: html`<div role=${role}></div>` */\n        if (\n          role.value?.parts.some((part) => part.type === NODE_TYPES.Template)\n        ) {\n          return;\n        }\n\n        const roleValue = (role.value?.value || \"\").toLowerCase();\n\n        if (\n          (roleValue === \"presentation\" || roleValue === \"none\") &&\n          ELEMENTS_DISALLOWING_PRESENTATION_OR_NONE_ROLE.has(getNameOf(node))\n        ) {\n          context.report({\n            node: role,\n            messageId: MESSAGE_IDS.INVALID_PRESENTATION,\n            data: {\n              element: node.name,\n            },\n          });\n        }\n\n        if (!ALL_ROLES.has(roleValue)) {\n          context.report({\n            node: role,\n            messageId: MESSAGE_IDS.INVALID,\n            data: {\n              role: roleValue,\n            },\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-multiple-empty-lines.js",
    "content": "/**\n * @import {\n *   CommentContent,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {number} Option.max\n */\n\nconst { parseTemplateLiteral } = require(\"./utils/template-literal\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"./utils/settings\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst {\n  codeToLines,\n  isRangesOverlap,\n  getTemplateTokens,\n} = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow multiple empty lines\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: false,\n      url: getRuleUrl(\"no-multiple-empty-lines\"),\n    },\n\n    fixable: \"whitespace\",\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          max: {\n            type: \"integer\",\n            minimum: 0,\n          },\n        },\n        required: [\"max\"],\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"More than {{max}} blank lines not allowed.\",\n    },\n  },\n\n  create(context) {\n    const max = context.options.length ? context.options[0].max : 2;\n    const sourceCode = getSourceCode(context);\n\n    /**\n     * @param {string[]} lines\n     * @param {number} lineOffset\n     * @param {(CommentContent | Text)[\"parts\"][number][]} tokens\n     */\n    function check(lines, lineOffset, tokens) {\n      /** @type {number[]} */\n      const nonEmptyLineNumbers = [];\n\n      lines.forEach((line, index) => {\n        if (line.trim().length > 0) {\n          nonEmptyLineNumbers.push(index + lineOffset);\n        }\n      });\n\n      nonEmptyLineNumbers.forEach((current, index, arr) => {\n        const before = arr[index - 1];\n        if (typeof before === \"number\") {\n          if (current - before - 1 > max) {\n            const start = sourceCode.getIndexFromLoc({\n              line: before + 1,\n              column: 0,\n            });\n            const end = sourceCode.getIndexFromLoc({\n              line: current - max,\n              column: 0,\n            });\n            if (\n              tokens.some((token) => isRangesOverlap(token.range, [start, end]))\n            ) {\n              return;\n            }\n\n            context.report({\n              loc: {\n                start: { line: before, column: 0 },\n                end: { line: current, column: 0 },\n              },\n              messageId: MESSAGE_IDS.UNEXPECTED,\n              data: {\n                max: `${max}`,\n              },\n              fix(fixer) {\n                return fixer.removeRange([start, end]);\n              },\n            });\n          }\n        }\n      });\n    }\n    return {\n      \"Document:exit\"() {\n        check(sourceCode.lines, 1, []);\n      },\n      TaggedTemplateExpression(node) {\n        if (shouldCheckTaggedTemplateExpression(node, context)) {\n          const { html, tokens } = parseTemplateLiteral(\n            node.quasi,\n            getSourceCode(context)\n          );\n          const lines = codeToLines(html);\n          check(\n            lines,\n            // @ts-ignore\n            node.quasi.loc.start.line,\n            getTemplateTokens(tokens)\n          );\n        }\n      },\n      TemplateLiteral(node) {\n        if (shouldCheckTemplateLiteral(node, context)) {\n          const { html, tokens } = parseTemplateLiteral(\n            node,\n            getSourceCode(context)\n          );\n          const lines = codeToLines(html);\n          check(\n            lines,\n            // @ts-ignore\n            node.loc.start.line,\n            getTemplateTokens(tokens)\n          );\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-multiple-h1.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MULTIPLE_H1: \"unexpectedMultiH1\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow multiple `<h1></h1>`.\",\n      category: RULE_CATEGORY.SEO,\n      recommended: true,\n      url: getRuleUrl(\"no-multiple-h1\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MULTIPLE_H1]: \"Unexpected multiple `<h1></h1>`.\",\n    },\n  },\n\n  create(context) {\n    /** @type {Tag[]} */\n    const h1s = [];\n\n    return {\n      Tag(node) {\n        if (node.name === \"h1\") {\n          h1s.push(node);\n        }\n      },\n      \"Document:exit\"() {\n        if (h1s.length > 1) {\n          h1s.forEach((h1) => {\n            context.report({\n              node: h1,\n              messageId: MESSAGE_IDS.MULTIPLE_H1,\n            });\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-nested-interactive.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/**\n * @param {Tag} tag\n * @returns {boolean}\n * @see https://html.spec.whatwg.org/multipage/dom.html#interactive-content-2\n */\nfunction isInteractive(tag) {\n  const tagName = getNameOf(tag);\n\n  switch (tagName) {\n    // a (if the href attribute is present)\n    case \"a\": {\n      return !!findAttr(tag, \"href\");\n    }\n    // audio (if the controls attribute is present)\n    // video (if the controls attribute is present)\n    case \"audio\":\n    case \"video\": {\n      return !!findAttr(tag, \"controls\");\n    }\n    // img (if the usemap attribute is present)\n    case \"img\": {\n      return !!findAttr(tag, \"usemap\");\n    }\n    // input (if the type attribute is not in the Hidden state)\n    case \"input\": {\n      const typeAttr = findAttr(tag, \"type\");\n      return typeAttr?.value?.value !== \"hidden\";\n    }\n    // case \"details\": see https://github.com/yeonjuan/html-eslint/issues/518\n    case \"summary\":\n    case \"button\":\n    case \"embed\":\n    case \"iframe\":\n    case \"label\":\n    case \"select\":\n    case \"textarea\": {\n      return true;\n    }\n    default: {\n      return false;\n    }\n  }\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallows nested interactive elements\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-nested-interactive\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]:\n        \"Unexpected interactive elements nested (parent interactive: <{{tag}}>)\",\n    },\n  },\n\n  create(context) {\n    /** @type {Tag[]} */\n    let interactiveStack = [];\n\n    return createVisitors(context, {\n      Document() {\n        interactiveStack = [];\n      },\n      Tag(node) {\n        if (!isInteractive(node)) {\n          return;\n        }\n        if (interactiveStack.length) {\n          if (interactiveStack.length === 1) {\n            const parentLabel = interactiveStack.find(\n              (tag) => getNameOf(tag) === \"label\"\n            );\n            if (parentLabel && getNameOf(node) !== \"label\") {\n              return;\n            }\n          }\n\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n            data: {\n              tag: interactiveStack[interactiveStack.length - 1].name,\n            },\n          });\n        }\n\n        interactiveStack.push(node);\n      },\n      \"Tag:exit\"(node) {\n        if (interactiveStack[interactiveStack.length - 1] === node) {\n          interactiveStack.pop();\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-non-scalable-viewport.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        'Disallow use of `user-scalable=no` in `<meta name=\"viewport\">`.',\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-non-scalable-viewport\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected use of `user-scalable=no`.\",\n    },\n  },\n\n  create(context) {\n    return {\n      Tag(node) {\n        if (node.name !== \"meta\") {\n          return;\n        }\n        const nameAttr = findAttr(node, \"name\");\n        const contentAttr = findAttr(node, \"content\");\n        if (\n          nameAttr?.value?.value.toLowerCase() === \"viewport\" &&\n          contentAttr?.value?.value.match(/user-scalable\\s*=\\s*no/i)\n        ) {\n          context.report({\n            node: contentAttr,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-obsolete-attrs.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst {\n  noObsoleteAttrs,\n  NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { createElementAdapter } = require(\"../adapters/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow use of obsolete attributes in HTML5\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"no-obsolete-attrs\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_ATTRS_MESSAGE_IDS.obsolete]:\n        \"The {{attr}} attribute on <{{element}}> is obsolete. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = noObsoleteAttrs();\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function checkObsoleteAttrs(node) {\n      const adapter = createElementAdapter(node);\n      const result = ruleCore.checkAttributes(adapter);\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: checkObsoleteAttrs,\n      ScriptTag: checkObsoleteAttrs,\n      StyleTag: checkObsoleteAttrs,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-obsolete-tags.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst {\n  noObsoleteTags,\n  NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow use of obsolete elements in HTML5\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"no-obsolete-tags\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected]:\n        \"Unexpected use of obsolete tag <{{tag}}>\",\n    },\n  },\n\n  create(context) {\n    const { checkElement } = noObsoleteTags();\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkElement(adapter);\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      ScriptTag: check,\n      StyleTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-positive-tabindex.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow use of positive `tabindex`.\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-positive-tabindex\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected use of positive `tabindex`.\",\n    },\n  },\n\n  create(context) {\n    /** @param {Tag | StyleTag | ScriptTag} node */\n    function check(node) {\n      const tabIndexAttr = findAttr(node, \"tabindex\");\n      if (\n        tabIndexAttr?.value &&\n        !tabIndexAttr.value.parts.length &&\n        parseInt(tabIndexAttr.value.value, 10) > 0\n      ) {\n        context.report({\n          node: tabIndexAttr,\n          messageId: MESSAGE_IDS.UNEXPECTED,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-redundant-role.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { element } = require(\"html-standard\");\n\nconst MESSAGE_IDS = {\n  REDUNDANT: \"redundant\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Disallow redundant role attributes that match the element's implicit role\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-redundant-role\"),\n    },\n\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.REDUNDANT]:\n        \"Redundant role '{{role}}'. The element <{{element}}> already has an implicit role of '{{role}}'.\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        const role = findAttr(node, \"role\");\n        if (!role?.value?.value) {\n          return;\n        }\n\n        /** Allow template expression. ex: html`<div role=${role}></div>` */\n        if (\n          role.value.parts.some((part) => part.type === NODE_TYPES.Template)\n        ) {\n          return;\n        }\n\n        const roleValue = role.value.value.toLowerCase();\n\n        const elem = element(node.name, {\n          attributes: {\n            get(key) {\n              const attr = findAttr(node, key);\n              if (attr?.value) {\n                return attr.value.value;\n              }\n              return null;\n            },\n          },\n        });\n\n        const implicitRole = elem.implicitRole();\n\n        if (implicitRole?.toLowerCase() === roleValue) {\n          context.report({\n            node: role,\n            messageId: MESSAGE_IDS.REDUNDANT,\n            data: {\n              role: roleValue,\n              element: node.name,\n            },\n            fix(fixer) {\n              return fixer.removeRange(role.range);\n            },\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-restricted-attr-values.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {{\n *   attrPatterns: string[];\n *   attrValuePatterns: string[];\n *   message?: string;\n * }[]} Options\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  RESTRICTED: \"restricted\",\n};\n\n/** @type {RuleModule<Options>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow specified attributes\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-restricted-attr-values\"),\n    },\n\n    fixable: null,\n    schema: {\n      type: \"array\",\n\n      items: {\n        type: \"object\",\n        required: [\"attrPatterns\", \"attrValuePatterns\"],\n        properties: {\n          attrPatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          attrValuePatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          message: {\n            type: \"string\",\n          },\n        },\n        additionalProperties: false,\n      },\n    },\n    messages: {\n      [MESSAGE_IDS.RESTRICTED]:\n        \"'{{attrValuePatterns}}' is restricted from being used.\",\n    },\n  },\n\n  create(context) {\n    const { options } = context;\n    const checkers = options.map((option) => new PatternChecker(option));\n    /** @param {Tag | StyleTag | ScriptTag} node */\n    function check(node) {\n      node.attributes.forEach((attr) => {\n        if (\n          !attr.key ||\n          !attr.key.value ||\n          !attr.value ||\n          typeof attr.value.value !== \"string\"\n        ) {\n          return;\n        }\n\n        const matched = checkers.find(\n          (checker) =>\n            attr.value && checker.test(attr.key.value, attr.value.value)\n        );\n\n        if (!matched) {\n          return;\n        }\n\n        /** @type {{ node: Attribute; message: string; messageId?: string }} */\n        const result = {\n          node: attr,\n          message: \"\",\n        };\n\n        const customMessage = matched.getMessage();\n\n        if (customMessage) {\n          result.message = customMessage;\n        } else {\n          result.messageId = MESSAGE_IDS.RESTRICTED;\n        }\n\n        context.report({\n          ...result,\n          data: { attrValuePatterns: attr.value.value },\n        });\n      });\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n\nclass PatternChecker {\n  /** @param {Options[number]} option */\n  constructor(option) {\n    this.option = option;\n    this.attrRegExps = option.attrPatterns.map(\n      (pattern) => new RegExp(pattern, \"u\")\n    );\n\n    this.valueRegExps = option.attrValuePatterns.map(\n      (pattern) => new RegExp(pattern, \"u\")\n    );\n    this.message = option.message;\n  }\n\n  /**\n   * @param {string} attrName\n   * @param {string} attrValue\n   * @returns {boolean}\n   */\n  test(attrName, attrValue) {\n    const result =\n      this.attrRegExps.some((exp) => exp.test(attrName)) &&\n      this.valueRegExps.some((exp) => exp.test(attrValue));\n    return result;\n  }\n\n  /** @returns {string} */\n  getMessage() {\n    return this.message || \"\";\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-restricted-attrs.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {{\n *   tagPatterns: string[];\n *   attrPatterns: string[];\n *   message?: string;\n * }[]} Options\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { getNameOf } = require(\"./utils/node\");\n\nconst MESSAGE_IDS = {\n  RESTRICTED: \"restricted\",\n};\n\n/** @type {RuleModule<Options>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow specified attributes\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-restricted-attrs\"),\n    },\n\n    fixable: null,\n    schema: {\n      type: \"array\",\n\n      items: {\n        type: \"object\",\n        required: [\"tagPatterns\", \"attrPatterns\"],\n        properties: {\n          tagPatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          attrPatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          message: {\n            type: \"string\",\n          },\n        },\n        additionalProperties: false,\n      },\n    },\n    messages: {\n      [MESSAGE_IDS.RESTRICTED]: \"'{{attr}}' is restricted from being used.\",\n    },\n  },\n\n  create(context) {\n    const { options } = context;\n    const checkers = options.map((option) => new PatternChecker(option));\n\n    /** @param {Tag | StyleTag | ScriptTag} node */\n    function check(node) {\n      const tagName = getNameOf(node);\n      node.attributes.forEach((attr) => {\n        if (!attr.key?.value) {\n          return;\n        }\n        const matched = checkers.find((checker) =>\n          checker.test(tagName, attr.key.value)\n        );\n\n        if (!matched) {\n          return;\n        }\n\n        /** @type {{ node: Attribute; message: string; messageId?: string }} */\n        const result = {\n          node: attr,\n          message: \"\",\n        };\n\n        const customMessage = matched.getMessage();\n\n        if (customMessage) {\n          result.message = customMessage;\n        } else {\n          result.messageId = MESSAGE_IDS.RESTRICTED;\n        }\n\n        context.report({\n          ...result,\n          data: { attr: attr.key.value },\n        });\n      });\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n\nclass PatternChecker {\n  /** @param {Options[number]} option */\n  constructor(option) {\n    this.option = option;\n    this.tagRegExps = option.tagPatterns.map(\n      (pattern) => new RegExp(pattern, \"u\")\n    );\n    this.attrRegExps = option.attrPatterns.map(\n      (pattern) => new RegExp(pattern, \"u\")\n    );\n    this.message = option.message;\n  }\n\n  /**\n   * @param {string} tagName\n   * @param {string} attrName\n   * @returns {boolean}\n   */\n  test(tagName, attrName) {\n    const result =\n      this.tagRegExps.some((exp) => exp.test(tagName)) &&\n      this.attrRegExps.some((exp) => exp.test(attrName));\n    return result;\n  }\n\n  /** @returns {string} */\n  getMessage() {\n    return this.message || \"\";\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-restricted-tags.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {{ tagPatterns: string[]; message?: string }[]} Options\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { getNameOf } = require(\"./utils/node\");\n\nconst MESSAGE_IDS = {\n  RESTRICTED: \"restricted\",\n};\n\n/** @type {RuleModule<Options>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow specified tags\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-restricted-tags\"),\n    },\n\n    fixable: null,\n    schema: {\n      type: \"array\",\n\n      items: {\n        type: \"object\",\n        required: [\"tagPatterns\"],\n        properties: {\n          tagPatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          message: {\n            type: \"string\",\n          },\n        },\n        additionalProperties: false,\n      },\n    },\n    messages: {\n      [MESSAGE_IDS.RESTRICTED]: \"'{{tag}}' tag is restricted from being used.\",\n    },\n  },\n\n  create(context) {\n    const { options } = context;\n    const checkers = options.map((option) => new PatternChecker(option));\n\n    /** @param {Tag | StyleTag | ScriptTag} node */\n    function check(node) {\n      const tagName = getNameOf(node);\n\n      const matched = checkers.find((checker) => checker.test(tagName));\n\n      if (!matched) {\n        return;\n      }\n\n      /**\n       * @type {{\n       *   node: Tag | StyleTag | ScriptTag;\n       *   message: string;\n       *   messageId?: string;\n       * }}\n       */\n      const result = {\n        node: node,\n        message: \"\",\n      };\n\n      const customMessage = matched.getMessage();\n\n      if (customMessage) {\n        result.message = customMessage;\n      } else {\n        result.messageId = MESSAGE_IDS.RESTRICTED;\n      }\n\n      context.report({\n        ...result,\n        data: { tag: tagName },\n      });\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      StyleTag: check,\n      ScriptTag: check,\n    });\n  },\n};\n\nclass PatternChecker {\n  /** @param {Options[number]} option */\n  constructor(option) {\n    this.option = option;\n    this.tagRegExps = option.tagPatterns.map(\n      (pattern) => new RegExp(pattern, \"u\")\n    );\n    this.message = option.message;\n  }\n\n  /**\n   * @param {string} tagName\n   * @returns {boolean}\n   */\n  test(tagName) {\n    const result = this.tagRegExps.some((exp) => exp.test(tagName));\n    return result;\n  }\n\n  /** @returns {string} */\n  getMessage() {\n    return this.message || \"\";\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-script-style-type.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNNECESSARY: \"unnecessary\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Enforce to omit type attributes for style sheets and scripts\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-script-style-type\"),\n    },\n\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNNECESSARY]: \"Unnecessary type attributes\",\n    },\n  },\n\n  create(context) {\n    /**\n     * @param {ScriptTag | Tag | StyleTag} node\n     * @param {string} unnecessaryValue\n     */\n    function check(node, unnecessaryValue) {\n      const type = findAttr(node, \"type\");\n      if (type?.value?.value?.trim().toLocaleLowerCase() === unnecessaryValue) {\n        context.report({\n          node: type,\n          messageId: MESSAGE_IDS.UNNECESSARY,\n          fix(fixer) {\n            return fixer.remove(type);\n          },\n        });\n      }\n    }\n    return createVisitors(context, {\n      ScriptTag(node) {\n        check(node, \"text/javascript\");\n      },\n      StyleTag(node) {\n        check(node, \"text/css\");\n      },\n      Tag(node) {\n        if (node.name === \"link\") {\n          const rel = findAttr(node, \"rel\");\n          if (rel?.value?.value === \"stylesheet\") {\n            check(node, \"text/css\");\n          }\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-skip-heading-levels.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow skipping heading levels\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"no-skip-heading-levels\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]:\n        \"Unexpected skipping heading level. <h{{expected}}> is expected\",\n    },\n  },\n\n  create(context) {\n    /** @type {{ node: Tag; level: number }[]} */\n    const headings = [];\n\n    return {\n      Tag(node) {\n        if (![\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(node.name)) {\n          return;\n        }\n        headings.push({\n          node,\n          level: parseInt(node.name.replace(\"h\", \"\"), 10),\n        });\n      },\n      \"Document:exit\"() {\n        if (headings.length <= 1) {\n          return;\n        }\n        headings.sort((a, b) => a.node.range[0] - b.node.range[0]);\n        headings.forEach((current, index) => {\n          const next = headings[index + 1];\n          if (next) {\n            if (next.level - current.level > 1) {\n              context.report({\n                node: next.node,\n                data: { expected: String(current.level + 1) },\n                messageId: MESSAGE_IDS.UNEXPECTED,\n              });\n            }\n          }\n        });\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-target-blank.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow usage of unsafe `target='_blank'`\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"no-target-blank\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: 'Missing `rel=\"noreferrer\"` attribute in a tag.',\n    },\n  },\n\n  create(context) {\n    /**\n     * Checks whether a link is an external link or not.\n     *\n     * @param {string} link A link to check\n     * @returns {boolean}\n     */\n    function isExternalLink(link) {\n      return /^(?:\\w+:|\\/\\/)/.test(link);\n    }\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"a\") {\n          return;\n        }\n\n        const target = findAttr(node, \"target\");\n        if (target?.value?.value === \"_blank\") {\n          const href = findAttr(node, \"href\");\n          if (href?.value && isExternalLink(href.value.value)) {\n            const rel = findAttr(node, \"rel\");\n            if (rel?.value?.parts?.length) {\n              return;\n            }\n\n            if (!rel?.value?.value.includes(\"noreferrer\")) {\n              context.report({\n                node: target,\n                messageId: MESSAGE_IDS.MISSING,\n              });\n            }\n          }\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-trailing-spaces.js",
    "content": "/**\n * @import {\n *   CommentContent,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { parseTemplateLiteral } = require(\"./utils/template-literal\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst {\n  getTemplateTokens,\n  codeToLines,\n  isRangesOverlap,\n} = require(\"./utils/node\");\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"./utils/settings\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  TRAILING_SPACE: \"trailingSpace\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"layout\",\n    docs: {\n      description: \"Disallow trailing whitespace at the end of lines\",\n      recommended: false,\n      category: RULE_CATEGORY.STYLE,\n      url: getRuleUrl(\"no-trailing-spaces\"),\n    },\n    fixable: true,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.TRAILING_SPACE]: \"Trailing spaces not allowed\",\n    },\n  },\n\n  create(context) {\n    const sourceCode = getSourceCode(context);\n    /**\n     * @param {string} source\n     * @param {string[]} lines\n     * @param {Object} offset\n     * @param {number} offset.range\n     * @param {number} offset.line\n     * @param {number} offset.column\n     * @param {(CommentContent | Text)[\"parts\"][number][]} tokens\n     */\n    function check(source, lines, offset, tokens) {\n      const lineBreaks = source.match(/\\r\\n|[\\r\\n\\u2028\\u2029]/gu);\n\n      lines.forEach((line, index) => {\n        const lineNumber = index + offset.line;\n        const match = line.match(/[ \\t\\u00a0\\u2000-\\u200b\\u3000]+$/);\n        const lineBreakLength = lineBreaks?.[index]?.length ?? 1;\n        const lineLength = line.length + lineBreakLength;\n        const columnOffset = index === 0 ? offset.column : 0;\n        if (match) {\n          if (typeof match.index === \"number\" && match.index > 0) {\n            const loc = {\n              start: {\n                line: lineNumber,\n                column: match.index + columnOffset,\n              },\n              end: {\n                line: lineNumber,\n                column: lineLength - lineBreakLength + columnOffset,\n              },\n            };\n            const start = sourceCode.getIndexFromLoc(loc.start);\n            const end = sourceCode.getIndexFromLoc(loc.end);\n            if (\n              tokens.some((token) => isRangesOverlap(token.range, [start, end]))\n            ) {\n              return;\n            }\n            context.report({\n              messageId: MESSAGE_IDS.TRAILING_SPACE,\n              loc,\n              fix(fixer) {\n                return fixer.removeRange([start, end]);\n              },\n            });\n          }\n        }\n      });\n    }\n\n    return {\n      Document() {\n        check(\n          sourceCode.getText(),\n          sourceCode.getLines(),\n          {\n            range: 0,\n            line: 1,\n            column: 0,\n          },\n          []\n        );\n      },\n      TaggedTemplateExpression(node) {\n        if (shouldCheckTaggedTemplateExpression(node, context)) {\n          const { html, tokens } = parseTemplateLiteral(\n            node.quasi,\n            getSourceCode(context)\n          );\n          const lines = codeToLines(html);\n          check(\n            html,\n            lines,\n            {\n              range: node.quasi.range[0] + 1,\n              line: node.quasi.loc.start.line,\n              column: node.quasi.loc.start.column + 1,\n            },\n            getTemplateTokens(tokens)\n          );\n        }\n      },\n      TemplateLiteral(node) {\n        if (shouldCheckTemplateLiteral(node, context)) {\n          const { html, tokens } = parseTemplateLiteral(\n            node,\n            getSourceCode(context)\n          );\n          const lines = codeToLines(html);\n          check(\n            html,\n            lines,\n            {\n              range: node.range[0] + 1,\n              line: node.loc.start.line,\n              column: node.loc.start.column + 1,\n            },\n            getTemplateTokens(tokens)\n          );\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/no-whitespace-only-children.js",
    "content": "/**\n * @import {\n *   Tag,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { isText, isComment, getLocBetween, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  WHITESPACE_ONLY_CHILDREN: \"whitespaceOnlyChildren\",\n};\n\n/** @param {Tag} node */\nfunction hasOnlyWhitespaceChildren(node) {\n  if (!node.children || node.children.length === 0) {\n    return false;\n  }\n\n  if (node.children.every((child) => isComment(child))) {\n    return false;\n  }\n\n  for (const child of node.children) {\n    if (isComment(child)) {\n      continue;\n    }\n    if (isText(child)) {\n      if (child.value?.trim().length > 0) {\n        return false;\n      }\n    } else {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/** @type {RuleModule<[{ tagPatterns?: string[] }]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow tags with only whitespace children.\",\n      recommended: false,\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      url: getRuleUrl(\"no-whitespace-only-children\"),\n    },\n    fixable: \"whitespace\",\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          tagPatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.WHITESPACE_ONLY_CHILDREN]:\n        \"Tag should not have only whitespace children.\",\n    },\n  },\n  create(context) {\n    const options = context.options[0] || {};\n    const tagPatterns = (options.tagPatterns || []).map(\n      (pattern) => new RegExp(pattern, \"u\")\n    );\n\n    return createVisitors(context, {\n      Tag(node) {\n        if (!node.close) {\n          return;\n        }\n        if (tagPatterns.length <= 0) {\n          return;\n        }\n\n        const tagName = getNameOf(node);\n\n        // If tagPatterns is specified, check if tag name matches any pattern\n        const matches = tagPatterns.some((pattern) => pattern.test(tagName));\n        if (!matches) {\n          return;\n        }\n\n        if (hasOnlyWhitespaceChildren(node)) {\n          const loc = getLocBetween(node.openEnd, node.close);\n          context.report({\n            loc,\n            messageId: MESSAGE_IDS.WHITESPACE_ONLY_CHILDREN,\n            fix(fixer) {\n              return node.children\n                .filter((child) => isText(child))\n                .map((child) => fixer.removeRange(child.range));\n            },\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/prefer-https.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   AttributeValue,\n *   ScriptTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, isScript, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @param {string} url */\nfunction getProtocol(url) {\n  try {\n    return new URL(url).protocol;\n    // eslint-disable-next-line no-unused-vars\n  } catch (_) {\n    return null;\n  }\n}\n\n/**\n * @param {Tag | ScriptTag} node\n * @returns {AttributeValue | undefined}\n */\nfunction getResourceAttributeValue(node) {\n  /** @type {Attribute | undefined} */\n  let attribute;\n  if (isScript(node)) {\n    attribute = findAttr(node, \"src\");\n  } else {\n    switch (getNameOf(node)) {\n      case \"img\":\n      case \"iframe\":\n      case \"audio\":\n      case \"video\":\n      case \"source\":\n      case \"embed\": {\n        attribute = findAttr(node, \"src\");\n        break;\n      }\n      case \"link\": {\n        attribute = findAttr(node, \"href\");\n        break;\n      }\n      case \"object\": {\n        attribute = findAttr(node, \"data\");\n        break;\n      }\n    }\n  }\n  if (attribute) {\n    return attribute.value;\n  }\n  return undefined;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Prefer to use HTTPS for embedded resources\",\n      recommended: false,\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      url: getRuleUrl(\"prefer-https\"),\n    },\n    fixable: false,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected use 'HTTP' protocol.\",\n    },\n  },\n\n  create(context) {\n    /** @param {Tag | ScriptTag} node */\n    function check(node) {\n      const attributeValue = getResourceAttributeValue(node);\n      if (attributeValue && !attributeValue.parts.length) {\n        const protocol = getProtocol(attributeValue.value);\n        if (protocol === \"http:\") {\n          context.report({\n            node: attributeValue,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      }\n    }\n\n    return createVisitors(context, {\n      ScriptTag: check,\n      Tag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/quotes.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {AST} from \"eslint\"\n * @import {RuleModule} from \"../types\"\n * @typedef {\"single\" | \"double\"} SingleOrQuoteOption\n *\n * @typedef {{ enforceTemplatedAttrValue: boolean }} ObjectOption\n */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNEXPECTED: \"unexpected\",\n  MISSING: \"missing\",\n};\n\nconst QUOTES_STYLES = {\n  SINGLE: \"single\",\n  DOUBLE: \"double\",\n};\n\nconst QUOTES_CODES = [`\"`, `'`];\n\n/** @type {RuleModule<[SingleOrQuoteOption, ObjectOption]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Enforce consistent quoting attributes with double(\\\") or single(')\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: true,\n      url: getRuleUrl(\"quotes\"),\n    },\n    fixable: true,\n    schema: [\n      {\n        enum: [QUOTES_STYLES.SINGLE, QUOTES_STYLES.DOUBLE],\n      },\n      {\n        type: \"object\",\n        properties: {\n          enforceTemplatedAttrValue: {\n            type: \"boolean\",\n            default: false,\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.UNEXPECTED]:\n        \"Expected {{expected}} quotes but found {{actual}}.\",\n      [MESSAGE_IDS.MISSING]:\n        \"Expected {{expected}} quotes but no quotes found.\",\n    },\n  },\n\n  create(context) {\n    const SELECTED_STYLE = context.options?.[0] ?? QUOTES_STYLES.DOUBLE;\n    const expectedQuote = SELECTED_STYLE === QUOTES_STYLES.DOUBLE ? `\"` : `'`;\n    const enforceTemplatedAttrValue =\n      context.options?.[1]?.enforceTemplatedAttrValue;\n\n    const sourceCode = getSourceCode(context);\n\n    /**\n     * @param {AST.Range} range\n     * @returns {string}\n     */\n    function getCodeIn(range) {\n      return sourceCode.text.slice(range[0], range[1]);\n    }\n\n    /**\n     * @param {Attribute} attr\n     * @returns {[string, string]}\n     */\n    function getQuotes(attr) {\n      // @ts-ignore\n      return [attr.startWrapper.value, attr.endWrapper.value];\n    }\n\n    /**\n     * @param {Attribute} attr\n     * @returns {void}\n     */\n    function checkQuotes(attr) {\n      if (!attr.value || attr.value.value.includes(expectedQuote)) {\n        return;\n      }\n      /** Allow template expression. ex: html`<div foo=${foo}></div>` */\n      if (\n        !enforceTemplatedAttrValue &&\n        attr.value.parts.some((part) => part.type === NODE_TYPES.Template)\n      ) {\n        return;\n      }\n\n      if (attr.startWrapper && attr.endWrapper) {\n        const [opening, closing] = getQuotes(attr);\n        if (QUOTES_CODES.includes(opening)) {\n          if (opening === closing && opening !== expectedQuote) {\n            context.report({\n              node: attr,\n              messageId: MESSAGE_IDS.UNEXPECTED,\n              data: {\n                expected: `${SELECTED_STYLE}(${expectedQuote})`,\n                actual:\n                  SELECTED_STYLE === QUOTES_STYLES.SINGLE\n                    ? `${QUOTES_STYLES.DOUBLE}(\")`\n                    : `${QUOTES_STYLES.SINGLE}(')`,\n              },\n              fix(fixer) {\n                if (\n                  !attr.startWrapper ||\n                  !attr.endWrapper ||\n                  attr.value === undefined\n                )\n                  return null;\n                return fixer.replaceTextRange(\n                  [attr.startWrapper.range[0], attr.endWrapper.range[1]],\n                  `${expectedQuote}${attr.value.value}${expectedQuote}`\n                );\n              },\n            });\n          }\n        }\n      } else {\n        context.report({\n          node: attr,\n          messageId: MESSAGE_IDS.MISSING,\n          data: {\n            expected: `${SELECTED_STYLE}(${expectedQuote})`,\n          },\n          fix(fixer) {\n            if (attr.value === undefined) return null;\n            const originCode = getCodeIn(attr.value.range);\n            return fixer.replaceTextRange(\n              attr.value.range,\n              `${expectedQuote}${originCode}${expectedQuote}`\n            );\n          },\n        });\n      }\n    }\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      node.attributes.forEach((attr) => checkQuotes(attr));\n    }\n\n    return createVisitors(context, {\n      Tag: check,\n      ScriptTag: check,\n      StyleTag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-attrs.js",
    "content": "/**\n * @import {\n *   Attribute,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {\n *   ReportFixFunction,\n *   RuleModule\n * } from \"../types\"\n * @typedef {Object} Option\n * @property {string} tag\n * @property {string} attr\n * @property {string} [value]\n * @property {string} [message]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getNameOf } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<Option[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require specified attributes\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"require-attrs\"),\n    },\n    fixable: \"code\",\n    schema: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        properties: {\n          tag: { type: \"string\" },\n          attr: { type: \"string\" },\n          value: { type: \"string\" },\n          message: { type: \"string\" },\n        },\n        required: [\"tag\", \"attr\"],\n        additionalProperties: false,\n      },\n    },\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing '{{attr}}' attribute on '{{tag}}' tag\",\n      [MESSAGE_IDS.UNEXPECTED]:\n        \"Unexpected '{{attr}}' attribute value. '{{expected}}' is expected\",\n    },\n  },\n\n  create(context) {\n    /** @type {Option[]} */\n    const options = context.options || [];\n    /**\n     * @type {Map<\n     *   string,\n     *   { tag: string; attr: string; value?: string; message?: string }[]\n     * >}\n     */\n    const tagOptionsMap = new Map();\n\n    options.forEach((option) => {\n      const tagName = option.tag.toLowerCase();\n      if (tagOptionsMap.has(tagName)) {\n        tagOptionsMap.set(tagName, [\n          ...(tagOptionsMap.get(tagName) || []),\n          option,\n        ]);\n      } else {\n        tagOptionsMap.set(tagName, [option]);\n      }\n    });\n\n    /**\n     * @param {StyleTag | ScriptTag | Tag} node\n     * @param {string} tagName\n     */\n    function check(node, tagName) {\n      const tagOptions = tagOptionsMap.get(tagName) || [];\n      const attributes = node.attributes || [];\n\n      tagOptions.forEach((option) => {\n        const attrName = option.attr;\n        const attr = attributes.find((attr) => attr.key?.value === attrName);\n        if (!attr) {\n          context.report({\n            ...(option.message\n              ? { message: option.message }\n              : { messageId: MESSAGE_IDS.MISSING }),\n            node,\n            data: {\n              attr: attrName,\n              tag: tagName,\n            },\n            fix(fixer) {\n              if (!option.value) {\n                return null;\n              }\n              return fixer.insertTextAfter(\n                node.openStart,\n                ` ${attrName}=\"${option.value}\"`\n              );\n            },\n          });\n        } else if (\n          typeof option.value === \"string\" &&\n          (!attr.value || attr.value.value !== option.value)\n        ) {\n          context.report({\n            ...(option.message\n              ? { message: option.message }\n              : { messageId: MESSAGE_IDS.UNEXPECTED }),\n            node: attr,\n            data: {\n              attr: attrName,\n              expected: option.value,\n            },\n            fix(fixer) {\n              if (option.value) {\n                if (attr.value) {\n                  return fixer.replaceText(attr.value, option.value);\n                }\n                return fixer.insertTextAfter(attr.key, `=\"${option.value}\"`);\n              }\n              return null;\n            },\n          });\n        }\n      });\n    }\n\n    /** @param {StyleTag | ScriptTag} node */\n    function checkStyleOrScript(node) {\n      const tagName = getNameOf(node);\n      if (!tagOptionsMap.has(tagName)) {\n        return;\n      }\n      check(node, tagName);\n    }\n\n    /** @param {Tag} node */\n    function checkTag(node) {\n      const tagName = getNameOf(node);\n      if (!tagOptionsMap.has(tagName)) {\n        return;\n      }\n      check(node, tagName);\n    }\n\n    return createVisitors(context, {\n      StyleTag: checkStyleOrScript,\n      ScriptTag: checkStyleOrScript,\n      Tag: checkTag,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-button-type.js",
    "content": "/**\n * @import {AttributeValue} from \"@html-eslint/types\"\n * @import {\n *   RuleModule,\n *   SuggestionReportDescriptor\n * } from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  INVALID: \"invalid\",\n  REPLACE_TO_SUBMIT: \"replaceToSubmit\",\n  REPLACE_TO_BUTTON: \"replaceToButton\",\n  REPLACE_TO_RESET: \"replaceToReset\",\n};\n\nconst VALID_BUTTON_TYPES_SET = new Set([\"submit\", \"button\", \"reset\"]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Require use of the button element with a valid type attribute.\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"require-button-type\"),\n    },\n\n    fixable: true,\n    hasSuggestions: true,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing a type attribute for button\",\n      [MESSAGE_IDS.INVALID]:\n        '\"{{type}}\" is an invalid value for button type attribute.',\n      [MESSAGE_IDS.REPLACE_TO_BUTTON]: \"Replace the type with 'button'\",\n      [MESSAGE_IDS.REPLACE_TO_SUBMIT]: \"Replace the type with 'submit'\",\n      [MESSAGE_IDS.REPLACE_TO_RESET]: \"Replace the type with 'reset'\",\n    },\n  },\n\n  create(context) {\n    /**\n     * @param {AttributeValue} node\n     * @returns {SuggestionReportDescriptor[]}\n     */\n    function getSuggestions(node) {\n      return [\n        {\n          messageId: MESSAGE_IDS.REPLACE_TO_SUBMIT,\n          fix: (fixer) => fixer.replaceTextRange(node.range, \"submit\"),\n        },\n        {\n          messageId: MESSAGE_IDS.REPLACE_TO_BUTTON,\n          fix: (fixer) => fixer.replaceTextRange(node.range, \"button\"),\n        },\n        {\n          messageId: MESSAGE_IDS.REPLACE_TO_RESET,\n          fix: (fixer) => fixer.replaceTextRange(node.range, \"reset\"),\n        },\n      ];\n    }\n\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"button\") {\n          return;\n        }\n        const typeAttr = findAttr(node, \"type\");\n        if (!typeAttr?.value) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.MISSING,\n            fix(fixer) {\n              return fixer.insertTextAfter(node.openStart, ' type=\"submit\"');\n            },\n          });\n        } else if (\n          !VALID_BUTTON_TYPES_SET.has(typeAttr.value.value) &&\n          !typeAttr.value.parts.length\n        ) {\n          context.report({\n            node: typeAttr,\n            messageId: MESSAGE_IDS.INVALID,\n            data: {\n              type: typeAttr.value.value,\n            },\n            suggest: getSuggestions(typeAttr.value),\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-closing-tags.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {\"always\" | \"never\"} [Option.selfClosing]\n * @property {string[]} [Option.selfClosingCustomPatterns]\n */\n\nconst { RULE_CATEGORY, VOID_ELEMENTS } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { getNameOf } = require(\"./utils/node\");\n\nconst VOID_ELEMENTS_SET = new Set(VOID_ELEMENTS);\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  MISSING_SELF: \"missingSelf\",\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require closing tags.\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"require-closing-tags\"),\n    },\n\n    fixable: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          selfClosing: {\n            enum: [\"always\", \"never\"],\n          },\n          selfClosingCustomPatterns: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing closing tag for {{tag}}.\",\n      [MESSAGE_IDS.MISSING_SELF]: \"Missing self closing tag for {{tag}}\",\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected self closing tag for {{tag}}.\",\n    },\n  },\n\n  create(context) {\n    /** @type {string[]} */\n    const foreignContext = [];\n    const shouldSelfCloseVoid = context.options?.length\n      ? context.options[0].selfClosing === \"always\"\n      : false;\n    /** @type {string[]} */\n    const selfClosingCustomPatternsOption =\n      context.options?.[0]?.selfClosingCustomPatterns || [];\n    const selfClosingCustomPatterns = selfClosingCustomPatternsOption.map(\n      (i) => new RegExp(i)\n    );\n\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function checkClosing(node) {\n      const name = getNameOf(node);\n      if (!node.close) {\n        context.report({\n          node: node,\n          data: {\n            tag: name,\n          },\n          messageId: MESSAGE_IDS.MISSING,\n        });\n      }\n    }\n\n    /**\n     * @param {Tag} node\n     * @param {boolean} shouldSelfClose\n     * @param {boolean} fixable\n     */\n    function checkVoidElement(node, shouldSelfClose, fixable) {\n      const hasSelfClose = node.openEnd.value === \"/>\";\n      if (shouldSelfClose && !hasSelfClose) {\n        context.report({\n          node: node.openEnd,\n          data: {\n            tag: node.name,\n          },\n          messageId: MESSAGE_IDS.MISSING_SELF,\n          fix(fixer) {\n            if (!fixable) {\n              return null;\n            }\n            const fixes = [];\n            fixes.push(fixer.replaceText(node.openEnd, \" />\"));\n            if (node.close) fixes.push(fixer.remove(node.close));\n            return fixes;\n          },\n        });\n      }\n      if (!shouldSelfClose && hasSelfClose) {\n        context.report({\n          node: node.openEnd,\n          data: {\n            tag: node.name,\n          },\n          messageId: MESSAGE_IDS.UNEXPECTED,\n          fix(fixer) {\n            if (!fixable) {\n              return null;\n            }\n            return fixer.replaceText(node.openEnd, \">\");\n          },\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      Tag(node) {\n        const isVoidElement = VOID_ELEMENTS_SET.has(node.name);\n        const isSelfClosingCustomElement = !!selfClosingCustomPatterns.some(\n          (i) => node.name.match(i)\n        );\n        const isForeign = foreignContext.length > 0;\n        const shouldSelfCloseCustom =\n          isSelfClosingCustomElement && !node.children.length;\n        const shouldSelfCloseForeign = node.selfClosing;\n        const shouldSelfClose =\n          (isVoidElement && shouldSelfCloseVoid) ||\n          (isSelfClosingCustomElement && shouldSelfCloseCustom) ||\n          (isForeign && shouldSelfCloseForeign);\n        const canSelfClose =\n          isVoidElement || isSelfClosingCustomElement || isForeign;\n        if (node.selfClosing || canSelfClose) {\n          checkVoidElement(node, shouldSelfClose, canSelfClose);\n        } else if (node.openEnd.value !== \"/>\") {\n          checkClosing(node);\n        }\n        if ([\"svg\", \"math\"].includes(node.name)) foreignContext.push(node.name);\n      },\n      /** @param {Tag} node */\n      \"Tag:exit\"(node) {\n        if (node.name === foreignContext[foreignContext.length - 1]) {\n          foreignContext.pop();\n        }\n      },\n      ScriptTag(node) {\n        if (!node.close) {\n          checkClosing(node);\n        }\n      },\n      StyleTag(node) {\n        if (!node.close) {\n          checkClosing(node);\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-content.js",
    "content": "/**\n * @import {\n *   Tag,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, isTag, isText } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  REQUIRE_CONTENT: \"requireContent\",\n};\n\n/**\n * Default set of elements that must have meaningful content. These are elements\n * where empty content is almost always a bug or an accessibility failure.\n */\nconst DEFAULT_ELEMENTS = new Set([\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"p\",\n  \"a\",\n  \"button\",\n  \"li\",\n  \"dt\",\n  \"dd\",\n  \"option\",\n  \"label\",\n]);\n\n/**\n * Returns true if the element has an accessible name via ARIA attributes,\n * making visible text content optional.\n *\n * @param {Tag} node\n * @returns {boolean}\n */\nfunction hasAriaAccessibleName(node) {\n  return !!(findAttr(node, \"aria-label\") || findAttr(node, \"aria-labelledby\"));\n}\n\n/**\n * Returns true if the element is hidden from the accessibility tree.\n *\n * @param {Tag} node\n * @returns {boolean}\n */\nfunction isHidden(node) {\n  if (findAttr(node, \"hidden\")) return true;\n  const ariaHidden = findAttr(node, \"aria-hidden\");\n  return ariaHidden?.value?.value === \"true\";\n}\n\n/**\n * Returns true if the element has meaningful content — at least one child that\n * is a non-whitespace text node or a non-hidden child element.\n *\n * @param {Tag} node\n * @returns {boolean}\n */\nfunction hasContent(node) {\n  for (const child of node.children) {\n    if (isText(child) && child.value.trim().length > 0) return true;\n    if (isTag(child) && !isHidden(child)) return true;\n  }\n  return false;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require that certain elements have meaningful content.\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"require-content\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.REQUIRE_CONTENT]:\n        \"<{{name}}> must have meaningful content or an accessible name (aria-label / aria-labelledby).\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        const tagName = node.name.toLowerCase();\n        if (!DEFAULT_ELEMENTS.has(tagName)) return;\n\n        if (isHidden(node)) return;\n\n        if (hasAriaAccessibleName(node)) return;\n\n        if (!hasContent(node)) {\n          context.report({\n            loc: {\n              start: node.openStart.loc.start,\n              end: node.openEnd.loc.end,\n            },\n            data: { name: node.name },\n            messageId: MESSAGE_IDS.REQUIRE_CONTENT,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-details-summary.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { isTag } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING_SUMMARY: \"missingSummary\",\n  SUMMARY_NOT_FIRST: \"summaryNotFirst\",\n};\n\n/**\n * Returns the first element child of a node (skipping text/comment nodes).\n *\n * @param {Tag} node\n * @returns {Tag | null}\n */\nfunction firstElementChild(node) {\n  for (const child of node.children) {\n    if (isTag(child)) return child;\n  }\n  return null;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description:\n        \"Require `<details>` elements to have a `<summary>` as their first child element.\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"require-details-summary\"),\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING_SUMMARY]:\n        \"The <details> element must contain a <summary> child element.\",\n      [MESSAGE_IDS.SUMMARY_NOT_FIRST]:\n        \"The <summary> element must be the first child element of <details>.\",\n    },\n  },\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name.toLowerCase() !== \"details\") return;\n\n        const first = firstElementChild(node);\n\n        if (!first) {\n          // <details> with no element children at all\n          context.report({ node, messageId: MESSAGE_IDS.MISSING_SUMMARY });\n          return;\n        }\n\n        if (first.name.toLowerCase() !== \"summary\") {\n          // Has element children but <summary> is not first (or absent)\n          const hasSummary = node.children.some(\n            (child) => isTag(child) && child.name.toLowerCase() === \"summary\"\n          );\n          context.report({\n            node: first,\n            messageId: hasSummary\n              ? MESSAGE_IDS.SUMMARY_NOT_FIRST\n              : MESSAGE_IDS.MISSING_SUMMARY,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-doctype.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require `<!DOCTYPE HTML>` in HTML\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"require-doctype\"),\n    },\n\n    fixable: true,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing `<!DOCTYPE HTML>`\",\n    },\n  },\n\n  create(context) {\n    let hasDocType = false;\n    return {\n      Doctype() {\n        hasDocType = true;\n      },\n      Tag(node) {\n        if (node.name !== \"html\") {\n          return;\n        }\n        if (!hasDocType) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.MISSING,\n            fix(fixer) {\n              return fixer.insertTextBeforeRange([0, 0], \"<!DOCTYPE html>\\n\");\n            },\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-explicit-size.js",
    "content": "/**\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {string[]} [Option.allowClass]\n * @property {string[]} [Option.allowId]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING_HEIGHT: \"missingHeight\",\n  MISSING_WIDTH: \"missingWidth\",\n};\n\nconst TARGET_ELEMENTS = [\"img\", \"iframe\"];\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Enforces that some elements (img, iframe) have explicitly defined width and height attributes.\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"require-explicit-size\"),\n    },\n\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          allowClass: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n          allowId: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.MISSING_HEIGHT]: \"Missing `width` attribute for <{{name}}>\",\n      [MESSAGE_IDS.MISSING_WIDTH]: \"Missing `height` attribute for <{{name}}>\",\n    },\n  },\n\n  create(context) {\n    const allowClass = context.options?.[0]?.allowClass || [];\n    const allowId = context.options?.[0]?.allowId || [];\n\n    const allowClassSet = new Set(allowClass);\n    const allowIdSet = new Set(allowId);\n    return createVisitors(context, {\n      Tag(node) {\n        if (!TARGET_ELEMENTS.some((element) => element === getNameOf(node))) {\n          return;\n        }\n        const classAttr = findAttr(node, \"class\");\n        if (\n          classAttr?.value?.value\n            .split(\" \")\n            .some((cls) => allowClassSet.has(cls))\n        ) {\n          return;\n        }\n        const idAttr = findAttr(node, \"id\");\n        if (idAttr?.value?.value.split(\" \").some((id) => allowIdSet.has(id))) {\n          return;\n        }\n\n        const width = findAttr(node, \"width\");\n        const height = findAttr(node, \"height\");\n\n        if (!height || !height.value) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.MISSING_HEIGHT,\n            data: {\n              name: node.name,\n            },\n          });\n        }\n\n        if (!width?.value) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.MISSING_WIDTH,\n            data: {\n              name: node.name,\n            },\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-form-method.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, getNameOf } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  MISSING_VALUE: \"missingValue\",\n  UNEXPECTED: \"unexpected\",\n};\n\nconst ALLOWED_METHODS = new Set([\"GET\", \"POST\", \"DIALOG\"]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require `method` attribute in `<form>`\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"require-form-method\"),\n    },\n\n    fixable: false,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"The 'method' attribute is missing on the <form>.\",\n      [MESSAGE_IDS.MISSING_VALUE]:\n        \"The 'method' attribute value is missing on the <form>\",\n      [MESSAGE_IDS.UNEXPECTED]:\n        \"The 'method' attribute has an invalid value on the <form>.\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (getNameOf(node) !== \"form\") {\n          return;\n        }\n        const method = findAttr(node, \"method\");\n\n        if (!method) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.MISSING,\n          });\n          return;\n        }\n\n        if (!method.value) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.MISSING_VALUE,\n          });\n          return;\n        }\n\n        if (method.value.parts?.some((part) => part.type !== NODE_TYPES.Part)) {\n          return;\n        }\n\n        if (!ALLOWED_METHODS.has(method.value.value.toUpperCase())) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-frame-title.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  UNEXPECTED: \"unexpected\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require `title` in `<frame>`, `<iframe>`\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"require-frame-title\"),\n    },\n\n    fixable: false,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing `title` attribute in {{frame}}.\",\n      [MESSAGE_IDS.UNEXPECTED]: \"Unexpected empty `title`.\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"frame\" && node.name !== \"iframe\") {\n          return;\n        }\n        const title = findAttr(node, \"title\");\n        if (!title) {\n          context.report({\n            node: node.openStart,\n            data: { frame: `<${node.name}>` },\n            messageId: MESSAGE_IDS.MISSING,\n          });\n        } else if (!title.value || title.value.value.trim().length === 0) {\n          context.report({\n            node: title,\n            messageId: MESSAGE_IDS.UNEXPECTED,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-img-alt.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {string[]} [substitute]\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING_ALT: \"missingAlt\",\n  INSERT_ALT: \"insertAlt\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"suggestion\",\n\n    docs: {\n      description: \"Require `alt` attribute on `<img>` tag\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: true,\n      url: getRuleUrl(\"require-img-alt\"),\n    },\n\n    fixable: null,\n    hasSuggestions: true,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          substitute: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.MISSING_ALT]: \"Missing `alt` attribute at `<img>` tag\",\n      [MESSAGE_IDS.INSERT_ALT]: 'Insert `alt=\"\"` at `<img>` tag',\n    },\n  },\n\n  create(context) {\n    const substitute = context.options?.[0]?.substitute || [];\n\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"img\") {\n          return;\n        }\n\n        const hasAlt = hasValidAltOrSubstitute(node, substitute);\n        const hasSubstituteOption = substitute.length > 0;\n\n        if (!hasAlt) {\n          context.report({\n            loc: {\n              start: node.openStart.loc.start,\n              end: node.openEnd.loc.end,\n            },\n            messageId: MESSAGE_IDS.MISSING_ALT,\n            suggest: hasSubstituteOption\n              ? null\n              : [\n                  {\n                    messageId: MESSAGE_IDS.INSERT_ALT,\n                    fix(fixer) {\n                      return fixer.insertTextBefore(node.openEnd, ' alt=\"\"');\n                    },\n                  },\n                ],\n          });\n        }\n      },\n    });\n  },\n};\n\n/**\n * @param {Tag} node\n * @param {string[]} substitute\n * @returns {boolean}\n */\nfunction hasValidAltOrSubstitute(node, substitute) {\n  let hasAnyAlt = false;\n\n  for (const attr of node.attributes) {\n    if (attr.key?.value) {\n      const isAltAttr = attr.key.value === \"alt\";\n      const isSubstituteAttr = substitute.includes(attr.key.value);\n\n      if (isAltAttr || isSubstituteAttr) {\n        hasAnyAlt = true;\n        break;\n      }\n    }\n  }\n\n  return hasAnyAlt;\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-input-label.js",
    "content": "/**\n * @import {Tag} from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { findParent, isTag, getNameOf } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missingLabel\",\n};\n\nconst INPUT_TAGS = new Set([\"input\", \"textarea\", \"select\"]);\n\nconst LABEL_ATTRIBUTES = new Set([\"id\", \"aria-labelledby\", \"aria-label\"]);\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Enforces use of label for form elements(`input`, `textarea`, `select`)\",\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"require-input-label\"),\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing an associated label\",\n    },\n  },\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (!INPUT_TAGS.has(getNameOf(node))) {\n          return;\n        }\n\n        for (const attr of node.attributes) {\n          if (\n            LABEL_ATTRIBUTES.has(attr.key.value.toLowerCase()) &&\n            attr.value?.value\n          ) {\n            return;\n          }\n\n          if (\n            attr.key.value.toLowerCase() === \"type\" &&\n            attr.value?.value === \"hidden\"\n          ) {\n            return;\n          }\n        }\n\n        const label = findParent(node, (parent) => {\n          return isTag(parent) && getNameOf(parent) === \"label\";\n        });\n\n        if (label) {\n          return;\n        }\n\n        context.report({\n          node,\n          messageId: \"missingLabel\",\n        });\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-lang.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr } = require(\"./utils/node\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  EMPTY: \"empty\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require `lang` attribute on `<html>` tag\",\n      category: RULE_CATEGORY.SEO,\n      recommended: true,\n      url: getRuleUrl(\"require-lang\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing `lang` attribute in `<html>` tag.\",\n      [MESSAGE_IDS.EMPTY]: \"Unexpected empty `lang` in in `<html>` tag.\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"html\") {\n          return;\n        }\n        const langAttr = findAttr(node, \"lang\");\n        if (!langAttr) {\n          context.report({\n            loc: {\n              start: node.openStart.loc.start,\n              end: node.openEnd.loc.end,\n            },\n            messageId: MESSAGE_IDS.MISSING,\n          });\n        } else if (langAttr.value?.value.trim().length === 0) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.EMPTY,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-li-container.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  INVALID: \"invalid\",\n};\n\nconst VALID_CONTAINERS = [\"ul\", \"ol\", \"menu\"];\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce `<li>` to be in `<ul>`, `<ol>` or `<menu>`.\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: true,\n      url: getRuleUrl(\"require-li-container\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.INVALID]:\n        \"Invalid container of `<li>`. <li>` should be in `<ul>`, `<ol>` or `<menu>`.\",\n    },\n  },\n\n  create(context) {\n    return {\n      Tag(node) {\n        if (node.name !== \"li\") {\n          return;\n        }\n        if (!node.parent || node.parent.type === NODE_TYPES.Document) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.INVALID,\n          });\n        } else if (\n          node.parent.type === NODE_TYPES.Tag &&\n          !VALID_CONTAINERS.includes(node.parent.name || \"\")\n        ) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.INVALID,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-meta-charset.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { find } = require(\"./utils/array\");\nconst { findAttr, isTag } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  EMPTY: \"empty\",\n};\n\n/**\n * @param {AnyNode} node\n * @returns {node is Tag}\n */\nfunction isMetaCharset(node) {\n  return isTag(node) && node.name === \"meta\" && !!findAttr(node, \"charset\");\n}\n\n/**\n * Get the indentation string for inserting a new child inside a head tag.\n *\n * @param {Tag} headNode\n * @returns {string}\n */\nfunction getChildIndent(headNode) {\n  const { children } = headNode;\n  if (children.length > 0) {\n    // If first child is a text node (e.g. \"\\n    \"), extract trailing whitespace\n    const first = children[0];\n    if (first.type === \"Text\" && first.value) {\n      const match = first.value.match(/\\n([ \\t]*)$/);\n      if (match) {\n        return match[1];\n      }\n    }\n    // Non-text first child: use its column position\n    return \" \".repeat(first.loc.start.column);\n  }\n  // Empty head: use head's column + 2-space indent\n  return \" \".repeat(headNode.loc.start.column + 2);\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: 'Enforce use of `<meta charset=\"...\">` in `<head>`',\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"require-meta-charset\"),\n    },\n\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: 'Missing `<meta charset=\"...\">`.',\n      [MESSAGE_IDS.EMPTY]: \"Unexpected empty charset.\",\n    },\n  },\n\n  create(context) {\n    return {\n      Tag(node) {\n        if (node.name !== \"head\") {\n          return;\n        }\n\n        const metaCharset = find(node.children, isMetaCharset);\n\n        if (!metaCharset) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.MISSING,\n            fix(fixer) {\n              const indent = getChildIndent(node);\n              return fixer.insertTextAfterRange(\n                node.openEnd.range,\n                `\\n${indent}<meta charset=\"UTF-8\">`\n              );\n            },\n          });\n          return;\n        }\n\n        const charsetAttr = findAttr(metaCharset, \"charset\");\n\n        if (charsetAttr) {\n          if (!charsetAttr.value || !charsetAttr.value.value.length) {\n            context.report({\n              node: charsetAttr,\n              messageId: MESSAGE_IDS.EMPTY,\n              fix(fixer) {\n                if (charsetAttr.value) {\n                  // <meta charset=\"\"> — replace empty value with UTF-8\n                  return fixer.replaceTextRange(\n                    charsetAttr.value.range,\n                    \"UTF-8\"\n                  );\n                } else {\n                  // <meta charset> — append =\"UTF-8\" after key\n                  return fixer.insertTextAfterRange(\n                    charsetAttr.key.range,\n                    '=\"UTF-8\"'\n                  );\n                }\n              },\n            });\n          }\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-meta-description.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { filter } = require(\"./utils/array\");\nconst { findAttr, isTag } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  EMPTY: \"empty\",\n};\n\n/**\n * @param {AnyNode} node\n * @returns {node is Tag}\n */\nfunction isMetaTagNode(node) {\n  return isTag(node) && node.name === \"meta\";\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: 'Require use of `<meta name=\"description\">` in `<head>`',\n      category: RULE_CATEGORY.SEO,\n      recommended: false,\n      url: getRuleUrl(\"require-meta-description\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: 'Missing `<meta name=\"description\">`.',\n      [MESSAGE_IDS.EMPTY]:\n        'Unexpected empty `content` in `<meta name=\"description\">`',\n    },\n  },\n  create(context) {\n    return {\n      Tag(node) {\n        if (node.name !== \"head\") {\n          return;\n        }\n        const metaTags = filter(node.children, isMetaTagNode);\n\n        const descriptionMetaTags = metaTags.filter((meta) => {\n          const nameAttr = findAttr(meta, \"name\");\n          return nameAttr?.value?.value.toLowerCase() === \"description\";\n        });\n\n        if (descriptionMetaTags.length === 0) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.MISSING,\n          });\n        } else {\n          descriptionMetaTags.forEach((meta) => {\n            const content = findAttr(meta, \"content\");\n            if (\n              !content ||\n              !content.value ||\n              !content.value.value.trim().length\n            ) {\n              context.report({\n                node: content || meta,\n                messageId: MESSAGE_IDS.EMPTY,\n              });\n            }\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-meta-viewport.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { find } = require(\"./utils/array\");\nconst { findAttr, isTag } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  EMPTY: \"empty\",\n};\n\n/**\n * @param {AnyNode} node\n * @returns {node is Tag}\n */\nfunction isMetaViewport(node) {\n  if (isTag(node) && node.name === \"meta\") {\n    const nameAttribute = findAttr(node, \"name\");\n    return !!(\n      nameAttribute &&\n      nameAttribute.value &&\n      nameAttribute.value.value.toLowerCase() === \"viewport\"\n    );\n  }\n  return false;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: 'Enforce use of `<meta name=\"viewport\">` in `<head>`',\n      category: RULE_CATEGORY.ACCESSIBILITY,\n      recommended: false,\n      url: getRuleUrl(\"require-meta-viewport\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: 'Missing `<meta name=\"viewport\">`.',\n      [MESSAGE_IDS.EMPTY]:\n        'Unexpected empty `content` attribute in `<meta name=\"viewport\">`.',\n    },\n  },\n\n  create(context) {\n    return {\n      Tag(node) {\n        if (node.name !== \"head\") {\n          return;\n        }\n\n        const metaViewport = find(node.children, isMetaViewport);\n\n        if (!metaViewport) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.MISSING,\n          });\n          return;\n        }\n\n        const contentAttribute = findAttr(metaViewport, \"content\");\n        const isAttributeEmpty =\n          !contentAttribute ||\n          !contentAttribute.value ||\n          !contentAttribute.value.value.length;\n\n        if (isAttributeEmpty) {\n          const reportTarget =\n            !contentAttribute || !contentAttribute.value\n              ? metaViewport\n              : contentAttribute;\n          context.report({\n            node: reportTarget,\n            messageId: MESSAGE_IDS.EMPTY,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-open-graph-protocol.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {string[]} Option\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { filter } = require(\"./utils/array\");\nconst { findAttr, isTag } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  EMPTY: \"empty\",\n};\n\nconst DEFAULT_REQUIRED_PROPERTIES = [\n  \"og:title\",\n  \"og:type\",\n  \"og:url\",\n  \"og:image\",\n];\n\n/**\n * @param {string[]} properties\n * @returns {string[]}\n */\nfunction normalize(properties) {\n  return properties.map((prop) => {\n    if (prop.indexOf(\"og:\") === 0) return prop;\n    return `og:${prop}`;\n  });\n}\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description:\n        \"Enforce use of specified meta tags for open graph protocol.\",\n      category: RULE_CATEGORY.SEO,\n      recommended: false,\n      url: getRuleUrl(\"require-open-graph-protocol\"),\n    },\n\n    fixable: null,\n    schema: [\n      {\n        type: \"array\",\n        items: {\n          type: \"string\",\n        },\n        uniqueItems: true,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.MISSING]:\n        \"Require use of meta tags for OGP. ({{properties}})\",\n      [MESSAGE_IDS.EMPTY]: \"Unexpected empty 'content' attribute\",\n    },\n  },\n\n  create(context) {\n    /** @type {string[]} */\n    const requiredProperties = normalize(\n      (context.options && context.options[0]) || DEFAULT_REQUIRED_PROPERTIES\n    );\n\n    /**\n     * @param {AnyNode} node\n     * @returns {node is Tag}\n     */\n    function isOgpMeta(node) {\n      const isMeta = isTag(node) && node.name === \"meta\";\n      const property = isMeta ? findAttr(node, \"property\") : undefined;\n      const hasOgProperty = property?.value?.value?.indexOf(\"og:\") === 0;\n      return hasOgProperty;\n    }\n\n    return {\n      Tag(node) {\n        if (node.name !== \"head\") {\n          return;\n        }\n        const { children } = node;\n\n        const metaTags = filter(children, isOgpMeta);\n\n        const missingProperties = requiredProperties.filter((required) => {\n          return !metaTags.some((meta) => {\n            const property = findAttr(meta, \"property\");\n            if (property?.value) {\n              return property.value.value === required;\n            }\n            return false;\n          });\n        });\n\n        const emptyContentMetaTags = metaTags.filter((meta) => {\n          const property = findAttr(meta, \"property\");\n          if (\n            property?.value &&\n            requiredProperties.includes(property.value.value)\n          ) {\n            const content = findAttr(meta, \"content\");\n            return !content?.value?.value;\n          }\n          return false;\n        });\n\n        if (missingProperties.length) {\n          context.report({\n            node: node.openStart,\n            data: {\n              properties: missingProperties.join(\", \"),\n            },\n            messageId: MESSAGE_IDS.MISSING,\n          });\n        }\n\n        if (emptyContentMetaTags.length) {\n          emptyContentMetaTags.forEach((meta) => {\n            const content = findAttr(meta, \"content\");\n            context.report({\n              node: content || meta,\n              messageId: MESSAGE_IDS.EMPTY,\n            });\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/require-title.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   Tag,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { find } = require(\"./utils/array\");\nconst { isText, isTag } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  MISSING_TITLE: \"missing\",\n  EMPTY_TITLE: \"empty\",\n};\n\n/**\n * @param {AnyNode} node\n * @returns {node is Tag}\n */\nfunction isTitle(node) {\n  return isTag(node) && node.name === \"title\";\n}\n\n/**\n * @param {AnyNode} node\n * @returns {node is Text}\n */\nfunction isNonEmptyText(node) {\n  return isText(node) && node.value.trim().length > 0;\n}\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require `<title>` in the `<head>`\",\n      category: RULE_CATEGORY.SEO,\n      recommended: true,\n      url: getRuleUrl(\"require-title\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING_TITLE]:\n        \"Missing `<title><title/>` in the `<head><head/>`\",\n      [MESSAGE_IDS.EMPTY_TITLE]: \"Unexpected empty text in `<title><title/>`\",\n    },\n  },\n  create(context) {\n    return {\n      Tag(node) {\n        if (node.name !== \"head\") {\n          return;\n        }\n\n        const title = find(node.children, isTitle);\n\n        if (!title) {\n          context.report({\n            node,\n            messageId: MESSAGE_IDS.MISSING_TITLE,\n          });\n          return;\n        }\n\n        const content = find(title.children, isNonEmptyText);\n\n        if (!content) {\n          context.report({\n            node: title,\n            messageId: MESSAGE_IDS.EMPTY_TITLE,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/sort-attrs.js",
    "content": "/**\n * @import {Attribute} from \"@html-eslint/types\"\n * @import {\n *   RuleFixer,\n *   RuleModule\n * } from \"../types\"\n * @typedef {Object} Option\n * @property {(string | { pattern: string })[]} [Option.priority]\n */\n\nconst { hasTemplate } = require(\"./utils/node\");\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { getSourceCode } = require(\"./utils/source-code\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\n\nconst MESSAGE_IDS = {\n  UNSORTED: \"unsorted\",\n};\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Enforce priority and alphabetical sorting of attributes\",\n      category: RULE_CATEGORY.STYLE,\n      recommended: false,\n      url: getRuleUrl(\"sort-attrs\"),\n    },\n    fixable: \"code\",\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          priority: {\n            type: \"array\",\n            items: {\n              oneOf: [\n                {\n                  type: \"string\",\n                },\n                {\n                  type: \"object\",\n                  properties: {\n                    pattern: {\n                      type: \"string\",\n                    },\n                  },\n                  required: [\"pattern\"],\n                  additionalProperties: false,\n                },\n              ],\n            },\n            uniqueItems: true,\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [MESSAGE_IDS.UNSORTED]:\n        \"Attributes should be sorted by priority and alphabetically\",\n    },\n  },\n  create(context) {\n    const sourceCode = getSourceCode(context);\n    const option = context.options[0] || {\n      priority: [\"id\", \"type\", \"class\", \"style\"],\n    };\n    /** @type {(string | { pattern: string; regex: RegExp })[]} */\n    const priority = (option.priority || []).map((item) => {\n      if (item && typeof item === \"object\" && \"pattern\" in item) {\n        return {\n          ...item,\n          regex: new RegExp(item.pattern, \"u\"),\n        };\n      }\n      return item;\n    });\n\n    /**\n     * @param {string} attrName\n     * @param {string | { pattern: string; regex: RegExp }} priorityItem\n     * @returns {boolean}\n     */\n    function matchesPriority(attrName, priorityItem) {\n      if (typeof priorityItem === \"string\") {\n        return attrName === priorityItem;\n      }\n      if (\n        priorityItem &&\n        typeof priorityItem === \"object\" &&\n        priorityItem.regex\n      ) {\n        return priorityItem.regex.test(attrName);\n      }\n      return false;\n    }\n\n    /**\n     * @param {string} attrName\n     * @returns {number}\n     */\n    function getPriorityIndex(attrName) {\n      for (let i = 0; i < priority.length; i++) {\n        if (matchesPriority(attrName, priority[i])) {\n          return i;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * @param {Attribute} attrA\n     * @param {Attribute} attrB\n     * @returns {number}\n     */\n    function compare(attrA, attrB) {\n      const keyA = attrA.key.value;\n      const keyB = attrB.key.value;\n\n      const keyAReservedValue = getPriorityIndex(keyA);\n      const keyBReservedValue = getPriorityIndex(keyB);\n      if (keyAReservedValue >= 0 && keyBReservedValue >= 0) {\n        return keyAReservedValue - keyBReservedValue;\n      } else if (keyAReservedValue >= 0) {\n        return -1;\n      } else if (keyBReservedValue >= 0) {\n        return 1;\n      }\n      return keyA.localeCompare(keyB);\n    }\n\n    /**\n     * @param {string} source\n     * @param {Attribute[]} unsorted\n     * @param {Attribute[]} sorted\n     * @returns {string}\n     */\n    function getSortedCode(source, unsorted, sorted) {\n      let result = \"\";\n      unsorted.forEach((unsortedAttr, index) => {\n        const sortedAttr = sorted[index];\n        result += source.slice(sortedAttr.range[0], sortedAttr.range[1]);\n\n        const nextUnsortedAttr = unsorted[index + 1];\n        if (nextUnsortedAttr) {\n          result += source.slice(\n            unsortedAttr.range[1],\n            nextUnsortedAttr.range[0]\n          );\n        }\n      });\n      return result;\n    }\n\n    /**\n     * @param {RuleFixer} fixer\n     * @param {Attribute[]} unsorted\n     * @param {Attribute[]} sorted\n     */\n    function fix(fixer, unsorted, sorted) {\n      const source = sourceCode.getText();\n      return fixer.replaceTextRange(\n        [unsorted[0].range[0], unsorted[unsorted.length - 1].range[1]],\n        getSortedCode(source, unsorted, sorted)\n      );\n    }\n\n    /**\n     * @param {Attribute[]} before\n     * @param {Attribute[]} after\n     * @returns {boolean}\n     */\n    function isChanged(before, after) {\n      for (let i = 0; i < before.length; i++) {\n        if (before[i] !== after[i]) return true;\n      }\n      return false;\n    }\n\n    /**\n     * @param {Attribute[]} attributes\n     * @returns {Attribute[][]}\n     */\n    function groupAttributes(attributes) {\n      /** @type {Attribute[][]} */\n      const attributesList = [];\n      let index = 0;\n\n      for (const attribute of attributes) {\n        if (hasTemplate(attribute.key)) {\n          index = attributesList.length;\n          continue;\n        }\n        if (!attributesList[index]) {\n          attributesList[index] = [];\n        }\n        attributesList[index].push(attribute);\n      }\n      return attributesList;\n    }\n\n    /** @param {Attribute[]} unsorted */\n    function checkSorting(unsorted) {\n      if (unsorted.length <= 1) {\n        return;\n      }\n      const grouped = groupAttributes(unsorted);\n      grouped.forEach((unsorted) => {\n        const sorted = [...unsorted].sort(compare);\n\n        if (!isChanged(unsorted, sorted)) {\n          return;\n        }\n        const first = unsorted[0];\n        const last = unsorted[unsorted.length - 1];\n        context.report({\n          loc: {\n            start: first.loc.start,\n            end: last.loc.end,\n          },\n          messageId: MESSAGE_IDS.UNSORTED,\n          fix(fixer) {\n            return fix(fixer, unsorted, sorted);\n          },\n        });\n      });\n    }\n\n    return createVisitors(context, {\n      ScriptTag(node) {\n        checkSorting(node.attributes);\n      },\n      Tag(node) {\n        checkSorting(node.attributes);\n      },\n      StyleTag(node) {\n        checkSorting(node.attributes);\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/svg-require-viewbox.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { findAttr, hasTemplate } = require(\"./utils/node\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { createVisitors } = require(\"./utils/visitors\");\n\nconst MESSAGE_IDS = {\n  MISSING: \"missing\",\n  EMPTY: \"empty\",\n};\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Require `viewBox` attribute on `<svg>` elements\",\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      recommended: false,\n      url: getRuleUrl(\"svg-require-viewbox\"),\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [MESSAGE_IDS.MISSING]: \"Missing `viewBox` attribute on `<svg>`.\",\n      [MESSAGE_IDS.EMPTY]: \"Empty `viewBox` attribute on `<svg>`.\",\n    },\n  },\n\n  create(context) {\n    return createVisitors(context, {\n      Tag(node) {\n        if (node.name !== \"svg\") {\n          return;\n        }\n\n        const viewBoxAttr = findAttr(node, \"viewBox\");\n\n        if (!viewBoxAttr) {\n          context.report({\n            node: node.openStart,\n            messageId: MESSAGE_IDS.MISSING,\n          });\n          return;\n        }\n\n        const { value } = viewBoxAttr;\n        if (value && hasTemplate(value)) {\n          return;\n        }\n\n        if (!value || !value.value || value.value.trim() === \"\") {\n          context.report({\n            node: viewBoxAttr,\n            messageId: MESSAGE_IDS.EMPTY,\n          });\n        }\n      },\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/use-baseline.js",
    "content": "/**\n * @import {\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {\"widely\" | \"newly\" | number} Option.available\n */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\nconst { createVisitors } = require(\"./utils/visitors\");\nconst { getRuleUrl } = require(\"./utils/rule\");\nconst { useBaseline, USE_BASELINE_MESSAGE_IDS } = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/factory\");\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Enforce the use of baseline features.\",\n      recommended: true,\n      category: RULE_CATEGORY.BEST_PRACTICE,\n      url: getRuleUrl(\"use-baseline\"),\n    },\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          available: {\n            anyOf: [\n              {\n                enum: [\"widely\", \"newly\"],\n              },\n              {\n                // baseline year\n                type: \"integer\",\n                minimum: 2000,\n                maximum: new Date().getFullYear(),\n              },\n            ],\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n\n    messages: {\n      [USE_BASELINE_MESSAGE_IDS.noBaselineElement]:\n        \"Element '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute]:\n        \"Attribute '{{attr}}' on '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute]:\n        \"Attribute '{{attr}}' is not a {{availability}} available baseline feature.\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || { available: \"widely\" };\n    const { checkAttributes } = useBaseline(options);\n    /** @param {Tag | ScriptTag | StyleTag} node */\n    function check(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkAttributes(adapter);\n\n      for (const { messageId, data, loc } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return createVisitors(context, {\n      ScriptTag: check,\n      StyleTag: check,\n      Tag: check,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/array.js",
    "content": "/**\n * @template T\n * @template {T} S\n * @param {T[]} items\n * @param {(node: T) => node is S} predicate\n * @returns {S | undefined}\n */\nfunction find(items, predicate) {\n  return items.find(predicate);\n}\n\n/**\n * @template T\n * @template {T} S\n * @param {T[]} items\n * @param {(node: T) => node is S} predicate\n * @returns {S[]}\n */\nfunction filter(items, predicate) {\n  return items.filter(predicate);\n}\n\nmodule.exports = {\n  find,\n  filter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/capo-adapter.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   ScriptTag,\n *   StyleTag,\n *   Tag\n * } from \"@html-eslint/types\"\n */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\nconst { findAttr, getNameOf } = require(\"./node\");\n\n/** Adapter for HTML ESLint AST nodes to work with capo.js */\nclass HtmlEslintAdapter {\n  /**\n   * Check if node is an Element (Tag, ScriptTag, or StyleTag)\n   *\n   * @param {AnyNode} node - The node to check\n   * @returns {node is Tag | ScriptTag | StyleTag}\n   */\n  isElement(node) {\n    return (\n      node.type === NODE_TYPES.Tag ||\n      node.type === NODE_TYPES.ScriptTag ||\n      node.type === NODE_TYPES.StyleTag\n    );\n  }\n\n  /**\n   * Get the tag name of an element (lowercase)\n   *\n   * @param {Tag | StyleTag | ScriptTag} node - Element node\n   * @returns {string} - Tag name like 'meta', 'link', 'script'\n   */\n  getTagName(node) {\n    if (!this.isElement(node)) {\n      return \"\";\n    }\n    return getNameOf(node);\n  }\n\n  /**\n   * Get attribute value from element\n   *\n   * @param {Tag | StyleTag | ScriptTag} node - Element node\n   * @param {string} attrName - Attribute name (case-insensitive)\n   * @returns {string | null} - Attribute value or null if not found\n   */\n  getAttribute(node, attrName) {\n    if (!this.isElement(node)) {\n      return null;\n    }\n\n    const attr = findAttr(node, attrName);\n    if (!attr || !attr.value) {\n      return null;\n    }\n\n    return attr.value.value || null;\n  }\n\n  /**\n   * Check if element has a specific attribute\n   *\n   * @param {Tag | StyleTag | ScriptTag} node - Element node\n   * @param {string} attrName - Attribute name (case-insensitive)\n   * @returns {boolean} - True if attribute exists\n   */\n  hasAttribute(node, attrName) {\n    if (!this.isElement(node)) {\n      return false;\n    }\n\n    return !!findAttr(node, attrName);\n  }\n\n  /**\n   * @param {Tag | StyleTag | ScriptTag} node - Element node\n   * @returns {string[]} - Array of attribute names\n   */\n  getAttributeNames(node) {\n    if (!this.isElement(node) || !node.attributes) {\n      return [];\n    }\n\n    return node.attributes\n      .filter((attr) => attr.type === NODE_TYPES.Attribute && attr.key)\n      .map((attr) => attr.key.value);\n  }\n\n  /**\n   * @param {Tag | StyleTag | ScriptTag} node - Element node\n   * @returns {string} - Text content\n   */\n  getTextContent(node) {\n    if (!this.isElement(node)) {\n      return \"\";\n    }\n\n    // ScriptTag and StyleTag have a value property containing the content\n    if (\n      node.type === NODE_TYPES.ScriptTag ||\n      node.type === NODE_TYPES.StyleTag\n    ) {\n      if (node.value && node.value.value) {\n        return node.value.value;\n      }\n    }\n\n    return \"\";\n  }\n\n  /**\n   * Get child elements of a node\n   *\n   * @param {Tag | StyleTag | ScriptTag} node - Parent node\n   * @returns {Tag[\"children\"]} - Array of child element nodes (excluding\n   *   text/comment nodes)\n   */\n  getChildren(node) {\n    if (node.type !== NODE_TYPES.Tag || !node.children) {\n      return [];\n    }\n\n    return node.children.filter((child) => this.isElement(child));\n  }\n\n  /**\n   * Get parent element of a node\n   *\n   * @param {AnyNode} node - Child node\n   * @returns {any | null} - Parent element node, or null if no parent\n   */\n  getParent(node) {\n    return node && node.parent ? node.parent : null;\n  }\n\n  /**\n   * Get sibling elements of a node\n   *\n   * @param {AnyNode} node - Element node\n   * @returns {AnyNode[]} - Array of sibling element nodes (excluding the node\n   *   itself)\n   */\n  getSiblings(node) {\n    const parent = this.getParent(node);\n    if (!parent) {\n      return [];\n    }\n\n    const children = this.getChildren(parent);\n    return children.filter((child) => child !== node);\n  }\n\n  /**\n   * Get source location for a node\n   *\n   * @param {any} node - Element node\n   * @returns {{\n   *   line: number;\n   *   column: number;\n   *   endLine?: number;\n   *   endColumn?: number;\n   * } | null}\n   */\n  getLocation(node) {\n    if (!node || !node.loc) {\n      return null;\n    }\n\n    return {\n      line: node.loc.start.line,\n      column: node.loc.start.column,\n      endLine: node.loc.end.line,\n      endColumn: node.loc.end.column,\n    };\n  }\n\n  /**\n   * Stringify element for logging/debugging\n   *\n   * @param {AnyNode} node - Element node\n   * @returns {string} - String representation like \"<meta charset='utf-8'>\"\n   */\n  /* istanbul ignore next */\n  stringify(node) {\n    if (!this.isElement(node)) {\n      return \"\";\n    }\n\n    const tagName = this.getTagName(node);\n    const attrNames = this.getAttributeNames(node);\n\n    if (attrNames.length === 0) {\n      return `<${tagName}>`;\n    }\n\n    const attrs = attrNames\n      .map((name) => {\n        const value = this.getAttribute(node, name);\n        if (value === null) {\n          return name;\n        }\n        return `${name}=\"${value}\"`;\n      })\n      .join(\" \");\n\n    return `<${tagName} ${attrs}>`;\n  }\n}\n\nmodule.exports = { HtmlEslintAdapter };\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/capo.d.ts",
    "content": "declare module \"@rviscomi/capo.js\" {\n  export interface WeightInfo {\n    element: any;\n    weight: number;\n    category: string;\n  }\n\n  export interface OrderingViolation {\n    index: number;\n    currentElement: any;\n    nextElement: any;\n    currentWeight: number;\n    nextWeight: number;\n    currentCategory: string;\n    nextCategory: string;\n    message: string;\n  }\n\n  export interface ValidationWarning {\n    warning: string;\n    element?: any | any[];\n    elements?: any[];\n  }\n\n  export interface CustomValidation {\n    ruleId?: string;\n    element: any;\n    warnings: string[];\n    payload?: any;\n  }\n\n  export interface AnalysisResult {\n    weights: WeightInfo[];\n    validationWarnings: ValidationWarning[];\n    customValidations: CustomValidation[];\n    headElement: any;\n    orderingViolations?: OrderingViolation[];\n  }\n\n  export interface HTMLAdapter {\n    isElement(node: any): boolean;\n    getTagName(node: any): string;\n    getAttribute(node: any, attrName: string): string | null;\n    hasAttribute(node: any, attrName: string): boolean;\n    getAttributeNames(node: any): string[];\n    getTextContent(node: any): string;\n    getChildren(node: any): any[];\n    getParent(node: any): any | null;\n    getSiblings(node: any): any[];\n    getLocation?(node: any): {\n      line: number;\n      column: number;\n      endLine?: number;\n      endColumn?: number;\n    } | null;\n    stringify(node: any): string;\n  }\n\n  export function analyzeHead(\n    headNode: any,\n    adapter: HTMLAdapter,\n    options?: {\n      includeValidation?: boolean;\n      includeCustomValidations?: boolean;\n    }\n  ): AnalysisResult;\n\n  export function analyzeHeadWithOrdering(\n    headNode: any,\n    adapter: HTMLAdapter,\n    options?: {\n      includeValidation?: boolean;\n      includeCustomValidations?: boolean;\n    }\n  ): AnalysisResult & { orderingViolations: OrderingViolation[] };\n\n  export function checkOrdering(weights: WeightInfo[]): OrderingViolation[];\n  export function getWeightCategory(weight: number): string;\n\n  export const ElementWeights: {\n    META: number;\n    TITLE: number;\n    PRECONNECT: number;\n    ASYNC_SCRIPT: number;\n    IMPORT_STYLES: number;\n    SYNC_SCRIPT: number;\n    SYNC_STYLES: number;\n    PRELOAD: number;\n    DEFER_SCRIPT: number;\n    PREFETCH_PRERENDER: number;\n    OTHER: number;\n  };\n\n  export function getWeight(element: any, adapter: HTMLAdapter): number;\n  export function getHeadWeights(head: any, adapter: HTMLAdapter): WeightInfo[];\n\n  export function isMeta(element: any, adapter: HTMLAdapter): boolean;\n  export function isTitle(element: any, adapter: HTMLAdapter): boolean;\n  export function isPreconnect(element: any, adapter: HTMLAdapter): boolean;\n  export function isAsyncScript(element: any, adapter: HTMLAdapter): boolean;\n  export function isImportStyles(element: any, adapter: HTMLAdapter): boolean;\n  export function isSyncScript(element: any, adapter: HTMLAdapter): boolean;\n  export function isSyncStyles(element: any, adapter: HTMLAdapter): boolean;\n  export function isPreload(element: any, adapter: HTMLAdapter): boolean;\n  export function isDeferScript(element: any, adapter: HTMLAdapter): boolean;\n  export function isPrefetchPrerender(\n    element: any,\n    adapter: HTMLAdapter\n  ): boolean;\n  export function isOriginTrial(element: any, adapter: HTMLAdapter): boolean;\n  export function isMetaCSP(element: any, adapter: HTMLAdapter): boolean;\n\n  export const VALID_HEAD_ELEMENTS: string[];\n  export function isValidElement(element: any, adapter: HTMLAdapter): boolean;\n  export function hasValidationWarning(\n    element: any,\n    adapter: HTMLAdapter\n  ): boolean;\n  export function getValidationWarnings(\n    head: any,\n    adapter: HTMLAdapter\n  ): ValidationWarning[];\n  export function getCustomValidations(\n    element: any,\n    adapter: HTMLAdapter,\n    head?: any\n  ): CustomValidation | null;\n\n  export class BrowserAdapter implements HTMLAdapter {\n    isElement(node: any): boolean;\n    getTagName(node: any): string;\n    getAttribute(node: any, attrName: string): string | null;\n    hasAttribute(node: any, attrName: string): boolean;\n    getAttributeNames(node: any): string[];\n    getTextContent(node: any): string;\n    getChildren(node: any): any[];\n    getParent(node: any): any | null;\n    getSiblings(node: any): any[];\n    getLocation(node: any): {\n      line: number;\n      column: number;\n      endLine?: number;\n      endColumn?: number;\n    } | null;\n    stringify(node: any): string;\n  }\n\n  export class AdapterInterface implements HTMLAdapter {\n    isElement(node: any): boolean;\n    getTagName(node: any): string;\n    getAttribute(node: any, attrName: string): string | null;\n    hasAttribute(node: any, attrName: string): boolean;\n    getAttributeNames(node: any): string[];\n    getTextContent(node: any): string;\n    getChildren(node: any): any[];\n    getParent(node: any): any | null;\n    getSiblings(node: any): any[];\n    getLocation(node: any): {\n      line: number;\n      column: number;\n      endLine?: number;\n      endColumn?: number;\n    } | null;\n    stringify(node: any): string;\n  }\n\n  export function validateAdapter(adapter: any): void;\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/naming.js",
    "content": "// https://stylelint.io/user-guide/rules/regex\nconst KEBAB_CASE_REGEX = /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/;\nconst SNAKE_CASE_REGEX = /^([a-z][a-z0-9]*)(_[a-z0-9]+)*$/;\nconst PASCAL_CASE_REGEX = /^[A-Z][a-zA-Z0-9]+$/;\nconst CAMEL_CASE_REGEX = /^[a-z][a-zA-Z0-9]+$/;\n\nmodule.exports = {\n  /**\n   * Checks a given name follows `kebab-case` or not.\n   *\n   * @param {string} name Name to check\n   * @returns {boolean} `true` if a name follows `kebab-case`, otherwise\n   *   `false`.\n   */\n  isKebabCase(name) {\n    return KEBAB_CASE_REGEX.test(name);\n  },\n\n  /**\n   * Checks a given name follows `snake_case` or not.\n   *\n   * @param {string} name Name to check\n   * @returns {boolean} `true` if a name follows `snake_case`, otherwise\n   *   `false`.\n   */\n  isSnakeCase(name) {\n    return SNAKE_CASE_REGEX.test(name);\n  },\n\n  /**\n   * Checks a given name follows `PascalCase` or not.\n   *\n   * @param {string} name Name to check\n   * @returns {boolean} `true` if a name follows `PascalCase`, otherwise\n   *   `false`.\n   */\n  isPascalCase(name) {\n    return PASCAL_CASE_REGEX.test(name);\n  },\n\n  /**\n   * Checks a given name follows `camelCase` or not.\n   *\n   * @param {string} name Name to check\n   * @returns {boolean} `true` if a name follows `camelCase`, otherwise `false`.\n   */\n  isCamelCase(name) {\n    return CAMEL_CASE_REGEX.test(name);\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/node.js",
    "content": "/**\n * @import {\n *   AnyNode,\n *   AnyToken,\n *   Attribute,\n *   AttributeKey,\n *   AttributeValue,\n *   CloseTemplate,\n *   Comment,\n *   CommentContent,\n *   OpenTemplate,\n *   ScriptTag,\n *   StyleTag,\n *   Tag,\n *   Text\n * } from \"@html-eslint/types\"\n * @import {AST} from \"eslint\"\n * @import {\n *   BaseNode,\n *   Line\n * } from \"../../types\"\n */\n\nconst { NODE_TYPES } = require(\"@html-eslint/parser\");\n\n/**\n * @param {Tag | ScriptTag | StyleTag} node\n * @param {string} key\n * @returns {Attribute | undefined}\n */\nfunction findAttr(node, key) {\n  return node.attributes.find(\n    (attr) => attr.key && attr.key.value.toLowerCase() === key.toLowerCase()\n  );\n}\n\n/**\n * @param {Tag | ScriptTag} node\n * @param {string} attrName\n * @returns {boolean}\n */\nfunction hasAttr(node, attrName) {\n  return node.attributes.some(\n    (a) => a.type === \"Attribute\" && a.key.value === attrName\n  );\n}\n\n/**\n * Checks whether a node's attributes is empty or not.\n *\n * @param {Tag | ScriptTag | StyleTag} node\n * @returns {boolean}\n */\nfunction isAttributesEmpty(node) {\n  return !node.attributes || node.attributes.length <= 0;\n}\n\n/**\n * Checks whether a node's all tokens are on the same line or not.\n *\n * @param {AnyNode} node A node to check\n * @returns {boolean} `true` if a node's tokens are on the same line, otherwise\n *   `false`.\n */\nfunction isNodeTokensOnSameLine(node) {\n  return node.loc.start.line === node.loc.end.line;\n}\n\n/**\n * @param {AST.Range} rangeA\n * @param {AST.Range} rangeB\n * @returns {boolean}\n */\nfunction isRangesOverlap(rangeA, rangeB) {\n  return rangeA[0] < rangeB[1] && rangeB[0] < rangeA[1];\n}\n\n/**\n * @param {(Text | CommentContent)[\"parts\"]} parts\n * @param {AST.Range} range\n * @returns {boolean}\n */\nfunction isOverlapWithTemplates(parts, range) {\n  return parts\n    .filter((part) => part.type !== NODE_TYPES.Part)\n    .some((part) => isRangesOverlap(part.range, range));\n}\n\n/**\n * @param {AttributeKey | AttributeValue | Text | CommentContent} node\n * @returns {boolean}\n */\nfunction hasTemplate(node) {\n  return node.parts.some((part) => part.type !== NODE_TYPES.Part);\n}\n\n/**\n * @param {Text | CommentContent} node\n * @returns {Line[]}\n */\nfunction splitToLineNodes(node) {\n  let start = node.range[0];\n  let { line } = node.loc.start;\n  const startCol = node.loc.start.column;\n  /** @type {Line[]} */\n  const lineNodes = [];\n  const parts = node.parts || [];\n\n  /**\n   * @param {AST.Range} range\n   * @returns {{\n   *   isOverlapTemplate: boolean;\n   *   hasOpenTemplate: boolean;\n   *   hasCloseTemplate: boolean;\n   * }}\n   */\n  function getTemplateInfo(range) {\n    let isOverlapTemplate = false;\n    let hasOpenTemplate = false;\n    let hasCloseTemplate = false;\n    for (const part of parts) {\n      if (part.type === NODE_TYPES.Template) {\n        if (isRangesOverlap(part.range, range)) {\n          isOverlapTemplate = true;\n        }\n        if (part.open && isRangesOverlap(part.open.range, range)) {\n          hasOpenTemplate = true;\n        }\n        if (part.close && isRangesOverlap(part.close.range, range)) {\n          hasCloseTemplate = true;\n        }\n      }\n    }\n    return {\n      isOverlapTemplate,\n      hasCloseTemplate,\n      hasOpenTemplate,\n    };\n  }\n\n  node.value.split(\"\\n\").forEach((value, index) => {\n    const columnStart = index === 0 ? startCol : 0;\n    /** @type {AST.Range} */\n    const range = [start, start + value.length];\n    const loc = {\n      start: {\n        line,\n        column: columnStart,\n      },\n      end: {\n        line,\n        column: columnStart + value.length,\n      },\n    };\n    /** @type {Line} */\n    const lineNode = {\n      type: \"Line\",\n      value,\n      range,\n      loc,\n      ...getTemplateInfo(range),\n    };\n\n    start += value.length + 1;\n    line += 1;\n\n    lineNodes.push(lineNode);\n  });\n\n  return lineNodes;\n}\n\n/**\n * Get location between two nodes.\n *\n * @param {{ loc: AST.SourceLocation }} before A node placed in before\n * @param {{ loc: AST.SourceLocation }} after A node placed in after\n * @returns {AST.SourceLocation} Location between two nodes.\n */\nfunction getLocBetween(before, after) {\n  return {\n    start: before.loc.end,\n    end: after.loc.start,\n  };\n}\n\n/**\n * @param {BaseNode} node\n * @returns {node is Tag}\n */\nfunction isTag(node) {\n  return node.type === NODE_TYPES.Tag;\n}\n\n/**\n * @param {BaseNode} node\n * @returns {node is ScriptTag}\n */\nfunction isScript(node) {\n  return node.type === NODE_TYPES.ScriptTag;\n}\n\n/**\n * @param {BaseNode} node\n * @returns {node is StyleTag}\n */\nfunction isStyle(node) {\n  return node.type === NODE_TYPES.StyleTag;\n}\n\n/**\n * @param {BaseNode} node\n * @returns {node is Comment}\n */\nfunction isComment(node) {\n  return node.type === NODE_TYPES.Comment;\n}\n\n/**\n * @param {BaseNode} node\n * @returns {node is Text}\n */\nfunction isText(node) {\n  return node.type === NODE_TYPES.Text;\n}\n\n/**\n * @param {BaseNode} node\n * @returns {node is Line}\n */\nfunction isLine(node) {\n  return node.type === \"Line\";\n}\n\nconst lineBreakPattern = /\\r\\n|[\\r\\n\\u2028\\u2029]/u;\nconst lineEndingPattern = new RegExp(lineBreakPattern.source, \"gu\");\n/**\n * @param {string} source\n * @returns {string[]}\n */\nfunction codeToLines(source) {\n  return source.split(lineEndingPattern);\n}\n\n/**\n * @param {AnyNode} node\n * @param {(node: AnyNode) => boolean} predicate\n * @returns {null | AnyNode}\n */\nfunction findParent(node, predicate) {\n  if (!node.parent) {\n    return null;\n  }\n  if (\n    node.type === \"TaggedTemplateExpression\" ||\n    node.type === \"TemplateLiteral\" ||\n    node.type === \"TemplateElement\"\n  ) {\n    return null;\n  }\n  if (predicate(node.parent)) {\n    return node.parent;\n  }\n  return findParent(node.parent, predicate);\n}\n\n/**\n * @param {AnyToken[]} tokens\n * @returns {(CommentContent | Text)[\"parts\"][number][]}\n */\nfunction getTemplateTokens(tokens) {\n  return (\n    []\n      .concat(\n        ...tokens\n          // @ts-ignore\n          .map((token) => token[\"parts\"] || [])\n      )\n      // @ts-ignore\n      .filter((token) => token.type !== NODE_TYPES.Part)\n  );\n}\n\n/**\n * @param {Tag | ScriptTag | StyleTag} node\n * @returns {string}\n */\nfunction getNameOf(node) {\n  if (isScript(node)) {\n    return \"script\";\n  }\n  if (isStyle(node)) {\n    return \"style\";\n  }\n  return node.name.toLowerCase();\n}\n\nmodule.exports = {\n  findAttr,\n  isAttributesEmpty,\n  isNodeTokensOnSameLine,\n  splitToLineNodes,\n  getLocBetween,\n  findParent,\n  isTag,\n  isComment,\n  isText,\n  isLine,\n  isScript,\n  isStyle,\n  isOverlapWithTemplates,\n  codeToLines,\n  isRangesOverlap,\n  getTemplateTokens,\n  hasTemplate,\n  hasAttr,\n  getNameOf,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/rule.js",
    "content": "/** @param {string} ruleName */\nfunction getRuleUrl(ruleName) {\n  return \"https://html-eslint.org/docs/rules/\" + ruleName;\n}\n\nmodule.exports = {\n  getRuleUrl,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/settings.js",
    "content": "/**\n * @import {\n *   TaggedTemplateExpression,\n *   TemplateLiteral\n * } from \"@html-eslint/types\"\n * @import {\n *   Context,\n *   HTMLSettings,\n *   MaybeHTMLSettings\n * } from \"../../types\"\n */\n\nconst { getSourceCode } = require(\"../utils/source-code\");\n\nconst DEFAULT_SETTINGS = {\n  templateLiterals: {\n    tags: [\"^html$\"],\n    comments: [\"^\\\\s*html\\\\s*$\"],\n  },\n};\n\n/**\n * @param {{ html?: MaybeHTMLSettings }} settings\n * @returns {HTMLSettings}\n */\nfunction getSettings(settings) {\n  const tags =\n    (settings &&\n      settings.html &&\n      settings.html.templateLiterals &&\n      settings.html.templateLiterals.tags) ||\n    DEFAULT_SETTINGS.templateLiterals.tags;\n\n  const comments =\n    (settings &&\n      settings.html &&\n      settings.html.templateLiterals &&\n      settings.html.templateLiterals.comments) ||\n    DEFAULT_SETTINGS.templateLiterals.comments;\n\n  return {\n    templateLiterals: {\n      tags: tags.map((tag) => new RegExp(tag, \"u\")),\n      comments: comments.map((comment) => new RegExp(comment, \"u\")),\n    },\n  };\n}\n\n/**\n * @param {TaggedTemplateExpression} node\n * @param {Context<any[]>} context\n * @returns {boolean}\n */\nfunction shouldCheckTaggedTemplateExpression(node, context) {\n  const {\n    templateLiterals: { tags },\n  } = getSettings(context.settings);\n  const tagNode = node.tag;\n\n  return !!(\n    tagNode.type === \"Identifier\" && tags.some((tag) => tag.test(tagNode.name))\n  );\n}\n\n/**\n * @param {TemplateLiteral} node\n * @param {Context<any[]>} context\n * @returns {boolean}\n */\nfunction shouldCheckTemplateLiteral(node, context) {\n  const sourceCode = getSourceCode(context);\n  const { templateLiterals } = getSettings(context.settings);\n  const comments = sourceCode.getCommentsBefore(node);\n  const last = comments[comments.length - 1];\n  return !!(\n    last &&\n    templateLiterals.comments.some((comment) => comment.test(last.value))\n  );\n}\n\nmodule.exports = {\n  shouldCheckTemplateLiteral,\n  shouldCheckTaggedTemplateExpression,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/source-code.js",
    "content": "/** @import {Context} from \"../../types\" */\n\n/** @param {Context<any[]>} context */\nfunction getSourceCode(context) {\n  return (\n    context.sourceCode ||\n    /**\n     * @type {Context<any[]> & {\n     *   getSourceCode(): Context<any>[\"sourceCode\"];\n     * }}\n     */ (context).getSourceCode()\n  );\n}\n\nmodule.exports = {\n  getSourceCode,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/template-literal.js",
    "content": "/**\n * @import {TemplateHTMLVisitor} from \"@html-eslint/template-parser\"\n * @import {TemplateLiteral} from \"@html-eslint/types\"\n * @import {\n *   AnyToken,\n *   DocumentNode\n * } from \"es-html-parser\"\n * @import {SourceCode} from \"eslint\"\n */\n\nconst { parse, traverse } = require(\"@html-eslint/template-parser\");\n\n/**\n * Cache for parsed template literals to avoid re-parsing the same template\n * multiple times. Uses WeakMap for automatic garbage collection when nodes are\n * no longer referenced.\n *\n * @type {WeakMap<\n *   TemplateLiteral,\n *   { ast: any; html: string; tokens: any[] }\n * >}\n */\nconst templateCache = new WeakMap();\n\n/**\n * Get or create cached parse result for a template literal.\n *\n * @param {TemplateLiteral} node\n * @param {SourceCode} sourceCode\n * @param {TemplateHTMLVisitor} [visitor]\n * @returns {{ ast: DocumentNode; html: string; tokens: AnyToken[] }}\n */\nfunction parseTemplateLiteral(node, sourceCode, visitor) {\n  // Check if we already have a cached result for this node\n  const cachedResult = templateCache.get(node);\n  if (cachedResult) {\n    if (visitor) {\n      traverse(cachedResult.ast, visitor);\n    }\n    return cachedResult;\n  }\n\n  // Parse and cache the result\n  const result = parse(node, sourceCode);\n  templateCache.set(node, result);\n  if (visitor) {\n    traverse(result.ast, visitor);\n  }\n  return result;\n}\n\nmodule.exports = { parseTemplateLiteral };\n"
  },
  {
    "path": "packages/eslint-plugin/lib/rules/utils/visitors.js",
    "content": "/**\n * @import {\n *   Context,\n *   RuleListener\n * } from \"../../types\"\n */\n\nconst {\n  shouldCheckTaggedTemplateExpression,\n  shouldCheckTemplateLiteral,\n} = require(\"./settings\");\nconst { parseTemplateLiteral } = require(\"./template-literal\");\nconst { getSourceCode } = require(\"./source-code\");\n\n/**\n * @param {Context<any[]>} context\n * @param {any} visitors\n * @returns {RuleListener}\n */\nfunction createTemplateVisitors(context, visitors) {\n  return {\n    TaggedTemplateExpression(node) {\n      if (shouldCheckTaggedTemplateExpression(node, context)) {\n        parseTemplateLiteral(node.quasi, getSourceCode(context), visitors);\n      }\n    },\n    TemplateLiteral(node) {\n      if (shouldCheckTemplateLiteral(node, context)) {\n        parseTemplateLiteral(node, getSourceCode(context), visitors);\n      }\n    },\n  };\n}\n\n/**\n * @param {Context<any[]>} context\n * @param {RuleListener} visitors\n * @param {any} [templateVisitors]\n * @returns {RuleListener}\n */\nfunction createVisitors(context, visitors, templateVisitors) {\n  const tmplVisitors = createTemplateVisitors(\n    context,\n    templateVisitors || visitors\n  );\n  return {\n    ...visitors,\n    ...tmplVisitors,\n  };\n}\n\nmodule.exports = {\n  createVisitors,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/lib/types/ast.ts",
    "content": "import eslint from \"eslint\";\n\n/**\n * This is not a node generated by es-html-parser; it is created by utils's\n * splitToLineNodes.\n */\nexport interface Line extends BaseNode {\n  type: \"Line\";\n  value: string;\n  isOverlapTemplate: boolean;\n  hasOpenTemplate: boolean;\n  hasCloseTemplate: boolean;\n}\n\nexport interface BaseNode {\n  parent?: BaseNode | null;\n  type: string;\n  range: eslint.AST.Range;\n  loc: eslint.AST.SourceLocation;\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/types/index.ts",
    "content": "export * from \"./rule\";\nexport * from \"./settings\";\nexport * from \"./ast\";\n"
  },
  {
    "path": "packages/eslint-plugin/lib/types/rule.ts",
    "content": "import type eslint from \"eslint\";\nimport type * as AST from \"@html-eslint/types\";\nimport type * as estree from \"estree\";\nimport type { Line } from \"./ast\";\n\ntype AnyNodeAndLine = AST.AnyNode | Line;\n\ntype PostFix<T, S extends string> = {\n  [K in keyof T as `${K & string}${S}`]: T[K];\n};\ninterface BaseRuleListener {\n  Document?: (node: AST.Document) => void;\n  AttributeKey?: (node: AST.AttributeKey) => void;\n  Text?: (node: AST.Text) => void;\n  Tag?: (node: AST.Tag) => void;\n  OpenTagStart?: (node: AST.OpenTagStart) => void;\n  OpenTagEnd?: (node: AST.OpenTagEnd) => void;\n  CloseTag?: (node: AST.CloseTag) => void;\n  Attribute?: (node: AST.Attribute) => void;\n  AttributeValue?: (node: AST.AttributeValue) => void;\n  AttributeValueWrapperEnd?: (node: AST.AttributeValueWrapperEnd) => void;\n  AttributeValueWrapperStart?: (node: AST.AttributeValueWrapperStart) => void;\n  ScriptTag?: (node: AST.ScriptTag) => void;\n  OpenScriptTagStart?: (node: AST.OpenScriptTagStart) => void;\n  CloseScriptTag?: (node: AST.CloseScriptTag) => void;\n  OpenScriptTagEnd?: (node: AST.OpenScriptTagEnd) => void;\n  ScriptTagContent?: (node: AST.ScriptTagContent) => void;\n  StyleTag?: (node: AST.StyleTag) => void;\n  OpenStyleTagStart?: (node: AST.OpenStyleTagStart) => void;\n  OpenStyleTagEnd?: (node: AST.OpenStyleTagEnd) => void;\n  StyleTagContent?: (node: AST.StyleTagContent) => void;\n  CloseStyleTag?: (node: AST.CloseStyleTag) => void;\n  Comment?: (node: AST.Comment) => void;\n  CommentOpen?: (node: AST.CommentOpen) => void;\n  CommentClose?: (node: AST.CommentClose) => void;\n  CommentContent?: (node: AST.CommentContent) => void;\n  Doctype?: (node: AST.Doctype) => void;\n  DoctypeOpen?: (node: AST.DoctypeOpen) => void;\n  DoctypeClose?: (node: AST.DoctypeClose) => void;\n  DoctypeAttribute?: (node: AST.DoctypeAttribute) => void;\n  DoctypeAttributeValue?: (node: AST.DoctypeAttributeValue) => void;\n  DoctypeAttributeWrapperStart?: (\n    node: AST.DoctypeAttributeWrapperStart\n  ) => void;\n  DoctypeAttributeWrapperEnd?: (node: AST.DoctypeAttributeWrapperEnd) => void;\n  TaggedTemplateExpression?: (node: AST.TaggedTemplateExpression) => void;\n  TemplateLiteral?: (node: AST.TemplateLiteral) => void;\n  CssStyleSheet?: (node: AST.CssStyleSheet) => void;\n  CssSelector?: (node: AST.CssSelector) => void;\n  CssSelectorList?: (node: AST.CssSelectorList) => void;\n  CssBlock?: (node: AST.CssBlock) => void;\n  CssDeclaration?: (node: AST.CssDeclaration) => void;\n}\n\ninterface RuleFix {\n  range: eslint.AST.Range;\n  text: string;\n}\n\nexport interface RuleFixer {\n  insertTextAfter(nodeOrToken: AnyNodeAndLine, text: string): RuleFix;\n\n  insertTextAfterRange(range: AST.Range, text: string): RuleFix;\n\n  insertTextBefore(nodeOrToken: AnyNodeAndLine, text: string): RuleFix;\n\n  insertTextBeforeRange(range: AST.Range, text: string): RuleFix;\n\n  remove(nodeOrToken: AnyNodeAndLine): RuleFix;\n\n  removeRange(range: AST.Range): RuleFix;\n\n  replaceText(nodeOrToken: AnyNodeAndLine, text: string): RuleFix;\n\n  replaceTextRange(range: AST.Range, text: string): RuleFix;\n}\n\nexport type ReportFixFunction = (\n  fixer: RuleFixer\n) => IterableIterator<RuleFix> | readonly RuleFix[] | RuleFix | null;\n\ninterface ReportDescriptorOptionsBase {\n  data?: { [key: string]: string };\n  fix?: null | ReportFixFunction;\n}\n\ntype SuggestionDescriptorMessage = { messageId: string };\nexport type SuggestionReportDescriptor = SuggestionDescriptorMessage &\n  ReportDescriptorOptionsBase;\n\ninterface ReportDescriptorOptions extends ReportDescriptorOptionsBase {\n  suggest?: SuggestionReportDescriptor[] | null;\n}\n\ntype ReportDescriptor = ReportDescriptorMessage &\n  ReportDescriptorLocation &\n  ReportDescriptorOptions;\ntype ReportDescriptorMessage = { message: string } | { messageId: string };\ntype ReportDescriptorLocation = {\n  node?: estree.BaseNode;\n  loc?: AST.SourceLocation;\n  line?: number;\n  column?: number;\n};\n\nexport interface Context<Options extends unknown[]> extends Omit<\n  eslint.Rule.RuleContext,\n  \"report\"\n> {\n  report(descriptor: ReportDescriptor): void;\n  options: Options;\n}\n\nexport type RuleListener = BaseRuleListener &\n  PostFix<BaseRuleListener, \":exit\">;\n\nexport interface RuleModule<Options extends unknown[]> {\n  create(context: Context<Options>): RuleListener;\n  meta: eslint.Rule.RuleMetaData;\n}\n"
  },
  {
    "path": "packages/eslint-plugin/lib/types/settings.ts",
    "content": "export type MaybeHTMLSettings = {\n  templateLiterals?: {\n    tags?: string[];\n    comments?: string[];\n  };\n};\n\nexport type HTMLSettings = {\n  templateLiterals: {\n    tags: RegExp[];\n    comments: RegExp[];\n  };\n};\n"
  },
  {
    "path": "packages/eslint-plugin/package.json",
    "content": "{\n  \"name\": \"@html-eslint/eslint-plugin\",\n  \"version\": \"0.60.0\",\n  \"type\": \"commonjs\",\n  \"description\": \"ESLint plugin for HTML\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"types/exports.d.ts\",\n  \"files\": [\n    \"lib\",\n    \"types\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --coverage\",\n    \"test:legacy\": \"TEST_ESLINT_LEGACY_CONFIG=true && jest\",\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"build\": \"rimraf types && tsc --project tsconfig.build.json\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"eslint\",\n    \"eslintplugin\",\n    \"eslint-plugin\",\n    \"html\",\n    \"formatter\",\n    \"lint\",\n    \"accessibility\"\n  ],\n  \"dependencies\": {\n    \"@eslint/plugin-kit\": \"^0.4.1\",\n    \"@html-eslint/core\": \"^0.60.0\",\n    \"@html-eslint/parser\": \"^0.60.0\",\n    \"@html-eslint/template-parser\": \"^0.60.0\",\n    \"@html-eslint/template-syntax-parser\": \"^0.60.0\",\n    \"@html-eslint/types\": \"^0.60.0\",\n    \"@rviscomi/capo.js\": \"^2.1.0\",\n    \"html-standard\": \"^0.0.13\"\n  },\n  \"peerDependencies\": {\n    \"eslint\": \">=8.0.0 || ^10.0.0-0\"\n  },\n  \"devDependencies\": {\n    \"@eslint/core\": \"^1.0.0\",\n    \"@types/estree\": \"^1.0.6\",\n    \"es-html-parser\": \"0.3.1\",\n    \"eslint\": \"^9.39.1\",\n    \"espree\": \"^10.3.0\"\n  },\n  \"engines\": {\n    \"node\": \"^18.18.0 || ^20.9.0 || >=21.1.0\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/tests/configs.test.js",
    "content": "const path = require(\"path\");\nconst fs = require(\"fs\");\nconst exportedRules = require(\"../lib/rules\");\n\nconst RULES_DIR = path.resolve(__dirname, \"../lib/rules\");\nconst RULE_TESTS_DIR = path.resolve(__dirname, \"./rules\");\nconst RULE_DOCS_DIR = path.resolve(__dirname, \"../../../docs/rules\");\nconst { recommendedLegacyRules } = require(\"../lib/configs/recommended\");\nconst { allRulesLegacy } = require(\"../lib/configs/all\");\n\ndescribe(\"rules\", () => {\n  const exportedRuleNames = Object.keys(exportedRules);\n\n  test(\"all rules should be exported\", () => {\n    const files = fs.readdirSync(RULES_DIR);\n    const ruleJsFilesWithoutExt = files\n      .filter((file) => file.endsWith(\".js\"))\n      .map((file) => file.replace(\".js\", \"\"))\n      .filter((file) => file !== \"index\");\n\n    expect(exportedRuleNames).toEqual(\n      expect.arrayContaining(ruleJsFilesWithoutExt)\n    );\n  });\n\n  test(\"all rules should have a corresponding test code\", () => {\n    const files = fs.readdirSync(RULE_TESTS_DIR);\n    const ruleTestFilesWithoutExt = files\n      .filter((file) => file.endsWith(\".test.js\"))\n      .map((file) => file.replace(\".test.js\", \"\"));\n\n    expect(exportedRuleNames).toEqual(\n      expect.arrayContaining(ruleTestFilesWithoutExt)\n    );\n  });\n\n  test(\"all rules should have a corresponding document\", () => {\n    const files = fs.readdirSync(RULE_DOCS_DIR);\n    const docFilesWithoutExt = files\n      .filter((file) => file.endsWith(\".md\"))\n      .filter((file) => !file.includes(\"kr\"))\n      .map((file) => file.replace(\".md\", \"\"));\n\n    expect(docFilesWithoutExt).toEqual(\n      expect.arrayContaining(exportedRuleNames)\n    );\n  });\n});\n\ndescribe(\"configs\", () => {\n  test(\"all recommended rules should be included in the recommended config\", () => {\n    const recommendedRules = Object.entries(exportedRules)\n      .filter(([, rule]) => {\n        return (\n          rule.meta &&\n          rule.meta.docs &&\n          rule.meta.docs.recommended &&\n          !rule.meta.deprecated\n        );\n      })\n      .map(([name]) => `@html-eslint/${name}`);\n    expect(Object.keys(recommendedLegacyRules)).toEqual(\n      expect.arrayContaining(recommendedRules)\n    );\n  });\n\n  test(\"all legacy rules should be included in the all config\", () => {\n    const allExportedRules = Object.entries(exportedRules)\n      .filter(([, rule]) => {\n        return !rule.meta?.deprecated;\n      })\n      .map(([key]) => key)\n      .map((name) => `@html-eslint/${name}`);\n    expect(Object.keys(allRulesLegacy)).toEqual(\n      expect.arrayContaining(allExportedRules)\n    );\n    expect(allExportedRules).toEqual(\n      expect.arrayContaining(Object.keys(allRulesLegacy))\n    );\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/e2e/index.test.js",
    "content": "const eslint = require(`eslint`);\nconst fs = require(`fs`);\nconst path = require(`path`);\n\nconst testDirs = fs\n  .readdirSync(__dirname, { withFileTypes: true })\n  .filter((entry) => entry.isDirectory());\n\nfor (const testDir of testDirs) {\n  const testName = testDir.name;\n  const testPath = path.join(__dirname, testName);\n\n  test(`e2e/` + testDir.name, () => {\n    const configRules = require(path.join(testPath, `rules.js`));\n\n    const config = {\n      plugins: {\n        \"@html-eslint\": require(\"@html-eslint/eslint-plugin\"),\n      },\n      languageOptions: {\n        parser: require(`@html-eslint/parser`),\n      },\n      rules: configRules,\n    };\n\n    const linter = new eslint.Linter();\n\n    const source = fs.readFileSync(path.join(testPath, `source.html`), {\n      encoding: `utf8`,\n    });\n\n    const outputPath = path.join(testPath, `fixed.html`);\n    const shouldHaveErrors = fs.existsSync(outputPath);\n\n    let messages;\n    if (shouldHaveErrors) {\n      const expected = fs.readFileSync(outputPath, { encoding: `utf8` });\n      // @ts-ignore\n      const result = linter.verifyAndFix(source, config);\n      messages = result.messages;\n      expect(result.output).toEqual(expected);\n    } else {\n      // If no `fixed.html`, assume the `source.html` should have no errors/warnings\n      // @ts-ignore\n      messages = linter.verify(source, config);\n    }\n    expect(JSON.stringify(messages, null, `\\t`)).toEqual(`[]`); // Quick-and-dirty to check for and print any unfixed errors/warnings\n  });\n}\n"
  },
  {
    "path": "packages/eslint-plugin/tests/e2e/robertakarobin/fixed.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<title>Example Domain</title>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-type\" />\n\t\t<meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n\t\t<meta content=\"Example\" name=\"description\" />\n\t</head>\n\t<body>\n\t\t<div>\n\t\t\t<h1>Example Domain</h1>\n\t\t\t<p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p>\n\t\t\t<p>\n\t\t\t\t<a href=\"https://www.iana.org/domains/example\">More information...</a>\n\t\t\t</p>\n\t\t</div>\n\t</body>\n</html>\n"
  },
  {
    "path": "packages/eslint-plugin/tests/e2e/robertakarobin/rules.js",
    "content": "module.exports = {\n  \"@html-eslint/attrs-newline\": [\n    `error`,\n    {\n      closeStyle: `newline`,\n      ifAttrsMoreThan: 2,\n    },\n  ],\n  \"@html-eslint/element-newline\": [`error`],\n  \"@html-eslint/indent\": [`error`, `tab`],\n  \"@html-eslint/lowercase\": `error`,\n  \"@html-eslint/no-abstract-roles\": `error`,\n  \"@html-eslint/no-accesskey-attrs\": `error`,\n  \"@html-eslint/no-aria-hidden-body\": `error`,\n  \"@html-eslint/no-duplicate-attrs\": `error`,\n  \"@html-eslint/no-duplicate-id\": `error`,\n  \"@html-eslint/no-extra-spacing-attrs\": [\n    `error`,\n    {\n      disallowMissing: true,\n      disallowTabs: true,\n      enforceBeforeSelfClose: true,\n    },\n  ],\n  \"@html-eslint/no-inline-styles\": `off`,\n  \"@html-eslint/no-multiple-empty-lines\": [\n    `error`,\n    {\n      max: 2,\n    },\n  ],\n  \"@html-eslint/no-multiple-h1\": `warn`,\n  \"@html-eslint/no-non-scalable-viewport\": `warn`,\n  \"@html-eslint/no-obsolete-tags\": `error`,\n  \"@html-eslint/no-positive-tabindex\": `warn`,\n  \"@html-eslint/no-script-style-type\": `error`,\n  \"@html-eslint/no-skip-heading-levels\": `warn`,\n  \"@html-eslint/no-target-blank\": `error`,\n  \"@html-eslint/no-trailing-spaces\": `error`,\n  \"@html-eslint/quotes\": [`error`, `double`],\n  \"@html-eslint/require-button-type\": `error`,\n  \"@html-eslint/require-closing-tags\": [\n    `error`,\n    {\n      selfClosing: `always`,\n    },\n  ],\n  \"@html-eslint/require-doctype\": `error`,\n  \"@html-eslint/require-frame-title\": `error`,\n  \"@html-eslint/require-img-alt\": `error`,\n  \"@html-eslint/require-lang\": `error`,\n  \"@html-eslint/require-li-container\": `error`,\n  \"@html-eslint/require-meta-charset\": `warn`,\n  \"@html-eslint/require-meta-description\": `warn`,\n  \"@html-eslint/require-meta-viewport\": `warn`,\n  \"@html-eslint/require-title\": `error`,\n  \"@html-eslint/sort-attrs\": [\n    `error`,\n    {\n      priority: [],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/eslint-plugin/tests/e2e/robertakarobin/source.html",
    "content": "<!doctype html><html lang=\"en\"><head><title>Example Domain</title><meta charset=\"utf-8\" /><meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /><meta name=\"description\" content=\"Example\" /></head><body><div><h1>Example Domain</h1><p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p><p><a href=\"https://www.iana.org/domains/example\">More information...</a></p></div></body></html>\n"
  },
  {
    "path": "packages/eslint-plugin/tests/inline-disable.test.js",
    "content": "const ESLint = require(\"eslint\");\n\n/** @type {any} */\nconst LEGACY_OPTIONS = {\n  plugins: {\n    // @ts-ignore\n    \"@html-eslint\": require(\"@html-eslint/eslint-plugin\"),\n  },\n  languageOptions: {\n    parser: require(\"@html-eslint/parser\"),\n  },\n};\n\n/** @type {any} */\nconst LANGUAGE_OPTIONS = {\n  plugins: {\n    // @ts-ignore\n    \"@html-eslint\": require(\"@html-eslint/eslint-plugin\"),\n  },\n  languageOptions: {\n    parser: require(\"@html-eslint/parser\"),\n  },\n};\n\n/**\n * @param {any} options\n * @returns\n */\nfunction getLinter(options) {\n  const linter = new ESLint.Linter({\n    configType: \"flat\",\n  });\n\n  return {\n    /**\n     * @param {string} code\n     * @param {any} rulesConfig\n     * @returns\n     */\n    lint(code, rulesConfig) {\n      return linter.verify(code, {\n        ...options,\n        rules: rulesConfig,\n      });\n    },\n  };\n}\n\ndescribe(\"inline disable\", () => {\n  const legacyLinter = getLinter(LEGACY_OPTIONS);\n  const languageLinter = getLinter(LANGUAGE_OPTIONS);\n\n  it(\"eslint-disable all rules\", () => {\n    const code = `\n<!-- eslint-disable -->\n<div style=\"foo\"></div>\n<div foo=\"foo\" foo=\"foo\"></div>\n   `;\n    const rules = {\n      \"@html-eslint/no-inline-styles\": \"error\",\n      \"@html-eslint/no-duplicate-attrs\": \"error\",\n    };\n\n    const legacyResult = legacyLinter.lint(code, rules);\n    expect(legacyResult).toHaveLength(0);\n    const languageResult = languageLinter.lint(code, rules);\n    expect(languageResult).toHaveLength(0);\n  });\n\n  it(\"eslint-disable and enable all rules\", () => {\n    const code = `\n<!-- eslint-disable -->\n<div style=\"foo\"></div>\n<!-- eslint-enable -->\n<div style=\"foo\"></div>\n<div foo=\"foo\" foo=\"foo\"></div>\n   `;\n    const rules = {\n      \"@html-eslint/no-inline-styles\": \"error\",\n      \"@html-eslint/no-duplicate-attrs\": \"error\",\n    };\n\n    const legacyResult = legacyLinter.lint(code, rules);\n    expect(legacyResult).toHaveLength(2);\n    const languageResult = languageLinter.lint(code, rules);\n    expect(languageResult).toHaveLength(2);\n  });\n\n  it(\"eslint-disable rule\", () => {\n    const code = `\n<!-- eslint-disable @html-eslint/no-inline-styles -->\n<div style=\"foo\"></div>\n      `;\n    const rule = {\n      \"@html-eslint/no-inline-styles\": \"error\",\n    };\n    const legacyResult = legacyLinter.lint(code, rule);\n    expect(legacyResult).toHaveLength(0);\n    const languageResult = languageLinter.lint(code, rule);\n    expect(languageResult).toHaveLength(0);\n  });\n  it(\"eslint-disable-next-line rule\", () => {\n    const code = `\n<!-- eslint-disable-next-line @html-eslint/require-img-alt -->\n<img src=\"/some/path\"></img>\n  `;\n    const rule = {\n      \"@html-eslint/require-img-alt\": \"error\",\n    };\n    const legacyResult = legacyLinter.lint(code, rule);\n    expect(legacyResult).toHaveLength(0);\n    const languageResult = languageLinter.lint(code, rule);\n    expect(languageResult).toHaveLength(0);\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/languages/html-language.test.js",
    "content": "/**\n * @import {\n *   File,\n *   OkParseResult\n * } from \"@eslint/core\"\n * @import {AST} from \"eslint\"\n */\n\nconst { HTMLLanguage } = require(\"../../lib/languages/html-language\");\n\n/**\n * @param {string} text\n * @returns {File}\n */\nconst createFile = (text) => {\n  return {\n    body: text,\n    path: \"test.html\",\n    physicalPath: \"test.html\",\n    bom: false,\n  };\n};\n\ndescribe(\"HTMLLanguage\", () => {\n  describe(\"visitorKeys\", () => {\n    it(\"should have visitorKeys property\", () => {\n      const language = new HTMLLanguage();\n      // @ts-ignore\n      expect(language.visitorKeys[\"Tag\"]).toMatchObject([\n        \"openStart\",\n        \"openEnd\",\n        \"close\",\n        \"children\",\n        \"attributes\",\n      ]);\n    });\n  });\n\n  describe(\"parse()\", () => {\n    it(\"should parse HTML\", () => {\n      const language = new HTMLLanguage();\n      const file = createFile(`<div></div>`);\n      const result = language.parse(file, {\n        languageOptions: {},\n      });\n      expect(result.ok).toBe(true);\n      // @ts-ignore\n      expect(result.ast.type).toBe(\"Program\");\n      // @ts-ignore\n      expect(result.ast.body[0].children[0].type).toBe(\"Tag\");\n    });\n\n    it(\"should skip frontmatter\", () => {\n      const language = new HTMLLanguage();\n      const file = createFile(`---\nname: value\n---\n<div>\n</div>\n      `);\n      const result = language.parse(file, {\n        languageOptions: { frontmatter: true },\n      });\n      expect(result.ok).toBe(true);\n      // @ts-ignore\n      expect(result.ast.body[0].children[0].type).toBe(\"Tag\");\n    });\n\n    it(\"should parse template syntax\", () => {\n      const language = new HTMLLanguage();\n      const file = createFile(`<div>{{text}}</div>`);\n      const result = language.parse(file, {\n        languageOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      });\n      expect(result.ok).toBe(true);\n      // @ts-ignore\n      const part = result.ast.body[0].children[0].children[0].parts[0];\n      expect(part.open.type).toBe(\"OpenTemplate\");\n      expect(part.close.type).toBe(\"CloseTemplate\");\n    });\n  });\n\n  describe(\"validateLanguageOptions()\", () => {\n    it(\"should pass\", () => {\n      const language = new HTMLLanguage();\n      // @ts-ignore\n      expect(() => language.validateLanguageOptions()).not.toThrow();\n      // @ts-ignore\n      expect(() => language.validateLanguageOptions({})).not.toThrow();\n      expect(() =>\n        language.validateLanguageOptions({ frontmatter: true })\n      ).not.toThrow();\n      expect(() =>\n        language.validateLanguageOptions({\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        })\n      ).not.toThrow();\n      expect(() =>\n        language.validateLanguageOptions({ rawContentTags: [\"markdown\"] })\n      ).not.toThrow();\n    });\n\n    it(\"should throw error when invalid option provided\", () => {\n      const language = new HTMLLanguage();\n      expect(() =>\n        language.validateLanguageOptions({\n          // @ts-ignore\n          frontmatter: \"true\",\n        })\n      ).toThrow();\n\n      expect(() =>\n        language.validateLanguageOptions({\n          // @ts-ignore\n          templateEngineSyntax: \"\",\n        })\n      ).toThrow();\n\n      expect(() =>\n        language.validateLanguageOptions({\n          // @ts-ignore\n          rawContentTags: \"\",\n        })\n      ).toThrow();\n    });\n  });\n  describe(\"createSourceCode()\", () => {\n    it(\"should create a HTMLSourceCode instance\", () => {\n      const file = createFile(\"<div></div>\");\n      const language = new HTMLLanguage();\n      const parsed = language.parse(file, { languageOptions: {} });\n      expect(parsed.ok).toBe(true);\n      if (parsed.ok) {\n        const sourceCode = language.createSourceCode(file, parsed, {\n          languageOptions: {},\n        });\n        expect(sourceCode.constructor.name).toBe(\"HTMLSourceCode\");\n        expect(sourceCode.ast.type).toBe(\"Program\");\n      }\n    });\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/languages/html-source-code.test.js",
    "content": "/** @import {File} from \"@eslint/core\" */\n\nconst { HTMLLanguage } = require(\"../../lib/languages/html-language\");\nconst {\n  createHTMLSourceCode,\n} = require(\"../../lib/languages/html-source-code\");\n\n/**\n * @param {string} text\n * @returns {File}\n */\nconst createFile = (text) => {\n  return {\n    body: text,\n    path: \"test.html\",\n    physicalPath: \"test.html\",\n    bom: false,\n  };\n};\n\n/** @param {string} text */\nconst createSourceCode = (text) => {\n  const language = new HTMLLanguage();\n  const file = createFile(text);\n  const parsed = language.parse(file, { languageOptions: {} });\n  const sourceCode = createHTMLSourceCode({\n    text,\n    // @ts-ignore\n    ast: parsed.ast,\n    // @ts-ignore\n    comments: parsed.comments,\n  });\n\n  return sourceCode;\n};\n\ndescribe(\"HTMLSourceCode\", () => {\n  const code = `<!-- eslint-disable -->\n<!-- eslint-disable @html-eslint/no-duplicate-attrs -->\n<!-- eslint-disable-next-line -->\n<!-- eslint-disable-line -->\n<!-- eslint-enable -->\n`;\n  describe(\"getInlineConfigNodes()\", () => {\n    it(\"should return inline config nodes\", () => {\n      const sourceCode = createSourceCode(code);\n      expect(sourceCode.getInlineConfigNodes().length).toBe(5);\n    });\n  });\n\n  describe(\"getDisableDirectives\", () => {\n    it(\"should return directives\", () => {\n      const sourceCode = createSourceCode(code);\n\n      expect(sourceCode.getDisableDirectives().directives.length).toBe(5);\n      expect(sourceCode.getDisableDirectives().problems.length).toBe(0);\n    });\n\n    it(\"should return problems\", () => {\n      const code = `<!--\n eslint-disable-line\n-->\n        `;\n      const sourceCode = createSourceCode(code);\n\n      expect(sourceCode.getDisableDirectives().problems.length).toBe(1);\n    });\n  });\n\n  describe(\"getParent()\", () => {\n    const code = `<div><span></span></div>`;\n    const sourceCode = createSourceCode(code);\n    // @ts-ignore\n    const span = sourceCode.ast.body[0].children[0].children[0];\n    sourceCode.traverse();\n    // @ts-ignore\n    expect(sourceCode.getParent(span).type).toBe(\"Tag\");\n    // @ts-ignore\n    expect(sourceCode.getParent(span).name).toBe(\"div\");\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/plugin/export.test.js",
    "content": "const plugin = require(\"../../lib\");\n\n/**\n * @template T\n * @param {T | null | undefined} value\n * @returns {asserts value is NonNullable<T>}\n */\nfunction assertNonNull(value) {\n  if (value === undefined || value === null) {\n    throw new TypeError(\"Unexpected nullish\");\n  }\n}\n\ndescribe(\"@html-eslint/eslint-plugin\", () => {\n  it(\"should have meta\", () => {\n    assertNonNull(plugin.meta);\n    expect(plugin.meta.name).toBe(\"@html-eslint/eslint-plugin\");\n    expect(typeof plugin.meta.version).toBe(\"string\");\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rule-tester.js",
    "content": "/**\n * @import {Linter} from \"eslint\"\n * @import {RuleModule} from \"../lib/types\"\n */\n\nconst { RuleTester: ESLintRuleTester } = require(\"eslint\");\n\nconst FILE_NAME = \"test.html\";\nconst html = require(\"../lib/index\");\n\n/**\n * @param {ESLintRuleTester.InvalidTestCase\n *   | ESLintRuleTester.ValidTestCase} test\n */\nfunction getLanguageOptions(test) {\n  if (!test.languageOptions) {\n    return {};\n  }\n  if (process.env.TEST_ESLINT_LEGACY_CONFIG) {\n    return test.languageOptions;\n  }\n\n  return test.languageOptions && test.languageOptions.parserOptions\n    ? test.languageOptions.parserOptions\n    : {};\n}\n\nclass RuleTester extends ESLintRuleTester {\n  /** @param {Linter.Config} options */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @param {string} name\n   * @param {RuleModule<unknown[]>} rule\n   * @param {{\n   *   valid: ESLintRuleTester.ValidTestCase[];\n   *   invalid: ESLintRuleTester.InvalidTestCase[];\n   * }} tests\n   */\n  // @ts-ignore\n  run(name, rule, tests) {\n    // @ts-ignore\n    super.run(name, rule, {\n      valid: tests.valid.map((test) => {\n        return {\n          ...test,\n          languageOptions: getLanguageOptions(test),\n          filename: FILE_NAME,\n        };\n      }),\n      invalid: tests.invalid.map((test) => ({\n        ...test,\n        languageOptions: getLanguageOptions(test),\n        filename: FILE_NAME,\n      })),\n    });\n  }\n}\n\n/** @param {\"espree\"} [parser] */\nmodule.exports = function createRuleTester(parser) {\n  if (process.env.TEST_ESLINT_LEGACY_CONFIG) {\n    return new RuleTester({\n      languageOptions: !parser\n        ? {\n            parser: require(\"@html-eslint/parser\"),\n          }\n        : {\n            parserOptions: {\n              ecmaVersion: 2015,\n            },\n          },\n    });\n  }\n  if (!parser) {\n    return new RuleTester({\n      plugins: {\n        // @ts-ignore\n        html: html,\n      },\n      language: \"html/html\",\n    });\n  }\n  return new RuleTester({\n    languageOptions: {\n      parserOptions: {\n        ecmaVersion: 2015,\n      },\n    },\n  });\n};\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/attrs-newline.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/attrs-newline\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nconst closeStyles = [\"sameline\", \"newline\"];\n\nruleTester.run(\"attrs-newline\", rule, {\n  valid: [\n    ...closeStyles.map((closeStyle) => ({\n      code: `\n      <p></p>`,\n      options: [\n        {\n          closeStyle,\n          ifAttrsMoreThan: 0,\n        },\n      ],\n    })),\n    ...closeStyles.map((closeStyle) => ({\n      code: `\n      <p>\n        <img />\n      </p>`,\n      options: [\n        {\n          closeStyle,\n          ifAttrsMoreThan: 0,\n        },\n      ],\n    })),\n    {\n      code: `\n      <p\n        class=\"foo\">\n        <img\n          class=\"foo\" />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 0,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        >\n        <img\n          class=\"foo\"\n        />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 0,\n        },\n      ],\n    },\n    ...closeStyles.map((closeStyle) => ({\n      code: `\n      <p class=\"foo\">\n        <img class=\"foo\" />\n      </p>`,\n      options: [\n        {\n          closeStyle,\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    })),\n    ...closeStyles.map((closeStyle) => ({\n      code: `\n      <p title=\"this\n      is\n      a\n      long\n      value\">\n        <img class=\"this\n        is\n        a\n        long\" />\n      </p>`,\n      options: [\n        {\n          closeStyle,\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    })),\n    {\n      code: `\n      <p\n        class=\"foo\"\n        id=\"p\">\n      </p>`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        id=\"p\">\n        <img\n          class=\"foo\"\n          id=\"img\" />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        id=\"p\"\n        >\n        <img\n          class=\"foo\"\n          id=\"img\"\n        />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        data-newline\n        id=\"p\">\n        <img\n          class=\"foo\"\n          id=\"img\" />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        data-newline\n        id=\"p\"\n        >\n        <img\n          class=\"foo\"\n          id=\"img\"\n        />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        data-newline\n        id=\"p\"\n        title=\"this\n        is\n        a\n        long\n        value\">\n        <img\n          class=\"foo\"\n          id=\"img\" />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\"\n        data-newline\n        id=\"p\"\n        title=\"this\n        is\n        a\n        long\n        value\"\n        >\n        <img\n          class=\"foo\"\n          id=\"img\"\n        />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n    },\n    {\n      code: `\n      <button\n        type=\"button\"\n        class=\"app-button\"\n        data-property\n      ></button>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 3,\n        },\n      ],\n    },\n    // skip option: tag in skip list is not enforced even if attrs exceed threshold\n    {\n      code: `<pre class=\"foo\" id=\"bar\" data-x=\"1\"></pre>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n    // skip option: other tags still get enforced\n    {\n      code: `\n      <pre class=\"foo\" id=\"bar\"></pre>\n      <div\n        class=\"foo\"\n        id=\"bar\"\n        >\n      </div>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n    // inline option: inline tags are not enforced\n    {\n      code: `<p>The quick <span class=\"foo\" data-foo=\"true\">brown fox</span> jumps over the lazy dog.</p>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"span\"],\n        },\n      ],\n    },\n    // inline option with $inline preset: all standard inline elements are excluded\n    {\n      code: `<p>Click <a class=\"link\" href=\"/foo\" target=\"_blank\">here</a> for info.</p>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"$inline\"],\n        },\n      ],\n    },\n    // $inline preset covers span as well\n    {\n      code: `<p>Hello <span class=\"hi\" id=\"greeting\" data-test=\"true\">world</span></p>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"$inline\"],\n        },\n      ],\n    },\n    // skip suppresses descendant elements too\n    {\n      code: `<pre class=\"foo\" id=\"bar\"><span class=\"baz\" id=\"qux\" data-x=\"1\"></span></pre>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n    // skip suppresses deeply nested descendants\n    {\n      code: `<pre><div class=\"a\" id=\"b\"><span class=\"c\" id=\"d\" data-x=\"1\"></span></div></pre>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n    // inline does NOT suppress descendants — tags outside the inline element are still enforced\n    // (this is a valid case because the outer div has only 1 attr, under the threshold of 3)\n    {\n      code: `<div class=\"wrapper\"><span class=\"a\" id=\"b\" data-x=\"1\">text</span></div>`,\n      options: [\n        {\n          ifAttrsMoreThan: 2,\n          inline: [\"span\"],\n        },\n      ],\n    },\n  ],\n\n  invalid: [\n    {\n      code: `\n      <p class=\"foo\">\n        <img />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 0,\n        },\n      ],\n      output: `\n      <p\nclass=\"foo\">\n        <img />\n      </p>`,\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\">\n        <img />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 0,\n        },\n      ],\n      output: `\n      <p\nclass=\"foo\"\n>\n        <img />\n      </p>`,\n      errors: [{ messageId: \"closeStyleWrong\" }],\n    },\n    {\n      code: `\n      <p\n        class=\"foo\" id=\"p\">\n        <img />\n      </p>`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n      output: `\n      <p\nclass=\"foo\"\nid=\"p\"\n>\n        <img />\n      </p>`,\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n    // inline does NOT suppress descendants — child elements inside an inline tag are still enforced\n    {\n      code: `<span class=\"wrapper\" id=\"w\"><div class=\"a\" id=\"b\" data-x=\"1\"></div></span>`,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"span\"],\n        },\n      ],\n      output: `<span class=\"wrapper\" id=\"w\"><div\nclass=\"a\"\nid=\"b\"\ndata-x=\"1\"\n></div></span>`,\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] attrs-newline\", rule, {\n  valid: [\n    {\n      code: `html\\`<div class=\"foo\"></div>\\``,\n    },\n    {\n      code: `html\\`\n        <button\n          type=\"button\"\n          class=\"app-button\"\n          data-property\n        ></button>\n      \\``,\n      options: [\n        {\n          ifAttrsMoreThan: 3,\n        },\n      ],\n    },\n    // skip option: tag in skip list is not enforced\n    {\n      code: `html\\`<pre class=\"foo\" id=\"bar\" data-x=\"1\"></pre>\\``,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n    // skip option: other tags still get enforced\n    {\n      code: `html\\`\n        <pre class=\"foo\" id=\"bar\"></pre>\n        <div\n          class=\"foo\"\n          id=\"bar\"\n        >\n        </div>\n      \\``,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n    // inline option: inline tags are not enforced\n    {\n      code: `html\\`<p>The quick <span class=\"foo\" data-foo=\"true\">brown fox</span> jumps over the lazy dog.</p>\\``,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"span\"],\n        },\n      ],\n    },\n    // inline option with $inline preset\n    {\n      code: `html\\`<p>Click <a class=\"link\" href=\"/foo\" target=\"_blank\">here</a> for info.</p>\\``,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"$inline\"],\n        },\n      ],\n    },\n    // skip suppresses descendant elements\n    {\n      code: `html\\`<pre class=\"foo\" id=\"bar\"><span class=\"baz\" id=\"qux\" data-x=\"1\"></span></pre>\\``,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          skip: [\"pre\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `\nhtml\\`<div class=\"foo\" style=\"background:red;\"></div>\\`;\n`,\n      output: `\nhtml\\`<div\nclass=\"foo\"\nstyle=\"background:red;\"></div>\\`;\n`,\n      options: [\n        {\n          closeStyle: \"sameline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n    {\n      code: `\nhtml\\`<div class=\"foo\" style=\"background:red;\"></div>\\`;\n`,\n      output: `\nhtml\\`<div\nclass=\"foo\"\nstyle=\"background:red;\"\n></div>\\`;\n`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n    {\n      code: `\nconst code = /*html*/\\`<div class=\"foo\" style=\"background:red;\"></div>\\`;\n`,\n      output: `\nconst code = /*html*/\\`<div\nclass=\"foo\"\nstyle=\"background:red;\"\n></div>\\`;\n`,\n      options: [\n        {\n          closeStyle: \"newline\",\n          ifAttrsMoreThan: 1,\n        },\n      ],\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n    {\n      code: `html\\`\n    <div a b foo=\\${\"true\"}>\n    </div>\n\\``,\n      output: `html\\`\n    <div\na\nb\nfoo=\\${\"true\"}\n>\n    </div>\n\\``,\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n    // inline does NOT suppress descendants — child elements are still enforced\n    {\n      code: `html\\`<span class=\"wrapper\" id=\"w\"><div class=\"a\" id=\"b\" data-x=\"1\"></div></span>\\``,\n      output: `html\\`<span class=\"wrapper\" id=\"w\"><div\nclass=\"a\"\nid=\"b\"\ndata-x=\"1\"\n></div></span>\\``,\n      options: [\n        {\n          ifAttrsMoreThan: 0,\n          inline: [\"span\"],\n        },\n      ],\n      errors: [{ messageId: \"newlineMissing\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/class-spacing.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/class-spacing\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"class-spacing\", rule, {\n  valid: [\n    {\n      code: `<button class=\"foo\"></button>`,\n    },\n    {\n      code: `<button class=\"foo bar\"></button>`,\n    },\n    {\n      code: `<button class=\"foo bar baz\"></button>`,\n    },\n    {\n      code: `<button class=\"\"></button>`,\n    },\n    {\n      code: `<button class></button>`,\n    },\n    {\n      code: `<button id=\" foo \"></button>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<button class=\" foo\"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo \"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\" foo \"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"  foo\"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo  \"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo  bar\"></button>`,\n      output: `<button class=\"foo bar\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          column: 20,\n          endColumn: 21,\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo   bar\"></button>`,\n      output: `<button class=\"foo bar\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo  bar  baz\"></button>`,\n      output: `<button class=\"foo bar baz\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"  foo  bar  \"></button>`,\n      output: `<button class=\"foo bar\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] class-spacing\", rule, {\n  valid: [\n    {\n      code: \"html`<div class='foo'></div>`\",\n    },\n    {\n      code: \"html`<div class='foo bar'></div>`\",\n    },\n    {\n      code: \"html`<div class=${' foo  bar '}></div>`\",\n    },\n    {\n      code: \"html`<div class='${' foo  bar '} baz'></div>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div class=' foo'></div>\\``,\n      output: `html\\`<div class='foo'></div>\\``,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<div class='foo '></div>\\``,\n      output: `html\\`<div class='foo'></div>\\``,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<div class='foo  bar'></div>\\``,\n      output: `html\\`<div class='foo bar'></div>\\``,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/css-no-empty-blocks.test.js",
    "content": "/**\n * Based on\n * https://github.com/eslint/css/blob/main/tests/rules/no-empty-blocks.test.js\n */\n\nconst createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/css-no-empty-blocks\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"css-no-empty-blocks\", rule, {\n  valid: [\n    {\n      code: \"<style> a { color: red; } </style>\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"<style>a { }</style>\",\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 1,\n          column: 10,\n          endLine: 1,\n          endColumn: 13,\n        },\n      ],\n    },\n    {\n      code: \"<style>a { /* comment */ }</style>\",\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 1,\n          column: 10,\n          endLine: 1,\n          endColumn: 27,\n        },\n      ],\n    },\n    {\n      code: \"<style>a {\\n}</style>\",\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 1,\n          column: 10,\n          endLine: 2,\n          endColumn: 2,\n        },\n      ],\n    },\n    {\n      code: \"<style>a { \\n }</style>\",\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 1,\n          column: 10,\n          endLine: 2,\n          endColumn: 3,\n        },\n      ],\n    },\n    {\n      code: `<style>\n a { }\n</style>`,\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 2,\n          column: 4,\n          endLine: 2,\n          endColumn: 7,\n        },\n      ],\n    },\n    {\n      code: \"<style>@media print { }</style>\",\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 24,\n        },\n      ],\n    },\n    {\n      code: \"<style>a { }\\n@media print { \\nb { } \\n}</style>\",\n      errors: [\n        {\n          messageId: \"emptyBlock\",\n          line: 1,\n          column: 10,\n          endLine: 1,\n          endColumn: 13,\n        },\n        {\n          messageId: \"emptyBlock\",\n          line: 3,\n          column: 3,\n          endLine: 3,\n          endColumn: 6,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/element-newline.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/element-newline\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"element-newline\", rule, {\n  valid: [\n    {\n      code: \"<title>title</title>\",\n    },\n    {\n      code: `\n<html>\n<body>\n</body>\n</html>\n`,\n    },\n    {\n      code: `\n<div>\nFoo\nBar\n<div></div>\n</div>\n`,\n    },\n    {\n      code: \"<body>\\r\\n<div></div>\\r\\n test\\r\\n</body>\",\n    },\n    {\n      code: \"<html>\\r\\n<body>\\r\\n</body>\\r\\n</html>\",\n    },\n    {\n      code: `\n      <!DOCTYPE html>\n      <html lang=\"en\">\n          <body>\n              <ul>\n                  <li>Item Here</li>\n                  <li>Second Item Here</li>\n              </ul>\n          </body>\n      </html>`,\n    },\n    {\n      code: `\n<html>\n<body>\n      <pre><div></div></pre>\n      <code>\n      <div></div></code>\n</body>\n</html>\n`,\n      options: [\n        {\n          skip: [\"pre\", \"code\"],\n        },\n      ],\n    },\n    {\n      code: `\n<div>\n<span><a></a></span>\n</div>\n`,\n      options: [\n        {\n          skip: [\"div\"],\n        },\n      ],\n    },\n    {\n      code: \"<div>\\r\\n<span><a></a></span>\\r\\n</div>\",\n      options: [\n        {\n          skip: [\"div\"],\n        },\n      ],\n    },\n    {\n      code: `\n<div>\n<span><a></a></span>\n</div>\n<span></span>\n<a></a>\n`,\n      options: [\n        {\n          skip: [\"div\"],\n        },\n      ],\n    },\n    {\n      code: `\n<div>\n<div></div><span></span><a></a>\n</div>\n`,\n      options: [\n        {\n          skip: [\"div\"],\n        },\n      ],\n    },\n    {\n      code: `<pre><div></div><code><span></span></code><a></a></pre>`,\n      options: [\n        {\n          skip: [\"pre\", \"code\"],\n        },\n      ],\n    },\n    {\n      code: `\n<a>\n  <b>\n    <c><d></d></c>\n  </b>\n</a>\n`,\n      options: [\n        {\n          inline: [`d`],\n        },\n      ],\n    },\n    {\n      code: `\n<a>\n  <b>\n    <c><d></d></c>\n  </b>\n</a>\n`,\n      options: [\n        {\n          skip: [`c`],\n        },\n      ],\n    },\n    {\n      code: `\n<a></a><abbr></abbr><b></b><bdi></bdi><bdo></bdo><br></br><cite></cite><code></code><data></data><dfn></dfn><em></em><i></i><kbd></kbd><mark></mark><q></q><rp></rp><rt></rt><ruby></ruby><s></s><samp></samp><small></small><span></span><strong></strong><sub></sub><sup></sup><time></time><u></u><var></var><wbr></wbr>\n`,\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: `\n<div>\n    I <strong>like</strong> these <dfn>inline</dfn> tags.\n    <p>It's <em>true</em>!</p>\n</div>\n`,\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: `\n        <h1 class=\"display1 md:text-[60px] md:leading-[68px] md:font-bold\">\n            An <span class=\"text-accent\">ESLint</span>\n            <br class=\"md:hidden\">\n            plugin<br>\n            to lint and fix <span class=\"text-accent\">HTML code</span>.\n        </h1>\n`,\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: `\n      <header>\n        <img\n            foo=\"bar\"\n        >\n        html-eslint\n      </header>\n      `,\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: \"<title>{{title}}</title>\",\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n    {\n      code: \"<title>{{main}}{{sub}}</title>\",\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n    {\n      code: \"<title>name:{{title}}</title>\",\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n    {\n      code: `---\n  tag: <div></div><div></div>\n---\n      `,\n      languageOptions: {\n        parserOptions: {\n          frontmatter: true,\n        },\n      },\n    },\n    {\n      code: `\n<markdown>\n# Hello, world!\n\n\\`\\`\\`cpp{4-6,9}\n#include <iostream>\n\nclass Example {\n    Example() {\n        std::cout << \"Hello, world!\" << std::endl;\n    }\n\n    Example(std::string name) {\n        std::cout << \"Hello, \" << name << std::endl;\n    }\n};\n\\`\\`\\`\n</markdown>\n      `,\n      languageOptions: {\n        parserOptions: {\n          rawContentTags: [\"markdown\"],\n        },\n      },\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<!DOCTYPE html><html></html>\n`,\n      output: `\n<!DOCTYPE html>\n<html></html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `<div><script></script></div>`,\n      output: `<div>\n<script></script>\n</div>`,\n      errors: [\n        {\n          message: \"There should be a linebreak after <div>.\",\n        },\n        {\n          message: \"There should be a linebreak after </script>.\",\n        },\n      ],\n    },\n    {\n      code: `<div><style></style></div>`,\n      output: `<div>\n<style></style>\n</div>`,\n      errors: [\n        {\n          message: \"There should be a linebreak after <div>.\",\n        },\n        {\n          message: \"There should be a linebreak after </style>.\",\n        },\n      ],\n    },\n    {\n      code: `\n<!DOCTYPE html>foo<html></html>\n`,\n      output: `\n<!DOCTYPE html>\nfoo\n<html></html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          message: \"There should be a linebreak after text.\",\n        },\n      ],\n    },\n    {\n      code: `<div>text {{text}} <a></a></div>`,\n      output: `<div>\ntext {{text}} \n<a></a>\n</div>`,\n      errors: [\n        {\n          message: \"There should be a linebreak after <div>.\",\n        },\n        {\n          message: \"There should be a linebreak after text.\",\n        },\n        {\n          message: \"There should be a linebreak after </a>.\",\n        },\n      ],\n    },\n    {\n      code: `<div><div>text {{text}} <a></a></div></div>`,\n      output: `<div>\n<div>text {{text}} <a></a></div>\n</div>`,\n      options: [\n        {\n          inline: [\"$inline\"],\n        },\n      ],\n      errors: [\n        {\n          message: \"There should be a linebreak after <div>.\",\n        },\n        {\n          message: \"There should be a linebreak after </div>.\",\n        },\n      ],\n    },\n    {\n      code: `\n<!DOCTYPE html><!-- comment --><html></html>\n`,\n      output: `\n<!DOCTYPE html>\n<!-- comment -->\n<html></html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><!-- comment --><div></div></html>\n`,\n      output: `\n<html>\n<!-- comment -->\n<div></div>\n</html>\n`,\n\n      errors: [\n        {\n          line: 2,\n          column: 6,\n          message: \"There should be a linebreak after <html>.\",\n        },\n        {\n          message: \"There should be a linebreak after comment.\",\n        },\n        {\n          message: \"There should be a linebreak after </div>.\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><head><title>test</title></head></html>\n`,\n      output: `\n<html>\n<head>\n<title>test</title>\n</head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><body>test</body></html>\n`,\n      output: `\n<html>\n<body>test</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><body></body></html>\n`,\n      output: `\n<html>\n<body></body>\n</html>\n`,\n\n      errors: [\n        {\n          message: \"There should be a linebreak after <html>.\",\n        },\n        {\n          message: \"There should be a linebreak after </body>.\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><body><div></div><div></div></body></html>\n`,\n      output: `\n<html>\n<body>\n<div></div>\n<div></div>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><body><div></div><div></div><div></div></body></html>\n`,\n      output: `\n<html>\n<body>\n<div></div>\n<div></div>\n<div></div>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html><body><div></div><div><a></a></div><div></div></body></html>\n`,\n      output: `\n<html>\n<body>\n<div></div>\n<div>\n<a></a>\n</div>\n<div></div>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `<pre><div></div></pre><code><div></div></code>`,\n      output: `<pre><div></div></pre>\n<code><div></div></code>`,\n      options: [\n        {\n          skip: [\"pre\", \"code\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<span></span><a></a>\n<div>\n<span><a></a></span>\n</div>\n<span></span><a></a>\n`,\n      output: `\n<span></span>\n<a></a>\n<div>\n<span><a></a></span>\n</div>\n<span></span>\n<a></a>\n`,\n      options: [\n        {\n          skip: [\"div\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<span></span><div>\n<span><a></a></span>\n</div>\n`,\n      output: `\n<span></span>\n<div>\n<span><a></a></span>\n</div>\n`,\n      options: [\n        {\n          skip: [\"div\"],\n        },\n      ],\n      errors: [\n        {\n          line: 2,\n          message: \"There should be a linebreak after </span>.\",\n        },\n      ],\n    },\n    {\n      code: `\n<a></a><abbr></abbr><b></b><bdi></bdi><bdo></bdo><br></br><cite></cite><code></code><div></div><data></data><dfn></dfn><em></em><i></i><kbd></kbd><mark></mark><q></q><rp></rp><rt></rt><ruby></ruby><s></s><samp></samp><small></small><span></span><strong></strong><sub></sub><sup></sup><time></time><u></u><var></var><wbr></wbr>\n`,\n      output: `\n<a></a><abbr></abbr><b></b><bdi></bdi><bdo></bdo><br></br><cite></cite><code></code>\n<div></div>\n<data></data><dfn></dfn><em></em><i></i><kbd></kbd><mark></mark><q></q><rp></rp><rt></rt><ruby></ruby><s></s><samp></samp><small></small><span></span><strong></strong><sub></sub><sup></sup><time></time><u></u><var></var><wbr></wbr>\n`,\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: `\n<div>aaa<strong>bbb</strong><a>ccc</a><p>ddd<i>eee</i></p></div>\n`,\n      output: `\n<div>\naaa<strong>bbb</strong><a>ccc</a>\n<p>ddd<i>eee</i></p>\n</div>\n`,\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: \"<title><a>{{main}}{{sub}}</a></title>\",\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n      output: `<title>\n<a>{{main}}{{sub}}</a>\n</title>`,\n      errors: [\n        {\n          message: \"There should be a linebreak after <title>.\",\n        },\n        {\n          message: \"There should be a linebreak after </a>.\",\n        },\n      ],\n    },\n    {\n      code: `---\n  tag: <div></div><div></div>\n---\n<div></div><div></div>\n      `,\n      errors: [\n        {\n          message: \"There should be a linebreak after </div>.\",\n          line: 4,\n          column: 1,\n        },\n      ],\n      output: `---\n  tag: <div></div><div></div>\n---\n<div></div>\n<div></div>\n      `,\n      languageOptions: {\n        parserOptions: {\n          frontmatter: true,\n        },\n      },\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] element-newline\", rule, {\n  valid: [\n    {\n      code: `\n    const code = /* html */\\`<html>\n    <body>\n    </body>\n    </html>\\`\n    `,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div>aaa<strong>bbb</strong><a>ccc</a><p>ddd<i>eee</i></p></div>\\`;`,\n      output: `html\\`<div>\naaa<strong>bbb</strong><a>ccc</a>\n<p>ddd<i>eee</i></p>\n</div>\\`;`,\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n    {\n      code: `const code = /* html */\\`<div>aaa<strong>bbb</strong><a>ccc</a><p>ddd<i>eee</i></p></div>\\`;`,\n      output: `const code = /* html */\\`<div>\naaa<strong>bbb</strong><a>ccc</a>\n<p>ddd<i>eee</i></p>\n</div>\\`;`,\n      errors: [\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n        {\n          messageId: \"expectAfter\",\n        },\n      ],\n      options: [\n        {\n          inline: [`$inline`],\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/head-order.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/head-order\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"head-order\", rule, {\n  valid: [\n    // Optimal order: META (10) -> TITLE (9) -> PRECONNECT (8) -> ASYNC_SCRIPT (7) ->\n    // IMPORT_STYLES (6) -> SYNC_SCRIPT (5) -> SYNC_STYLES (4) -> PRELOAD (3) ->\n    // DEFER_SCRIPT (2) -> PREFETCH_PRERENDER (1) -> OTHER (0)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test Page</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <script src=\"script.js\" async></script>\n  <style>@import url('styles.css');</style>\n  <script>console.log('sync');</script>\n  <style>body { color: red; }</style>\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\">\n  <script src=\"deferred.js\" defer></script>\n  <link rel=\"prefetch\" href=\"next-page.html\">\n</head>\n</html>\n      `,\n    },\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width\">\n  <title>Another Page</title>\n</head>\n</html>\n      `,\n    },\n    {\n      code: `\n<html>\n<head>\n  <base href=\"/\">\n  <title>Base Test</title>\n</head>\n</html>\n      `,\n    },\n    // Empty head\n    {\n      code: `\n<html>\n<head>\n</head>\n</html>\n      `,\n    },\n    // Single element\n    {\n      code: `\n<html>\n<head>\n  <title>Single</title>\n</head>\n</html>\n      `,\n    },\n    // With ignores - script tags ignored\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <script src=\"analytics.js\" defer></script>\n  <script src=\"tracking.js\" defer></script>\n</head>\n</html>\n      `,\n      options: [{ ignores: [{ tagPattern: \"^script$\" }] }],\n    },\n    // With ignores - specific link with rel=\"preconnect\" ignored\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"deferred.js\" defer></script>\n  <link rel=\"preconnect\" href=\"https://analytics.com\">\n</head>\n</html>\n      `,\n      options: [\n        {\n          ignores: [\n            {\n              tagPattern: \"^link$\",\n              attrKeyPattern: \"^rel$\",\n              attrValuePattern: \"preconnect\",\n            },\n          ],\n        },\n      ],\n    },\n    // With ignores - multiple conditions (AND)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <script src=\"analytics.js\" defer></script>\n</head>\n</html>\n      `,\n      options: [\n        {\n          ignores: [{ tagPattern: \"^script$\", attrValuePattern: \"analytics\" }],\n        },\n      ],\n    },\n    // With ignores - attribute key pattern matching specific attribute\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <link rel=\"preconnect\" href=\"https://example.com\" data-ignore=\"true\">\n</head>\n</html>\n      `,\n      options: [{ ignores: [{ attrKeyPattern: \"^data-ignore$\" }] }],\n    },\n    // With ignores - tag and attribute value pattern (AND condition) - all scripts ignored\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <script src=\"app.js\"></script>\n  <script src=\"analytics.js\"></script>\n</head>\n</html>\n      `,\n      options: [{ ignores: [{ tagPattern: \"^script$\" }] }],\n    },\n    // With HTML comments - comments maintain their position\n    {\n      code: `\n<html>\n<head>\n  <!-- This is a comment -->\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <!-- Another comment -->\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <!-- Final comment -->\n</head>\n</html>\n      `,\n    },\n    // With HTML comments mixed with elements\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <!-- Comment between meta and title -->\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <!-- Comment before script -->\n  <script src=\"script.js\" async></script>\n</head>\n</html>\n      `,\n    },\n  ],\n  invalid: [\n    // TITLE (9) should come before PRECONNECT (8)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <title>Test</title>\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"PRECONNECT\",\n          },\n        },\n      ],\n    },\n    // META (10) should come before TITLE (9)\n    {\n      code: `\n<html>\n<head>\n  <title>Test</title>\n  <meta charset=\"UTF-8\">\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"TITLE\",\n          },\n        },\n      ],\n    },\n    // SYNC_STYLES (4) should come before PRELOAD (3)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\">\n  <link rel=\"stylesheet\" href=\"styles.css\">\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\">\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"SYNC_STYLES\",\n            currentCategory: \"PRELOAD\",\n          },\n        },\n      ],\n    },\n    // ASYNC_SCRIPT (7) should come before SYNC_SCRIPT (5)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script>console.log('sync');</script>\n  <script src=\"async.js\" async></script>\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"async.js\" async></script>\n  <script>console.log('sync');</script>\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"ASYNC_SCRIPT\",\n            currentCategory: \"SYNC_SCRIPT\",\n          },\n        },\n      ],\n    },\n    // Multiple ordering violations\n    {\n      code: `\n<html>\n<head>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <meta charset=\"UTF-8\">\n  <script src=\"deferred.js\" defer></script>\n  <title>Test</title>\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <script src=\"deferred.js\" defer></script>\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"SYNC_STYLES\",\n          },\n        },\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"DEFER_SCRIPT\",\n          },\n        },\n      ],\n    },\n    // PRECONNECT (8) should come before DEFER_SCRIPT (2)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"deferred.js\" defer></script>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <script src=\"deferred.js\" defer></script>\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"PRECONNECT\",\n            currentCategory: \"DEFER_SCRIPT\",\n          },\n        },\n      ],\n    },\n    // With ignores - ignored tags maintain position, others are sorted\n    {\n      code: `\n<html>\n<head>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <meta charset=\"UTF-8\">\n  <script src=\"ignored.js\" defer></script>\n  <title>Test</title>\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"ignored.js\" defer></script>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n</head>\n</html>\n      `,\n      options: [\n        { ignores: [{ tagPattern: \"^script$\", attrValuePattern: \"ignored\" }] },\n      ],\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"SYNC_STYLES\",\n          },\n        },\n      ],\n    },\n    // With ignores - multiple ignore patterns\n    {\n      code: `\n<html>\n<head>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <meta charset=\"UTF-8\">\n  <script src=\"analytics.js\"></script>\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://cdn.example.com\">\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"analytics.js\"></script>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <link rel=\"preconnect\" href=\"https://cdn.example.com\">\n</head>\n</html>\n      `,\n      options: [\n        {\n          ignores: [\n            { tagPattern: \"^script$\", attrValuePattern: \"analytics\" },\n            { tagPattern: \"^link$\", attrValuePattern: \"cdn\" },\n          ],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"SYNC_STYLES\",\n          },\n        },\n      ],\n    },\n    // IMPORT_STYLES (6) should come before SYNC_SCRIPT (5)\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script>console.log('sync');</script>\n  <style>@import url('fonts.css');</style>\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <style>@import url('fonts.css');</style>\n  <script>console.log('sync');</script>\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"IMPORT_STYLES\",\n            currentCategory: \"SYNC_SCRIPT\",\n          },\n        },\n      ],\n    },\n    // With HTML comments - TITLE should come before PRECONNECT, comments maintain position\n    {\n      code: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <!-- Comment before link -->\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <!-- Comment before title -->\n  <title>Test</title>\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <!-- Comment before link -->\n  <title>Test</title>\n  <!-- Comment before title -->\n  <link rel=\"preconnect\" href=\"https://example.com\">\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"PRECONNECT\",\n          },\n        },\n      ],\n    },\n    // With HTML comments - META should come before TITLE, comments maintain position\n    {\n      code: `\n<html>\n<head>\n  <!-- Header comment -->\n  <title>Test</title>\n  <!-- Comment between -->\n  <meta charset=\"UTF-8\">\n  <!-- Footer comment -->\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <!-- Header comment -->\n  <meta charset=\"UTF-8\">\n  <!-- Comment between -->\n  <title>Test</title>\n  <!-- Footer comment -->\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"TITLE\",\n          },\n        },\n      ],\n    },\n    // With HTML comments - multiple violations with comments\n    {\n      code: `\n<html>\n<head>\n  <!-- Start -->\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <!-- Comment 1 -->\n  <meta charset=\"UTF-8\">\n  <!-- Comment 2 -->\n  <script src=\"deferred.js\" defer></script>\n  <!-- Comment 3 -->\n  <title>Test</title>\n  <!-- End -->\n</head>\n</html>\n      `,\n      output: `\n<html>\n<head>\n  <!-- Start -->\n  <meta charset=\"UTF-8\">\n  <!-- Comment 1 -->\n  <title>Test</title>\n  <!-- Comment 2 -->\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <!-- Comment 3 -->\n  <script src=\"deferred.js\" defer></script>\n  <!-- End -->\n</head>\n</html>\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"SYNC_STYLES\",\n          },\n        },\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"DEFER_SCRIPT\",\n          },\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] head-order\", rule, {\n  valid: [\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test Page</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <script src=\"script.js\" async></script>\n</head>\n</html>\n\\`;\n      `,\n    },\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n</head>\n</html>\n\\`;\n      `,\n    },\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <script src=\"analytics.js\" defer></script>\n</head>\n</html>\n\\`;\n      `,\n      options: [{ ignores: [{ tagPattern: \"^script$\" }] }],\n    },\n    // With expressions - meta with expression attribute\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"\\${charset}\">\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n</head>\n</html>\n\\`;\n      `,\n    },\n    // With expressions - link with expression in href\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"\\${cdnUrl}\">\n  <script src=\"\\${scriptUrl}\" async></script>\n</head>\n</html>\n\\`;\n      `,\n    },\n    // With expressions - script with expression\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"\\${asyncScript}\" async></script>\n  <script src=\"\\${syncScript}\"></script>\n</head>\n</html>\n\\`;\n      `,\n    },\n    // With HTML comments in template\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <!-- Comment -->\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <!-- Another comment -->\n  <link rel=\"stylesheet\" href=\"styles.css\">\n</head>\n</html>\n\\`;\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <title>Test</title>\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"PRECONNECT\",\n          },\n        },\n      ],\n    },\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <title>Test</title>\n  <meta charset=\"UTF-8\">\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"META\",\n            currentCategory: \"TITLE\",\n          },\n        },\n      ],\n    },\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\">\n  <link rel=\"stylesheet\" href=\"styles.css\">\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <link rel=\"preload\" href=\"font.woff\" as=\"font\">\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"SYNC_STYLES\",\n            currentCategory: \"PRELOAD\",\n          },\n        },\n      ],\n    },\n    // With expressions - TITLE should come before PRECONNECT\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"\\${charset}\">\n  <link rel=\"preconnect\" href=\"\\${cdnUrl}\">\n  <title>Test</title>\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"\\${charset}\">\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"\\${cdnUrl}\">\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"PRECONNECT\",\n          },\n        },\n      ],\n    },\n    // With expressions - ASYNC_SCRIPT should come before SYNC_SCRIPT\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"\\${syncScript}\"></script>\n  <script src=\"\\${asyncScript}\" async></script>\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <script src=\"\\${asyncScript}\" async></script>\n  <script src=\"\\${syncScript}\"></script>\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"ASYNC_SCRIPT\",\n            currentCategory: \"SYNC_SCRIPT\",\n          },\n        },\n      ],\n    },\n    // With expressions - SYNC_STYLES should come before PRELOAD\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"preload\" href=\"\\${fontUrl}\" as=\"font\">\n  <link rel=\"stylesheet\" href=\"\\${cssUrl}\">\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Test</title>\n  <link rel=\"stylesheet\" href=\"\\${cssUrl}\">\n  <link rel=\"preload\" href=\"\\${fontUrl}\" as=\"font\">\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"SYNC_STYLES\",\n            currentCategory: \"PRELOAD\",\n          },\n        },\n      ],\n    },\n    // With HTML comments - TITLE should come before PRECONNECT\n    {\n      code: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <!-- Comment -->\n  <link rel=\"preconnect\" href=\"https://example.com\">\n  <title>Test</title>\n</head>\n</html>\n\\`;\n      `,\n      output: `\nconst template = html\\`\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <!-- Comment -->\n  <title>Test</title>\n  <link rel=\"preconnect\" href=\"https://example.com\">\n</head>\n</html>\n\\`;\n      `,\n      errors: [\n        {\n          messageId: \"wrongOrder\",\n          data: {\n            nextCategory: \"TITLE\",\n            currentCategory: \"PRECONNECT\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/id-naming-convention.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/id-naming-convention\");\nconst { TEMPLATE_ENGINE_SYNTAX } = require(\"@html-eslint/parser\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"id-naming-convention\", rule, {\n  valid: [\n    {\n      code: `<div\"> </div>`,\n      options: [\"camelCase\"],\n    },\n    {\n      code: `<div id=\"camelCase\"> </div>`,\n      options: [\"camelCase\"],\n    },\n    {\n      code: `<div id=\"{{ID}}\"> </div>`,\n      options: [\"camelCase\"],\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.HANDLEBAR,\n        },\n      },\n    },\n    {\n      code: `<div id=\"PascalCase\"> </div>`,\n      options: [\"PascalCase\"],\n    },\n    {\n      code: `<div id=\"kebab-case\"> </div>`,\n      options: [\"kebab-case\"],\n    },\n    {\n      code: `<div id=\"snake_case\"> </div>`,\n      options: [\"snake_case\"],\n    },\n    {\n      code: `<div id=\"CuStOmReGeX\"> </div>`,\n      options: [\"regex\", { pattern: \"^([A-Z][a-z])+[A-Z]?$\" }],\n    },\n    {\n      code: `<div id=\"CuStOmReGeX\"> </div>`,\n      options: [\"regex\", { pattern: \"^[a-z]+$\", flags: \"i\" }],\n    },\n  ],\n  invalid: [\n    {\n      code: `<div id=\"kebab-case\"> </div>`,\n      options: [\"PascalCase\"],\n      errors: [\n        {\n          message: \"The id 'kebab-case' is not matched with the PascalCase.\",\n        },\n      ],\n    },\n    {\n      code: `<div id=\"kebab-case\"> </div>`,\n      options: [\"snake_case\"],\n      errors: [\n        {\n          message: \"The id 'kebab-case' is not matched with the snake_case.\",\n        },\n      ],\n    },\n    {\n      code: `<div id=\"kebab-case\"> </div>`,\n      options: [\"regex\", { pattern: \"^([A-Z][a-z])+[A-Z]?$\" }],\n      errors: [\n        {\n          message: \"The id 'kebab-case' is not matched with the regex.\",\n        },\n      ],\n    },\n    {\n      code: `<div id=\"kebab-case\"> </div>`,\n      options: [\"regex\", { pattern: \"^([A-Z][a-z])+[A-Z]?$\", flags: \"i\" }],\n      errors: [\n        {\n          message: \"The id 'kebab-case' is not matched with the regex.\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] id-naming-convention\", rule, {\n  valid: [\n    {\n      code: `html\\`<div> </div>\\`;`,\n      options: [\"camelCase\"],\n    },\n    {\n      code: `html\\`<div id=\"camelCase\"> </div>\\`;`,\n      options: [\"camelCase\"],\n    },\n    {\n      code: `html\\`<div id=\"\\${foo}\"> </div>\\`;`,\n      options: [\"camelCase\"],\n    },\n    {\n      code: `html\\`<div id=\\${foo}> </div>\\`;`,\n      options: [\"camelCase\"],\n    },\n    {\n      code: `html\\`<div id=\\${FOO}> </div>\\`;`,\n      options: [\"camelCase\"],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div id=\"kebab-case\"> </div>\\`;`,\n      options: [\"PascalCase\"],\n      errors: [\n        {\n          message: \"The id 'kebab-case' is not matched with the PascalCase.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/indent.test.js",
    "content": "/** @import {RuleTester} from \"eslint\" */\n\nconst createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/indent\");\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\n/**\n * @param {number} length\n * @returns\n */\nfunction wrongIndentErrors(length) {\n  return Array.from({ length }, () => ({\n    messageId: \"wrongIndent\",\n  }));\n}\n\n/**\n * @param {{\n *   valid: RuleTester.ValidTestCase[];\n *   invalid: RuleTester.InvalidTestCase[];\n * }} tests\n * @returns\n */\nfunction changeLineEndings(tests) {\n  tests.valid.forEach((test) => {\n    test.code = test.code.replace(/\\n/g, \"\\r\\n\");\n  });\n  tests.invalid.forEach((test) => {\n    test.code = test.code.replace(/\\n/g, \"\\r\\n\");\n    if (test.output) {\n      test.output = test.output.replace(/\\n/g, \"\\r\\n\");\n    }\n  });\n  return tests;\n}\n\nfunction createTests() {\n  return {\n    valid: [\n      {\n        code: `\n<html>\n    <body>\n        <div id = \"foo\"></div>\n        <div id = \"bar\"></div>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n  <body>\n    <div id = \"foo\"></div>\n    <div id = \"bar\"></div>\n  </body>\n</html>\n`,\n        options: [2],\n      },\n      {\n        code: `\n<html>\n    <body>\n        <div>\n            <div> foo </div>\n            bar\n        </div>\n        <div>\n            baz\n            qux\n        </div>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n\n<div>\n    <div> foo </div>\n    bar\n</div>\n`,\n      },\n      {\n        code: `\n<html>\n\\t<body>\n\\t\\t<div id = \"foo\"></div>\n\\t\\t<div id = \"bar\"></div>\n\\t</body>\n</html>\n`,\n        options: [\"tab\"],\n      },\n      {\n        code: `\n<html>\n    <body>\n        <div>\n            should not fixed\n        </div>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <body>\n        <pre>\n should not fixed\n        </pre>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <body>\n        <pre>\n        <div>\n        should not fixed\n        </div>\n \n        </pre>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <body>\n        <xmp>\n    <div>\n    should not fixed\n    </div>\n \n        </xmp>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <head>\n        <style>\n        foo\n        </style>\n    </head>\n    <body>\n        <pre>\n        <div>\n      should not fixed\n        </div>\n    \n        </pre>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <head>\n        <style>\n    foo\n        </style>\n    </head>\n    <body>\n        <pre>\n        <div>\n      should not fixed\n        </div>\n    \n        </pre>\n        <div>\n            <pre>\n        <div>\n      should not fixed\n        </div>\n        \n            </pre>\n        </div>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <body>\n        <script>\n              var a = 1;\n        </script>\n    </body>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <body>\n        <div id = \"foo\"></div>\n        <div id = \"bar\"></div>\n    </body>\n    <script>\n    </script>\n</html>\n`,\n      },\n      {\n        code: `\n<div\n    id=\"foo\"\n    style=\"bar\">\n</div>\n`,\n      },\n      {\n        code: `\n<div>\n    <pre>\n    \n  <div\n        id=\"foo\"\n        style=\"bar\">\n </div>\n    </pre>\n</div>\n`,\n      },\n      {\n        code: `\n<div\n    id=\"foo\"\n    style=\"bar\"\n>\n</div>\n`,\n      },\n      {\n        code: `<div class=\"foo\">\n</div>\n`,\n      },\n      {\n        code: `<div class=\"foo\"\n    id=\"bar\">\n</div>\n`,\n      },\n      // https://github.com/yeonjuan/html-eslint/issues/102\n      {\n        code: `\n<table>\n    <ng-container>\n        <th>world</th>\n        <td>hello</td>\n    </ng-container>\n</table>`,\n      },\n      // script & style\n      {\n        code: `\n<script\n>\n</script>`,\n      },\n      {\n        code: `\n<script\n    defer\n    src=\"source.js\">\n</script>`,\n      },\n      {\n        code: `\n<html>\n    <head>\n        <script\n            defer\n            src=\"source.js\">\n        </script>\n    </head>\n</html>\n`,\n      },\n      {\n        code: `\n<html>\n    <head>\n        <script>\n    console.log('aa');\n        </script>\n    </head>\n</html>\n`,\n      },\n      {\n        code: `\n<style\n>\n</style>`,\n      },\n      {\n        code: `\n<style\n    defer\n    src=\"source.js\">\n</style>`,\n      },\n      {\n        code: `\n<html>\n    <head>\n        <style\n        >\n        </style>\n    </head>\n</html>\n`,\n      },\n      {\n        code: `\n<div\n    id=\"1\">\n  <span></span>\n</div>\n        `,\n        options: [\n          2,\n          {\n            Attribute: 2,\n          },\n        ],\n      },\n      {\n        code: `\n<html lang=\"es\">\n<head>\n</head>\n<body>\n</body>\n</html>\n        `,\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              html: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<html\n  lang=\"es\">\n<body>\n  <div></div>\n  text\n</body>\n</html>\n        `,\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              html: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<!DOCTYPE html>\n<html>\n<body>\n</body>\n<script src=\"\"></script>\n</html>\n`,\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              html: 0,\n              body: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<!DOCTYPE html>\n<html>\n<body>\n</body>\n<style></style>\n</html>\n`,\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              html: 0,\n              body: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<style>\n</style>\n<script>\n</script>\n        `,\n      },\n      {\n        code: `\n<div>\n<pre>\n{{content}}\n</pre>\n</html>\n        `,\n      },\n      {\n        code: `\n<div>\n    {{content}} {{content2}}\n</html>\n        `,\n      },\n      {\n        code: `---\n  name: value\n---\n<div>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            frontmatter: true,\n          },\n        },\n      },\n      {\n        code: `\n<markdown>\n# Hello, world!\n\n\\`\\`\\`cpp{4-6,9}\n#include <iostream>\n\nclass Example {\n    Example() {\n        std::cout << \"Hello, world!\" << std::endl;\n    }\n\n    Example(std::string name) {\n        std::cout << \"Hello, \" << name << std::endl;\n    }\n};\n\\`\\`\\`\n</markdown>\n      `,\n        languageOptions: {\n          parserOptions: {\n            rawContentTags: [\"markdown\"],\n          },\n        },\n      },\n      {\n        code: `\n<div>\ntext\n</div>\n        `,\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              div: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<div>\n        text\n</div>\n        `,\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              div: 4,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<div>\n  text\n  <!--\ncomment\n<div></div>\n  -->\n</div>\n        `,\n        options: [\n          2,\n          {\n            ignoreComment: true,\n          },\n        ],\n      },\n      {\n        code: `\n<div>\n  text\n<!--\ncomment\n<div></div>\n-->\n</div>\n        `,\n        options: [\n          2,\n          {\n            ignoreComment: true,\n          },\n        ],\n      },\n      {\n        code: `\n<div>\n    <% content %>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"<%\": \"%>\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div>\n    <%\n      content\n    %>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"<%\": \"%>\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div>\n    <%\n      content\n      content %>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"<%\": \"%>\",\n            },\n          },\n        },\n      },\n    ],\n    invalid: [\n      {\n        code: `\n<html>\n  <body>\n </body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n    </body>\n</html>\n`,\n        errors: [\n          {\n            message: \"Expected indentation of 4 space but found 2 space.\",\n          },\n          {\n            message: \"Expected indentation of 4 space but found 1 space.\",\n          },\n        ],\n      },\n      {\n        code: `\n<html>\n    <body>\n       <div>\n      </div>\n    </body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <div>\n        </div>\n    </body>\n</html>\n`,\n        errors: [\n          {\n            message: \"Expected indentation of 8 space but found 7 space.\",\n          },\n          {\n            message: \"Expected indentation of 8 space but found 6 space.\",\n          },\n        ],\n      },\n      {\n        code: `\n<html>\n\\t<body>\n\\t\\t <div>\n\\t\\t  </div>\n\\t</body>\n</html>\n`,\n        output: `\n<html>\n\\t<body>\n\\t\\t<div>\n\\t\\t</div>\n\\t</body>\n</html>\n`,\n        options: [\"tab\"],\n        errors: [\n          {\n            message: \"Expected indentation of 2 tab but found 2 tab, 1 space.\",\n          },\n          {\n            message: \"Expected indentation of 2 tab but found 2 tab, 2 space.\",\n          },\n        ],\n      },\n      {\n        code: `\n<html>\n<body>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n    </body>\n</html>\n`,\n        errors: [\n          {\n            message: \"Expected indentation of 4 space but found no indent.\",\n          },\n          {\n            message: \"Expected indentation of 4 space but found no indent.\",\n          },\n        ],\n      },\n      {\n        code: `\n<html>\n<body>\n</body>\n</html>\n`,\n        output: `\n<html>\n\\t<body>\n\\t</body>\n</html>\n`,\n        options: [\"tab\"],\n        errors: [\n          {\n            message: \"Expected indentation of 1 tab but found no indent.\",\n          },\n          {\n            message: \"Expected indentation of 1 tab but found no indent.\",\n          },\n        ],\n      },\n      {\n        code: `\n<html>\n<body>\n<div> </div>\n<div> </div>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <div> </div>\n        <div> </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(4),\n      },\n      {\n        code: `\n<html>\n<body>\n<div>\n    </div>\n<div> </div>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <div>\n        </div>\n        <div> </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(5),\n      },\n      {\n        code: `\n<html>\n<body>\n\\t <div> </div>\n<div> </div>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <div> </div>\n        <div> </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(4),\n      },\n      {\n        code: `\n<html>\n<body>\n<!-- comment -->\n<div> </div>\n<div> </div>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <!-- comment -->\n        <div> </div>\n        <div> </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(5),\n      },\n      {\n        code: `\n<html>\n<body>\n<!-- comment\n-->\n<div> </div>\n<div> </div>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <!-- comment\n        -->\n        <div> </div>\n        <div> </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(6),\n      },\n      {\n        code: `\n<html>\n<body>\n<!--\ncomment\n-->\n<div> </div>\n<div> </div>\n</body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <!--\n            comment\n        -->\n        <div> </div>\n        <div> </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(7),\n      },\n      {\n        code: `\n<div>\n<!--\ncomment\n-->\n</div>\n`,\n        output: `\n<div>\n    <!--\n        comment\n    -->\n</div>\n`,\n        errors: wrongIndentErrors(3),\n      },\n      {\n        code: `\n<div>\n    <p>\nindent\nindent\nindent\n    </p>\n</div>\n`,\n        output: `\n<div>\n    <p>\n        indent\n        indent\n        indent\n    </p>\n</div>\n`,\n        errors: wrongIndentErrors(3),\n      },\n      {\n        code: `\n<div>\n<p>\nindent indent\nindent indent\nindent\n</p>\n<a>\nindent\n</a>\n<div>\n<div>\ntest\n</div>\n</div>\n</div>\n`,\n        output: `\n<div>\n    <p>\n        indent indent\n        indent indent\n        indent\n    </p>\n    <a>\n        indent\n    </a>\n    <div>\n        <div>\n            test\n        </div>\n    </div>\n</div>\n`,\n        errors: wrongIndentErrors(13),\n      },\n      {\n        code: `<!DOCTYPE html>\n<html lang=\"en\">\n</head>\n<body>\n<table>\n<tr>\n  <td>Table 1</td>\n</tr>\n</table>\n<table>\n<tr>\n  <td>Table 2</td>\n</tr>\n</table>\n</body>\n</html>`,\n        output: `<!DOCTYPE html>\n<html lang=\"en\">\n</head>\n    <body>\n        <table>\n            <tr>\n                <td>Table 1</td>\n            </tr>\n        </table>\n        <table>\n            <tr>\n                <td>Table 2</td>\n            </tr>\n        </table>\n    </body>\n</html>`,\n        errors: wrongIndentErrors(12),\n      },\n      {\n        code: `\n<div\nid=\"foo\"\nstyle=\"bar\">\n</div>\n`,\n        output: `\n<div\n    id=\"foo\"\n    style=\"bar\">\n</div>\n`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `\n<div\nid=\"foo\"\nstyle=\"bar\" class=\"baz\">\n</div>\n`,\n        output: `\n<div\n    id=\"foo\"\n    style=\"bar\" class=\"baz\">\n</div>\n`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `\n<div id=\"foo\"\n  style=\"bar\" class=\"baz\">\n</div>\n`,\n        output: `\n<div id=\"foo\"\n    style=\"bar\" class=\"baz\">\n</div>\n`,\n        errors: wrongIndentErrors(1),\n      },\n      {\n        code: `\n<div\n  id=\"foo\"\n  style=\"bar\"\n   >\n</div>\n`,\n        output: `\n<div\n    id=\"foo\"\n    style=\"bar\"\n>\n</div>\n`,\n        errors: wrongIndentErrors(3),\n      },\n      {\n        code: `\n<div>\n  <div\n      id=\"foo\"\nclass=\"bar\"\n        style=\"baz\"\n  >\n    </div>\n</div>\n`,\n        output: `\n<div>\n    <div\n        id=\"foo\"\n        class=\"bar\"\n        style=\"baz\"\n    >\n    </div>\n</div>\n`,\n        errors: wrongIndentErrors(4),\n      },\n      {\n        code: `\n<html>\n    <head>\n        <script src='http://somescript.js'></script>\n    </head>\n    <body>\n<div id='hello'>\n</div>\n    </body>\n</html>\n`,\n        output: `\n<html>\n    <head>\n        <script src='http://somescript.js'></script>\n    </head>\n    <body>\n        <div id='hello'>\n        </div>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `\n<html>\n    <body>\n        <template>\n        <details></details>\n        </template>\n    </body>\n</html>\n`,\n        output: `\n<html>\n    <body>\n        <template>\n            <details></details>\n        </template>\n    </body>\n</html>\n`,\n        errors: wrongIndentErrors(1),\n      },\n      {\n        code: `<div class=\"foo\"\nid=\"bar\"\n style=\"style\"\n>\n</div>\n`,\n        output: `<div class=\"foo\"\n    id=\"bar\"\n    style=\"style\"\n>\n</div>\n`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `<div class=\"foo\"\nid=\"bar\"\n style=\"style\">\n</div>\n`,\n        output: `<div class=\"foo\"\n    id=\"bar\"\n    style=\"style\">\n</div>\n`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `<div class=\"foo\"\nid=\"bar\"\n style=\"style\"></div>\n`,\n        output: `<div class=\"foo\"\n    id=\"bar\"\n    style=\"style\"></div>\n`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `\n<div><div>\n  </div>\n</div>`,\n        output: `\n<div><div>\n    </div>\n</div>`,\n        errors: wrongIndentErrors(1),\n      },\n      {\n        code: `<div><a>\n  </a>\n</div>`,\n        output: `<div><a>\n    </a>\n</div>`,\n        errors: wrongIndentErrors(1),\n      },\n      // https://github.com/yeonjuan/html-eslint/issues/93\n      {\n        code: `\n<div><a>\n  </a>\n</div>`,\n        output: `\n<div><a>\n    </a>\n</div>`,\n        errors: wrongIndentErrors(1),\n      },\n      {\n        code: `\n<div><a>\n  </a></div>`,\n        output: `\n<div><a>\n    </a></div>`,\n        errors: wrongIndentErrors(1),\n      },\n      {\n        code: `\n<div>\n<a>\n</a></div>`,\n        output: `\n<div>\n    <a>\n    </a></div>`,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `<div>\n    <div>\n  inner div </div>\n</div>`,\n        output: `<div>\n    <div>\n        inner div </div>\n</div>`,\n        errors: wrongIndentErrors(1),\n      },\n      // https://github.com/yeonjuan/html-eslint/issues/102\n      {\n        code: `\n<table>\n<ng-container>\n        <th>world</th>\n        <td>hello</td>\n    </ng-container>\n</table>`,\n        output: `\n<table>\n    <ng-container>\n        <th>world</th>\n        <td>hello</td>\n    </ng-container>\n</table>`,\n        errors: wrongIndentErrors(1),\n      },\n      {\n        code: `\n<script\n  defer\n    src=\"source.js\">\n</script>`,\n        errors: wrongIndentErrors(1),\n        output: `\n<script\n    defer\n    src=\"source.js\">\n</script>`,\n      },\n      {\n        code: `\n<style\n  >\n    .foo {}\n</style>`,\n        errors: wrongIndentErrors(1),\n        output: `\n<style\n>\n    .foo {}\n</style>`,\n      },\n      {\n        code: `\n<div\n\\t\\t\\t\\tid=\"1\">\n\\t<span></span>\n</div>\n        `,\n        options: [\n          \"tab\",\n          {\n            Attribute: 3,\n          },\n        ],\n        errors: wrongIndentErrors(1),\n        output: `\n<div\n\\t\\t\\tid=\"1\">\n\\t<span></span>\n</div>\n        `,\n      },\n      {\n        code: `\n<html>\n  <body>\n</body>\n</html>\n        `,\n        output: `\n<html>\n<body>\n</body>\n</html>\n        `,\n        errors: wrongIndentErrors(1),\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              html: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<div>\n  text\n</div>\n        `,\n        output: `\n<div>\ntext\n</div>\n        `,\n        errors: wrongIndentErrors(1),\n        options: [\n          2,\n          {\n            tagChildrenIndent: {\n              div: 0,\n            },\n          },\n        ],\n      },\n      {\n        code: `\n<style>\n   </style>\n<script>\n  </script>\n        `,\n        output: `\n<style>\n</style>\n<script>\n</script>\n        `,\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `\n<html>\n{{content}}\n</html>\n        `,\n        errors: wrongIndentErrors(1),\n        output: `\n<html>\n    {{content}}\n</html>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"{{\": \"}}\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<html>\n{{\n  content\n}}\n</html>\n        `,\n        errors: wrongIndentErrors(2),\n        output: `\n<html>\n    {{\n  content\n    }}\n</html>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"{{\": \"}}\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<!--\n{{\n  content\n}}\n-->\n        `,\n        errors: wrongIndentErrors(2),\n        output: `\n<!--\n    {{\n  content\n    }}\n-->\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"{{\": \"}}\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div\n{{ content }}>\n</div>\n        `,\n        errors: wrongIndentErrors(1),\n        output: `\n<div\n    {{ content }}>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"{{\": \"}}\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div>\n{{ content }}\n <span></span>\n {{ content2 }}\n</div>\n        `,\n        errors: wrongIndentErrors(3),\n        output: `\n<div>\n    {{ content }}\n    <span></span>\n    {{ content2 }}\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"{{\": \"}}\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div>\n{{ content }}\n <span></span>\n {{{ content2 }}}\n</div>\n        `,\n        errors: wrongIndentErrors(3),\n        output: `\n<div>\n    {{ content }}\n    <span></span>\n    {{{ content2 }}}\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"{{\": \"}}\",\n              \"{{{\": \"}}}\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div>\n<% content %>\n</div>\n        `,\n        errors: wrongIndentErrors(1),\n        output: `\n<div>\n    <% content %>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"<%\": \"%>\",\n            },\n          },\n        },\n      },\n      {\n        code: `\n<div>\n<%\n  content\n%>\n</div>\n        `,\n        errors: wrongIndentErrors(2),\n        output: `\n<div>\n    <%\n  content\n    %>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            templateEngineSyntax: {\n              \"<%\": \"%>\",\n            },\n          },\n        },\n      },\n      {\n        code: `<div>\n<div></div>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            frontmatter: true,\n          },\n        },\n        errors: wrongIndentErrors(1),\n        output: `<div>\n    <div></div>\n</div>\n        `,\n      },\n      {\n        code: `---\n  name: value\n---\n<div>\n<div></div>\n</div>\n        `,\n        languageOptions: {\n          parserOptions: {\n            frontmatter: true,\n          },\n        },\n        errors: wrongIndentErrors(1),\n        output: `---\n  name: value\n---\n<div>\n    <div></div>\n</div>\n        `,\n      },\n      {\n        code: `\n<div>\n  text\n  <!--\ncomment\n<div></div>\n  -->\n</div>\n        `,\n        output: `\n<div>\n  text\n  <!--\n    comment\n    <div></div>\n  -->\n</div>\n        `,\n        options: [\n          2,\n          {\n            ignoreComment: false,\n          },\n        ],\n        errors: wrongIndentErrors(2),\n      },\n      {\n        code: `\n<div>\n </div>\n        `,\n        output: `\n<div>\n</div>\n        `,\n        options: [\n          2,\n          {\n            templateIndentBase: \"first\",\n          },\n        ],\n        errors: wrongIndentErrors(1),\n      },\n    ],\n  };\n}\n\nruleTester.run(\"indent LF\", rule, createTests());\n\nruleTester.run(\"indent CRLF\", rule, changeLineEndings(createTests()));\n\ntemplateRuleTester.run(\"[template] indent\", rule, {\n  valid: [\n    {\n      code: `/*html*/\\`<div></div>\\``,\n    },\n    {\n      code: `html\\`\n    <div>\n        <div></div>\n    </div>\n      \\``,\n    },\n    {\n      code: `\n  class Component extends LitElement {\n    render() {\n      return html\\`<p>content</p>\n      \\`;\n    }\n  }\n        `,\n    },\n    {\n      code: `\nconst code = html\\`\n  <!DOCTYPE html>\n  <html lang=\"es\">\n  <head>\n  </head>\n  <body>\n  </body>\n  </html>\n\\`;\n      `,\n      options: [\n        2,\n        {\n          tagChildrenIndent: {\n            html: 0,\n          },\n        },\n      ],\n    },\n    {\n      code: `html\\`\n  <span>\n    <div>\n    text\n    </div>\n  </span>\n      \\``,\n      options: [\n        2,\n        {\n          tagChildrenIndent: {\n            div: 0,\n          },\n        },\n      ],\n    },\n    {\n      code: `html\\`\n       <span>test</span>\n      \\``,\n      options: [\n        2,\n        {\n          templateIndentBase: \"first\",\n        },\n      ],\n    },\n    {\n      code: `html\\`\n       <div>\n         <span>test</span>\n       </div>\n      \\``,\n      options: [\n        2,\n        {\n          templateIndentBase: \"first\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<div>\n  </div>\n  <div>a</div>\n      \\``,\n      options: [\n        2,\n        {\n          templateIndentBase: \"first\",\n        },\n      ],\n    },\n    {\n      code: `html\\`\\`;`,\n      options: [\n        2,\n        {\n          templateIndentBase: \"first\",\n        },\n      ],\n    },\n    {\n      code: `\n      function foo() {\n    return html\\`\n        \\${when(\n          true,\n          () => html\\`\n            <b>ok</b>\\`)}\n    \\`;\n }\n      `,\n    },\n    {\n      code: `\nhtml\\`\n    <div>\n        \\${\n\n  \t\t\ta ? \"foo\":\n          \"bar\"}\n    </div>\n\\`\n      `,\n    },\n    {\n      code: `html\\`\n    <div>\n        \\${\n          condition\n            ? valueA\n            : valueB}\n    </div>\n      \\``,\n    },\n    {\n      code: `html\\`\n    <div>\n        \\${\n          a ||\n              b}\n    </div>\n      \\``,\n    },\n    {\n      code: `html\\`\n    <div>\n        \\${\n          \"prefix\" +\n            \"suffix\"}\n    </div>\n      \\``,\n    },\n    {\n      code: `html\\`\n  \\${when(\n      true,\n      () => html\\`\n        <b>ok</b>\n      \\`)}\n\\`;`,\n      options: [2],\n    },\n    {\n      code: `html\\`\n  \\${when(\n      true,\n      () => html\\`\n        \\${when(\n            true,\n            () => html\\`\n              <b>ok</b>\n            \\`)}\n      \\`)}\n\\`;`,\n      options: [2],\n    },\n    {\n      code: `html\\`\n\\${when(\ntrue,\n() => html\\`\n\\${when(\ntrue,\n() => html\\`\n<b>ok</b>\n\\`)}\n\\`)}\n\\`;`,\n      options: [2, { templateIndentBase: \"first\" }],\n    },\n    {\n      code: `html\\`\n\\${when(\ntrue,\n() => html\\`\n\\${when(\ntrue,\n() => html\\`\n<ul\n  class=\"list\"\n>\n  <li>item1</li>\n  <li>item2</li>\n</ul>\n\\`)}\n<div\n  class=\"wrapper\"\n>\n  <p>text</p>\n</div>\n\\`)}\n<footer\n  class=\"main-footer\"\n>\n  <span>footer</span>\n</footer>\n\\`;`,\n      options: [2, { templateIndentBase: \"first\" }],\n    },\n    {\n      code: `html\\`\n\\${when(\ntrue,\n() => html\\`\n<div\n  class=\"\\${cls}\"\n  id=\"\\${id}\"\n>\n  <p>text</p>\n</div>\n\\`)}\n\\`;`,\n      options: [2, { templateIndentBase: \"first\" }],\n    },\n    {\n      code: `html\\`\n  <div>\n    \\${\n  foo(\n    condition\n      ? html\\`<div class=\"bar\"></div>\\`\n: html\\`<div class=\"baz\"></div>\\`)}\n  </div>\n\\`;`,\n      options: [2],\n    },\n    {\n      code: `html\\`\n  <div>\n    \\${when(\n      true,\n      () => html\\`\n        <div></div>\n\\`)}\n  </div>\n\\``,\n      options: [2],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`\n    <div>\n        \\${\n    content}\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        \\${\n        content}\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    // Ignore indentation in template expressions\n    {\n      code: `html\\`\n    <div>\n        \\${items.map((item) => {\nreturn \"<div></div>\"\n})}\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        \\${items.map((item) => {\nreturn \"<div></div>\"\n        })}\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n    <div>\n\\${content}\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        \\${content}\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n    <div>\n        \\${content\n}\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        \\${content\n        }\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n    <div>\n    content \\${expression\n        + expression}\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        content \\${expression\n        + expression}\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n    <div>\n        \\${expression\n+ expression\n    }\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        \\${expression\n+ expression\n        }\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n    <div>\n\\${\n        content}\n    </div>\n      \\``,\n      output: `html\\`\n    <div>\n        \\${\n        content}\n    </div>\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n<div\nid=\"\\${bar}\">\n</div>\n      \\``,\n      output: `html\\`\n    <div\n        id=\"\\${bar}\">\n    </div>\n      \\``,\n      errors: wrongIndentErrors(3),\n    },\n    {\n      code: `html\\`\n<div\n\\${id}>\n</div>\n      \\``,\n      output: `html\\`\n    <div\n        \\${id}>\n    </div>\n      \\``,\n      errors: wrongIndentErrors(3),\n    },\n    {\n      code: `\nconst obj = {\n    html: html\\`\n<div>\n            id=\"\\${bar}\">\n        </div>\\`\n}\n    `,\n      output: `\nconst obj = {\n    html: html\\`\n        <div>\n            id=\"\\${bar}\">\n        </div>\\`\n}\n    `,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nconst obj = {\n    html: /*html*/\\`\n<div>\n            id=\"\\${bar}\">\n        </div>\\`\n}\n    `,\n      output: `\nconst obj = {\n    html: /*html*/\\`\n        <div>\n            id=\"\\${bar}\">\n        </div>\\`\n}\n    `,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nconst obj = {\n    one: {\n        two: html\\`\n<div\n            id=\"\\${bar}\">\n        </div>\\`,\n    }\n}\n    `,\n      output: `\nconst obj = {\n    one: {\n        two: html\\`\n            <div\n                id=\"\\${bar}\">\n            </div>\\`,\n    }\n}\n    `,\n      errors: wrongIndentErrors(3),\n    },\n    {\n      code: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n            <p>content</p>\n    \\`;\n  }\n}\n      `,\n      output: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      <p>content</p>\n    \\`;\n  }\n}\n      `,\n      options: [2],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n            <div>\n            content\n            <span></span>\n            </div>\n    \\`;\n  }\n}\n      `,\n      output: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      <div>\n        content\n        <span></span>\n      </div>\n    \\`;\n  }\n}\n      `,\n      options: [2],\n      errors: wrongIndentErrors(4),\n    },\n    {\n      code: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      <p>content</p>\n      \\${repeat([], item => html\\`\n<p>content</p>\n      \\`)}\n      \\${repeat(\n          [],\n          item => html\\`\n            <p>content</p>\n          \\`)}\n      \\${\n        repeat(\n            [],\n            item => html\\`\n              <p>content</p>\n            \\`)\n      }\n    \\`;\n  }\n}\n      `,\n      output: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      <p>content</p>\n      \\${repeat([], item => html\\`\n        <p>content</p>\n      \\`)}\n      \\${repeat(\n          [],\n          item => html\\`\n            <p>content</p>\n          \\`)}\n      \\${\n        repeat(\n            [],\n            item => html\\`\n              <p>content</p>\n            \\`)\n      }\n    \\`;\n  }\n}\n      `,\n      options: [2],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      \\${when(true, () => html\\`\n          <foo-bar\n          id=\"1\"\n          ></foo-bar>\n      \\`)}\n    \\`;\n  }\n}\n      `,\n      output: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      \\${when(true, () => html\\`\n        <foo-bar\n            id=\"1\"\n        ></foo-bar>\n      \\`)}\n    \\`;\n  }\n}\n      `,\n      options: [2, { Attribute: 2 }],\n      errors: wrongIndentErrors(3),\n    },\n    {\n      code: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      \\${when(true, () => html\\`\n        <foo-bar\n            .baz=\"\\${value => html\\`\n            <foo-baz\n                 bar></foo-baz>\n              \\`}\"></foo-bar>\n      \\`)}\n    \\`;\n  }\n}\n      `,\n      output: `\nclass Component extends LitElement {\n  render() {\n    return html\\`\n      \\${when(true, () => html\\`\n        <foo-bar\n            .baz=\"\\${value => html\\`\n              <foo-baz\n                  bar></foo-baz>\n              \\`}\"></foo-bar>\n      \\`)}\n    \\`;\n  }\n}\n      `,\n      options: [2, { Attribute: 2 }],\n      errors: wrongIndentErrors(2),\n    },\n    {\n      code: `\nclass Component extends LitElement {\n\\trender() {\n\\t\\treturn html\\`\n\\t\\t\\t<div>\n\\t\\t\\t\\t<span></span>\n\\t\\t\\t</div>\n\\t\\t\\t<span>\n\\t\\t\\t\\t<div></div>\n\\t\\t\\t</span>\n    \\`;\n  }\n}\n      `,\n      output: `\nclass Component extends LitElement {\n\\trender() {\n\\t\\treturn html\\`\n\\t\\t\\t<div>\n\\t\\t\\t\\t<span></span>\n\\t\\t\\t</div>\n\\t\\t\\t<span>\n\\t\\t\\t\\t\\t<div></div>\n\\t\\t\\t</span>\n    \\`;\n  }\n}\n      `,\n      options: [\"tab\", { Attribute: 2, tagChildrenIndent: { span: 2 } }],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nconst code = html\\`\n <div>\n     id=\"\\${bar}\">\n</div>\\`;\n    `,\n      output: `\nconst code = html\\`\n <div>\n     id=\"\\${bar}\">\n </div>\\`;\n    `,\n      options: [4, { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nconst code = html\\`\n <div>\n\\${child}\n </div>\\`;\n    `,\n      output: `\nconst code = html\\`\n <div>\n     \\${child}\n </div>\\`;\n    `,\n      options: [4, { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nconst code = html\\`\n                      <div\n                      id=\"\\${bar}\">\n                      </div>\\`;\n    `,\n      output: `\nconst code = html\\`\n                      <div\n                          id=\"\\${bar}\">\n                      </div>\\`;\n    `,\n      options: [4, { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `\nconst code = html\\`\n\\t\\t\\t<div\nid=\"\\${bar}\">\n\\t\\t\\t</div>\n<span></span>\\`;\n    `,\n      output: `\nconst code = html\\`\n\\t\\t\\t<div\n\\t\\t\\t\\tid=\"\\${bar}\">\n\\t\\t\\t</div>\n\\t\\t\\t<span></span>\\`;\n    `,\n      options: [\"tab\", { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(2),\n    },\n    {\n      code: `html\\`\n    <!-- \\${\\`\n    foo\n    bar\n    baz\n    \\`}\n    -->\n      \\``,\n      output: `html\\`\n    <!-- \\${\\`\n    foo\n    bar\n    baz\n        \\`}\n    -->\n      \\``,\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n\\${when(\ntrue,\n() => html\\`\n\\${when(\ntrue,\n() => html\\`\n<b>\n<div></div>\n</b>\n\\`)}\n\\`)}\n\\`;`,\n      output: `html\\`\n\\${when(\ntrue,\n() => html\\`\n\\${when(\ntrue,\n() => html\\`\n<b>\n  <div></div>\n</b>\n\\`)}\n\\`)}\n\\`;`,\n      options: [2, { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(1),\n    },\n    {\n      code: `html\\`\n<div>\n\\${when(\ntrue,\n() => html\\`\n\\${when(\ntrue,\n() => html\\`\n<b>\n<div></div>\n</b>\n\\`)}\n<div>\n <span></span>\n</div>\n\\`)}\n<span></span>\n</div>\n\\`;`,\n      output: `html\\`\n<div>\n  \\${when(\ntrue,\n() => html\\`\n\\${when(\ntrue,\n() => html\\`\n<b>\n  <div></div>\n</b>\n\\`)}\n<div>\n  <span></span>\n</div>\n\\`)}\n  <span></span>\n</div>\n\\`;`,\n      options: [2, { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(4),\n    },\n    {\n      code: `html\\`\n\\${when(\ntrue,\n() => html\\`\n<div\nclass=\"wrapper\"\n  id=\"main\"\n>\n  <p>text</p>\n</div>\n\\`)}\n\\`;`,\n      output: `html\\`\n\\${when(\ntrue,\n() => html\\`\n<div\n  class=\"wrapper\"\n  id=\"main\"\n>\n  <p>text</p>\n</div>\n\\`)}\n\\`;`,\n      options: [2, { templateIndentBase: \"first\" }],\n      errors: wrongIndentErrors(1),\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/lowercase.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/lowercase\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"lowercase\", rule, {\n  valid: [\n    {\n      code: \"<div></div>\",\n    },\n    {\n      code: \"<div id='foo'></div>\",\n    },\n    {\n      code: \"<script></script>\",\n    },\n    {\n      code: \"<style></style>\",\n    },\n    // svg\n    {\n      code: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 200\"></svg>`,\n    },\n    {\n      code: `<svg viewBox=\"0 0 220 150\" xmlns=\"http://www.w3.org/2000/svg\">\n      <rect x=\"0\" y=\"0\" width=\"100\" height=\"100\">\n        <animate\n          attributeType=\"XML\"\n          attributeName=\"y\"\n          from=\"0\"\n          to=\"50\"\n          dur=\"1s\"\n          repeatCount=\"5\" />\n      </rect>\n      <rect x=\"120\" y=\"0\" width=\"100\" height=\"100\">\n        <animate\n          attributeType=\"XML\"\n          attributeName=\"y\"\n          from=\"0\"\n          to=\"50\"\n          dur=\"1s\"\n          repeatCount=\"indefinite\" />\n      </rect>\n    </svg>`,\n    },\n    {\n      code: `<svg viewBox=\"0 0 100 100\">\n  <clipPath id=\"myClip\">\n    <circle cx=\"40\" cy=\"35\" r=\"35\" />\n  </clipPath>\n</svg>\n`,\n    },\n    {\n      code: `<!doctype html>`,\n    },\n    {\n      code: \"<div {{ID}}></div>\",\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n  ],\n  invalid: [\n    {\n      code: '<IMG src=\"img.png\">',\n      output: '<img src=\"img.png\">',\n      errors: [\n        {\n          message: \"'IMG' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: \"<Script></Script>\",\n      output: \"<script></script>\",\n      errors: [\n        {\n          message: \"'Script' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: \"<Style type='text/css'></Style>\",\n      output: \"<style type='text/css'></style>\",\n      errors: [\n        {\n          message: \"'Style' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: \"<sTyle type='text/css'></sTyle>\",\n      output: \"<style type='text/css'></style>\",\n      errors: [\n        {\n          message: \"'sTyle' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: \"<div ID='1'></div>\",\n      output: \"<div id='1'></div>\",\n      errors: [\n        {\n          message: \"'ID' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: `<svg xmlns=\"http://www.w3.org/2000/svg\" STYLE=\"\" viewBox=\"0 0 200 200\"></svg>`,\n      output: `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"\" viewBox=\"0 0 200 200\"></svg>`,\n      errors: [\n        {\n          message: \"'STYLE' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: `<SVG></SVG>`,\n      output: `<svg></svg>`,\n      errors: [\n        {\n          message: \"'SVG' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: `<!DOCTYPE html>`,\n      output: `<!doctype html>`,\n      errors: [\n        {\n          message: \"'!DOCTYPE' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: `<!doctype HTML>`,\n      output: `<!doctype html>`,\n      errors: [\n        {\n          message: \"'HTML' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: \"<div ID={{ID}}></div>\",\n      output: \"<div id={{ID}}></div>\",\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n      errors: [\n        {\n          message: \"'ID' is not in lowercase.\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] lowercase\", rule, {\n  valid: [\n    {\n      code: `html\\`<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"\" viewBox=\"0 0 200 200\"></svg>\\``,\n    },\n    {\n      code: `const code = /* html */\\`<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"\" viewBox=\"0 0 200 200\"></svg>\\``,\n    },\n    {\n      code: `\nconst KEY = 'id';\nconst code = /* html */\\`<div \\${KEY}></div>\\`\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<svg xmlns=\"http://www.w3.org/2000/svg\" STYLE=\"\" viewBox=\"0 0 200 200\"></svg>\\``,\n      output: `html\\`<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"\" viewBox=\"0 0 200 200\"></svg>\\``,\n      errors: [\n        {\n          message: \"'STYLE' is not in lowercase.\",\n        },\n      ],\n    },\n    {\n      code: `const code = /* html */\\`<svg xmlns=\"http://www.w3.org/2000/svg\" STYLE=\"\" viewBox=\"0 0 200 200\"></svg>\\``,\n      output: `const code = /* html */\\`<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"\" viewBox=\"0 0 200 200\"></svg>\\``,\n      errors: [\n        {\n          message: \"'STYLE' is not in lowercase.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/max-element-depth.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/max-element-depth\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"max-element-depth\", rule, {\n  valid: [\n    {\n      code: `<div> </div>`,\n    },\n    {\n      code: `<div><div></div></div>`,\n    },\n    {\n      code: `<div><div></div></div>`,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n    },\n    {\n      code: `\n<div><div></div></div>\n<div><div></div></div>\n`,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `<div><div><div></div></div></div>`,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 2, but found 3\",\n        },\n      ],\n    },\n    {\n      code: `\n<div><div></div></div>\n<div><div><div></div></div></div>\n<div><div></div></div>\n`,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 2, but found 3\",\n        },\n      ],\n    },\n    {\n      code: `\n<div><div></div></div>\n<div><div><div><script></script></div></div></div>\n<div><div><div><style></style></div></div></div>\n<div><div></div></div>\n  `,\n      options: [\n        {\n          max: 3,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 3, but found 4\",\n        },\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 3, but found 4\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] max-element-depth\", rule, {\n  valid: [\n    {\n      code: `html\\`<div> </div>\\``,\n    },\n    {\n      code: `html\\`<div><div></div></div>\\``,\n    },\n    {\n      code: `html\\`<div><div></div></div>\\``,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n    },\n    {\n      code: `html\\`\n    <div><div></div></div>\n    <div><div></div></div>\\`;\n    `,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n    },\n    {\n      code: `\n  html\\`\n  <div>\n      <div>\n          \\${html\\`<div></div>\\`}\n      </div>\n  </div>\\`\n          `,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div><div><div></div></div></div>\\``,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 2, but found 3\",\n        },\n      ],\n    },\n    {\n      code: `html\\`\n    <div><div></div></div>\n    <div><div><div></div></div></div>\n    <div><div></div></div>\\`;\n    `,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 2, but found 3\",\n        },\n      ],\n    },\n    {\n      code: `html\\`\n    <div><div></div></div>\n    <div><div><div><script></script></div></div></div>\n    <div><div><div><style></style></div></div></div>\n    <div><div></div></div>\\`\n      `,\n      options: [\n        {\n          max: 3,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 3, but found 4\",\n        },\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 3, but found 4\",\n        },\n      ],\n    },\n    {\n      code: `\n    html\\`\n<div>\n    <div>\n        \\${html\\`<div><div><div></div></div></div>\\`}\n    </div>\n</div>\\`\n            `,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 2, but found 3\",\n        },\n      ],\n    },\n    {\n      code: `\n      html\\`\n  <div>\n      <div>\n          \\${html\\`<div><div></div></div>\\`}\n          \\${html\\`<div><div><div></div></div></div>\\`}\n          \\${html\\`<div><div></div></div>\\`}\n      </div>\n  </div>\\`\n              `,\n      options: [\n        {\n          max: 2,\n        },\n      ],\n      errors: [\n        {\n          message:\n            \"Expected the depth of nested elements to be <= 2, but found 3\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-abstract-roles.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-abstract-roles\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-abstract-roles\", rule, {\n  valid: [\n    {\n      code: `<div role=\"any\"> </div>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<img role=\"command\">`,\n      errors: [\n        {\n          message: \"Unexpected use of an abstract role.\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-abstract-roles\", rule, {\n  valid: [\n    {\n      code: `html\\`<div role=\"any\"> </div>\\`;`,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<img role=\"command\">\\`;`,\n      errors: [\n        {\n          message: \"Unexpected use of an abstract role.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-accesskey-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-accesskey-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-accesskey-attrs\", rule, {\n  valid: [\n    {\n      code: `<div></div>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<div accesskey=\"h\"></div>`,\n      errors: [\n        {\n          message: \"Unexpected use of accesskey attribute.\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-accesskey-attrs\", rule, {\n  valid: [\n    {\n      code: `html\\`<div></div>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div accesskey=\"h\"></div>\\``,\n      errors: [\n        {\n          message: \"Unexpected use of accesskey attribute.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-aria-hidden-body.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-aria-hidden-body\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-aria-hidden-body\", rule, {\n  valid: [\n    {\n      code: `<div aria-hidden> </div>`,\n    },\n    {\n      code: `<body aria-hidden=\"false\"> </body>`,\n    },\n    {\n      code: `<body> </body>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<body aria-hidden> </body>`,\n      errors: [\n        {\n          message: \"Unexpected aria-hidden on body tag.\",\n        },\n      ],\n    },\n    {\n      code: `<body aria-hidden=\"true\"> </body>`,\n      errors: [\n        {\n          message: \"Unexpected aria-hidden on body tag.\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-aria-hidden-body\", rule, {\n  valid: [\n    {\n      code: `html\\`<div aria-hidden> </div>\\``,\n    },\n    {\n      code: `html\\`<body aria-hidden=\\${value}> </body>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<body aria-hidden=\"true\"> </body>\\``,\n      errors: [\n        {\n          message: \"Unexpected aria-hidden on body tag.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-aria-hidden-on-focusable.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-aria-hidden-on-focusable\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-aria-hidden-on-focusable\", rule, {\n  valid: [\n    {\n      code: `<div aria-hidden=\"true\"></div>`,\n    },\n    {\n      code: `<img aria-hidden=\"true\">`,\n    },\n    {\n      code: `<a aria-hidden=\"false\" href=\"#\"></a>`,\n    },\n    {\n      code: `<button aria-hidden=\"true\" tabindex=\"-1\"></button>`,\n    },\n    {\n      code: `<a href=\"/\"></a>`,\n    },\n    {\n      code: `<div aria-hidden=\"true\"><a href=\"#\"></a></div>`,\n    },\n    {\n      code: `<div aria-hidden=\"true\" contenteditable=\"false\"></div>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<div aria-hidden=\"true\" tabindex=\"0\"></div>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<input aria-hidden=\"true\">`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<a href=\"/\" aria-hidden=\"true\"></a>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<button aria-hidden=\"true\"></button>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<textarea aria-hidden=\"true\"></textarea>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<div aria-hidden=\"true\" contenteditable></div>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<div aria-hidden=\"true\" contenteditable=\"\"></div>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<div aria-hidden=\"true\" contenteditable=\"true\"></div>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<div aria-hidden=\"true\" contenteditable=\"plaintext-only\"></div>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `<summary aria-hidden=\"true\"></summary>`,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-aria-hidden-on-focusable\", rule, {\n  valid: [\n    {\n      code: `html\\`<div aria-hidden=\"true\"></div>\\``,\n    },\n    {\n      code: `html\\`<button aria-hidden=\"true\" tabindex=\"-1\"></button>\\``,\n    },\n    {\n      code: `html\\`<div aria-hidden=\"true\" contenteditable=\"false\"></div>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<button aria-hidden=\"true\"></button>\\``,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `html\\`<div aria-hidden=\"true\" contenteditable></div>\\``,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n    {\n      code: `html\\`<summary aria-hidden=\"true\"></summary>\\``,\n      errors: [\n        {\n          message: 'Unexpected aria-hidden=\"true\" on focusable element.',\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-duplicate-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-duplicate-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-duplicate-attrs\", rule, {\n  valid: [\n    {\n      code: `<div> </div>`,\n    },\n    {\n      code: `<div foo=\"foo\"> </div>`,\n    },\n    {\n      code: `<div foo=\"foo\" bar=\"bar\"> </div>`,\n    },\n    // https://github.com/yeonjuan/html-eslint/issues/110\n    {\n      code: `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n  stroke=\"currentColor\" stroke-width=\"2\" stroke-line-cap=\"round\" stroke-linejoin=\"round\"\n  class=\"feather feather-home\"\n  >\n\t<path d=\"M3 919\"></path>\n\t<polyline points=\"9 22\"></polyline>\n</svg>\n      `\n        .split(\"\\n\")\n        .join(\"\\r\\n\"),\n    },\n    {\n      code: `\n      <input\n    {{#aria_label}}aria-label=\"{{aria_label}}\"{{/aria_label}}\n    {{^aria_label}}aria-labelledby=\"pl-big-o-input-{{uuid}}-label\"{{/aria_label}}\n/>\n      `,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n  ],\n  invalid: [\n    {\n      code: `<div foo=\"foo1\" foo=\"foo2\"> </div>`,\n      errors: [\n        {\n          message: \"The attribute 'foo' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              data: {\n                attrName: \"foo\",\n              },\n              output: `<div foo=\"foo1\" > </div>`,\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: `<div foo foo> </div>`,\n      errors: [\n        {\n          message: \"The attribute 'foo' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              data: {\n                attrName: \"foo\",\n              },\n              output: `<div foo > </div>`,\n            },\n          ],\n        },\n      ],\n    },\n    // https://github.com/yeonjuan/html-eslint/issues/110\n    {\n      code: `\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n      class=\"feather feather-home\"\n      class=\"feather feather-home\"\n      >\n      <path d=\"M3 919\"></path>\n      <polyline points=\"9 22\"></polyline>\n    </svg>\n          `\n        .split(\"\\n\")\n        .join(\"\\r\\n\"),\n      errors: [\n        {\n          message: \"The attribute 'class' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              output: `\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n      class=\"feather feather-home\"\n      \n      >\n      <path d=\"M3 919\"></path>\n      <polyline points=\"9 22\"></polyline>\n    </svg>\n          `\n                .split(\"\\n\")\n                .join(\"\\r\\n\"),\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: `\n<div id=\"1\"\n     ID=\"1\"\n     Id=\"1\"\n ></div>\n      `,\n      errors: [\n        {\n          message: \"The attribute 'ID' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              output: `\n<div id=\"1\"\n     \n     Id=\"1\"\n ></div>\n      `,\n            },\n          ],\n        },\n        {\n          message: \"The attribute 'Id' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              output: `\n<div id=\"1\"\n     ID=\"1\"\n     \n ></div>\n      `,\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: `<div foo foo {{aa}} {{aa}}> </div>`,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n      errors: [\n        {\n          message: \"The attribute 'foo' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              data: {\n                attrName: \"foo\",\n              },\n              output: `<div foo  {{aa}} {{aa}}> </div>`,\n            },\n          ],\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-duplicate-attrs\", rule, {\n  valid: [\n    {\n      code: `html\\`<div> </div>\\``,\n    },\n    {\n      code: `html\\`<div foo=\"foo\"> </div>\\``,\n    },\n    {\n      code: `html\\`<div foo=\"foo\" bar=\"bar\"> </div>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div foo=\"\\${id1}\" foo=\"\\${id2}\"> </div>\\`;`,\n      errors: [\n        {\n          message: \"The attribute 'foo' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              output: `html\\`<div foo=\"\\${id1}\" > </div>\\`;`,\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: `html\\`<div foo foo> </div>\\`;`,\n      errors: [\n        {\n          message: \"The attribute 'foo' is duplicated.\",\n          suggestions: [\n            {\n              messageId: \"removeAttr\",\n              output: `html\\`<div foo > </div>\\`;`,\n            },\n          ],\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-duplicate-class.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-duplicate-class\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-duplicate-class\", rule, {\n  valid: [\n    {\n      code: `<button class></button>`,\n    },\n    {\n      code: `<button class=foo></button>`,\n    },\n    {\n      code: `<button class=\"foo\"></button>`,\n    },\n    {\n      code: `<button class=\"foo foofoo\"></button>`,\n    },\n    {\n      code: `<button id=\"foo foo\"></button>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<button class=\"foo foo\"></button>`,\n      output: `<button class=\"foo \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          column: 20,\n          endColumn: 23,\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo   foo\"></button>`,\n      output: `<button class=\"foo   \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          column: 22,\n          endColumn: 25,\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo bar foo\"></button>`,\n      output: `<button class=\"foo bar \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo foo bar\"></button>`,\n      output: `<button class=\"foo  bar\"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\" foo foo bar \"></button>`,\n      output: `<button class=\" foo  bar \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-duplicate class\", rule, {\n  valid: [\n    {\n      code: \"html`<div class='foo'></div>`\",\n    },\n    {\n      code: \"html`<div class=${' foo foo foo '}></div>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: `\n      html\\`<div class='foo foo'></div>\\`\n      `,\n      output: `\n      html\\`<div class='foo '></div>\\`\n      `,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          column: 28,\n          endColumn: 31,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-duplicate-id.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-duplicate-id\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-duplicate-id\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n  <div id = \"foo\"></div>\n  <div id = \"bar\"></div>\n</body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n<body>\n  <div id = \"foo\"></div>\n  <div id = \"foo\"></div>\n</body>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"duplicateId\",\n        },\n        {\n          message: \"The id 'foo' is duplicated.\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<body>\n  <div id = \"foo\"></div>\n  <a id = \"foo\"></div>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"duplicateId\",\n          line: 4,\n        },\n        {\n          messageId: \"duplicateId\",\n          line: 5,\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-duplicate-id\", rule, {\n  valid: [\n    {\n      code: `\nhtml\\`<html>\n<body>\n  <div id = \"foo\"></div>\n  <div id = \"bar\"></div>\n</body>\n</html>\\`\n`,\n    },\n    {\n      code: `const code = /* html */\\`<html>\n<body>\n  <div id = \"foo\"></div>\n  <div id = \"bar\"></div>\n</body>\n</html>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `\nhtml\\`<html>\n<body>\n  <div id = \"foo\"></div>\n  <a id = \"foo\"></div>\n</body>\n</html>\\`\n`,\n\n      errors: [\n        {\n          messageId: \"duplicateId\",\n          line: 4,\n        },\n        {\n          messageId: \"duplicateId\",\n          line: 5,\n        },\n      ],\n    },\n    {\n      code: `\nhtml\\`<html>\n<body>\n  <div id = \"\\${foo}\"></div>\n  <a id = \"\\${foo}\"></div>\n</body>\n</html>\\`\n`,\n\n      errors: [\n        {\n          messageId: \"duplicateId\",\n          line: 4,\n        },\n        {\n          messageId: \"duplicateId\",\n          line: 5,\n        },\n      ],\n    },\n    {\n      code: `\n/* html */\\`<html>\n<body>\n  <div id = \"\\${foo}\"></div>\n  <a id = \"\\${foo}\"></div>\n</body>\n</html>\\`\n`,\n\n      errors: [\n        {\n          messageId: \"duplicateId\",\n          line: 4,\n        },\n        {\n          messageId: \"duplicateId\",\n          line: 5,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-duplicate-in-head.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-duplicate-in-head\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-duplicate-in-head\", rule, {\n  valid: [\n    {\n      code: `\n        <html>\n          <head>\n            <title>Test</title>\n          </head>\n        </html>\n      `,\n    },\n    {\n      code: `\n        <html>\n          <head>\n            <title>Test</title>\n            <meta charset=\"utf-8\">\n            <meta name=\"viewport\" content=\"width=device-width\">\n            <link rel=\"canonical\" href=\"https://example.com\">\n            <base href=\"https://example.com\">\n          </head>\n        </html>\n      `,\n    },\n    {\n      code: `\n        <html>\n          <head>\n            <meta name=\"description\" content=\"Test\">\n            <meta name=\"keywords\" content=\"test\">\n          </head>\n        </html>\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n        <html>\n          <head>\n            <title>Test</title>\n            <title>Another Title</title>\n          </head>\n        </html>\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"title\" },\n        },\n      ],\n    },\n    {\n      code: `\n        <html>\n          <head>\n            <meta charset=\"utf-8\">\n            <meta charset=\"iso-8859-1\">\n          </head>\n        </html>\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"meta[charset]\" },\n        },\n      ],\n    },\n    {\n      code: `\n        <html>\n          <head>\n            <meta name=\"viewport\" content=\"width=device-width\">\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n          </head>\n        </html>\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"meta[name=viewport]\" },\n        },\n      ],\n    },\n    {\n      code: `\n        <html>\n          <head>\n            <link rel=\"canonical\" href=\"https://example.com\">\n            <link rel=\"canonical\" href=\"https://example.org\">\n          </head>\n        </html>\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"link[rel=canonical]\" },\n        },\n      ],\n    },\n    {\n      code: `\n        <html>\n          <head>\n            <base href=\"https://example.com\">\n            <base href=\"https://example.org\">\n          </head>\n        </html>\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"base\" },\n        },\n      ],\n    },\n  ],\n});\n\n// Template literal tests\ntemplateRuleTester.run(\"[template] no-duplicate-in-head\", rule, {\n  valid: [\n    {\n      code: `\n        const template = html\\`\n          <html>\n            <head>\n              <title>Test</title>\n            </head>\n          </html>\n        \\`;\n      `,\n    },\n    {\n      code: `\n        const template = /* html */\\`\n          <html>\n            <head>\n              <title>Test</title>\n            </head>\n          </html>\n        \\`;\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n        const template = html\\`\n          <html>\n            <head>\n              <title>Test</title>\n              <title>Another Title</title>\n            </head>\n          </html>\n        \\`;\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"title\" },\n        },\n      ],\n    },\n    {\n      code: `\n        const template = /* html */\\`\n          <html>\n            <head>\n              <title>Test</title>\n              <title>Another Title</title>\n            </head>\n          </html>\n        \\`;\n      `,\n      errors: [\n        {\n          messageId: \"duplicateTag\",\n          data: { tag: \"title\" },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-empty-headings.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-empty-headings\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-empty-headings\", rule, {\n  valid: [\n    { code: \"<h1>Heading Content</h1>\" },\n    { code: \"<h2><span>Text</span></h2>\" },\n    { code: '<div role=\"heading\" aria-level=\"1\">Heading Content</div>' },\n    { code: '<h3 aria-hidden=\"true\">Heading Content</h3>' },\n    { code: \"<h4 hidden>Heading Content</h4>\" },\n    { code: '<h2><span aria-hidden=\"true\"></span>Visible</h2>' },\n    {\n      code: '<h2><span aria-hidden=\"true\">Hidden</span><span>Visible</span></h2>',\n    },\n    {\n      code: `<h1><img src=\"./img.svg\" alt=\"Images description\" /></h1>`,\n    },\n  ],\n  invalid: [\n    {\n      code: \"<h1></h1>\",\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: \"<h1> <span></span> </h1>\",\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: \"<h1><!-- comment --></h1>\",\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: '<div role=\"heading\" aria-level=\"1\"></div>',\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: '<h2><span aria-hidden=\"true\">Inaccessible text</span></h2>',\n      errors: [{ messageId: \"inaccessibleHeading\" }],\n    },\n    {\n      code: \"<h3>   </h3>\",\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: '<h4><span aria-hidden=\"true\"></span></h4>',\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: `<h4>\n</h4>`,\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: `<h4><img src=\"./image.svg\" /></h4>`,\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-empty-headings\", rule, {\n  valid: [\n    { code: \"html`<h1>Heading Content</h1>`\" },\n    { code: \"html`<h1>${foo}</h1>`\" },\n    { code: \"html`<h2><span>Text</span></h2>`\" },\n    { code: 'html`<div role=\"heading\" aria-level=\"1\">Heading Content</div>`' },\n    { code: 'html`<h3 aria-hidden=\"true\">Heading Content</h3>`' },\n    { code: \"html`<h4 hidden>Heading Content</h4>`\" },\n    { code: 'html`<h2><span aria-hidden=\"true\"></span>Visible</h2>`' },\n    {\n      code: 'html`<h2><span aria-hidden=\"true\">Hidden</span><span>Visible</span></h2>`',\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<h1></h1>`\",\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: 'html`<div role=\"heading\" aria-level=\"1\"></div>`',\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: 'html`<h2><span aria-hidden=\"true\">Inaccessible text</span></h2>`',\n      errors: [{ messageId: \"inaccessibleHeading\" }],\n    },\n    {\n      code: \"html`<h3>   </h3>`\",\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n    {\n      code: 'html`<h4><span aria-hidden=\"true\"></span></h4>`',\n      errors: [{ messageId: \"emptyHeading\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-extra-spacing-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-extra-spacing-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-extra-spacing-attrs\", rule, {\n  valid: [\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo = \"foo\" bar  =  \"bar\" class\\t=\\t\"baz\"></div>\n    </body>\n    </html>\n    `,\n    },\n    {\n      code: '<div foo=\"foo\"\\r\\nbar=\"bar\"></div>',\n    },\n    {\n      code: `\n  <html>\n<head>\n</head>\n<body>\n  <img src=\"\"/>\n</body>\n</html>`,\n    },\n    {\n      code: `\n  <html>\n<head>\n</head>\n<body>\n  <svg>\n      <circle cx=\"1\"/>\n  </svg>\n</body>\n</html>`,\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"\n         bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div\n        foo=\"foo\"\n         bar=\"bar\"\n         ></div>\n    </body>\n    </html>\n    `,\n    },\n    // https://github.com/yeonjuan/html-eslint/issues/137\n    {\n      code: \"<a target=”_blank” a b c d e f></a>\",\n    },\n    {\n      code: \"<img />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img\\n/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png' />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'\\n/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: false,\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png'alt='foo'/>`,\n    },\n    {\n      code: `<img src='foo.png'alt='foo'/>`,\n      options: [\n        {\n          disallowMissing: false,\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowMissing: true,\n        },\n      ],\n    },\n    {\n      code: `\n\\t<div>\n\\t\\t<img src=\"foo\" />\n\\t\\t<div foo=\"bar\"></div>\n\\t</div>\n`,\n      options: [\n        {\n          disallowMissing: true,\n          disallowTabs: true,\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"  bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"  bar=\"bar\"  baz=\"baz\"></div>\n    </body>\n    </html>\n    `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\" baz=\"baz\"></div>\n    </body>\n    </html>\n    `,\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"  bar=\"bar\" baz=\"baz\"  ></div>\n    </body>\n    </html>\n        `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\" baz=\"baz\"></div>\n    </body>\n    </html>\n        `,\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div       foo=\"foo\"  bar=\"bar\" baz=\"baz\"  ></div>\n    </body>\n    </html>\n            `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\" baz=\"baz\"></div>\n    </body>\n    </html>\n            `,\n      errors: [\n        {\n          messageId: \"unexpectedBefore\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<head>\n</head>\n<body>\n<img src=\"\" />\n</body>\n</html>`,\n      output: `\n<html>\n<head>\n</head>\n<body>\n<img src=\"\"/>\n</body>\n</html>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<head>\n</head>\n<body>\n<svg>\n<circle cx=\"1\" />\n</svg>\n</body>\n</html>`,\n      output: `\n<html>\n<head>\n</head>\n<body>\n<svg>\n<circle cx=\"1\"/>\n</svg>\n</body>\n</html>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png' />\",\n      output: \"<img src='foo.png'/>\",\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: \"<a target=”_blank”  a b c d e f></a>\",\n      output: \"<a target=”_blank” a b c d e f></a>\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'  />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      output: \"<img src='foo.png' />\",\n      errors: [\n        {\n          messageId: \"unexpectedBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      output: \"<img src='foo.png' />\",\n      errors: [\n        {\n          messageId: \"missingBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img/>\",\n      output: \"<img />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"missingBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img  />\",\n      output: \"<img />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png' />\",\n      output: \"<img src='foo.png'/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: false,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png'alt='foo'/>`,\n      output: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowMissing: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"missingBefore\",\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png'\\talt='foo'/>`,\n      output: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowTabs: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBetween\",\n        },\n      ],\n    },\n    {\n      code: `<img\\tsrc='foo.png' alt='foo'/>`,\n      output: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowTabs: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n      ],\n    },\n    {\n      code: `<img\\t/>`,\n      output: `<img />`,\n      options: [\n        {\n          disallowTabs: true,\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: `<div ></div>`,\n      output: `<div></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedBeforeClose\",\n        },\n      ],\n    },\n    {\n      code: `<div foo=\"bar\" ></div>`,\n      output: `<div foo=\"bar\"></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `<div\\t></div>`,\n      output: `<div></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedBeforeClose\",\n        },\n      ],\n    },\n    {\n      code: `<div foo=\"bar\"\\t></div>`,\n      output: `<div foo=\"bar\"></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n\\t<div>\n\\t\\t<img\\tsrc=\"foo\"\\t/>\n\\t\\t<div\\tfoo=\"bar\"\\tbar=\"baz\"\\t></div>\n\\t</div>\n`,\n      output: `\n\\t<div>\n\\t\\t<img src=\"foo\" />\n\\t\\t<div foo=\"bar\" bar=\"baz\"></div>\n\\t</div>\n`,\n      options: [\n        {\n          disallowMissing: true,\n          disallowTabs: true,\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n        {\n          messageId: \"unexpectedTabBeforeSelfClose\",\n        },\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n        {\n          messageId: \"unexpectedTabBetween\",\n        },\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n\n    {\n      code: `\n\\t<div   class\\t=   \"foo\"\\t\\tdata-custom\\t\\tid\\t\\t=\\t\\t\"boo\">\n\\t\\t<img\\tsrc   =\\t\"foo\"\\talt= \"name\"/>\n\\t</div>\n`,\n      output: `\n\\t<div class=\"foo\" data-custom id=\"boo\">\n\\t\\t<img src=\"foo\" alt=\"name\"/>\n\\t</div>\n`,\n      options: [\n        {\n          disallowInAssignment: true,\n          disallowTabs: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedBefore\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n        {\n          messageId: \"unexpectedTabBetween\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-extra-spacing-attrs\", rule, {\n  valid: [],\n  invalid: [\n    {\n      code: \"html`<div foo='foo'  bar='baz'> </div>`\",\n      output: \"html`<div foo='foo' bar='baz'> </div>`\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: \"html`<div ${foo}  ${bar}> </div>`\",\n      output: \"html`<div ${foo} ${bar}> </div>`\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: 'html`<div foo=\"${bar}\" > </div>`',\n      output: 'html`<div foo=\"${bar}\"> </div>`',\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: \"html`<div ${foo}  ${'foo'}> </div>`\",\n      output: \"html`<div ${foo} ${'foo'}> </div>`\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-extra-spacing-tags.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-extra-spacing-tags\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-extra-spacing-tags\", rule, {\n  valid: [\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo = \"foo\" bar  =  \"bar\" class\\t=\\t\"baz\"></div>\n    </body>\n    </html>\n    `,\n    },\n    {\n      code: '<div foo=\"foo\"\\r\\nbar=\"bar\"></div>',\n    },\n    {\n      code: `\n  <html>\n<head>\n</head>\n<body>\n  <img src=\"\"/>\n</body>\n</html>`,\n    },\n    {\n      code: `\n  <html>\n<head>\n</head>\n<body>\n  <svg>\n      <circle cx=\"1\"/>\n  </svg>\n</body>\n</html>`,\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"\n         bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div\n        foo=\"foo\"\n         bar=\"bar\"\n         ></div>\n    </body>\n    </html>\n    `,\n    },\n    // https://github.com/yeonjuan/html-eslint/issues/137\n    {\n      code: \"<a target=”_blank” a b c d e f></a>\",\n    },\n    {\n      code: \"<img />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img\\n/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png' />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'\\n/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: false,\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png'alt='foo'/>`,\n    },\n    {\n      code: `<img src='foo.png'alt='foo'/>`,\n      options: [\n        {\n          disallowMissing: false,\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowMissing: true,\n        },\n      ],\n    },\n    {\n      code: `\n\\t<div>\n\\t\\t<img src=\"foo\" />\n\\t\\t<div foo=\"bar\"></div>\n\\t</div>\n`,\n      options: [\n        {\n          disallowMissing: true,\n          disallowTabs: true,\n          enforceBeforeSelfClose: true,\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"  bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\"></div>\n    </body>\n    </html>\n    `,\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"  bar=\"bar\"  baz=\"baz\"></div>\n    </body>\n    </html>\n    `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\" baz=\"baz\"></div>\n    </body>\n    </html>\n    `,\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div foo=\"foo\"  bar=\"bar\" baz=\"baz\"  ></div>\n    </body>\n    </html>\n        `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\" baz=\"baz\"></div>\n    </body>\n    </html>\n        `,\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n    <html>\n    <body>\n    <div       foo=\"foo\"  bar=\"bar\" baz=\"baz\"  ></div>\n    </body>\n    </html>\n            `,\n      output: `\n    <html>\n    <body>\n    <div foo=\"foo\" bar=\"bar\" baz=\"baz\"></div>\n    </body>\n    </html>\n            `,\n      errors: [\n        {\n          messageId: \"unexpectedBefore\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<head>\n</head>\n<body>\n<img src=\"\" />\n</body>\n</html>`,\n      output: `\n<html>\n<head>\n</head>\n<body>\n<img src=\"\"/>\n</body>\n</html>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<head>\n</head>\n<body>\n<svg>\n<circle cx=\"1\" />\n</svg>\n</body>\n</html>`,\n      output: `\n<html>\n<head>\n</head>\n<body>\n<svg>\n<circle cx=\"1\"/>\n</svg>\n</body>\n</html>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png' />\",\n      output: \"<img src='foo.png'/>\",\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: \"<a target=”_blank”  a b c d e f></a>\",\n      output: \"<a target=”_blank” a b c d e f></a>\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'  />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      output: \"<img src='foo.png' />\",\n      errors: [\n        {\n          messageId: \"unexpectedBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png'/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      output: \"<img src='foo.png' />\",\n      errors: [\n        {\n          messageId: \"missingBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img/>\",\n      output: \"<img />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"missingBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img  />\",\n      output: \"<img />\",\n      options: [\n        {\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: \"<img src='foo.png' />\",\n      output: \"<img src='foo.png'/>\",\n      options: [\n        {\n          enforceBeforeSelfClose: false,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png'alt='foo'/>`,\n      output: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowMissing: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"missingBefore\",\n        },\n      ],\n    },\n    {\n      code: `<img src='foo.png'\\talt='foo'/>`,\n      output: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowTabs: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBetween\",\n        },\n      ],\n    },\n    {\n      code: `<img\\tsrc='foo.png' alt='foo'/>`,\n      output: `<img src='foo.png' alt='foo'/>`,\n      options: [\n        {\n          disallowTabs: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n      ],\n    },\n    {\n      code: `<img\\t/>`,\n      output: `<img />`,\n      options: [\n        {\n          disallowTabs: true,\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBeforeSelfClose\",\n        },\n      ],\n    },\n    {\n      code: `<div ></div>`,\n      output: `<div></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedBeforeClose\",\n        },\n      ],\n    },\n    {\n      code: `<div foo=\"bar\" ></div>`,\n      output: `<div foo=\"bar\"></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `<div\\t></div>`,\n      output: `<div></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedBeforeClose\",\n        },\n      ],\n    },\n    {\n      code: `<div foo=\"bar\"\\t></div>`,\n      output: `<div foo=\"bar\"></div>`,\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: `\n\\t<div>\n\\t\\t<img\\tsrc=\"foo\"\\t/>\n\\t\\t<div\\tfoo=\"bar\"\\tbar=\"baz\"\\t></div>\n\\t</div>\n`,\n      output: `\n\\t<div>\n\\t\\t<img src=\"foo\" />\n\\t\\t<div foo=\"bar\" bar=\"baz\"></div>\n\\t</div>\n`,\n      options: [\n        {\n          disallowMissing: true,\n          disallowTabs: true,\n          enforceBeforeSelfClose: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n        {\n          messageId: \"unexpectedTabBeforeSelfClose\",\n        },\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n        {\n          messageId: \"unexpectedTabBetween\",\n        },\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n\n    {\n      code: `\n\\t<div   class\\t=   \"foo\"\\t\\tdata-custom\\t\\tid\\t\\t=\\t\\t\"boo\">\n\\t\\t<img\\tsrc   =\\t\"foo\"\\talt= \"name\"/>\n\\t</div>\n`,\n      output: `\n\\t<div class=\"foo\" data-custom id=\"boo\">\n\\t\\t<img src=\"foo\" alt=\"name\"/>\n\\t</div>\n`,\n      options: [\n        {\n          disallowInAssignment: true,\n          disallowTabs: true,\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpectedBefore\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedBetween\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n        {\n          messageId: \"unexpectedTabBefore\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n        {\n          messageId: \"unexpectedTabBetween\",\n        },\n        {\n          messageId: \"unexpectedInAssignment\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-extra-spacing-tags\", rule, {\n  valid: [],\n  invalid: [\n    {\n      code: \"html`<div foo='foo'  bar='baz'> </div>`\",\n      output: \"html`<div foo='foo' bar='baz'> </div>`\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: \"html`<div ${foo}  ${bar}> </div>`\",\n      output: \"html`<div ${foo} ${bar}> </div>`\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n    {\n      code: 'html`<div foo=\"${bar}\" > </div>`',\n      output: 'html`<div foo=\"${bar}\"> </div>`',\n      errors: [\n        {\n          messageId: \"unexpectedAfter\",\n        },\n      ],\n    },\n    {\n      code: \"html`<div ${foo}  ${'foo'}> </div>`\",\n      output: \"html`<div ${foo} ${'foo'}> </div>`\",\n      errors: [\n        {\n          messageId: \"unexpectedBetween\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-extra-spacing-text.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-extra-spacing-text\");\n\n/**\n * @param {...number[]} positions\n * @returns\n */\nfunction errorsAt(...positions) {\n  return positions.map((input) => {\n    const [line, column, length] = input;\n    if (input.length === 3) {\n      return {\n        messageId: `unexpected`,\n        line,\n        column,\n        endLine: line,\n        endColumn: column + length,\n      };\n    } else {\n      const [line, column, endLine, endColumn] = input;\n      return {\n        messageId: `unexpected`,\n        line,\n        column,\n        endLine,\n        endColumn,\n      };\n    }\n  });\n}\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-extra-spacing-text\", rule, {\n  valid: [\n    {\n      code: `<div> foo </div>`,\n    },\n    {\n      code: `<div> foo bar </div>`,\n    },\n\n    {\n      code: `\n\\t  <div>\n    \\t  <div>\n      foo\n          bar\n    \\t\\t  </div>\n\\t  </div>\n`,\n    },\n\n    {\n      code: `<pre>   foo\\t\\t\\tbar   </pre><script>   const   foo   =   'bar'   </script><style>   .foo   {   bar   }   </style>`,\n      options: [\n        {\n          skip: [`pre`],\n        },\n      ],\n    },\n\n    {\n      code: `\n<div   foo   =   \"bar\">\n  Only short whitespace here.\n\n  <pre>    Any    kind    of   whitespace    here!    </pre>\n</div>\n`,\n      options: [\n        {\n          skip: [`pre`],\n        },\n      ],\n    },\n  ],\n\n  invalid: [\n    {\n      code: `foo   bar   `,\n      output: `foo bar `,\n      errors: errorsAt([1, 4, 3], [1, 10, 3]),\n    },\n\n    {\n      code: `<div>\\tfoo\t\\t</div>`,\n      output: `<div> foo </div>`,\n      errors: errorsAt([1, 6, 1], [1, 10, 2]),\n    },\n\n    {\n      code: `<div>  foo   </div>`,\n      output: `<div> foo </div>`,\n      errors: errorsAt([1, 6, 2], [1, 11, 3]),\n    },\n\n    {\n      code: `<div>foo \\n</div>`,\n      output: `<div>foo\\n</div>`,\n      errors: errorsAt([1, 9, 2, 1]),\n    },\n\n    {\n      code: `<div>foo\\t\\n</div>`,\n      output: `<div>foo\\n</div>`,\n      errors: errorsAt([1, 9, 2, 1]),\n    },\n\n    {\n      code: `<div>\\n\\tfoo \\n</div> \\n<div>\\n\\tbar\\t\\n</div>`,\n      output: `<div>\\n\\tfoo\\n</div>\\n<div>\\n\\tbar\\n</div>`,\n      errors: errorsAt([2, 5, 3, 1], [3, 7, 4, 1], [5, 5, 6, 1]),\n    },\n\n    {\n      code: `\n    <div>\t\\t\\tfoo\t\\t\\t</div>\n`,\n      output: `\n    <div> foo </div>\n`,\n      errors: errorsAt([2, 10, 3], [2, 16, 3]),\n    },\n\n    {\n      code: `\n<div>\n  foo     bar     \n</div>\n`,\n      output: `\n<div>\n  foo bar\n</div>\n`,\n      errors: errorsAt([3, 6, 5], [3, 14, 4, 1]),\n    },\n\n    {\n      code: `\\n\\n    <div>   <a>   <!--   foo   bar   -->   </a>   </div>\\n\\n`,\n      output: `\\n\\n    <div> <a> <!-- foo bar --> </a> </div>\\n\\n`,\n      errors: errorsAt(\n        [3, 10, 3],\n        [3, 16, 3],\n        [3, 23, 3],\n        [3, 29, 3],\n        [3, 35, 3],\n        [3, 41, 3],\n        [3, 48, 3]\n      ),\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-extra-spacing-text\", rule, {\n  valid: [\n    {\n      code: \"html`<div> foo </div>`\",\n    },\n    {\n      code: `html\\`\n\\t  <div>\n    \\t  <div>\n      foo\n          bar\n    \\t\\t  </div>\n\\t  </div>\\`\n`,\n    },\n    {\n      code: `\nhtml\\`<div>\n      \\${items => {    }}\n</div>\\`\n      `,\n    },\n    {\n      code: `\nhtml\\`<div>\n      \\${items => { \n        var foo;    var bar;   \n        \n        }}\n</div>\\`\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<div>foo\\t\\n</div>`\",\n      output: \"html`<div>foo\\n</div>`\",\n      errors: errorsAt([1, 14, 2, 1]),\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-heading-inside-button.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-heading-inside-button\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-heading-inside-button\", rule, {\n  valid: [\n    {\n      code: `<button>click</button>`,\n    },\n    {\n      code: `<button><span>click</span></button>`,\n    },\n    {\n      code: `<div><h1>title</h1></div>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<button><h1>title</h1></button>`,\n\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<button><h6>title</h6></button>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<button><span><h1>title</h1></span></button>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-heading-inside-button\", rule, {\n  valid: [\n    {\n      code: `html\\`<button>click</button>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<button><h1>click</h1></button>\\``,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-ineffective-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-ineffective-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-ineffective-attrs\", rule, {\n  valid: [\n    // Valid input types for multiple attribute\n    {\n      code: '<input type=\"email\" multiple>',\n    },\n    {\n      code: '<input type=\"file\" multiple>',\n    },\n    {\n      code: \"<select multiple></select>\",\n    },\n\n    // Valid file input with accept\n    {\n      code: '<input type=\"file\" accept=\".jpg,.png\">',\n    },\n\n    // Valid text input with readonly\n    {\n      code: '<input type=\"text\" readonly>',\n    },\n\n    // Valid password input with readonly\n    {\n      code: '<input type=\"password\" readonly>',\n    },\n\n    // Valid script with src and defer\n    {\n      code: '<script src=\"script.js\" defer></script>',\n    },\n\n    // Valid script with src and async\n    {\n      code: '<script src=\"script.js\" async></script>',\n    },\n\n    // Valid anchor with href and download\n    {\n      code: '<a href=\"file.pdf\" download>Download</a>',\n    },\n\n    // Valid audio with controls and controlslist\n    {\n      code: '<audio controls controlslist=\"nodownload\"></audio>',\n    },\n\n    // Valid video with controls and controlslist\n    {\n      code: '<video controls controlslist=\"nofullscreen\"></video>',\n    },\n  ],\n  invalid: [\n    // Invalid multiple on text input\n    {\n      code: '<input type=\"text\" multiple>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid multiple on checkbox\n    {\n      code: '<input type=\"checkbox\" multiple>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid accept on non-file input\n    {\n      code: '<input type=\"text\" accept=\".jpg\">',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"accept\" attribute has no effect unless input type is \"file\".',\n          },\n        },\n      ],\n    },\n    // Invalid defer on inline script\n    {\n      code: \"<script defer></script>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"defer\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n    // Invalid async on inline script\n    {\n      code: \"<script async></script>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"async\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n    // Invalid download without href\n    {\n      code: \"<a download>Download</a>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    // Invalid controlslist on audio without controls\n    {\n      code: '<audio controlslist=\"nodownload\"></audio>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    // Invalid controlslist on video without controls\n    {\n      code: '<video controlslist=\"nofullscreen\"></video>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on checkbox input\n    {\n      code: '<input type=\"checkbox\" readonly>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on radio input\n    {\n      code: '<input type=\"radio\" readonly>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on file input\n    {\n      code: '<input type=\"file\" readonly>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on range input\n    {\n      code: '<input type=\"range\" readonly>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on color input\n    {\n      code: '<input type=\"color\" readonly>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-ineffective-attrs\", rule, {\n  valid: [\n    // Valid input types for multiple attribute\n    {\n      code: `html\\`<input type=\"email\" multiple>\\``,\n    },\n    {\n      code: `html\\`<input type=\"file\" multiple>\\``,\n    },\n    {\n      code: `html\\`<select multiple></select>\\``,\n    },\n\n    // Valid file input with accept\n    {\n      code: `html\\`<input type=\"file\" accept=\".jpg,.png\">\\``,\n    },\n    {\n      code: `html\\`<input type=\"\\${type}\" accept=\".jpg,.png\">\\``,\n    },\n\n    // Valid text input with readonly\n    {\n      code: `html\\`<input type=\"text\" readonly>\\``,\n    },\n    {\n      code: `html\\`<input type=\"\\${type}\" readonly>\\``,\n    },\n\n    // Valid password input with readonly\n    {\n      code: `html\\`<input type=\"password\" readonly>\\``,\n    },\n\n    // Valid script with src and defer\n    {\n      code: `html\\`<script src=\"script.js\" defer></script>\\``,\n    },\n\n    // Valid script with src and async\n    {\n      code: `html\\`<script src=\"script.js\" async></script>\\``,\n    },\n\n    // Valid anchor with href and download\n    {\n      code: `html\\`<a href=\"file.pdf\" download>Download</a>\\``,\n    },\n\n    // Valid audio with controls and controlslist\n    {\n      code: `html\\`<audio controls controlslist=\"nodownload\"></audio>\\``,\n    },\n\n    // Valid video with controls and controlslist\n    {\n      code: `html\\`<video controls controlslist=\"nofullscreen\"></video>\\``,\n    },\n  ],\n  invalid: [\n    // Invalid multiple on text input\n    {\n      code: 'html`<input type=\"text\" multiple>`',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid multiple on checkbox\n    {\n      code: `html\\`<input type=\"checkbox\" multiple>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid accept on non-file input\n    {\n      code: `html\\`<input type=\"text\" accept=\".jpg\">\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"accept\" attribute has no effect unless input type is \"file\".',\n          },\n        },\n      ],\n    },\n    // Invalid defer on inline script\n    {\n      code: `html\\`<script defer></script>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"defer\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n    // Invalid async on inline script\n    {\n      code: `html\\`<script async></script>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"async\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n    // Invalid download without href\n    {\n      code: `html\\`<a download>Download</a>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    // Invalid controlslist on audio without controls\n    {\n      code: `html\\`<audio controlslist=\"nodownload\"></audio>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    // Invalid controlslist on video without controls\n    {\n      code: `html\\`<video controlslist=\"nofullscreen\"></video>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on checkbox input\n    {\n      code: `html\\`<input type=\"checkbox\" readonly>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on radio input\n    {\n      code: `html\\`<input type=\"radio\" readonly>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on file input\n    {\n      code: `html\\`<input type=\"file\" readonly>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on range input\n    {\n      code: `html\\`<input type=\"range\" readonly>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid readonly on color input\n    {\n      code: `html\\`<input type=\"color\" readonly>\\``,\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-inline-styles.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-inline-styles\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-inline-styles\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n<div> </div>\n</body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n<body>\n<div style=\"color:#ff0a00\"> </div>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"unexpectedInlineStyle\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-inline-styles\", rule, {\n  valid: [\n    {\n      code: `\nhtml\\`<div></div>\\`\n      `,\n    },\n    {\n      code: `\nnohtml\\`<div style=\"color:#fff\"></div>\\`\n      `,\n    },\n    {\n      code: `\nconst html = \\`<div style=\"color:#fff\"></div>\\`\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `\nhtml\\`<div style=\"color:#fff\"></div>\\`\n      `,\n      errors: [\n        {\n          messageId: \"unexpectedInlineStyle\",\n          line: 2,\n          column: 11,\n          endLine: 2,\n          endColumn: 29,\n        },\n      ],\n    },\n    {\n      code: `\nconst style = \"color:#fff\";\nhtml\\`<div style=\"\\${style}\"></div>\\`;\n      `,\n      errors: [\n        {\n          messageId: \"unexpectedInlineStyle\",\n          line: 3,\n          column: 11,\n          endLine: 3,\n          endColumn: 27,\n        },\n      ],\n    },\n    {\n      code: `\nconst html = /* html */\\`<div style=\"color:#fff\"></div>\\`\n      `,\n      errors: [\n        {\n          messageId: \"unexpectedInlineStyle\",\n          line: 2,\n          column: 30,\n          endLine: 2,\n          endColumn: 48,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-invalid-attr-value.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-invalid-attr-value\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-invalid-attr-value\", rule, {\n  valid: [\n    { code: '<input type=\"text\" />' },\n    { code: '<input type=\"email\" />' },\n    { code: '<input type=\"number\" />' },\n    { code: '<input type=\"password\" />' },\n    { code: '<input type=\"checkbox\" />' },\n    { code: '<input type=\"radio\" />' },\n    { code: '<input type=\"file\" />' },\n    { code: '<input type=\"hidden\" />' },\n    { code: '<input type=\"submit\" />' },\n    { code: '<input type=\"button\" />' },\n    { code: '<input type=\"reset\" />' },\n    { code: '<input type=\"date\" />' },\n    { code: '<input type=\"time\" />' },\n    { code: '<input type=\"url\" />' },\n    { code: '<input type=\"tel\" />' },\n    { code: '<input type=\"search\" />' },\n    { code: '<input type=\"color\" />' },\n    { code: '<input type=\"range\" />' },\n    { code: '<a href=\"#\" target=\"_blank\">Link</a>' },\n    { code: '<a href=\"#\" target=\"_self\">Link</a>' },\n    { code: '<a href=\"#\" target=\"_parent\">Link</a>' },\n    { code: '<a href=\"#\" target=\"_top\">Link</a>' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"anonymous\" />' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"use-credentials\" />' },\n    { code: '<script src=\"script.js\" crossorigin=\"anonymous\"></script>' },\n    { code: '<button type=\"button\">Click</button>' },\n    { code: '<button type=\"submit\">Submit</button>' },\n    { code: '<button type=\"reset\">Reset</button>' },\n    { code: '<form method=\"get\"></form>' },\n    { code: '<form method=\"post\"></form>' },\n    { code: '<form method=\"dialog\"></form>' },\n    { code: '<form enctype=\"application/x-www-form-urlencoded\"></form>' },\n    { code: '<form enctype=\"multipart/form-data\"></form>' },\n    { code: '<form enctype=\"text/plain\"></form>' },\n    { code: '<th scope=\"row\">Header</th>' },\n    { code: '<th scope=\"col\">Header</th>' },\n    { code: '<th scope=\"rowgroup\">Header</th>' },\n    { code: '<th scope=\"colgroup\">Header</th>' },\n    { code: '<input type=\"text\" autocomplete=\"name\" />' },\n    { code: '<input type=\"email\" autocomplete=\"email\" />' },\n    { code: '<input type=\"text\" autocomplete=\"username\" />' },\n    { code: '<input type=\"password\" autocomplete=\"current-password\" />' },\n    { code: '<input type=\"password\" autocomplete=\"new-password\" />' },\n    { code: '<input type=\"text\" autocomplete=\"off\" />' },\n    { code: '<input type=\"text\" autocomplete=\"on\" />' },\n    { code: '<input type=\"tel\" autocomplete=\"tel\" />' },\n    { code: '<input type=\"url\" autocomplete=\"url\" />' },\n    { code: '<input type=\"text\" autocomplete=\"organization\" />' },\n    { code: '<input type=\"text\" autocomplete=\"street-address\" />' },\n    { code: '<input type=\"text\" autocomplete=\"address-line1\" />' },\n    { code: '<input type=\"text\" autocomplete=\"address-line2\" />' },\n    { code: '<input type=\"text\" autocomplete=\"postal-code\" />' },\n    { code: '<input type=\"text\" autocomplete=\"country\" />' },\n    { code: '<input type=\"text\" autocomplete=\"cc-name\" />' },\n    { code: '<input type=\"text\" autocomplete=\"cc-number\" />' },\n    { code: '<input type=\"text\" autocomplete=\"cc-exp\" />' },\n    { code: '<input type=\"text\" autocomplete=\"cc-csc\" />' },\n    { code: '<link rel=\"stylesheet\" href=\"style.css\" />' },\n    { code: '<a href=\"page.html\" rel=\"noopener\">Link</a>' },\n    { code: '<a href=\"page.html\" rel=\"noreferrer\">Link</a>' },\n    { code: '<a href=\"page.html\" rel=\"nofollow\">Link</a>' },\n    { code: '<link rel=\"icon\" href=\"favicon.ico\" />' },\n    { code: '<link rel=\"preload\" href=\"font.woff2\" />' },\n    { code: '<div dir=\"ltr\">Text</div>' },\n    { code: '<div dir=\"rtl\">Text</div>' },\n    { code: '<div dir=\"auto\">Text</div>' },\n    { code: '<img src=\"image.jpg\" loading=\"lazy\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"eager\" />' },\n    { code: '<img src=\"image.jpg\" width=\"100\" />' },\n    { code: '<img src=\"image.jpg\" height=\"200\" />' },\n    { code: '<img src=\"image.jpg\" width=\"100\" height=\"200\" />' },\n    { code: '<img src=\"image.jpg\" width=\"0\" height=\"0\" />' },\n    { code: '<input type=\"email\" multiple />' },\n    { code: '<a href=\"#\" target=\"_blank\" rel=\"noopener\">Link</a>' },\n    { code: '<form method=\"post\" enctype=\"multipart/form-data\"></form>' },\n    { code: '<input type=\"text\" name=\"username\" autocomplete=\"username\" />' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"anonymous\" loading=\"lazy\" />' },\n    { code: '<script src=\"script.js\" crossorigin=\"anonymous\" async></script>' },\n    { code: '<style type=\"text/css\"></style>' },\n    { code: '<style blocking=\"render\"></style>' },\n    { code: '<button type=\"submit\" name=\"action\">Submit</button>' },\n    { code: '<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />' },\n    {\n      code: '<a href=\"page.html\" target=\"_blank\" rel=\"noopener noreferrer\">Link</a>',\n    },\n    // allow option tests - allow any value for specified tag/attr\n    {\n      code: '<input type=\"custom-type\" />',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: '<input type=\"invalid-type\" />',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: '<button type=\"custom\">Click</button>',\n      options: [{ allow: [{ tag: \"button\", attr: \"type\" }] }],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      options: [{ allow: [{ tag: \"form\", attr: \"method\" }] }],\n    },\n    // allow option tests - allow specific values with valuePattern (exact match)\n    {\n      code: '<input type=\"custom-type\" />',\n      options: [\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n          ],\n        },\n      ],\n    },\n    {\n      code: '<button type=\"custom\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      options: [\n        { allow: [{ tag: \"form\", attr: \"method\", valuePattern: \"^put$\" }] },\n      ],\n    },\n    // allow option tests - allow multiple values with regex pattern\n    {\n      code: '<input type=\"custom-type\" />',\n      options: [\n        {\n          allow: [\n            {\n              tag: \"input\",\n              attr: \"type\",\n              valuePattern: \"^(custom-type|another-type)$\",\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: '<input type=\"another-type\" />',\n      options: [\n        {\n          allow: [\n            {\n              tag: \"input\",\n              attr: \"type\",\n              valuePattern: \"^(custom-type|another-type)$\",\n            },\n          ],\n        },\n      ],\n    },\n    // allow option tests - pattern matching with wildcards\n    {\n      code: '<input type=\"custom-foo\" />',\n      options: [\n        {\n          allow: [{ tag: \"input\", attr: \"type\", valuePattern: \"^custom-.*$\" }],\n        },\n      ],\n    },\n    {\n      code: '<input type=\"custom-bar\" />',\n      options: [\n        {\n          allow: [{ tag: \"input\", attr: \"type\", valuePattern: \"^custom-.*$\" }],\n        },\n      ],\n    },\n    // multiple allow rules\n    {\n      code: '<input type=\"custom-type\" /><button type=\"custom\">Click</button>',\n      options: [\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\" },\n            { tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" },\n          ],\n        },\n      ],\n    },\n    // case insensitive matching\n    {\n      code: '<INPUT TYPE=\"custom-type\" />',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: '<Input Type=\"custom-type\" />',\n      options: [{ allow: [{ tag: \"INPUT\", attr: \"TYPE\" }] }],\n    },\n  ],\n  invalid: [\n    {\n      code: '<input type=\"invalid-type\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"txt\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" crossorigin=\"invalid\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<script src=\"script.js\" crossorigin=\"yes\"></script>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<button type=\"link\">Click</button>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form method=\"invalid\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form enctype=\"invalid\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form enctype=\"application/json\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<th scope=\"invalid\">Header</th>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<th scope=\"column\">Header</th>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"text\" autocomplete=\"invalid-value\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"text\" autocomplete=\"user-name\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"password\" autocomplete=\"password\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"email\" autocomplete=\"mail\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"text\" autocomplete=\"first-name\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<div dir=\"invalid\">Text</div>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<div dir=\"left\">Text</div>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" loading=\"invalid\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" loading=\"fast\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"abc\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" height=\"xyz\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"-100\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"100px\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form method=\"get\" enctype=\"invalid\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<button type=\"invalid\" name=\"action\">Click</button>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" crossorigin=\"invalid\" loading=\"lazy\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<img src=\"image.jpg\" crossorigin=\"anonymous\" loading=\"invalid\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<script src=\"script.js\" crossorigin=\"invalid\" async></script>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form method=\"invalid\" enctype=\"multipart/form-data\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form method=\"post\" enctype=\"invalid\"></form>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"invalid\" autocomplete=\"name\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<input type=\"text\" autocomplete=\"invalid\" name=\"field\" />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<div dir=\"invalid\" id=\"content\">Text</div>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<th scope=\"invalid\" id=\"header\">Header</th>',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    // allow option tests - should still fail if value doesn't match pattern\n    {\n      code: '<input type=\"invalid-type\" />',\n      options: [\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n          ],\n        },\n      ],\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      options: [\n        { allow: [{ tag: \"form\", attr: \"method\", valuePattern: \"^delete$\" }] },\n      ],\n      errors: [{ messageId: \"invalid\" }],\n    },\n    // allow option tests - should fail with pattern that doesn't match\n    {\n      code: '<input type=\"invalid-type\" />',\n      options: [\n        {\n          allow: [{ tag: \"input\", attr: \"type\", valuePattern: \"^custom-.*$\" }],\n        },\n      ],\n      errors: [{ messageId: \"invalid\" }],\n    },\n    // allow option tests - should fail if tag or attr doesn't match\n    {\n      code: '<input type=\"invalid-type\" />',\n      options: [{ allow: [{ tag: \"button\", attr: \"type\" }] }],\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      options: [{ allow: [{ tag: \"button\", attr: \"name\" }] }],\n      errors: [{ messageId: \"invalid\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-invalid-attr-value\", rule, {\n  valid: [\n    { code: 'html`<input type=\"${inputType}\" />`' },\n    { code: 'html`<input type=\"text\" name=\"${name}\" />`' },\n    { code: 'html`<button type=\"${type}\">Click</button>`' },\n    { code: 'html`<form method=\"${method}\"></form>`' },\n    { code: 'html`<form enctype=\"${enctype}\"></form>`' },\n    { code: 'html`<img src=\"image.jpg\" crossorigin=\"${cors}\" />`' },\n    { code: 'html`<img src=\"image.jpg\" loading=\"${loading}\" />`' },\n    { code: 'html`<img src=\"image.jpg\" width=\"${width}\" />`' },\n    { code: 'html`<img src=\"image.jpg\" height=\"${height}\" />`' },\n    { code: 'html`<img src=\"image.jpg\" width=\"100\" height=\"200\" />`' },\n    { code: 'html`<div dir=\"${direction}\">Text</div>`' },\n    { code: 'html`<th scope=\"${scope}\">Header</th>`' },\n    { code: 'html`<input type=\"text\" autocomplete=\"${autocomplete}\" />`' },\n    { code: 'html`<input type=\"text\" autocomplete=\"name\" />`' },\n    { code: 'html`<input type=\"email\" autocomplete=\"email\" />`' },\n    { code: 'html`<input type=\"password\" autocomplete=\"current-password\" />`' },\n    { code: 'html`<input type=\"text\" autocomplete=\"street-address\" />`' },\n    { code: 'html`<link rel=\"${rel}\" href=\"style.css\" />`' },\n    { code: 'html`<script src=\"script.js\" crossorigin=\"${cors}\"></script>`' },\n    {\n      code: 'html`<input type=\"${type}\" autocomplete=\"${autocomplete}\" />`',\n    },\n    {\n      code: 'html`<form method=\"${method}\" enctype=\"${enctype}\"></form>`',\n    },\n    {\n      code: 'html`<img src=\"image.jpg\" crossorigin=\"${cors}\" loading=\"${loading}\" />`',\n    },\n    {\n      code: 'html`<a href=\"${url}\" target=\"${target}\" rel=\"${rel}\">Link</a>`',\n    },\n    { code: 'html`<input type=\"text\" name=\"${name}\" value=\"${value}\" />`' },\n    { code: 'html`<button type=\"submit\" id=\"${id}\">Submit</button>`' },\n    {\n      code: 'html`<input type=\"custom-type\" />`',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: 'html`<button type=\"custom\">Click</button>`',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n    },\n    {\n      code: 'html`<input type=\"custom-foo\" />`',\n      options: [\n        {\n          allow: [{ tag: \"input\", attr: \"type\", valuePattern: \"^custom-.*$\" }],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: 'html`<input type=\"invalid\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<input type=\"txt\" name=\"${name}\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<button type=\"invalid\" id=\"${id}\">Click</button>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<form method=\"invalid\"></form>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<form method=\"put\" action=\"${action}\"></form>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<form enctype=\"invalid\"></form>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<img src=\"image.jpg\" crossorigin=\"invalid\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<img src=\"${src}\" loading=\"invalid\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<img src=\"image.jpg\" width=\"abc\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<img src=\"image.jpg\" height=\"-100\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<img src=\"image.jpg\" width=\"100px\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<div dir=\"invalid\">Text</div>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<div dir=\"left\" id=\"${id}\">Text</div>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<th scope=\"invalid\">Header</th>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<th scope=\"column\" id=\"${id}\">Header</th>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<input type=\"text\" autocomplete=\"invalid-value\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<input type=\"text\" autocomplete=\"user-name\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<input type=\"password\" autocomplete=\"password\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<script src=\"script.js\" crossorigin=\"yes\"></script>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<input type=\"invalid\" autocomplete=\"${autocomplete}\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<form method=\"invalid\" enctype=\"${enctype}\"></form>`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<img src=\"image.jpg\" crossorigin=\"invalid\" loading=\"${loading}\" />`',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    {\n      code: 'html`<input type=\"invalid-type\" />`',\n      options: [{ allow: [{ tag: \"button\", attr: \"type\" }] }],\n      errors: [{ messageId: \"invalid\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-invalid-entity.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-invalid-entity\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-invalid-entity\", rule, {\n  valid: [\n    { code: \"<p>&lt; &gt; &amp; &nbsp;</p>\" },\n    { code: \"<p>&#xD55C;</p>\" },\n  ],\n  invalid: [\n    {\n      code: \"<p>&nbsb;</p>\", // Typo in entity name\n      errors: [{ message: \"Invalid HTML entity '&nbsb;' used.\" }],\n    },\n    {\n      code: \"<p>&unknown;</p>\", // Undefined entity\n      errors: [{ message: \"Invalid HTML entity '&unknown;' used.\" }],\n    },\n    {\n      code: \"<p>&#zzzz;</p>\", // Invalid numeric entity\n      errors: [{ message: \"Invalid HTML entity '&#zzzz;' used.\" }],\n    },\n    {\n      code: \"<p>&#x110000;</p>\",\n      errors: [{ message: \"Invalid HTML entity '&#x110000;' used.\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-invalid-entity\", rule, {\n  valid: [{ code: `html\\`<p>&lt; &gt; &amp; &nbsp;</p>\\`` }],\n  invalid: [\n    {\n      code: \"html`<p>&nbsb;</p>`\",\n      errors: [{ message: \"Invalid HTML entity '&nbsb;' used.\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-invalid-role.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-invalid-role\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-invalid-role\", rule, {\n  valid: [\n    {\n      code: \"<div></div>\",\n    },\n    {\n      code: '<div role=\"grid\"></div>',\n    },\n    {\n      code: `<img role=\"presentation\" alt=\"\">`,\n    },\n  ],\n  invalid: [\n    {\n      code: \"<div role='foo'></div>\",\n      errors: [\n        {\n          messageId: \"invalid\",\n        },\n      ],\n    },\n    {\n      code: \"<div role=''></div>\",\n      errors: [\n        {\n          messageId: \"invalid\",\n        },\n      ],\n    },\n    {\n      code: \"<button role='presentation'></button>\",\n      errors: [\n        {\n          messageId: \"invalidPresentation\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-invalid-role\", rule, {\n  valid: [\n    {\n      code: 'html`<div role=\"grid\"></div>`',\n    },\n    {\n      code: `\nconst role = \"grid\";\nhtml\\`<div role=\"\\${role}\"></div>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<div role='foo'></div>`\",\n      errors: [\n        {\n          message: \"Unexpected use of invalid role 'foo'\",\n        },\n      ],\n    },\n    {\n      code: \"html`<button role='presentation'></button>`\",\n      errors: [\n        {\n          message: \"Unexpected use of presentation role on <button>\",\n        },\n      ],\n    },\n    {\n      code: \"html`<button role='none'></button>`\",\n      errors: [\n        {\n          message: \"Unexpected use of presentation role on <button>\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-multiple-empty-lines.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-multiple-empty-lines\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-multiple-empty-lines\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n<div></div>\n</body>\n</html>\n`,\n    },\n    {\n      code: `<html>\\n<body>\\n\\n<div></div>\\n\\n</body></html>`,\n      options: [{ max: 1 }],\n    },\n    {\n      code: `<html>\\r\\n<body>\\r\\n<div></div>\\r\\n</body></html>`,\n      options: [{ max: 1 }],\n    },\n    {\n      code: `<html></html>`,\n      options: [{ max: 1 }],\n    },\n    {\n      code: `<div id=\"foo\"></div>\\n\\n\\n<div id=\"bar\"></div>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<div id=\"foo\"></div>\\n\\n\\n\\n<div id=\"bar\"></div>`,\n      output: `<div id=\"foo\"></div>\\n\\n\\n<div id=\"bar\"></div>`,\n      errors: [\n        {\n          message: \"More than 2 blank lines not allowed.\",\n        },\n      ],\n    },\n    {\n      code: `<div id=\"foo\"></div>\\r\\n\\r\\n\\r\\n\\r\\n<div id=\"bar\"></div>`,\n      output: `<div id=\"foo\"></div>\\r\\n\\r\\n\\r\\n<div id=\"bar\"></div>`,\n      errors: [\n        {\n          message: \"More than 2 blank lines not allowed.\",\n        },\n      ],\n    },\n    {\n      code: `<html><body>\\n\\n\\n\\n\\n<div></div></body></html>`,\n      output: `<html><body>\\n\\n\\n<div></div></body></html>`,\n      errors: [\n        {\n          message: \"More than 2 blank lines not allowed.\",\n        },\n      ],\n    },\n    {\n      code: `<html><body>\\n\\n\\n\\n\\n<div></div></body></html>`,\n      output: `<html><body>\\n<div></div></body></html>`,\n      options: [{ max: 0 }],\n      errors: [\n        {\n          message: \"More than 0 blank lines not allowed.\",\n        },\n      ],\n    },\n    {\n      code: `<html><body>\\n\\n<div></div></body></html>`,\n      output: `<html><body>\\n<div></div></body></html>`,\n      options: [{ max: 0 }],\n      errors: [\n        {\n          message: \"More than 0 blank lines not allowed.\",\n        },\n      ],\n    },\n    {\n      code: `<html><body>\\n\\n\\n<div></div>\\n\\n\\n</body></html>`,\n      output: `<html><body>\\n\\n<div></div>\\n\\n</body></html>`,\n      options: [{ max: 1 }],\n      errors: [\n        {\n          message: \"More than 1 blank lines not allowed.\",\n        },\n        {\n          message: \"More than 1 blank lines not allowed.\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-multiple-empty-lines\", rule, {\n  valid: [\n    {\n      code: `\nhtml\\`<html>\n<body>\n<div></div>\n</body>\n</html>\\`\n`,\n    },\n    {\n      code: `\nconst html = \\`\n\n\n\n\\`\n`,\n    },\n    {\n      code: `\nhtml\\`\n<body>\n\\${(() => {\n  \n  \n\n\n  return \"<div></div>\"\n})()}\n</body>\n\\`\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\nhtml\\`<html>\n<body>\n<div>\n\n\n\n</div>\n</body>\n</html>\\`\n`,\n      output: `\nhtml\\`<html>\n<body>\n<div>\n\n\n</div>\n</body>\n</html>\\`\n`,\n      errors: [\n        {\n          message: \"More than 2 blank lines not allowed.\",\n        },\n      ],\n    },\n    {\n      code: `\nconst html = /* html */\\`\n<div style=\\${\"aa\"}>\n    <div></div>\n\n\n\n\n</div>\\`\n`,\n      output: `\nconst html = /* html */\\`\n<div style=\\${\"aa\"}>\n    <div></div>\n\n\n</div>\\`\n`,\n      errors: [\n        {\n          message: \"More than 2 blank lines not allowed.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-multiple-h1.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-multiple-h1\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-multiple-h1\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n</body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n<h1>two heading</h1>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"unexpectedMultiH1\",\n        },\n        {\n          messageId: \"unexpectedMultiH1\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-nested-interactive.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-nested-interactive\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-nested-interactive\", rule, {\n  valid: [\n    {\n      code: `<button></button>`,\n    },\n    {\n      code: \"<div><span></span></div>\",\n    },\n    {\n      code: `<div><button></button></div>`,\n    },\n    {\n      code: `<a><button>click</button></a>`,\n    },\n    {\n      code: \"<button><audio></audio>\",\n    },\n    {\n      code: \"<button><img src='foo.png'> click </button>\",\n    },\n    {\n      code: \"<button><input type='hidden'> click </button>\",\n    },\n    {\n      code: \"<label> text: <input type='text'></label>\",\n    },\n    {\n      code: `\n      <details>\n <summary>Name & Extension:</summary>\n <input type=text value=\"Interactive Input\">\n</details>\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `<a href=\"/foo\"><button> click </button></a>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"a\",\n          },\n        },\n      ],\n    },\n    {\n      code: \"<button><audio controls></audio></button>\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"button\",\n          },\n        },\n      ],\n    },\n    {\n      code: \"<button><img usemap='#vending'></button>\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"button\",\n          },\n        },\n      ],\n    },\n    {\n      code: \"<button><iframe src='https:...'></iframe></button>\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"button\",\n          },\n        },\n      ],\n    },\n    {\n      code: \"<button><div></div><div><iframe src='https:...'></iframe></div></button>\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"button\",\n          },\n        },\n      ],\n    },\n    {\n      code: \"<label><label>nesting label</label></label>\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"label\",\n          },\n        },\n      ],\n    },\n    {\n      code: `\n      <details>\n <summary><input type=text value=\"Interactive Input\"></summary>\n</details>\n      `,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"summary\",\n          },\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-nested-interactive\", rule, {\n  valid: [\n    {\n      code: `html\\`<button></button>\\``,\n    },\n    {\n      code: `\nhtml\\`<button></button>\\`;\nhtml\\`<a href=\"foo\"></a>\\`;`,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<a href=\"/foo\"><button> click </button></a>\\``,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"a\",\n          },\n        },\n      ],\n    },\n    {\n      code: `html\\`<a href=\"/foo\">\\${html\\`<div></div>\\`}<button>click</button></a>\\``,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: {\n            tag: \"a\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-non-scalable-viewport.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-non-scalable-viewport\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-non-scalable-viewport\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n</head>\n<body>\n</body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n  <html>\n  <head>\n  <meta name=\"viewport\" content=\"width=device-width, user-scalable=no\">\n  </head>\n  <body>\n  </body>\n  </html>\n`,\n\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `\n  <html>\n  <head>\n  <meta name=\"viewport\" content=\"user-scalable=no, width=device-width\">\n  </head>\n  <body>\n  </body>\n  </html>\n`,\n\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-obsolete-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-obsolete-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-obsolete-attrs\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n<a href=\"/page\">Link</a>\n<img src=\"image.jpg\" alt=\"Image\">\n<table>\n  <tr>\n    <th scope=\"col\">Header</th>\n  </tr>\n</table>\n</body>\n</html>\n`,\n    },\n    {\n      code: `<link rel=\"stylesheet\" href=\"style.css\">`,\n    },\n    {\n      code: `<script src=\"script.js\"></script>`,\n    },\n    {\n      code: `<div id=\"content\">Content</div>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<a charset=\"UTF-8\">Link</a>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"charset\",\n            element: \"a\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<link charset=\"UTF-8\">`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"charset\",\n            element: \"link\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<script charset=\"UTF-8\"></script>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"charset\",\n            element: \"script\",\n            suggestion:\n              \"It is redundant to specify it on the script element since it inherits from the document.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<a name=\"anchor\">Link</a>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"name\",\n            element: \"a\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<img name=\"myimage\" src=\"image.jpg\">`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"name\",\n            element: \"img\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<table align=\"center\"></table>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"align\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div align=\"left\">Content</div>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"align\",\n            element: \"div\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<body bgcolor=\"#ffffff\"></body>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"bgcolor\",\n            element: \"body\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<table bgcolor=\"#cccccc\" border=\"1\"></table>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"bgcolor\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"border\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<img src=\"image.jpg\" border=\"0\">`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"border\",\n            element: \"img\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<table width=\"100%\" height=\"200\" cellpadding=\"5\" cellspacing=\"0\"></table>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"width\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"height\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"cellpadding\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"cellspacing\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<iframe frameborder=\"0\" scrolling=\"no\"></iframe>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"frameborder\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"scrolling\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<td scope=\"row\">Cell</td>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"scope\",\n            element: \"td\",\n            suggestion: \"Use th elements for heading cells.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<html manifest=\"app.appcache\"></html>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"manifest\",\n            element: \"html\",\n            suggestion: \"Use service workers instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<form accept=\"image/*\"></form>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"accept\",\n            element: \"form\",\n            suggestion:\n              \"Use the accept attribute directly on the input elements instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div contextmenu=\"mymenu\">Content</div>`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"contextmenu\",\n            element: \"div\",\n            suggestion:\n              \"To implement a custom context menu, use script to handle the contextmenu event.\",\n          },\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-obsolete-attrs\", rule, {\n  valid: [\n    {\n      code: `html\\`<a href=\"/page\">Link</a>\\`;`,\n    },\n    {\n      code: `html\\`<img src=\"image.jpg\" alt=\"Image\">\\`;`,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<a name=\"anchor\">Link</a>\\`;`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<table align=\"center\"></table>\\`;`,\n      errors: [\n        {\n          messageId: \"obsolete\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-obsolete-tags.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-obsolete-tags\");\nconst { OBSOLETE_TAGS } = require(\"../../lib/constants\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-obsolete-tags\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n</body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    ...OBSOLETE_TAGS.filter((tag) => tag !== \"frame\").map((tag) => ({\n      code: `<${tag}></${tag}>`,\n      errors: [\n        {\n          message: `Unexpected use of obsolete tag <${tag}>`,\n        },\n      ],\n    })),\n    {\n      code: `\n<frameset cols=\"25%,*,25%\">\n    <frame name=\"left\" src=\"/html/intro\"/>\n</frameset>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-obsolete-tags\", rule, {\n  valid: [\n    {\n      code: `\nhtml\\`<html>\n<body>\n<h1>one heading</h1>\n</body>\n</html>\\`;\n`,\n    },\n  ],\n  invalid: [\n    ...OBSOLETE_TAGS.filter((tag) => tag !== \"frame\").map((tag) => ({\n      code: `html\\`<${tag}></${tag}>\\`;`,\n      errors: [\n        {\n          message: `Unexpected use of obsolete tag <${tag}>`,\n        },\n      ],\n    })),\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-positive-tabindex.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-positive-tabindex\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-positive-tabindex\", rule, {\n  valid: [\n    {\n      code: `<span tabindex=\"0\">foo</span>`,\n    },\n    {\n      code: `<span tabindex=\"-1\">foo</span>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<span tabindex=\"1\">foo</span>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<span tabindex=\"2\">foo</span>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-positive-tabindex\", rule, {\n  valid: [\n    {\n      code: `html\\`<span tabindex=\"0\">foo</span>\\``,\n    },\n    {\n      code: `html\\`<span tabindex=\"\\${index}\">foo</span>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<span tabindex=\"1\">foo</span>\\``,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-redundant-role.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-redundant-role\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-redundant-role\", rule, {\n  valid: [\n    {\n      code: \"<div></div>\",\n    },\n    {\n      code: '<div role=\"grid\"></div>',\n    },\n    {\n      code: \"<button></button>\",\n    },\n    {\n      code: '<button role=\"link\"></button>',\n    },\n    {\n      code: \"<nav></nav>\",\n    },\n    {\n      code: '<nav role=\"tablist\"></nav>',\n    },\n    {\n      code: \"<main></main>\",\n    },\n    {\n      code: '<a href=\"/\">Link</a>',\n    },\n    {\n      code: \"<a>Not a link</a>\",\n    },\n    {\n      code: \"<input >\",\n    },\n    {\n      code: '<input type=\"text\">',\n    },\n    {\n      code: '<input type=\"text\" role=\"combobox\">',\n    },\n    {\n      code: '<img alt=\"description\">',\n    },\n    {\n      code: '<img alt=\"\" role=\"presentation\">',\n    },\n    {\n      code: \"<form></form>\",\n    },\n    {\n      code: '<form name=\"my-form\"></form>',\n    },\n    {\n      code: \"<section></section>\",\n    },\n    {\n      code: '<section aria-label=\"My section\"></section>',\n    },\n  ],\n  invalid: [\n    {\n      code: '<button role=\"button\">Click</button>',\n      output: \"<button >Click</button>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"button\",\n            element: \"button\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<nav role=\"navigation\"></nav>',\n      output: \"<nav ></nav>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"navigation\",\n            element: \"nav\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<main role=\"main\"></main>',\n      output: \"<main ></main>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"main\",\n            element: \"main\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<a href=\"/\" role=\"link\">Link</a>',\n      output: '<a href=\"/\" >Link</a>',\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"link\",\n            element: \"a\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<ul role=\"list\"></ul>',\n      output: \"<ul ></ul>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"list\",\n            element: \"ul\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<ol role=\"list\"></ol>',\n      output: \"<ol ></ol>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"list\",\n            element: \"ol\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" role=\"checkbox\">',\n      output: '<input type=\"checkbox\" >',\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"checkbox\",\n            element: \"input\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"radio\" role=\"radio\">',\n      output: '<input type=\"radio\" >',\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"radio\",\n            element: \"input\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<input role=\"textbox\">',\n      output: \"<input >\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"textbox\",\n            element: \"input\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" role=\"textbox\">',\n      output: '<input type=\"text\" >',\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"textbox\",\n            element: \"input\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<textarea role=\"textbox\"></textarea>',\n      output: \"<textarea ></textarea>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"textbox\",\n            element: \"textarea\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<article role=\"article\"></article>',\n      output: \"<article ></article>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"article\",\n            element: \"article\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<aside role=\"complementary\"></aside>',\n      output: \"<aside ></aside>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"complementary\",\n            element: \"aside\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<h1 role=\"heading\"></h1>',\n      output: \"<h1 ></h1>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"heading\",\n            element: \"h1\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table role=\"table\"></table>',\n      output: \"<table ></table>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"table\",\n            element: \"table\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<tr role=\"row\"></tr>',\n      output: \"<tr ></tr>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"row\",\n            element: \"tr\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<td role=\"cell\"></td>',\n      output: \"<td ></td>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"cell\",\n            element: \"td\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<form name=\"my-form\" role=\"form\"></form>',\n      output: '<form name=\"my-form\" ></form>',\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"form\",\n            element: \"form\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<progress role=\"progressbar\"></progress>',\n      output: \"<progress ></progress>\",\n      errors: [\n        {\n          messageId: \"redundant\",\n          data: {\n            role: \"progressbar\",\n            element: \"progress\",\n          },\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-redundant-role\", rule, {\n  valid: [\n    {\n      code: 'html`<div role=\"grid\"></div>`',\n    },\n    {\n      code: `\nconst role = \"grid\";\nhtml\\`<div role=\"\\${role}\"></div>\\``,\n    },\n    {\n      code: \"html`<button></button>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: 'html`<button role=\"button\">Click</button>`',\n      output: \"html`<button >Click</button>`\",\n      errors: [\n        {\n          message:\n            \"Redundant role 'button'. The element <button> already has an implicit role of 'button'.\",\n        },\n      ],\n    },\n    {\n      code: 'html`<nav role=\"navigation\"></nav>`',\n      output: \"html`<nav ></nav>`\",\n      errors: [\n        {\n          message:\n            \"Redundant role 'navigation'. The element <nav> already has an implicit role of 'navigation'.\",\n        },\n      ],\n    },\n    {\n      code: 'html`<main role=\"main\"></main>`',\n      output: \"html`<main ></main>`\",\n      errors: [\n        {\n          message:\n            \"Redundant role 'main'. The element <main> already has an implicit role of 'main'.\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-restricted-attr-values.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-restricted-attr-values\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-restricted-attr-values\", rule, {\n  valid: [\n    {\n      code: `<div> </div>`,\n      options: [\n        {\n          attrPatterns: [\".*\"],\n          attrValuePatterns: [\"data-.*\"],\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo\"> </div>`,\n      options: [\n        {\n          attrPatterns: [\"class\"],\n          attrValuePatterns: [\"data-.*\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `<div foo=\"data-x\"> </div>`,\n      options: [\n        {\n          attrPatterns: [\".*\"],\n          attrValuePatterns: [\"data-.*\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attrValuePatterns: \"data-x\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div foo=\"\"> </div>`,\n      options: [\n        {\n          attrPatterns: [\".*\"],\n          attrValuePatterns: [\"\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attrValuePatterns: \"\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo\"> </div> <a alt=\"foo\"></a>`,\n      options: [\n        {\n          attrPatterns: [\"alt\"],\n          attrValuePatterns: [\"foo\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attrValuePatterns: \"foo\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div alt=\"foo\"> </div> <custom-element class=\"foo\"></custom-element>`,\n      options: [\n        {\n          attrPatterns: [\"alt\", \"class\"],\n          attrValuePatterns: [\"^foo$\"],\n          message: \"no foo for alt or class\",\n        },\n      ],\n      errors: [\n        {\n          message: \"no foo for alt or class\",\n        },\n        {\n          message: \"no foo for alt or class\",\n        },\n      ],\n    },\n    // custom message\n    {\n      code: `<div foo=\"data-x\"> </div>`,\n      options: [\n        {\n          attrPatterns: [\".*\"],\n          attrValuePatterns: [\"data.*\"],\n          message: \"please do not use 'data-x'\",\n        },\n      ],\n      errors: [\n        {\n          message: \"please do not use 'data-x'\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-restricted-attr-values\", rule, {\n  valid: [\n    {\n      code: `html\\`<div> </div>\\``,\n      options: [\n        {\n          attrPatterns: [\".*\"],\n          attrValuePatterns: [\"data-.*\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div alt=\"foo\"> </div> <custom-element class=\"foo\"></custom-element>\\``,\n      options: [\n        {\n          attrPatterns: [\"alt\", \"class\"],\n          attrValuePatterns: [\"^foo$\"],\n          message: \"no foo for alt or class\",\n        },\n      ],\n      errors: [\n        {\n          message: \"no foo for alt or class\",\n        },\n        {\n          message: \"no foo for alt or class\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-restricted-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-restricted-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-restricted-attrs\", rule, {\n  valid: [\n    {\n      code: `<div> </div>`,\n      options: [\n        {\n          tagPatterns: [\".*\"],\n          attrPatterns: [\"data-.*\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `<div data-x=\"1\"> </div>`,\n      options: [\n        {\n          tagPatterns: [\".*\"],\n          attrPatterns: [\"data-.*\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attr: \"data-x\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div alt=\"foo\"> </div> <a alt=\"foo\"></a>`,\n      options: [\n        {\n          tagPatterns: [\"div\"],\n          attrPatterns: [\"alt\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attr: \"alt\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<script id=\"foo\"> </script>`,\n      options: [\n        {\n          tagPatterns: [\"script\"],\n          attrPatterns: [\"id\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attr: \"id\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<style id=\"foo\"> </style>`,\n      options: [\n        {\n          tagPatterns: [\"style\"],\n          attrPatterns: [\"id\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            attr: \"id\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<div alt=\"foo\"> </div> <img alt=\"a\"/> <custom-element alt=\"foo\"></custom-element>`,\n      options: [\n        {\n          tagPatterns: [\"img\", \".*-.*\"],\n          attrPatterns: [\"^alt$\"],\n          message: \"no alt in img and custom element\",\n        },\n      ],\n      errors: [\n        {\n          message: \"no alt in img and custom element\",\n        },\n        {\n          message: \"no alt in img and custom element\",\n        },\n      ],\n    },\n    // custom message\n    {\n      code: `<div data-x=\"1\"> </div>`,\n      options: [\n        {\n          tagPatterns: [\".*\"],\n          attrPatterns: [\"data-.*\"],\n          message: \"please do not use 'data-x'\",\n        },\n      ],\n      errors: [\n        {\n          message: \"please do not use 'data-x'\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-restricted-attrs\", rule, {\n  valid: [\n    {\n      code: `html\\`<div> </div>\\``,\n      options: [\n        {\n          tagPatterns: [\".*\"],\n          attrPatterns: [\"data-.*\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div data-x=\"1\"> </div>\\``,\n      options: [\n        {\n          tagPatterns: [\".*\"],\n          attrPatterns: [\"data-.*\"],\n          message: \"please do not use 'data-x'\",\n        },\n      ],\n      errors: [\n        {\n          message: \"please do not use 'data-x'\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-restricted-tags.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-restricted-tags\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-restricted-tags\", rule, {\n  valid: [\n    {\n      code: `<div> </div>`,\n      options: [\n        {\n          tagPatterns: [\"span\"],\n        },\n      ],\n    },\n    {\n      code: `<p>content</p>`,\n      options: [\n        {\n          tagPatterns: [\"div\"],\n        },\n      ],\n    },\n    {\n      code: `<article><header></header></article>`,\n      options: [\n        {\n          tagPatterns: [\"footer\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `<div> </div>`,\n      options: [\n        {\n          tagPatterns: [\"div\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"div\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<span>text</span>`,\n      options: [\n        {\n          tagPatterns: [\"span\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"span\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<script src=\"test.js\"></script>`,\n      options: [\n        {\n          tagPatterns: [\"script\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"script\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<style>.test {}</style>`,\n      options: [\n        {\n          tagPatterns: [\"style\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"style\",\n          },\n        },\n      ],\n    },\n    // regex patterns\n    {\n      code: `<div data-test=\"value\"> </div> <span></span>`,\n      options: [\n        {\n          tagPatterns: [\"^div$\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"div\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<custom-element></custom-element> <another-custom></another-custom>`,\n      options: [\n        {\n          tagPatterns: [\".*-.*\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"custom-element\",\n          },\n        },\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"another-custom\",\n          },\n        },\n      ],\n    },\n    {\n      code: `<h1>Title</h1> <h2>Subtitle</h2> <h3>Section</h3>`,\n      options: [\n        {\n          tagPatterns: [\"h[1-6]\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"h1\",\n          },\n        },\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"h2\",\n          },\n        },\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"h3\",\n          },\n        },\n      ],\n    },\n    // custom message\n    {\n      code: `<div> </div>`,\n      options: [\n        {\n          tagPatterns: [\"div\"],\n          message: \"Do not use div tags, use semantic elements instead\",\n        },\n      ],\n      errors: [\n        {\n          message: \"Do not use div tags, use semantic elements instead\",\n        },\n      ],\n    },\n    {\n      code: `<font size=\"3\">old style</font>`,\n      options: [\n        {\n          tagPatterns: [\"font|center|marquee\"],\n          message: \"Deprecated HTML tags are not allowed\",\n        },\n      ],\n      errors: [\n        {\n          message: \"Deprecated HTML tags are not allowed\",\n        },\n      ],\n    },\n    // multiple patterns\n    {\n      code: `<div></div> <span></span> <custom-tag></custom-tag>`,\n      options: [\n        {\n          tagPatterns: [\"div\", \"span\"],\n        },\n        {\n          tagPatterns: [\".*-.*\"],\n          message: \"Custom elements should follow naming conventions\",\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"div\",\n          },\n        },\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"span\",\n          },\n        },\n        {\n          message: \"Custom elements should follow naming conventions\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-restricted-tags\", rule, {\n  valid: [\n    {\n      code: `html\\`<p>content</p>\\``,\n      options: [\n        {\n          tagPatterns: [\"div\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div>content</div>\\``,\n      options: [\n        {\n          tagPatterns: [\"div\"],\n          message: \"Do not use div in templates\",\n        },\n      ],\n      errors: [\n        {\n          message: \"Do not use div in templates\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<custom-element></custom-element>\\``,\n      options: [\n        {\n          tagPatterns: [\".*-.*\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"restricted\",\n          data: {\n            tag: \"custom-element\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-script-style-type.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-script-style-type\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-script-style-type\", rule, {\n  valid: [\n    {\n      code: '<script src=\"https://script.js\"></script>\"',\n    },\n    {\n      code: '<script type=\"module\" src=\"https://script.js\"></script>',\n    },\n    {\n      code: '<link rel=\"stylesheet\" href=\"https://styles.css\" />',\n    },\n  ],\n  invalid: [\n    {\n      code: '<script type=\"text/javascript\" src=\"https://script.js\"></script>',\n      output: '<script  src=\"https://script.js\"></script>',\n      errors: [\n        {\n          messageId: \"unnecessary\",\n        },\n      ],\n    },\n    {\n      code: '<style type=\"text/css\"></style>',\n      output: \"<style ></style>\",\n      errors: [\n        {\n          messageId: \"unnecessary\",\n        },\n      ],\n    },\n    {\n      code: '<link type=\"text/css\" rel=\"stylesheet\" href=\"https://styles.css\" />',\n      output: '<link  rel=\"stylesheet\" href=\"https://styles.css\" />',\n      errors: [\n        {\n          messageId: \"unnecessary\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-script-style-type\", rule, {\n  valid: [\n    {\n      code: 'html`<script src=\"https://script.js\"></script>\"`',\n    },\n  ],\n  invalid: [\n    {\n      code: 'html`<script type=\"text/javascript\" src=\"https://script.js\"></script>`',\n      output: 'html`<script  src=\"https://script.js\"></script>`',\n      errors: [\n        {\n          messageId: \"unnecessary\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-skip-heading-levels.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-skip-heading-levels\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-skip-heading-levels\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n</body>\n</html>\n`,\n    },\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n<h2>one heading</h2>\n<h3>one heading</h3>\n</body>\n</html>\n`,\n    },\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n<h2>one heading</h2>\n<h2>one heading</h2>\n</body>\n</html>\n`,\n    },\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n<h2>one heading</h2>\n<h1>one heading</h1>\n</body>\n</html>\n`,\n    },\n    {\n      code: `\n<div>\n  <h1>Heading 1</h1>\n  <h2>Heading 2</h2>\n  <h3>Heading 3</h3>\n  <h4>Heading 4</h4>\n  <h5>Heading 5</h5>\n  <h6>Heading 6</h6>\n</div>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n<body>\n<h1>one heading</h1>\n<h3>one heading</h3>\n</body>\n</html>\n`,\n\n      errors: [\n        {\n          message: \"Unexpected skipping heading level. <h2> is expected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-target-blank.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-target-blank\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-target-blank\", rule, {\n  valid: [\n    {\n      code: `<a target='_blank' rel='noreferrer' href='http://www.foo.com'></a>`,\n    },\n    {\n      code: `<a target='_blank' rel='noreferrer noopener' href='http://www.foo.com'></a>`,\n    },\n    {\n      code: `<a target='_blank' href='/foo'></a>`,\n    },\n    {\n      code: `<a target='_blank' href='./foo'></a>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<a target='_blank' href='http://www.foo.com'></a>`,\n      errors: [\n        {\n          message: 'Missing `rel=\"noreferrer\"` attribute in a tag.',\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-target-blank\", rule, {\n  valid: [\n    {\n      code: \"html`<a target='_blank' rel='noreferrer' href='http://www.foo.com'></a>`\",\n    },\n    {\n      code: \"html`<a target='${target}' href='http://www.foo.com'></a>`\",\n    },\n    {\n      code: \"html`<a target='_blank' rel='${rel}' href='http://www.foo.com'></a>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<a target='_blank' href='http://www.foo.com'></a>`\",\n      errors: [\n        {\n          message: 'Missing `rel=\"noreferrer\"` attribute in a tag.',\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-trailing-spaces.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-trailing-spaces\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-tailing-spaces\", rule, {\n  valid: [\n    {\n      code: \"<div></div>\",\n    },\n    {\n      code: \"<div></div>\\n\",\n    },\n    {\n      code: \"<div></div>\\r\\n\",\n    },\n    {\n      code: \"<div>\\n  text\\n  </div>\\n\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"<div></div>  \",\n      output: \"<div></div>\",\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          column: 12,\n          endColumn: 14,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: \"<div></div>  \\n\",\n      output: \"<div></div>\\n\",\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          column: 12,\n          endColumn: 14,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: \"<div>  \\n  text\\n  </div>\",\n      output: \"<div>\\n  text\\n  </div>\",\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          column: 6,\n          endColumn: 8,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: `<div>${\"  \"}\n    text\n</div>${\"  \"}\n`,\n      output: `<div>\n    text\n</div>\n`,\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n        },\n        {\n          messageId: \"trailingSpace\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-tailing-spaces\", rule, {\n  valid: [\n    {\n      code: `html\\`<div>\n      \\${(() => {\n        return \"\"      \\t\\t\n      })()}\n</div>\\``,\n    },\n    {\n      code: `html\\`<div>\n      \\${(() => {\n    \n      })()      }\n</div>\\``,\n    },\n    {\n      code: `  \nhtml\\`<div>\n</div>\\``,\n    },\n    {\n      code: `  \n/* html */\\`<div>\n</div>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `  \nhtml\\`<div>  \n</div>\\``,\n      output: `  \nhtml\\`<div>\n</div>\\``,\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n        },\n      ],\n    },\n    {\n      code: \"html`<div>  \\n  text\\n  </div>`\",\n      output: \"html`<div>\\n  text\\n  </div>`\",\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          line: 1,\n          column: 11,\n          endColumn: 13,\n        },\n      ],\n    },\n    {\n      code: \"html`<div>\\n  text\\n  </div>   `\",\n      output: \"html`<div>\\n  text\\n  </div>`\",\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          line: 3,\n          column: 9,\n          endColumn: 12,\n        },\n      ],\n    },\n    {\n      code: `html\\`<div id=\\${foo}   \n>\ntext\n</div>\\``,\n      output: `html\\`<div id=\\${foo}\n>\ntext\n</div>\\``,\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          line: 1,\n          column: 20,\n          endColumn: 23,\n        },\n      ],\n    },\n    {\n      code: `\nhtml\\`<div id=\\${foo}   \n>\ntext\n</div>\\``,\n      output: `\nhtml\\`<div id=\\${foo}\n>\ntext\n</div>\\``,\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          line: 2,\n          column: 20,\n          endColumn: 23,\n        },\n      ],\n    },\n    {\n      code: `\n/* html */\\`<div id=\\${foo}   \n>\ntext\n</div>\\``,\n      output: `\n/* html */\\`<div id=\\${foo}\n>\ntext\n</div>\\``,\n      errors: [\n        {\n          messageId: \"trailingSpace\",\n          line: 2,\n          column: 26,\n          endColumn: 29,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/no-whitespace-only-children.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-whitespace-only-children\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"no-whitespace-only-children\", rule, {\n  valid: [\n    // No close\n    {\n      code: \"<img />\",\n    },\n    // No children\n    {\n      code: \"<div></div>\",\n    },\n    // Has text content\n    {\n      code: \"<div>Hello</div>\",\n    },\n    // Has child element\n    {\n      code: \"<div><span></span></div>\",\n    },\n    // Whitespace with text\n    {\n      code: \"<div>\\n  Hello\\n</div>\",\n    },\n    // With tagPatterns option - non-matching tag\n    {\n      code: \"<div>  \\n  </div>\",\n      options: [{ tagPatterns: [\"^span$\"] }],\n    },\n    // With tagPatterns option - tag has content\n    {\n      code: \"<span>content</span>\",\n      options: [{ tagPatterns: [\"^span$\"] }],\n    },\n    // Allow comment only\n    {\n      code: \"<custom-component><!-- comment --></custom-component>\",\n      options: [{ tagPatterns: [\"^custom-component$\"] }],\n    },\n    {\n      code: \"<my-component> </my-component>\",\n      options: [{ tagPatterns: [\"^custom-component$\"] }],\n    },\n  ],\n  invalid: [\n    // With tagPatterns option - matching tag with whitespace\n    {\n      code: \"<span>  \\n  </span>\",\n      output: \"<span></span>\",\n      options: [{ tagPatterns: [\"^span$\"] }],\n      errors: [\n        {\n          messageId: \"whitespaceOnlyChildren\",\n        },\n      ],\n    },\n    // With tagPatterns option - multiple patterns\n    {\n      code: \"<div>  </div>\",\n      output: \"<div></div>\",\n      options: [{ tagPatterns: [\"^div$\", \"^span$\"] }],\n      errors: [\n        {\n          messageId: \"whitespaceOnlyChildren\",\n        },\n      ],\n    },\n    // With tagPatterns option - regex pattern\n    {\n      code: \"<button>  \\n  </button>\",\n      output: \"<button></button>\",\n      options: [{ tagPatterns: [\"^button$\"] }],\n      errors: [\n        {\n          messageId: \"whitespaceOnlyChildren\",\n        },\n      ],\n    },\n    // Allow comment only\n    {\n      code: \"<custom-component> <!-- comment --> </custom-component>\",\n      output: \"<custom-component><!-- comment --></custom-component>\",\n      options: [{ tagPatterns: [\"^custom-component$\"] }],\n      errors: [\n        {\n          column: 19,\n          endColumn: 37,\n          messageId: \"whitespaceOnlyChildren\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] no-whitespace-only-children\", rule, {\n  valid: [\n    {\n      code: \"html`<span>${message}</span>`\",\n      options: [{ tagPatterns: [\"^span$\"] }],\n    },\n    {\n      code: `html\\`<span>\\${\" \"}</span>\\``,\n      options: [{ tagPatterns: [\"^span$\"] }],\n    },\n    {\n      code: `html\\`<span> </span>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<span>\\n</span>`\",\n      options: [{ tagPatterns: [\"^span$\"] }],\n      output: \"html`<span></span>`\",\n      errors: [\n        {\n          messageId: \"whitespaceOnlyChildren\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/prefer-https.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/prefer-https\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"prefer-https\", rule, {\n  valid: [\n    {\n      code: `<script></script>`,\n    },\n    {\n      code: `<script src=\"https://script.js\">`,\n    },\n    {\n      code: `<img src=\"https://image.png\">`,\n    },\n    {\n      code: `<iframe src=\"/absolute.html\"></iframe>`,\n    },\n    {\n      code: `<audio src=\"relative.mp3\"></iframe>`,\n    },\n    {\n      code: `<video src=\"./relative.mp3\"></iframe>`,\n    },\n    {\n      code: `<link href=\"https://foo.css\" rel=\"stylesheet\" />`,\n    },\n    {\n      code: `<object type=\"application/pdf\" data=\"/media/examples/In-CC0.pdf\"></object>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<script src=\"http://script.js\">`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<img src=\"http://image.png\">`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<link href=\"http://foo.css\" rel=\"stylesheet\" />`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<object type=\"application/pdf\" data=\"http://media/examples/In-CC0.pdf\"></object>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] prefer-https\", rule, {\n  valid: [\n    {\n      code: \"html`<script></script>`\",\n    },\n    {\n      code: `html\\`<img src=\"\\${variableLink}\">\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<script src=\"http://script.js\">\\``,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/quotes.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/quotes\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"quotes\", rule, {\n  valid: [\n    {\n      code: `<div id = \" foo \">`,\n    },\n    {\n      code: `<div id = \"foo \">`,\n    },\n    {\n      code: `<div id = \" foo\">`,\n    },\n    // https://github.com/yeonjuan/html-eslint/issues/95\n    {\n      code: `<div id='\"foo\"'></div>`,\n    },\n    {\n      code: `<div id=\"'foo'\"></div>`,\n      options: [\"single\"],\n    },\n    {\n      code: `\n<div id=\"\nfoo\">\n`,\n    },\n    {\n      code: `<div id=\"foo\">`,\n    },\n\n    {\n      code: `<div id=\"\">`,\n    },\n\n    {\n      code: `<div id>`,\n    },\n    {\n      code: `<div aa>`,\n    },\n    {\n      code: `<div id='foo'>`,\n      options: [\"single\"],\n    },\n    {\n      code: `<img src=\"?size=50&amp;default=retro\">`,\n    },\n    {\n      code: `<img src='?size=50&amp;default=retro'>`,\n      options: [\"single\"],\n    },\n    {\n      code: `<img src={{foo}}>`,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n  ],\n  invalid: [\n    {\n      code: `<div id='foo'>`,\n      output: `<div id=\"foo\">`,\n      errors: [\n        {\n          message: \"Expected double(\\\") quotes but found single(').\",\n        },\n      ],\n    },\n    {\n      code: `<div id='\nfoo'>`,\n      output: `<div id=\"\nfoo\">`,\n      errors: [\n        {\n          message: \"Expected double(\\\") quotes but found single(').\",\n        },\n      ],\n    },\n    {\n      code: `<div id='foo' style='bar'>`,\n      output: `<div id=\"foo\" style=\"bar\">`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<div id=\"foo\">`,\n      output: `<div id='foo'>`,\n      options: [\"single\"],\n      errors: [\n        {\n          message: \"Expected single(') quotes but found double(\\\").\",\n        },\n      ],\n    },\n    {\n      code: `<div id=foo>`,\n      output: `<div id=\"foo\">`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `<div id=\nfoo>`,\n      output: `<div id=\n\"foo\">`,\n      errors: [\n        {\n          message: 'Expected double(\") quotes but no quotes found.',\n        },\n      ],\n    },\n    {\n      code: `<div id=  foo>`,\n      output: `<div id=  \"foo\">`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `<img src='?size=50&amp;default=retro'>`,\n      output: `<img src=\"?size=50&amp;default=retro\">`,\n      options: [\"double\"],\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<img src = '?size=50&amp;default=retro'>`,\n      output: `<img src = \"?size=50&amp;default=retro\">`,\n      options: [\"double\"],\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] quotes\", rule, {\n  valid: [\n    {\n      code: `html\\`<div id = \" foo \">\\``,\n    },\n    {\n      code: `html\\`<div id = \"\\${foo}\">\\``,\n    },\n    {\n      code: `\nconst handler = () => {};\nhtml\\`<div onclick=\\${handler}></div>\\``,\n    },\n    {\n      code: `html\\`<div id = \"\\${foo}\">\\``,\n      options: [\"double\", { enforceTemplatedAttrValue: true }],\n    },\n    {\n      code: `html\\`<div id = '\\${foo}'>\\``,\n      options: [\"single\", { enforceTemplatedAttrValue: true }],\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<div id = ' foo '>\\``,\n      output: `html\\`<div id = \" foo \">\\``,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<div id = \\${foo}>\\``,\n      output: `html\\`<div id = \"\\${foo}\">\\``,\n      options: [\"double\", { enforceTemplatedAttrValue: true }],\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<div id = '\\${foo}'>\\``,\n      output: `html\\`<div id = \"\\${foo}\">\\``,\n      options: [\"double\", { enforceTemplatedAttrValue: true }],\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<div id = prefix_\\${foo}>\\``,\n      output: `html\\`<div id = 'prefix_\\${foo}'>\\``,\n      options: [\"single\", { enforceTemplatedAttrValue: true }],\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-attrs\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-attrs\", rule, {\n  valid: [\n    {\n      code: `<svg></svg>`,\n    },\n    {\n      code: `<svg viewBox=\"0 0 100 100\"></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\"0 0 100 100\"></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"0 0 100 100\",\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\"\"></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"\",\n        },\n      ],\n    },\n    {\n      code: `<img alt=\"image\" src=\"/assets/image.png\">`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n      ],\n    },\n    {\n      code: `<img alt=\"\" src=\"/assets/image.png\">`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n      ],\n    },\n    {\n      code: `<div></div>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n      ],\n    },\n    {\n      code: `<script></script>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `<img/>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"class\",\n          value: \"img\",\n        },\n      ],\n      output: '<img class=\"img\"/>',\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'class' attribute on 'img' tag\",\n        },\n      ],\n    },\n    {\n      code: `<img class/>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"class\",\n          value: \"img\",\n        },\n      ],\n      output: '<img class=\"img\"/>',\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          message: \"Unexpected 'class' attribute value. 'img' is expected\",\n        },\n      ],\n    },\n    {\n      code: `<img class id=\"1\"/>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"class\",\n          value: \"img\",\n        },\n      ],\n      output: '<img class=\"img\" id=\"1\"/>',\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          message: \"Unexpected 'class' attribute value. 'img' is expected\",\n        },\n      ],\n    },\n    {\n      code: `<svg></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n        },\n      ],\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'viewBox' attribute on 'svg' tag\",\n        },\n      ],\n    },\n    {\n      code: `<svg></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"0 0 100 100\",\n        },\n      ],\n      output: `<svg viewBox=\"0 0 100 100\"></svg>`,\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'viewBox' attribute on 'svg' tag\",\n        },\n      ],\n    },\n    {\n      code: `<svg class=\"foo\"></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"0 0 100 100\",\n        },\n      ],\n      output: `<svg viewBox=\"0 0 100 100\" class=\"foo\"></svg>`,\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'viewBox' attribute on 'svg' tag\",\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\"\"></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"0 0 100 100\",\n        },\n      ],\n      output: `<svg viewBox=\"0 0 100 100\"></svg>`,\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          endColumn: 16,\n          message:\n            \"Unexpected 'viewBox' attribute value. '0 0 100 100' is expected\",\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"0 0 100 100\",\n        },\n      ],\n      output: `<svg viewBox=\"0 0 100 100\"></svg>`,\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          endColumn: 13,\n          message:\n            \"Unexpected 'viewBox' attribute value. '0 0 100 100' is expected\",\n        },\n      ],\n    },\n    {\n      code: `<img/>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n      ],\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'alt' attribute on 'img' tag\",\n        },\n      ],\n    },\n    {\n      code: `<script></script>`,\n      options: [\n        {\n          tag: \"script\",\n          attr: \"src\",\n        },\n      ],\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'src' attribute on 'script' tag\",\n        },\n      ],\n    },\n    {\n      code: `<style type=\"txt/css\"></style>`,\n      options: [\n        {\n          tag: \"style\",\n          attr: \"type\",\n          value: \"text/css\",\n        },\n      ],\n      output: `<style type=\"text/css\"></style>`,\n      errors: [\n        {\n          line: 1,\n          column: 8,\n          endColumn: 22,\n          message: \"Unexpected 'type' attribute value. 'text/css' is expected\",\n        },\n      ],\n    },\n    {\n      code: `<img class=\"image\"/>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n        {\n          tag: \"img\",\n          attr: \"class\",\n          value: \"img\",\n        },\n      ],\n      output: `<img class=\"img\"/>`,\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Missing 'alt' attribute on 'img' tag\",\n        },\n        {\n          line: 1,\n          column: 6,\n          endColumn: 19,\n          message: \"Unexpected 'class' attribute value. 'img' is expected\",\n        },\n      ],\n    },\n    // Test custom message option\n    {\n      code: `<img/>`,\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n          message: \"Image must have alt text for accessibility\",\n        },\n      ],\n      errors: [\n        {\n          line: 1,\n          column: 1,\n          message: \"Image must have alt text for accessibility\",\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\"wrong\"></svg>`,\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n          value: \"0 0 100 100\",\n          message: \"SVG viewBox must be '0 0 100 100'\",\n        },\n      ],\n      output: `<svg viewBox=\"0 0 100 100\"></svg>`,\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          endColumn: 21,\n          message: \"SVG viewBox must be '0 0 100 100'\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-attrs\", rule, {\n  valid: [\n    {\n      code: \"html`<svg viewBox></svg>`\",\n      options: [\n        {\n          tag: \"svg\",\n          attr: \"viewBox\",\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: 'html`<img class=\"image\"/>`',\n      options: [\n        {\n          tag: \"img\",\n          attr: \"alt\",\n        },\n        {\n          tag: \"img\",\n          attr: \"class\",\n          value: \"img\",\n        },\n      ],\n      output: 'html`<img class=\"img\"/>`',\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          message: \"Missing 'alt' attribute on 'img' tag\",\n        },\n        {\n          line: 1,\n          column: 11,\n          endColumn: 24,\n          message: \"Unexpected 'class' attribute value. 'img' is expected\",\n        },\n      ],\n    },\n    // Test custom message option in template\n    {\n      code: \"html`<div></div>`\",\n      options: [\n        {\n          tag: \"div\",\n          attr: \"role\",\n          message: \"Div elements should have a role attribute\",\n        },\n      ],\n      errors: [\n        {\n          line: 1,\n          column: 6,\n          message: \"Div elements should have a role attribute\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-button-type.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-button-type\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-button-type\", rule, {\n  valid: [\n    {\n      code: `<button type=\"submit\">Submit Button</button>`,\n    },\n    {\n      code: `<button type=\"button\">Button</button>`,\n    },\n    {\n      code: `<button type=\"reset\">Reset Button</button>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<button>Missing type</button>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 1,\n        },\n      ],\n      output: `<button type=\"submit\">Missing type</button>`,\n    },\n    {\n      code: `<button/>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 1,\n        },\n      ],\n      output: `<button type=\"submit\"/>`,\n    },\n    {\n      code: `<button id=\"foo\">Missing type</button>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 1,\n        },\n      ],\n      output: `<button type=\"submit\" id=\"foo\">Missing type</button>`,\n    },\n    {\n      code: `<button type=\"invalid\">Invalid type</button>`,\n      errors: [\n        {\n          message: '\"invalid\" is an invalid value for button type attribute.',\n          line: 1,\n          column: 9,\n          suggestions: [\n            {\n              messageId: \"replaceToSubmit\",\n              output: `<button type=\"submit\">Invalid type</button>`,\n            },\n            {\n              messageId: \"replaceToButton\",\n              output: `<button type=\"button\">Invalid type</button>`,\n            },\n            {\n              messageId: \"replaceToReset\",\n              output: `<button type=\"reset\">Invalid type</button>`,\n            },\n          ],\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-button-type\", rule, {\n  valid: [\n    {\n      code: 'html`<button type=\"submit\">Submit Button</button>`',\n    },\n    {\n      code: 'html`<button type=\"${type}\">Submit Button</button>`',\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<button>Missing type</button>`\",\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 6,\n        },\n      ],\n      output: 'html`<button type=\"submit\">Missing type</button>`',\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-closing-tags.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-closing-tags\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-closing-tags\", rule, {\n  valid: [\n    {\n      code: `<div></div>`,\n    },\n    {\n      code: `<img>`,\n    },\n    {\n      code: `<script></script>`,\n    },\n    {\n      code: `<style></style>`,\n    },\n    {\n      code: `<img/>`,\n      options: [\n        {\n          selfClosing: \"always\",\n        },\n      ],\n    },\n    {\n      code: `<custom-tag> </custom-tag>`,\n      options: [\n        {\n          selfClosingCustomPatterns: [],\n        },\n      ],\n    },\n    {\n      code: `<custom-tag/>`,\n      options: [\n        {\n          selfClosingCustomPatterns: [\"-\"],\n        },\n      ],\n    },\n    {\n      code: `<custom-tag />`,\n      options: [\n        {\n          selfClosingCustomPatterns: [\"-\"],\n        },\n      ],\n    },\n    {\n      code: `<custom-tag> </custom-tag>`,\n      options: [\n        {\n          selfClosingCustomPatterns: [\"-\"],\n        },\n      ],\n    },\n    {\n      code: `<custom-tag id=\"foo\" />`,\n      options: [\n        {\n          selfClosingCustomPatterns: [\"-\"],\n        },\n      ],\n    },\n    {\n      code: `<custom-tag>children</custom-tag>`,\n      options: [\n        {\n          selfClosingCustomPatterns: [\"-\"],\n        },\n      ],\n    },\n    {\n      code: `\n    <body>\n      <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t  <circle> </circle>\n</svg>\n    </body>\n`,\n    },\n    {\n      code: `\n    <body>\n      <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t  <circle />\n</svg>\n    </body>\n`,\n      options: [\n        {\n          selfClosing: \"always\",\n        },\n      ],\n    },\n    {\n      code: `\n    <body>\n      <math>\n        1<mspace width=\"100px\" />2\n      </math>\n    </body>\n`,\n      options: [\n        {\n          selfClosing: \"always\",\n        },\n      ],\n    },\n    // https://github.com/yeonjuan/html-eslint/issues/73\n    {\n      code: `\n<!DOCTYPE html>\n<html>\n<head>\n</head>\n<body>\n<svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n<defs>\n<linearGradient id=\"myGradient\" gradientTransform=\"rotate(90)\">\n</linearGradient>\n</defs>\n</svg>\n</body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<div>`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `<img>`,\n      output: `<img />`,\n      options: [\n        {\n          selfClosing: \"always\",\n        },\n      ],\n      errors: [\n        {\n          messageId: \"missingSelf\",\n        },\n      ],\n    },\n    {\n      code: `<img />`,\n      output: `<img >`,\n      options: [\n        {\n          selfClosing: \"never\",\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<custom-tag />`,\n      options: [\n        {\n          selfClosingCustomPatterns: [],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<custom-tag id=\"foo\" />`,\n      options: [\n        {\n          selfClosingCustomPatterns: [],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<custom-tag></custom-tag>`,\n      options: [\n        {\n          selfClosingCustomPatterns: [\"-\"],\n        },\n      ],\n      output: \"<custom-tag />\",\n      errors: [\n        {\n          messageId: \"missingSelf\",\n        },\n      ],\n    },\n    {\n      code: `<div />`,\n      options: [\n        {\n          selfClosing: \"always\",\n        },\n      ],\n      output: null,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<script>`,\n      errors: [{ messageId: \"missing\" }],\n    },\n    {\n      code: `<style>`,\n      errors: [{ messageId: \"missing\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-closing-tags\", rule, {\n  valid: [\n    {\n      code: \"html`<div></div>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<div>`\",\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-content.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-content\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-content\", rule, {\n  valid: [\n    // Elements with text content\n    { code: `<p>Hello world</p>` },\n    { code: `<a href=\"/foo\">Click here</a>` },\n    { code: `<button>Submit</button>` },\n    { code: `<h1>Page title</h1>` },\n    { code: `<li>Item</li>` },\n    { code: `<label>Name</label>` },\n    { code: `<option value=\"1\">One</option>` },\n    { code: `<dt>Term</dt>` },\n    { code: `<dd>Definition</dd>` },\n\n    // Elements with child element content\n    { code: `<button><img src=\"icon.svg\" alt=\"Submit\" /></button>` },\n    { code: `<p><span>text</span></p>` },\n    { code: `<a href=\"/foo\"><strong>link</strong></a>` },\n    { code: `<label><input type=\"checkbox\" /> Accept</label>` },\n\n    // ARIA accessible name — visible content is optional\n    { code: `<button aria-label=\"Close\"></button>` },\n    { code: `<a href=\"/foo\" aria-label=\"Home\"></a>` },\n    { code: `<button aria-labelledby=\"btn-label\"></button>` },\n\n    // Hidden elements — do not need content\n    { code: `<p hidden></p>` },\n    { code: `<button aria-hidden=\"true\"></button>` },\n    { code: `<li aria-hidden=\"true\"></li>` },\n\n    // Elements not in the checked set are ignored\n    { code: `<div></div>` },\n    { code: `<span></span>` },\n    { code: `<section></section>` },\n\n    // Whitespace-only child text followed by a real child element\n    { code: `<button>  <span>OK</span>  </button>` },\n  ],\n\n  invalid: [\n    // Completely empty elements\n    {\n      code: `<p></p>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<a href=\"/foo\"></a>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<button></button>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<h1></h1>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<h2></h2>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<h3></h3>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<li></li>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<label></label>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<option value=\"1\"></option>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<dt></dt>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<dd></dd>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n\n    // Whitespace-only text (no meaningful content)\n    {\n      code: `<p>   </p>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: `<button>\n      </button>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n\n    // aria-hidden child only — no visible content and hidden children don't count\n    {\n      code: `<p><span aria-hidden=\"true\">hidden</span></p>`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n\n    // Self-closing syntax (browsers render <p /> as <p></p>)\n    {\n      code: `<p />`,\n      errors: [{ messageId: \"requireContent\" }],\n    },\n\n    // Multiple violations\n    {\n      code: `<p></p><button></button>`,\n      errors: [\n        { messageId: \"requireContent\" },\n        { messageId: \"requireContent\" },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-content\", rule, {\n  valid: [\n    {\n      code: \"html`<p>content</p>`\",\n    },\n    {\n      code: \"html`<p hidden></p>`\",\n    },\n    {\n      code: \"html`<p hidden=${value}></p>`\",\n    },\n    {\n      code: \"html`<p>${content}</p>`\",\n    },\n    {\n      code: \"html`<button aria-label='Close'></button>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<p></p>`\",\n      errors: [{ messageId: \"requireContent\" }],\n    },\n    {\n      code: \"html`<button></button>`\",\n      errors: [{ messageId: \"requireContent\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-details-summary.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-details-summary\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-details-summary\", rule, {\n  valid: [\n    // <summary> is the first child element — standard usage\n    {\n      code: \"<details><summary>Show more</summary><p>Hidden content</p></details>\",\n    },\n    // Whitespace text nodes before <summary> are fine\n    {\n      code: `<details>\n  <summary>Toggle</summary>\n  <p>Content here</p>\n</details>`,\n    },\n    // <summary> with attributes\n    {\n      code: \"<details><summary class='toggle'>Details</summary>Content</details>\",\n    },\n    // Empty <summary> is still a valid first child (no-empty-headings covers that)\n    {\n      code: \"<details><summary></summary></details>\",\n    },\n    // Nested <details> each with <summary>\n    {\n      code: `<details>\n  <summary>Outer</summary>\n  <details>\n    <summary>Inner</summary>\n    <p>Deep content</p>\n  </details>\n</details>`,\n    },\n    // Non-<details> elements are not checked\n    { code: \"<div><p>No summary needed</p></div>\" },\n    { code: \"<section><h2>Heading</h2></section>\" },\n  ],\n\n  invalid: [\n    // No children at all\n    {\n      code: \"<details></details>\",\n      errors: [{ messageId: \"missingSummary\" }],\n    },\n    // Only text content, no <summary>\n    {\n      code: \"<details>Just text</details>\",\n      errors: [{ messageId: \"missingSummary\" }],\n    },\n    // Element children but no <summary> anywhere\n    {\n      code: \"<details><p>Content without summary</p></details>\",\n      errors: [{ messageId: \"missingSummary\" }],\n    },\n    // <summary> exists but is not the first element child\n    {\n      code: \"<details><p>Content first</p><summary>Late summary</summary></details>\",\n      errors: [{ messageId: \"summaryNotFirst\" }],\n    },\n    // Multiple element children, <summary> buried after others\n    {\n      code: \"<details><div>Wrapper</div><summary>Too late</summary></details>\",\n      errors: [{ messageId: \"summaryNotFirst\" }],\n    },\n    // Inner <details> missing its own <summary>\n    {\n      code: `<details>\n  <summary>Outer summary</summary>\n  <details>\n    <p>No inner summary</p>\n  </details>\n</details>`,\n      errors: [{ messageId: \"missingSummary\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"require-details-summary (template)\", rule, {\n  valid: [\n    {\n      code: \"const t = html`<details><summary>Info</summary><p>More</p></details>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"const t = html`<details><p>Missing summary</p></details>`\",\n      errors: [{ messageId: \"missingSummary\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-doctype.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-doctype\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-doctype\", rule, {\n  valid: [\n    {\n      code: `\n<!DOCTYPE html>\n<html>\n</html>\n`,\n    },\n    {\n      code: `\n<div></div>\n      `,\n    },\n  ],\n  invalid: [\n    {\n      code: `<html>\n</html>\n`,\n      output: `<!DOCTYPE html>\n<html>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-explicit-size.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-explicit-size\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-explicit-size\", rule, {\n  valid: [\n    {\n      code: \"<div></div>\",\n    },\n    {\n      code: `<img width=\"200px\" height=\"300px\">`,\n    },\n    {\n      code: `<iframe width=\"200px\" height=\"300px\">`,\n    },\n    {\n      code: `<img class=\"size\" width=\"200px\">`,\n      options: [\n        {\n          allowClass: [\"size\"],\n        },\n      ],\n    },\n    {\n      code: `<img class=\"other size\" width=\"200px\">`,\n      options: [\n        {\n          allowClass: [\"size\"],\n        },\n      ],\n    },\n    {\n      code: `<img id=\"foo\">`,\n      options: [\n        {\n          allowId: [\"foo\"],\n        },\n      ],\n    },\n    {\n      code: `<img id=\"foo\">`,\n      options: [\n        {\n          allowId: [\"bar\", \"foo\"],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `<img width=\"200px\">`,\n      errors: [\n        {\n          messageId: \"missingHeight\",\n        },\n      ],\n    },\n    {\n      code: `<img height=\"200px\">`,\n      errors: [\n        {\n          messageId: \"missingWidth\",\n        },\n      ],\n    },\n    {\n      code: `<iframe></iframe>`,\n      errors: [\n        {\n          messageId: \"missingHeight\",\n        },\n        {\n          messageId: \"missingWidth\",\n        },\n      ],\n    },\n    {\n      code: `<img class=\"foo\" width=\"200px\">`,\n      errors: [\n        {\n          messageId: \"missingHeight\",\n        },\n      ],\n      options: [\n        {\n          allowClass: [\"size\"],\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-explicit-size\", rule, {\n  valid: [\n    {\n      code: \"html`<div></div>`\",\n    },\n    {\n      code: 'html`<img width=\"200px\" height=\"200px\">`',\n    },\n    {\n      code: 'html`<img width=\"200px\" class=\"size\">`',\n      options: [\n        {\n          allowClass: [\"size\"],\n        },\n      ],\n    },\n    {\n      code: 'html`<img id=\"size\">`',\n      options: [\n        {\n          allowId: [\"size\"],\n        },\n      ],\n    },\n    {\n      code: \"html`<img width=${width} height=${height}>`\",\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<img width=\"200px\">\\``,\n      errors: [\n        {\n          messageId: \"missingHeight\",\n        },\n      ],\n    },\n    {\n      code: `html\\`<iframe width=\"200px\">\\``,\n      errors: [\n        {\n          messageId: \"missingHeight\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-form-method.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-form-method\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-form-method\", rule, {\n  valid: [\n    {\n      code: \"<div></div>\",\n    },\n    {\n      code: '<form method=\"POST\"></form>',\n    },\n    {\n      code: '<form method=\"post\"></form>',\n    },\n    {\n      code: '<form method=\"GET\"></form>',\n    },\n    {\n      code: '<form method=\"get\"></form>',\n    },\n    {\n      code: '<form method=\"DIALOG\"></form>',\n    },\n    {\n      code: '<form method=\"dialog\"></form>',\n    },\n  ],\n  invalid: [\n    {\n      code: \"<form></form>\",\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: \"<form method></form>\",\n      errors: [\n        {\n          messageId: \"missingValue\",\n        },\n      ],\n    },\n    {\n      code: \"<form method='other'></form>\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-form-method\", rule, {\n  valid: [\n    {\n      code: \"html`<div></div>`\",\n    },\n    {\n      code: \"html`<form method='GET'></form>`\",\n    },\n    {\n      code: 'html`<form method=\"${METHOD}\"></form>`',\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<form method='other'></form>`\",\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-frame-title.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-frame-title\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-frame-title\", rule, {\n  valid: [\n    {\n      code: `<iframe title=\"foo\"></iframe>`,\n    },\n    {\n      code: `\n<frameset cols=\"10%, 90%\">\n<frame src=\"nav.html\" title=\"bar\" />\n<frame src=\"doc.html\" title=\"baz\" />\n</frameset>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<iframe></iframe>`,\n      errors: [\n        {\n          message: \"Missing `title` attribute in <iframe>.\",\n        },\n      ],\n    },\n    {\n      code: `<iframe title=\"\"></iframe>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `<iframe title></iframe>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `\n<frameset cols=\"10%, 90%\">\n<frame src=\"nav.html\"/>\n</frameset>`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<frameset cols=\"10%, 90%\">\n<frame src=\"nav.html\" title=\"\"/>\n</frameset>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n    {\n      code: `\n<frameset cols=\"10%, 90%\">\n<frame src=\"nav.html\" title/>\n</frameset>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-iframe-title\", rule, {\n  valid: [\n    {\n      code: 'html`<iframe title=\"foo\"></iframe>`',\n    },\n    {\n      code: 'html`<iframe title=\"${title}\"></iframe>`',\n    },\n  ],\n  invalid: [\n    {\n      code: 'html`<iframe title=\"\"></iframe>`',\n      errors: [\n        {\n          messageId: \"unexpected\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-img-alt.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-img-alt\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-img-alt\", rule, {\n  valid: [\n    {\n      code: `\n<img src=\"./image.png\" alt=\"image description\"/>\n`,\n    },\n    {\n      code: `\n<img src=\"./image.png\" alt=\"\"/>\n`,\n    },\n    {\n      code: `\n<img src=\"./image.png\" [alt]=\"image description\"/>\n`,\n      options: [{ substitute: [\"[alt]\"] }],\n    },\n    {\n      code: `\n<img src=\"./image.png\" [attr.alt]=\"image description\"/>\n`,\n      options: [{ substitute: [\"[alt]\", \"[attr.alt]\"] }],\n    },\n    {\n      code: `\n<html>\n  <body>\n    <img src=\"./image.png\" alt=\"image description\">\n  </body>\n</html>\n`,\n    },\n    {\n      code: `\n<html>\n  <body>\n    <img src=\"./image.png\" alt=\"\">\n  </body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<img src=\"./image.png\"/>\n`,\n      errors: [\n        {\n          messageId: \"missingAlt\",\n          suggestions: [\n            {\n              messageId: \"insertAlt\",\n              output: `\n<img src=\"./image.png\" alt=\"\"/>\n`,\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n  <body>\n    <img src=\"./image.png\">\n  </body>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"missingAlt\",\n          line: 4,\n          column: 5,\n          endLine: 4,\n          endColumn: 28,\n          suggestions: [\n            {\n              messageId: \"insertAlt\",\n              output: `\n<html>\n  <body>\n    <img src=\"./image.png\" alt=\"\">\n  </body>\n</html>\n`,\n            },\n          ],\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n  <body>\n    <img src=\"./image.png\">\n  </body>\n</html>\n`,\n      options: [{ substitute: [\"[alt]\"] }],\n      errors: [\n        {\n          messageId: \"missingAlt\",\n          line: 4,\n          column: 5,\n          endLine: 4,\n          endColumn: 28,\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-img-alt\", rule, {\n  valid: [\n    {\n      code: `html\\`<img src=\"./image.png\" alt=\"image description\"/>\\``,\n    },\n    {\n      code: `html\\`<img src=\"./image.png\" alt=\"\\${alt}\"/>\\``,\n    },\n    {\n      code: `html\\`<img src=\"./image.png\" alt=\"\"/>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<img src=\"./image.png\"/>\\``,\n      errors: [\n        {\n          messageId: \"missingAlt\",\n          line: 1,\n          column: 6,\n          endLine: 1,\n          endColumn: 30,\n          suggestions: [\n            {\n              messageId: \"insertAlt\",\n              output: `html\\`<img src=\"./image.png\" alt=\"\"/>\\``,\n            },\n          ],\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-input-label.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-input-label\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-input-label\", rule, {\n  valid: [\n    {\n      code: `<input id=\"foo\">`,\n    },\n    {\n      code: `<textarea id=\"foo\"></textarea>`,\n    },\n    {\n      code: `<input type=\"hidden\">`,\n    },\n    {\n      code: `<label>name: <input></label>`,\n    },\n    {\n      code: `<textarea aria-labelledby=\"foo\" />`,\n    },\n    {\n      code: `<textarea aria-label=\"foo\" />`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<input type=\"text\">`,\n      errors: [\n        {\n          messageId: \"missingLabel\",\n        },\n      ],\n    },\n    {\n      code: `<textarea></textarea>`,\n      errors: [\n        {\n          messageId: \"missingLabel\",\n        },\n      ],\n    },\n    {\n      code: `<label>name: </label><input type=\"text\">`,\n      errors: [\n        {\n          messageId: \"missingLabel\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-input-label\", rule, {\n  valid: [\n    {\n      code: `html\\`<input id=\"foo\">\\``,\n    },\n    {\n      code: `html\\`<label>name: <input></label>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<input type=\"text\">\\``,\n      errors: [\n        {\n          messageId: \"missingLabel\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-lang.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-lang\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"require-lang\", rule, {\n  valid: [\n    {\n      code: `\n<html lang=\"ko\">\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 2,\n          column: 1,\n          endColumn: 7,\n          endLine: 2,\n        },\n      ],\n    },\n    {\n      code: `\n<html lang=\"\">\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html lang=\"  \">\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] require-lang\", rule, {\n  valid: [\n    {\n      code: `html\\`<html lang=\"ko\"></html>\\``,\n    },\n    {\n      code: `html\\`<html lang=\"\\${lang}\"></html>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<html></html>\\``,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-li-container.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-li-container\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-li-container\", rule, {\n  valid: [\n    {\n      code: `\n<ul>\n      <li>list</li>\n</ul>\n`,\n    },\n    {\n      code: `\n<ol>\n      <li>list</li>\n</ol>\n`,\n    },\n    {\n      code: `\n<menu>\n      <li>list</li>\n</menu>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<div>\n      <li>list</li>\n</div>\n`,\n\n      errors: [\n        {\n          messageId: \"invalid\",\n        },\n      ],\n    },\n    {\n      code: `\n<li>list</li>\n`,\n\n      errors: [\n        {\n          messageId: \"invalid\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-meta-charset.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-meta-charset\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-meta-charset\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n      <head>\n          <meta charset=\"UTF-8\">\n      </head>\n</html>\n`,\n    },\n    {\n      code: `\n<html>\n      <body>\n      </body>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\">\n      </head>\n</html>\n`,\n      output: `\n<html>\n      <head>\n          <meta charset=\"UTF-8\">\n          <meta name=\"description\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n      </head>\n</html>\n`,\n      output: `\n<html>\n      <head>\n      <meta charset=\"UTF-8\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta charset=\"\">\n      </head>\n</html>\n`,\n      output: `\n<html>\n      <head>\n          <meta charset=\"UTF-8\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n        <title> title </title>\n        <meta foo=\"charset\">\n      </head>\n</html>\n`,\n      output: `\n<html>\n      <head>\n        <meta charset=\"UTF-8\">\n        <title> title </title>\n        <meta foo=\"charset\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      // bare charset attribute with no value: <meta charset>\n      code: `<html><head><meta charset></head></html>`,\n      output: `<html><head><meta charset=\"UTF-8\"></head></html>`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      // head with no leading whitespace before first child\n      code: `<html><head><title>t</title></head></html>`,\n      output: `<html><head>\\n            <meta charset=\"UTF-8\"><title>t</title></head></html>`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      // completely empty head (zero children, no whitespace)\n      code: `<html><head></head></html>`,\n      output: `<html><head>\\n        <meta charset=\"UTF-8\"></head></html>`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-meta-description.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-meta-description\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-meta-description\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\" content=\"foo\">\n      </head>\n</html>\n`,\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"Description\" content=\"foo\">\n      </head>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"author\" content=\"Yeon JuAn\">\n      </head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\">\n      </head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\" content=\"\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\" content=\"  \">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\" content>\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-meta-viewport.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-meta-viewport\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-meta-viewport\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"viewport\" content=\"foo\">\n      </head>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"description\">\n      </head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n          <meta name=\"viewport\" content=\"\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n      <head>\n        <title> title </title>\n        <meta foo=\"description\">\n      </head>\n</html>\n`,\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-open-graph-protocol.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-open-graph-protocol\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-open-graph-protocol\", rule, {\n  valid: [\n    {\n      code: \"<html></html>\",\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:url\" content=\"title\" />\n        <meta property=\"og:type\" content=\"video.movie\" />\n        <meta property=\"og:title\" content=\"title\" />\n        <meta property=\"og:image\" content=\"https://image.png\" />\n      </head>\n      </html>`,\n    },\n  ],\n  invalid: [\n    {\n      code: \"<html><head></head></html>\",\n      errors: [\n        {\n          message:\n            \"Require use of meta tags for OGP. (og:title, og:type, og:url, og:image)\",\n          line: 1,\n          column: 7,\n        },\n      ],\n    },\n    {\n      // Error should be reported at the opening <head> tag only, not the entire head content\n      code: `<html>\n  <head>\n    <meta property=\"og:title\" content=\"title\" />\n  </head>\n</html>`,\n      errors: [\n        {\n          message:\n            \"Require use of meta tags for OGP. (og:type, og:url, og:image)\",\n          line: 2,\n          column: 3,\n        },\n      ],\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:title\" content=\"title\">\n      </head>\n      </html>`,\n      errors: [\n        {\n          message:\n            \"Require use of meta tags for OGP. (og:type, og:url, og:image)\",\n        },\n      ],\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:title\" content=\"title\" />\n        <meta property=\"og:image\" content=\"https://image.png\" />\n      </head>\n      </html>`,\n      errors: [\n        {\n          message: \"Require use of meta tags for OGP. (og:type, og:url)\",\n        },\n      ],\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:title\" content=\"title\" />\n        <meta property=\"og:image\" content=\"https://image.png\" />\n      </head>\n      </html>`,\n      options: [[\"description\"]],\n      errors: [\n        {\n          message: \"Require use of meta tags for OGP. (og:description)\",\n        },\n      ],\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:title\" content=\"title\" />\n        <meta property=\"og:image\" content=\"https://image.png\" />\n      </head>\n      </html>`,\n      options: [[\"og:description\", \"og:video\"]],\n      errors: [\n        {\n          message:\n            \"Require use of meta tags for OGP. (og:description, og:video)\",\n        },\n      ],\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:url\" content=\"title\" />\n        <meta property=\"og:type\" content=\"video.movie\" />\n        <meta property=\"og:title\" content=\"\" />\n        <meta property=\"og:image\" />\n      </head>\n      </html>`,\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `<html>\n      <head>\n        <meta property=\"og:url\" />\n        <meta property=\"og:type\" content=\"video.movie\" />\n        <meta property=\"og:title\" content=\"\" />\n        <meta property=\"og:image\" />\n      </head>\n      </html>`,\n      options: [[\"title\", \"og:image\"]],\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/require-title.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/require-title\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"require-title\", rule, {\n  valid: [\n    {\n      code: `\n<html>\n<head>\n<title> title </title>\n</head>\n</html>\n`,\n    },\n  ],\n  invalid: [\n    {\n      code: `\n<html>\n<head>\n</head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"missing\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<head>\n<title></title>\n</head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n    {\n      code: `\n<html>\n<head>\n<title>\n</title>\n</head>\n</html>\n`,\n\n      errors: [\n        {\n          messageId: \"empty\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/sort-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/sort-attrs\");\nconst { TEMPLATE_ENGINE_SYNTAX } = require(\"@html-eslint/parser\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"sort-attrs\", rule, {\n  valid: [\n    {\n      code: '<div a=\"1\"></div>',\n    },\n    {\n      code: '<input autocomplete=\"foo\" checked />',\n    },\n    {\n      code: '<input id=\"foo\" type=\"checkbox\" autocomplete=\"bar\" checked />',\n    },\n    {\n      code: \"<script type='module' src='https://scripts.js'></script>\",\n    },\n    {\n      code: '<style type=\"text/css\" media=\"all and (max-width: 500px)\"',\n    },\n    {\n      code: `<span class=\"font-semibold text-emerald-500\" {{ stimulus_controller('test') }}>Test</span>`,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: {\n            \"{{\": \"}}\",\n          },\n        },\n      },\n    },\n    {\n      code: `<span class=\"font-semibold text-emerald-500\" {{ stimulus_controller('test') }}>Test</span>`,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.TWIG,\n        },\n      },\n    },\n    // Pattern tests\n    {\n      code: '<div id=\"foo\" data-test=\"value\" data-custom=\"attr\" style=\"color:red\" onclick=\"foo\"></div>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"data-.*\" }, \"style\"],\n        },\n      ],\n    },\n    {\n      code: '<input id=\"foo\" aria-label=\"test\" aria-describedby=\"desc\" type=\"text\" value=\"test\" />',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"aria-.*\" }, \"type\"],\n        },\n      ],\n    },\n    {\n      code: '<button id=\"btn\" ng-click=\"handler\" ng-if=\"visible\" class=\"button\" type=\"submit\"></button>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"ng-.*\" }, \"class\", \"type\"],\n        },\n      ],\n    },\n    {\n      code: '<div id=\"foo\" data-test=\"value\" data-custom=\"attr\" aria-label=\"test\" aria-describedby=\"desc\" class=\"button\" onclick=\"foo\"></div>',\n      options: [\n        {\n          priority: [\n            \"id\",\n            { pattern: \"data-.*\" },\n            { pattern: \"aria-.*\" },\n            \"class\",\n          ],\n        },\n      ],\n    },\n    {\n      code: `\n<button id=\"nice\"\n  <% if current_user.admin? %>\n  class=\"btn-admin\"\n  <% end %>\n  >\n</button>\n      `,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.ERB,\n        },\n      },\n    },\n  ],\n  invalid: [\n    {\n      code: \"<script src='https://scripts.js' type='module'></script>\",\n      output: \"<script type='module' src='https://scripts.js'></script>\",\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<style media=\"all and (max-width: 500px)\" type=\"text/css\"></style>',\n      output:\n        '<style type=\"text/css\" media=\"all and (max-width: 500px)\"></style>',\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<input autocomplete=\"bar\" checked id=\"foo\" type=\"checkbox\" />',\n      output: '<input id=\"foo\" type=\"checkbox\" autocomplete=\"bar\" checked />',\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: '<input checked autocomplete=\"foo\" />',\n      output: '<input autocomplete=\"foo\" checked />',\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: '<div b=\"2\" a=\"1\"></div>',\n      output: '<div a=\"1\" b=\"2\"></div>',\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: '<div b=\"2\" a=\"1\" c=\"3\"></div>',\n      output: '<div a=\"1\" b=\"2\" c=\"3\"></div>',\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n        <div\n          b=\"2\"\n          a=\"1\"\n          c=\"3\"\n        >\n        </div>\n      `,\n      output: `\n        <div\n          a=\"1\"\n          b=\"2\"\n          c=\"3\"\n        >\n        </div>\n      `,\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n        <div\n          b\n          a=\"1\"\n          c\n        >\n        </div>\n      `,\n      output: `\n        <div\n          a=\"1\"\n          b\n          c\n        >\n        </div>\n      `,\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n        <div\n          b\n               a=\"1\"\n            c\n        >\n        </div>\n      `,\n      output: `\n        <div\n          a=\"1\"\n               b\n            c\n        >\n        </div>\n      `,\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n        <div\n          b\n          id=\"foo\"\n          a=\"1\"\n          c\n        >\n        </div>\n      `,\n      output: `\n        <div\n          id=\"foo\"\n          a=\"1\"\n          b\n          c\n        >\n        </div>\n      `,\n      options: [\n        {\n          priority: [\"id\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n        <div\n          style=\"background:red\"\n          b\n          id=\"foo\"\n          a=\"1\"\n          c\n        >\n        </div>\n      `,\n      output: `\n        <div\n          id=\"foo\"\n          style=\"background:red\"\n          a=\"1\"\n          b\n          c\n        >\n        </div>\n      `,\n      options: [\n        {\n          priority: [\"id\", \"style\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n<button \n  style=\"color:black\"\n  id=\"nice\"\n  <% if current_user.admin? %>\n  data-x=\"1\"\n  class=\"btn-admin\"\n  <% end %>\n  >\n</button>\n      `,\n      output: `\n<button \n  id=\"nice\"\n  style=\"color:black\"\n  <% if current_user.admin? %>\n  class=\"btn-admin\"\n  data-x=\"1\"\n  <% end %>\n  >\n</button>\n      `,\n      languageOptions: {\n        parserOptions: {\n          templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.ERB,\n        },\n      },\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    // Pattern invalid tests\n    {\n      code: '<div style=\"color:red\" data-test=\"value\" id=\"foo\" onclick=\"foo\"></div>',\n      output:\n        '<div id=\"foo\" data-test=\"value\" style=\"color:red\" onclick=\"foo\"></div>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"data-.*\" }, \"style\"],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<div data-custom=\"attr\" data-test=\"value\" id=\"foo\" style=\"color:red\" onclick=\"foo\"></div>',\n      output:\n        '<div id=\"foo\" data-custom=\"attr\" data-test=\"value\" style=\"color:red\" onclick=\"foo\"></div>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"data-.*\" }, \"style\"],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<input type=\"text\" aria-describedby=\"desc\" id=\"foo\" aria-label=\"test\" value=\"test\" />',\n      output:\n        '<input id=\"foo\" aria-describedby=\"desc\" aria-label=\"test\" type=\"text\" value=\"test\" />',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"aria-.*\" }, \"type\"],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<button class=\"button\" ng-if=\"visible\" id=\"btn\" ng-click=\"handler\" type=\"submit\"></button>',\n      output:\n        '<button id=\"btn\" ng-if=\"visible\" ng-click=\"handler\" class=\"button\" type=\"submit\"></button>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"ng-.*\" }, \"class\", \"type\"],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<div v-model=\"data\" v-if=\"show\" id=\"container\" v-on:click=\"handler\" class=\"wrapper\"></div>',\n      output:\n        '<div id=\"container\" v-model=\"data\" v-if=\"show\" v-on:click=\"handler\" class=\"wrapper\"></div>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"v-.*\" }],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<div data-value=\"2\" custom=\"test\" data-id=\"1\" id=\"foo\" data-name=\"bar\"></div>',\n      output:\n        '<div id=\"foo\" data-value=\"2\" data-id=\"1\" data-name=\"bar\" custom=\"test\"></div>',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"data-.*\" }],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    // Multiple patterns invalid tests\n    {\n      code: '<div aria-label=\"test\" data-custom=\"attr\" id=\"foo\" ng-click=\"handler\" class=\"button\" data-test=\"value\" aria-describedby=\"desc\" onclick=\"foo\"></div>',\n      output:\n        '<div id=\"foo\" data-custom=\"attr\" data-test=\"value\" aria-label=\"test\" aria-describedby=\"desc\" class=\"button\" ng-click=\"handler\" onclick=\"foo\"></div>',\n      options: [\n        {\n          priority: [\n            \"id\",\n            { pattern: \"data-.*\" },\n            { pattern: \"aria-.*\" },\n            \"class\",\n          ],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n    {\n      code: '<input v-model=\"value\" type=\"text\" data-id=\"123\" aria-required=\"true\" id=\"input\" v-if=\"show\" aria-label=\"Input\" data-name=\"test\"></input>',\n      output:\n        '<input id=\"input\" data-id=\"123\" data-name=\"test\" aria-required=\"true\" aria-label=\"Input\" v-model=\"value\" v-if=\"show\" type=\"text\"></input>',\n      options: [\n        {\n          priority: [\n            \"id\",\n            { pattern: \"data-.*\" },\n            { pattern: \"aria-.*\" },\n            { pattern: \"v-.*\" },\n            \"type\",\n          ],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] sort-attrs\", rule, {\n  valid: [\n    {\n      code: 'html`<input id=\"foo\" type=\"checkbox\" autocomplete=\"bar\" checked />`',\n    },\n    {\n      code: 'html`<div id=\"foo\" data-test=\"value\" data-custom=\"attr\" style=\"color:red\" onclick=\"foo\"></div>`',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"data-.*\" }, \"style\"],\n        },\n      ],\n    },\n    {\n      code: 'html`<div id=\"foo\" data-test=\"value\" data-custom=\"attr\" aria-label=\"test\" aria-describedby=\"desc\" class=\"button\" onclick=\"foo\"></div>`',\n      options: [\n        {\n          priority: [\n            \"id\",\n            { pattern: \"data-.*\" },\n            { pattern: \"aria-.*\" },\n            \"class\",\n          ],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: `\n        html\\`<div\n          style=\"background:red\"\n          b\n          id=\"foo\"\n          a=\"1\"\n          c\n        >\n        </div>\\`\n      `,\n      output: `\n        html\\`<div\n          id=\"foo\"\n          style=\"background:red\"\n          a=\"1\"\n          b\n          c\n        >\n        </div>\\`\n      `,\n      options: [\n        {\n          priority: [\"id\", \"style\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: `\n        html\\`<div\n          style=\"background:red\"\n          b\n          id=\"\\${foo}\"\n          a=\"1\"\n          c\n        >\n        </div>\\`\n      `,\n      output: `\n        html\\`<div\n          id=\"\\${foo}\"\n          style=\"background:red\"\n          a=\"1\"\n          b\n          c\n        >\n        </div>\\`\n      `,\n      options: [\n        {\n          priority: [\"id\", \"style\"],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"unsorted\",\n        },\n      ],\n    },\n    {\n      code: 'html`<div style=\"color:red\" data-test=\"value\" id=\"foo\" onclick=\"foo\"></div>`',\n      output:\n        'html`<div id=\"foo\" data-test=\"value\" style=\"color:red\" onclick=\"foo\"></div>`',\n      options: [\n        {\n          priority: [\"id\", { pattern: \"data-.*\" }, \"style\"],\n        },\n      ],\n      errors: [{ messageId: \"unsorted\" }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/svg-require-viewbox.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/svg-require-viewbox\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"svg-require-viewbox\", rule, {\n  valid: [\n    {\n      code: `<svg viewBox=\"0 0 100 100\"></svg>`,\n    },\n    {\n      code: `<svg viewBox=\"0 0 200 300\"><rect width=\"100\" height=\"100\"/></svg>`,\n    },\n    {\n      code: `<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"></svg>`,\n    },\n    {\n      code: `<div></div>`,\n    },\n    {\n      code: `<img src=\"icon.png\">`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<svg></svg>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: `<svg width=\"100\" height=\"100\"></svg>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: `<svg xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0z\"/></svg>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: `<div><svg width=\"24\" height=\"24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg></div>`,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\"\"></svg>`,\n      errors: [\n        {\n          messageId: \"empty\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\" \"></svg>`,\n      errors: [\n        {\n          messageId: \"empty\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n    {\n      code: `<svg viewBox=\"   \" width=\"100\" height=\"100\"></svg>`,\n      errors: [\n        {\n          messageId: \"empty\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n    {\n      code: `<SVG viewBox=\"   \" width=\"100\" height=\"100\"></SVG>`,\n      errors: [\n        {\n          messageId: \"empty\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] svg-require-viewbox\", rule, {\n  valid: [\n    {\n      code: `html\\`<svg viewBox=\"0 0 100 100\"></svg>\\``,\n    },\n    {\n      code: `html\\`<svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"></svg>\\``,\n    },\n    {\n      code: `html\\`<svg viewBox=\"\\${viewBox}\"></svg>\\``,\n    },\n    {\n      code: `html\\`<div><svg viewBox=\"0 0 100 100\"></svg></div>\\``,\n    },\n  ],\n  invalid: [\n    {\n      code: `html\\`<svg></svg>\\``,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n    {\n      code: `html\\`<svg width=\"100\" height=\"100\"></svg>\\``,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 6,\n        },\n      ],\n    },\n    {\n      code: `html\\`<svg viewBox=\"\"></svg>\\``,\n      errors: [\n        {\n          messageId: \"empty\",\n          line: 1,\n          column: 11,\n        },\n      ],\n    },\n    {\n      code: `html\\`<svg viewBox=\" \"></svg>\\``,\n      errors: [\n        {\n          messageId: \"empty\",\n          line: 1,\n          column: 11,\n        },\n      ],\n    },\n    {\n      code: `html\\`<div><svg width=\"24\" height=\"24\"></svg></div>\\``,\n      errors: [\n        {\n          messageId: \"missing\",\n          line: 1,\n          column: 11,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/use-baseline.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/use-baseline\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"use-baseline\", rule, {\n  valid: [\n    {\n      code: `<slot></slot>`,\n    },\n    {\n      code: `<div id=\"foo\"></div>`,\n    },\n    {\n      code: `<svg></svg>`,\n    },\n    {\n      code: `<custom-element popovertarget=\"mypopover\"></custom-element>`,\n    },\n    {\n      code: `<meta http-equiv=\"refresh\" content=\"5\">`,\n    },\n    {\n      code: `<script type=\"module\"></script>`,\n    },\n    {\n      code: `<slot></slot>`,\n      options: [\n        {\n          available: \"widely\",\n        },\n      ],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      options: [\n        {\n          available: \"newly\",\n        },\n      ],\n    },\n    {\n      code: `<input type=\"number\"></input>`,\n    },\n    {\n      code: `<input type=\"unknown\"></input>`,\n    },\n    {\n      code: `<input type=\"tel\"></input>`,\n    },\n    {\n      code: `<a href=\"https://html-eslint.org\"></a>`,\n    },\n    {\n      code: `<td></td>`,\n    },\n    {\n      code: `<td rowspan=\"1\"></td>`,\n    },\n    {\n      code: `<th rowspan=\"2\"></th>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<slot></slot>`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n          column: 1,\n          endColumn: 14,\n          line: 1,\n        },\n      ],\n      options: [\n        {\n          available: 2001,\n        },\n      ],\n    },\n    {\n      code: `<SLOT></SLOT>`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n          column: 1,\n          endColumn: 14,\n          line: 1,\n        },\n      ],\n      options: [\n        {\n          available: 2001,\n        },\n      ],\n    },\n    {\n      code: `<span slot=\"username\">Jane Doe</span>`,\n      errors: [\n        {\n          message: \"Attribute 'slot' is not a 2019 available baseline feature.\",\n        },\n      ],\n      options: [\n        {\n          available: 2019,\n        },\n      ],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      errors: [\n        {\n          messageId: \"notBaselineElementAttribute\",\n        },\n        {\n          messageId: \"notBaselineElementAttribute\",\n        },\n      ],\n      options: [\n        {\n          available: \"widely\",\n        },\n      ],\n    },\n    {\n      code: `<template shadowrootmode=\"open\"></template>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'shadowrootmode' on '<template>' is not a widely available baseline feature.\",\n          column: 11,\n          endColumn: 25,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: `<div contenteditable=\"plaintext-only\"></div>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'contenteditable=\\\"plaintext-only\\\"' is not a widely available baseline feature.\",\n          column: 23,\n          endColumn: 37,\n          line: 1,\n        },\n      ],\n    },\n    {\n      // upper case\n      code: `<div contenteditable=\"PLAINTEXT-ONLY\"></div>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'contenteditable=\\\"PLAINTEXT-ONLY\\\"' is not a widely available baseline feature.\",\n          column: 23,\n          endColumn: 37,\n          line: 1,\n        },\n      ],\n    },\n    {\n      // trailing space\n      code: `<div contenteditable=\"PLAINTEXT-ONLY \"></div>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'contenteditable=\\\"PLAINTEXT-ONLY \\\"' is not a widely available baseline feature.\",\n          column: 23,\n          endColumn: 38,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: `<script type=\"module\"></script>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'type=\\\"module\\\"' on '<script>' is not a 2017 available baseline feature.\",\n          column: 15,\n          endColumn: 21,\n        },\n      ],\n      options: [\n        {\n          available: 2017,\n        },\n      ],\n    },\n    {\n      code: `<style blocking=\"render\"></style>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'blocking' on '<style>' is not a widely available baseline feature.\",\n          column: 8,\n          endColumn: 16,\n        },\n      ],\n      options: [\n        {\n          available: \"widely\",\n        },\n      ],\n    },\n    {\n      code: `<input type=\"week\"></input>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'type=\\\"week\\\"' on '<input>' is not a widely available baseline feature.\",\n          column: 14,\n          endColumn: 18,\n        },\n      ],\n    },\n    {\n      code: `<a href=\"sms:00000\"></a>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'href=\\\"sms:00000\\\"' on '<a>' is not a widely available baseline feature.\",\n          column: 10,\n          endColumn: 19,\n        },\n      ],\n    },\n    {\n      code: `<td rowspan=\"0\"></td>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'rowspan=\\\"0\\\"' on '<td>' is not a widely available baseline feature.\",\n          column: 14,\n          endColumn: 15,\n        },\n      ],\n    },\n    {\n      code: `<th rowspan=\"0\"></th>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'rowspan=\\\"0\\\"' on '<th>' is not a widely available baseline feature.\",\n          column: 14,\n          endColumn: 15,\n        },\n      ],\n    },\n  ],\n});\n\ntemplateRuleTester.run(\"[template] use-baseline\", rule, {\n  valid: [\n    {\n      code: \"html`<option></option>`;\",\n    },\n  ],\n  invalid: [\n    {\n      code: \"html`<select size='2'></select>`;\",\n      errors: [\n        {\n          message:\n            \"Attribute 'size' on '<select>' is not a widely available baseline feature.\",\n          column: 14,\n          endColumn: 18,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: \"html`<select size='${1}'></select>`;\",\n      errors: [\n        {\n          message:\n            \"Attribute 'size' on '<select>' is not a widely available baseline feature.\",\n          column: 14,\n          endColumn: 18,\n          line: 1,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tests/rules/utils/template-literal.test.js",
    "content": "const { SourceCode } = require(\"eslint\");\nconst { parse } = require(\"espree\");\nconst {\n  parseTemplateLiteral,\n} = require(\"../../../lib/rules/utils/template-literal\");\n\n/** @param {string} code */\nconst parseCode = (code) => {\n  const parsed = parse(code, {\n    range: true,\n    loc: true,\n    ecmaVersion: \"latest\",\n  });\n  const sourceCode = new SourceCode({\n    text: code,\n    ast: {\n      ...parsed,\n      tokens: [],\n      comments: [],\n      // @ts-ignore\n      loc: parsed.loc,\n      // @ts-ignore\n      range: parsed.range,\n    },\n  });\n  return { parsed, sourceCode };\n};\n\ndescribe(\"parseTemplateLiteral\", () => {\n  it(\"should cache result\", () => {\n    const { parsed, sourceCode } = parseCode(`html\\`<div></div>\\`;`);\n    // @ts-ignore\n    const node = parsed.body[0].expression.quasi;\n    const ast = parseTemplateLiteral(node, sourceCode);\n    const cachedAst = parseTemplateLiteral(node, sourceCode);\n    expect(ast).toBe(cachedAst);\n  });\n\n  it(\"should run visitor\", () => {\n    const { parsed, sourceCode } = parseCode(`html\\`<div></div>\\`;`);\n    // @ts-ignore\n    const node = parsed.body[0].expression.quasi;\n    const visitor = {\n      OpenTagStart: jest.fn(),\n    };\n    parseTemplateLiteral(node, sourceCode, visitor);\n    expect(visitor.OpenTagStart).toHaveBeenCalledTimes(1);\n    parseTemplateLiteral(node, sourceCode, visitor);\n    expect(visitor.OpenTagStart).toHaveBeenCalledTimes(2);\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\", \"tests\"]\n}\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/README.md",
    "content": "# @html-eslint/eslint-plugin-angular\n\nESLint plugin for HTML with Angular template support.\n\n## Installation\n\n```bash\nnpm install --save-dev @html-eslint/eslint-plugin-angular @angular-eslint/template-parser\n```\n\n## Usage\n\n```js\n// eslint.config.js\nconst angularPlugin = require(\"@html-eslint/eslint-plugin-angular\");\nconst templateParser = require(\"@angular-eslint/template-parser\");\n\nmodule.exports = [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular\": angularPlugin,\n    },\n    rules: {\n      \"@html-eslint/angular/use-baseline\": \"warn\",\n    },\n  },\n];\n```\n\nOr use the recommended config:\n\n```js\n// eslint.config.js\nconst angularPlugin = require(\"@html-eslint/eslint-plugin-angular\");\nconst templateParser = require(\"@angular-eslint/template-parser\");\n\nmodule.exports = [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    ...angularPlugin.configs.recommended,\n  },\n];\n```\n\n## Rules\n\n| Rule                                                                    | Description                          | Recommended |\n| ----------------------------------------------------------------------- | ------------------------------------ | ----------- |\n| [use-baseline](https://html-eslint.org/docs/angular/rules/use-baseline) | Enforce the use of baseline features | ✅          |\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute/angular-bound-attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {AngularBoundAttribute} from \"../../types\"\n */\n\nconst {\n  AngularBoundAttributeAttributeKeyAdapter,\n} = require(\"../attribute-key/angular-bound-attribute\");\nconst {\n  AngularBoundAttributeAttributeValueAdapter,\n} = require(\"../attribute-value/angular-bound-attribute\");\n\n/** @implements {AttributeAdapter} */\nclass AngularBoundAttributeAttributeAdapter {\n  /** @param {AngularBoundAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n  getKey() {\n    return new AngularBoundAttributeAttributeKeyAdapter(this.node);\n  }\n\n  getValue() {\n    return new AngularBoundAttributeAttributeValueAdapter(this.node);\n  }\n}\n\nmodule.exports = {\n  AngularBoundAttributeAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute/angular-text-attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {AngularTextAttribute} from \"../../types\"\n */\n\nconst {\n  AngularTextAttributeAttributeKeyAdapter,\n} = require(\"../attribute-key/angular-text-attribute\");\nconst {\n  AngularTextAttributeAttributeValueAdapter,\n} = require(\"../attribute-value/angular-text-attribute\");\n\n/** @implements {AttributeAdapter} */\nclass AngularTextAttributeAttributeAdapter {\n  /** @param {AngularTextAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n  getKey() {\n    return new AngularTextAttributeAttributeKeyAdapter(this.node);\n  }\n\n  getValue() {\n    return new AngularTextAttributeAttributeValueAdapter(this.node);\n  }\n}\n\nmodule.exports = {\n  AngularTextAttributeAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute/factory.js",
    "content": "/**\n * @import {\n *   AngularBoundAttribute,\n *   AngularTextAttribute\n * } from \"../../types\"\n */\n\nconst {\n  AngularTextAttributeAttributeAdapter,\n} = require(\"./angular-text-attribute\");\nconst {\n  AngularBoundAttributeAttributeAdapter,\n} = require(\"./angular-bound-attribute\");\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n/** @param {AngularTextAttribute | AngularBoundAttribute} node */\nfunction createAttributeAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.BoundAttribute:\n      return new AngularBoundAttributeAttributeAdapter(node);\n    case AST_NODE_TYPES.TextAttribute:\n      return new AngularTextAttributeAttributeAdapter(node);\n  }\n}\n\nmodule.exports = {\n  createAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute-key/angular-bound-attribute.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {AngularBoundAttribute} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nclass AngularBoundAttributeAttributeKeyAdapter {\n  /** @param {AngularBoundAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return /** @type {SourceLocation} */ ({\n      start: {\n        // @ts-ignore\n        line: this.node.keySpan?.start.line + 1,\n        column: this.node.keySpan?.start.col,\n      },\n      end: {\n        // @ts-ignore\n        line: this.node.keySpan?.end.line + 1,\n        column: this.node.keySpan?.end.col,\n      },\n    });\n  }\n\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.keySpan?.fullStart?.offset,\n      this.node.keySpan?.end.offset,\n    ]);\n  }\n\n  hasExpression() {\n    return true;\n  }\n\n  getValue() {\n    return this.node.name;\n  }\n}\n\nmodule.exports = {\n  AngularBoundAttributeAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute-key/angular-text-attribute.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {AngularTextAttribute} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nclass AngularTextAttributeAttributeKeyAdapter {\n  /** @param {AngularTextAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return /** @type {SourceLocation} */ ({\n      start: {\n        // @ts-ignore\n        line: this.node.keySpan?.start.line + 1,\n        column: this.node.keySpan?.start.col,\n      },\n      end: {\n        // @ts-ignore\n        line: this.node.keySpan?.end.line + 1,\n        column: this.node.keySpan?.end.col,\n      },\n    });\n  }\n\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.keySpan?.fullStart?.offset,\n      this.node.keySpan?.end.offset,\n    ]);\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getValue() {\n    return this.node.name;\n  }\n}\n\nmodule.exports = {\n  AngularTextAttributeAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute-key/factory.js",
    "content": "/** @import {AngularTextAttribute} from \"../../types\" */\n\nconst {\n  AngularTextAttributeAttributeKeyAdapter,\n} = require(\"./angular-text-attribute\");\n\n/** @param {AngularTextAttribute} node */\nfunction createAttributeKeyAdapter(node) {\n  return new AngularTextAttributeAttributeKeyAdapter(node);\n}\n\nmodule.exports = {\n  createAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute-value/angular-bound-attribute.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {AngularBoundAttribute} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nclass AngularBoundAttributeAttributeValueAdapter {\n  /** @param {AngularBoundAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return /** @type {SourceLocation} */ ({\n      start: {\n        // @ts-ignore\n        line: this.node.valueSpan?.start.line + 1,\n        column: this.node.valueSpan?.start.col,\n      },\n      end: {\n        // @ts-ignore\n        line: this.node.valueSpan?.end.line + 1,\n        column: this.node.valueSpan?.end.col,\n      },\n    });\n  }\n\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.valueSpan?.fullStart?.offset,\n      this.node.valueSpan?.end.offset,\n    ]);\n  }\n\n  hasExpression() {\n    return true;\n  }\n\n  getValue() {\n    return null;\n  }\n}\n\nmodule.exports = {\n  AngularBoundAttributeAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute-value/angular-text-attribute.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {AngularTextAttribute} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nclass AngularTextAttributeAttributeValueAdapter {\n  /** @param {AngularTextAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return /** @type {SourceLocation} */ ({\n      start: {\n        // @ts-ignore\n        line: this.node.valueSpan?.start.line + 1,\n        column: this.node.valueSpan?.start.col,\n      },\n      end: {\n        // @ts-ignore\n        line: this.node.valueSpan?.end.line + 1,\n        column: this.node.valueSpan?.end.col,\n      },\n    });\n  }\n\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.valueSpan?.fullStart?.offset,\n      this.node.valueSpan?.end.offset,\n    ]);\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getValue() {\n    return this.node.value;\n  }\n}\n\nmodule.exports = {\n  AngularTextAttributeAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/attribute-value/factory.js",
    "content": "/** @import {AngularTextAttribute} from \"../../types\" */\n\nconst {\n  AngularTextAttributeAttributeValueAdapter,\n} = require(\"./angular-text-attribute\");\n\n/** @param {AngularTextAttribute} node */\nfunction createAttributeValueAdapter(node) {\n  return new AngularTextAttributeAttributeValueAdapter(node);\n}\n\nmodule.exports = {\n  createAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/element/angular-element.js",
    "content": "/**\n * @import {ElementAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {AngularElement} from \"../../types\"\n */\n\nconst { createAttributeAdapter } = require(\"../attribute/factory\");\n\n/** @implements {ElementAdapter} */\nclass AngularElementElementAdapter {\n  /** @param {AngularElement} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getElementName() {\n    return this.node.name;\n  }\n\n  getLocation() {\n    return /** @type {SourceLocation} */ (this.node.loc);\n  }\n\n  getRange() {\n    return /** @type {Range} */ (this.node.range);\n  }\n\n  getOpenStartLocation() {\n    // eslint-disable-next-line prefer-destructuring\n    const loc = /** @type {import(\"@html-eslint/types\").SourceLocation} */ (\n      this.node.loc\n    );\n    return {\n      start: {\n        line: loc.start.line,\n        column: loc.start.column,\n      },\n      end: {\n        line: loc.start.line,\n        column: loc.start.column + this.node.name.length + 1,\n      },\n    };\n  }\n\n  getOpenStartRange() {\n    // eslint-disable-next-line prefer-destructuring\n    const range = /** @type {Range} */ (this.node.range);\n    return /** @type {Range} */ ([\n      range[0],\n      range[0] + this.node.name.length + 1,\n    ]);\n  }\n\n  getAttributes() {\n    const attributes = this.node.attributes.map((attribute) =>\n      createAttributeAdapter(attribute)\n    );\n    const inputs = this.node.inputs.map((input) =>\n      createAttributeAdapter(input)\n    );\n    return [...attributes, ...inputs];\n  }\n}\n\nmodule.exports = {\n  AngularElementElementAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/adapters/element/factory.js",
    "content": "/** @import {AngularElement} from \"../../types\" */\n\nconst { AngularElementElementAdapter } = require(\"./angular-element\");\n\n/** @param {AngularElement} node */\nfunction createElementAdapter(node) {\n  return new AngularElementElementAdapter(node);\n}\n\nmodule.exports = {\n  createElementAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/configs/index.js",
    "content": "const rules = require(\"../rules\");\nconst ruleKeys = Object.keys(rules);\n\nconst allRules = ruleKeys.reduce((acc, ruleName) => {\n  acc[`@html-eslint/angular-template/${ruleName}`] = \"error\";\n  if (ruleName === \"use-baseline\") {\n    acc[`@html-eslint/angular-template/${ruleName}`] = \"warn\";\n  }\n  return acc;\n}, /** @type {Record<string, \"error\" | \"warn\">} */ ({}));\n\nmodule.exports = {\n  allRules,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/constants/node-types.js",
    "content": "const AST_NODE_TYPES = /** @type {const} */ ({\n  Element: \"Element$1\",\n  Template: \"Template\",\n  TextAttribute: \"TextAttribute\",\n  BoundAttribute: \"BoundAttribute\",\n  BoundEvent: \"BoundEvent\",\n  BoundText: \"BoundText\",\n  Text: \"Text\",\n  Reference: \"Reference\",\n  Variable: \"Variable\",\n  Content: \"Content\",\n  Icu: \"Icu\",\n  IfBlock: \"IfBlock\",\n  IfBlockBranch: \"IfBlockBranch\",\n  ForLoopBlock: \"ForLoopBlock\",\n  ForLoopBlockEmpty: \"ForLoopBlockEmpty\",\n  SwitchBlock: \"SwitchBlock\",\n  SwitchBlockCase: \"SwitchBlockCase\",\n  DeferredBlock: \"DeferredBlock\",\n  DeferredBlockError: \"DeferredBlockError\",\n  DeferredBlockLoading: \"DeferredBlockLoading\",\n  DeferredBlockPlaceholder: \"DeferredBlockPlaceholder\",\n  UnknownBlock: \"UnknownBlock\",\n  LetDeclaration: \"LetDeclaration\",\n});\n\nmodule.exports = { AST_NODE_TYPES };\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/index.js",
    "content": "const rules = require(\"./rules\");\nconst { name, version } = require(\"../package.json\");\nconst { allRules } = require(\"./configs\");\n\n/** @import {ESLint} from \"eslint\" */\n\n/** @type {ESLint.Plugin} */\nconst plugin = {\n  meta: {\n    name,\n    version,\n  },\n  // @ts-ignore\n  rules,\n  configs: {\n    recommended: {\n      rules: allRules,\n      plugins: {\n        /** @returns {ESLint.Plugin} */\n        get [\"@html-eslint/angular-template\"]() {\n          return require(\".\");\n        },\n      },\n    },\n    all: {\n      rules: allRules,\n      plugins: {\n        /** @returns {ESLint.Plugin} */\n        get [\"@html-eslint/angular-template\"]() {\n          return require(\".\");\n        },\n      },\n    },\n  },\n};\n\nmodule.exports = plugin;\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/class-spacing.js",
    "content": "/**\n * @import {\n *   AngularElement,\n *   AngularTextAttribute,\n *   RuleModule\n * } from \"../types\"\n */\n\nconst {\n  classSpacing,\n  CLASS_SPACING_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst {\n  createAttributeValueAdapter,\n} = require(\"../adapters/attribute-value/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"layout\",\n    docs: {\n      description: \"Disallow extra spacing in class attribute values\",\n      recommended: true,\n      category: \"Stylistic Issues\",\n      url: \"https://html-eslint.org/docs/angular-template/rules/class-spacing\",\n    },\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [CLASS_SPACING_MESSAGE_IDS.extraSpacing]:\n        \"Unexpected extra spacing in class attribute value\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = classSpacing();\n\n    return {\n      TextAttribute(node) {\n        if (node.name !== \"class\") {\n          return;\n        }\n        const adapter = createAttributeValueAdapter(node);\n        const result = ruleCore.checkClassValue(adapter);\n        for (const { loc, messageId, range } of result) {\n          context.report({\n            loc,\n            messageId,\n            fix(fixer) {\n              return fixer.removeRange(range);\n            },\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/index.js",
    "content": "const useBaseline = require(\"./use-baseline\");\nconst noDuplicateClass = require(\"./no-duplicate-class\");\nconst classSpacing = require(\"./class-spacing\");\nconst noObsoleteTags = require(\"./no-obsolete-tags\");\nconst noIneffectiveAttrs = require(\"./no-ineffective-attrs\");\nconst noObsoleteAttrs = require(\"./no-obsolete-attrs\");\nconst noInvalidAttrValue = require(\"./no-invalid-attr-value\");\n\nconst rules = {\n  \"use-baseline\": useBaseline,\n  \"no-duplicate-class\": noDuplicateClass,\n  \"class-spacing\": classSpacing,\n  \"no-obsolete-tags\": noObsoleteTags,\n  \"no-ineffective-attrs\": noIneffectiveAttrs,\n  \"no-obsolete-attrs\": noObsoleteAttrs,\n  \"no-invalid-attr-value\": noInvalidAttrValue,\n};\n\nmodule.exports = rules;\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/no-duplicate-class.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst {\n  noDuplicateClass,\n  NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst {\n  createAttributeValueAdapter,\n} = require(\"../adapters/attribute-value/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow duplicate class names\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/angular-template/rules/no-duplicate-class\",\n    },\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass]:\n        \"The class '{{className}}' is duplicated.\",\n    },\n  },\n\n  create(context) {\n    const { checkClassValue } = noDuplicateClass();\n\n    return {\n      TextAttribute(node) {\n        if (node.name.toLowerCase() !== \"class\") {\n          return;\n        }\n        const adapter = createAttributeValueAdapter(node);\n        const result = checkClassValue(adapter);\n        for (const { loc, messageId, range, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n            fix(fixer) {\n              return fixer.removeRange(range);\n            },\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/no-ineffective-attrs.js",
    "content": "/** @import {RuleModule} from \"../types\" */\nconst {\n  noIneffectiveAttrs,\n  NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description:\n        \"Disallow HTML attributes that have no effect in their context\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/angular-template/rules/no-ineffective-attrs\",\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_INEFFECTIVE_ATTRS_MESSAGE_IDS.ineffective]: \"{{ message }}\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = noIneffectiveAttrs();\n\n    return {\n      Element(node) {\n        if (node.name.includes(\"-\")) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = ruleCore.checkAttributes(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/no-invalid-attr-value.js",
    "content": "/** @import {RuleModule} from \"../types\" */\nconst {\n  noInvalidAttrValue,\n  NO_INVALID_ATTR_VALUE_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/**\n * @type {RuleModule<\n *   [{ allow?: { tag: string; attr: string; valuePattern?: string }[] }]\n * >}\n */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description:\n        \"Disallow invalid attribute values according to HTML standards\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/angular-template/rules/no-invalid-attr-value\",\n    },\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          allow: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              properties: {\n                tag: {\n                  type: \"string\",\n                },\n                attr: {\n                  type: \"string\",\n                },\n                valuePattern: {\n                  type: \"string\",\n                },\n              },\n              required: [\"tag\", \"attr\"],\n              additionalProperties: false,\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid]:\n        \"Invalid value '{{value}}' for attribute '{{attr}}' on <{{element}}>. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    const { checkAttributes } = noInvalidAttrValue(options);\n\n    return {\n      Element(node) {\n        if (node.name.includes(\"-\")) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = checkAttributes(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/no-obsolete-attrs.js",
    "content": "/** @import {RuleModule} from \"../types\" */\nconst {\n  noObsoleteAttrs,\n  NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description: \"Disallow use of obsolete attributes in HTML5\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/angular-template/rules/no-obsolete-attrs\",\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_ATTRS_MESSAGE_IDS.obsolete]:\n        \"The {{attr}} attribute on <{{element}}> is obsolete. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const { checkAttributes } = noObsoleteAttrs();\n\n    return {\n      Element(node) {\n        if (node.name.includes(\"-\")) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = checkAttributes(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/no-obsolete-tags.js",
    "content": "/** @import {RuleModule} from \"../types\" */\nconst {\n  noObsoleteTags,\n  NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow use of obsolete elements in HTML5\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/angular-template/rules/no-obsolete-tags\",\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected]:\n        \"Unexpected use of obsolete tag <{{tag}}>\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = noObsoleteTags();\n\n    return {\n      Element(node) {\n        if (node.name.includes(\"-\")) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = ruleCore.checkElement(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/rules/use-baseline.js",
    "content": "/**\n * @import {RuleModule} from \"../types\"\n * @typedef {Object} Option\n * @property {\"widely\" | \"newly\" | number} Option.available\n */\n\nconst { useBaseline, USE_BASELINE_MESSAGE_IDS } = require(\"@html-eslint/core\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Enforce the use of baseline features.\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/angular/rules/use-baseline\",\n    },\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          available: {\n            anyOf: [\n              {\n                enum: [\"widely\", \"newly\"],\n              },\n              {\n                // baseline year\n                type: \"integer\",\n                minimum: 2000,\n                maximum: new Date().getFullYear(),\n              },\n            ],\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n\n    messages: {\n      [USE_BASELINE_MESSAGE_IDS.noBaselineElement]:\n        \"Element '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute]:\n        \"Attribute '{{attr}}' on '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute]:\n        \"Attribute '{{attr}}' is not a {{availability}} available baseline feature.\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || { available: \"widely\" };\n    const { checkAttributes } = useBaseline(options);\n\n    return {\n      Element(node) {\n        if (node.name.includes(\"-\")) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = checkAttributes(adapter);\n        for (const { messageId, loc, data } of result) {\n          context.report({\n            messageId,\n            data,\n            loc,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/lib/types.ts",
    "content": "import eslint from \"eslint\";\n\n/**\n * Angular template AST node types from @angular-eslint/template-parser Based on\n *\n * @angular/compiler template AST\n */\n\nexport interface AngularSourceSpan {\n  start: { offset: number; line: number; col: number };\n  end: { offset: number; line: number; col: number };\n  fullStart?: { offset: number; line: number; col: number };\n  details?: string | null;\n  toString(): string;\n}\n\nexport interface AngularNode {\n  type: string;\n  loc?: eslint.AST.SourceLocation;\n  range?: [number, number];\n  parent?: AngularNode;\n}\n\nexport interface AngularTextAttribute extends AngularNode {\n  type: \"TextAttribute\";\n  name: string;\n  value: string;\n  keySpan?: AngularSourceSpan;\n  valueSpan?: AngularSourceSpan;\n}\n\nexport interface AngularBoundAttribute extends AngularNode {\n  type: \"BoundAttribute\";\n  name: string;\n  value: unknown;\n  keySpan?: AngularSourceSpan;\n  valueSpan?: AngularSourceSpan;\n}\n\nexport interface AngularElement extends AngularNode {\n  type: \"Element$1\";\n  name: string;\n  attributes: AngularTextAttribute[];\n  inputs: AngularBoundAttribute[];\n  outputs: AngularBoundEvent[];\n  children: AngularNode[];\n  references: AngularNode[];\n}\n\nexport interface AngularBoundEvent extends AngularNode {\n  type: \"BoundEvent\";\n  name: string;\n}\n\nexport type RuleFunction<T extends AngularNode = never> = (node: T) => void;\n\ntype RuleListenerExitSelectors = {\n  [K in keyof RuleListenerBaseSelectors as `${K}:exit`]: RuleListenerBaseSelectors[K];\n};\n\ninterface RuleListenerBaseSelectors {\n  Element?: RuleFunction<AngularElement>;\n  TextAttribute?: RuleFunction<AngularTextAttribute>;\n  BoundAttribute?: RuleFunction<AngularBoundAttribute>;\n  BoundEvent?: RuleFunction<AngularBoundEvent>;\n  [key: string]: RuleFunction<any> | undefined;\n}\n\nexport type RuleListener = RuleListenerBaseSelectors &\n  RuleListenerExitSelectors;\n\ninterface RuleFix {\n  range: eslint.AST.Range;\n  text: string;\n}\n\nexport interface RuleFixer {\n  insertTextAfter(nodeOrToken: AngularNode, text: string): RuleFix;\n  insertTextAfterRange(range: eslint.AST.Range, text: string): RuleFix;\n  insertTextBefore(nodeOrToken: AngularNode, text: string): RuleFix;\n  insertTextBeforeRange(range: eslint.AST.Range, text: string): RuleFix;\n  remove(nodeOrToken: AngularNode): RuleFix;\n  removeRange(range: eslint.AST.Range): RuleFix;\n  replaceText(nodeOrToken: AngularNode, text: string): RuleFix;\n  replaceTextRange(range: eslint.AST.Range, text: string): RuleFix;\n}\n\nexport type ReportFixFunction = (\n  fixer: RuleFixer\n) => IterableIterator<RuleFix> | readonly RuleFix[] | RuleFix | null;\n\ninterface ReportDescriptorOptionsBase {\n  data?: { [key: string]: string };\n  fix?: null | ReportFixFunction;\n}\n\ntype ReportDescriptor = ReportDescriptorMessage &\n  ReportDescriptorLocation &\n  ReportDescriptorOptionsBase;\ntype ReportDescriptorMessage = { message: string } | { messageId: string };\ntype ReportDescriptorLocation = {\n  node?: AngularNode;\n  loc?: eslint.AST.SourceLocation;\n  line?: number;\n  column?: number;\n};\n\nexport interface Context<Options extends unknown[]> extends Omit<\n  eslint.Rule.RuleContext,\n  \"report\"\n> {\n  report(descriptor: ReportDescriptor): void;\n  options: Options;\n}\n\nexport interface RuleModule<Options extends unknown[]> {\n  create(context: Context<Options>): RuleListener;\n  meta: eslint.Rule.RuleMetaData;\n}\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/package.json",
    "content": "{\n  \"name\": \"@html-eslint/eslint-plugin-angular-template\",\n  \"version\": \"0.60.0\",\n  \"type\": \"commonjs\",\n  \"description\": \"ESLint plugin for HTML with Angular support\",\n  \"author\": \"yeonjuan\",\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"types/index.d.ts\",\n  \"files\": [\n    \"lib\",\n    \"types\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --coverage\",\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"build\": \"rimraf types && tsc --project tsconfig.build.json\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"eslint\",\n    \"eslintplugin\",\n    \"eslint-plugin\",\n    \"html\",\n    \"angular\",\n    \"lint\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/core\": \"^0.60.0\",\n    \"@html-eslint/types\": \"^0.60.0\"\n  },\n  \"peerDependencies\": {\n    \"@angular-eslint/template-parser\": \">=18.0.0\",\n    \"eslint\": \">=8.0.0 || ^10.0.0-0\"\n  },\n  \"devDependencies\": {\n    \"@angular-eslint/bundled-angular-compiler\": \"^21.2.0\",\n    \"@angular-eslint/template-parser\": \"^21.2.0\",\n    \"@angular/compiler\": \"^21.1.5\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"engines\": {\n    \"node\": \"^18.18.0 || ^20.9.0 || >=21.1.0\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rule-tester.js",
    "content": "/** @import {Linter} from \"eslint\" */\nconst { RuleTester: ESLintRuleTester } = require(\"eslint\");\nconst parser = require(\"@angular-eslint/template-parser\");\n\nclass RuleTester extends ESLintRuleTester {\n  /** @param {Linter.Config} options */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @param {string} name\n   * @param {any} rule\n   * @param {{\n   *   valid: ESLintRuleTester.ValidTestCase[];\n   *   invalid: ESLintRuleTester.InvalidTestCase[];\n   * }} tests\n   */\n  run(name, rule, tests) {\n    super.run(name, rule, tests);\n  }\n}\n\nmodule.exports = function createRuleTester() {\n  return new RuleTester({\n    languageOptions: {\n      parser,\n    },\n  });\n};\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/class-spacing.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/class-spacing\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"class-spacing\", rule, {\n  valid: [\n    { code: `<div class=\"foo\"></div>` },\n    { code: `<div class=\"foo bar\"></div>` },\n    { code: `<div class=\"foo bar baz\"></div>` },\n    { code: `<div class=\"\"></div>` },\n    { code: `<div class=\"{{ foo }} bar\"></div>` },\n    { code: `<div [class]=\"expr\"></div>` },\n    { code: `<div [class.active]=\"isActive\"></div>` },\n    { code: `@if (show) { <div class=\"foo bar\"></div> }` },\n    { code: `@for (item of items; track item.id) { <li class=\"item\"></li> }` },\n  ],\n  invalid: [\n    {\n      code: `<div class=\" foo\"></div>`,\n      output: `<div class=\"foo\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 14,\n          endLine: 1,\n          endColumn: 15,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo \"></div>`,\n      output: `<div class=\"foo\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 16,\n          endLine: 1,\n          endColumn: 17,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"  foo\"></div>`,\n      output: `<div class=\"foo\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 15,\n          endLine: 1,\n          endColumn: 17,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo  \"></div>`,\n      output: `<div class=\"foo\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 16,\n          endLine: 1,\n          endColumn: 18,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo  bar\"></div>`,\n      output: `<div class=\"foo bar\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 17,\n          endLine: 1,\n          endColumn: 18,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo   bar\"></div>`,\n      output: `<div class=\"foo bar\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 17,\n          endLine: 1,\n          endColumn: 19,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"  foo  bar  \"></div>`,\n      output: `<div class=\"foo bar\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 15,\n          endLine: 1,\n          endColumn: 17,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 22,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 23,\n          endLine: 1,\n          endColumn: 25,\n        },\n      ],\n    },\n    {\n      code: `@if (show) { <div class=\" foo\"></div> }`,\n      output: `@if (show) { <div class=\"foo\"></div> }`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 27,\n          endLine: 1,\n          endColumn: 28,\n        },\n      ],\n    },\n    {\n      code: `@for (item of items; track item.id) { <li class=\"item  item2\"></li> }`,\n      output: `@for (item of items; track item.id) { <li class=\"item item2\"></li> }`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 55,\n          endLine: 1,\n          endColumn: 56,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/no-duplicate-class.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-duplicate-class\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-duplicate-class\", rule, {\n  valid: [\n    { code: `<div class=\"foo bar\"></div>` },\n    { code: `<div class=\"foo bar baz\"></div>` },\n    { code: `<div class=\"foo\"></div>` },\n    { code: `<div></div>` },\n    { code: `<div [class]=\"expr\"></div>` },\n    { code: `<div [class.active]=\"isActive\"></div>` },\n    { code: `@if (show) { <div class=\"foo bar\"></div> }` },\n    { code: `@for (item of items; track item.id) { <li class=\"item\"></li> }` },\n  ],\n  invalid: [\n    {\n      code: `<div class=\"foo foo\"></div>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          data: { className: \"foo\" },\n          line: 1,\n          column: 17,\n          endLine: 1,\n          endColumn: 20,\n        },\n      ],\n      output: `<div class=\"foo \"></div>`,\n    },\n    {\n      code: `<div class=\"foo bar foo\"></div>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          data: { className: \"foo\" },\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 24,\n        },\n      ],\n      output: `<div class=\"foo bar \"></div>`,\n    },\n    {\n      code: `<span class=\"a b a b\"></span>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          data: { className: \"a\" },\n          line: 1,\n          column: 18,\n          endLine: 1,\n          endColumn: 19,\n        },\n        {\n          messageId: \"duplicateClass\",\n          data: { className: \"b\" },\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 21,\n        },\n      ],\n      output: `<span class=\"a b  \"></span>`,\n    },\n    {\n      code: `@if (show) { <div class=\"foo foo\"></div> }`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          data: { className: \"foo\" },\n          line: 1,\n          column: 30,\n          endLine: 1,\n          endColumn: 33,\n        },\n      ],\n      output: `@if (show) { <div class=\"foo \"></div> }`,\n    },\n    {\n      code: `\n@for (item of items; track item.id) { <li class=\"item item\"></li> }`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          data: { className: \"item\" },\n          line: 2,\n          column: 55,\n          endLine: 2,\n          endColumn: 59,\n        },\n      ],\n      output: `\n@for (item of items; track item.id) { <li class=\"item \"></li> }`,\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/no-ineffective-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-ineffective-attrs\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-ineffective-attrs\", rule, {\n  valid: [\n    {\n      code: '<input type=\"email\" multiple />',\n    },\n    {\n      code: '<input type=\"file\" multiple />',\n    },\n    {\n      code: \"<select multiple></select>\",\n    },\n    {\n      code: '<input type=\"file\" accept=\".jpg,.png\" />',\n    },\n    {\n      code: '<input type=\"text\" readonly />',\n    },\n    {\n      code: '<input type=\"password\" readonly />',\n    },\n    {\n      code: '<script src=\"script.js\" defer></script>',\n    },\n    {\n      code: '<script src=\"script.js\" async></script>',\n    },\n    {\n      code: '<a href=\"file.pdf\" download>Download</a>',\n    },\n    {\n      code: '<a href=\"https://example.com\" target=\"_blank\">Open</a>',\n    },\n    {\n      code: '<a href=\"/page\" ping=\"/analytics\">Link</a>',\n    },\n    {\n      code: '<audio controls controlslist=\"nodownload\"></audio>',\n    },\n    {\n      code: '<video controls controlslist=\"nofullscreen\"></video>',\n    },\n    {\n      code: '<form method=\"post\" enctype=\"multipart/form-data\"></form>',\n    },\n    {\n      code: '<button type=\"submit\" formaction=\"/submit\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formmethod=\"post\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formenctype=\"multipart/form-data\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formnovalidate>Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formtarget=\"_blank\">Submit</button>',\n    },\n    {\n      code: '<img src=\"map.jpg\" usemap=\"#map\" />',\n    },\n    {\n      code: '<input type=\"number\" min=\"0\" max=\"100\" />',\n    },\n    {\n      code: '<input type=\"range\" min=\"0\" max=\"10\" step=\"2\" />',\n    },\n    {\n      code: '<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />',\n    },\n    {\n      code: '<input type=\"text\" pattern=\"[0-9]+\" />',\n    },\n    {\n      code: '<input type=\"email\" pattern=\".+@example\\\\.com\" />',\n    },\n    {\n      code: '<input type=\"text\" maxlength=\"10\" minlength=\"3\" />',\n    },\n    {\n      code: '<input type=\"password\" maxlength=\"20\" />',\n    },\n    {\n      code: '<input type=\"text\" placeholder=\"Enter name\" />',\n    },\n    {\n      code: '<input type=\"number\" placeholder=\"Enter age\" />',\n    },\n    {\n      code: '<input type=\"text\" size=\"20\" />',\n    },\n    {\n      code: '<input type=\"email\" size=\"40\" />',\n    },\n    {\n      code: '<input type=\"text\" list=\"suggestions\" />',\n    },\n    {\n      code: '<input type=\"email\" list=\"emails\" />',\n    },\n    {\n      code: '<custom-input type=\"text\" multiple />',\n    },\n    {\n      code: '<my-button type=\"button\" formaction=\"/submit\">Click</my-button>',\n    },\n    {\n      code: '<input [type]=\"inputType\" multiple />',\n    },\n    {\n      code: '@if (isLoggedIn) { <input type=\"email\" multiple /> }',\n    },\n    {\n      code: '@for (item of items; track item.id) { <input type=\"file\" accept=\".jpg\" /> }',\n    },\n  ],\n  invalid: [\n    {\n      code: '<input type=\"text\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"password\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" accept=\".jpg\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"accept\" attribute has no effect unless input type is \"file\".',\n          },\n        },\n      ],\n    },\n    {\n      code: \"<a download>Download</a>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 4,\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<a target=\"_blank\">Open</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 4,\n          data: {\n            message: 'The \"target\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<a ping=\"/analytics\">Link</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 4,\n          data: {\n            message: 'The \"ping\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<audio controlslist=\"nodownload\"></audio>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 8,\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" readonly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"file\" readonly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" min=\"0\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"min\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" max=\"100\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"max\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" pattern=\"[0-9]+\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"pattern\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"number\" maxlength=\"10\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 22,\n          data: {\n            message:\n              'The \"maxlength\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" placeholder=\"Enter value\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"placeholder\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" size=\"20\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"size\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" list=\"suggestions\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message: 'The \"list\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<form method=\"get\" enctype=\"multipart/form-data\"></form>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"enctype\" attribute only has effect when method is \"post\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"button\" formaction=\"/submit\">Submit</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 23,\n          data: {\n            message:\n              'The \"formaction\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"map.jpg\" usemap=\"#map\" ismap />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"usemap\" and \"ismap\" attributes cannot be used together.',\n          },\n        },\n      ],\n    },\n    {\n      code: '@if (show) { <input type=\"text\" multiple /> }',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 33,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: \"@for (item of items; track item.id) { <a download>Link</a> }\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 42,\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/no-invalid-attr-value.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-invalid-attr-value\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-invalid-attr-value\", rule, {\n  valid: [\n    { code: '<input type=\"text\" />' },\n    { code: '<input type=\"email\" />' },\n    { code: '<input type=\"number\" />' },\n    { code: '<input type=\"password\" />' },\n    { code: '<input type=\"checkbox\" />' },\n    { code: '<input type=\"radio\" />' },\n    { code: '<button type=\"button\">Click</button>' },\n    { code: '<button type=\"submit\">Submit</button>' },\n    { code: '<button type=\"reset\">Reset</button>' },\n    { code: '<form method=\"get\"></form>' },\n    { code: '<form method=\"post\"></form>' },\n    { code: '<form method=\"dialog\"></form>' },\n    { code: '<a href=\"#\" target=\"_blank\">Link</a>' },\n    { code: '<a href=\"#\" target=\"_self\">Link</a>' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"anonymous\" />' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"use-credentials\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"lazy\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"eager\" />' },\n    { code: '<div dir=\"ltr\">Text</div>' },\n    { code: '<div dir=\"rtl\">Text</div>' },\n    { code: '<div dir=\"auto\">Text</div>' },\n    { code: '<th scope=\"row\">Header</th>' },\n    { code: '<th scope=\"col\">Header</th>' },\n    { code: '<th scope=\"rowgroup\">Header</th>' },\n    { code: '<th scope=\"colgroup\">Header</th>' },\n    { code: '<input type=\"text\" autocomplete=\"name\" />' },\n    { code: '<input type=\"email\" autocomplete=\"email\" />' },\n    { code: '<input type=\"password\" autocomplete=\"current-password\" />' },\n    { code: '<form enctype=\"application/x-www-form-urlencoded\"></form>' },\n    { code: '<form enctype=\"multipart/form-data\"></form>' },\n    { code: '<form enctype=\"text/plain\"></form>' },\n    { code: '<img src=\"image.jpg\" width=\"100\" />' },\n    { code: '<img src=\"image.jpg\" height=\"200\" />' },\n    { code: '<img src=\"image.jpg\" width=\"100\" height=\"200\" />' },\n    { code: '<link rel=\"stylesheet\" href=\"style.css\" />' },\n    { code: '<a href=\"page.html\" rel=\"noopener\">Link</a>' },\n    { code: '<style blocking=\"render\"></style>' },\n    // Angular property bindings - should be skipped\n    { code: '<input [type]=\"inputType\" />' },\n    { code: '<button [type]=\"type\">Click</button>' },\n    { code: '<img [loading]=\"loading\" />' },\n    { code: '<div [dir]=\"direction\">Text</div>' },\n    // Angular control flow\n    { code: '@if (show) { <input type=\"text\" /> }' },\n    {\n      code: '@for (item of items; track item.id) { <button type=\"button\">Click</button> }',\n    },\n    // Custom elements are ignored\n    { code: '<custom-input type=\"invalid\" />' },\n    { code: '<my-button type=\"invalid\">Click</my-button>' },\n    // allow option tests\n    {\n      code: '<input type=\"custom-type\" />',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: '<button type=\"custom\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      options: [{ allow: [{ tag: \"form\", attr: \"method\" }] }],\n    },\n    {\n      code: '<input type=\"custom-foo\" />',\n      options: [\n        {\n          allow: [{ tag: \"input\", attr: \"type\", valuePattern: \"^custom-.*$\" }],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: '<input type=\"invalid-type\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: '<input type=\"txt\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 15,\n        },\n      ],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 15,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" crossorigin=\"invalid\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 35,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" loading=\"invalid\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 31,\n        },\n      ],\n    },\n    {\n      code: '<div dir=\"invalid\">Text</div>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 11,\n        },\n      ],\n    },\n    {\n      code: '<th scope=\"invalid\">Header</th>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 12,\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" autocomplete=\"invalid-value\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 34,\n        },\n      ],\n    },\n    {\n      code: '<form enctype=\"invalid\"></form>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 16,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"abc\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 29,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"-100\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 29,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"100px\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 29,\n        },\n      ],\n    },\n    // Angular control flow with invalid values\n    {\n      code: '@if (show) { <input type=\"invalid\" /> }',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 27,\n        },\n      ],\n    },\n    {\n      code: '@for (item of items; track item.id) { <button type=\"invalid\">Click</button> }',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 53,\n        },\n      ],\n    },\n    // allow option tests - should still fail if value doesn't match pattern\n    {\n      code: '<input type=\"invalid-type\" />',\n      options: [\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n          ],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 15,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/no-obsolete-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-obsolete-attrs\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-obsolete-attrs\", rule, {\n  valid: [\n    {\n      code: '<a href=\"/page\">Link</a>',\n    },\n    {\n      code: '<img src=\"image.jpg\" alt=\"Image\" />',\n    },\n    {\n      code: '<table><tr><th scope=\"col\">Header</th></tr></table>',\n    },\n    {\n      code: '<link rel=\"stylesheet\" href=\"style.css\" />',\n    },\n    {\n      code: '<script src=\"script.js\"></script>',\n    },\n    {\n      code: '<div id=\"content\">Content</div>',\n    },\n    {\n      code: \"<custom-link charset='UTF-8'>Link</custom-link>\",\n    },\n    {\n      code: '@if (isLoggedIn) { <a href=\"/page\">Link</a> }',\n    },\n    {\n      code: '@for (item of items; track item.id) { <img src=\"{{item.url}}\" alt=\"Image\" /> }',\n    },\n    {\n      code: '<a [href]=\"url\">Link</a>',\n    },\n  ],\n  invalid: [\n    {\n      code: '<a charset=\"UTF-8\">Link</a>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 4,\n          data: {\n            attr: \"charset\",\n            element: \"a\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<link charset=\"UTF-8\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"charset\",\n            element: \"link\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<a name=\"anchor\">Link</a>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 4,\n          data: {\n            attr: \"name\",\n            element: \"a\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<img name=\"myimage\" src=\"image.jpg\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 6,\n          data: {\n            attr: \"name\",\n            element: \"img\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table align=\"center\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 8,\n          data: {\n            attr: \"align\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<div align=\"left\">Content</div>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 6,\n          data: {\n            attr: \"align\",\n            element: \"div\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<body bgcolor=\"#ffffff\"></body>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"bgcolor\",\n            element: \"body\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table bgcolor=\"#cccccc\" border=\"1\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 8,\n          data: {\n            attr: \"bgcolor\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 26,\n          data: {\n            attr: \"border\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" border=\"0\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 22,\n          data: {\n            attr: \"border\",\n            element: \"img\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table width=\"100%\" height=\"200\" cellpadding=\"5\" cellspacing=\"0\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 8,\n          data: {\n            attr: \"width\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 21,\n          data: {\n            attr: \"height\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 34,\n          data: {\n            attr: \"cellpadding\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 50,\n          data: {\n            attr: \"cellspacing\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<iframe frameborder=\"0\" scrolling=\"no\"></iframe>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 9,\n          data: {\n            attr: \"frameborder\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 25,\n          data: {\n            attr: \"scrolling\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<td scope=\"row\">Cell</td>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 5,\n          data: {\n            attr: \"scope\",\n            element: \"td\",\n            suggestion: \"Use th elements for heading cells.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<html manifest=\"app.appcache\"></html>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"manifest\",\n            element: \"html\",\n            suggestion: \"Use service workers instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<form accept=\"image/*\"></form>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"accept\",\n            element: \"form\",\n            suggestion:\n              \"Use the accept attribute directly on the input elements instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<div contextmenu=\"mymenu\">Content</div>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 6,\n          data: {\n            attr: \"contextmenu\",\n            element: \"div\",\n            suggestion:\n              \"To implement a custom context menu, use script to handle the contextmenu event.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '@if (show) { <div align=\"center\">Content</div> }',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 19,\n          data: {\n            attr: \"align\",\n            element: \"div\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '@for (item of items; track item.id) { <table border=\"1\"></table> }',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 46,\n          data: {\n            attr: \"border\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/no-obsolete-tags.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-obsolete-tags\");\n\n// https://html.spec.whatwg.org/#non-conforming-features\nconst OBSOLETE_TAGS = [\n  \"applet\",\n  \"acronym\",\n  \"bgsound\",\n  \"dir\",\n  \"frame\",\n  \"frameset\",\n  \"noframes\",\n  \"isindex\",\n  \"keygen\",\n  \"listing\",\n  \"menuitem\",\n  \"nextid\",\n  \"noembed\",\n  \"plaintext\",\n  \"rb\",\n  \"rtc\",\n  \"strike\",\n  \"xmp\",\n  \"basefont\",\n  \"big\",\n  \"blink\",\n  \"center\",\n  \"font\",\n  \"marquee\",\n  \"multicol\",\n  \"nobr\",\n  \"spacer\",\n  \"tt\",\n];\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-obsolete-tags\", rule, {\n  valid: [\n    {\n      code: `\n<div>\n  <h1>Heading</h1>\n  <p>Paragraph</p>\n</div>\n`,\n    },\n    {\n      code: \"<button>Click me</button>\",\n    },\n    {\n      code: '<input type=\"text\" />',\n    },\n    {\n      code: \"<custom-center>Content</custom-center>\",\n    },\n    {\n      code: \"<my-font>Text</my-font>\",\n    },\n    {\n      code: `@if (isLoggedIn) { <div>Welcome</div> }`,\n    },\n    {\n      code: `@for (item of items; track item.id) { <li>{{ item.name }}</li> }`,\n    },\n    {\n      code: `@switch (status) { @case ('active') { <span>Active</span> } }`,\n    },\n    {\n      code: `@defer { <img src=\"hero.jpg\" /> } @placeholder { <p>Loading...</p> }`,\n    },\n  ],\n  invalid: [\n    // Test all obsolete tags except frame (tested separately)\n    ...OBSOLETE_TAGS.filter((tag) => tag !== \"frame\").map((tag) => ({\n      code: `<${tag}></${tag}>`,\n      errors: [\n        {\n          message: `Unexpected use of obsolete tag <${tag}>`,\n          line: 1,\n          column: 1,\n        },\n      ],\n    })),\n    {\n      code: `\n<frameset cols=\"25%,*,25%\">\n  <frame name=\"left\" src=\"/html/intro\"></frame>\n</frameset>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: { tag: \"frameset\" },\n          line: 2,\n          column: 1,\n        },\n        {\n          messageId: \"unexpected\",\n          data: { tag: \"frame\" },\n          line: 3,\n          column: 3,\n        },\n      ],\n    },\n    {\n      code: '<font color=\"red\">Text</font>',\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <font>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: '<center align=\"middle\">Content</center>',\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: `@if (show) { <center>Content</center> }`,\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: `@for (item of items; track item.id) { <font>{{ item }}</font> }`,\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <font>\",\n          line: 1,\n          column: 39,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tests/rules/use-baseline.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/use-baseline\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"use-baseline\", rule, {\n  valid: [\n    { code: `<div id=\"foo\"></div>` },\n    { code: `<svg></svg>` },\n    { code: `<custom-element popovertarget=\"mypopover\"></custom-element>` },\n    { code: `<input type=\"number\" />` },\n    { code: `<input type=\"tel\" />` },\n    { code: `<a href=\"https://html-eslint.org\"></a>` },\n    { code: `<td></td>` },\n    {\n      code: `<div id=\"foo\"></div>`,\n      options: [{ available: \"widely\" }],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      options: [{ available: \"newly\" }],\n    },\n    // Property binding ([property]=\"expr\") - value is expression, skips value check\n    { code: `<input [type]=\"inputType\" />` },\n    { code: `<button [disabled]=\"isDisabled\">Click</button>` },\n    { code: `<a [href]=\"url\">Link</a>` },\n    // Attribute binding ([attr.attr-key]=\"expr\") - value is expression, skips value check\n    { code: `<div [attr.aria-label]=\"label\"></div>` },\n    { code: `<span [attr.data-id]=\"itemId\"></span>` },\n    { code: `<input [attr.aria-describedby]=\"descId\" />` },\n    // Custom elements are skipped\n    { code: `<my-component [disabled]=\"true\"></my-component>` },\n\n    {\n      code: `@if (isLoggedIn) { <span>Welcome</span> } @else { <a href=\"/login\">Login</a> }`,\n    },\n    {\n      code: `@if (show) { <div class=\"container\"><p>Hello</p></div> }`,\n    },\n    {\n      code: `@for (item of items; track item.id) { <li>{{ item.name }}</li> } @empty { <p>No items</p> }`,\n    },\n    {\n      code: `@switch (status) { @case ('active') { <span>Active</span> } @default { <span>Inactive</span> } }`,\n    },\n    {\n      code: `@defer { <img src=\"hero.jpg\" /> } @placeholder { <p>Loading...</p> }`,\n    },\n    {\n      code: `@if (user) { <input [disabled]=\"!user.isAdmin\" type=\"text\" /> }`,\n    },\n    {\n      code: `@for (item of items; track item.id) { <button (click)=\"select(item)\">{{ item.label }}</button> }`,\n    },\n    {\n      code: `@if (a) { @if (b) { <div><span>Nested</span></div> } }`,\n    },\n    {\n      code: `@defer (on idle) { <section><h2>Deferred content</h2></section> } @loading { <p>Loading...</p> } @error { <p>Error occurred</p> }`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<slot></slot>`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n          column: 1,\n          endColumn: 14,\n          line: 1,\n        },\n      ],\n      options: [{ available: 2001 }],\n    },\n    {\n      code: `<span slot=\"username\">Jane Doe</span>`,\n      errors: [\n        {\n          message: \"Attribute 'slot' is not a 2019 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2019 }],\n    },\n    {\n      code: `@if (show) { <slot></slot> }`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2001 }],\n    },\n    {\n      code: `@for (item of items; track item.id) { <slot>{{ item }}</slot> }`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2001 }],\n    },\n    {\n      code: `@defer { <span slot=\"content\">Deferred</span> }`,\n      errors: [\n        {\n          message: \"Attribute 'slot' is not a 2019 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2019 }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"skipLibCheck\": true,\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-angular-template/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\", \"tests\"]\n}\n"
  },
  {
    "path": "packages/eslint-plugin-react/README.md",
    "content": "# `@html-eslint/eslint-plugin-react`\n\nAn ESLint plugin which provides lint rules for React.\n\n1. [Getting Started](https://html-eslint.org/docs/react/getting-started)\n1. [Rules](https://html-eslint.org/docs/react/rules)\n1. [License](#License)\n\n## License\n\nDistributed under the MIT License.\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute/factory.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {\n *   JSXAttribute,\n *   JSXSpreadAttribute\n * } from \"../../types\"\n */\n\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\nconst { JSXAttributeAttributeAdapter } = require(\"./jsx-attribute\");\nconst { JSXSpreadAttributeAdapter } = require(\"./jsx-spread-attribute\");\n\n/**\n * @param {JSXAttribute | JSXSpreadAttribute} node\n * @returns {AttributeAdapter}\n */\nfunction createAttributeAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.JSXAttribute: {\n      return new JSXAttributeAttributeAdapter(node);\n    }\n    case AST_NODE_TYPES.JSXSpreadAttribute: {\n      return new JSXSpreadAttributeAdapter(node);\n    }\n  }\n}\n\nmodule.exports = {\n  createAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute/jsx-attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {JSXAttribute} from \"../../types\"\n */\n\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\nconst { createAttributeKeyAdapter } = require(\"../attribute-key/factory\");\nconst { createAttributeValueAdapter } = require(\"../attribute-value/factory\");\n\n/** @implements {AttributeAdapter} */\nclass JSXAttributeAttributeAdapter {\n  /** @param {JSXAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getKey() {\n    return createAttributeKeyAdapter(this.node.name);\n  }\n\n  getValue() {\n    if (\n      !this.node.value ||\n      this.node.value.type === AST_NODE_TYPES.JSXElement ||\n      this.node.value.type === AST_NODE_TYPES.JSXSpreadChild\n    ) {\n      return null;\n    }\n    return createAttributeValueAdapter(this.node.value);\n  }\n}\n\nmodule.exports = {\n  JSXAttributeAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute/jsx-spread-attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {JSXSpreadAttribute} from \"../../types\"\n */\n\n/** @implements {AttributeAdapter} */\nclass JSXSpreadAttributeAdapter {\n  /** @param {JSXSpreadAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getKey() {\n    return null;\n  }\n\n  getValue() {\n    return null;\n  }\n}\n\nmodule.exports = {\n  JSXSpreadAttributeAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-key/factory.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   JSXIdentifier,\n *   JSXNamespacedName\n * } from \"../../types\"\n */\n\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\nconst { JSXIdentifierAttributeKeyAdapter } = require(\"./jsx-identifier\");\nconst { JSXNamespaceNameAttributeKeyAdapter } = require(\"./jsx-namespace-name\");\n\n/**\n * @param {JSXIdentifier | JSXNamespacedName} node\n * @returns {AttributeKeyAdapter}\n */\nfunction createAttributeKeyAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.JSXIdentifier: {\n      return new JSXIdentifierAttributeKeyAdapter(node);\n    }\n    case AST_NODE_TYPES.JSXNamespacedName: {\n      return new JSXNamespaceNameAttributeKeyAdapter(node);\n    }\n  }\n}\n\nmodule.exports = {\n  createAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-key/jsx-identifier.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {JSXIdentifier} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nclass JSXIdentifierAttributeKeyAdapter {\n  /** @param {JSXIdentifier} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.node.loc;\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return this.node.range;\n  }\n\n  /** @returns {string} */\n  getValue() {\n    return this.node.name;\n  }\n\n  /** @returns {boolean} */\n  hasExpression() {\n    return false;\n  }\n}\n\nmodule.exports = {\n  JSXIdentifierAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-key/jsx-namespace-name.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {JSXNamespacedName} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nclass JSXNamespaceNameAttributeKeyAdapter {\n  /** @param {JSXNamespacedName} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.node.loc;\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return this.node.range;\n  }\n\n  /** @returns {string} */\n  getValue() {\n    return `${this.node.namespace.name}:${this.node.name.name}`;\n  }\n\n  /** @returns {boolean} */\n  hasExpression() {\n    return false;\n  }\n}\n\nmodule.exports = {\n  JSXNamespaceNameAttributeKeyAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-value/factory.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   JSXExpressionContainer,\n *   Literal,\n *   TemplateLiteral\n * } from \"../../types\"\n */\n\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\nconst { JSXExpressionAttributeValueAdapter } = require(\"./jsx-expression\");\n\nconst { LiteralAttributeValueAdapter } = require(\"./literal\");\nconst { TemplateLiteralAttributeValueAdapter } = require(\"./template-literal\");\n\n/**\n * @param {Literal | TemplateLiteral | JSXExpressionContainer} node\n * @returns {AttributeValueAdapter}\n */\nfunction createAttributeValueAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.Literal: {\n      return new LiteralAttributeValueAdapter(node);\n    }\n    case AST_NODE_TYPES.TemplateLiteral: {\n      return new TemplateLiteralAttributeValueAdapter(node);\n    }\n    case AST_NODE_TYPES.JSXExpressionContainer: {\n      return new JSXExpressionAttributeValueAdapter(node);\n    }\n  }\n}\n\nmodule.exports = {\n  createAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-value/jsx-expression.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {JSXExpressionContainer} from \"../../types\"\n */\n\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\nconst { LiteralAttributeValueAdapter } = require(\"./literal\");\nconst { TemplateLiteralAttributeValueAdapter } = require(\"./template-literal\");\n\n/** @implements {AttributeValueAdapter} */\nclass JSXExpressionAttributeValueAdapter {\n  /** @param {JSXExpressionContainer} node */\n  constructor(node) {\n    this.node = node;\n    this.adapter = this.getAdapter();\n  }\n\n  /**\n   * @private\n   * @returns {AttributeValueAdapter | null}\n   */\n  getAdapter() {\n    if (this.node.expression.type === AST_NODE_TYPES.Literal) {\n      return new LiteralAttributeValueAdapter(this.node.expression);\n    }\n    if (this.node.expression.type === AST_NODE_TYPES.TemplateLiteral) {\n      return new TemplateLiteralAttributeValueAdapter(this.node.expression);\n    }\n    return null;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.adapter?.getLocation() ?? this.node.expression.loc;\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return this.adapter?.getRange() ?? this.node.expression.range;\n  }\n\n  getValue() {\n    return this.adapter?.getValue() ?? null;\n  }\n\n  hasExpression() {\n    return this.adapter?.hasExpression() ?? true;\n  }\n}\n\nmodule.exports = {\n  JSXExpressionAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-value/literal.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {Range} from \"@html-eslint/types\"\n * @import {Literal} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nclass LiteralAttributeValueAdapter {\n  /** @param {Literal} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return {\n      start: {\n        column: this.node.loc.start.column + 1,\n        line: this.node.loc.start.line,\n      },\n      end: {\n        column: this.node.loc.end.column - 1,\n        line: this.node.loc.end.line,\n      },\n    };\n  }\n\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.range[0] + 1,\n      this.node.range[1] - 1,\n    ]);\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getValue() {\n    if (typeof this.node.value === \"string\") {\n      return this.node.value;\n    } else if (typeof this.node.value === \"number\") {\n      return String(this.node.value);\n    }\n    return null;\n  }\n}\n\nmodule.exports = {\n  LiteralAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/attribute-value/template-literal.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {TemplateLiteral} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nclass TemplateLiteralAttributeValueAdapter {\n  /** @param {TemplateLiteral} node */\n  constructor(node) {\n    /** @private */\n    this.node = node;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return {\n      start: {\n        column: this.node.loc.start.column + 1,\n        line: this.node.loc.start.line,\n      },\n      end: {\n        column: this.node.loc.end.column - 1,\n        line: this.node.loc.end.line,\n      },\n    };\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.range[0] + 1,\n      this.node.range[1] - 1,\n    ]);\n  }\n  /** @returns {string | null} */\n  getValue() {\n    if (this.hasExpression()) {\n      return null;\n    }\n    const quasis = this.node.quasis[0];\n    return quasis.value.cooked;\n  }\n\n  /** @returns {boolean} */\n  hasExpression() {\n    return !!this.node.expressions.length;\n  }\n}\n\nmodule.exports = {\n  TemplateLiteralAttributeValueAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/element/factory.js",
    "content": "/**\n * @import {ElementAdapter} from \"@html-eslint/core\"\n * @import {JSXElement} from \"../../types\"\n */\n\nconst { JSXElementElementAdapter } = require(\"./jsx-element\");\n\n/**\n * @param {JSXElement} node\n * @returns {ElementAdapter}\n */\nfunction createElementAdapter(node) {\n  return new JSXElementElementAdapter(node);\n}\n\nmodule.exports = {\n  createElementAdapter,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/adapters/element/jsx-element.js",
    "content": "/**\n * @import {\n *   AttributeAdapter,\n *   ElementAdapter\n * } from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {\n *   JSXElement,\n *   JSXMemberExpression\n * } from \"../../types\"\n */\n\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\nconst { createAttributeAdapter } = require(\"../attribute/factory\");\n\n/**\n * Recursively builds the string representation of a JSXMemberExpression. For\n * example, <a.b.c> becomes \"a.b.c\"\n *\n * @param {JSXMemberExpression} node\n * @returns {string}\n */\nfunction getJSXMemberExpressionName(node) {\n  const objectName =\n    node.object.type === AST_NODE_TYPES.JSXIdentifier\n      ? node.object.name\n      : node.object.type === AST_NODE_TYPES.JSXNamespacedName\n        ? `${node.object.namespace.name}:${node.object.name.name}`\n        : getJSXMemberExpressionName(node.object);\n  return `${objectName}.${node.property.name}`;\n}\n\n/** @implements {ElementAdapter} */\nclass JSXElementElementAdapter {\n  /** @param {JSXElement} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  /** @returns {string} */\n  getElementName() {\n    if (\n      this.node.openingElement.name.type === AST_NODE_TYPES.JSXNamespacedName\n    ) {\n      return `${this.node.openingElement.name.namespace.name}:${this.node.openingElement.name.name.name}`;\n    }\n    if (\n      this.node.openingElement.name.type === AST_NODE_TYPES.JSXMemberExpression\n    ) {\n      return getJSXMemberExpressionName(this.node.openingElement.name);\n    }\n    return this.node.openingElement.name.name;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.node.loc;\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return this.node.range;\n  }\n\n  /** @returns {AttributeAdapter[]} */\n  getAttributes() {\n    return this.node.openingElement.attributes.map((attribute) =>\n      createAttributeAdapter(attribute)\n    );\n  }\n\n  /** @returns {SourceLocation} */\n  getOpenStartLocation() {\n    return this.node.openingElement.name.loc;\n  }\n\n  /** @returns {Range} */\n  getOpenStartRange() {\n    return this.node.openingElement.name.range;\n  }\n}\n\nmodule.exports = { JSXElementElementAdapter };\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/configs/index.js",
    "content": "const rules = require(\"../rules\");\nconst ruleKeys = Object.keys(rules);\n\nconst allRules = ruleKeys.reduce((acc, ruleName) => {\n  acc[`@html-eslint/react/${ruleName}`] = \"error\";\n  if (ruleName === \"use-baseline\") {\n    acc[`@html-eslint/react/${ruleName}`] = \"warn\";\n  }\n  return acc;\n}, /** @type {Record<string, \"error\" | \"warn\">} */ ({}));\n\nmodule.exports = {\n  allRules,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/constants/node-types.js",
    "content": "/**\n * AST Node Types Re-defined from @typescript-eslint/types AST_NODE_TYPES enum\n * as string constants to avoid runtime dependency on @typescript-eslint/types\n */\nconst AST_NODE_TYPES = /** @type {const} */ ({\n  AccessorProperty: \"AccessorProperty\",\n  ArrayExpression: \"ArrayExpression\",\n  ArrayPattern: \"ArrayPattern\",\n  ArrowFunctionExpression: \"ArrowFunctionExpression\",\n  AssignmentExpression: \"AssignmentExpression\",\n  AssignmentPattern: \"AssignmentPattern\",\n  AwaitExpression: \"AwaitExpression\",\n  BinaryExpression: \"BinaryExpression\",\n  BlockStatement: \"BlockStatement\",\n  BreakStatement: \"BreakStatement\",\n  CallExpression: \"CallExpression\",\n  CatchClause: \"CatchClause\",\n  ChainExpression: \"ChainExpression\",\n  ClassBody: \"ClassBody\",\n  ClassDeclaration: \"ClassDeclaration\",\n  ClassExpression: \"ClassExpression\",\n  ConditionalExpression: \"ConditionalExpression\",\n  ContinueStatement: \"ContinueStatement\",\n  DebuggerStatement: \"DebuggerStatement\",\n  Decorator: \"Decorator\",\n  DoWhileStatement: \"DoWhileStatement\",\n  EmptyStatement: \"EmptyStatement\",\n  ExportAllDeclaration: \"ExportAllDeclaration\",\n  ExportDefaultDeclaration: \"ExportDefaultDeclaration\",\n  ExportNamedDeclaration: \"ExportNamedDeclaration\",\n  ExportSpecifier: \"ExportSpecifier\",\n  ExpressionStatement: \"ExpressionStatement\",\n  ForInStatement: \"ForInStatement\",\n  ForOfStatement: \"ForOfStatement\",\n  ForStatement: \"ForStatement\",\n  FunctionDeclaration: \"FunctionDeclaration\",\n  FunctionExpression: \"FunctionExpression\",\n  Identifier: \"Identifier\",\n  IfStatement: \"IfStatement\",\n  ImportAttribute: \"ImportAttribute\",\n  ImportDeclaration: \"ImportDeclaration\",\n  ImportDefaultSpecifier: \"ImportDefaultSpecifier\",\n  ImportExpression: \"ImportExpression\",\n  ImportNamespaceSpecifier: \"ImportNamespaceSpecifier\",\n  ImportSpecifier: \"ImportSpecifier\",\n  JSXAttribute: \"JSXAttribute\",\n  JSXClosingElement: \"JSXClosingElement\",\n  JSXClosingFragment: \"JSXClosingFragment\",\n  JSXElement: \"JSXElement\",\n  JSXEmptyExpression: \"JSXEmptyExpression\",\n  JSXExpressionContainer: \"JSXExpressionContainer\",\n  JSXFragment: \"JSXFragment\",\n  JSXIdentifier: \"JSXIdentifier\",\n  JSXMemberExpression: \"JSXMemberExpression\",\n  JSXNamespacedName: \"JSXNamespacedName\",\n  JSXOpeningElement: \"JSXOpeningElement\",\n  JSXOpeningFragment: \"JSXOpeningFragment\",\n  JSXSpreadAttribute: \"JSXSpreadAttribute\",\n  JSXSpreadChild: \"JSXSpreadChild\",\n  JSXText: \"JSXText\",\n  LabeledStatement: \"LabeledStatement\",\n  Literal: \"Literal\",\n  LogicalExpression: \"LogicalExpression\",\n  MemberExpression: \"MemberExpression\",\n  MetaProperty: \"MetaProperty\",\n  MethodDefinition: \"MethodDefinition\",\n  NewExpression: \"NewExpression\",\n  ObjectExpression: \"ObjectExpression\",\n  ObjectPattern: \"ObjectPattern\",\n  PrivateIdentifier: \"PrivateIdentifier\",\n  Program: \"Program\",\n  Property: \"Property\",\n  PropertyDefinition: \"PropertyDefinition\",\n  RestElement: \"RestElement\",\n  ReturnStatement: \"ReturnStatement\",\n  SequenceExpression: \"SequenceExpression\",\n  SpreadElement: \"SpreadElement\",\n  StaticBlock: \"StaticBlock\",\n  Super: \"Super\",\n  SwitchCase: \"SwitchCase\",\n  SwitchStatement: \"SwitchStatement\",\n  TaggedTemplateExpression: \"TaggedTemplateExpression\",\n  TemplateLiteral: \"TemplateLiteral\",\n  TemplateElement: \"TemplateElement\",\n  ThisExpression: \"ThisExpression\",\n  ThrowStatement: \"ThrowStatement\",\n  TryStatement: \"TryStatement\",\n  TSAbstractAccessorProperty: \"TSAbstractAccessorProperty\",\n  TSAbstractKeyword: \"TSAbstractKeyword\",\n  TSAbstractMethodDefinition: \"TSAbstractMethodDefinition\",\n  TSAbstractPropertyDefinition: \"TSAbstractPropertyDefinition\",\n  TSAnyKeyword: \"TSAnyKeyword\",\n  TSArrayType: \"TSArrayType\",\n  TSAsExpression: \"TSAsExpression\",\n  TSAsyncKeyword: \"TSAsyncKeyword\",\n  TSBigIntKeyword: \"TSBigIntKeyword\",\n  TSBooleanKeyword: \"TSBooleanKeyword\",\n  TSCallSignatureDeclaration: \"TSCallSignatureDeclaration\",\n  TSClassImplements: \"TSClassImplements\",\n  TSConditionalType: \"TSConditionalType\",\n  TSConstructorType: \"TSConstructorType\",\n  TSConstructSignatureDeclaration: \"TSConstructSignatureDeclaration\",\n  TSDeclareFunction: \"TSDeclareFunction\",\n  TSDeclareKeyword: \"TSDeclareKeyword\",\n  TSEmptyBodyFunctionExpression: \"TSEmptyBodyFunctionExpression\",\n  TSEnumBody: \"TSEnumBody\",\n  TSEnumDeclaration: \"TSEnumDeclaration\",\n  TSEnumMember: \"TSEnumMember\",\n  TSExportAssignment: \"TSExportAssignment\",\n  TSExportKeyword: \"TSExportKeyword\",\n  TSExternalModuleReference: \"TSExternalModuleReference\",\n  TSFunctionType: \"TSFunctionType\",\n  TSImportEqualsDeclaration: \"TSImportEqualsDeclaration\",\n  TSImportType: \"TSImportType\",\n  TSIndexedAccessType: \"TSIndexedAccessType\",\n  TSIndexSignature: \"TSIndexSignature\",\n  TSInferType: \"TSInferType\",\n  TSInstantiationExpression: \"TSInstantiationExpression\",\n  TSInterfaceBody: \"TSInterfaceBody\",\n  TSInterfaceDeclaration: \"TSInterfaceDeclaration\",\n  TSInterfaceHeritage: \"TSInterfaceHeritage\",\n  TSIntersectionType: \"TSIntersectionType\",\n  TSIntrinsicKeyword: \"TSIntrinsicKeyword\",\n  TSLiteralType: \"TSLiteralType\",\n  TSMappedType: \"TSMappedType\",\n  TSMethodSignature: \"TSMethodSignature\",\n  TSModuleBlock: \"TSModuleBlock\",\n  TSModuleDeclaration: \"TSModuleDeclaration\",\n  TSNamedTupleMember: \"TSNamedTupleMember\",\n  TSNamespaceExportDeclaration: \"TSNamespaceExportDeclaration\",\n  TSNeverKeyword: \"TSNeverKeyword\",\n  TSNonNullExpression: \"TSNonNullExpression\",\n  TSNullKeyword: \"TSNullKeyword\",\n  TSNumberKeyword: \"TSNumberKeyword\",\n  TSObjectKeyword: \"TSObjectKeyword\",\n  TSOptionalType: \"TSOptionalType\",\n  TSParameterProperty: \"TSParameterProperty\",\n  TSPrivateKeyword: \"TSPrivateKeyword\",\n  TSPropertySignature: \"TSPropertySignature\",\n  TSProtectedKeyword: \"TSProtectedKeyword\",\n  TSPublicKeyword: \"TSPublicKeyword\",\n  TSQualifiedName: \"TSQualifiedName\",\n  TSReadonlyKeyword: \"TSReadonlyKeyword\",\n  TSRestType: \"TSRestType\",\n  TSSatisfiesExpression: \"TSSatisfiesExpression\",\n  TSStaticKeyword: \"TSStaticKeyword\",\n  TSStringKeyword: \"TSStringKeyword\",\n  TSSymbolKeyword: \"TSSymbolKeyword\",\n  TSTemplateLiteralType: \"TSTemplateLiteralType\",\n  TSThisType: \"TSThisType\",\n  TSTupleType: \"TSTupleType\",\n  TSTypeAliasDeclaration: \"TSTypeAliasDeclaration\",\n  TSTypeAnnotation: \"TSTypeAnnotation\",\n  TSTypeAssertion: \"TSTypeAssertion\",\n  TSTypeLiteral: \"TSTypeLiteral\",\n  TSTypeOperator: \"TSTypeOperator\",\n  TSTypeParameter: \"TSTypeParameter\",\n  TSTypeParameterDeclaration: \"TSTypeParameterDeclaration\",\n  TSTypeParameterInstantiation: \"TSTypeParameterInstantiation\",\n  TSTypePredicate: \"TSTypePredicate\",\n  TSTypeQuery: \"TSTypeQuery\",\n  TSTypeReference: \"TSTypeReference\",\n  TSUndefinedKeyword: \"TSUndefinedKeyword\",\n  TSUnionType: \"TSUnionType\",\n  TSUnknownKeyword: \"TSUnknownKeyword\",\n  TSVoidKeyword: \"TSVoidKeyword\",\n  UnaryExpression: \"UnaryExpression\",\n  UpdateExpression: \"UpdateExpression\",\n  VariableDeclaration: \"VariableDeclaration\",\n  VariableDeclarator: \"VariableDeclarator\",\n  WhileStatement: \"WhileStatement\",\n  WithStatement: \"WithStatement\",\n  YieldExpression: \"YieldExpression\",\n});\n\nmodule.exports = { AST_NODE_TYPES };\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/index.js",
    "content": "const rules = require(\"./rules\");\nconst { name, version } = require(\"../package.json\");\nconst { allRules } = require(\"./configs\");\n\n/** @import {ESLint} from \"eslint\" */\n\n/** @type {ESLint.Plugin} */\nconst plugin = {\n  meta: {\n    name,\n    version,\n  },\n  // @ts-ignore\n  rules,\n  configs: {\n    recommended: {\n      rules: allRules,\n      plugins: {\n        /** @returns {ESLint.Plugin} */\n        get [\"@html-eslint/react\"]() {\n          return require(\".\");\n        },\n      },\n    },\n    all: {\n      rules: allRules,\n      plugins: {\n        /** @returns {ESLint.Plugin} */\n        get [\"@html-eslint/react\"]() {\n          return require(\".\");\n        },\n      },\n    },\n  },\n};\n\nmodule.exports = plugin;\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/classname-spacing.js",
    "content": "/**\n * @import {ClassSpacingResult} from \"@html-eslint/core\"\n * @import {AST} from \"eslint\"\n * @import {\n *   ConditionalExpression,\n *   JSXExpressionContainer,\n *   Literal,\n *   LogicalExpression,\n *   NodeOrToken,\n *   RuleModule,\n *   TemplateLiteral\n * } from \"../types\"\n * @typedef {Object} Option\n * @property {string[]} [Option.callees]\n */\nconst {\n  classSpacing,\n  CLASS_SPACING_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst {\n  isLiteral,\n  isTemplateLiteral,\n  isLogicalExpression,\n  isConditionalExpression,\n} = require(\"./utils/node\");\nconst {\n  createAttributeValueAdapter,\n} = require(\"../adapters/attribute-value/factory\");\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"layout\",\n\n    docs: {\n      description: \"Disallow extra spacing in className values\",\n      category: \"Stylistic Issues\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/react/rules/classname-spacing\",\n    },\n\n    fixable: \"code\",\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          callees: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n            uniqueItems: true,\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [CLASS_SPACING_MESSAGE_IDS.extraSpacing]:\n        \"Unexpected extra spacing in className value\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    const callees = options.callees || [];\n    const ruleCore = classSpacing();\n\n    /**\n     * Check if a node matches the callees option\n     *\n     * @param {any} node\n     * @returns {boolean}\n     */\n    function isTargetCallee(node) {\n      if (node.callee.type === AST_NODE_TYPES.Identifier) {\n        return callees.includes(node.callee.name);\n      }\n\n      return false;\n    }\n\n    /** @param {Literal | TemplateLiteral} node */\n    function checkLiteral(node) {\n      const adapter = createAttributeValueAdapter(node);\n      const result = ruleCore.checkClassValue(adapter);\n      for (const { loc, messageId, range } of result) {\n        context.report({\n          loc,\n          messageId,\n          fix(fixer) {\n            return fixer.removeRange(range);\n          },\n        });\n      }\n    }\n\n    /** @param {LogicalExpression} node */\n    function checkLogicalExpression(node) {\n      [node.left, node.right].forEach((n) => {\n        if (isLiteral(n) || isTemplateLiteral(n)) {\n          checkLiteral(n);\n        } else if (isLogicalExpression(n)) {\n          checkLogicalExpression(n);\n        } else if (isConditionalExpression(n)) {\n          checkConditionalExpression(n);\n        }\n      });\n    }\n\n    /** @param {ConditionalExpression} node */\n    function checkConditionalExpression(node) {\n      [node.consequent, node.alternate].forEach((n) => {\n        if (isLiteral(n) || isTemplateLiteral(n)) {\n          checkLiteral(n);\n        } else if (isLogicalExpression(n)) {\n          checkLogicalExpression(n);\n        } else if (isConditionalExpression(n)) {\n          checkConditionalExpression(n);\n        }\n      });\n    }\n\n    /**\n     * Check if node is a checkable expression and process it\n     *\n     * @param {NodeOrToken} node\n     */\n    function checkExpression(node) {\n      if (isLiteral(node) || isTemplateLiteral(node)) {\n        checkLiteral(node);\n      } else if (isLogicalExpression(node)) {\n        checkLogicalExpression(node);\n      } else if (isConditionalExpression(node)) {\n        checkConditionalExpression(node);\n      }\n    }\n\n    /** @param {JSXExpressionContainer} node */\n    function checkJSXExpressionContainer(node) {\n      checkExpression(node.expression);\n    }\n\n    return {\n      CallExpression(node) {\n        if (!isTargetCallee(node)) {\n          return;\n        }\n\n        for (const arg of node.arguments) {\n          checkExpression(arg);\n        }\n      },\n      JSXAttribute(node) {\n        if (\n          node.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.name.name.toLowerCase() !== \"classname\" ||\n          !node.value\n        ) {\n          return;\n        }\n\n        if (isLiteral(node.value)) {\n          checkLiteral(node.value);\n        } else if (node.value.type === AST_NODE_TYPES.JSXExpressionContainer) {\n          checkJSXExpressionContainer(node.value);\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/index.js",
    "content": "const noInvalidAttrValue = require(\"./no-invalid-attr-value\");\nconst useBaseline = require(\"./use-baseline\");\nconst noIneffectiveAttrs = require(\"./no-ineffective-attrs\");\nconst noObsoleteTags = require(\"./no-obsolete-tags\");\nconst noObsoleteAttrs = require(\"./no-obsolete-attrs\");\nconst classnameSpacing = require(\"./classname-spacing\");\nconst noDuplicateClassname = require(\"./no-duplicate-classname\");\n// import new rule here ↑\n\nconst rules = {\n  \"no-invalid-attr-value\": noInvalidAttrValue,\n  \"use-baseline\": useBaseline,\n  \"no-ineffective-attrs\": noIneffectiveAttrs,\n  \"no-obsolete-tags\": noObsoleteTags,\n  \"no-obsolete-attrs\": noObsoleteAttrs,\n  \"classname-spacing\": classnameSpacing,\n  \"no-duplicate-classname\": noDuplicateClassname,\n  // export new rule here ↑\n};\n\nmodule.exports = rules;\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/no-duplicate-classname.js",
    "content": "/**\n * @import {\n *   ConditionalExpression,\n *   JSXExpressionContainer,\n *   Literal,\n *   LogicalExpression,\n *   Node,\n *   NodeOrToken,\n *   RuleModule,\n *   TemplateLiteral\n * } from \"../types\"\n * @typedef {Object} Option\n * @property {string[]} [Option.callees]\n */\nconst {\n  noDuplicateClass,\n  NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst {\n  isTemplateLiteral,\n  isLiteral,\n  isLogicalExpression,\n  isConditionalExpression,\n} = require(\"./utils/node\");\nconst {\n  createAttributeValueAdapter,\n} = require(\"../adapters/attribute-value/factory\");\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n\n    docs: {\n      description: \"Disallow duplicate class names in className\",\n      category: \"Best Practices\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/react/rules/no-duplicate-classname\",\n    },\n\n    fixable: \"code\",\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          callees: {\n            type: \"array\",\n            items: {\n              type: \"string\",\n            },\n            uniqueItems: true,\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass]:\n        \"The class '{{className}}' is duplicated.\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    const callees = options.callees || [];\n    const { checkClassValue } = noDuplicateClass();\n\n    /**\n     * Check if a node matches the callees option\n     *\n     * @param {any} node\n     * @returns {boolean}\n     */\n    function isTargetCallee(node) {\n      if (node.callee.type === AST_NODE_TYPES.Identifier) {\n        return callees.includes(node.callee.name);\n      }\n\n      return false;\n    }\n\n    /** @param {Literal | TemplateLiteral} node */\n    function checkLiteral(node) {\n      const adapter = createAttributeValueAdapter(node);\n      const result = checkClassValue(adapter);\n      for (const { loc, messageId, range, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n          fix(fixer) {\n            return fixer.removeRange(range);\n          },\n        });\n      }\n    }\n\n    /** @param {LogicalExpression} node */\n    function checkLogicalExpression(node) {\n      [node.left, node.right].forEach((n) => {\n        if (isLiteral(n) || isTemplateLiteral(n)) {\n          checkLiteral(n);\n        } else if (isLogicalExpression(n)) {\n          checkLogicalExpression(n);\n        } else if (isConditionalExpression(n)) {\n          checkConditionalExpression(n);\n        }\n      });\n    }\n\n    /** @param {ConditionalExpression} node */\n    function checkConditionalExpression(node) {\n      [node.consequent, node.alternate].forEach((n) => {\n        if (isLiteral(n) || isTemplateLiteral(n)) {\n          checkLiteral(n);\n        } else if (isLogicalExpression(n)) {\n          checkLogicalExpression(n);\n        } else if (isConditionalExpression(n)) {\n          checkConditionalExpression(n);\n        }\n      });\n    }\n\n    /** @param {NodeOrToken} node */\n    function checkExpression(node) {\n      if (isLiteral(node) || isTemplateLiteral(node)) {\n        checkLiteral(node);\n      } else if (isLogicalExpression(node)) {\n        checkLogicalExpression(node);\n      } else if (isConditionalExpression(node)) {\n        checkConditionalExpression(node);\n      }\n    }\n\n    /** @param {JSXExpressionContainer} node */\n    function checkJSXExpressionContainer(node) {\n      checkExpression(node.expression);\n    }\n\n    return {\n      CallExpression(node) {\n        if (!isTargetCallee(node)) {\n          return;\n        }\n\n        for (const arg of node.arguments) {\n          checkExpression(arg);\n        }\n      },\n      JSXAttribute(node) {\n        if (\n          node.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.name.name.toLowerCase() !== \"classname\" ||\n          !node.value\n        ) {\n          return;\n        }\n\n        if (isLiteral(node.value)) {\n          checkLiteral(node.value);\n        } else if (node.value.type === AST_NODE_TYPES.JSXExpressionContainer) {\n          checkJSXExpressionContainer(node.value);\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/no-ineffective-attrs.js",
    "content": "/**\n * @import {\n *   JSXAttribute,\n *   JSXIdentifier,\n *   JSXOpeningElement,\n *   JSXSpreadAttribute,\n *   Literal,\n *   RuleModule,\n *   TemplateLiteral\n * } from \"../types\"\n */\nconst {\n  noIneffectiveAttrs,\n  NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n\n    docs: {\n      description:\n        \"Disallow HTML attributes that have no effect in their context\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/react/rules/no-ineffective-attrs\",\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_INEFFECTIVE_ATTRS_MESSAGE_IDS.ineffective]: \"{{ message }}\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = /** @type {ReturnType<typeof noIneffectiveAttrs>} */ (\n      noIneffectiveAttrs()\n    );\n    return {\n      JSXElement(node) {\n        if (\n          node.openingElement.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.openingElement.name.name.toLocaleLowerCase() !==\n            node.openingElement.name.name ||\n          node.openingElement.name.name.includes(\"-\")\n        ) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = ruleCore.checkAttributes(adapter);\n\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/no-invalid-attr-value.js",
    "content": "/** @import {RuleModule} from \"../types\" */\nconst { NO_INVALID_ATTR_VALUE_MESSAGE_IDS } = require(\"@html-eslint/core\");\nconst { noInvalidAttrValue } = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n/**\n * @type {RuleModule<\n *   [{ allow?: { tag: string; attr: string; valuePattern?: string }[] }]\n * >}\n */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n\n    docs: {\n      description:\n        \"Disallow invalid attribute values according to HTML standards\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/react/rules/no-invalid-attr-value\",\n    },\n\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          allow: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              properties: {\n                tag: {\n                  type: \"string\",\n                },\n                attr: {\n                  type: \"string\",\n                },\n                valuePattern: {\n                  type: \"string\",\n                },\n              },\n              required: [\"tag\", \"attr\"],\n              additionalProperties: false,\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid]:\n        \"Invalid value '{{value}}' for attribute '{{attr}}' on <{{element}}>. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    const { checkAttributes } = noInvalidAttrValue(options);\n    return {\n      JSXElement(node) {\n        if (\n          node.openingElement.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.openingElement.name.name.toLocaleLowerCase() !==\n            node.openingElement.name.name ||\n          node.openingElement.name.name.includes(\"-\")\n        ) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = checkAttributes(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/no-obsolete-attrs.js",
    "content": "/**\n * @import {TSESTree} from \"@typescript-eslint/types\"\n * @import {RuleModule} from \"../types\"\n */\nconst {\n  noObsoleteAttrs,\n  NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[]>} */\nmodule.exports = {\n  meta: {\n    type: \"problem\",\n\n    docs: {\n      description: \"Disallow use of obsolete attributes in HTML5\",\n      category: \"Best Practice\",\n      recommended: true,\n      url: \"https://html-eslint.org/docs/react/rules/no-obsolete-attrs\",\n    },\n\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_ATTRS_MESSAGE_IDS.obsolete]:\n        \"The {{attr}} attribute on <{{element}}> is obsolete. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const { checkAttributes } = noObsoleteAttrs();\n    return {\n      JSXElement(node) {\n        if (\n          node.openingElement.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.openingElement.name.name.toLocaleLowerCase() !==\n            node.openingElement.name.name ||\n          node.openingElement.name.name.includes(\"-\")\n        ) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = checkAttributes(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/no-obsolete-tags.js",
    "content": "/** @import {RuleModule} from \"../types\" */\nconst {\n  noObsoleteTags,\n  NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/**\n * @type {RuleModule<\n *   [{ allow?: { tag: string; attr: string; valuePattern?: string }[] }]\n * >}\n */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Disallow use of obsolete elements in HTML5\",\n      category: \"Best Practice\",\n      recommended: true,\n    },\n    fixable: null,\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected]:\n        \"Unexpected use of obsolete tag <{{tag}}>\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = noObsoleteTags();\n\n    return {\n      JSXElement(node) {\n        if (\n          node.openingElement.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.openingElement.name.name.toLocaleLowerCase() !==\n            node.openingElement.name.name ||\n          node.openingElement.name.name.includes(\"-\")\n        ) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = ruleCore.checkElement(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/use-baseline.js",
    "content": "/**\n * @import {\n *   JSXAttribute,\n *   JSXIdentifier,\n *   JSXOpeningElement,\n *   JSXSpreadAttribute,\n *   Literal,\n *   RuleModule,\n *   TemplateLiteral\n * } from \"../types\"\n * @typedef {Object} Option\n * @property {\"widely\" | \"newly\" | number} Option.available\n */\n\nconst { useBaseline, USE_BASELINE_MESSAGE_IDS } = require(\"@html-eslint/core\");\nconst { AST_NODE_TYPES } = require(\"../constants/node-types\");\nconst { createElementAdapter } = require(\"../adapters/element/factory\");\n\n/** @type {RuleModule<[Option]>} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"Enforce the use of baseline features.\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/react/rules/use-baseline\",\n    },\n    fixable: null,\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          available: {\n            anyOf: [\n              {\n                enum: [\"widely\", \"newly\"],\n              },\n              {\n                // baseline year\n                type: \"integer\",\n                minimum: 2000,\n                maximum: new Date().getFullYear(),\n              },\n            ],\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n\n    messages: {\n      [USE_BASELINE_MESSAGE_IDS.noBaselineElement]:\n        \"Element '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute]:\n        \"Attribute '{{attr}}' on '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute]:\n        \"Attribute '{{attr}}' is not a {{availability}} available baseline feature.\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || { available: \"widely\" };\n    const { checkAttributes } = useBaseline(options);\n\n    return {\n      JSXElement(node) {\n        if (\n          node.openingElement.name.type !== AST_NODE_TYPES.JSXIdentifier ||\n          node.openingElement.name.name.toLocaleLowerCase() !==\n            node.openingElement.name.name ||\n          node.openingElement.name.name.includes(\"-\")\n        ) {\n          return;\n        }\n        const adapter = createElementAdapter(node);\n        const result = checkAttributes(adapter);\n        for (const { loc, messageId, data } of result) {\n          context.report({\n            loc,\n            messageId,\n            data,\n          });\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/rules/utils/node.js",
    "content": "/**\n * @import {AST} from \"eslint\"\n * @import {\n *   ConditionalExpression,\n *   JSXAttribute,\n *   JSXIdentifier,\n *   Literal,\n *   LogicalExpression,\n *   Node,\n *   NodeOrToken,\n *   TemplateLiteral\n * } from \"../../types\"\n */\nconst { AST_NODE_TYPES } = require(\"../../constants/node-types\");\n\n/**\n * Check if a node represents a static string value\n *\n * A node is considered a static string if it's either:\n *\n * - A Literal node (e.g., \"foo\", 'bar')\n * - A TemplateLiteral without any expressions (e.g., `foo`)\n *\n * @example\n *   isStaticString(\"foo\"); // true - Literal\n *   isStaticString(`bar`); // true - TemplateLiteral without expressions\n *   isStaticString(`${foo}`); // false - has expression\n *   isStaticString(someVariable); // false - not a string literal\n *\n * @param {Node} node - The AST node to check\n * @returns {node is Literal | TemplateLiteral} True if the node is a static\n *   string\n */\nfunction isStaticString(node) {\n  return (\n    (node.type === AST_NODE_TYPES.Literal && typeof node.value === \"string\") ||\n    (node.type === AST_NODE_TYPES.TemplateLiteral &&\n      node.expressions.length === 0 &&\n      node.quasis.length === 1)\n  );\n}\n\n/**\n * @param {JSXAttribute} node\n * @returns {Literal | TemplateLiteral | JSXIdentifier | null}\n */\nfunction findAttributeValueNode(node) {\n  // boolean props\n  if (!node.value && node.name.type === AST_NODE_TYPES.JSXIdentifier) {\n    return node.name;\n  }\n\n  if (node.value?.type === AST_NODE_TYPES.Literal) {\n    return node.value;\n  }\n\n  if (\n    node.value?.type === AST_NODE_TYPES.JSXExpressionContainer &&\n    (node.value?.expression.type === AST_NODE_TYPES.Literal ||\n      (node.value?.expression.type === AST_NODE_TYPES.TemplateLiteral &&\n        node.value?.expression.expressions.length === 0 &&\n        node.value?.expression.quasis.length === 1))\n  ) {\n    return node.value?.expression;\n  }\n  return null;\n}\n\n/**\n * Adjust the column position of a source location\n *\n * @param {AST.SourceLocation} location - The source location to adjust\n * @param {number} columnOffset - The number of columns to add\n * @returns {AST.SourceLocation} A new location with adjusted columns\n */\nfunction adjustLocationColumn(location, columnOffset) {\n  return {\n    start: {\n      line: location.start.line,\n      column: location.start.column + columnOffset,\n    },\n    end: {\n      line: location.end.line,\n      column: location.end.column + columnOffset,\n    },\n  };\n}\n\n/**\n * @param {NodeOrToken} node\n * @returns {node is Literal}\n */\nfunction isLiteral(node) {\n  return node.type === AST_NODE_TYPES.Literal;\n}\n\n/**\n * @param {NodeOrToken} node\n * @returns {node is TemplateLiteral}\n */\nfunction isTemplateLiteral(node) {\n  return node.type === AST_NODE_TYPES.TemplateLiteral;\n}\n\n/**\n * @param {NodeOrToken} node\n * @returns {node is LogicalExpression}\n */\nfunction isLogicalExpression(node) {\n  return node.type === AST_NODE_TYPES.LogicalExpression;\n}\n\n/**\n * @param {NodeOrToken} node\n * @returns {node is ConditionalExpression}\n */\nfunction isConditionalExpression(node) {\n  return node.type === AST_NODE_TYPES.ConditionalExpression;\n}\n\nmodule.exports = {\n  isStaticString,\n  findAttributeValueNode,\n  adjustLocationColumn,\n  isLiteral,\n  isTemplateLiteral,\n  isLogicalExpression,\n  isConditionalExpression,\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/types.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/eslint-plugin-react/lib/types.ts",
    "content": "/** https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/utils/src/ts-eslint/Rule.ts */\nimport type { TSESTree } from \"@typescript-eslint/types\";\nimport eslint from \"eslint\";\n\n/** Utility type to convert node type enum to string literal */\ntype NodeWithStringType<T extends TSESTree.Node> = Omit<T, \"type\"> & {\n  type: `${T[\"type\"]}`;\n};\n\nexport type NullLiteral = NodeWithStringType<TSESTree.NullLiteral>;\nexport type NodeOrToken = TSESTree.NodeOrTokenData;\n// Node type aliases with string literal types\nexport type AccessorProperty = NodeWithStringType<TSESTree.AccessorProperty>;\nexport type ArrayExpression = NodeWithStringType<TSESTree.ArrayExpression>;\nexport type ArrayPattern = NodeWithStringType<TSESTree.ArrayPattern>;\nexport type ArrowFunctionExpression =\n  NodeWithStringType<TSESTree.ArrowFunctionExpression>;\nexport type AssignmentExpression =\n  NodeWithStringType<TSESTree.AssignmentExpression>;\nexport type AssignmentPattern = NodeWithStringType<TSESTree.AssignmentPattern>;\nexport type AwaitExpression = NodeWithStringType<TSESTree.AwaitExpression>;\nexport type BinaryExpression = NodeWithStringType<TSESTree.BinaryExpression>;\nexport type BlockStatement = NodeWithStringType<TSESTree.BlockStatement>;\nexport type BreakStatement = NodeWithStringType<TSESTree.BreakStatement>;\nexport type CallExpression = NodeWithStringType<TSESTree.CallExpression>;\nexport type CatchClause = NodeWithStringType<TSESTree.CatchClause>;\nexport type ChainExpression = NodeWithStringType<TSESTree.ChainExpression>;\nexport type ClassBody = NodeWithStringType<TSESTree.ClassBody>;\nexport type ClassDeclaration = NodeWithStringType<TSESTree.ClassDeclaration>;\nexport type ClassExpression = NodeWithStringType<TSESTree.ClassExpression>;\nexport type ConditionalExpression =\n  NodeWithStringType<TSESTree.ConditionalExpression>;\nexport type ContinueStatement = NodeWithStringType<TSESTree.ContinueStatement>;\nexport type DebuggerStatement = NodeWithStringType<TSESTree.DebuggerStatement>;\nexport type Decorator = NodeWithStringType<TSESTree.Decorator>;\nexport type DoWhileStatement = NodeWithStringType<TSESTree.DoWhileStatement>;\nexport type EmptyStatement = NodeWithStringType<TSESTree.EmptyStatement>;\nexport type ExportAllDeclaration =\n  NodeWithStringType<TSESTree.ExportAllDeclaration>;\nexport type ExportDefaultDeclaration =\n  NodeWithStringType<TSESTree.ExportDefaultDeclaration>;\nexport type ExportNamedDeclaration =\n  NodeWithStringType<TSESTree.ExportNamedDeclaration>;\nexport type ExportSpecifier = NodeWithStringType<TSESTree.ExportSpecifier>;\nexport type ExpressionStatement =\n  NodeWithStringType<TSESTree.ExpressionStatement>;\nexport type ForInStatement = NodeWithStringType<TSESTree.ForInStatement>;\nexport type ForOfStatement = NodeWithStringType<TSESTree.ForOfStatement>;\nexport type ForStatement = NodeWithStringType<TSESTree.ForStatement>;\nexport type FunctionDeclaration =\n  NodeWithStringType<TSESTree.FunctionDeclaration>;\nexport type FunctionExpression =\n  NodeWithStringType<TSESTree.FunctionExpression>;\nexport type Identifier = NodeWithStringType<TSESTree.Identifier>;\nexport type IfStatement = NodeWithStringType<TSESTree.IfStatement>;\nexport type ImportAttribute = NodeWithStringType<TSESTree.ImportAttribute>;\nexport type ImportDeclaration = NodeWithStringType<TSESTree.ImportDeclaration>;\nexport type ImportDefaultSpecifier =\n  NodeWithStringType<TSESTree.ImportDefaultSpecifier>;\nexport type ImportExpression = NodeWithStringType<TSESTree.ImportExpression>;\nexport type ImportNamespaceSpecifier =\n  NodeWithStringType<TSESTree.ImportNamespaceSpecifier>;\nexport type ImportSpecifier = NodeWithStringType<TSESTree.ImportSpecifier>;\nexport type JSXAttribute = NodeWithStringType<TSESTree.JSXAttribute>;\nexport type JSXClosingElement = NodeWithStringType<TSESTree.JSXClosingElement>;\nexport type JSXClosingFragment =\n  NodeWithStringType<TSESTree.JSXClosingFragment>;\nexport type JSXElement = NodeWithStringType<TSESTree.JSXElement>;\nexport type JSXEmptyExpression =\n  NodeWithStringType<TSESTree.JSXEmptyExpression>;\nexport type JSXExpressionContainer =\n  NodeWithStringType<TSESTree.JSXExpressionContainer>;\nexport type JSXFragment = NodeWithStringType<TSESTree.JSXFragment>;\nexport type JSXIdentifier = NodeWithStringType<TSESTree.JSXIdentifier>;\nexport type JSXMemberExpression =\n  NodeWithStringType<TSESTree.JSXMemberExpression>;\nexport type JSXNamespacedName = NodeWithStringType<TSESTree.JSXNamespacedName>;\nexport type JSXOpeningElement = NodeWithStringType<TSESTree.JSXOpeningElement>;\nexport type JSXOpeningFragment =\n  NodeWithStringType<TSESTree.JSXOpeningFragment>;\nexport type JSXSpreadAttribute =\n  NodeWithStringType<TSESTree.JSXSpreadAttribute>;\nexport type JSXSpreadChild = NodeWithStringType<TSESTree.JSXSpreadChild>;\nexport type JSXText = NodeWithStringType<TSESTree.JSXText>;\nexport type LabeledStatement = NodeWithStringType<TSESTree.LabeledStatement>;\nexport type Literal = NodeWithStringType<TSESTree.Literal>;\nexport type LogicalExpression = NodeWithStringType<TSESTree.LogicalExpression>;\nexport type MemberExpression = NodeWithStringType<TSESTree.MemberExpression>;\nexport type MetaProperty = NodeWithStringType<TSESTree.MetaProperty>;\nexport type MethodDefinition = NodeWithStringType<TSESTree.MethodDefinition>;\nexport type NewExpression = NodeWithStringType<TSESTree.NewExpression>;\nexport type ObjectExpression = NodeWithStringType<TSESTree.ObjectExpression>;\nexport type ObjectPattern = NodeWithStringType<TSESTree.ObjectPattern>;\nexport type PrivateIdentifier = NodeWithStringType<TSESTree.PrivateIdentifier>;\nexport type Program = NodeWithStringType<TSESTree.Program>;\nexport type Property = NodeWithStringType<TSESTree.Property>;\nexport type PropertyDefinition =\n  NodeWithStringType<TSESTree.PropertyDefinition>;\nexport type RestElement = NodeWithStringType<TSESTree.RestElement>;\nexport type ReturnStatement = NodeWithStringType<TSESTree.ReturnStatement>;\nexport type SequenceExpression =\n  NodeWithStringType<TSESTree.SequenceExpression>;\nexport type SpreadElement = NodeWithStringType<TSESTree.SpreadElement>;\nexport type StaticBlock = NodeWithStringType<TSESTree.StaticBlock>;\nexport type Super = NodeWithStringType<TSESTree.Super>;\nexport type SwitchCase = NodeWithStringType<TSESTree.SwitchCase>;\nexport type SwitchStatement = NodeWithStringType<TSESTree.SwitchStatement>;\nexport type TaggedTemplateExpression =\n  NodeWithStringType<TSESTree.TaggedTemplateExpression>;\nexport type TemplateElement = NodeWithStringType<TSESTree.TemplateElement>;\nexport type TemplateLiteral = NodeWithStringType<TSESTree.TemplateLiteral>;\nexport type ThisExpression = NodeWithStringType<TSESTree.ThisExpression>;\nexport type ThrowStatement = NodeWithStringType<TSESTree.ThrowStatement>;\nexport type TryStatement = NodeWithStringType<TSESTree.TryStatement>;\nexport type UnaryExpression = NodeWithStringType<TSESTree.UnaryExpression>;\nexport type UpdateExpression = NodeWithStringType<TSESTree.UpdateExpression>;\nexport type VariableDeclaration =\n  NodeWithStringType<TSESTree.VariableDeclaration>;\nexport type VariableDeclarator =\n  NodeWithStringType<TSESTree.VariableDeclarator>;\nexport type WhileStatement = NodeWithStringType<TSESTree.WhileStatement>;\nexport type WithStatement = NodeWithStringType<TSESTree.WithStatement>;\nexport type YieldExpression = NodeWithStringType<TSESTree.YieldExpression>;\n\n// TypeScript-specific node types\nexport type TSAsExpression = NodeWithStringType<TSESTree.TSAsExpression>;\nexport type TSTypeAnnotation = NodeWithStringType<TSESTree.TSTypeAnnotation>;\nexport type TSTypeReference = NodeWithStringType<TSESTree.TSTypeReference>;\nexport type TSQualifiedName = NodeWithStringType<TSESTree.TSQualifiedName>;\nexport type TSInterfaceDeclaration =\n  NodeWithStringType<TSESTree.TSInterfaceDeclaration>;\nexport type TSTypeAliasDeclaration =\n  NodeWithStringType<TSESTree.TSTypeAliasDeclaration>;\nexport type TSEnumDeclaration = NodeWithStringType<TSESTree.TSEnumDeclaration>;\nexport type TSModuleDeclaration =\n  NodeWithStringType<TSESTree.TSModuleDeclaration>;\nexport type TSImportEqualsDeclaration =\n  NodeWithStringType<TSESTree.TSImportEqualsDeclaration>;\nexport type TSExportAssignment =\n  NodeWithStringType<TSESTree.TSExportAssignment>;\nexport type TSNamespaceExportDeclaration =\n  NodeWithStringType<TSESTree.TSNamespaceExportDeclaration>;\n\n// Union type of all node types\nexport type Node =\n  | AccessorProperty\n  | ArrayExpression\n  | ArrayPattern\n  | ArrowFunctionExpression\n  | AssignmentExpression\n  | AssignmentPattern\n  | AwaitExpression\n  | BinaryExpression\n  | BlockStatement\n  | BreakStatement\n  | CallExpression\n  | CatchClause\n  | ChainExpression\n  | ClassBody\n  | ClassDeclaration\n  | ClassExpression\n  | ConditionalExpression\n  | ContinueStatement\n  | DebuggerStatement\n  | Decorator\n  | DoWhileStatement\n  | EmptyStatement\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ExportSpecifier\n  | ExpressionStatement\n  | ForInStatement\n  | ForOfStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Identifier\n  | IfStatement\n  | ImportAttribute\n  | ImportDeclaration\n  | ImportDefaultSpecifier\n  | ImportExpression\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXClosingFragment\n  | JSXElement\n  | JSXEmptyExpression\n  | JSXExpressionContainer\n  | JSXFragment\n  | JSXIdentifier\n  | JSXMemberExpression\n  | JSXNamespacedName\n  | JSXOpeningElement\n  | JSXOpeningFragment\n  | JSXSpreadAttribute\n  | JSXSpreadChild\n  | JSXText\n  | LabeledStatement\n  | Literal\n  | LogicalExpression\n  | MemberExpression\n  | MetaProperty\n  | MethodDefinition\n  | NewExpression\n  | ObjectExpression\n  | ObjectPattern\n  | PrivateIdentifier\n  | Program\n  | Property\n  | PropertyDefinition\n  | RestElement\n  | ReturnStatement\n  | SequenceExpression\n  | SpreadElement\n  | StaticBlock\n  | Super\n  | SwitchCase\n  | SwitchStatement\n  | TaggedTemplateExpression\n  | TemplateElement\n  | TemplateLiteral\n  | ThisExpression\n  | ThrowStatement\n  | TryStatement\n  | UnaryExpression\n  | UpdateExpression\n  | VariableDeclaration\n  | VariableDeclarator\n  | WhileStatement\n  | WithStatement\n  | YieldExpression;\n\nexport type RuleFunction<T extends NodeOrToken = never> = (node: T) => void;\n\ntype RuleListenerExitSelectors = {\n  [K in keyof RuleListenerBaseSelectors as `${K}:exit`]: RuleListenerBaseSelectors[K];\n};\n\ninterface RuleListenerBaseSelectors {\n  AccessorProperty?: RuleFunction<AccessorProperty>;\n  ArrayExpression?: RuleFunction<ArrayExpression>;\n  ArrayPattern?: RuleFunction<ArrayPattern>;\n  ArrowFunctionExpression?: RuleFunction<ArrowFunctionExpression>;\n  AssignmentExpression?: RuleFunction<AssignmentExpression>;\n  AssignmentPattern?: RuleFunction<AssignmentPattern>;\n  AwaitExpression?: RuleFunction<AwaitExpression>;\n  BinaryExpression?: RuleFunction<BinaryExpression>;\n  BlockStatement?: RuleFunction<BlockStatement>;\n  BreakStatement?: RuleFunction<BreakStatement>;\n  CallExpression?: RuleFunction<CallExpression>;\n  CatchClause?: RuleFunction<CatchClause>;\n  ChainExpression?: RuleFunction<ChainExpression>;\n  ClassBody?: RuleFunction<ClassBody>;\n  ClassDeclaration?: RuleFunction<ClassDeclaration>;\n  ClassExpression?: RuleFunction<ClassExpression>;\n  ConditionalExpression?: RuleFunction<ConditionalExpression>;\n  ContinueStatement?: RuleFunction<ContinueStatement>;\n  DebuggerStatement?: RuleFunction<DebuggerStatement>;\n  Decorator?: RuleFunction<Decorator>;\n  DoWhileStatement?: RuleFunction<DoWhileStatement>;\n  EmptyStatement?: RuleFunction<EmptyStatement>;\n  ExportAllDeclaration?: RuleFunction<ExportAllDeclaration>;\n  ExportDefaultDeclaration?: RuleFunction<ExportDefaultDeclaration>;\n  ExportNamedDeclaration?: RuleFunction<ExportNamedDeclaration>;\n  ExportSpecifier?: RuleFunction<ExportSpecifier>;\n  ExpressionStatement?: RuleFunction<ExpressionStatement>;\n  ForInStatement?: RuleFunction<ForInStatement>;\n  ForOfStatement?: RuleFunction<ForOfStatement>;\n  ForStatement?: RuleFunction<ForStatement>;\n  FunctionDeclaration?: RuleFunction<FunctionDeclaration>;\n  FunctionExpression?: RuleFunction<FunctionExpression>;\n  Identifier?: RuleFunction<Identifier>;\n  IfStatement?: RuleFunction<IfStatement>;\n  ImportAttribute?: RuleFunction<ImportAttribute>;\n  ImportDeclaration?: RuleFunction<ImportDeclaration>;\n  ImportDefaultSpecifier?: RuleFunction<ImportDefaultSpecifier>;\n  ImportExpression?: RuleFunction<ImportExpression>;\n  ImportNamespaceSpecifier?: RuleFunction<ImportNamespaceSpecifier>;\n  ImportSpecifier?: RuleFunction<ImportSpecifier>;\n  JSXAttribute?: RuleFunction<JSXAttribute>;\n  JSXClosingElement?: RuleFunction<JSXClosingElement>;\n  JSXClosingFragment?: RuleFunction<JSXClosingFragment>;\n  JSXElement?: RuleFunction<JSXElement>;\n  JSXEmptyExpression?: RuleFunction<JSXEmptyExpression>;\n  JSXExpressionContainer?: RuleFunction<JSXExpressionContainer>;\n  JSXFragment?: RuleFunction<JSXFragment>;\n  JSXIdentifier?: RuleFunction<JSXIdentifier>;\n  JSXMemberExpression?: RuleFunction<JSXMemberExpression>;\n  JSXNamespacedName?: RuleFunction<JSXNamespacedName>;\n  JSXOpeningElement?: RuleFunction<JSXOpeningElement>;\n  JSXOpeningFragment?: RuleFunction<JSXOpeningFragment>;\n  JSXSpreadAttribute?: RuleFunction<JSXSpreadAttribute>;\n  JSXSpreadChild?: RuleFunction<JSXSpreadChild>;\n  JSXText?: RuleFunction<JSXText>;\n  LabeledStatement?: RuleFunction<LabeledStatement>;\n  Literal?: RuleFunction<Literal>;\n  LogicalExpression?: RuleFunction<LogicalExpression>;\n  MemberExpression?: RuleFunction<MemberExpression>;\n  MetaProperty?: RuleFunction<MetaProperty>;\n  MethodDefinition?: RuleFunction<MethodDefinition>;\n  NewExpression?: RuleFunction<NewExpression>;\n  ObjectExpression?: RuleFunction<ObjectExpression>;\n  ObjectPattern?: RuleFunction<ObjectPattern>;\n  PrivateIdentifier?: RuleFunction<PrivateIdentifier>;\n  Program?: RuleFunction<Program>;\n  Property?: RuleFunction<Property>;\n  PropertyDefinition?: RuleFunction<PropertyDefinition>;\n  RestElement?: RuleFunction<RestElement>;\n  ReturnStatement?: RuleFunction<ReturnStatement>;\n  SequenceExpression?: RuleFunction<SequenceExpression>;\n  SpreadElement?: RuleFunction<SpreadElement>;\n  StaticBlock?: RuleFunction<StaticBlock>;\n  Super?: RuleFunction<Super>;\n  SwitchCase?: RuleFunction<SwitchCase>;\n  SwitchStatement?: RuleFunction<SwitchStatement>;\n  TaggedTemplateExpression?: RuleFunction<TaggedTemplateExpression>;\n  TemplateElement?: RuleFunction<TemplateElement>;\n  TemplateLiteral?: RuleFunction<TemplateLiteral>;\n  ThisExpression?: RuleFunction<ThisExpression>;\n  ThrowStatement?: RuleFunction<ThrowStatement>;\n  TryStatement?: RuleFunction<TryStatement>;\n  UnaryExpression?: RuleFunction<UnaryExpression>;\n  UpdateExpression?: RuleFunction<UpdateExpression>;\n  VariableDeclaration?: RuleFunction<VariableDeclaration>;\n  VariableDeclarator?: RuleFunction<VariableDeclarator>;\n  WhileStatement?: RuleFunction<WhileStatement>;\n  WithStatement?: RuleFunction<WithStatement>;\n  YieldExpression?: RuleFunction<YieldExpression>;\n}\n\nexport type RuleListener = RuleListenerBaseSelectors &\n  RuleListenerExitSelectors;\n\ninterface RuleFix {\n  range: eslint.AST.Range;\n  text: string;\n}\n\nexport interface RuleFixer {\n  insertTextAfter(nodeOrToken: NodeOrToken, text: string): RuleFix;\n\n  insertTextAfterRange(range: eslint.AST.Range, text: string): RuleFix;\n\n  insertTextBefore(nodeOrToken: NodeOrToken, text: string): RuleFix;\n\n  insertTextBeforeRange(range: eslint.AST.Range, text: string): RuleFix;\n\n  remove(nodeOrToken: NodeOrToken): RuleFix;\n\n  removeRange(range: eslint.AST.Range): RuleFix;\n\n  replaceText(nodeOrToken: NodeOrToken, text: string): RuleFix;\n\n  replaceTextRange(range: eslint.AST.Range, text: string): RuleFix;\n}\n\nexport type ReportFixFunction = (\n  fixer: RuleFixer\n) => IterableIterator<RuleFix> | readonly RuleFix[] | RuleFix | null;\n\ninterface ReportDescriptorOptionsBase {\n  data?: { [key: string]: string };\n  fix?: null | ReportFixFunction;\n}\n\ntype SuggestionDescriptorMessage = { messageId: string };\nexport type SuggestionReportDescriptor = SuggestionDescriptorMessage &\n  ReportDescriptorOptionsBase;\n\ninterface ReportDescriptorOptions extends ReportDescriptorOptionsBase {\n  suggest?: SuggestionReportDescriptor[] | null;\n}\n\ntype ReportDescriptor = ReportDescriptorMessage &\n  ReportDescriptorLocation &\n  ReportDescriptorOptions;\ntype ReportDescriptorMessage = { message: string } | { messageId: string };\ntype ReportDescriptorLocation = {\n  node?: Node | null;\n  loc?: eslint.AST.SourceLocation;\n  line?: number;\n  column?: number;\n};\n\nexport interface Context<Options extends unknown[]> extends Omit<\n  eslint.Rule.RuleContext,\n  \"report\"\n> {\n  report(descriptor: ReportDescriptor): void;\n  options: Options;\n}\n\nexport interface RuleModule<Options extends unknown[]> {\n  create(context: Context<Options>): RuleListener;\n  meta: eslint.Rule.RuleMetaData;\n}\n"
  },
  {
    "path": "packages/eslint-plugin-react/package.json",
    "content": "{\n  \"name\": \"@html-eslint/eslint-plugin-react\",\n  \"version\": \"0.60.0\",\n  \"type\": \"commonjs\",\n  \"description\": \"ESLint plugin for HTML with React support\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"types/index.d.ts\",\n  \"files\": [\n    \"lib\",\n    \"types\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --coverage\",\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"build\": \"rimraf types && tsc --project tsconfig.build.json\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"eslint\",\n    \"eslintplugin\",\n    \"eslint-plugin\",\n    \"html\",\n    \"react\",\n    \"lint\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/core\": \"^0.60.0\"\n  },\n  \"peerDependencies\": {\n    \"eslint\": \">=8.0.0 || ^10.0.0-0\"\n  },\n  \"devDependencies\": {\n    \"@typescript-eslint/types\": \"^8.56.0\"\n  },\n  \"engines\": {\n    \"node\": \"^18.18.0 || ^20.9.0 || >=21.1.0\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rule-tester.js",
    "content": "/** @import {Linter} from \"eslint\" */\nconst { RuleTester: ESLintRuleTester } = require(\"eslint\");\n\nclass RuleTester extends ESLintRuleTester {\n  /** @param {Linter.Config} options */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @param {string} name\n   * @param {any} rule\n   * @param {{\n   *   valid: ESLintRuleTester.ValidTestCase[];\n   *   invalid: ESLintRuleTester.InvalidTestCase[];\n   * }} tests\n   */\n  run(name, rule, tests) {\n    super.run(name, rule, tests);\n  }\n}\n\nmodule.exports = function createRuleTester() {\n  return new RuleTester({\n    languageOptions: {\n      parserOptions: {\n        ecmaVersion: 2018,\n        sourceType: \"module\",\n        ecmaFeatures: {\n          jsx: true,\n        },\n      },\n    },\n  });\n};\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/classname-spacing.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/classname-spacing\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"classname-spacing\", rule, {\n  valid: [\n    {\n      code: '<button className=\"foo\"></button>',\n    },\n    {\n      code: '<button className=\"foo bar\"></button>',\n    },\n    {\n      code: '<button className=\"foo bar baz\"></button>',\n    },\n    {\n      code: '<button className=\"\"></button>',\n    },\n    {\n      code: \"<button className></button>\",\n    },\n    {\n      code: '<button id=\" foo \"></button>',\n    },\n    {\n      code: \"<button className={someVar}></button>\",\n    },\n    {\n      code: '<Button className=\"foo\"></Button>',\n    },\n    {\n      code: '<custom-element className=\"foo\"></custom-element>',\n    },\n    {\n      code: \"<Button className={`foo ${bar} baz`}/>\",\n    },\n    {\n      code: `<button className={\\`foo\n      bar\\`}></button>`,\n    },\n    {\n      code: 'const x = clsx(\"foo\")',\n      options: [{ callees: [\"clsx\"] }],\n    },\n    {\n      code: 'const x = cn(\"foo bar\")',\n      options: [{ callees: [\"cn\"] }],\n    },\n    {\n      code: 'const x = classnames(\" foo \")',\n      options: [{ callees: [\"clsx\"] }],\n    },\n    {\n      code: 'const x = classnames(\"foo\", bar)',\n      options: [{ callees: [\"classnames\"] }],\n    },\n    {\n      code: '<div className={condition && \"foo bar\"}></div>',\n    },\n    {\n      code: '<div className={condition ? \"foo bar\" : \"baz\"}></div>',\n    },\n    {\n      code: 'const x = clsx(condition && \"foo bar\")',\n      options: [{ callees: [\"clsx\"] }],\n    },\n    {\n      code: 'const x = clsx(condition ? \"foo bar\" : \"baz qux\")',\n      options: [{ callees: [\"clsx\"] }],\n    },\n    {\n      code: '<div className=\"foo\\n      bar\"></div>',\n    },\n    {\n      code: '<div className=\"foo\\r\\n      bar\"></div>',\n    },\n    {\n      code: \"<div className={`foo\\n      bar`}></div>\",\n    },\n  ],\n  invalid: [\n    {\n      code: '<button className=\" foo\"></button>',\n      output: '<button className=\"foo\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 21,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo \"></button>',\n      output: '<button className=\"foo\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 23,\n          endLine: 1,\n          endColumn: 24,\n        },\n      ],\n    },\n    {\n      code: '<button className=\" foo \"></button>',\n      output: '<button className=\"foo\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 21,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 24,\n          endLine: 1,\n          endColumn: 25,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"  foo\"></button>',\n      output: '<button className=\"foo\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 22,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo  \"></button>',\n      output: '<button className=\"foo\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 23,\n          endLine: 1,\n          endColumn: 25,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo  bar\"></button>',\n      output: '<button className=\"foo bar\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 24,\n          endLine: 1,\n          endColumn: 25,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo   bar\"></button>',\n      output: '<button className=\"foo bar\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 24,\n          endLine: 1,\n          endColumn: 26,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo  bar  baz\"></button>',\n      output: '<button className=\"foo bar baz\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 24,\n          endLine: 1,\n          endColumn: 25,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 29,\n          endLine: 1,\n          endColumn: 30,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"  foo  bar  \"></button>',\n      output: '<button className=\"foo bar\"></button>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 22,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 26,\n          endLine: 1,\n          endColumn: 27,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 30,\n          endLine: 1,\n          endColumn: 32,\n        },\n      ],\n    },\n    {\n      code: '<div className={\" foo\"}></div>',\n      output: '<div className={\"foo\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 18,\n          endLine: 1,\n          endColumn: 19,\n        },\n      ],\n    },\n    {\n      code: \"<div className={`foo `}></div>\",\n      output: \"<div className={`foo`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 22,\n        },\n      ],\n    },\n    {\n      code: \"<div className={`foo  bar`}></div>\",\n      output: \"<div className={`foo bar`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 22,\n          endLine: 1,\n          endColumn: 23,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(\" foo\")',\n      output: 'const x = clsx(\"foo\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 17,\n          endLine: 1,\n          endColumn: 18,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(\"foo \")',\n      output: 'const x = clsx(\"foo\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 21,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(\"foo  bar\")',\n      output: 'const x = clsx(\"foo bar\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 22,\n        },\n      ],\n    },\n    {\n      code: \"const x = cn(`foo  bar`)\",\n      output: \"const x = cn(`foo bar`)\",\n      options: [{ callees: [\"cn\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 19,\n          endLine: 1,\n          endColumn: 20,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(\" foo\", \"bar  baz\")',\n      output: 'const x = clsx(\"foo\", \"bar baz\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 17,\n          endLine: 1,\n          endColumn: 18,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 29,\n          endLine: 1,\n          endColumn: 30,\n        },\n      ],\n    },\n    {\n      code: '<div className={   \"  foo \" }></div>',\n      output: '<div className={   \"foo\" }></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 23,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 26,\n          endLine: 1,\n          endColumn: 27,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(condition && \"bar  baz\")',\n      output: 'const x = clsx(condition && \"bar baz\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 34,\n          endLine: 1,\n          endColumn: 35,\n        },\n      ],\n    },\n    {\n      code: '<div className={condition && \" foo\"}></div>',\n      output: '<div className={condition && \"foo\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 31,\n          endLine: 1,\n          endColumn: 32,\n        },\n      ],\n    },\n    {\n      code: \"<div className={condition && `foo `}></div>\",\n      output: \"<div className={condition && `foo`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 34,\n          endLine: 1,\n          endColumn: 35,\n        },\n      ],\n    },\n    {\n      code: '<div className={condition && \"foo  bar\"}></div>',\n      output: '<div className={condition && \"foo bar\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 35,\n          endLine: 1,\n          endColumn: 36,\n        },\n      ],\n    },\n    {\n      code: '<div className={condition ? \" foo\" : \"bar\"}></div>',\n      output: '<div className={condition ? \"foo\" : \"bar\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 30,\n          endLine: 1,\n          endColumn: 31,\n        },\n      ],\n    },\n    {\n      code: '<div className={condition ? \"foo\" : \"bar \"}></div>',\n      output: '<div className={condition ? \"foo\" : \"bar\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 41,\n          endLine: 1,\n          endColumn: 42,\n        },\n      ],\n    },\n    {\n      code: '<div className={condition ? \"foo  bar\" : \"baz\"}></div>',\n      output: '<div className={condition ? \"foo bar\" : \"baz\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 34,\n          endLine: 1,\n          endColumn: 35,\n        },\n      ],\n    },\n    {\n      code: '<div className={condition ? \"foo\" : \"bar  baz\"}></div>',\n      output: '<div className={condition ? \"foo\" : \"bar baz\"}></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 42,\n          endLine: 1,\n          endColumn: 43,\n        },\n      ],\n    },\n    {\n      code: '<div className=\"foo \\nbar\"></div>',\n      output: '<div className=\"foo\\nbar\"></div>',\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 20,\n          endLine: 1,\n          endColumn: 21,\n        },\n      ],\n    },\n    {\n      code: \"<div className={`foo \\nbar`}></div>\",\n      output: \"<div className={`foo\\nbar`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 21,\n          endLine: 1,\n          endColumn: 22,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(condition ? \"  foo\" : \"bar\")',\n      output: 'const x = clsx(condition ? \"foo\" : \"bar\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 29,\n          endLine: 1,\n          endColumn: 31,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(condition ? \"foo\" : \"  bar\")',\n      output: 'const x = clsx(condition ? \"foo\" : \"bar\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 37,\n          endLine: 1,\n          endColumn: 39,\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(condition ? \"foo  bar\" : \"baz  qux\")',\n      output: 'const x = clsx(condition ? \"foo bar\" : \"baz qux\")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 33,\n          endLine: 1,\n          endColumn: 34,\n        },\n        {\n          messageId: \"extraSpacing\",\n          line: 1,\n          column: 46,\n          endLine: 1,\n          endColumn: 47,\n        },\n      ],\n    },\n    {\n      code: `<button className={\\` foo \n      bar\\`}></button>`,\n      output: `<button className={\\`foo\n      bar\\`}></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          column: 21,\n        },\n        {\n          messageId: \"extraSpacing\",\n          column: 25,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/no-duplicate-classname.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-duplicate-classname\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-duplicate-classname\", rule, {\n  valid: [\n    {\n      code: '<button className=\"foo\"></button>',\n    },\n    {\n      code: '<button className=\"foo bar\"></button>',\n    },\n    {\n      code: '<button className=\"foo bar baz\"></button>',\n    },\n    {\n      code: '<button className=\"foo foofoo\"></button>',\n    },\n    {\n      code: '<button className=\"\"></button>',\n    },\n    {\n      code: \"<button className></button>\",\n    },\n    {\n      code: '<button id=\"foo foo\"></button>',\n    },\n    {\n      code: \"<button className={someVar}></button>\",\n    },\n    {\n      code: '<Button className=\"foo\"></Button>',\n    },\n    {\n      code: '<custom-element className=\"foo\"></custom-element>',\n    },\n    {\n      code: \"<Button className={`foo ${bar} baz`}/>\",\n    },\n    {\n      code: 'const x = clsx(\"foo\")',\n      options: [{ callees: [\"clsx\"] }],\n    },\n    {\n      code: 'const x = cn(\"foo bar\")',\n      options: [{ callees: [\"cn\"] }],\n    },\n    {\n      code: 'const x = classnames(\"foo bar\")',\n      options: [{ callees: [\"clsx\"] }],\n    },\n    {\n      code: 'const x = classnames(\"foo\", bar, \"baz\")',\n      options: [{ callees: [\"classnames\"] }],\n    },\n  ],\n  invalid: [\n    // JSXAttribute with Literal\n    {\n      code: '<button className=\"foo foo\"></button>',\n      output: '<button className=\"foo \"></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          line: 1,\n          column: 24,\n          endLine: 1,\n          endColumn: 27,\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo   foo\"></button>',\n      output: '<button className=\"foo   \"></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo bar foo\"></button>',\n      output: '<button className=\"foo bar \"></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: '<button className=\"foo foo bar\"></button>',\n      output: '<button className=\"foo  bar\"></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: '<button className=\" foo foo bar \"></button>',\n      output: '<button className=\" foo  bar \"></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    // JSXAttribute with JSXExpressionContainer containing Literal\n    {\n      code: '<button className={\"foo foo\"}></button>',\n      output: '<button className={\"foo \"}></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: '<button className={\"foo bar foo\"}></button>',\n      output: '<button className={\"foo bar \"}></button>',\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    // JSXAttribute with JSXExpressionContainer containing TemplateLiteral\n    {\n      code: \"<button className={`foo foo`}></button>\",\n      output: \"<button className={`foo `}></button>\",\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: \"<button className={`foo bar foo`}></button>\",\n      output: \"<button className={`foo bar `}></button>\",\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: `<button className={\\`foo \nfoo\\`}></button>`,\n      output: `<button className={\\`foo \n\\`}></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    // CallExpression with callees option\n    {\n      code: 'const x = clsx(\"foo foo\")',\n      output: 'const x = clsx(\"foo \")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: 'const x = cn(\"foo bar foo\")',\n      output: 'const x = cn(\"foo bar \")',\n      options: [{ callees: [\"cn\"] }],\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: 'const x = classnames(\"foo foo bar\")',\n      output: 'const x = classnames(\"foo  bar\")',\n      options: [{ callees: [\"classnames\"] }],\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    // CallExpression with TemplateLiteral\n    {\n      code: \"const x = clsx(`foo foo`)\",\n      output: \"const x = clsx(`foo `)\",\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    // CallExpression with LogicalExpression\n    {\n      code: 'const x = clsx(condition && \"foo foo\")',\n      output: 'const x = clsx(condition && \"foo \")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n        },\n      ],\n    },\n    {\n      code: 'const x = clsx(condition ? \"foo foo\" : \"bar bar\")',\n      output: 'const x = clsx(condition ? \"foo \" : \"bar \")',\n      options: [{ callees: [\"clsx\"] }],\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          data: {\n            className: \"foo\",\n          },\n        },\n        {\n          messageId: \"duplicateClass\",\n          data: {\n            className: \"bar\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/no-ineffective-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-ineffective-attrs\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-ineffective-attrs\", rule, {\n  valid: [\n    {\n      code: '<input type=\"email\" multiple />',\n    },\n    {\n      code: '<input type=\"file\" multiple />',\n    },\n    {\n      code: \"<select multiple></select>\",\n    },\n\n    {\n      code: '<input type=\"file\" accept=\".jpg,.png\" />',\n    },\n\n    {\n      code: '<input type=\"text\" readOnly />',\n    },\n    {\n      code: '<input type=\"text\" readonly />',\n    },\n\n    {\n      code: '<input type=\"password\" readOnly />',\n    },\n\n    {\n      code: '<script src=\"script.js\" defer></script>',\n    },\n\n    {\n      code: '<script src=\"script.js\" async></script>',\n    },\n\n    {\n      code: '<a href=\"file.pdf\" download>Download</a>',\n    },\n\n    {\n      code: '<a href=\"https://example.com\" target=\"_blank\">Open</a>',\n    },\n\n    {\n      code: '<a href=\"/page\" ping=\"/analytics\">Link</a>',\n    },\n\n    {\n      code: '<audio controls controlsList=\"nodownload\"></audio>',\n    },\n    {\n      code: '<audio controls controlslist=\"nodownload\"></audio>',\n    },\n\n    {\n      code: '<video controls controlsList=\"nofullscreen\"></video>',\n    },\n\n    {\n      code: '<form method=\"post\" encType=\"multipart/form-data\"></form>',\n    },\n    {\n      code: '<form method=\"post\" enctype=\"multipart/form-data\"></form>',\n    },\n\n    {\n      code: '<button type=\"submit\" formAction=\"/submit\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formMethod=\"post\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formEncType=\"multipart/form-data\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formNoValidate>Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formTarget=\"_blank\">Submit</button>',\n    },\n    {\n      code: '<img src=\"map.jpg\" useMap=\"#map\" />',\n    },\n    {\n      code: '<img src=\"map.jpg\" usemap=\"#map\" />',\n    },\n\n    {\n      code: '<area href=\"/page\" download />',\n    },\n    {\n      code: '<area href=\"/page\" ping=\"/analytics\" />',\n    },\n    {\n      code: '<area href=\"/page\" target=\"_blank\" />',\n    },\n\n    {\n      code: '<input type=\"number\" min=\"0\" max=\"100\" />',\n    },\n    {\n      code: '<input type=\"range\" min=\"0\" max=\"10\" step=\"2\" />',\n    },\n    {\n      code: '<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />',\n    },\n    {\n      code: '<input type=\"datetime-local\" min=\"2020-01-01T00:00\" />',\n    },\n    {\n      code: '<input type=\"month\" min=\"2020-01\" />',\n    },\n    {\n      code: '<input type=\"time\" min=\"09:00\" max=\"17:00\" />',\n    },\n    {\n      code: '<input type=\"week\" min=\"2020-W01\" />',\n    },\n\n    {\n      code: '<input type=\"text\" pattern=\"[0-9]+\" />',\n    },\n    {\n      code: '<input type=\"search\" pattern=\"[A-Za-z]+\" />',\n    },\n    {\n      code: '<input type=\"url\" pattern=\"https://.*\" />',\n    },\n    {\n      code: '<input type=\"tel\" pattern=\"[0-9]{3}-[0-9]{4}\" />',\n    },\n    {\n      code: '<input type=\"email\" pattern=\".+@example\\\\.com\" />',\n    },\n    {\n      code: '<input type=\"password\" pattern=\".{8,}\" />',\n    },\n\n    {\n      code: '<input type=\"text\" maxLength=\"10\" minLength=\"3\" />',\n    },\n    {\n      code: '<input type=\"search\" maxLength=\"50\" />',\n    },\n    {\n      code: '<input type=\"url\" minLength=\"5\" />',\n    },\n    {\n      code: '<input type=\"tel\" maxLength=\"15\" />',\n    },\n    {\n      code: '<input type=\"email\" maxLength=\"100\" />',\n    },\n    {\n      code: '<input type=\"password\" maxLength=\"20\" />',\n    },\n\n    // Valid inputs with placeholder\n    {\n      code: '<input type=\"text\" placeholder=\"Enter name\" />',\n    },\n    {\n      code: '<input type=\"number\" placeholder=\"Enter age\" />',\n    },\n    {\n      code: '<input type=\"search\" placeholder=\"Search...\" />',\n    },\n    {\n      code: '<input type=\"url\" placeholder=\"https://example.com\" />',\n    },\n    {\n      code: '<input type=\"tel\" placeholder=\"123-456-7890\" />',\n    },\n    {\n      code: '<input type=\"email\" placeholder=\"user@example.com\" />',\n    },\n    {\n      code: '<input type=\"password\" placeholder=\"Password\" />',\n    },\n    {\n      code: '<input type=\"text\" size=\"20\" />',\n    },\n    {\n      code: '<input type=\"search\" size=\"30\" />',\n    },\n    {\n      code: '<input type=\"url\" size=\"50\" />',\n    },\n    {\n      code: '<input type=\"tel\" size=\"15\" />',\n    },\n    {\n      code: '<input type=\"email\" size=\"40\" />',\n    },\n    {\n      code: '<input type=\"password\" size=\"20\" />',\n    },\n\n    // Valid inputs with list\n    {\n      code: '<input type=\"text\" list=\"suggestions\" />',\n    },\n    {\n      code: '<input type=\"email\" list=\"emails\" />',\n    },\n    {\n      code: '<input type=\"number\" list=\"numbers\" />',\n    },\n    {\n      code: \"<input type={inputType} multiple />\",\n    },\n    {\n      code: '<script defer={shouldDefer}>alert(\"hi\")</script>',\n    },\n    {\n      code: '<input type=\"text\" accept={acceptValue} />',\n    },\n    {\n      code: '<form method={formMethod} encType=\"multipart/form-data\"></form>',\n    },\n    {\n      code: '<button type={buttonType} formAction=\"/submit\">Submit</button>',\n    },\n    {\n      code: '<link rel={relValue} sizes=\"16x16\" />',\n    },\n    {\n      code: '<Input type=\"checkbox\" multiple />',\n    },\n    {\n      code: '<Script defer>console.log(\"hi\")</Script>',\n    },\n    {\n      code: '<Button type=\"button\" formAction=\"/submit\">Click</Button>',\n    },\n    {\n      code: '<MyButton type=\"button\" formAction=\"/submit\">Click</MyButton>',\n    },\n\n    // Custom elements with hyphens are ignored\n    {\n      code: '<custom-input type=\"text\" multiple />',\n    },\n    {\n      code: '<my-button type=\"button\" formAction=\"/submit\">Click</my-button>',\n    },\n    {\n      code: '<input type=\"password\" multiple={false} />',\n    },\n  ],\n  invalid: [\n    // Invalid multiple on text input\n    {\n      code: '<input type=\"text\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid multiple on checkbox\n    {\n      code: '<input type=\"checkbox\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    // Invalid multiple on password\n    {\n      code: '<input type=\"password\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"radio\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" accept=\".jpg\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"accept\" attribute has no effect unless input type is \"file\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"number\" accept=\".png\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"accept\" attribute has no effect unless input type is \"file\".',\n          },\n        },\n      ],\n    },\n    {\n      code: \"<script defer></script>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"defer\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<script defer>console.log(\"hello\")</script>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"defer\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n\n    // Invalid async on inline script\n    {\n      code: \"<script async></script>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"async\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<script async>console.log(\"hello\")</script>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"async\" attribute has no effect on inline scripts.',\n          },\n        },\n      ],\n    },\n\n    // Invalid download without href\n    {\n      code: \"<a download>Download</a>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<a download=\"file.pdf\">Download</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n\n    // Invalid target without href\n    {\n      code: '<a target=\"_blank\">Open</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"target\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n\n    // Invalid ping without href\n    {\n      code: '<a ping=\"/analytics\">Link</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"ping\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n\n    {\n      code: '<audio controlsList=\"nodownload\"></audio>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<video controlsList=\"nofullscreen\"></video>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" readOnly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" readonly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n\n    // Invalid readonly on radio input\n    {\n      code: '<input type=\"radio\" readOnly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n\n    // Invalid readonly on file input\n    {\n      code: '<input type=\"file\" readOnly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n\n    // Invalid readonly on range input\n    {\n      code: '<input type=\"range\" readOnly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n\n    // Invalid readonly on color input\n    {\n      code: '<input type=\"color\" readOnly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" min=\"0\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"min\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" max=\"100\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"max\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"password\" step=\"5\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"step\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n\n    // Invalid pattern on non-text input\n    {\n      code: '<input type=\"checkbox\" pattern=\"[0-9]+\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"pattern\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"number\" pattern=\"[0-9]+\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"pattern\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n\n    // Invalid maxlength/minlength on non-text input (React camelCase)\n    {\n      code: '<input type=\"number\" maxLength=\"10\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"maxlength\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"radio\" minLength=\"5\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"minlength\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" maxLength=\"10\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"maxlength\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" placeholder=\"Enter value\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"placeholder\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"radio\" placeholder=\"Select\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"placeholder\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n\n    // Invalid size on non-text input\n    {\n      code: '<input type=\"checkbox\" size=\"20\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"size\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"number\" size=\"10\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"size\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" list=\"suggestions\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"list\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"radio\" list=\"options\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"list\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"file\" list=\"files\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"list\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<form method=\"get\" encType=\"multipart/form-data\"></form>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"enctype\" attribute only has effect when method is \"post\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<form method=\"get\" enctype=\"multipart/form-data\"></form>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"enctype\" attribute only has effect when method is \"post\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<form encType=\"multipart/form-data\"></form>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"enctype\" attribute only has effect when method is \"post\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"button\" formAction=\"/submit\">Submit</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"formaction\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"reset\" formMethod=\"post\">Reset</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"formmethod\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"button\" formEncType=\"multipart/form-data\">Button</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"formenctype\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"button\" formNoValidate>Button</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"formnovalidate\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"reset\" formTarget=\"_blank\">Reset</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"formtarget\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n\n    {\n      code: '<img src=\"map.jpg\" useMap=\"#map\" isMap />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"usemap\" and \"ismap\" attributes cannot be used together.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"map.jpg\" usemap=\"#map\" ismap />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"usemap\" and \"ismap\" attributes cannot be used together.',\n          },\n        },\n      ],\n    },\n    {\n      code: \"<area download />\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<area ping=\"/analytics\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"ping\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<area target=\"_blank\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message: 'The \"target\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type={\"text\"} multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: \"<input type={`checkbox`} multiple />\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/no-invalid-attr-value.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-invalid-attr-value\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-invalid-attr-value\", rule, {\n  valid: [\n    { code: '<input type=\"text\" />' },\n    { code: '<input type=\"email\" />' },\n    { code: '<input type=\"number\" />' },\n    { code: '<input type=\"password\" />' },\n    { code: '<input type=\"checkbox\" />' },\n    { code: '<input type=\"radio\" />' },\n    { code: \"<input {...props} />\" },\n    { code: '<button type=\"button\">Click</button>' },\n    { code: '<button type=\"submit\">Submit</button>' },\n    { code: '<button type=\"reset\">Reset</button>' },\n    { code: '<form method=\"get\"></form>' },\n    { code: '<form method=\"post\"></form>' },\n    { code: '<a href=\"#\" target=\"_blank\">Link</a>' },\n    { code: '<a href=\"#\" target=\"_self\">Link</a>' },\n    { code: '<img src=\"image.jpg\" crossOrigin=\"anonymous\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"lazy\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"eager\" />' },\n    { code: '<div dir=\"ltr\">Text</div>' },\n    { code: '<div dir=\"rtl\">Text</div>' },\n    { code: \"<input type={inputType} />\" },\n    { code: \"<button type={type}>Click</button>\" },\n    { code: \"<img loading={loading} />\" },\n    { code: \"<div dir={direction}>Text</div>\" },\n    { code: '<input type={\"text\"} />' },\n    { code: '<button type={\"button\"}>Click</button>' },\n    { code: '<img loading={\"lazy\"} />' },\n    { code: '<div dir={\"ltr\"}>Text</div>' },\n    { code: \"<input type={`text`} />\" },\n    { code: \"<button type={`button`}>Click</button>\" },\n    { code: \"<img loading={`lazy`} />\" },\n    { code: \"<div dir={`ltr`}>Text</div>\" },\n    { code: \"<input type={`invalid-${type}`} />\" },\n    { code: '<custom.input type=\"invalid-type\" />' },\n    { code: \"<script async />\" },\n    { code: \"<script async={true} />\" },\n    { code: \"<script async={false} />\" },\n    { code: \"<script async={undefined} />\" },\n    { code: \"<script async={null} />\" },\n    // allow option\n    {\n      code: '<input type=\"custom-type\" />',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: '<button type=\"custom\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n    },\n    {\n      code: \"<input type={false} />\",\n    },\n    {\n      code: \"<input type={null} />\",\n    },\n    {\n      code: \"<input type={undefined} />\",\n    },\n  ],\n  invalid: [\n    {\n      code: '<input type=\"invalid-type\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"invalid-type\",\n            attr: \"type\",\n            element: \"input\",\n            suggestion:\n              'Value \"invalid-type\" is not a valid keyword. Expected one of: hidden, text, search, tel, url, email, password, date, month, week, time, datetime-local, number, range, color, checkbox, radio, file, submit, image, reset, button',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"txt\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"txt\",\n            attr: \"type\",\n            element: \"input\",\n            suggestion:\n              'Value \"txt\" is not a valid keyword. Expected one of: hidden, text, search, tel, url, email, password, date, month, week, time, datetime-local, number, range, color, checkbox, radio, file, submit, image, reset, button',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"invalid\",\n            attr: \"type\",\n            element: \"button\",\n            suggestion:\n              'Value \"invalid\" is not a valid keyword. Expected one of: submit, reset, button',\n          },\n        },\n      ],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"put\",\n            attr: \"method\",\n            element: \"form\",\n            suggestion:\n              'Value \"put\" is not a valid keyword. Expected one of: get, post, dialog',\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" crossOrigin=\"invalid\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"invalid\",\n            attr: \"crossOrigin\",\n            element: \"img\",\n            suggestion:\n              'Value \"invalid\" is not a valid keyword. Expected one of: , anonymous, use-credentials',\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" loading=\"invalid\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"invalid\",\n            attr: \"loading\",\n            element: \"img\",\n            suggestion:\n              'Value \"invalid\" is not a valid keyword. Expected one of: eager, lazy',\n          },\n        },\n      ],\n    },\n    {\n      code: '<div dir=\"invalid\">Text</div>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          data: {\n            value: \"invalid\",\n            attr: \"dir\",\n            element: \"div\",\n            suggestion:\n              'Value \"invalid\" is not a valid keyword. Expected one of: ltr, rtl, auto',\n          },\n        },\n      ],\n    },\n    // JSX expression container with invalid string literal - should report\n    {\n      code: '<input type={\"invalid-type\"} />',\n      errors: [{ messageId: \"invalid\" }],\n    },\n    // JSX expression container with invalid template literal - should report\n    {\n      code: \"<input type={`invalid-type`} />\",\n      errors: [{ messageId: \"invalid\" }],\n    },\n    { code: \"<script async={1} />\", errors: [{ messageId: \"invalid\" }] },\n    { code: \"<script async={'false'} />\", errors: [{ messageId: \"invalid\" }] },\n  ],\n});\n\nruleTester.run(\"no-invalid-attr-value (custom components)\", rule, {\n  valid: [\n    { code: '<Input type=\"invalid-type\" />' },\n    { code: '<Textarea type=\"invalid\" />' },\n    { code: '<MyButton type=\"invalid\">Click</MyButton>' },\n    { code: '<FormField method=\"put\" />' },\n    { code: '<CustomImg loading=\"invalid\" />' },\n    { code: '<my-input type=\"invalid-type\" />' },\n    { code: '<custom-button type=\"invalid\">Click</custom-button>' },\n  ],\n  invalid: [],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/no-obsolete-attrs.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-obsolete-attrs\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-obsolete-attrs\", rule, {\n  valid: [\n    {\n      code: '<a href=\"/page\">Link</a>',\n    },\n    {\n      code: '<img src=\"image.jpg\" alt=\"Image\" />',\n    },\n    {\n      code: '<table><tr><th scope=\"col\">Header</th></tr></table>',\n    },\n    {\n      code: '<link rel=\"stylesheet\" href=\"style.css\" />',\n    },\n    {\n      code: '<script src=\"script.js\"></script>',\n    },\n    {\n      code: '<div id=\"content\">Content</div>',\n    },\n    {\n      code: \"<a charset={false}>Link</a>\",\n    },\n    {\n      code: \"<a charset={null}>Link</a>\",\n    },\n  ],\n  invalid: [\n    {\n      code: '<a charset=\"UTF-8\">Link</a>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"charset\",\n            element: \"a\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<link charset=\"UTF-8\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"charset\",\n            element: \"link\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<script charset=\"UTF-8\"></script>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"charset\",\n            element: \"script\",\n            suggestion:\n              \"It is redundant to specify it on the script element since it inherits from the document.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<a name=\"anchor\">Link</a>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"name\",\n            element: \"a\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<img name=\"myimage\" src=\"image.jpg\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"name\",\n            element: \"img\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table align=\"center\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"align\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<div align=\"left\">Content</div>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"align\",\n            element: \"div\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<body bgcolor=\"#ffffff\"></body>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"bgcolor\",\n            element: \"body\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table bgcolor=\"#cccccc\" border=\"1\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"bgcolor\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"border\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" border=\"0\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"border\",\n            element: \"img\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table width=\"100%\" height=\"200\" cellPadding=\"5\" cellSpacing=\"0\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"width\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"height\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"cellpadding\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"cellspacing\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<iframe frameBorder=\"0\" scrolling=\"no\"></iframe>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"frameborder\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"scrolling\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<td scope=\"row\">Cell</td>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"scope\",\n            element: \"td\",\n            suggestion: \"Use th elements for heading cells.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<html manifest=\"app.appcache\"></html>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"manifest\",\n            element: \"html\",\n            suggestion: \"Use service workers instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<form accept=\"image/*\"></form>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"accept\",\n            element: \"form\",\n            suggestion:\n              \"Use the accept attribute directly on the input elements instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<div contextMenu=\"mymenu\">Content</div>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          data: {\n            attr: \"contextmenu\",\n            element: \"div\",\n            suggestion:\n              \"To implement a custom context menu, use script to handle the contextmenu event.\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/no-obsolete-tags.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/no-obsolete-tags\");\n\n// https://html.spec.whatwg.org/#non-conforming-features\nconst OBSOLETE_TAGS = [\n  \"applet\",\n  \"acronym\",\n  \"bgsound\",\n  \"dir\",\n  \"frame\",\n  \"frameset\",\n  \"noframes\",\n  \"isindex\",\n  \"keygen\",\n  \"listing\",\n  \"menuitem\",\n  \"nextid\",\n  \"noembed\",\n  \"plaintext\",\n  \"rb\",\n  \"rtc\",\n  \"strike\",\n  \"xmp\",\n  \"basefont\",\n  \"big\",\n  \"blink\",\n  \"center\",\n  \"font\",\n  \"marquee\",\n  \"multicol\",\n  \"nobr\",\n  \"spacer\",\n  \"tt\",\n];\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-obsolete-tags\", rule, {\n  valid: [\n    {\n      code: `\n<div>\n  <h1>Heading</h1>\n  <p>Paragraph</p>\n</div>\n`,\n    },\n    {\n      code: \"<button>Click me</button>\",\n    },\n    {\n      code: '<input type=\"text\" />',\n    },\n    {\n      code: \"<Center>Content</Center>\",\n    },\n    {\n      code: '<Font size=\"large\">Text</Font>',\n    },\n    {\n      code: \"<Big>Large text</Big>\",\n    },\n    {\n      code: \"<custom-center>Content</custom-center>\",\n    },\n    {\n      code: \"<my-font>Text</my-font>\",\n    },\n  ],\n  invalid: [\n    // Test all obsolete tags except frame (tested separately)\n    ...OBSOLETE_TAGS.filter((tag) => tag !== \"frame\").map((tag) => ({\n      code: `<${tag}></${tag}>`,\n      errors: [\n        {\n          message: `Unexpected use of obsolete tag <${tag}>`,\n        },\n      ],\n    })),\n    {\n      code: `\n<frameset cols=\"25%,*,25%\">\n  <frame name=\"left\" src=\"/html/intro\" />\n</frameset>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: { tag: \"frameset\" },\n        },\n        {\n          messageId: \"unexpected\",\n          data: { tag: \"frame\" },\n        },\n      ],\n    },\n    {\n      code: \"<center />\",\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n        },\n      ],\n    },\n    {\n      code: \"<font />\",\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <font>\",\n        },\n      ],\n    },\n    {\n      code: '<font color=\"red\">Text</font>',\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <font>\",\n        },\n      ],\n    },\n    {\n      code: '<center align=\"middle\">Content</center>',\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tests/rules/use-baseline.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/use-baseline\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"use-baseline\", rule, {\n  valid: [\n    { code: `<slot></slot>` },\n    { code: `<div id=\"foo\"></div>` },\n    { code: `<svg></svg>` },\n    { code: `<custom-element popovertarget=\"mypopover\"></custom-element>` },\n    { code: `<meta httpEquiv=\"refresh\" content=\"5\" />` },\n    { code: `<script type=\"module\"></script>` },\n    {\n      code: `<slot></slot>`,\n      options: [{ available: \"widely\" }],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      options: [{ available: \"newly\" }],\n    },\n    { code: `<input type=\"number\" />` },\n    { code: `<input type=\"unknown\" />` },\n    { code: `<input type=\"tel\" />` },\n    { code: `<a href=\"https://html-eslint.org\"></a>` },\n    { code: `<td></td>` },\n    { code: `<td rowSpan={1}></td>` },\n    { code: `<th rowSpan={2}></th>` },\n  ],\n  invalid: [\n    {\n      code: `<slot></slot>`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n          column: 1,\n          endColumn: 14,\n          line: 1,\n        },\n      ],\n      options: [{ available: 2001 }],\n    },\n    {\n      code: `<span slot=\"username\">Jane Doe</span>`,\n      errors: [\n        {\n          message: \"Attribute 'slot' is not a 2019 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2019 }],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      errors: [\n        { messageId: \"notBaselineElementAttribute\" },\n        { messageId: \"notBaselineElementAttribute\" },\n      ],\n      options: [{ available: \"widely\" }],\n    },\n    {\n      code: `<template shadowRootMode=\"open\"></template>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'shadowRootMode' on '<template>' is not a widely available baseline feature.\",\n          column: 11,\n          endColumn: 25,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: `<div contentEditable=\"plaintext-only\"></div>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'contentEditable=\\\"plaintext-only\\\"' is not a widely available baseline feature.\",\n          column: 23,\n          endColumn: 37,\n          line: 1,\n        },\n      ],\n    },\n    {\n      code: `<script type=\"module\"></script>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'type=\\\"module\\\"' on '<script>' is not a 2017 available baseline feature.\",\n          column: 15,\n          endColumn: 21,\n        },\n      ],\n      options: [{ available: 2017 }],\n    },\n    {\n      code: `<style blocking=\"render\"></style>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'blocking' on '<style>' is not a widely available baseline feature.\",\n          column: 8,\n          endColumn: 16,\n        },\n      ],\n      options: [{ available: \"widely\" }],\n    },\n    {\n      code: `<input type=\"week\" />`,\n      errors: [\n        {\n          message:\n            \"Attribute 'type=\\\"week\\\"' on '<input>' is not a widely available baseline feature.\",\n          column: 14,\n          endColumn: 18,\n        },\n      ],\n    },\n    {\n      code: `<a href=\"sms:00000\"></a>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'href=\\\"sms:00000\\\"' on '<a>' is not a widely available baseline feature.\",\n          column: 10,\n          endColumn: 19,\n        },\n      ],\n    },\n    {\n      code: `<td rowSpan={0}></td>`,\n      errors: [\n        {\n          messageId: \"notBaselineElementAttribute\",\n        },\n      ],\n    },\n    {\n      code: `<th rowSpan={0}></th>`,\n      errors: [\n        {\n          messageId: \"notBaselineElementAttribute\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-react/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-react/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\", \"tests\"]\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/README.md",
    "content": "# @html-eslint/eslint-plugin-svelte\n\nESLint plugin for HTML with Svelte support.\n\n## Installation\n\n```bash\nnpm install --save-dev @html-eslint/eslint-plugin-svelte\n```\n\n## Usage\n\n### ESLint Flat Config\n\n```js\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\n\nexport default [\n  {\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    rules: {\n      // Add rules here\n    },\n  },\n];\n```\n\n### Legacy Config\n\n```js\nmodule.exports = {\n  plugins: [\"@html-eslint/svelte\"],\n  rules: {\n    // Add rules here\n  },\n};\n```\n\n## License\n\nMIT\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/jest.config.mjs",
    "content": "export default {\n  testMatch: [\"**/tests/**/*.test.js\"],\n  collectCoverageFrom: [\"lib/**/*.js\", \"!lib/**/*.d.ts\"],\n  coveragePathIgnorePatterns: [\"/node_modules/\", \"/tests/\"],\n  testEnvironment: \"node\",\n  transform: {},\n};\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute/factory.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {\n *   SvelteAttachTag,\n *   SvelteAttribute,\n *   SvelteDirective,\n *   SvelteGenericsDirective,\n *   SvelteShorthandAttribute,\n *   SvelteSpecialDirective,\n *   SvelteSpreadAttribute,\n *   SvelteStyleDirective\n * } from \"../../types.js\"\n */\n\nimport { AST_NODE_TYPES } from \"../../constants/node-types.js\";\nimport { SvelteAttributeAttributeAdapter } from \"./svelte-attribute.js\";\nimport { NullAttributeAdapter } from \"./null.js\";\nimport { SvelteShorthandAttributeAttributeAdapter } from \"./svelte-shorthand-attribute.js\";\n\n/**\n * @param {SvelteAttribute\n *   | SvelteDirective\n *   | SvelteGenericsDirective\n *   | SvelteShorthandAttribute\n *   | SvelteSpecialDirective\n *   | SvelteSpreadAttribute\n *   | SvelteAttachTag\n *   | SvelteStyleDirective} node\n * @returns {AttributeAdapter}\n */\nexport function createAttributeAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.SvelteAttribute: {\n      return new SvelteAttributeAttributeAdapter(node);\n    }\n    case AST_NODE_TYPES.SvelteShorthandAttribute: {\n      return new SvelteShorthandAttributeAttributeAdapter(node);\n    }\n    default: {\n      return new NullAttributeAdapter(node);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute/null.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {\n *   SvelteAttachTag,\n *   SvelteAttribute,\n *   SvelteDirective,\n *   SvelteGenericsDirective,\n *   SvelteShorthandAttribute,\n *   SvelteSpecialDirective,\n *   SvelteSpreadAttribute,\n *   SvelteStyleDirective\n * } from \"../../types.js\"\n */\n\n/** @implements {AttributeAdapter} */\nexport class NullAttributeAdapter {\n  /**\n   * @param {SvelteAttribute\n   *   | SvelteAttachTag\n   *   | SvelteDirective\n   *   | SvelteGenericsDirective\n   *   | SvelteShorthandAttribute\n   *   | SvelteSpecialDirective\n   *   | SvelteSpreadAttribute\n   *   | SvelteStyleDirective} node\n   */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getKey() {\n    return null;\n  }\n\n  getValue() {\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute/svelte-attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {SvelteAttribute} from \"../../types\"\n */\n\nimport { createAttributeKeyAdapter } from \"../attribute-key/factory\";\nimport { createAttributeValueAdapter } from \"../attribute-value/factory\";\n\n/** @implements {AttributeAdapter} */\nexport class SvelteAttributeAttributeAdapter {\n  /** @param {SvelteAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getKey() {\n    return createAttributeKeyAdapter(this.node.key);\n  }\n\n  getValue() {\n    if (this.node.value.length === 1) {\n      const first = this.node.value[0];\n\n      return createAttributeValueAdapter(first);\n    }\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute/svelte-shorthand-attribute.js",
    "content": "/**\n * @import {AttributeAdapter} from \"@html-eslint/core\"\n * @import {\n *   Identifier,\n *   SvelteShorthandAttribute\n * } from \"../../types\"\n */\n\nimport { createAttributeKeyAdapter } from \"../attribute-key/factory\";\n\n/** @implements {AttributeAdapter} */\nexport class SvelteShorthandAttributeAttributeAdapter {\n  /** @param {SvelteShorthandAttribute} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getKey() {\n    return createAttributeKeyAdapter(/** @type {Identifier} */ (this.node.key));\n  }\n\n  getValue() {\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-key/factory.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   Identifier,\n *   SvelteDirectiveKey,\n *   SvelteName\n * } from \"../../types\"\n */\n\nimport { IdentifierAttributeKeyAdapter } from \"./identifier\";\nimport { AST_NODE_TYPES } from \"../../constants/node-types\";\nimport { SvelteDirectiveKeyAttributeKeyAdapter } from \"./svelte-directive-key\";\nimport { SvelteNameAttributeKeyAdapter } from \"./svelte-name\";\n\n/**\n * @param {SvelteName | SvelteDirectiveKey | Identifier} node\n * @returns {AttributeKeyAdapter}\n */\nexport function createAttributeKeyAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.SvelteName: {\n      return new SvelteNameAttributeKeyAdapter(node);\n    }\n    case AST_NODE_TYPES.SvelteDirectiveKey: {\n      return new SvelteDirectiveKeyAttributeKeyAdapter(node);\n    }\n    case AST_NODE_TYPES.Identifier: {\n      return new IdentifierAttributeKeyAdapter(node);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-key/identifier.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {Identifier} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nexport class IdentifierAttributeKeyAdapter {\n  /** @param {Identifier} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.node.loc;\n  }\n\n  getValue() {\n    return this.node.name;\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getRange() {\n    return /** @type {Range} */ (this.node.range);\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-key/svelte-directive-key.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {Range} from \"@html-eslint/types\"\n * @import {SvelteDirectiveKey} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nexport class SvelteDirectiveKeyAttributeKeyAdapter {\n  /** @param {SvelteDirectiveKey} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return this.node.loc;\n  }\n\n  getValue() {\n    return \"\";\n  }\n\n  hasExpression() {\n    return true;\n  }\n\n  getRange() {\n    return /** @type {Range} */ (this.node.name.range);\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-key/svelte-name.js",
    "content": "/**\n * @import {AttributeKeyAdapter} from \"@html-eslint/core\"\n * @import {Range} from \"@html-eslint/types\"\n * @import {SvelteName} from \"../../types\"\n */\n\n/** @implements {AttributeKeyAdapter} */\nexport class SvelteNameAttributeKeyAdapter {\n  /** @param {SvelteName} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return this.node.loc;\n  }\n\n  getValue() {\n    return this.node.name;\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getRange() {\n    return /** @type {Range} */ (this.node.range);\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-value/factory.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Literal,\n *   SvelteLiteral,\n *   SvelteMustacheTagText,\n *   TemplateLiteral\n * } from \"../../types\"\n */\n\nimport { AST_NODE_TYPES } from \"../../constants/node-types\";\nimport { LiteralAttributeValueAdapter } from \"./literal\";\nimport { SvelteLiteralAttributeValueAdapter } from \"./svelte-literal\";\nimport { SvelteMustacheTagTextValueAdapter } from \"./svelte-mustache-tag-text\";\nimport { TemplateLiteralAttributeValueAdapter } from \"./template-literal\";\n\n/**\n * @param {Literal\n *   | TemplateLiteral\n *   | SvelteLiteral\n *   | SvelteMustacheTagText} node\n * @returns {AttributeValueAdapter}\n */\nexport function createAttributeValueAdapter(node) {\n  switch (node.type) {\n    case AST_NODE_TYPES.Literal: {\n      return new LiteralAttributeValueAdapter(node);\n    }\n    case AST_NODE_TYPES.TemplateLiteral: {\n      return new TemplateLiteralAttributeValueAdapter(node);\n    }\n    case AST_NODE_TYPES.SvelteLiteral: {\n      return new SvelteLiteralAttributeValueAdapter(node);\n    }\n    case AST_NODE_TYPES.SvelteMustacheTag: {\n      return new SvelteMustacheTagTextValueAdapter(node);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-value/literal.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {Range} from \"@html-eslint/types\"\n * @import {Literal} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nexport class LiteralAttributeValueAdapter {\n  /** @param {Literal} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getLocation() {\n    return {\n      start: {\n        column: this.node.loc.start.column + 1,\n        line: this.node.loc.start.line,\n      },\n      end: {\n        column: this.node.loc.end.column - 1,\n        line: this.node.loc.end.line,\n      },\n    };\n  }\n\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.range[0] + 1,\n      this.node.range[1] - 1,\n    ]);\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getValue() {\n    if (typeof this.node.value === \"string\") {\n      return this.node.value;\n    } else if (typeof this.node.value === \"number\") {\n      return String(this.node.value);\n    }\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-value/svelte-literal.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {SvelteLiteral} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nexport class SvelteLiteralAttributeValueAdapter {\n  /** @param {SvelteLiteral} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.node.loc;\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return this.node.range;\n  }\n\n  hasExpression() {\n    return false;\n  }\n\n  getValue() {\n    if (typeof this.node.value === \"string\") {\n      return this.node.value;\n    } else if (typeof this.node.value === \"number\") {\n      return String(this.node.value);\n    }\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-value/svelte-mustache-tag-text.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {\n *   Literal,\n *   SvelteMustacheTagText,\n *   TemplateLiteral\n * } from \"../../types\"\n */\n\nimport { AST_NODE_TYPES } from \"../../constants/node-types\";\nimport { LiteralAttributeValueAdapter } from \"./literal\";\nimport { TemplateLiteralAttributeValueAdapter } from \"./template-literal\";\n\n/** @implements {AttributeValueAdapter} */\nexport class SvelteMustacheTagTextValueAdapter {\n  /** @param {SvelteMustacheTagText} node */\n  constructor(node) {\n    this.node = node;\n    this.adapter = this.getAdapter();\n  }\n\n  getAdapter() {\n    if (this.node.expression.type === AST_NODE_TYPES.Literal) {\n      return new LiteralAttributeValueAdapter(\n        /** @type {Literal} */ (this.node.expression)\n      );\n    }\n    if (this.node.expression.type === AST_NODE_TYPES.TemplateLiteral) {\n      return new TemplateLiteralAttributeValueAdapter(\n        /** @type {TemplateLiteral} */ (this.node.expression)\n      );\n    }\n    return null;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return this.adapter?.getLocation() ?? this.node.loc;\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return this.adapter?.getRange() ?? this.node.range;\n  }\n\n  hasExpression() {\n    return !this.adapter;\n  }\n\n  getValue() {\n    return this.adapter?.getValue() ?? null;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/attribute-value/template-literal.js",
    "content": "/**\n * @import {AttributeValueAdapter} from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {TemplateLiteral} from \"../../types\"\n */\n\n/** @implements {AttributeValueAdapter} */\nexport class TemplateLiteralAttributeValueAdapter {\n  /** @param {TemplateLiteral} node */\n  constructor(node) {\n    /** @private */\n    this.node = node;\n  }\n\n  /** @returns {SourceLocation} */\n  getLocation() {\n    return {\n      start: {\n        column: this.node.loc.start.column + 1,\n        line: this.node.loc.start.line,\n      },\n      end: {\n        column: this.node.loc.end.column - 1,\n        line: this.node.loc.end.line,\n      },\n    };\n  }\n\n  /** @returns {Range} */\n  getRange() {\n    return /** @type {Range} */ ([\n      this.node.range[0] + 1,\n      this.node.range[1] - 1,\n    ]);\n  }\n  /** @returns {string | null} */\n  getValue() {\n    if (this.hasExpression()) {\n      return null;\n    }\n    const quasis = this.node.quasis[0];\n    return quasis.value.cooked;\n  }\n\n  /** @returns {boolean} */\n  hasExpression() {\n    return !!this.node.expressions.length;\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/element/factory.js",
    "content": "/** @import {SvelteElement} from \"../../types\" */\n\nimport { SvelteElementElementAdapter } from \"./svelte-element\";\n\n/** @param {SvelteElement} node */\nexport function createElementAdapter(node) {\n  return new SvelteElementElementAdapter(node);\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/adapters/element/svelte-element.js",
    "content": "/**\n * @import {\n *   AttributeAdapter,\n *   ElementAdapter\n * } from \"@html-eslint/core\"\n * @import {\n *   Range,\n *   SourceLocation\n * } from \"@html-eslint/types\"\n * @import {\n *   SvelteElement,\n *   SvelteMemberExpressionName\n * } from \"../../types\"\n */\n\nimport { AST_NODE_TYPES } from \"../../constants/node-types\";\nimport { createAttributeAdapter } from \"../attribute/factory\";\n\n/**\n * Recursively builds the string representation of a SvelteMemberExpressionName.\n * For example, <a.b.c> becomes \"a.b.c\"\n *\n * @param {SvelteMemberExpressionName} node\n * @returns {string}\n */\nfunction getSvelteMemberExpressionName(node) {\n  const objectName =\n    node.object.type === AST_NODE_TYPES.Identifier\n      ? node.object.name\n      : getSvelteMemberExpressionName(node.object);\n  return `${objectName}.${node.property.name}`;\n}\n\n/** @implements {ElementAdapter} */\nexport class SvelteElementElementAdapter {\n  /** @param {SvelteElement} node */\n  constructor(node) {\n    this.node = node;\n  }\n\n  getElementName() {\n    if (this.node.name.type === AST_NODE_TYPES.SvelteMemberExpressionName) {\n      return getSvelteMemberExpressionName(this.node.name);\n    }\n    if (this.node.name.type === AST_NODE_TYPES.Identifier) {\n      return this.node.name.name;\n    }\n    return this.node.name.name;\n  }\n\n  getLocation() {\n    return this.node.loc;\n  }\n\n  getRange() {\n    return this.node.range;\n  }\n\n  /** @returns {SourceLocation} */\n  getOpenStartLocation() {\n    return this.node.startTag.loc;\n  }\n\n  /** @returns {Range} */\n  getOpenStartRange() {\n    return this.node.startTag.range;\n  }\n\n  /** @returns {AttributeAdapter[]} */\n  getAttributes() {\n    return this.node.startTag.attributes.map((attribute) =>\n      createAttributeAdapter(attribute)\n    );\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/configs/index.js",
    "content": "/** Configuration presets for @html-eslint/eslint-plugin-svelte */\n\nimport rules from \"../rules/index.js\";\n\nconst ruleKeys = Object.keys(rules);\n\nconst allRules = ruleKeys.reduce((acc, ruleName) => {\n  acc[`@html-eslint/svelte/${ruleName}`] =\n    ruleName === \"use-baseline\" ? \"warn\" : \"error\";\n  return acc;\n}, /** @type {Record<string, \"error\" | \"warn\">} */ ({}));\n\nexport { allRules };\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/constants/index.js",
    "content": "/** Constants for @html-eslint/eslint-plugin-svelte */\n\nexport const RULE_CATEGORY = {\n  BEST_PRACTICE: \"Best Practice\",\n  SEO: \"SEO\",\n  ACCESSIBILITY: \"Accessibility\",\n  STYLE: \"Style\",\n};\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/constants/node-types.js",
    "content": "export const AST_NODE_TYPES = /** @type {const} */ ({\n  SvelteLiteral: \"SvelteLiteral\",\n  SvelteMustacheTag: \"SvelteMustacheTag\",\n  ArrayExpression: \"ArrayExpression\",\n  Literal: \"Literal\",\n  TemplateLiteral: \"TemplateLiteral\",\n  SvelteMemberExpressionName: \"SvelteMemberExpressionName\",\n  SvelteAttribute: \"SvelteAttribute\",\n  SvelteName: \"SvelteName\",\n  Identifier: \"Identifier\",\n  SvelteDirectiveKey: \"SvelteDirectiveKey\",\n  SvelteShorthandAttribute: \"SvelteShorthandAttribute\",\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/index.js",
    "content": "/**\n * @html-eslint/eslint-plugin-svelte\n * ESLint plugin for HTML with Svelte support\n */\n\nimport { readFileSync } from \"fs\";\nimport { fileURLToPath } from \"url\";\nimport { dirname, join } from \"path\";\nimport rules from \"./rules/index.js\";\nimport { allRules } from \"./configs/index.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(\n  readFileSync(join(__dirname, \"../package.json\"), \"utf-8\")\n);\n\n/** @type {import(\"eslint\").ESLint.Plugin} */\nconst plugin = {\n  meta: {\n    name: packageJson.name,\n    version: packageJson.version,\n  },\n  // @ts-ignore\n  rules,\n  configs: {\n    recommended: {\n      rules: allRules,\n      plugins: {\n        get [\"@html-eslint/svelte\"]() {\n          return plugin;\n        },\n      },\n    },\n    all: {\n      rules: allRules,\n      plugins: {\n        get [\"@html-eslint/svelte\"]() {\n          return plugin;\n        },\n      },\n    },\n  },\n};\n\nexport default plugin;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/class-spacing.js",
    "content": "/**\n * @import {\n *   Literal,\n *   RuleModule,\n *   SvelteLiteral,\n *   SvelteMustacheTag,\n *   TemplateLiteral\n * } from \"../types.js\"\n * @file Disallow extra spacing in class attribute values for Svelte\n */\n\nimport { CLASS_SPACING_MESSAGE_IDS, classSpacing } from \"@html-eslint/core\";\nimport { AST_NODE_TYPES } from \"../constants/node-types.js\";\nimport { createAttributeValueAdapter } from \"../adapters/attribute-value/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"layout\",\n    docs: {\n      description: \"Disallow extra spacing in class attribute values\",\n      recommended: true,\n      category: \"Stylistic Issues\",\n      url: \"https://html-eslint.org/docs/svelte/rules/class-spacing\",\n    },\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [CLASS_SPACING_MESSAGE_IDS.extraSpacing]:\n        \"Unexpected extra spacing in class attribute value\",\n    },\n  },\n\n  create(context) {\n    const ruleCore = classSpacing();\n\n    /** @param {SvelteLiteral | Literal | TemplateLiteral} node */\n    function checkLiteral(node) {\n      const adapter = createAttributeValueAdapter(node);\n      const result = ruleCore.checkClassValue(adapter);\n      for (const { loc, messageId, range } of result) {\n        context.report({\n          loc,\n          messageId,\n          fix(fixer) {\n            return fixer.removeRange(range);\n          },\n        });\n      }\n    }\n\n    /** @param {SvelteMustacheTag} node */\n    function checkSvelteMustacheTag(node) {\n      if (\n        node.expression.type === AST_NODE_TYPES.Literal ||\n        node.expression.type === AST_NODE_TYPES.TemplateLiteral\n      ) {\n        checkLiteral(\n          /** @type {Literal | TemplateLiteral} */ (node.expression)\n        );\n      } else if (node.expression.type === AST_NODE_TYPES.ArrayExpression) {\n        node.expression.elements.forEach((element) => {\n          if (\n            element?.type === AST_NODE_TYPES.Literal ||\n            element?.type === AST_NODE_TYPES.TemplateLiteral\n          ) {\n            checkLiteral(/** @type {Literal | TemplateLiteral} */ (element));\n          }\n        });\n      }\n    }\n\n    return {\n      SvelteAttribute(node) {\n        if (\n          !node.key ||\n          !node.key.name ||\n          node.key.name.toLowerCase() !== \"class\" ||\n          !node.value ||\n          node.value.length === 0\n        ) {\n          return;\n        }\n\n        if (\n          node.value.every(\n            (valuePart) => valuePart.type === AST_NODE_TYPES.SvelteLiteral\n          ) ||\n          node.value.every(\n            (valuePart) => valuePart.type === AST_NODE_TYPES.SvelteMustacheTag\n          )\n        ) {\n          node.value.forEach((valuePart) => {\n            if (valuePart.type === AST_NODE_TYPES.SvelteLiteral) {\n              checkLiteral(valuePart);\n            } else if (valuePart.type === AST_NODE_TYPES.SvelteMustacheTag) {\n              checkSvelteMustacheTag(valuePart);\n            }\n          });\n        }\n      },\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/index.js",
    "content": "/** Exports all rules for @html-eslint/eslint-plugin-svelte */\n\nimport classSpacing from \"./class-spacing.js\";\nimport useBaseline from \"./use-baseline.js\";\nimport noObsoleteTags from \"./no-obsolete-tags.js\";\nimport noObsoleteAttrs from \"./no-obsolete-attrs.js\";\nimport noIneffectiveAttrs from \"./no-ineffective-attrs.js\";\nimport noDuplicateClass from \"./no-duplicate-class.js\";\nimport noInvalidAttrValue from \"./no-invalid-attr-value.js\";\n// import new rule here ↑\n\nconst rules = {\n  \"class-spacing\": classSpacing,\n  \"use-baseline\": useBaseline,\n  \"no-obsolete-tags\": noObsoleteTags,\n  \"no-obsolete-attrs\": noObsoleteAttrs,\n  \"no-ineffective-attrs\": noIneffectiveAttrs,\n  \"no-duplicate-class\": noDuplicateClass,\n  \"no-invalid-attr-value\": noInvalidAttrValue,\n  // export new rule here ↑\n};\n\nexport default rules;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/no-duplicate-class.js",
    "content": "/**\n * @import {\n *   Literal,\n *   RuleModule,\n *   SvelteLiteral,\n *   SvelteMustacheTag,\n *   TemplateLiteral\n * } from \"../types.js\"\n * @file Disallow duplicate class names for Svelte\n */\n\nimport {\n  noDuplicateClass,\n  NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} from \"@html-eslint/core\";\nimport { AST_NODE_TYPES } from \"../constants/node-types.js\";\nimport { isLiteral, isTemplateLiteral } from \"./utils/node.js\";\nimport { createAttributeValueAdapter } from \"../adapters/attribute-value/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description: \"Disallow duplicate class names\",\n      recommended: false,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/svelte/rules/no-duplicate-class\",\n    },\n    fixable: \"code\",\n    schema: [],\n    messages: {\n      [NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass]:\n        \"The class '{{className}}' is duplicated.\",\n    },\n  },\n\n  create(context) {\n    const { checkClassValue } = noDuplicateClass();\n\n    /** @param {SvelteLiteral | Literal | TemplateLiteral} node */\n    function checkLiteral(node) {\n      const adapter = createAttributeValueAdapter(node);\n      const result = checkClassValue(adapter);\n      for (const { loc, messageId, range, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n          fix(fixer) {\n            return fixer.removeRange(range);\n          },\n        });\n      }\n    }\n\n    /** @param {SvelteMustacheTag} node */\n    function checkSvelteMustacheTag(node) {\n      if (isLiteral(node.expression) || isTemplateLiteral(node.expression)) {\n        checkLiteral(node.expression);\n      } else if (node.expression.type === AST_NODE_TYPES.ArrayExpression) {\n        node.expression.elements.forEach((element) => {\n          if (!element) {\n            return;\n          }\n          if (isLiteral(element) || isTemplateLiteral(element)) {\n            checkLiteral(element);\n          }\n        });\n      }\n    }\n\n    return {\n      SvelteAttribute(node) {\n        if (\n          !node.key ||\n          !node.key.name ||\n          node.key.name.toLowerCase() !== \"class\" ||\n          !node.value ||\n          node.value.length === 0\n        ) {\n          return;\n        }\n\n        node.value.forEach((valuePart) => {\n          if (valuePart.type === AST_NODE_TYPES.SvelteLiteral) {\n            checkLiteral(valuePart);\n          } else if (valuePart.type === AST_NODE_TYPES.SvelteMustacheTag) {\n            checkSvelteMustacheTag(valuePart);\n          }\n        });\n      },\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/no-ineffective-attrs.js",
    "content": "/**\n * @import {\n *   RuleModule,\n *   SvelteElement\n * } from \"../types.js\"\n * @file Disallow HTML attributes that have no effect in their context for\n *   Svelte\n */\n\nimport {\n  noIneffectiveAttrs,\n  NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} from \"@html-eslint/core\";\nimport { createElementAdapter } from \"../adapters/element/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description:\n        \"Disallow HTML attributes that have no effect in their context\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/svelte/rules/no-ineffective-attrs\",\n    },\n    schema: [],\n    messages: {\n      [NO_INEFFECTIVE_ATTRS_MESSAGE_IDS.ineffective]: \"{{ message }}\",\n    },\n  },\n\n  create(context) {\n    const { checkAttributes } = noIneffectiveAttrs();\n\n    /** @param {SvelteElement} node */\n    function checkElement(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkAttributes(adapter);\n\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return {\n      SvelteElement: checkElement,\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/no-invalid-attr-value.js",
    "content": "/**\n * @import {\n *   RuleModule,\n *   SvelteElement\n * } from \"../types.js\"\n * @file Disallow invalid attribute values according to HTML standards for\n *   Svelte\n */\n\nimport {\n  noInvalidAttrValue,\n  NO_INVALID_ATTR_VALUE_MESSAGE_IDS,\n} from \"@html-eslint/core\";\nimport { createElementAdapter } from \"../adapters/element/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description:\n        \"Disallow invalid attribute values according to HTML standards\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/svelte/rules/no-invalid-attr-value\",\n    },\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          allow: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              properties: {\n                tag: {\n                  type: \"string\",\n                },\n                attr: {\n                  type: \"string\",\n                },\n                valuePattern: {\n                  type: \"string\",\n                },\n              },\n              required: [\"tag\", \"attr\"],\n              additionalProperties: false,\n            },\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n    messages: {\n      [NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid]:\n        \"Invalid value '{{value}}' for attribute '{{attr}}' on <{{element}}>. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || {};\n    const { checkAttributes } = noInvalidAttrValue(options);\n\n    /** @param {SvelteElement} node */\n    function checkElement(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkAttributes(adapter);\n\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return {\n      SvelteElement: checkElement,\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/no-obsolete-attrs.js",
    "content": "/**\n * @import {\n *   RuleModule,\n *   SvelteElement\n * } from \"../types.js\"\n * @file Disallow use of obsolete attributes in HTML5 for Svelte\n */\n\nimport {\n  noObsoleteAttrs,\n  NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} from \"@html-eslint/core\";\nimport { createElementAdapter } from \"../adapters/element/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"problem\",\n    docs: {\n      description: \"Disallow use of obsolete attributes in HTML5\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/svelte/rules/no-obsolete-attrs\",\n    },\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_ATTRS_MESSAGE_IDS.obsolete]:\n        \"The {{attr}} attribute on <{{element}}> is obsolete. {{suggestion}}\",\n    },\n  },\n\n  create(context) {\n    const { checkAttributes } = noObsoleteAttrs();\n\n    /** @param {SvelteElement} node */\n    function checkElement(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkAttributes(adapter);\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return {\n      SvelteElement: checkElement,\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/no-obsolete-tags.js",
    "content": "/**\n * @import {\n *   RuleModule,\n *   SvelteElement\n * } from \"../types.js\"\n * @file Disallow use of obsolete elements in HTML5 for Svelte\n */\n\nimport {\n  noObsoleteTags,\n  NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} from \"@html-eslint/core\";\nimport { createElementAdapter } from \"../adapters/element/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"suggestion\",\n    docs: {\n      description: \"Disallow use of obsolete elements in HTML5\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/svelte/rules/no-obsolete-tags\",\n    },\n    schema: [],\n    messages: {\n      [NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected]:\n        \"Unexpected use of obsolete tag <{{tag}}>\",\n    },\n  },\n\n  create(context) {\n    const { checkElement } = noObsoleteTags();\n\n    /** @param {SvelteElement} node */\n    function check(node) {\n      const adapter = createElementAdapter(node);\n      const result = checkElement(adapter);\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          loc,\n          messageId,\n          data,\n        });\n      }\n    }\n\n    return {\n      SvelteElement: check,\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/use-baseline.js",
    "content": "/**\n * @import {\n *   RuleModule,\n *   SvelteElement\n * } from \"../types.js\"\n * @typedef {Object} Option\n * @property {\"widely\" | \"newly\" | number} Option.available\n */\n\nimport { useBaseline, USE_BASELINE_MESSAGE_IDS } from \"@html-eslint/core\";\nimport { AST_NODE_TYPES } from \"../constants/node-types.js\";\nimport { createElementAdapter } from \"../adapters/element/factory.js\";\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"suggestion\",\n    docs: {\n      description: \"Enforce the use of baseline features\",\n      recommended: true,\n      category: \"Best Practice\",\n      url: \"https://html-eslint.org/docs/svelte/rules/use-baseline\",\n    },\n    schema: [\n      {\n        type: \"object\",\n        properties: {\n          available: {\n            anyOf: [\n              {\n                enum: [\"widely\", \"newly\"],\n              },\n              {\n                // baseline year\n                type: \"integer\",\n                minimum: 2000,\n                maximum: new Date().getFullYear(),\n              },\n            ],\n          },\n        },\n        additionalProperties: false,\n      },\n    ],\n\n    messages: {\n      [USE_BASELINE_MESSAGE_IDS.noBaselineElement]:\n        \"Element '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute]:\n        \"Attribute '{{attr}}' on '{{element}}' is not a {{availability}} available baseline feature.\",\n      [USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute]:\n        \"Attribute '{{attr}}' is not a {{availability}} available baseline feature.\",\n    },\n  },\n\n  create(context) {\n    const options = context.options[0] || { available: \"widely\" };\n    const ruleCore = useBaseline(options);\n\n    /**\n     * Check an element node for baseline features\n     *\n     * @param {SvelteElement} node\n     */\n    function checkElement(node) {\n      if (node.name.type !== AST_NODE_TYPES.SvelteName) {\n        return;\n      }\n      if (\n        node.name.name.toLowerCase() !== node.name.name ||\n        node.name.name.includes(\"-\")\n      ) {\n        return;\n      }\n\n      const adapter = createElementAdapter(node);\n      const result = ruleCore.checkAttributes(adapter);\n\n      for (const { loc, messageId, data } of result) {\n        context.report({\n          messageId,\n          data,\n          loc,\n        });\n      }\n    }\n\n    return {\n      SvelteElement: checkElement,\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/rules/utils/node.js",
    "content": "/**\n * @import {\n *   Literal,\n *   TemplateLiteral\n * } from \"../../types\"\n */\n\nimport { AST_NODE_TYPES } from \"../../constants/node-types\";\n\n/**\n * @param {unknown} node\n * @returns {node is Literal}\n */\nexport function isLiteral(node) {\n  return (\n    typeof node === \"object\" &&\n    !!node &&\n    \"type\" in node &&\n    node.type === AST_NODE_TYPES.Literal\n  );\n}\n\n/**\n * @param {unknown} node\n * @returns {node is TemplateLiteral}\n */\nexport function isTemplateLiteral(node) {\n  return (\n    typeof node === \"object\" &&\n    !!node &&\n    \"type\" in node &&\n    node.type === AST_NODE_TYPES.TemplateLiteral\n  );\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/types.js",
    "content": "// Type definitions are in types.ts\nexport {};\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/lib/types.ts",
    "content": "/** Type definitions for @html-eslint/eslint-plugin-svelte */\nimport type { TSESTree } from \"@typescript-eslint/types\";\nimport eslint from \"eslint\";\nimport { AST } from \"svelte-eslint-parser\";\n\n/** Utility type to convert node type enum to string literal */\ntype NodeWithStringType<T extends TSESTree.Node> = Omit<T, \"type\"> & {\n  type: `${T[\"type\"]}`;\n};\nexport type NodeOrToken = TSESTree.NodeOrTokenData;\nexport type SvelteAttribute = AST.SvelteAttribute;\nexport type SvelteLiteral = AST.SvelteLiteral;\nexport type SvelteElement = AST.SvelteElement;\nexport type SvelteScriptElement = AST.SvelteScriptElement;\nexport type SvelteStyleElement = AST.SvelteStyleElement;\nexport type SvelteMustacheTag = AST.SvelteMustacheTag;\nexport type SvelteAttachTag = AST.SvelteAttachTag;\nexport type SvelteDirectiveKey = AST.SvelteDirectiveKey;\nexport type SvelteDirective = AST.SvelteDirective;\nexport type SvelteGenericsDirective = AST.SvelteGenericsDirective;\nexport type SvelteSpecialDirective = AST.SvelteSpecialDirective;\nexport type SvelteSpreadAttribute = AST.SvelteSpreadAttribute;\nexport type SvelteStyleDirective = AST.SvelteStyleDirective;\nexport type SvelteShorthandAttribute = AST.SvelteShorthandAttribute;\nexport type SvelteName = AST.SvelteName;\nexport type SvelteMemberExpressionName = AST.SvelteMemberExpressionName;\nexport type SvelteMustacheTagText = AST.SvelteMustacheTagText;\nexport type ArrayExpression = NodeWithStringType<TSESTree.ArrayExpression>;\nexport type Literal = NodeWithStringType<TSESTree.Literal>;\nexport type TemplateLiteral = NodeWithStringType<TSESTree.TemplateLiteral>;\nexport type Identifier = NodeWithStringType<TSESTree.Identifier>;\nexport type Node = AST.SvelteNode | TSESTree.Node;\n\nexport interface RuleModule {\n  meta: eslint.Rule.RuleMetaData;\n  create: (context: eslint.Rule.RuleContext) => RuleListener;\n}\nexport type RuleListener = RuleListenerBaseSelectors &\n  RuleListenerExitSelectors;\n\nexport type RuleFunction<T extends AST.SvelteNode | NodeOrToken = never> = (\n  node: T\n) => void;\n\ntype RuleListenerExitSelectors = {\n  [K in keyof RuleListenerBaseSelectors as `${K}:exit`]: RuleListenerBaseSelectors[K];\n};\n\ninterface RuleListenerBaseSelectors {\n  SvelteAttribute?: RuleFunction<SvelteAttribute>;\n  ArrayExpression?: RuleFunction<ArrayExpression>;\n  SvelteElement?: RuleFunction<SvelteElement>;\n  SvelteScriptElement?: RuleFunction<SvelteScriptElement>;\n  SvelteStyleElement?: RuleFunction<SvelteStyleElement>;\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/package.json",
    "content": "{\n  \"name\": \"@html-eslint/eslint-plugin-svelte\",\n  \"version\": \"0.60.0\",\n  \"type\": \"module\",\n  \"description\": \"ESLint plugin for HTML with Svelte support\",\n  \"author\": \"yeonjuan\",\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"./dist/index.js\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/index.d.js\",\n        \"default\": \"./dist/index.js\"\n      },\n      \"require\": {\n        \"types\": \"./dist/index.d.cts\",\n        \"default\": \"./dist/index.cjs\"\n      }\n    }\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"test\": \"NODE_OPTIONS='--experimental-vm-modules' jest --coverage\",\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"build\": \"tsup\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"eslint\",\n    \"eslintplugin\",\n    \"eslint-plugin\",\n    \"html\",\n    \"svelte\",\n    \"lint\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/core\": \"^0.60.0\"\n  },\n  \"peerDependencies\": {\n    \"eslint\": \">=8.0.0 || ^10.0.0-0\",\n    \"svelte-eslint-parser\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.29.0\",\n    \"@babel/preset-env\": \"^7.29.0\",\n    \"@html-eslint/types\": \"^0.60.0\",\n    \"@types/babel__core\": \"^7\",\n    \"@types/babel__preset-env\": \"^7\",\n    \"@types/eslint-scope\": \"^9.1.0\",\n    \"@typescript-eslint/parser\": \"^8.56.0\",\n    \"@typescript-eslint/types\": \"^8.56.0\",\n    \"babel-jest\": \"^30.2.0\",\n    \"eslint-scope\": \"^9.1.1\",\n    \"jest\": \"^30.2.0\",\n    \"svelte\": \"^5.53.1\",\n    \"svelte-eslint-parser\": \"^1.5.1\",\n    \"tsup\": \"^8.5.1\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"engines\": {\n    \"node\": \"^18.18.0 || ^20.9.0 || >=21.1.0\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rule-tester.js",
    "content": "/** Rule tester for @html-eslint/eslint-plugin-svelte */\n\nimport { RuleTester as ESLintRuleTester } from \"eslint\";\nimport * as svelteParser from \"svelte-eslint-parser\";\n\nclass RuleTester extends ESLintRuleTester {\n  constructor(options) {\n    super(options);\n  }\n\n  run(name, rule, tests) {\n    super.run(name, rule, tests);\n  }\n}\n\nexport default function createRuleTester() {\n  return new RuleTester({\n    languageOptions: {\n      parser: svelteParser,\n      parserOptions: {\n        ecmaVersion: 2018,\n        sourceType: \"module\",\n      },\n    },\n  });\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/class-spacing.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/class-spacing.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"class-spacing\", rule, {\n  valid: [\n    {\n      code: `<button class=\"foo\"></button>`,\n    },\n    {\n      code: `<button class=\"foo bar\"></button>`,\n    },\n    {\n      code: `<button class=\"foo bar baz\"></button>`,\n    },\n    {\n      code: `<button class=\"\"></button>`,\n    },\n    {\n      code: `<button class></button>`,\n    },\n    {\n      code: `<button id=\" foo \"></button>`,\n    },\n    {\n      code: `<button class:active={isActive}></button>`,\n    },\n    {\n      code: `<div class=\"container\"></div>`,\n    },\n    {\n      code: `<div class={[\"foo\", \"bar\"]}></div>`,\n    },\n    {\n      code: \"<div class={`foo bar`}></div>\",\n    },\n    {\n      code: \"<div class={`container`}></div>\",\n    },\n    {\n      code: \"<div class={[`foo`, `bar`]}></div>\",\n    },\n    {\n      code: `<div class={\"foo {bar}\"}></div>`,\n    },\n    {\n      code: `<div class=\"\n\"></div>`,\n    },\n    {\n      code: `<div class=\"foo\n      bar\"></div>`,\n    },\n    {\n      code: `<div class=\"\nfoo\n bar\nbaz\n\"></div>`,\n    },\n    {\n      code: '<div class=\"foo\\r\\n      bar\"></div>',\n    },\n  ],\n  invalid: [\n    {\n      code: `<button class=\" foo\"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo \"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\" foo \"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"  foo\"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo  \"></button>`,\n      output: `<button class=\"foo\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo  bar\"></button>`,\n      output: `<button class=\"foo bar\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo   bar\"></button>`,\n      output: `<button class=\"foo bar\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo  bar  baz\"></button>`,\n      output: `<button class=\"foo bar baz\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<button class=\"  foo  bar  \"></button>`,\n      output: `<button class=\"foo bar\"></button>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<div class=\" container  wrapper \"></div>`,\n      output: `<div class=\"container wrapper\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<div class={[\"foo  bar\"]}></div>`,\n      output: `<div class={[\"foo bar\"]}></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: \"<div class={` foo`}></div>\",\n      output: \"<div class={`foo`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: \"<div class={`foo `}></div>\",\n      output: \"<div class={`foo`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: \"<div class={`foo  bar`}></div>\",\n      output: \"<div class={`foo bar`}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: \"<div class={[`foo  bar`, ` baz `]}></div>\",\n      output: \"<div class={[`foo bar`, `baz`]}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: \"<div class={[` foo `, `  bar  `]}></div>\",\n      output: \"<div class={[`foo`, `bar`]}></div>\",\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n        {\n          messageId: \"extraSpacing\",\n        },\n      ],\n    },\n    {\n      code: `<div class=\"foo \nbar\"></div>`,\n      output: `<div class=\"foo\nbar\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          column: 16,\n        },\n      ],\n    },\n    {\n      code: `<div class=\"\nfoo  bar\n\"></div>`,\n      output: `<div class=\"\nfoo bar\n\"></div>`,\n      errors: [\n        {\n          messageId: \"extraSpacing\",\n          column: 5,\n          line: 2,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/no-duplicate-class.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/no-duplicate-class.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-duplicate-class\", rule, {\n  valid: [\n    {\n      code: `<button class=\"foo\"></button>`,\n    },\n    {\n      code: `<button class=\"foo bar\"></button>`,\n    },\n    {\n      code: `<button class=\"foo foofoo\"></button>`,\n    },\n    {\n      code: `<button id=\"foo foo\"></button>`,\n    },\n    {\n      code: `<button class></button>`,\n    },\n    {\n      code: `<button class={foo}></button>`,\n    },\n    {\n      code: `<button class=\"foo {bar}\"></button>`,\n    },\n  ],\n  invalid: [\n    {\n      code: `<button class=\"foo foo\"></button>`,\n      output: `<button class=\"foo \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          line: 1,\n          column: 20,\n          endColumn: 23,\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo   foo\"></button>`,\n      output: `<button class=\"foo   \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          line: 1,\n          column: 22,\n          endColumn: 25,\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo bar foo\"></button>`,\n      output: `<button class=\"foo bar \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          line: 1,\n          column: 24,\n          endColumn: 27,\n        },\n      ],\n    },\n    {\n      code: `<button class=\"foo foo bar\"></button>`,\n      output: `<button class=\"foo  bar\"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          line: 1,\n          column: 20,\n          endColumn: 23,\n        },\n      ],\n    },\n    {\n      code: `<button class=\" foo foo bar \"></button>`,\n      output: `<button class=\" foo  bar \"></button>`,\n      errors: [\n        {\n          messageId: \"duplicateClass\",\n          line: 1,\n          column: 21,\n          endColumn: 24,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/no-ineffective-attrs.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/no-ineffective-attrs.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-ineffective-attrs\", rule, {\n  valid: [\n    {\n      code: '<input type=\"email\" multiple />',\n    },\n    {\n      code: '<input type=\"file\" multiple />',\n    },\n    {\n      code: \"<select multiple></select>\",\n    },\n    {\n      code: '<input type=\"file\" accept=\".jpg,.png\" />',\n    },\n    {\n      code: '<input type=\"text\" readonly />',\n    },\n    {\n      code: '<input type=\"password\" readonly />',\n    },\n    {\n      code: '<script src=\"script.js\" defer></script>',\n    },\n    {\n      code: '<script src=\"script.js\" async></script>',\n    },\n    {\n      code: '<a href=\"file.pdf\" download>Download</a>',\n    },\n    {\n      code: '<a href=\"https://example.com\" target=\"_blank\">Open</a>',\n    },\n    {\n      code: '<a href=\"/page\" ping=\"/analytics\">Link</a>',\n    },\n    {\n      code: '<audio controls controlslist=\"nodownload\"></audio>',\n    },\n    {\n      code: '<video controls controlslist=\"nofullscreen\"></video>',\n    },\n    {\n      code: '<form method=\"post\" enctype=\"multipart/form-data\"></form>',\n    },\n    {\n      code: '<button type=\"submit\" formaction=\"/submit\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formmethod=\"post\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formenctype=\"multipart/form-data\">Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formnovalidate>Submit</button>',\n    },\n    {\n      code: '<button type=\"submit\" formtarget=\"_blank\">Submit</button>',\n    },\n    {\n      code: '<img src=\"map.jpg\" usemap=\"#map\" />',\n    },\n    {\n      code: '<input type=\"number\" min=\"0\" max=\"100\" />',\n    },\n    {\n      code: '<input type=\"range\" min=\"0\" max=\"10\" step=\"2\" />',\n    },\n    {\n      code: '<input type=\"date\" min=\"2020-01-01\" max=\"2025-12-31\" />',\n    },\n    {\n      code: '<input type=\"text\" pattern=\"[0-9]+\" />',\n    },\n    {\n      code: '<input type=\"email\" pattern=\".+@example\\\\.com\" />',\n    },\n    {\n      code: '<input type=\"text\" maxlength=\"10\" minlength=\"3\" />',\n    },\n    {\n      code: '<input type=\"password\" maxlength=\"20\" />',\n    },\n    {\n      code: '<input type=\"text\" placeholder=\"Enter name\" />',\n    },\n    {\n      code: '<input type=\"number\" placeholder=\"Enter age\" />',\n    },\n    {\n      code: '<input type=\"text\" size=\"20\" />',\n    },\n    {\n      code: '<input type=\"email\" size=\"40\" />',\n    },\n    {\n      code: '<input type=\"text\" list=\"suggestions\" />',\n    },\n    {\n      code: '<input type=\"email\" list=\"emails\" />',\n    },\n    {\n      code: '<Input type=\"checkbox\" multiple />',\n    },\n    {\n      code: '<custom-input type=\"text\" multiple />',\n    },\n    {\n      code: '<my-button type=\"button\" formaction=\"/submit\">Click</my-button>',\n    },\n    {\n      code: \"<input type={inputType} multiple />\",\n    },\n  ],\n  invalid: [\n    {\n      code: '<input type=\"text\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"password\" multiple />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"multiple\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" accept=\".jpg\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"accept\" attribute has no effect unless input type is \"file\".',\n          },\n        },\n      ],\n    },\n    {\n      code: \"<a download>Download</a>\",\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 4,\n          data: {\n            message:\n              'The \"download\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<a target=\"_blank\">Open</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 4,\n          data: {\n            message: 'The \"target\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<a ping=\"/analytics\">Link</a>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 4,\n          data: {\n            message: 'The \"ping\" attribute has no effect without an \"href\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<audio controlslist=\"nodownload\"></audio>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 8,\n          data: {\n            message:\n              'The \"controlslist\" attribute has no effect without \"controls\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" readonly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"file\" readonly />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"readonly\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" min=\"0\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"min\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" max=\"100\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"max\" attribute only works with numeric, date, and time input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" pattern=\"[0-9]+\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"pattern\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"number\" maxlength=\"10\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 22,\n          data: {\n            message:\n              'The \"maxlength\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" placeholder=\"Enter value\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"placeholder\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" size=\"20\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message:\n              'The \"size\" attribute only works with text-based input types.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<input type=\"checkbox\" list=\"suggestions\" />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 24,\n          data: {\n            message: 'The \"list\" attribute has no effect on this input type.',\n          },\n        },\n      ],\n    },\n    {\n      code: '<form method=\"get\" enctype=\"multipart/form-data\"></form>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"enctype\" attribute only has effect when method is \"post\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<button type=\"button\" formaction=\"/submit\">Submit</button>',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 23,\n          data: {\n            message:\n              'The \"formaction\" attribute only works with type=\"submit\".',\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"map.jpg\" usemap=\"#map\" ismap />',\n      errors: [\n        {\n          messageId: \"ineffective\",\n          line: 1,\n          column: 20,\n          data: {\n            message:\n              'The \"usemap\" and \"ismap\" attributes cannot be used together.',\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/no-invalid-attr-value.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/no-invalid-attr-value.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-invalid-attr-value\", rule, {\n  valid: [\n    { code: '<input type=\"text\" />' },\n    { code: '<input type=\"email\" />' },\n    { code: '<input type=\"number\" />' },\n    { code: '<input type=\"password\" />' },\n    { code: '<input type=\"checkbox\" />' },\n    { code: '<input type=\"radio\" />' },\n    { code: '<button type=\"button\">Click</button>' },\n    { code: '<button type=\"submit\">Submit</button>' },\n    { code: '<button type=\"reset\">Reset</button>' },\n    { code: '<form method=\"get\"></form>' },\n    { code: '<form method=\"post\"></form>' },\n    { code: '<form method=\"dialog\"></form>' },\n    { code: '<a href=\"#\" target=\"_blank\">Link</a>' },\n    { code: '<a href=\"#\" target=\"_self\">Link</a>' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"anonymous\" />' },\n    { code: '<img src=\"image.jpg\" crossorigin=\"use-credentials\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"lazy\" />' },\n    { code: '<img src=\"image.jpg\" loading=\"eager\" />' },\n    { code: '<div dir=\"ltr\">Text</div>' },\n    { code: '<div dir=\"rtl\">Text</div>' },\n    { code: '<div dir=\"auto\">Text</div>' },\n    { code: '<th scope=\"row\">Header</th>' },\n    { code: '<th scope=\"col\">Header</th>' },\n    { code: '<th scope=\"rowgroup\">Header</th>' },\n    { code: '<th scope=\"colgroup\">Header</th>' },\n    { code: '<input type=\"text\" autocomplete=\"name\" />' },\n    { code: '<input type=\"email\" autocomplete=\"email\" />' },\n    { code: '<input type=\"password\" autocomplete=\"current-password\" />' },\n    { code: '<form enctype=\"application/x-www-form-urlencoded\"></form>' },\n    { code: '<form enctype=\"multipart/form-data\"></form>' },\n    { code: '<form enctype=\"text/plain\"></form>' },\n    { code: '<img src=\"image.jpg\" width=\"100\" />' },\n    { code: '<img src=\"image.jpg\" height=\"200\" />' },\n    { code: '<img src=\"image.jpg\" width=\"100\" height=\"200\" />' },\n    { code: '<link rel=\"stylesheet\" href=\"style.css\" />' },\n    { code: '<a href=\"page.html\" rel=\"noopener\">Link</a>' },\n    { code: '<style blocking=\"render\"></style>' },\n    // Svelte expressions - should be skipped\n    { code: \"<input type={inputType} />\" },\n    { code: \"<button type={type}>Click</button>\" },\n    { code: \"<img loading={loading} />\" },\n    { code: \"<div dir={direction}>Text</div>\" },\n    { code: '<input type=\"text {foo}\" />' },\n    { code: '<button type=\"button {bar}\">Click</button>' },\n    // allow option tests\n    {\n      code: '<input type=\"custom-type\" />',\n      options: [{ allow: [{ tag: \"input\", attr: \"type\" }] }],\n    },\n    {\n      code: '<button type=\"custom\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      options: [{ allow: [{ tag: \"form\", attr: \"method\" }] }],\n    },\n    {\n      code: '<input type=\"custom-foo\" />',\n      options: [\n        {\n          allow: [{ tag: \"input\", attr: \"type\", valuePattern: \"^custom-.*$\" }],\n        },\n      ],\n    },\n  ],\n  invalid: [\n    {\n      code: '<input type=\"invalid-type\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: '<input type=\"txt\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 15,\n        },\n      ],\n    },\n    {\n      code: '<form method=\"put\"></form>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 15,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" crossorigin=\"invalid\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 35,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" loading=\"invalid\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 31,\n        },\n      ],\n    },\n    {\n      code: '<div dir=\"invalid\">Text</div>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 11,\n        },\n      ],\n    },\n    {\n      code: '<th scope=\"invalid\">Header</th>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 12,\n        },\n      ],\n    },\n    {\n      code: '<input type=\"text\" autocomplete=\"invalid-value\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 34,\n        },\n      ],\n    },\n    {\n      code: '<form enctype=\"invalid\"></form>',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 16,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"abc\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 29,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"-100\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 29,\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" width=\"100px\" />',\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 29,\n        },\n      ],\n    },\n    // allow option tests - should still fail if value doesn't match pattern\n    {\n      code: '<input type=\"invalid-type\" />',\n      options: [\n        {\n          allow: [\n            { tag: \"input\", attr: \"type\", valuePattern: \"^custom-type$\" },\n          ],\n        },\n      ],\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 14,\n        },\n      ],\n    },\n    {\n      code: '<button type=\"invalid\">Click</button>',\n      options: [\n        { allow: [{ tag: \"button\", attr: \"type\", valuePattern: \"^custom$\" }] },\n      ],\n      errors: [\n        {\n          messageId: \"invalid\",\n          line: 1,\n          column: 15,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/no-obsolete-attrs.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/no-obsolete-attrs.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-obsolete-attrs\", rule, {\n  valid: [\n    {\n      code: '<a href=\"/page\">Link</a>',\n    },\n    {\n      code: '<img src=\"image.jpg\" alt=\"Image\" />',\n    },\n    {\n      code: '<table><tr><th scope=\"col\">Header</th></tr></table>',\n    },\n    {\n      code: '<link rel=\"stylesheet\" href=\"style.css\" />',\n    },\n    {\n      code: '<script src=\"script.js\"></script>',\n    },\n    {\n      code: '<div id=\"content\">Content</div>',\n    },\n    // Svelte components (capitalized) should be ignored\n    {\n      code: \"<Link charset='UTF-8'>Link</Link>\",\n    },\n    // Custom elements with dashes should be ignored\n    {\n      code: \"<custom-link charset='UTF-8'>Link</custom-link>\",\n    },\n  ],\n  invalid: [\n    {\n      code: '<a charset=\"UTF-8\">Link</a>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 4,\n          data: {\n            attr: \"charset\",\n            element: \"a\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<link charset=\"UTF-8\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"charset\",\n            element: \"link\",\n            suggestion:\n              \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<a name=\"anchor\">Link</a>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 4,\n          data: {\n            attr: \"name\",\n            element: \"a\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<img name=\"myimage\" src=\"image.jpg\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 6,\n          data: {\n            attr: \"name\",\n            element: \"img\",\n            suggestion: \"Use the id attribute instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table align=\"center\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 8,\n          data: {\n            attr: \"align\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<div align=\"left\">Content</div>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 6,\n          data: {\n            attr: \"align\",\n            element: \"div\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<body bgcolor=\"#ffffff\"></body>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"bgcolor\",\n            element: \"body\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table bgcolor=\"#cccccc\" border=\"1\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 8,\n          data: {\n            attr: \"bgcolor\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 26,\n          data: {\n            attr: \"border\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<img src=\"image.jpg\" border=\"0\" />',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 22,\n          data: {\n            attr: \"border\",\n            element: \"img\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<table width=\"100%\" height=\"200\" cellpadding=\"5\" cellspacing=\"0\"></table>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 8,\n          data: {\n            attr: \"width\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 21,\n          data: {\n            attr: \"height\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 34,\n          data: {\n            attr: \"cellpadding\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 50,\n          data: {\n            attr: \"cellspacing\",\n            element: \"table\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<iframe frameborder=\"0\" scrolling=\"no\"></iframe>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 9,\n          data: {\n            attr: \"frameborder\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 25,\n          data: {\n            attr: \"scrolling\",\n            element: \"iframe\",\n            suggestion: \"Use CSS instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<td scope=\"row\">Cell</td>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 5,\n          data: {\n            attr: \"scope\",\n            element: \"td\",\n            suggestion: \"Use th elements for heading cells.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<html manifest=\"app.appcache\"></html>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"manifest\",\n            element: \"html\",\n            suggestion: \"Use service workers instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<form accept=\"image/*\"></form>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 7,\n          data: {\n            attr: \"accept\",\n            element: \"form\",\n            suggestion:\n              \"Use the accept attribute directly on the input elements instead.\",\n          },\n        },\n      ],\n    },\n    {\n      code: '<div contextmenu=\"mymenu\">Content</div>',\n      errors: [\n        {\n          messageId: \"obsolete\",\n          line: 1,\n          column: 6,\n          data: {\n            attr: \"contextmenu\",\n            element: \"div\",\n            suggestion:\n              \"To implement a custom context menu, use script to handle the contextmenu event.\",\n          },\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/no-obsolete-tags.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/no-obsolete-tags.js\";\n\n// https://html.spec.whatwg.org/#non-conforming-features\nconst OBSOLETE_TAGS = [\n  \"applet\",\n  \"acronym\",\n  \"bgsound\",\n  \"dir\",\n  \"frame\",\n  \"frameset\",\n  \"noframes\",\n  \"isindex\",\n  \"keygen\",\n  \"listing\",\n  \"menuitem\",\n  \"nextid\",\n  \"noembed\",\n  \"plaintext\",\n  \"rb\",\n  \"rtc\",\n  \"strike\",\n  \"xmp\",\n  \"basefont\",\n  \"big\",\n  \"blink\",\n  \"center\",\n  \"font\",\n  \"marquee\",\n  \"multicol\",\n  \"nobr\",\n  \"spacer\",\n  \"tt\",\n];\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"no-obsolete-tags\", rule, {\n  valid: [\n    {\n      code: `\n<div>\n  <h1>Heading</h1>\n  <p>Paragraph</p>\n</div>\n`,\n    },\n    {\n      code: \"<button>Click me</button>\",\n    },\n    {\n      code: '<input type=\"text\" />',\n    },\n    {\n      code: `\n<script>\n  let count = 0;\n</script>\n\n<div>\n  <p>{count}</p>\n</div>\n`,\n    },\n    {\n      code: `\n<style>\n  p {\n    color: red;\n  }\n</style>\n`,\n    },\n    // Components with capitalized names should be ignored (Svelte components)\n    {\n      code: \"<Center>Content</Center>\",\n    },\n    {\n      code: '<Font size=\"large\">Text</Font>',\n    },\n    {\n      code: \"<Big>Large text</Big>\",\n    },\n    // Custom elements with dashes should be ignored\n    {\n      code: \"<custom-center>Content</custom-center>\",\n    },\n    {\n      code: \"<my-font>Text</my-font>\",\n    },\n  ],\n  invalid: [\n    // Test all obsolete tags except frame (tested separately)\n    // keygen is a void element, so it cannot have a closing tag\n    ...OBSOLETE_TAGS.filter((tag) => tag !== \"frame\" && tag !== \"keygen\").map(\n      (tag) => ({\n        code: `<${tag}></${tag}>`,\n        errors: [\n          {\n            message: `Unexpected use of obsolete tag <${tag}>`,\n            line: 1,\n            column: 1,\n          },\n        ],\n      })\n    ),\n    {\n      code: \"<keygen />\",\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <keygen>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: `\n<frameset cols=\"25%,*,25%\">\n  <frame name=\"left\" src=\"/html/intro\" />\n</frameset>`,\n      errors: [\n        {\n          messageId: \"unexpected\",\n          data: { tag: \"frameset\" },\n          line: 2,\n          column: 1,\n        },\n        {\n          messageId: \"unexpected\",\n          data: { tag: \"frame\" },\n          line: 3,\n          column: 3,\n        },\n      ],\n    },\n    {\n      code: \"<center />\",\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: \"<font />\",\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <font>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: '<font color=\"red\">Text</font>',\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <font>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: '<center align=\"middle\">Content</center>',\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n          line: 1,\n          column: 1,\n        },\n      ],\n    },\n    {\n      code: `\n<div>\n  <center>\n    <p>Centered content</p>\n  </center>\n</div>\n`,\n      errors: [\n        {\n          message: \"Unexpected use of obsolete tag <center>\",\n          line: 3,\n          column: 3,\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tests/rules/use-baseline.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/use-baseline.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"use-baseline\", rule, {\n  valid: [\n    { code: `<slot></slot>` },\n    { code: `<div id=\"foo\"></div>` },\n    { code: `<svg></svg>` },\n    { code: `<custom-element popovertarget=\"mypopover\"></custom-element>` },\n    { code: `<meta http-equiv=\"refresh\" content=\"5\" />` },\n    { code: `<script type=\"module\"></script>` },\n    {\n      code: `<slot></slot>`,\n      options: [{ available: \"widely\" }],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      options: [{ available: \"newly\" }],\n    },\n    { code: `<input type=\"number\" />` },\n    { code: `<input type=\"unknown\" />` },\n    { code: `<input type=\"tel\" />` },\n    { code: `<a href=\"https://html-eslint.org\"></a>` },\n    { code: `<td></td>` },\n    { code: `<td rowspan=\"1\"></td>` },\n    { code: `<th rowspan=\"2\"></th>` },\n    // Svelte components should be skipped\n    { code: `<CustomComponent popovertarget=\"mypopover\"></CustomComponent>` },\n    { code: `<my-component popovertarget=\"mypopover\"></my-component>` },\n  ],\n  invalid: [\n    {\n      code: `<slot></slot>`,\n      errors: [\n        {\n          message: \"Element '<slot>' is not a 2001 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2001 }],\n    },\n    {\n      code: `<span slot=\"username\">Jane Doe</span>`,\n      errors: [\n        {\n          message: \"Attribute 'slot' is not a 2019 available baseline feature.\",\n        },\n      ],\n      options: [{ available: 2019 }],\n    },\n    {\n      code: `<button popovertarget=\"mypopover\" popovertargetaction=\"show\"></button>`,\n      errors: [\n        { messageId: \"notBaselineElementAttribute\" },\n        { messageId: \"notBaselineElementAttribute\" },\n      ],\n      options: [{ available: \"widely\" }],\n    },\n    {\n      code: `<template shadowrootmode=\"open\"></template>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'shadowrootmode' on '<template>' is not a widely available baseline feature.\",\n        },\n      ],\n    },\n    {\n      code: `<div contenteditable=\"plaintext-only\"></div>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'contenteditable=\\\"plaintext-only\\\"' is not a widely available baseline feature.\",\n        },\n      ],\n    },\n    {\n      code: `<input type=\"week\" />`,\n      errors: [\n        {\n          message:\n            \"Attribute 'type=\\\"week\\\"' on '<input>' is not a widely available baseline feature.\",\n        },\n      ],\n    },\n    {\n      code: `<a href=\"sms:00000\"></a>`,\n      errors: [\n        {\n          message:\n            \"Attribute 'href=\\\"sms:00000\\\"' on '<a>' is not a widely available baseline feature.\",\n        },\n      ],\n    },\n    {\n      code: `<td rowspan=\"0\"></td>`,\n      errors: [\n        {\n          messageId: \"notBaselineElementAttribute\",\n        },\n      ],\n    },\n    {\n      code: `<th rowspan=\"0\"></th>`,\n      errors: [\n        {\n          messageId: \"notBaselineElementAttribute\",\n        },\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"lib\": [\"DOM\"]\n  },\n  \"include\": [\"lib/**/*\"]\n}\n"
  },
  {
    "path": "packages/eslint-plugin-svelte/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  entry: [\"lib/index.js\"],\n  format: [\"cjs\", \"esm\"],\n  dts: true,\n  splitting: false,\n  sourcemap: true,\n  clean: true,\n  outDir: \"dist\",\n  shims: true,\n});\n"
  },
  {
    "path": "packages/integration-test/README.md",
    "content": "# @html-eslint/integration-test\n\nInternal integration testing package for HTML ESLint.\n\nThis is a **private package** used to verify that HTML ESLint plugins and parsers work correctly across different ESLint versions.\n\n## Directory Structure\n\n```\nintegration-test/\n├── fixtures/           # Test fixtures for different ESLint configurations\n│   ├── eslint-v8-legacy-config/    # ESLint 8 with .eslintrc.js format\n│   ├── eslint-v9-flat-config/      # ESLint 9 with flat config format\n│   ├── eslint-v9-language/         # ESLint 9 language API testing\n│   ├── eslint-v10-flat-config/     # ESLint 10 flat config testing\n│   ├── typescript/                 # TypeScript config type checking\n│   └── react/                      # React plugin integration testing\n├── lib/                # Test utilities\n│   └── test-utils.js   # Helper functions for running ESLint and type checks\n└── tests/              # Integration test suites\n    └── integration.test.js\n```\n\n## Running Tests\n\n```bash\nyarn test:integration\n```\n\n## Notes\n\n- This package uses **file: protocol** to reference local monorepo packages, ensuring tests use the current workspace code\n- Tests are isolated in temporary directories to prevent cross-contamination\n- The package is **excluded from publishing** (marked as `private: true`)\n"
  },
  {
    "path": "packages/integration-test/fixtures/angular-template/eslint.config.js",
    "content": "const angularPlugin = require('@html-eslint/eslint-plugin-angular-template');\nconst templateParser = require('@angular-eslint/template-parser');\n\nmodule.exports = [\n    {\n        files: [\"templates/*.html\"],\n        plugins: {\n            \"@html-eslint/angular-template\": angularPlugin,\n        },\n        languageOptions: {\n            parser: templateParser,\n        },\n        rules: {\n            \"@html-eslint/angular-template/use-baseline\": [\"error\", { available: 2019 }],\n        }\n    },\n];\n"
  },
  {
    "path": "packages/integration-test/fixtures/angular-template/templates/invalid.html",
    "content": "<!-- slot element is not widely available -->\n<slot></slot>\n\n@if (show) {\n  <!-- slot attribute is not widely available (year 2019) -->\n  <span slot=\"header\">Header content</span>\n}\n"
  },
  {
    "path": "packages/integration-test/fixtures/angular-template/templates/valid.html",
    "content": "<div class=\"container\">\n  <h1>Angular App</h1>\n\n  <input type=\"text\" placeholder=\"Enter text\" />\n  <button type=\"button\">Click me</button>\n  <a href=\"/home\">Home</a>\n\n  <!-- Property binding -->\n  <input [disabled]=\"isDisabled\" type=\"text\" />\n  <button [disabled]=\"!canSubmit\" type=\"submit\">Submit</button>\n\n  <!-- Attribute binding -->\n  <div [attr.aria-label]=\"labelText\">Content</div>\n  <span [attr.data-id]=\"itemId\">Item</span>\n\n  <!-- Angular control flow -->\n  @if (isLoggedIn) {\n    <span>Welcome back!</span>\n  } @else {\n    <a href=\"/login\">Login</a>\n  }\n\n  @for (item of items; track item.id) {\n    <li>{{ item.name }}</li>\n  } @empty {\n    <p>No items found</p>\n  }\n\n  @switch (status) {\n    @case ('active') { <span>Active</span> }\n    @case ('inactive') { <span>Inactive</span> }\n    @default { <span>Unknown</span> }\n  }\n\n  @defer (on idle) {\n    <section>\n      <h2>Deferred section</h2>\n      <p>Loaded lazily</p>\n    </section>\n  } @placeholder {\n    <p>Loading...</p>\n  } @error {\n    <p>Failed to load</p>\n  }\n\n  <!-- Custom elements are skipped -->\n  <my-component [title]=\"title\"></my-component>\n  <app-header [user]=\"currentUser\"></app-header>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/eslint.config.js",
    "content": "const html = require('@html-eslint/eslint-plugin');\nconst htmlParser = require('@html-eslint/parser');\n\nmodule.exports = [\n    {\n        files: [\"js/*.js\"],\n        plugins: {\n            html,\n        },\n        languageOptions: {\n            parserOptions: {\n                ecmaVersion: 6\n            },\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2]\n        }\n    },\n    {\n        files: [\"html/*.html\"],\n        plugins: {\n            html\n        },\n        languageOptions: {\n            parser: htmlParser,\n            parserOptions: {\n                templateEngineSyntax: htmlParser.TEMPLATE_ENGINE_SYNTAX.HANDLEBAR\n            }\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2],\n            \"html/sort-attrs\": [\"error\"],\n            \"html/quotes\": [\"error\"]\n        }\n    },\n    {\n        files: [\"frontmatter/*.html\"],\n        plugins: {\n            html\n        },\n        languageOptions: {\n            parser: htmlParser,\n            parserOptions: {\n                frontmatter: true,\n            }\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2],\n        }\n    }\n];\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/frontmatter/invalid.html",
    "content": "---\n  name: foo\n---\n<div>\n<div></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/frontmatter/valid.html",
    "content": "---\n  name: foo\n---\n<div>\n  <div></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/html/invalid.html",
    "content": "<div>\n<div id=''></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/html/valid.html",
    "content": "<div>\n  <div></div>\n  <div {{ attr }} id=\"1\"></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/js/invalid.js",
    "content": "html`\n  <div>\n  <div></div>\n  </div>\n`\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v10-flat-config/js/valid.js",
    "content": "html`\n  <div>\n    <div></div>\n  </div>\n`\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/.eslintrc.js",
    "content": "const { TEMPLATE_ENGINE_SYNTAX } = require(\"@html-eslint/parser\");\nmodule.exports = {\n    overrides: [\n        {\n            files: [\"**/*.js\"],\n            plugins: [\"@html-eslint\"],\n            parserOptions: {\n                ecmaVersion: 6\n            },\n            rules: {\n                \"@html-eslint/indent\": [\"error\", 2],\n            }\n        },\n        {\n            files: [\"**/*.html\"],\n            parser: \"@html-eslint/parser\",\n            parserOptions: {\n                templateEngineSyntax: TEMPLATE_ENGINE_SYNTAX.HANDLEBAR\n            },\n            plugins: [\"@html-eslint\"],\n            rules: {\n                \"@html-eslint/indent\": [\"error\", 2],\n                \"@html-eslint/sort-attrs\": [\"error\"],\n                \"@html-eslint/quotes\": [\"error\"]\n            }\n        },\n        {\n            files: [\"**/*.html\"],\n            parser: \"@html-eslint/parser\",\n            parserOptions: {\n                frontmatter: true,\n            },\n            plugins: [\"@html-eslint\"],\n            extends: [\"plugin:@html-eslint/recommended-legacy\"],\n            rules: {\n                \"@html-eslint/indent\": [\"error\", 2],\n            }\n        }\n    ]\n}"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/frontmatter/invalid.html",
    "content": "---\n  name: foo\n---\n<div>\n<div></div>\n</div>"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/frontmatter/valid.html",
    "content": "---\n  name: foo\n---\n<div>\n  <div></div>\n</div>"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/html/invalid.html",
    "content": "<div>\n<div id=''></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/html/valid.html",
    "content": "<div>\n  <div></div>\n  <div {{ attr }} id=\"1\"></div>\n</div>\n    "
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/js/invalid.js",
    "content": "html`\n  <div>\n  <div></div>\n  </div>\n`"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v8-legacy-config/js/valid.js",
    "content": "html`\n  <div>\n    <div></div>\n  </div>\n`"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/eslint.config.js",
    "content": "const html = require('@html-eslint/eslint-plugin');\nconst htmlParser = require('@html-eslint/parser');\n\nmodule.exports = [\n    {\n        files: [\"js/*.js\"],\n        plugins: {\n            html,\n        },\n        languageOptions: {\n            parserOptions: {\n                ecmaVersion: 6\n            },\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2]\n        }\n    },\n    {\n        files: [\"html/*.html\"],\n        plugins: {\n            html\n        },\n        languageOptions: {\n            parser: htmlParser,\n            parserOptions: {\n                templateEngineSyntax: htmlParser.TEMPLATE_ENGINE_SYNTAX.HANDLEBAR\n            }\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2],\n            \"html/sort-attrs\": [\"error\"],\n            \"html/quotes\": [\"error\"]\n        }\n    },\n    {\n        files: [\"frontmatter/*.html\"],\n        plugins: {\n            html\n        },\n        languageOptions: {\n            parser: htmlParser,\n            parserOptions: {\n                frontmatter: true,\n                templateEngineSyntax: [\n                    { open: \"{{\", close: \"}}\" },\n                    { open: \"{%\", close: \"%}\" },\n                    { open: \"{#\", close: \"#}\", isComment: true },\n\t\t\t    ],\n            }\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2],\n        }\n    }\n];"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/frontmatter/invalid.html",
    "content": "---\n  name: foo\n---\n<div>\n<div></div>\n</div>"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/frontmatter/valid.html",
    "content": "---\nlayout: base.html\nhook: \"component_library\"\n---\n\n{% include \"partials/header.html\" %}\n\n{% from 'components/hero.macro.html' import hero with context %}\n\n{{ hero({\n        title: \"ESLint Components\",\n        supporting_text: \"Components used across this site.\"\n    })\n}}\n\n<div class=\"content-container grid\">\n  <div class=\"span-1-3\">\n    <nav class=\"index\">\n      <button class=\"index__toggle\" aria-label=\"Components\" id=\"js-index-toggle\" hidden>\n        Components\n        <svg width=\"20\" height=\"20\" viewBox=\"20 20 60 60\">\n          <path id=\"ham-top\" d=\"M30,37 L70,37 Z\" stroke=\"currentColor\"></path>\n          <path id=\"ham-middle\" d=\"M30,50 L70,50 Z\" stroke=\"currentColor\"></path>\n          <path id=\"ham-bottom\" d=\"M30,63 L70,63 Z\" stroke=\"currentColor\"></path>\n        </svg>\n      </button>\n      <ul class=\"index__list\" id=\"js-index-list\">\n        {% for item in collections.library %}\n        <li class=\"index__item\">\n          <a href=\"{{ item.url }}\" {{ helpers.getLinkActiveState(item.url,\n                    page.url) | safe }}>{{ item.data.title }}</a>\n        </li>\n        {% endfor %}\n      </ul>\n    </nav>\n  </div>\n\n  <div class=\"span-4-12\">\n    <main id=\"main\" tabindex=\"-1\" class=\"post-main\">\n      <h1>{{ title }}</h1>\n      {{ content | safe }}\n    </main>\n  </div>\n</div>\n\n{% include \"partials/footer.html\" %}\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/html/invalid.html",
    "content": "<div>\n<div id=''></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/html/valid.html",
    "content": "<div>\n  <div></div>\n  <div {{ attr }} id=\"1\"></div>\n</div>\n    "
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/js/invalid.js",
    "content": "html`\n  <div>\n  <div></div>\n  </div>\n`"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-flat-config/js/valid.js",
    "content": "html`\n  <div>\n    <div></div>\n  </div>\n`"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-language/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-language/eslint.config.js",
    "content": "const html = require('@html-eslint/eslint-plugin');\nconst htmlParser = require('@html-eslint/parser');\nconst { defineConfig } = require('eslint/config');\n\nmodule.exports = defineConfig([\n    {\n        files: [\"html/*.html\"],\n        plugins: {\n            html\n        },\n        language: 'html/html',\n        extends: [\"html/recommended\"],\n        languageOptions: {\n             templateEngineSyntax: htmlParser.TEMPLATE_ENGINE_SYNTAX.HANDLEBAR\n        },\n        rules: {\n            \"html/indent\": [\"error\", 2],\n            \"html/sort-attrs\": [\"error\"],\n            \"html/quotes\": [\"error\"],\n            \"no-irregular-whitespace\": \"error\"\n        }\n    },\n    {\n        files: [\"frontmatter/*.html\"],\n        plugins: {\n            html\n        },\n        language: 'html/html',\n        languageOptions: {\n            frontmatter: true,\n            templateEngineSyntax: htmlParser.TEMPLATE_ENGINE_SYNTAX.TWIG,\n        },\n        rules: {\n            \"html/no-duplicate-class\": \"error\",\n        }\n    },\n]);\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-language/frontmatter/valid.html",
    "content": "---\nlayout: base.html\nhook: \"component_library\"\n---\n\n{% include \"partials/header.html\" %}\n\n{% from 'components/hero.macro.html' import hero with context %}\n\n{{ hero({\n        title: \"ESLint Components\",\n        supporting_text: \"Components used across this site.\"\n    })\n}}\n<!-- test case from https://github.com/eslint/eslint.org/blob/main/src/_includes/layouts/components.html -->\n<div class=\"content-container grid\">\n    <div class=\"span-1-3\">\n        <nav class=\"index\">\n            <button class=\"index__toggle\" aria-label=\"Components\" id=\"js-index-toggle\" hidden>\n                Components\n                <svg width=\"20\" height=\"20\" viewBox=\"20 20 60 60\">\n                    <path id=\"ham-top\" d=\"M30,37 L70,37 Z\" stroke=\"currentColor\"></path>\n                    <path id=\"ham-middle\" d=\"M30,50 L70,50 Z\" stroke=\"currentColor\"></path>\n                    <path id=\"ham-bottom\" d=\"M30,63 L70,63 Z\" stroke=\"currentColor\"></path>\n                </svg>\n            </button>\n            <ul class=\"index__list\" id=\"js-index-list\">\n                {% for item in collections.library %}\n                <li class=\"index__item\">\n                    <a href=\"{{ item.url }}\" {{ helpers.getLinkActiveState(item.url,\n                    page.url) | safe }}>{{ item.data.title }}</a>\n                </li>\n                {% endfor %}\n            </ul>\n        </nav>\n    </div>\n\n    <div class=\"span-4-12\">\n        <main id=\"main\" tabindex=\"-1\" class=\"post-main\">\n            <h1>{{ title }}</h1>\n            {{ content | safe }}\n        </main>\n    </div>\n</div>\n\n{% include \"partials/footer.html\" %}"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-language/html/invalid.html",
    "content": "<div>\n<div id=''></div>\n</div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/eslint-v9-language/html/valid.html",
    "content": "<div>\n  <div></div>\n  <div {{ attr }} id=\"1\"></div>\n</div>\n    "
  },
  {
    "path": "packages/integration-test/fixtures/react/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/integration-test/fixtures/react/eslint.config.js",
    "content": "const html = require('@html-eslint/eslint-plugin-react');\n\nmodule.exports = [\n    {\n        files: [\"jsx/*.jsx\"],\n        plugins: {\n            html,\n        },\n        languageOptions: {\n            parserOptions: {\n                ecmaVersion: 2018,\n                sourceType: \"module\",\n                ecmaFeatures: {\n                    jsx: true\n                }\n            },\n        },\n    },\n    html.configs.recommended\n];\n"
  },
  {
    "path": "packages/integration-test/fixtures/react/jsx/invalid.jsx",
    "content": "export function Invalid() {\n    return <input type=\"txt\" />;\n}\n"
  },
  {
    "path": "packages/integration-test/fixtures/react/jsx/valid.jsx",
    "content": "export function Valid() {\n    return <input type=\"text\" />;\n}\n"
  },
  {
    "path": "packages/integration-test/fixtures/svelte/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/integration-test/fixtures/svelte/eslint.config.js",
    "content": "import html from '@html-eslint/eslint-plugin-svelte';\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n    {\n        files: [\"svelte/*.svelte\"],\n        plugins: {\n            html\n        },\n        languageOptions: {\n            parser: svelteParser,\n        },\n        rules: {\n            \"html/class-spacing\": \"error\",\n        }\n    },\n];\n"
  },
  {
    "path": "packages/integration-test/fixtures/svelte/svelte/invalid.svelte",
    "content": "<div class=\"a  a\"></div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/svelte/svelte/valid.svelte",
    "content": "<div class=\"a b\"></div>\n"
  },
  {
    "path": "packages/integration-test/fixtures/typescript/eslint.config.ts",
    "content": "import { defineConfig } from \"eslint/config\";\nimport html from \"@html-eslint/eslint-plugin\";\n\ndefineConfig(html.configs['flat/recommended']);\n\ndefineConfig([{\n    files: [\"**/*.html\"],\n    plugins: {\n        html,\n    },\n    extends: [\"html/recommended\"],\n    language: \"html/html\",\n    rules: {\n        \"html/no-duplicate-class\": \"error\",\n    }\n}]);\n"
  },
  {
    "path": "packages/integration-test/fixtures/typescript/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"module\": \"NodeNext\",\n    \"moduleResolution\": \"NodeNext\", \n    \"rootDir\": \"./\", \n    \"strict\": true,\n    \"esModuleInterop\": true, \n    \"skipLibCheck\": true,\n    \"lib\": [\"ESNext\"],\n    \"noEmit\": true\n  },\n  \"include\": [\"**/*\"],\n  \"exclude\": [\"node_modules\"] \n}"
  },
  {
    "path": "packages/integration-test/lib/test-utils.js",
    "content": "const tmp = require(\"tmp\");\nconst ncp = require(\"ncp\");\nconst fs = require(\"fs\");\nconst { promisify } = require(\"node:util\");\nconst path = require(\"path\");\nconst childProcess = require(\"node:child_process\");\n\nconst copyDir = promisify(ncp.ncp);\nconst tmpDir = promisify(tmp.dir);\nconst tmpFile = promisify(tmp.file);\n\nconst execFile = promisify(childProcess.execFile);\nconst readFile = promisify(fs.readFile);\nconst writeFile = promisify(fs.writeFile);\ntmp.setGracefulCleanup();\n\nconst PACKAGE_VERSION = \"0.0.2\";\nconst PACKAGE_MANAGER = \"yarn@4.9.1\";\nconst PNPM_PACKAGE_MANAGER = \"pnpm@9.15.4\";\nconst HTML_ESLINT_PACKAGES = [\n  \"template-parser\",\n  \"template-syntax-parser\",\n  \"core\",\n  \"parser\",\n];\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction packageFileVersion(name) {\n  return `file:${path.join(__dirname, \"../../\", name)}`;\n}\n\n/**\n * Install dependencies in a directory\n *\n * @param {string} dir\n * @param {boolean} log\n * @param {\"yarn\" | \"pnpm\"} [packageManager=\"yarn\"] Default is `\"yarn\"`\n */\nasync function installDependencies(dir, log, packageManager = \"yarn\") {\n  const installArgs =\n    packageManager === \"pnpm\" ? [\"install\"] : [\"install\", \"--no-immutable\"];\n  await execFile(packageManager, installArgs, { cwd: dir }).catch((e) => {\n    if (log) {\n      console.error(e);\n    }\n  });\n}\n\n/**\n * @param {Object} params\n * @param {string} params.fixtureName\n * @param {string} params.eslintVersion\n * @param {string} params.dir\n * @param {string[]} params.localPackages\n * @param {[string, string][]} [params.externalPackages=[]] Array of\n *   [packageName, version] tuples. Default is `[]`\n * @param {Record<string, string>} [params.scripts] <<<<<<< HEAD\n * @param {Record<string, string>} [params.extraDependencies] #\n *   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?\n * @param {\"yarn\" | \"pnpm\"} [params.packageManager=\"yarn\"] >>>>>>> main. Default\n *   is `\"yarn\"`\n */\nasync function makePackageJson({\n  fixtureName,\n  eslintVersion,\n  dir,\n  externalPackages = [],\n  scripts,\n  localPackages,\n  packageManager = \"yarn\",\n}) {\n  const devDependencies = Object.fromEntries(\n    localPackages.map((pkg) => [\n      pkg,\n      packageFileVersion(pkg.replace(\"@html-eslint/\", \"\")),\n    ])\n  );\n\n  const externalDeps = Object.fromEntries(externalPackages);\n\n  const resolutions = Object.fromEntries(\n    HTML_ESLINT_PACKAGES.map((pkg) => [\n      `@html-eslint/${pkg}`,\n      packageFileVersion(pkg),\n    ])\n  );\n\n  const packageJson = {\n    name: fixtureName,\n    private: true,\n    version: PACKAGE_VERSION,\n    packageManager:\n      packageManager === \"pnpm\" ? PNPM_PACKAGE_MANAGER : PACKAGE_MANAGER,\n    scripts,\n    devDependencies: {\n      eslint: eslintVersion,\n      ...externalDeps,\n      ...devDependencies,\n    },\n  };\n\n  // Use pnpm.overrides for pnpm, resolutions for yarn\n  if (packageManager === \"pnpm\") {\n    packageJson.pnpm = {\n      overrides: resolutions,\n    };\n  } else {\n    packageJson.resolutions = resolutions;\n  }\n\n  await writeFile(\n    path.join(dir, \"package.json\"),\n    JSON.stringify(packageJson),\n    \"utf-8\"\n  );\n}\n\n/**\n * @param {Object} params\n * @param {string} params.fixtureName\n * @param {string} params.eslintVersion\n * @param {Record<string, string>} [params.scripts]\n * @param {string[]} params.localPackages\n * @param {[string, string][]} [params.externalPackages=[]] Array of\n *   [packageName, version] tuples. Default is `[]`\n * @param {boolean} [params.log]\n * @param {\"yarn\" | \"pnpm\"} [params.packageManager=\"yarn\"] Default is `\"yarn\"`\n * @returns {Promise<{ dir: string }>}\n */\nasync function setup({\n  fixtureName,\n  eslintVersion,\n  scripts,\n  localPackages,\n  externalPackages = [],\n  log,\n  packageManager = \"yarn\",\n}) {\n  const dir = await tmpDir();\n  const fixturePath = path.join(__dirname, \"../fixtures/\", fixtureName);\n\n  await copyDir(fixturePath, dir);\n  await makePackageJson({\n    fixtureName,\n    eslintVersion,\n    dir,\n    scripts,\n    localPackages,\n    externalPackages,\n    log,\n    packageManager,\n  });\n  return { dir };\n}\n\n/**\n * @param {Object} params\n * @param {string} params.glob\n * @param {string} params.fixtureName\n * @param {string} params.eslintVersion\n * @param {string[]} params.localPackages\n * @param {[string, string][]} [params.externalPackages=[]] Array of\n *   [packageName, version] tuples. Default is `[]`\n * @param {boolean} [params.log]\n * @param {\"yarn\" | \"pnpm\"} [params.packageManager=\"yarn\"] Default is `\"yarn\"`\n */\nasync function runESLint({\n  fixtureName,\n  eslintVersion,\n  glob,\n  localPackages,\n  externalPackages = [],\n  log,\n  packageManager = \"yarn\",\n}) {\n  const { dir } = await setup({\n    fixtureName,\n    eslintVersion,\n    localPackages,\n    externalPackages,\n    packageManager,\n  });\n\n  await installDependencies(dir, log, packageManager);\n\n  const outFile = await tmpFile();\n  const eslintArgs = [\n    \"eslint\",\n    \"--format\",\n    \"json\",\n    \"--output-file\",\n    outFile,\n    glob,\n  ];\n\n  if (packageManager === \"pnpm\") {\n    await execFile(\"pnpm\", [\"exec\", ...eslintArgs], { cwd: dir }).catch((e) => {\n      if (log) {\n        console.error(e);\n      }\n    });\n  } else {\n    await execFile(\"yarn\", eslintArgs, { cwd: dir }).catch((e) => {\n      if (log) {\n        console.error(e);\n      }\n    });\n  }\n\n  const result = await readFile(outFile, \"utf-8\");\n  return JSON.parse(result);\n}\n\n/**\n * @param {Object} params\n * @param {string} params.fixtureName\n * @param {string} params.eslintVersion\n * @param {string[]} params.localPackages\n * @param {[string, string][]} [params.externalPackages=[]] Array of\n *   [packageName, version] tuples. Default is `[]`\n * @param {boolean} [params.log]\n * @param {\"yarn\" | \"pnpm\"} [params.packageManager=\"yarn\"] Default is `\"yarn\"`\n */\nasync function runTypecheck({\n  fixtureName,\n  eslintVersion,\n  localPackages,\n  externalPackages = [],\n  log,\n  packageManager = \"yarn\",\n}) {\n  const { dir } = await setup({\n    fixtureName,\n    eslintVersion,\n    scripts: {\n      ts: \"tsc -p ./tsconfig.json\",\n    },\n    localPackages,\n    externalPackages,\n    log,\n    packageManager,\n  });\n\n  await installDependencies(dir, log, packageManager);\n\n  if (packageManager === \"pnpm\") {\n    return await execFile(\"pnpm\", [\"run\", \"ts\"], { cwd: dir })\n      .then(() => undefined)\n      .catch((error) => {\n        if (log) {\n          console.error(error);\n        }\n        return error;\n      });\n  } else {\n    return await execFile(\"yarn\", [\"run\", \"ts\"], { cwd: dir })\n      .then(() => undefined)\n      .catch((error) => {\n        if (log) {\n          console.error(error);\n        }\n        return error;\n      });\n  }\n}\n\nmodule.exports = {\n  runESLint,\n  runTypecheck,\n};\n"
  },
  {
    "path": "packages/integration-test/package.json",
    "content": "{\n  \"name\": \"integration-test\",\n  \"version\": \"0.60.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"test:integration\": \"jest --coverage --verbose\"\n  },\n  \"dependencies\": {\n    \"ncp\": \"^2.0.0\",\n    \"tmp\": \"^0.2.3\"\n  }\n}\n"
  },
  {
    "path": "packages/integration-test/tests/integration.test.js",
    "content": "const { runESLint, runTypecheck } = require(\"../lib/test-utils\");\n\nfunction expectLintResult(result, { shouldHaveErrors = false } = {}) {\n  expect(result[0].fatalErrorCount).toBe(0);\n  if (shouldHaveErrors) {\n    expect(result[0].messages.length).toBeGreaterThanOrEqual(1);\n  } else {\n    expect(result[0].messages.length).toBe(0);\n  }\n}\n\nasync function testESLintFiles({\n  fixtureName,\n  eslintVersion,\n  localPackages,\n  externalPackages = [],\n  files,\n  shouldHaveErrors = false,\n  packageManager = \"yarn\",\n}) {\n  for (const file of files) {\n    const result = await runESLint({\n      fixtureName,\n      eslintVersion,\n      localPackages,\n      externalPackages,\n      glob: file,\n      log: !shouldHaveErrors,\n      packageManager,\n    });\n    expectLintResult(result, { shouldHaveErrors });\n  }\n}\n\n/** Create standard test suite for ESLint configuration */\nfunction createESLintConfigTests({\n  eslintVersion,\n  fixtureName,\n  localPackages,\n  externalPackages = [],\n  invalidFiles = [\n    \"html/invalid.html\",\n    \"js/invalid.js\",\n    \"frontmatter/invalid.html\",\n  ],\n  validFiles = [\"html/valid.html\", \"js/valid.js\", \"frontmatter/valid.html\"],\n  testTimeout = 20000,\n  packageManager = \"yarn\",\n}) {\n  const config = {\n    eslintVersion,\n    fixtureName,\n    localPackages,\n    externalPackages,\n    packageManager,\n  };\n\n  if (invalidFiles.length > 0) {\n    it(\n      \"should throw a lint error for invalid files\",\n      async () => {\n        await testESLintFiles({\n          ...config,\n          files: invalidFiles,\n          shouldHaveErrors: true,\n        });\n      },\n      testTimeout\n    );\n  }\n\n  if (validFiles.length > 0) {\n    it(\n      \"should not throw any lint error for valid files\",\n      async () => {\n        await testESLintFiles({\n          ...config,\n          files: validFiles,\n          shouldHaveErrors: false,\n        });\n      },\n      testTimeout\n    );\n  }\n}\n\ndescribe(\"integration tests\", () => {\n  describe(\"eslint-v8-legacy-config\", () => {\n    describe(\"with yarn\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"8\",\n        fixtureName: \"eslint-v8-legacy-config\",\n        localPackages: [\"@html-eslint/eslint-plugin\", \"@html-eslint/parser\"],\n      });\n    });\n\n    describe(\"with pnpm\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"8\",\n        fixtureName: \"eslint-v8-legacy-config\",\n        localPackages: [\"@html-eslint/eslint-plugin\", \"@html-eslint/parser\"],\n        packageManager: \"pnpm\",\n      });\n    });\n  });\n\n  describe(\"eslint-v9-flat-config\", () => {\n    describe(\"with yarn\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"9\",\n        fixtureName: \"eslint-v9-flat-config\",\n        localPackages: [\"@html-eslint/eslint-plugin\", \"@html-eslint/parser\"],\n      });\n    });\n\n    describe(\"with pnpm\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"9\",\n        fixtureName: \"eslint-v9-flat-config\",\n        localPackages: [\"@html-eslint/eslint-plugin\", \"@html-eslint/parser\"],\n        packageManager: \"pnpm\",\n      });\n    });\n  });\n\n  describe(\"eslint-v9-language\", () => {\n    describe(\"with yarn\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"9\",\n        fixtureName: \"eslint-v9-language\",\n        localPackages: [\"@html-eslint/eslint-plugin\"],\n        invalidFiles: [],\n        validFiles: [\"html/valid.html\", \"frontmatter/valid.html\"],\n      });\n    });\n\n    describe(\"with pnpm\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"9\",\n        fixtureName: \"eslint-v9-language\",\n        localPackages: [\"@html-eslint/eslint-plugin\"],\n        invalidFiles: [],\n        validFiles: [\"html/valid.html\", \"frontmatter/valid.html\"],\n        packageManager: \"pnpm\",\n      });\n    });\n  });\n\n  describe(\"eslint-v10-flat-config\", () => {\n    describe(\"with yarn\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"10\",\n        fixtureName: \"eslint-v10-flat-config\",\n        localPackages: [\"@html-eslint/eslint-plugin\", \"@html-eslint/parser\"],\n      });\n    });\n\n    describe(\"with pnpm\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"10\",\n        fixtureName: \"eslint-v10-flat-config\",\n        localPackages: [\"@html-eslint/eslint-plugin\", \"@html-eslint/parser\"],\n        packageManager: \"pnpm\",\n      });\n    });\n  });\n\n  describe(\"typescript\", () => {\n    const eslintVersion = \"9.27.0\";\n    const fixtureName = \"typescript\";\n    const localPackages = [\"@html-eslint/eslint-plugin\"];\n    const externalPackages = [[\"typescript\", \"5.9.3\"]];\n\n    describe(\"with yarn\", () => {\n      it(\"should not throw any type error\", async () => {\n        const result = await runTypecheck({\n          fixtureName,\n          eslintVersion,\n          localPackages,\n          externalPackages,\n          fileName: \"eslint.config.ts\",\n        });\n        expect(result).toBe(undefined);\n      }, 20000);\n    });\n\n    describe(\"with pnpm\", () => {\n      it(\"should not throw any type error\", async () => {\n        const result = await runTypecheck({\n          fixtureName,\n          eslintVersion,\n          localPackages,\n          externalPackages,\n          fileName: \"eslint.config.ts\",\n          packageManager: \"pnpm\",\n        });\n        expect(result).toBe(undefined);\n      }, 20000);\n    });\n  });\n\n  describe(\"react\", () => {\n    describe(\"with yarn\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"9.27.0\",\n        fixtureName: \"react\",\n        localPackages: [\"@html-eslint/eslint-plugin-react\"],\n        invalidFiles: [\"jsx/invalid.jsx\"],\n        validFiles: [\"jsx/valid.jsx\"],\n      });\n    });\n\n    describe(\"with pnpm\", () => {\n      createESLintConfigTests({\n        eslintVersion: \"9.27.0\",\n        fixtureName: \"react\",\n        localPackages: [\"@html-eslint/eslint-plugin-react\"],\n        invalidFiles: [\"jsx/invalid.jsx\"],\n        validFiles: [\"jsx/valid.jsx\"],\n        packageManager: \"pnpm\",\n      });\n    });\n  });\n\n  describe(\"svelte\", () => {\n    createESLintConfigTests({\n      eslintVersion: \"9\",\n      fixtureName: \"svelte\",\n      localPackages: [\"@html-eslint/eslint-plugin-svelte\"],\n      externalPackages: [\n        [\"eslint-plugin-svelte\", \"3.15.0\"],\n        [\"svelte\", \"5\"],\n      ],\n      invalidFiles: [\"svelte/invalid.svelte\"],\n      validFiles: [\"svelte/valid.svelte\"],\n    });\n  });\n\n  describe(\"angular\", () => {\n    createESLintConfigTests({\n      eslintVersion: \"9.27.0\",\n      fixtureName: \"angular-template\",\n      log: true,\n      localPackages: [\"@html-eslint/eslint-plugin-angular-template\"],\n      externalPackages: [[\"@angular-eslint/template-parser\", \"^21.2.0\"]],\n      invalidFiles: [\"templates/invalid.html\"],\n      validFiles: [\"templates/valid.html\"],\n    });\n  });\n});\n"
  },
  {
    "path": "packages/parser/README.md",
    "content": "# `@html-eslint/parser`\n\nA parser for HTML-ESLint.\nIt makes AST generated by [ES-HTML-parser](https://github.com/yeonjuan/es-html-parser) compatible with ESLint.\n\n## Install\n\n```bash\n$ yarn add -D @html-eslint/parser\n$ npm install -D @html-eslint/parser\n```\n\n## Usage\n\nSet the `parser` property in your ESLint configuration file.\n\n```json\n{\n  \"parser\": \"@html-eslint/parser\"\n}\n```\n\n## License\n\nMIT\n"
  },
  {
    "path": "packages/parser/lib/css-visitor-keys.js",
    "content": "const cssVisitorKeys = {\n  CssAnPlusB: [],\n  CssAtrule: [\"prelude\", \"block\"],\n  CssAtrulePrelude: [\"children\"],\n  CssAttributeSelector: [\"name\", \"value\"],\n  CssBlock: [\"children\"],\n  CssBrackets: [\"children\"],\n  CssCDC: [],\n  CssCDO: [],\n  CssClassSelector: [],\n  CssCombinator: [],\n  CssCondition: [\"children\"],\n  CssDeclaration: [\"value\"],\n  CssDeclarationList: [\"children\"],\n  CssDimension: [],\n  CssFeature: [\"value\"],\n  CssFeatureFunction: [\"value\"],\n  CssFeatureRange: [\"left\", \"middle\", \"right\"],\n  CssFunction: [\"children\"],\n  CssGeneralEnclosed: [\"children\"],\n  CssHash: [],\n  CssIdSelector: [],\n  CssIdentifier: [],\n  CssLayer: [],\n  CssLayerList: [\"children\"],\n  CssMediaQuery: [\"condition\"],\n  CssMediaQueryList: [\"children\"],\n  CssNestingSelector: [],\n  CssNth: [\"nth\", \"selector\"],\n  CssNumber: [],\n  CssOperator: [],\n  CssParentheses: [\"children\"],\n  CssPercentage: [],\n  CssPseudoClassSelector: [\"children\"],\n  CssPseudoElementSelector: [\"children\"],\n  CssRatio: [\"left\", \"right\"],\n  CssRaw: [],\n  CssRule: [\"prelude\", \"block\"],\n  CssScope: [\"root\", \"limit\"],\n  CssSelector: [\"children\"],\n  CssSelectorList: [\"children\"],\n  CssString: [],\n  CssStyleSheet: [\"children\"],\n  CssSupportsDeclaration: [\"declaration\"],\n  CssTypeSelector: [],\n  CssUnicodeRange: [],\n  CssUrl: [],\n  CssValue: [\"children\"],\n  CssWhiteSpace: [],\n};\nmodule.exports = {\n  cssVisitorKeys,\n};\n"
  },
  {
    "path": "packages/parser/lib/exports.ts",
    "content": "export * from \"./index\";\nexport type { ParserOptions, HTMLProgram, HTMLComment } from \"./types\";\n"
  },
  {
    "path": "packages/parser/lib/frontmatter.js",
    "content": "/**\n * @typedef {Object} FrontmatterResult\n * @property {number} FrontmatterResult.index\n * @property {number} FrontmatterResult.line\n * @property {string} FrontmatterResult.html\n */\n\n/**\n * @param {string} text\n * @returns {boolean}\n */\nfunction startsWithFrontmatter(text) {\n  return /^[\\n|\\r\\n]*---[\\n|\\r\\n]/.test(text);\n}\n\n/**\n * @param {string} text\n * @returns {number | null}\n */\nfunction indexOfEndFrontmatter(text) {\n  const rest = text.slice(3);\n  const endExpExec = /([\\n|\\r\\n]---\\s*[\\n|\\r\\n]?)/.exec(rest);\n\n  if (!endExpExec) {\n    return null;\n  }\n  if (/([\\n|\\r\\n]---[\\S]+)/.exec(rest)) {\n    return null;\n  }\n\n  const end = endExpExec.index + endExpExec[0].length;\n  return end + 3;\n}\n\n/**\n * @param {string} text\n * @returns {number}\n */\nfunction countLines(text) {\n  return text.split(\"\\n\").length;\n}\n\n/**\n * @param {string} text\n * @returns {FrontmatterResult | null}\n */\nfunction parseFrontmatterContent(text) {\n  if (!startsWithFrontmatter(text)) {\n    return null;\n  }\n  const end = indexOfEndFrontmatter(text);\n\n  if (!end) {\n    return null;\n  }\n  const line = countLines(text.slice(0, end));\n\n  return {\n    index: end,\n    line: line,\n    html: text.slice(end),\n  };\n}\n\nmodule.exports = {\n  parseFrontmatterContent,\n};\n"
  },
  {
    "path": "packages/parser/lib/index.js",
    "content": "const { parseForESLint } = require(\"./parser\");\nconst meta = require(\"./meta\");\nconst { NODE_TYPES } = require(\"./node-types\");\nconst TEMPLATE_ENGINE_SYNTAX = require(\"./template-engine-syntax-preset\");\nconst { visitorKeys } = require(\"./visitor-keys\");\n\nmodule.exports = {\n  TEMPLATE_ENGINE_SYNTAX,\n  parseForESLint,\n  NODE_TYPES,\n  meta,\n  visitorKeys,\n};\n"
  },
  {
    "path": "packages/parser/lib/meta.js",
    "content": "const { name, version } = require(\"../package.json\");\nmodule.exports = { name, version };\n"
  },
  {
    "path": "packages/parser/lib/node-types.js",
    "content": "const { NodeTypes } = require(\"es-html-parser\");\n\nconst NODE_TYPES = NodeTypes;\n\nmodule.exports = {\n  NODE_TYPES,\n};\n"
  },
  {
    "path": "packages/parser/lib/options.js",
    "content": "/**\n * @import {TemplateSyntax} from \"@html-eslint/template-syntax-parser\"\n * @import ESHtmlParser from \"es-html-parser\"\n * @import {ParserOptions} from \"./types\"\n */\n\nconst templateSyntaxParser = require(\"@html-eslint/template-syntax-parser\");\nconst { parseFrontmatterContent } = require(\"./frontmatter\");\n/**\n * @param {string} code\n * @param {ParserOptions | undefined} parserOptions\n * @returns {{ options: Parameters<ESHtmlParser[\"parse\"]>[1]; html: string }}\n */\nfunction getOptions(code, parserOptions) {\n  let html = code;\n  if (!parserOptions) {\n    return {\n      options: undefined,\n      html,\n    };\n  }\n\n  /** @type {any} */\n  let tokenAdapter = undefined;\n  if (parserOptions.frontmatter) {\n    const result = parseFrontmatterContent(code);\n    if (result) {\n      html = result.html;\n      const lineOffset = result.line - 1;\n      tokenAdapter = {\n        /** @param {any} token */\n        finalizeLocation(token) {\n          const startLine = token.loc.start.line + lineOffset;\n          const endLine = token.loc.end.line + lineOffset;\n          return {\n            start: {\n              line: startLine,\n              column: token.loc.start.column,\n            },\n            end: {\n              line: endLine,\n              column: token.loc.end.column,\n            },\n          };\n        },\n        /** @param {any} token */\n        finalizeRange(token) {\n          return [token.range[0] + result.index, token.range[1] + result.index];\n        },\n      };\n    }\n  }\n\n  /** @type {TemplateSyntax[] | undefined} */\n  let templateInfos = undefined;\n  if (parserOptions.templateEngineSyntax) {\n    templateInfos = templateSyntaxParser.parse(html, {\n      syntax: parserOptions.templateEngineSyntax,\n    }).syntax;\n  }\n\n  /** @type {string[] | undefined} */\n  let rawContentTags;\n\n  if (parserOptions.rawContentTags) {\n    rawContentTags = parserOptions.rawContentTags;\n  }\n\n  if (templateInfos || tokenAdapter || rawContentTags) {\n    return {\n      options: {\n        templateInfos,\n        tokenAdapter,\n        rawContentTags,\n      },\n      html,\n    };\n  }\n  return {\n    options: undefined,\n    html,\n  };\n}\n\nmodule.exports = {\n  getOptions,\n};\n"
  },
  {
    "path": "packages/parser/lib/parser.js",
    "content": "/**\n * @import {Linter} from \"eslint\"\n * @import {\n *   HTMLProgram,\n *   ParserOptions\n * } from \"./types\"\n */\nconst { parse, TokenTypes } = require(\"es-html-parser\");\nconst { visitorKeys } = require(\"./visitor-keys\");\nconst { traverse, traverseCss } = require(\"./traverse\");\nconst { NODE_TYPES } = require(\"./node-types\");\nconst { getOptions } = require(\"./options\");\nconst { parse: parseCSS, toPlainObject } = require(\"css-tree\");\n\n/**\n * @param {string} code\n * @param {ParserOptions | undefined} parserOptions\n * @returns {Linter.ESLintParseResult}\n */\nmodule.exports.parseForESLint = function parseForESLint(code, parserOptions) {\n  const { options, html } = getOptions(code, parserOptions);\n  const { ast, tokens } = parse(html, options);\n\n  /** @type {HTMLProgram} */\n  const programNode = {\n    type: \"Program\",\n    // @ts-ignore\n    body: [ast],\n    loc: ast.loc,\n    range: ast.range,\n    // @ts-ignore\n    tokens: tokens.filter(\n      (token) =>\n        token.type !== TokenTypes.CommentContent &&\n        token.type !== TokenTypes.CommentOpen &&\n        token.type !== TokenTypes.CommentClose\n    ),\n    comments: [],\n  };\n\n  traverse(programNode, (node) => {\n    if (node.type === NODE_TYPES.CommentContent) {\n      programNode.comments.push({\n        type: node.type,\n        range: node.range,\n        loc: node.loc,\n        value: node.value,\n      });\n    }\n    if (node.type === NODE_TYPES.StyleTagContent) {\n      const cssNode = toPlainObject(\n        parseCSS(node.value, {\n          context: \"stylesheet\",\n          offset: node.range[0],\n          positions: true,\n          line: node.loc.start.line,\n          // css-tree uses 1-base column.\n          column: node.loc.start.column + 1,\n        })\n      );\n      traverseCss(cssNode, (node) => {\n        node.type = `Css${node.type}`;\n        if (node.loc) {\n          node.range = [node.loc.start.offset, node.loc.end.offset];\n          node.loc.start.column -= 1;\n          node.loc.end.column -= 1;\n        }\n      });\n      // @ts-ignore\n      node.stylesheet = cssNode;\n    }\n  });\n\n  return {\n    // @ts-ignore\n    ast: programNode,\n    visitorKeys,\n    scopeManager: undefined,\n  };\n};\n"
  },
  {
    "path": "packages/parser/lib/template-engine-syntax-preset.js",
    "content": "/** @import {SyntaxConfig} from \"@html-eslint/template-syntax-parser\" */\n\n/** @type {SyntaxConfig} */\nconst HANDLEBAR = {\n  \"{{\": \"}}\",\n};\n\n/** @type {SyntaxConfig} */\nconst TWIG = [\n  { open: \"{{\", close: \"}}\" },\n  { open: \"{%\", close: \"%}\" },\n  { open: \"{#\", close: \"#}\", isComment: true },\n];\n\n/** @type {SyntaxConfig} */\nconst ERB = {\n  \"<%\": \"%>\",\n};\n\nmodule.exports = {\n  HANDLEBAR,\n  TWIG,\n  ERB,\n};\n"
  },
  {
    "path": "packages/parser/lib/traverse.js",
    "content": "/**\n * @import {CssNodePlain} from \"css-tree\"\n * @import {AnyNode} from \"es-html-parser\"\n * @import {HTMLProgram} from \"./types\"\n */\nconst { visitorKeys } = require(\"./visitor-keys\");\nconst { cssVisitorKeys } = require(\"./css-visitor-keys\");\n\n/**\n * @param {AnyNode | HTMLProgram} node\n * @param {(arg: AnyNode | HTMLProgram) => void} visitor\n * @returns {void}\n */\nfunction traverse(node, visitor) {\n  if (!node || !(\"type\" in node)) {\n    return;\n  }\n  visitor(node);\n  const { type } = node;\n  // @ts-ignore\n  const keys = visitorKeys[type];\n\n  if (!keys || keys.length <= 0) {\n    return;\n  }\n\n  // @ts-ignore\n  keys.forEach((key) => {\n    // @ts-ignore\n    const value = node[key];\n    if (value) {\n      if (Array.isArray(value)) {\n        value.forEach((n) => traverse(n, visitor));\n      } else {\n        traverse(value, visitor);\n      }\n    }\n  });\n}\n\n/**\n * @param {CssNodePlain} node\n * @param {(node: any) => void} visitor\n */\nfunction traverseCss(node, visitor) {\n  if (!node) {\n    return;\n  }\n  /** @type {keyof typeof cssVisitorKeys} */\n  // @ts-ignore\n  const type = `Css${node.type}`;\n  const keys = cssVisitorKeys[type];\n  visitor(node);\n  if (!keys || keys.length <= 0) {\n    return;\n  }\n\n  keys.forEach((key) => {\n    // @ts-ignore\n    const value = node[key];\n    if (value) {\n      if (Array.isArray(value)) {\n        value.forEach((n) => traverseCss(n, visitor));\n      } else {\n        traverseCss(value, visitor);\n      }\n    }\n  });\n}\n\nmodule.exports = {\n  traverse,\n  traverseCss,\n};\n"
  },
  {
    "path": "packages/parser/lib/types.ts",
    "content": "import type { SyntaxConfig } from \"@html-eslint/template-syntax-parser\";\nimport type {\n  AnyHTMLNode,\n  AnyToken,\n  CommentContent,\n  Range,\n  SourceLocation,\n} from \"@html-eslint/types\";\n\nexport type ParserOptions = {\n  templateEngineSyntax?: SyntaxConfig;\n  frontmatter?: boolean;\n  rawContentTags?: string[];\n};\n\nexport type HTMLComment = Omit<CommentContent, \"parts\" | \"parent\">;\n\nexport type HTMLProgram = {\n  type: \"Program\";\n  body: AnyHTMLNode[];\n  loc: SourceLocation;\n  range: Range;\n  tokens: AnyToken[];\n  comments: HTMLComment[];\n};\n"
  },
  {
    "path": "packages/parser/lib/visitor-keys.js",
    "content": "const { NODE_TYPES } = require(\"./node-types\");\nconst { cssVisitorKeys } = require(\"./css-visitor-keys\");\n\nconst visitorKeys = {\n  Program: [\"body\"],\n  [NODE_TYPES.Document]: [\"children\"],\n  [NODE_TYPES.Attribute]: [\"key\", \"startWrapper\", \"endWrapper\", \"value\"],\n  [NODE_TYPES.AttributeKey]: [],\n  [NODE_TYPES.AttributeValue]: [],\n  [NODE_TYPES.AttributeValueWrapperEnd]: [],\n  [NODE_TYPES.AttributeValueWrapperStart]: [],\n  [NODE_TYPES.CloseScriptTag]: [],\n  [NODE_TYPES.CloseStyleTag]: [],\n  [NODE_TYPES.CloseTag]: [],\n  [NODE_TYPES.Comment]: [\"open\", \"close\", \"value\"],\n  [NODE_TYPES.CommentContent]: [],\n  [NODE_TYPES.CommentOpen]: [],\n  [NODE_TYPES.CommentClose]: [],\n  [NODE_TYPES.Doctype]: [\"open\", \"close\", \"attributes\"],\n  [NODE_TYPES.DoctypeAttribute]: [\"startWrapper\", \"value\", \"endWrapper\"],\n  [NODE_TYPES.DoctypeAttributeValue]: [],\n  [NODE_TYPES.DoctypeAttributeWrapperEnd]: [],\n  [NODE_TYPES.DoctypeAttributeWrapperStart]: [],\n  [NODE_TYPES.DoctypeOpen]: [],\n  [NODE_TYPES.DoctypeClose]: [],\n  [NODE_TYPES.OpenScriptTagEnd]: [],\n  [NODE_TYPES.OpenScriptTagStart]: [],\n  [NODE_TYPES.OpenStyleTagEnd]: [],\n  [NODE_TYPES.OpenStyleTagStart]: [],\n  [NODE_TYPES.OpenTagEnd]: [],\n  [NODE_TYPES.OpenTagStart]: [],\n  [NODE_TYPES.ScriptTag]: [\n    \"attributes\",\n    \"openStart\",\n    \"openEnd\",\n    \"close\",\n    \"value\",\n  ],\n  [NODE_TYPES.ScriptTagContent]: [],\n  [NODE_TYPES.StyleTag]: [\n    \"attributes\",\n    \"openStart\",\n    \"openEnd\",\n    \"close\",\n    \"value\",\n  ],\n  [NODE_TYPES.StyleTagContent]: [\"stylesheet\"],\n  [NODE_TYPES.Tag]: [\"openStart\", \"openEnd\", \"close\", \"children\", \"attributes\"],\n  [NODE_TYPES.Text]: [],\n  [NODE_TYPES.RawContent]: [],\n  ...cssVisitorKeys,\n};\n\nmodule.exports = {\n  visitorKeys,\n};\n"
  },
  {
    "path": "packages/parser/package.json",
    "content": "{\n  \"name\": \"@html-eslint/parser\",\n  \"version\": \"0.60.0\",\n  \"description\": \"Parser for @html-eslint/eslint-plugin\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"type\": \"commonjs\",\n  \"types\": \"types/exports.d.ts\",\n  \"files\": [\n    \"lib\",\n    \"types\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --coverage --updateSnapshot\",\n    \"ts\": \"tsc --noEmit\",\n    \"build\": \"rimraf types && tsc --project tsconfig.build.json\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"html\",\n    \"eslint\",\n    \"parser\",\n    \"ast\",\n    \"lint\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/template-syntax-parser\": \"^0.60.0\",\n    \"@html-eslint/types\": \"^0.60.0\",\n    \"css-tree\": \"^3.1.0\",\n    \"es-html-parser\": \"0.3.1\"\n  },\n  \"devDependencies\": {\n    \"@types/css-tree\": \"^2.3.11\"\n  }\n}\n"
  },
  {
    "path": "packages/parser/tests/frontmatter.test.js",
    "content": "const { parseFrontmatterContent } = require(\"../lib/frontmatter\");\n\ndescribe(\"frontmatter\", () => {\n  describe(\"frontmatter O\", () => {\n    it(\"should parse frontmatter with content\", () => {\n      const result = parseFrontmatterContent(`---\nname: value\n---\ncontent`);\n      expect(result.index).toBe(20);\n      expect(result.line).toBe(4);\n      expect(result.html).toBe(\"content\");\n    });\n\n    it(\"should parse frontmatter with content (CRLF)\", () => {\n      const result = parseFrontmatterContent(\n        \"---\\r\\nname: value\\r\\n---\\r\\ncontent\"\n      );\n      expect(result.index).toBe(23);\n      expect(result.line).toBe(4);\n      expect(result.html).toBe(\"content\");\n    });\n\n    it(\"should parse frontmatter with trailing spaces\", () => {\n      const result = parseFrontmatterContent(`---\nname: value\n---   \ncontent`);\n      expect(result.index).toBe(23);\n      expect(result.line).toBe(4);\n      expect(result.html).toBe(\"content\");\n    });\n\n    it(\"should parse frontmatter without content\", () => {\n      const result = parseFrontmatterContent(`---\nname: value\n---`);\n      expect(result.index).toBe(19);\n      expect(result.line).toBe(3);\n      expect(result.html).toBe(\"\");\n    });\n\n    it(\"should parse frontmatter with newline only\", () => {\n      const result = parseFrontmatterContent(`---\nname: value\n---\n`);\n      expect(result.index).toBe(20);\n      expect(result.line).toBe(4);\n      expect(result.html).toBe(\"\");\n    });\n\n    it(\"should parse frontmatter after newline\", () => {\n      const result = parseFrontmatterContent(`\n---\nname: value\n---\n`);\n      expect(result.index).toBe(21);\n      expect(result.line).toBe(5);\n      expect(result.html).toBe(\"\");\n    });\n\n    it(\"should parse frontmatter after newlines\", () => {\n      const result = parseFrontmatterContent(`\n\n---\nname: value\n---\n`);\n      expect(result.index).toBe(22);\n      expect(result.line).toBe(6);\n      expect(result.html).toBe(\"\");\n    });\n  });\n\n  describe(\"frontmatter X\", () => {\n    test.each([\n      [\n        `---\n  name: value ---`,\n      ],\n      [\n        `---\n  name: value\n---trailing`,\n      ],\n      [``],\n      [`<html></html>`],\n      [\n        `content\n---\n\n---`,\n      ],\n    ])(\"should return null\", (code) => {\n      expect(parseFrontmatterContent(code)).toBe(null);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/parser/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\"\n  }\n}\n"
  },
  {
    "path": "packages/parser/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"package.json\", \"lib\"]\n}\n"
  },
  {
    "path": "packages/template-parser/README.md",
    "content": "# @html-eslint/template-parser\n\nA parser that parses the html written inside a template literal.\n\n## Usage\n\n```js\nconst { parse } = require(\"@html-eslint/template-parser\");\nconst espree = require(\"espree\");\nconst { SourceCode } = require(\"eslint\");\n\nconst code = `html\\`<div\n  id=\"\\${ id }\">\n    \\${text}\n  </div>\\`;`;\n\nconst ast = espree.parse(code, {\n  range: true,\n  loc: true,\n  ecmaVersion: \"latest\",\n});\nconst sourceCode = new SourceCode({\n  text: code,\n  ast: {\n    ...ast,\n    tokens: [],\n    comments: ast.comments ?? [],\n    loc: ast.loc,\n    range: ast.range,\n  },\n});\n\nconst exp = ast.body[0].expression.quasi;\nparse(exp, sourcecode, {\n  Tag(node) {\n    // ...\n  },\n  AttributeValue(node) {\n    // ...\n  },\n});\n```\n\n## License\n\nDistributed under the MIT License.\n"
  },
  {
    "path": "packages/template-parser/eslint.config.js",
    "content": "const js = require(\"@eslint/js\");\nconst globals = require(\"globals\");\n\nmodule.exports = [\n  js.configs.recommended,\n  {\n    languageOptions: {\n      ecmaVersion: 2020,\n      sourceType: \"commonjs\",\n      globals: {\n        ...globals.jest,\n        ...globals.node,\n      },\n    },\n\n    rules: {\n      \"no-unused-vars\": \"warn\",\n      \"no-undef\": \"warn\",\n    },\n  },\n];\n"
  },
  {
    "path": "packages/template-parser/lib/exports.ts",
    "content": "export * from \"./index\";\nexport type { TemplateHTMLVisitor } from \"./types\";\n"
  },
  {
    "path": "packages/template-parser/lib/index.js",
    "content": "const { parse } = require(\"./template-parser\");\nconst { traverse } = require(\"./traverser\");\nmodule.exports = {\n  parse,\n  traverse,\n};\n"
  },
  {
    "path": "packages/template-parser/lib/template-parser.js",
    "content": "/**\n * @import {\n *   Range,\n *   TemplateLiteral\n * } from \"@html-eslint/types\"\n * @import {SourceCode} from \"eslint\"\n * @import {TemplateHTMLVisitor} from \"./types\"\n */\n\nconst esHtmlParser = require(\"es-html-parser\");\nconst { traverse } = require(\"./traverser\");\n\n/**\n * @param {TemplateLiteral} node\n * @param {SourceCode} sourceCode\n * @param {TemplateHTMLVisitor} [visitor]\n */\nfunction parse(node, sourceCode, visitor) {\n  /** @type {string[]} */\n  const htmlParts = [];\n  const quasis = node.quasis;\n  const rangeOffset = node.range[0] + 1;\n  const lineOffset = node.loc.start.line - 1;\n  const expressions = node.expressions;\n  /** @type {{ open: Range; close: Range }[]} */\n  const templateInfos = [];\n  quasis.forEach((element, index) => {\n    htmlParts.push(element.value.raw);\n    if (expressions[index]) {\n      const nextQuasisElement = quasis[index + 1];\n      const str = sourceCode.text.slice(\n        element.range[1] - \"${\".length,\n        nextQuasisElement.range[0] + \"}\".length\n      );\n      htmlParts.push(str);\n      const start = element.range[1] - \"${\".length - rangeOffset;\n      const end = start + str.length;\n      templateInfos.push({\n        open: [start, start + \"${\".length],\n        close: [end - \"}\".length, end],\n      });\n    }\n  });\n  const html = htmlParts.join(\"\");\n  const { ast, tokens } = esHtmlParser.parse(html, {\n    templateInfos: templateInfos,\n    tokenAdapter: {\n      finalizeLocation(token) {\n        const startLine = token.loc.start.line + lineOffset;\n        const columnOffset =\n          startLine === node.loc.start.line ? node.loc.start.column + 1 : 0;\n\n        return {\n          start: {\n            line: startLine,\n            column: token.loc.start.column + columnOffset,\n          },\n          end: {\n            line: token.loc.end.line + lineOffset,\n            column: token.loc.end.column + columnOffset,\n          },\n        };\n      },\n      finalizeRange(token) {\n        return [token.range[0] + rangeOffset, token.range[1] + rangeOffset];\n      },\n    },\n  });\n  if (visitor) {\n    traverse(ast, visitor, null);\n  }\n  return { ast, html, tokens };\n}\n\nmodule.exports = {\n  parse,\n};\n"
  },
  {
    "path": "packages/template-parser/lib/traverser.js",
    "content": "/**\n * @import {AnyNode} from \"es-html-parser\"\n * @import {\n *   TemplateHTMLVisitor,\n *   TemplateHTMLVisitorKeys\n * } from \"./types\"\n */\n\nconst { NodeTypes } = require(\"es-html-parser\");\n\n/** @type {TemplateHTMLVisitorKeys} */\nconst visitorKeys = {\n  [NodeTypes.Document]: [\"children\"],\n  [NodeTypes.Attribute]: [\"key\", \"startWrapper\", \"endWrapper\", \"value\"],\n  [NodeTypes.AttributeKey]: [],\n  [NodeTypes.AttributeValue]: [],\n  [NodeTypes.AttributeValueWrapperEnd]: [],\n  [NodeTypes.AttributeValueWrapperStart]: [],\n  [NodeTypes.CloseScriptTag]: [],\n  [NodeTypes.CloseStyleTag]: [],\n  [NodeTypes.CloseTag]: [],\n  [NodeTypes.Comment]: [\"open\", \"close\", \"value\"],\n  [NodeTypes.CommentContent]: [],\n  [NodeTypes.CommentOpen]: [],\n  [NodeTypes.CommentClose]: [],\n  [NodeTypes.Doctype]: [\"open\", \"close\", \"attributes\"],\n  [NodeTypes.DoctypeAttribute]: [\"startWrapper\", \"value\", \"endWrapper\"],\n  [NodeTypes.DoctypeAttributeValue]: [],\n  [NodeTypes.DoctypeAttributeWrapperEnd]: [],\n  [NodeTypes.DoctypeAttributeWrapperStart]: [],\n  [NodeTypes.DoctypeOpen]: [],\n  [NodeTypes.DoctypeClose]: [],\n  [NodeTypes.OpenScriptTagEnd]: [],\n  [NodeTypes.OpenScriptTagStart]: [],\n  [NodeTypes.OpenStyleTagEnd]: [],\n  [NodeTypes.OpenStyleTagStart]: [],\n  [NodeTypes.OpenTagEnd]: [],\n  [NodeTypes.OpenTagStart]: [],\n  [NodeTypes.ScriptTag]: [\n    \"attributes\",\n    \"openStart\",\n    \"openEnd\",\n    \"close\",\n    \"value\",\n  ],\n  [NodeTypes.ScriptTagContent]: [],\n  [NodeTypes.StyleTag]: [\n    \"attributes\",\n    \"openStart\",\n    \"openEnd\",\n    \"close\",\n    \"value\",\n  ],\n  [NodeTypes.StyleTagContent]: [],\n  [NodeTypes.Tag]: [\"openStart\", \"openEnd\", \"close\", \"children\", \"attributes\"],\n  [NodeTypes.Text]: [],\n  [NodeTypes.Template]: [],\n  [NodeTypes.OpenTemplate]: [],\n  [NodeTypes.CloseTemplate]: [],\n  [NodeTypes.Part]: [],\n  [NodeTypes.RawContent]: [],\n};\n\n/**\n * @param {AnyNode} node\n * @param {TemplateHTMLVisitor} visitors\n * @param {AnyNode | null} [parent]\n */\nfunction traverse(node, visitors, parent) {\n  parent = parent || null;\n  // @ts-ignore\n  const enterVisitor = visitors[node.type];\n  // @ts-ignore\n  node.parent = parent;\n  enterVisitor && enterVisitor(node);\n\n  const nextKeys = visitorKeys[node.type];\n\n  nextKeys.forEach((key) => {\n    // @ts-ignore\n    const next = node[key];\n    if (Array.isArray(next)) {\n      next.forEach((n) => traverse(n, visitors, node));\n    } else if (next) {\n      traverse(next, visitors, node);\n    }\n  });\n  // @ts-ignore\n  const exitVisitor = visitors[`${node.type}:exit`];\n  exitVisitor && exitVisitor(node);\n}\n\nmodule.exports = {\n  traverse,\n};\n"
  },
  {
    "path": "packages/template-parser/lib/types.ts",
    "content": "import type {\n  Document,\n  Attribute,\n  AttributeKey,\n  AttributeValue,\n  AttributeValueWrapperEnd,\n  AttributeValueWrapperStart,\n  CloseScriptTag,\n  CloseStyleTag,\n  CloseTag,\n  CommentContent,\n  Comment,\n  CommentOpen,\n  CommentClose,\n  Doctype,\n  DoctypeAttribute,\n  DoctypeAttributeValue,\n  DoctypeAttributeWrapperEnd,\n  DoctypeAttributeWrapperStart,\n  DoctypeOpen,\n  DoctypeClose,\n  OpenScriptTagEnd,\n  OpenScriptTagStart,\n  OpenStyleTagEnd,\n  OpenStyleTagStart,\n  OpenTagEnd,\n  OpenTagStart,\n  ScriptTag,\n  ScriptTagContent,\n  StyleTag,\n  StyleTagContent,\n  Tag,\n  Text,\n} from \"@html-eslint/types\";\nimport { NodeTypes } from \"es-html-parser\";\n\ntype PostFix<T, S extends string> = {\n  [K in keyof T as `${K & string}${S}`]: T[K];\n};\n\nexport type TemplateHTMLVisitor = BaseVisiter & PostFix<BaseVisiter, \":exit\">;\nexport type TemplateHTMLVisitorKeys = {\n  [key in NodeTypes]: string[];\n};\n\ntype BaseVisiter = Partial<{\n  [NodeTypes.Document]: (node: Document) => void;\n  [NodeTypes.Attribute]: (node: Attribute) => void;\n  [NodeTypes.AttributeKey]: (node: AttributeKey) => void;\n  [NodeTypes.AttributeValue]: (node: AttributeValue) => void;\n  [NodeTypes.AttributeValueWrapperEnd]: (\n    node: AttributeValueWrapperEnd\n  ) => void;\n  [NodeTypes.AttributeValueWrapperStart]: (\n    node: AttributeValueWrapperStart\n  ) => void;\n  [NodeTypes.CloseScriptTag]: (node: CloseScriptTag) => void;\n  [NodeTypes.CloseStyleTag]: (node: CloseStyleTag) => void;\n  [NodeTypes.CloseTag]: (node: CloseTag) => void;\n  [NodeTypes.Comment]: (node: Comment) => void;\n  [NodeTypes.CommentContent]: (node: CommentContent) => void;\n  [NodeTypes.CommentOpen]: (node: CommentOpen) => void;\n  [NodeTypes.CommentClose]: (node: CommentClose) => void;\n  [NodeTypes.Doctype]: (node: Doctype) => void;\n  [NodeTypes.DoctypeAttribute]: (node: DoctypeAttribute) => void;\n  [NodeTypes.DoctypeAttributeValue]: (node: DoctypeAttributeValue) => void;\n  [NodeTypes.DoctypeAttributeWrapperEnd]: (\n    node: DoctypeAttributeWrapperEnd\n  ) => void;\n  [NodeTypes.DoctypeAttributeWrapperStart]: (\n    node: DoctypeAttributeWrapperStart\n  ) => void;\n  [NodeTypes.DoctypeOpen]: (node: DoctypeOpen) => void;\n  [NodeTypes.DoctypeClose]: (node: DoctypeClose) => void;\n  [NodeTypes.OpenScriptTagEnd]: (node: OpenScriptTagEnd) => void;\n  [NodeTypes.OpenScriptTagStart]: (node: OpenScriptTagStart) => void;\n  [NodeTypes.OpenStyleTagEnd]: (node: OpenStyleTagEnd) => void;\n  [NodeTypes.OpenStyleTagStart]: (node: OpenStyleTagStart) => void;\n  [NodeTypes.OpenTagEnd]: (node: OpenTagEnd) => void;\n  [NodeTypes.OpenTagStart]: (node: OpenTagStart) => void;\n  [NodeTypes.ScriptTag]: (node: ScriptTag) => void;\n  [NodeTypes.ScriptTagContent]: (node: ScriptTagContent) => void;\n  [NodeTypes.StyleTag]: (node: StyleTag) => void;\n  [NodeTypes.StyleTagContent]: (node: StyleTagContent) => void;\n  [NodeTypes.Tag]: (node: Tag) => void;\n  [NodeTypes.Text]: (node: Text) => void;\n}>;\n"
  },
  {
    "path": "packages/template-parser/package.json",
    "content": "{\n  \"name\": \"@html-eslint/template-parser\",\n  \"version\": \"0.60.0\",\n  \"description\": \"HTML parser for template literals \",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"types/exports.d.ts\",\n  \"files\": [\n    \"lib\",\n    \"types\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"test\": \"jest --coverage\",\n    \"build\": \"rimraf types && tsc --project tsconfig.build.json\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"html\",\n    \"eslint\",\n    \"parser\",\n    \"template-literal\",\n    \"lit\",\n    \"ast\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/types\": \"^0.60.0\",\n    \"es-html-parser\": \"0.3.1\"\n  },\n  \"devDependencies\": {\n    \"@types/espree\": \"^10.1.0\",\n    \"@types/estree\": \"^0.0.47\",\n    \"eslint\": \"^9.39.1\",\n    \"espree\": \"^10.3.0\",\n    \"globals\": \"^15.12.0\"\n  }\n}\n"
  },
  {
    "path": "packages/template-parser/tests/template-parser.test.js",
    "content": "const { NodeTypes } = require(\"es-html-parser\");\nconst { SourceCode } = require(\"eslint\");\nconst templateParser = require(\"../lib/template-parser\");\nconst espree = require(\"espree\");\n\n/** @param {string} code */\nconst parseCode = (code) =>\n  espree.parse(code, {\n    range: true,\n    loc: true,\n    ecmaVersion: \"latest\",\n  });\n\n/**\n * @param {string} code\n * @param {any} ast\n * @returns\n */\nconst createSourceCode = (code, ast) =>\n  new SourceCode({\n    text: code,\n    ast: {\n      ...ast,\n      tokens: [],\n      comments: ast.comments ?? [],\n      loc: ast.loc,\n      range: ast.range,\n    },\n  });\n\n/** @type {any} */\nconst visitors = {\n  Tag: jest.fn(),\n  \"Tag:exit\": jest.fn(),\n  OpenTagStart: jest.fn(),\n  CloseTag: jest.fn(),\n  AttributeValue: jest.fn(),\n  Text: jest.fn(),\n};\n\ndescribe(\"parseTemplate\", () => {\n  afterEach(() => {\n    jest.resetAllMocks();\n  });\n  test(\"simple\", () => {\n    const code = \"`<div></div>`;\";\n    const ast = parseCode(code);\n\n    // @ts-ignore\n    const exp = ast.body[0].expression;\n    const sourcecode = createSourceCode(code, ast);\n    expect(templateParser.parse(exp, sourcecode, visitors));\n    expect(visitors.OpenTagStart).toHaveBeenCalledWith(\n      expect.objectContaining({\n        type: NodeTypes.OpenTagStart,\n        range: [1, 5],\n        loc: {\n          start: { line: 1, column: 1 },\n          end: { line: 1, column: 5 },\n        },\n      })\n    );\n    expect(visitors.Tag).toHaveBeenCalledWith(\n      expect.objectContaining({\n        type: NodeTypes.Tag,\n        range: [1, 12],\n        loc: {\n          start: { line: 1, column: 1 },\n          end: { line: 1, column: 12 },\n        },\n      })\n    );\n    expect(visitors[\"Tag:exit\"]).toHaveBeenCalledWith(\n      expect.objectContaining({\n        type: NodeTypes.Tag,\n        range: [1, 12],\n        loc: {\n          start: { line: 1, column: 1 },\n          end: { line: 1, column: 12 },\n        },\n      })\n    );\n  });\n\n  test(\"multiline\", () => {\n    const code = `\\`<div>\n  </div>\\`;`;\n    const ast = parseCode(code);\n\n    // @ts-ignore\n    const exp = ast.body[0].expression;\n    const sourcecode = createSourceCode(code, ast);\n    templateParser.parse(exp, sourcecode, visitors);\n    expect(visitors.CloseTag).toHaveBeenCalledWith(\n      expect.objectContaining({\n        type: NodeTypes.CloseTag,\n        range: [9, 15],\n        loc: {\n          start: { line: 2, column: 2 },\n          end: { line: 2, column: 8 },\n        },\n      })\n    );\n  });\n\n  test(\"with expression\", () => {\n    const code = `html\\`<div\n  id=\"\\${ id }\">\n    \\${text}\n  </div>\\`;`;\n    const ast = parseCode(code);\n\n    // @ts-ignore\n    const exp = ast.body[0].expression.quasi;\n    const sourcecode = createSourceCode(code, ast);\n    templateParser.parse(exp, sourcecode, visitors);\n    expect(visitors.AttributeValue).toHaveBeenCalledWith(\n      expect.objectContaining({\n        type: NodeTypes.AttributeValue,\n        value: \"${ id }\",\n      })\n    );\n    expect(visitors.Text).toHaveBeenCalledWith(\n      expect.objectContaining({\n        type: NodeTypes.Text,\n        value: `\n    \\${text}\n  `,\n      })\n    );\n  });\n});\n"
  },
  {
    "path": "packages/template-parser/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\"\n  }\n}\n"
  },
  {
    "path": "packages/template-parser/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\", \"tests\"]\n}\n"
  },
  {
    "path": "packages/template-syntax-parser/README.md",
    "content": "# @html-eslint/template-syntax-parser\n\nDistributed under the MIT License.\n"
  },
  {
    "path": "packages/template-syntax-parser/eslint.config.js",
    "content": "const js = require(\"@eslint/js\");\nconst globals = require(\"globals\");\nmodule.exports = [\n  js.configs.recommended,\n  {\n    languageOptions: {\n      ecmaVersion: 2020,\n      sourceType: \"commonjs\",\n      globals: {\n        ...globals.jest,\n        ...globals.node,\n      },\n    },\n\n    rules: {\n      \"no-unused-vars\": \"warn\",\n      \"no-undef\": \"warn\",\n    },\n  },\n];\n"
  },
  {
    "path": "packages/template-syntax-parser/lib/exports.ts",
    "content": "export * from \"./index\";\nexport type {\n  TemplateSyntaxParserConfig,\n  TemplateSyntax,\n  OpenSyntax,\n  CloseSyntax,\n  TemplateSyntaxParserResult,\n  SyntaxConfig,\n  SyntaxConfigItem,\n} from \"./types\";\n"
  },
  {
    "path": "packages/template-syntax-parser/lib/index.js",
    "content": "const { parse } = require(\"./template-syntax-parser\");\nmodule.exports = {\n  parse,\n};\n"
  },
  {
    "path": "packages/template-syntax-parser/lib/parser.js",
    "content": "/**\n * @import {Range} from \"@html-eslint/types\"\n * @import {\n *   CloseSyntax,\n *   OpenSyntax,\n *   SyntaxConfigItem,\n *   TemplateSyntax,\n *   TemplateSyntaxParserResult\n * } from \"./types\"\n */\n\nmodule.exports = class Parser {\n  /**\n   * @param {string} code\n   * @param {SyntaxConfigItem[]} syntaxPairs\n   * @param {Range[]} skipRanges\n   */\n  constructor(code, syntaxPairs, skipRanges) {\n    /** @type {string} */\n    this.code = code;\n    /** @type {SyntaxConfigItem[]} */\n    this.syntaxPairs = syntaxPairs || [];\n    /** @type {Range[]} */\n    this.skipRanges = skipRanges;\n    /** @type {OpenSyntax[]} */\n    this.syntaxStack = [];\n    /** @type {TemplateSyntax[]} */\n    this.result = [];\n  }\n\n  /**\n   * @private\n   * @param {number} index\n   * @returns {Range | undefined}\n   */\n  findSkipRange(index) {\n    return this.skipRanges.find(\n      (range) => range[0] <= index && index < range[1]\n    );\n  }\n\n  /**\n   * @param {string} syntax\n   * @param {number} position\n   * @returns {number}\n   */\n  indexOf(syntax, position) {\n    const index = this.code.indexOf(syntax, position);\n    if (index < 0) return index;\n    const skipRange = this.findSkipRange(index);\n    if (skipRange) {\n      return this.indexOf(syntax, skipRange[1]);\n    }\n    return index;\n  }\n\n  /**\n   * @param {number} position\n   * @returns {OpenSyntax | null}\n   */\n  findOpenSyntax(position) {\n    /** @type {string | null} */\n    let value = null;\n    let rangeStart = Infinity;\n    /** @type {boolean | undefined} */\n    let isComment = undefined;\n    for (let i = 0; i < this.syntaxPairs.length; i++) {\n      const syntax = this.syntaxPairs[i];\n      const open = syntax.open;\n      const openIndex = this.indexOf(open, position);\n      if (openIndex >= 0 && openIndex < rangeStart) {\n        value = open;\n        rangeStart = openIndex;\n        isComment = syntax.isComment;\n      }\n    }\n    if (!value) return null;\n    return {\n      type: \"open\",\n      value,\n      isComment,\n      range: [rangeStart, rangeStart + value.length],\n    };\n  }\n\n  /**\n   * @param {number} position\n   * @returns {CloseSyntax | null}\n   */\n  findCloseSyntax(position) {\n    /** @type {string | null} */\n    let value = null;\n    let rangeStart = Infinity;\n    /** @type {boolean | undefined} */\n    let isComment = undefined;\n    for (let i = 0; i < this.syntaxPairs.length; i++) {\n      const syntax = this.syntaxPairs[i];\n      const close = syntax.close;\n      const closeIndex = this.indexOf(close, position);\n      if (closeIndex >= 0 && closeIndex < rangeStart) {\n        value = close;\n        rangeStart = closeIndex;\n        isComment = syntax.isComment;\n      }\n    }\n    if (!value) return null;\n    return {\n      type: \"close\",\n      value,\n      isComment,\n      range: [rangeStart, rangeStart + value.length],\n    };\n  }\n\n  /** @returns {OpenSyntax[]} */\n  findAllOpenSyntax() {\n    /** @type {OpenSyntax[]} */\n    const result = [];\n    let position = 0;\n\n    while (position < this.code.length) {\n      const openSyntax = this.findOpenSyntax(position);\n      if (!openSyntax) {\n        break;\n      }\n      result.push(openSyntax);\n      position = openSyntax.range[1];\n    }\n\n    return result;\n  }\n\n  /** @returns {CloseSyntax[]} */\n  findAllCloseSyntax() {\n    /** @type {CloseSyntax[]} */\n    const result = [];\n    let position = 0;\n\n    while (position < this.code.length) {\n      const closeSyntax = this.findCloseSyntax(position);\n      if (!closeSyntax) {\n        break;\n      }\n      result.push(closeSyntax);\n      position = closeSyntax.range[1];\n    }\n\n    return result;\n  }\n\n  /** @returns {(CloseSyntax | OpenSyntax)[]} */\n  findAllSyntax() {\n    /** @type {(CloseSyntax | OpenSyntax)[]} */\n    const result = this.findAllOpenSyntax();\n    return result\n      .concat(this.findAllCloseSyntax())\n      .sort((a, b) => a.range[0] - b.range[0]);\n  }\n\n  /**\n   * @param {OpenSyntax} open\n   * @returns {string}\n   */\n  getPossibleCloseValueOf(open) {\n    const found = this.syntaxPairs.find((syntax) => syntax.open === open.value);\n    if (!found) {\n      /* istanbul ignore next */\n      throw new Error(\"Unexpected open value: \" + open);\n    }\n    return found.close;\n  }\n\n  /** @param {CloseSyntax | OpenSyntax} syntax */\n  eatSyntax(syntax) {\n    if (syntax.type === \"open\") {\n      const top = this.syntaxStack[this.syntaxStack.length - 1];\n      if (!top) {\n        this.syntaxStack.push(syntax);\n        return;\n      }\n      if (top.isComment) {\n        return;\n      }\n\n      throw new Error(\n        `Expecting \"${this.getPossibleCloseValueOf(top)}\", but found \"${\n          syntax.value\n        }\" at (${syntax.range[0]}, ${syntax.range[1]}).`\n      );\n    } else if (syntax.type === \"close\") {\n      const top = this.syntaxStack[this.syntaxStack.length - 1];\n\n      if (!top) {\n        return;\n      }\n      if (top.isComment && !syntax.isComment) {\n        return;\n      }\n      this.syntaxStack.pop();\n      if (this.getPossibleCloseValueOf(top) === syntax.value) {\n        this.result.push({\n          open: [top.range[0], top.range[0] + top.value.length],\n          close: [syntax.range[1] - syntax.value.length, syntax.range[1]],\n        });\n      }\n    }\n  }\n\n  /** @returns {TemplateSyntaxParserResult} */\n  parse() {\n    for (const syntax of this.findAllSyntax()) {\n      this.eatSyntax(syntax);\n    }\n    return {\n      syntax: this.result,\n    };\n  }\n};\n"
  },
  {
    "path": "packages/template-syntax-parser/lib/template-syntax-parser.js",
    "content": "/**\n * @import {\n *   SyntaxConfig,\n *   SyntaxConfigItem,\n *   TemplateSyntaxParserConfig\n * } from \"./types\"\n */\n\nconst Parser = require(\"./parser\");\n\n/**\n * @param {SyntaxConfig} syntax\n * @returns {SyntaxConfigItem[]}\n */\nfunction normalizeSyntaxOptions(syntax) {\n  if (Array.isArray(syntax)) {\n    return syntax;\n  }\n  return Object.entries(syntax).map(([open, close]) => ({\n    open,\n    close,\n  }));\n}\n\n/**\n * @param {TemplateSyntaxParserConfig} config\n * @returns {SyntaxConfigItem[]}\n */\nfunction getSyntaxPairs(config) {\n  const syntaxPairs = normalizeSyntaxOptions(config.syntax);\n  syntaxPairs.sort(\n    (syntaxA, syntaxB) => syntaxB.open.length - syntaxA.open.length\n  );\n  return syntaxPairs;\n}\n\n/**\n * @param {string} code\n * @param {TemplateSyntaxParserConfig} config\n */\nfunction parse(code, config) {\n  const syntaxPairs = getSyntaxPairs(config);\n  const parser = new Parser(code, syntaxPairs, config.skipRanges || []);\n  return parser.parse();\n}\n\nmodule.exports = {\n  parse,\n};\n"
  },
  {
    "path": "packages/template-syntax-parser/lib/types.ts",
    "content": "import type { Range } from \"@html-eslint/types\";\n\nexport type SyntaxConfigItem = {\n  open: string;\n  close: string;\n  isComment?: boolean;\n};\n\nexport type SyntaxConfig = Record<string, string> | SyntaxConfigItem[];\n\nexport type TemplateSyntaxParserConfig = {\n  skipRanges?: [number, number][];\n  syntax: SyntaxConfig;\n};\n\nexport type TemplateSyntax = {\n  open: Range;\n  close: Range;\n};\n\nexport type OpenSyntax = {\n  type: \"open\";\n  value: string;\n  range: Range;\n  isComment?: boolean;\n};\n\nexport type CloseSyntax = {\n  type: \"close\";\n  value: string;\n  range: Range;\n  isComment?: boolean;\n};\n\nexport type TemplateSyntaxParserResult = {\n  syntax: TemplateSyntax[];\n};\n"
  },
  {
    "path": "packages/template-syntax-parser/package.json",
    "content": "{\n  \"name\": \"@html-eslint/template-syntax-parser\",\n  \"version\": \"0.60.0\",\n  \"description\": \"Parse template syntax\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"types/exports.d.ts\",\n  \"files\": [\n    \"lib\",\n    \"types\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"ts\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"test\": \"jest --coverage\",\n    \"build\": \"rimraf types && tsc --project tsconfig.build.json\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"html\",\n    \"eslint\",\n    \"parser\",\n    \"template\",\n    \"handlebars\",\n    \"erb\",\n    \"twig\"\n  ],\n  \"dependencies\": {\n    \"@html-eslint/types\": \"^0.60.0\"\n  },\n  \"devDependencies\": {\n    \"eslint\": \"^9.39.1\"\n  }\n}\n"
  },
  {
    "path": "packages/template-syntax-parser/tests/template-syntax-parser.test.js",
    "content": "const { parse } = require(\"../lib/template-syntax-parser\");\n/**\n * @import {AST} from \"eslint\"\n * @import {TemplateSyntaxParserConfig} from \"../lib/types\"\n */\n\nconst HANDLEBAR = {\n  syntax: {\n    \"{{{\": \"}}}\",\n    \"{{\": \"}}\",\n  },\n};\nconst ERB = {\n  syntax: {\n    \"<%\": \" %>\",\n  },\n};\nconst TWIG = {\n  syntax: [\n    {\n      open: \"{{\",\n      close: \"}}\",\n    },\n    {\n      open: \"{%\",\n      close: \"%}\",\n    },\n    {\n      open: \"{#\",\n      close: \"#}\",\n      isComment: true,\n    },\n  ],\n};\n\ndescribe(\"basic\", () => {\n  /** @type {[string, TemplateSyntaxParserConfig, AST.Range[]][]} */\n  const TEST_CASES = [\n    [\"\", HANDLEBAR, []],\n    [\"<div></div>\", HANDLEBAR, []],\n    [\"{{  \", HANDLEBAR, []],\n    [\"{{value}}\", HANDLEBAR, [[0, 9]]],\n    [\n      \"{{value}} {{{value}}}\",\n      HANDLEBAR,\n      [\n        [0, 9],\n        [10, 21],\n      ],\n    ],\n    [\n      \"<div><% hello %></div><% hello %>\",\n      ERB,\n      [\n        [5, 16],\n        [22, 33],\n      ],\n    ],\n    [\n      \"<div>{{ {{ }} }}\",\n      {\n        syntax: HANDLEBAR.syntax,\n        skipRanges: [[8, 13]],\n      },\n      [[5, 16]],\n    ],\n    [\n      \"{#<div>{{a}}</div>#}\",\n      {\n        syntax: TWIG.syntax,\n      },\n      [[0, 20]],\n    ],\n    [\n      \"<div>{{aa}}{# bb {{ cc }} #}</div>\",\n      {\n        syntax: TWIG.syntax,\n      },\n      [\n        [5, 11],\n        [11, 28],\n      ],\n    ],\n  ];\n  test.each(TEST_CASES)(\"parse(%s, %o)\", (code, config, expected) => {\n    expect(\n      parse(code, config).syntax.map((s) => [s.open[0], s.close[1]])\n    ).toStrictEqual(expected);\n  });\n});\n\ndescribe(\"error\", () => {\n  test(\"nested\", () => {\n    expect(() => parse(\"{{{ {{ }} }}}\", HANDLEBAR)).toThrowError();\n  });\n  test(\"unclosed\", () => {\n    expect(() => parse(\"{{{ {{\", HANDLEBAR)).toThrowError();\n  });\n});\n"
  },
  {
    "path": "packages/template-syntax-parser/tsconfig.build.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\"],\n  \"compilerOptions\": {\n    \"outDir\": \"types\",\n    \"emitDeclarationOnly\": true,\n    \"noEmit\": false,\n    \"rootDir\": \"lib\",\n    \"skipLibCheck\": true\n  }\n}\n"
  },
  {
    "path": "packages/template-syntax-parser/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"include\": [\"lib\", \"tests\"],\n  \"compilerOptions\": {\n    \"skipLibCheck\": true\n  }\n}\n"
  },
  {
    "path": "packages/types/lib/ast.d.ts",
    "content": "import { AnyHTMLNode } from \"./html-ast\";\nimport { AnyJsNode } from \"./js-ast\";\nimport { AnyCssNode } from \"./css-ast\";\nexport { AnyToken } from \"es-html-parser\";\nexport type AnyNode = AnyHTMLNode | AnyJsNode | AnyCssNode;\n"
  },
  {
    "path": "packages/types/lib/css-ast.d.ts",
    "content": "import CSSTree, { CssLocation, List } from \"css-tree\";\nimport { Range } from \"./range\";\n\ntype ToESTree<Node extends CSSTree.CssNodeCommon> = Omit<\n  Node,\n  \"type\" | \"children\"\n> & {\n  range: Range;\n  loc: CssLocation;\n};\n\nexport type AnyCssNode =\n  | CssStyleSheet\n  | CssSelectorList\n  | CssSelector\n  | CssBlock\n  | CssDeclaration\n  | CssCombinator;\n\nexport type CssStyleSheet = ToESTree<CSSTree.StyleSheetPlain> & {\n  parent?: AnyCssNode;\n  type: \"CssStyleSheet\";\n  children: List<AnyCssNode>;\n};\n\nexport type CssSelectorList = ToESTree<CSSTree.SelectorListPlain> & {\n  parent?: AnyCssNode;\n  type: \"CssSelectorList\";\n  children: List<AnyCssNode>;\n};\n\nexport type CssSelector = ToESTree<CSSTree.SelectorPlain> & {\n  parent?: AnyCssNode;\n  type: \"CssSelector\";\n  children: List<AnyCssNode>;\n};\n\nexport type CssBlock = ToESTree<CSSTree.Block> & {\n  parent?: AnyCssNode;\n  type: \"CssBlock\";\n  children: AnyCssNode[];\n};\n\nexport type CssDeclaration = ToESTree<CSSTree.Declaration> & {\n  parent?: AnyCssNode;\n  type: \"CssDeclaration\";\n  children: List<AnyCssNode>;\n};\n\nexport type CssCombinator = ToESTree<CSSTree.Combinator> & {\n  parent?: AnyCssNode;\n  type: \"CssCombinator\";\n  loc?: CssLocation | null;\n};\n"
  },
  {
    "path": "packages/types/lib/html-ast.d.ts",
    "content": "import * as Parser from \"es-html-parser\";\nimport { AnyCssNode, CssStyleSheet } from \"./css-ast\";\n\nexport interface Document extends Parser.DocumentNode {\n  parent: null;\n  children: Array<Tag | Text | Comment | Doctype | ScriptTag | StyleTag>;\n}\n\nexport type Text = Parser.TextNode & {\n  parent: Tag | Document | null;\n};\n\nexport interface Doctype extends Parser.DoctypeNode {\n  parent: Document | Tag;\n  open: DoctypeOpen;\n  close: DoctypeClose;\n  attributes: Array<DoctypeAttribute>;\n}\n\nexport interface DoctypeOpen extends Parser.DoctypeOpenNode {\n  parent: Doctype;\n}\n\nexport interface DoctypeClose extends Parser.DoctypeCloseNode {\n  parent: Doctype;\n}\n\nexport interface DoctypeAttribute extends Parser.DoctypeAttributeNode {\n  parent: Doctype;\n  startWrapper?: DoctypeAttributeWrapperStart;\n  value?: DoctypeAttributeValue;\n  endWrapper?: DoctypeAttributeWrapperEnd;\n}\n\nexport interface DoctypeAttributeValue\n  extends Parser.DoctypeAttributeValueNode {\n  parent: DoctypeAttribute;\n}\n\nexport interface DoctypeAttributeWrapperStart\n  extends Parser.DoctypeAttributeWrapperStartNode {\n  parent: DoctypeAttribute;\n}\n\nexport interface DoctypeAttributeWrapperEnd\n  extends Parser.DoctypeAttributeWrapperEndNode {\n  parent: DoctypeAttribute;\n}\n\nexport interface Comment extends Parser.CommentNode {\n  parent: Tag | Document;\n  open: CommentOpen;\n  close: CommentClose;\n  value: CommentContent;\n}\n\nexport interface CommentOpen extends Parser.CommentOpenNode {\n  parent: Comment;\n}\n\nexport interface CommentClose extends Parser.CommentCloseNode {\n  parent: Comment;\n}\n\nexport interface CommentContent extends Parser.CommentContentNode {\n  parent: Comment;\n}\n\nexport interface Tag extends Parser.TagNode {\n  parent: Document | Tag;\n  openStart: OpenTagStart;\n  openEnd: OpenTagEnd;\n  attributes: Array<Attribute>;\n  close?: CloseTag;\n  children: Array<Tag | Text | StyleTag | ScriptTag>;\n}\n\nexport interface OpenTagStart extends Parser.OpenTagStartNode {\n  parent: Tag;\n}\n\nexport interface OpenTagEnd extends Parser.OpenTagEndNode {\n  parent: Tag;\n}\n\nexport interface CloseTag extends Parser.CloseTagNode {\n  parent: Tag;\n}\n\nexport interface ScriptTag extends Parser.ScriptTagNode {\n  parent: Document | Tag;\n  attributes: Array<Attribute>;\n  openStart: OpenScriptTagStart;\n  openEnd: OpenScriptTagEnd;\n  value?: ScriptTagContent;\n}\n\nexport interface OpenScriptTagStart extends Parser.OpenScriptTagStartNode {\n  parent: ScriptTag;\n}\n\nexport interface OpenScriptTagEnd extends Parser.OpenScriptTagEndNode {\n  parent: ScriptTag;\n}\n\nexport interface CloseScriptTag extends Parser.CloseScriptTagNode {\n  parent: ScriptTag;\n}\n\nexport interface ScriptTagContent extends Parser.ScriptTagContentNode {\n  parent: ScriptTag;\n  stylesheet?: AnyCssNode;\n}\n\nexport interface StyleTag extends Parser.StyleTagNode {\n  parent: Document | Tag;\n  attributes: Array<Attribute>;\n  openStart: OpenStyleTagStart;\n  openEnd: OpenStyleTagEnd;\n  value?: StyleTagContent;\n}\n\nexport interface OpenStyleTagStart extends Parser.OpenStyleTagStartNode {\n  parent: StyleTag;\n}\n\nexport interface OpenStyleTagEnd extends Parser.OpenStyleTagEndNode {\n  parent: StyleTag;\n}\n\nexport interface CloseStyleTag extends Parser.CloseStyleTagNode {\n  parent: StyleTag;\n}\n\nexport interface StyleTagContent extends Parser.StyleTagContentNode {\n  parent: StyleTag;\n  stylesheet?: CssStyleSheet;\n}\n\nexport interface Attribute extends Parser.AttributeNode {\n  parent: Tag;\n  key: AttributeKey;\n  value?: AttributeValue;\n  startWrapper?: AttributeValueWrapperStart;\n  endWrapper?: AttributeValueWrapperEnd;\n}\n\nexport interface AttributeKey extends Parser.AttributeKeyNode {\n  parent: Attribute;\n}\n\nexport interface AttributeValue extends Parser.AttributeValueNode {\n  parent: Attribute;\n}\n\nexport interface AttributeValueWrapperStart\n  extends Parser.AttributeValueWrapperStartNode {\n  parent: Attribute;\n}\n\nexport interface AttributeValueWrapperEnd\n  extends Parser.AttributeValueWrapperEndNode {\n  parent: Attribute;\n}\n\nexport type TemplateText = Text[\"parts\"][number];\n\nexport type OpenTemplate = Parser.OpenTemplateNode;\nexport type CloseTemplate = Parser.CloseTemplateNode;\n\nexport type AnyHTMLNode =\n  | Document\n  | Doctype\n  | DoctypeOpen\n  | DoctypeClose\n  | DoctypeAttribute\n  | DoctypeAttributeValue\n  | Comment\n  | CommentOpen\n  | CommentClose\n  | CommentContent\n  | Tag\n  | OpenTagStart\n  | OpenTagEnd\n  | CloseTag\n  | ScriptTag\n  | OpenScriptTagStart\n  | OpenScriptTagEnd\n  | ScriptTagContent\n  | CloseScriptTag\n  | StyleTag\n  | OpenStyleTagStart\n  | OpenStyleTagEnd\n  | StyleTagContent\n  | CloseStyleTag\n  | Attribute\n  | AttributeKey\n  | AttributeValue\n  | AttributeValueWrapperEnd\n  | AttributeValueWrapperStart\n  | Text;\n"
  },
  {
    "path": "packages/types/lib/index.d.ts",
    "content": "export * from \"./html-ast\";\nexport * from \"./js-ast\";\nexport * from \"./ast\";\nexport * from \"./css-ast\";\nexport * from \"./position\";\nexport * from \"./range\";\nexport * from \"./source-location\";\nexport * from \"./node\";\n"
  },
  {
    "path": "packages/types/lib/js-ast.d.ts",
    "content": "import * as estree from \"estree\";\nimport { SourceLocation } from \"./source-location\";\nimport { Range } from \"./range\";\n\nexport interface EstreeNode extends estree.BaseNode {\n  type: string;\n  loc: SourceLocation;\n  range: Range;\n}\n\nexport interface TaggedTemplateExpression\n  extends estree.TaggedTemplateExpression {\n  parent: EstreeNode | null;\n  quasi: TemplateLiteral;\n  loc: SourceLocation;\n  range: Range;\n}\n\nexport interface TemplateLiteral extends estree.TemplateLiteral {\n  parent: EstreeNode | null;\n  quasis: TemplateElement[];\n  loc: SourceLocation;\n  range: Range;\n}\n\nexport interface TemplateElement extends estree.TemplateElement {\n  parent: EstreeNode | null;\n  loc: SourceLocation;\n  range: Range;\n}\n\nexport type AnyJsNode =\n  | TaggedTemplateExpression\n  | TemplateLiteral\n  | TemplateElement;\n"
  },
  {
    "path": "packages/types/lib/node.ts",
    "content": "import type { SourceLocation } from \"estree\";\nimport type { Range } from \"./range\";\n\nexport interface NodeOrTokenData {\n  type: string;\n  loc: SourceLocation;\n  range: Range;\n}\n"
  },
  {
    "path": "packages/types/lib/position.ts",
    "content": "export interface Position {\n  /** 0-indexed column number */\n  column: number;\n  /** 1-indexed line number */\n  line: number;\n}\n"
  },
  {
    "path": "packages/types/lib/range.ts",
    "content": "/**\n * A tuple of two 0-based indices representing the start and end positions of a\n * node in the source code.\n */\nexport type Range = [number, number];\n"
  },
  {
    "path": "packages/types/lib/source-location.ts",
    "content": "import type { Position } from \"./position\";\n\n/** The source location of a node with start and end positions. */\nexport interface SourceLocation {\n  start: Position;\n  end: Position;\n}\n"
  },
  {
    "path": "packages/types/package.json",
    "content": "{\n  \"name\": \"@html-eslint/types\",\n  \"version\": \"0.60.0\",\n  \"description\": \"Types for @html-eslint/eslint-plugin\",\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"license\": \"MIT\",\n  \"types\": \"lib/index.d.ts\",\n  \"files\": [\n    \"lib\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"scripts\": {\n    \"ts\": \"tsc --noEmit\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"keywords\": [\n    \"html\",\n    \"eslint\",\n    \"types\",\n    \"typescript\",\n    \"ast\"\n  ],\n  \"dependencies\": {\n    \"@types/css-tree\": \"^2.3.11\",\n    \"@types/estree\": \"^1.0.6\",\n    \"es-html-parser\": \"0.3.1\"\n  }\n}\n"
  },
  {
    "path": "packages/types/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\"\n}\n"
  },
  {
    "path": "packages/web-linter/.eslintrc.js",
    "content": "/** @type {import(\"eslint\").Linter.Config} */\nmodule.exports = {\n  root: true,\n  parserOptions: {\n    ecmaVersion: 6,\n  },\n};\n"
  },
  {
    "path": "packages/web-linter/index.js",
    "content": "if (typeof process === \"undefined\") {\n  // eslint-disable-next-line no-undef\n  window.process = require(\"process/browser\");\n}\n\nfunction getLinter() {\n  return require(\"./node_modules/eslint/lib/linter/linter\").Linter;\n}\n\nmodule.exports.Linter = getLinter();\n"
  },
  {
    "path": "packages/web-linter/package.json",
    "content": "{\n  \"name\": \"@html-eslint/web-linter\",\n  \"version\": \"0.60.0\",\n  \"description\": \"\",\n  \"private\": true,\n  \"main\": \"out/output.js\",\n  \"devDependencies\": {\n    \"@rollup/plugin-commonjs\": \"^23.0.3\",\n    \"@rollup/plugin-json\": \"^5.0.2\",\n    \"@rollup/plugin-node-resolve\": \"^15.0.1\",\n    \"@rollup/plugin-terser\": \"^0.1.0\",\n    \"rollup\": \"^3.5.1\",\n    \"rollup-plugin-polyfill-node\": \"^0.11.0\"\n  },\n  \"scripts\": {\n    \"lint\": \"eslint .\",\n    \"dev\": \"rollup --config && yarn post\",\n    \"build\": \"rollup --config && yarn post\",\n    \"post\": \"node ./postprocess.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/yeonjuan/html-eslint.git\"\n  },\n  \"author\": {\n    \"name\": \"yeonjuan\",\n    \"url\": \"https://github.com/yeonjuan\"\n  },\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/yeonjuan/html-eslint/issues\"\n  },\n  \"homepage\": \"https://github.com/yeonjuan/html-eslint#readme\",\n  \"dependencies\": {\n    \"eslint\": \"^8.29.0\"\n  }\n}\n"
  },
  {
    "path": "packages/web-linter/postprocess.js",
    "content": "const { readFileSync, writeFileSync } = require(\"fs\");\nconst outputJs = readFileSync(\"./out/output.js\", \"utf-8\");\n\nwriteFileSync(\n  \"./out/output.js\",\n  outputJs.replace(\n    \"process.env.DEBUG=e:delete process.env.DEBUG\",\n    \"void 0: void 0\"\n  )\n);\n"
  },
  {
    "path": "packages/web-linter/rollup.config.js",
    "content": "const commonjs = require(\"@rollup/plugin-commonjs\");\nconst { nodeResolve } = require(\"@rollup/plugin-node-resolve\");\nconst nodePolyfills = require(\"rollup-plugin-polyfill-node\");\nconst json = require(\"@rollup/plugin-json\");\nconst terser = require(\"@rollup/plugin-terser\");\n\nmodule.exports = {\n  input: \"index.js\",\n  output: {\n    file: \"out/output.js\",\n    format: \"umd\",\n    exports: \"named\",\n    name: \"eslint\",\n  },\n  plugins: [\n    commonjs({\n      ignoreGlobal: true,\n      requireReturnsDefault: \"preferred\",\n    }),\n    json(),\n    nodePolyfills(),\n    nodeResolve({\n      preferBuiltins: false,\n    }),\n    terser(),\n  ],\n};\n"
  },
  {
    "path": "packages/website/.firebaserc",
    "content": "{\n  \"projects\": {\n    \"default\": \"html-eslint\"\n  }\n}\n"
  },
  {
    "path": "packages/website/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nfirebase-debug.log*\nfirebase-debug.*.log*\n\n# Firebase cache\n.firebase/\n\n# Firebase config\n\n# Uncomment this if you'd like others to create their own Firebase project.\n# For a team working on the same Firebase project(s), it is recommended to leave\n# it commented so all members can deploy to the same project(s) in .firebaserc.\n# .firebaserc\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n"
  },
  {
    "path": "packages/website/.postcssrc",
    "content": "{\n  \"plugins\": {\n    \"tailwindcss\": {}\n  }\n}\n"
  },
  {
    "path": "packages/website/.posthtmlrc.js",
    "content": "const {\n  resolve \n} = require(\"path\");\nconst {\n  readFileSync \n} = require(\"fs\");\nconst rulesRecord = require(\"@html-eslint/eslint-plugin/lib/rules\");\nconst reactRulesRecord = require('@html-eslint/eslint-plugin-react/lib/rules');\nconst svelteRulesRecord = require('@html-eslint/eslint-plugin-svelte').default.rules;\nconst angularTemplateRulesRecord = require('@html-eslint/eslint-plugin-angular-template/lib/rules');\n\nconst rules = {\n  [\"Best Practice\"]: [],\n  SEO: [],\n  Accessibility: [],\n  Style: [],\n};\n\nObject.entries(rulesRecord).forEach(([rulename, rule]) => {\n  rules[rule.meta.docs.category].push([\n    rulename,\n    \"~/src/docs/rules/\" + rulename + \".html\",\n    !!rule.meta.deprecated,\n  ]);\n});\n\nObject.keys(rules).forEach((category) => {\n  rules[category].sort(([ruleNameA], [ruleNameB]) =>\n    ruleNameA.localeCompare(ruleNameB)\n  );\n});\n\nconst version = JSON.parse(\n  readFileSync(resolve(process.cwd(), \"../eslint-plugin/package.json\"), \"utf-8\")\n).version;\n\nconst expressionsOption = {\n  removeScriptLocals: true,\n  locals: {\n    version,\n    navs: {\n      project: [\n        [\"Getting Started\", \"~/src/docs/getting-started.html\"],\n        [\"Disablling Rules\", \"~/src/docs/disabling-rules.html\"],\n      ],\n      bestPractice: rules[\"Best Practice\"],\n      seo: rules[\"SEO\"],\n      accessibility: rules[\"Accessibility\"],\n      style: rules[\"Style\"],\n    },\n    navsReact: Object.keys(reactRulesRecord).map((rulename) => {\n      return [rulename, '~/src/docs/react/rules/' + rulename + \".html\"]\n    }),\n    navsSvelte: Object.keys(svelteRulesRecord).map((rulename) => {\n      return [rulename, '~/src/docs/svelte/rules/' + rulename + \".html\"]\n    }),\n    navsAngularTemplate: Object.keys(angularTemplateRulesRecord).map((rulename) => {\n      return [rulename, '~/src/docs/angular-template/rules/' + rulename + \".html\"]\n    }),\n  },\n};\n\nmodule.exports = {\n  plugins: {\n    \"posthtml-include\": {\n      root: \"./src\",\n    },\n    \"posthtml-extend\": {\n      root: \"./src\",\n      plugins: [\n        require(\"posthtml-expressions\")({\n          ...expressionsOption,\n        }),\n      ],\n    },\n    \"posthtml-expressions\": {\n      root: \"./src\",\n      ...expressionsOption,\n    },\n    \"posthtml-modules\": {\n      root: \"./src\",\n      attributeAsLocals: true,\n    },\n  },\n};\n"
  },
  {
    "path": "packages/website/README.md",
    "content": "# Website\n\n## Installation\n\n```console\nyarn install\n```\n\n## Local Development\n\n```console\nyarn dev\n```\n\nThis command starts a local development server and open `http://localhost:3000` on a browser.\n\n## Build\n\n```console\nyarn build\n```\n"
  },
  {
    "path": "packages/website/eslint.config.js",
    "content": "const html = require(\"@html-eslint/eslint-plugin\");\nconst stylistic = require(\"@stylistic/eslint-plugin\");\nconst parser = require(\"@html-eslint/parser\");\nconst { defineConfig } = require(\"eslint/config\");\n\nmodule.exports = defineConfig([\n  {\n    ignores: [\n      \"**/dist\",\n      \"**/.turbo\",\n      \"src/out\",\n      \"**/node_modules\",\n      \"src/docs\",\n      \"eslint.config.js\",\n    ],\n  },\n  {\n    files: [\"**/*.js\"],\n    plugins: {\n      html,\n      \"@stylistic\": stylistic,\n    },\n    extends: [\"html/all\"],\n    languageOptions: {\n      ecmaVersion: 2020,\n      sourceType: \"module\",\n    },\n    rules: {\n      \"html/indent\": [\"error\", 2],\n      \"@stylistic/indent\": [\"error\", 2],\n      \"@stylistic/quote-props\": [\"error\", \"as-needed\"],\n      \"@stylistic/curly-newline\": [\"error\", \"always\"],\n      \"@stylistic/padded-blocks\": [\"error\", \"never\"],\n      \"@stylistic/lines-around-comment\": \"off\",\n      \"@stylistic/space-before-function-paren\": [\"error\", \"never\"],\n      \"@stylistic/function-call-argument-newline\": [\"error\", \"consistent\"],\n      \"@stylistic/object-curly-newline\": [\n        \"error\",\n        {\n          minProperties: 1,\n        },\n      ],\n    },\n  },\n  {\n    files: [\"**/*.html\"],\n    plugins: {\n      html,\n    },\n    extends: [\"html/all\"],\n    language: \"html/html\",\n    rules: {\n      \"html/require-meta-description\": \"off\",\n      \"html/require-open-graph-protocol\": \"off\",\n      \"html/require-title\": \"off\",\n      \"html/indent\": [\"error\", 2],\n      \"html/no-inline-styles\": \"off\",\n      \"html/id-naming-convention\": [\"error\", \"kebab-case\"],\n      \"html/head-order\": [\"error\",{\n        ignores: [\n          {\n            tagPattern: \"^block$\"\n          }\n        ]\n      }],\n    },\n  },\n  {\n    files: [\"**/*.svg\"],\n      plugins: {\n      html,\n    },\n    language: \"html/html\",\n    rules: {\n      \"html/svg-require-viewbox\": \"error\"\n    }\n  }\n]);\n"
  },
  {
    "path": "packages/website/firebase.json",
    "content": "{\n  \"hosting\": {\n    \"public\": \"out\",\n    \"ignore\": [\"firebase.json\", \"**/.*\", \"**/node_modules/**\"],\n    \"cleanUrls\": true,\n    \"trailingSlash\": false,\n    \"headers\": [\n      {\n        \"source\": \"**/*.html\",\n        \"headers\": [\n          {\n            \"key\": \"Cache-Control\",\n            \"value\": \"max-age=0, no-cache\"\n          }\n        ]\n      },\n      {\n        \"source\": \"**/*.@(css|js)\",\n        \"headers\": [\n          {\n            \"key\": \"Cache-Control\",\n            \"value\": \"max-age=31536000\"\n          }\n        ]\n      },\n      {\n        \"source\": \"**/*.@(jpg|jpeg|gif|png)\",\n        \"headers\": [\n          {\n            \"key\": \"Cache-Control\",\n            \"value\": \"max-age=31536000\"\n          }\n        ]\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/website/package.json",
    "content": "{\n  \"name\": \"website\",\n  \"version\": \"0.60.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"clear:cache\": \"rimraf ../../parcel-cache\",\n    \"dev\": \"yarn clear:cache && yarn docs && parcel ./src/index.html -p 3000 --open\",\n    \"build\": \"yarn docs && parcel build ./src/index.html --dist-dir out && yarn sitemap && yarn robots && yarn llms-txt\",\n    \"lint\": \"eslint src\",\n    \"docs\": \"node ./scripts/docs\",\n    \"deploy\": \"yarn build && firebase deploy\",\n    \"sitemap\": \"node ./scripts/sitemap\",\n    \"robots\": \"node ./scripts/robots\",\n    \"llms-txt\": \"node ./scripts/llms.txt.js\"\n  },\n  \"dependencies\": {\n    \"@html-eslint/eslint-plugin\": \"^0.60.0\",\n    \"@html-eslint/eslint-plugin-angular-template\": \"^0.60.0\",\n    \"@html-eslint/eslint-plugin-react\": \"^0.60.0\",\n    \"@html-eslint/eslint-plugin-svelte\": \"^0.60.0\",\n    \"@html-eslint/parser\": \"^0.60.0\",\n    \"@html-eslint/web-linter\": \"^0.60.0\",\n    \"@html-kit/html\": \"^0.0.4\",\n    \"codemirror\": \"^5.58.3\"\n  },\n  \"devDependencies\": {\n    \"@parcel/transformer-sass\": \"2.16.4\",\n    \"@stylistic/eslint-plugin\": \"^3.0.0\",\n    \"@types/codemirror\": \"^5.60.5\",\n    \"@types/eslint\": \"^9.6.1\",\n    \"@types/node\": \"25.2.3\",\n    \"@types/react\": \"^18.0.26\",\n    \"@types/react-dom\": \"18.0.9\",\n    \"autoprefixer\": \"^10.4.13\",\n    \"firebase-tools\": \"^15.6.0\",\n    \"gray-matter\": \"^4.0.3\",\n    \"highlight.js\": \"^11.9.0\",\n    \"marked\": \"^9.1.5\",\n    \"marked-highlight\": \"^2.0.6\",\n    \"parcel\": \"^2.16.4\",\n    \"postcss\": \"^8.4.19\",\n    \"posthtml-extend\": \"^0.6.5\",\n    \"posthtml-include\": \"^1.7.4\",\n    \"posthtml-modules\": \"^0.9.1\",\n    \"process\": \"0.11.10\",\n    \"svgo\": \"^3.3.2\",\n    \"tailwindcss\": \"^3.3.5\"\n  },\n  \"@parcel/transformer-js\": {\n    \"inlineFS\": false,\n    \"inlineEnvironment\": false\n  },\n  \"browserslist\": \"> 0.5%, last 2 versions, not dead\"\n}\n"
  },
  {
    "path": "packages/website/scripts/docs.js",
    "content": "const {\n  cwd\n} = process;\nconst {\n  resolve\n} = require(\"path\");\nconst generateHTMLs = require(\"./generates/htmls\");\nconst generateMarkdowns = require(\"./generates/markdowns\");\n\ngenerateMarkdowns().then(() => generateHTMLs(\n  resolve(\n    cwd(),\n    \"../../docs\"\n  ),\n  resolve(\n    cwd(),\n    \"./src/docs\"\n  ),\n  resolve(\n    cwd(),\n    \"./src/out\"\n  )\n));\n\n\n"
  },
  {
    "path": "packages/website/scripts/generates/convert-to-html.js",
    "content": "/* eslint-disable @stylistic/indent */\n/**\n * @import {Marked} from \"marked\";\n */\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst matter = require(\"gray-matter\");\nconst {\n  html\n} = require(\"@html-kit/html\");\n\n/**\n * @param {object} src\n * @param {string} src.markdownPath\n * @param {string} src.templateHtmlPath\n * @param {object} dist\n * @param {string} dist.partialHtmlPath\n * @param {string} dist.htmlPath\n * @param {Marked} marked\n * @param {object} options\n * @param {Function} options.wrapper\n * @param {string} options.includePath\n */\nfunction convertToHTML(src, dist, marked, options) {\n  const srcMarkdown = fs.readFileSync(\n    src.markdownPath,\n    \"utf-8\"\n  );\n\n  // Parse frontmatter from markdown\n  const parsed = matter(srcMarkdown);\n  const frontmatter = parsed.data;\n  const markdownContent = parsed.content;\n\n  const partialHtml = options.wrapper(marked.parse(markdownContent));\n  const dirname = path.dirname(dist.partialHtmlPath);\n\n  if (!fs.existsSync(dirname)) {\n    fs.mkdirSync(\n      dirname,\n      {\n        recursive: true\n      }\n    );\n  }\n  fs.writeFileSync(\n    dist.partialHtmlPath,\n    partialHtml\n  );\n  const templateHtml = fs.readFileSync(\n    src.templateHtmlPath,\n    \"utf-8\"\n  );\n\n  // Extract title and description from frontmatter or use defaults\n  const pageTitle = frontmatter.title || path.parse(src.markdownPath).name;\n  const pageDescription = frontmatter.description || \"\";\n  const fullTitle = `${pageTitle} - html-eslint`;\n\n  // Generate canonical URL\n  const canonicalUrl = dist.htmlPath.\n    replace(\n      path.join(\n        process.cwd(),\n        \"src\"\n      ),\n      \"https://html-eslint.org\"\n    ).\n    replace(\n      \".html\",\n      \"/\"\n    );\n\n  // Build JSON-LD structured data\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"TechArticle\",\n    headline: pageTitle,\n    description: pageDescription,\n    url: canonicalUrl,\n    inLanguage: \"en\",\n    author: {\n      \"@type\": \"Person\",\n      name: \"yeonjuan\",\n      url: \"https://github.com/yeonjuan\"\n    },\n    publisher: {\n      \"@type\": \"Person\",\n      name: \"yeonjuan\",\n      url: \"https://github.com/yeonjuan\"\n    },\n    isPartOf: {\n      \"@type\": \"WebSite\",\n      \"@id\": \"https://html-eslint.org/\",\n      name: \"html-eslint\"\n    }\n  };\n\n  const jsonLdScript = `<script type=\"application/ld+json\">\\n    ${JSON.stringify(jsonLd, null, 2).split(\"\\n\").join(\"\\n    \")}\\n    </script>`;\n\n  // Build meta tags including SEO tags\n  const metaTags = [\n    `<title>${fullTitle}</title>`,\n    `<link href=\"${canonicalUrl}\" rel=\"canonical\">`,\n    jsonLdScript\n  ];\n\n  if (pageDescription) {\n    metaTags.push(`<meta name=\"description\" content=\"${pageDescription}\">`);\n    metaTags.push(`<meta property=\"og:site_name\" content=\"html-eslint\">`);\n    metaTags.push(`<meta property=\"og:title\" content=\"${fullTitle}\">`);\n    metaTags.push(`<meta property=\"og:description\" content=\"${pageDescription}\">`);\n    metaTags.push(`<meta name=\"twitter:title\" content=\"${fullTitle}\">`);\n    metaTags.push(`<meta name=\"twitter:description\" content=\"${pageDescription}\">`);\n  }\n\n  const meta = html`${metaTags.join(\"\\n    \")}`;\n\n  const content = templateHtml.\n    replace(\n      \"{{path}}\",\n      options.includePath\n    ).\n    replace(\n      \"{{meta}}\",\n      meta\n    );\n  fs.writeFileSync(\n    dist.htmlPath,\n    content\n  );\n}\n\nmodule.exports = convertToHTML;\n"
  },
  {
    "path": "packages/website/scripts/generates/html-factory.js",
    "content": "const {\n  html\n} = require(\"@html-kit/html\");\n\nconst fileIconMap = {\n  Terminal: \"~/src/assets/icon-terminal.svg\",\n  \".vscode/settings.json\": \"~/src/assets/icon-json.svg\",\n  \".eslintrc.js\": \"~/src/assets/icon-js.svg\"\n};\n\nconst fileIcon = (name) => {\n  const icon = fileIconMap[name];\n  if (!icon) return \"\";\n  return html`<img\n      alt=\"\"\n      height=\"20\"\n      src=\"${icon}\"\n      width=\"20\"\n    >`;\n};\n\nconst fileName = (name) => {\n  if (!name) return \"\";\n  return `<div class=\"md-code-filename\">\n    ${fileIcon(name)}\n    ${name}\n  </div>\n  `;\n};\n\n/**\n *\n * @param {\"correct\" | \"incorrect\"} type\n * @param {string} code\n */\nconst exampleCode = (type, code) => {\n  return html`<div class=\"md-code-wrapper md-code-${type}\">\n    <pre><code class=\"hljs code2\">${code}</code></pre>\n    </div>\n  `;\n};\n\nconst exampleIcon = (type) => {\n  return html`<img\n      class=\"inline mr-[9px]\"\n      alt=\"\"\n      height=\"18\"\n      src=\"~/src/assets/icon-${type}.svg\"\n      width=\"18\"\n    >`;\n};\n\nmodule.exports = {\n  fileName,\n  exampleCode,\n  exampleIcon\n};\n"
  },
  {
    "path": "packages/website/scripts/generates/htmls.js",
    "content": "const {\n  cwd\n} = process;\nconst {\n  resolve, parse\n} = require(\"path\");\nconst {\n  readdirSync, statSync, existsSync, mkdirSync\n} = require(\"fs\");\nconst createMarked = require(\"./marked\");\nconst convertToHTML = require(\"./convert-to-html\");\nconst {\n  html\n} = require(\"@html-kit/html\");\n\n/**\n * @param {string} srcDir\n * @param {string} distDir\n * @param {string} outDir\n */\nmodule.exports = function generateHTMLs(srcDir, distDir, outDir) {\n  readdirSync(srcDir).forEach((filename) => {\n    const filepath = resolve(\n      srcDir,\n      filename\n    );\n    const parsed = parse(filepath);\n    if (statSync(filepath).isDirectory()) {\n      const nextDistDir = resolve(\n        distDir,\n        filename\n      );\n      const nextOutDir = resolve(\n        outDir,\n        filename\n      );\n      if (!existsSync(nextDistDir)) mkdirSync(nextDistDir, {\n        recursive: true\n      });\n      if (!existsSync(nextOutDir)) mkdirSync(nextOutDir, {\n        recursive: true\n      });\n\n      generateHTMLs(\n        filepath,\n        nextDistDir,\n        nextOutDir\n      );\n    } else if (parsed.ext === \".md\") {\n      parsed\n      convertToHTML(\n        {\n          markdownPath: filepath,\n          templateHtmlPath: resolve(\n            cwd(),\n            parsed.dir.includes(\"react\") ? \"./src/components/template-react.html\":\n              parsed.dir.includes(\"svelte\") ? \"./src/components/template-svelte.html\":\n                parsed.dir.includes(\"angular-template\") ? \"./src/components/template-angular.html\"\n                  : \"./src/components/template.html\"\n          )\n        },\n        {\n          partialHtmlPath: resolve(\n            outDir,\n            parsed.name + \".html\"\n          ),\n          htmlPath: resolve(\n            distDir,\n            parsed.name + \".html\"\n          )\n        },\n        createMarked(),\n        {\n          includePath:\n            outDir.slice(outDir.indexOf(\"/out\") + 1) +\n            \"/\" +\n            parsed.name +\n            \".html\",\n          wrapper: (content) => html`<section class=\"md-wrapper\">${content}</section>`\n        }\n      );\n    }\n  });\n};\n"
  },
  {
    "path": "packages/website/scripts/generates/markdowns.js",
    "content": "const {\n  cwd\n} = process;\nconst {\n  resolve\n} = require(\"path\");\nconst {\n  writeFileSync\n} = require(\"fs\");\nconst rulesRecord = require(\"@html-eslint/eslint-plugin/lib/rules\");\nconst prettier = require(\"prettier\");\n\nasync function generateRulesMarkdown() {\n  const rules = {\n    [\"Best Practice\"]: [],\n    SEO: [],\n    Accessibility: [],\n    Style: []\n  };\n  Object.entries(rulesRecord).forEach(([\n    ruleId,\n    rule\n  ]) => rules[rule.meta.docs.category].push({\n    ruleId,\n    rule\n  }));\n\n  Object.values(rules).forEach((list) => list.sort((a, b) => a.ruleId.localeCompare(b.ruleId)));\n\n  const lines = [];\n  lines.push(\"<!-- This file is generated by 'yarn docs' command. Don't edit this -->\");\n  lines.push(\"# Rules\");\n\n  lines.push(\"- 🔧: Meaning the rule can fix problems automatically by running eslint `--fix` options.\\n- ⭐: Meaning the rule is recommended.\");\n\n  const pushRuleItem = ({\n    ruleId, rule\n  }) => {\n    const emojis = []\n    if (rule.meta.docs.recommended) emojis.push(\"⭐\")\n    if (rule.meta.fixable) emojis.push(\"🔧\");\n    const meta = emojis.join(\" \")\n    if (rule.meta.deprecated) {\n      const replacedBy = rule.meta.replacedBy && rule.meta.replacedBy.length\n        ? ` Use ${rule.meta.replacedBy.map((r) => `[${r}](rules/${r})`).join(\", \")} instead.`\n        : \"\";\n      lines.push(`| ~~[${ruleId}](rules/${ruleId})~~ | ~~${rule.meta.docs.description}~~ (Deprecated)${replacedBy} | ${meta} |`);\n    } else {\n      lines.push(`| [${ruleId}](rules/${ruleId}) | ${rule.meta.docs.description} | ${meta} |`);\n    }\n  };\n\n  lines.push(\"## Best Practice\\n\");\n  lines.push(\"| Rule | Description |  |\");\n  lines.push(\"| --- | --- | --- |\");\n  rules[\"Best Practice\"].forEach(pushRuleItem);\n  lines.push(\"## SEO\");\n  lines.push(\"| Rule | Description |  |\");\n  lines.push(\"| --- | --- | --- |\");\n  rules.SEO.forEach(pushRuleItem);\n  lines.push(\"## Accessibility\\n\");\n  lines.push(\"| Rule | Description |  |\");\n  lines.push(\"| --- | --- | --- |\");\n  rules.Accessibility.forEach(pushRuleItem);\n  lines.push(\"## Style\\n\");\n  lines.push(\"| Rule | Description |  |\");\n  lines.push(\"| --- | --- | --- |\");\n  rules.Style.forEach(pushRuleItem);\n\n  const markedown = lines.join(\"\\n\");\n\n  writeFileSync(\n    resolve(\n      cwd(),\n      \"../../docs/rules.md\"\n    ),\n    await prettier.format(\n      markedown,\n      {\n        parser: \"markdown\"\n      }\n    )\n  );\n}\n\nmodule.exports = async function generateMarkdowns() {\n  await generateRulesMarkdown();\n};\n"
  },
  {
    "path": "packages/website/scripts/generates/marked.js",
    "content": "const renderer = require(\"./renderer\");\nconst {\n  markedHighlight\n} = require(\"marked-highlight\");\nconst {\n  Marked\n} = require(\"marked\");\nconst hljs = require(\"highlight.js\");\nconst xml = require(\"highlight.js/lib/languages/xml\");\n\n/**\n * @returns {Marked}\n */\nfunction createMarked() {\n  hljs.registerLanguage(\n    \"html\",\n    xml\n  );\n  const marked = new Marked(markedHighlight({\n    langPrefix: \"hljs language-\",\n    highlight(code, info) {\n      const [lang] = info.includes(\",\")\n        ? info.split(\",\")\n        : [info];\n      const language = hljs.getLanguage(lang)\n        ? lang\n        : \"plaintext\";\n\n      return hljs.highlight(\n        code,\n        {\n          language\n        }\n      ).value;\n    }\n  }));\n  marked.use({\n    renderer\n  });\n  return marked;\n}\n\nmodule.exports = createMarked;\n"
  },
  {
    "path": "packages/website/scripts/generates/renderer.js",
    "content": "const {\n  fileName, exampleCode, exampleIcon\n} = require(\"./html-factory\");\nconst {\n  html\n} = require(\"@html-kit/html\");\n\nconst linkIconClass = {\n  1: \"w-[20px]\",\n  2: \"w-[18px]\",\n  3: \"w-[16px]\",\n  4: \"w-[16px]\"\n};\n\nmodule.exports = {\n  heading(text, level) {\n    const id = text.\n      toLowerCase().\n      replace(\n        /^@/,\n        \"\"\n      ).\n      replace(\n        /[^a-zA-Z0-9]/g,\n        \"-\"\n      ).\n      replace(\n        /[\\s\\/]/g,\n        \"-\"\n      ).\n      replace(\n        /-+/g,\n        \"-\"\n      ).\n      replace(\n        /-$/,\n        \"\"\n      );\n    return `\n    <h${level} id=\"${id}\" class=\"group md-heading${level}\">\n      ${text}\n      <a href=\"#${id}\" aria-label=\"${text}\"><img src=\"~/src/assets/link.svg\" alt=\"\" class=\"inline md:hidden md:group-hover:inline ${linkIconClass[level]}\"></a>\n    </h${level}>`;\n  },\n  paragraph(text) {\n    let icon = \"\";\n    if (text.includes(\"<strong>correct</strong>\")) {\n      icon = exampleIcon(\"correct\");\n    }\n\n    if (text.includes(\"<strong>incorrect</strong>\")) {\n      icon = exampleIcon(\"incorrect\");\n    }\n\n    return html`<p class=\"md-p\">${icon}${text}</p>`;\n  },\n  list(body) {\n    return html`<ol class=\"md-list\">${body}</ol>`;\n  },\n  listitem(text) {\n    return html`<li class=\"md-listitem\">${text}</li>`;\n  },\n  codespan(code) {\n    return html`<code class=\"md-codespan\">${code}</code>`;\n  },\n  code(code, info) {\n    [\n      _,\n      info\n    ] = info.includes(\",\")\n      ? info.split(\",\")\n      : [info];\n\n    if (info === \"correct\" || info === \"incorrect\") {\n      return exampleCode(\n        info,\n        code\n      );\n    }\n\n    return html`<div class=\"md-code-wrapper\">\n        ${fileName(info)}\n       <pre><code class=\"hljs code2 md-code${\n          info\n            ? \"\"\n            : \"-no-filename\"\n        }\">${code}</code></pre></div>`;\n  },\n  link(href, title, text) {\n    const isExternal = href.indexOf(\"http\") === 0;\n    if (isExternal) {\n      text += html`<img\n          class=\"inline\"\n          alt=\"\"\n          height=\"20\"\n          src=\"~/src/assets/icon-external-link.svg\"\n          width=\"20\"\n        >`;\n    }\n    href = href.replace(\n      /\\.md$/,\n      \"\"\n    );\n    return html`<a\n        class=\"md-a\"\n        href=\"${href}\"\n        rel=\"noopener noreferrer\"\n        target=\"${isExternal\n          ? \"blank\"\n          : \"\"}\"\n      >${text}</a>`;\n  },\n  tablecell(content, flags) {\n    if (flags.header) {\n      return html`<th class=\"md-th\">${content}</th>`;\n    }\n    return html`<td class=\"md-td\">${content}</td>`;\n  },\n  table(header, body) {\n    return html`<div class=\"md-table-wrapper\">\n        <table class=\"md-table\">${header}${body}</table>\n      </div>`;\n  }\n};\n"
  },
  {
    "path": "packages/website/scripts/generates/robots.js",
    "content": "const fs = require(\"fs\");\n\n/**\n * Generate robots.txt file\n * @param {string} dest - Destination path for robots.txt\n * @param {string} sitemapUrl - Full URL to sitemap.xml\n */\nfunction generateRobots(dest, sitemapUrl) {\n  const robots = `# html-eslint.org robots.txt\nUser-agent: *\nAllow: /\n\n# Sitemap\nSitemap: ${sitemapUrl}\n`;\n\n  fs.writeFileSync(\n    dest,\n    robots,\n    \"utf-8\"\n  );\n}\n\nmodule.exports = generateRobots;\n"
  },
  {
    "path": "packages/website/scripts/generates/sitemap.js",
    "content": "const path = require(\"path\");\nconst fs = require(\"fs\");\n\n/**\n * @param {string} current\n * @param {(relativePath: string) => void} callback\n */\nfunction traverseHTMLs(current, callback) {\n  if (fs.lstatSync(current).isDirectory()) {\n    fs.readdirSync(current).forEach((next) => {\n      traverseHTMLs(\n        path.join(\n          current,\n          next\n        ),\n        callback\n      );\n    });\n    return;\n  } else if (fs.lstatSync(current).isFile()) {\n    const parsed = path.parse(current);\n    if (parsed.ext === \".html\") {\n      callback(current);\n    }\n  }\n}\n\n/**\n * @param {string} relativePath\n * @param {string} baseUrl\n * @returns {[string, priority]}\n */\nfunction toURL(relativePath, baseUrl) {\n  const parsed = path.parse(relativePath);\n  const name = parsed.name === \"index\"\n    ? \"\"\n    : parsed.name;\n  const url = baseUrl + path.join(\n    parsed.dir,\n    name\n  );\n  return [\n    url,\n    name === \"\"\n      ? 1\n      : 0.7\n  ];\n}\n\n/**\n * @param {string} src\n * @param {string} dest\n * @param {string} baseUrl\n */\nfunction generateSitemap(src, dest, baseUrl) {\n  /**\n   * @type {string[]}\n   */\n  const urls = [];\n\n  traverseHTMLs(\n    src,\n    (path) => {\n      urls.push(toURL(\n        path.replace(\n          src,\n          \"\"\n        ),\n        baseUrl\n      ));\n    }\n  );\n  const date = new Date().toISOString();\n\n  const sitemap = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset\n  xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9\n  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">\n${urls.\n  map(([\n    url,\n    priority\n  ]) => {\n    return `<url>\n  <loc>${url}</loc>\n  <lastmod>${date}</lastmod>\n  <priority>${priority}</priority>\n</url>`;\n  }).\n  join(\"\\n\")}\n</urlset>`;\n\n  fs.writeFileSync(\n    dest,\n    sitemap,\n    \"utf-8\"\n  );\n}\n\nmodule.exports = generateSitemap;\n"
  },
  {
    "path": "packages/website/scripts/llms.txt.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\n\nfunction generateLLMsTxt() {\n  // Read content from llms.txt.md file\n  const sourceFile = path.join(__dirname, \"llms.txt.md\");\n  const content = fs.readFileSync(sourceFile, \"utf8\");\n\n  const outDir = path.join(__dirname, \"../out\");\n  const outputPath = path.join(outDir, \"llms.txt\");\n\n  // Create out directory if it doesn't exist\n  if (!fs.existsSync(outDir)) {\n    fs.mkdirSync(outDir, {\n      recursive: true\n    });\n  }\n\n  // Write llms.txt file\n  fs.writeFileSync(outputPath, content, \"utf8\");\n\n  console.log(`✓ Generated llms.txt at ${outputPath}`);\n}\n\ngenerateLLMsTxt();\n"
  },
  {
    "path": "packages/website/scripts/llms.txt.md",
    "content": "# html-eslint\n\n> An ESLint plugin for HTML and HTML-like syntax (React JSX).\n\nhtml-eslint is an eslint-plugin that allows developers to lint HTML and HTML-like syntax. Whether you are working with standard HTML, HTML-in-JS libraries like Lit, React JSX/TSX, or various template engines, html-eslint helps enforce consistent formatting, accessibility, and best practices across your markup.\n\n---\n\n## Resources\n\n- **Documentation**: https://html-eslint.org/docs/getting-started\n- **HTML Rules**: https://html-eslint.org/docs/rules\n- **React Rules**: https://html-eslint.org/docs/react/rules\n- **Svelte Rules**: https://html-eslint.org/docs/svelte/rules\n- **Angular Template Rules**: https://html-eslint.org/docs/angular-template/rules\n- **Playground**: https://html-eslint.org/playground\n- **GitHub**: https://github.com/yeonjuan/html-eslint\n- **npm (html)**: https://www.npmjs.com/package/@html-eslint/eslint-plugin\n- **npm (react)**: https://www.npmjs.com/package/@html-eslint/eslint-plugin-react\n- **npm (svelte)**: https://www.npmjs.com/package/@html-eslint/eslint-plugin-svelte\n- **npm (angular-template)**: https://www.npmjs.com/package/@html-eslint/eslint-plugin-angular-template\n\n## 1. For HTML and HTML in JS (Lit)\n\nIf you need to lint standard `.html` files or are using libraries like `Lit`, you should use the `@html-eslint/eslint-plugin` package.\n\n### Basic Setup\n\n#### 1. Install the dependencies\n\n```bash\nnpm install --save-dev eslint @html-eslint/parser @html-eslint/eslint-plugin\n```\n\n#### 2. Configure\n\nSet up your ESLint configuration file (e.g., eslint.config.js) to use the HTML parser and plugin.\n\n```javascript\nimport { defineConfig } from \"eslint/config\";\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default defineConfig([\n    // lint html files\n    {\n        files: [\"**/*.html\"],\n        plugins: {\n            html,\n        },\n        language: \"html/html\",\n        rules: {\n            \"html/no-duplicate-class\": \"error\",\n        }\n    }\n]);\n```\n\n#### Helpful Links\n\n- Getting Started / Detailed Usage: https://html-eslint.org/docs/getting-started\n- All Available HTML Rules: https://html-eslint.org/docs/rules\n\n#### Template Engine Support\nhtml-eslint also provides support for popular template engines like Handlebars, ERB, Twig, and more.\n\n- Integrating Template Engines: https://html-eslint.org/docs/integrating-template-engine\n\n## 2. For React\nIf you are building React applications, html-eslint provides dedicated rules specifically tailored for React environments via the `@html-eslint/eslint-plugin-react` package.\n\n### Basic Setup\n\n#### 1. Install the dependency:\n\n```bash\nnpm install --save-dev eslint @html-eslint/eslint-plugin-react\n```\n\n#### 2. Configure:\nUpdate your configuration file to include the React-specific plugin and recommended rules.\n\n```javascript\nimport htmlReact from \"@html-eslint/eslint-plugin-react\";\n\nexport default [\n  {\n    files: [\"**/*.jsx\", \"**/*.tsx\"],\n    languageOptions: {\n      parserOptions: {\n        ecmaFeatures: {\n          jsx: true,\n        },\n      },\n    },\n    plugins: {\n      \"@html-eslint/react\": htmlReact,\n    },\n    rules: {\n      \"@html-eslint/react/no-invalid-attr-value\": \"error\",\n      \"@html-eslint/react/use-baseline\": \"error\",\n    },\n  },\n];\n```\n\n#### Helpful Links\n- React Getting Started / Detailed Usage: https://html-eslint.org/docs/react/getting-started\n- All Available React Rules: https://html-eslint.org/docs/react/rules\n\n## 3. For Svelte\n\nIf you are building Svelte applications, html-eslint provides dedicated rules specifically tailored for Svelte components via the `@html-eslint/eslint-plugin-svelte` package.\n\n### Basic Setup\n\n#### 1. Install the dependency:\n\n```bash\nnpm install --save-dev eslint @html-eslint/eslint-plugin-svelte\n```\n\n#### 2. Configure:\n\nUpdate your configuration file to include the Svelte-specific plugin and rules.\n\n```javascript\nimport htmlSvelte from \"@html-eslint/eslint-plugin-svelte\";\nimport svelteParser from \"svelte-eslint-parser\";\n\nexport default [\n  {\n    files: [\"**/*.svelte\"],\n    languageOptions: {\n      parser: svelteParser,\n    },\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    rules: {\n      \"@html-eslint/svelte/no-invalid-attr-value\": \"error\",\n      \"@html-eslint/svelte/no-duplicate-class\": \"error\",\n    },\n  },\n];\n```\n\n#### Helpful Links\n- Svelte Getting Started / Detailed Usage: https://html-eslint.org/docs/svelte/getting-started\n- All Available Svelte Rules: https://html-eslint.org/docs/svelte/rules\n\n## 4. For Angular Template\n\nIf you are building Angular applications, html-eslint provides dedicated rules specifically tailored for Angular templates via the `@html-eslint/eslint-plugin-angular-template` package.\n\n### Basic Setup\n\n#### 1. Install the dependency:\n\n```bash\nnpm install --save-dev eslint @html-eslint/eslint-plugin-angular-template\n```\n\n#### 2. Configure:\n\nUpdate your configuration file to include the Angular Template-specific plugin and rules.\n\n```javascript\nimport angularTemplate from \"@html-eslint/eslint-plugin-angular-template\";\nimport templateParser from \"@angular-eslint/template-parser\";\n\nexport default [\n  {\n    files: [\"**/*.html\"],\n    languageOptions: {\n      parser: templateParser,\n    },\n    plugins: {\n      \"@html-eslint/angular-template\": angularTemplate,\n    },\n    rules: {\n      \"@html-eslint/angular-template/no-invalid-attr-value\": \"error\",\n      \"@html-eslint/angular-template/no-duplicate-class\": \"error\",\n    },\n  },\n];\n```\n\n#### Helpful Links\n- Angular Template Getting Started / Detailed Usage: https://html-eslint.org/docs/angular-template/getting-started\n- All Available Angular Template Rules: https://html-eslint.org/docs/angular-template/rules\n"
  },
  {
    "path": "packages/website/scripts/robots.js",
    "content": "const path = require(\"path\");\nconst generateRobots = require(\"./generates/robots\");\n\ngenerateRobots(\n  path.join(\n    __dirname,\n    \"../out/robots.txt\"\n  ),\n  \"https://html-eslint.org/sitemap.xml\"\n);\n"
  },
  {
    "path": "packages/website/scripts/sitemap.js",
    "content": "const path = require(\"path\");\nconst generateSitemap = require(\"./generates/sitemap\");\n\ngenerateSitemap(\n  path.join(\n    __dirname,\n    \"../out\"\n  ),\n  path.join(\n    __dirname,\n    \"../out/sitemap.xml\"\n  ),\n  \"https://html-eslint.org\"\n);\n"
  },
  {
    "path": "packages/website/src/common.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer components {\n  .display1 {\n    font-weight: 700;\n    font-size: 40px;\n    line-height: 48px;\n  }\n  .display3 {\n    font-weight: 600;\n    font-size: 28px;\n    line-height: 36px;\n  }\n  .display4 {\n    font-weight: 600;\n    font-size: 24px;\n    line-height: 32px;\n  }\n  .display4 {\n    font-weight: 700;\n    font-size: 20px;\n    line-height: 28px;\n  }\n  .title4 {\n    font-weight: 600;\n    font-size: 18px;\n    line-height: 24px;\n  }\n  .title5 {\n    font-size: 14px;\n    font-weight: 500;\n    line-height: 24px;\n  }\n  .body2 {\n    font-weight: 500;\n    font-size: 16px;\n    line-height: 24px;\n  }\n  .body3 {\n    font-weight: 400;\n    font-size: 16;\n    line-height: 24px;\n  }\n  .body4 {\n    font-weight: 500;\n    font-size: 14px;\n    line-height: 20px;\n  }\n  .body5 {\n    font-weight: 400;\n    font-size: 14px;\n    line-height: 24px;\n  }\n  .body8 {\n    line-height: 16px;\n    font-size: 12px;\n    font-weight: 500;\n    letter-spacing: -0.5%;\n  }\n  .code1 {\n    font-optical-sizing: auto;\n    font-weight: 400;\n    font-size: 15px;\n    line-height: 24px;\n  }\n  .code2 {\n    font-weight: 500;\n    font-size: 14px;\n    line-height: 20px;\n  }\n  .md-list {\n    @apply list-disc body3 text-black-700 pl-[20px];\n  }\n  .md-listitem {\n    @apply my-[12px];\n  }\n  .md-p {\n    @apply body3 text-black-700 py-[6px] leading-[2];\n  }\n  .md-codespan {\n    @apply code1 text-black-700 bg-gray-200 border-[1px] border-gray-300 rounded-[6px] py-[1px] px-1;\n  }\n  .md-code-wrapper {\n    @apply mt-[12px] mb-[22px];\n  }\n  .md-code {\n    @apply !bg-gray-200 code2 rounded-b-[8px];\n  }\n  .md-code-no-filename {\n    @apply !bg-gray-200 code2 rounded-[8px];\n  }\n  .md-heading1 {\n    @apply display1 text-3xl text-black-900 my-[28px];\n  }\n  .md-heading2 {\n    @apply display3 text-2xl text-black-900 mb-3 mt-6;\n  }\n  .md-heading3 {\n    @apply  mb-2 mt-5 scroll-mt-[64px] title4;\n  }\n  .md-heading4 {\n    @apply mb-2 mt-12 title4 scroll-mt-[64px];\n  }\n  .md-wrapper {\n    @apply w-full pb-6 max-w-screen-lg md:pl-[40px] md:pr-[40px] m-auto;\n  }\n  .md-code-filename {\n    @apply flex bg-gray-300 text-black-700 code2 px-[20px] py-[12px] rounded-t-[8px];\n  }\n  .md-code-incorrect {\n    @apply !bg-gray-200 border-l-[#E94C6B] border-l-[3px] ml-[7px] rounded-r-[8px];\n  }\n  .md-code-correct {\n    @apply !bg-gray-200 border-l-[#5EBA94] border-l-[3px] ml-[7px] rounded-r-[8px];\n  }\n  h1,\n  h2,\n  h3,\n  h4 {\n    @apply scroll-mt-[76px];\n  }\n  .md-a {\n    @apply body3 text-accent hover:underline;\n  }\n  .md-table-wrapper {\n    @apply overflow-x-auto;\n  }\n  .md-table {\n    @apply border-collapse min-w-[700px] md:w-full;\n  }\n  .md-th {\n    @apply bg-gray-200 text-left body2 px-[20px] py-[12px] text-black-900;\n  }\n  .md-td {\n    @apply px-[20px] py-[12px] text-black-700 body3 border-b border-gray-300;\n  }\n}\n\n@layer base {\n  html {\n    font-family: \"Google Sans\", sans-serif;\n  }\n}\n"
  },
  {
    "path": "packages/website/src/components/footer.html",
    "content": "\n<footer class=\"border-t h-[150px] shadow-[0_-1px_0_0_#E8EBEF] body5 {{class}}\">\n  <section class=\"m-auto flex w-full md:max-w-[1200px] pt-[32px] pb-[54px] px-[24px]\">\n    <div class=\"flex flex-col text-black-500\">\n      <ul class=\"flex\">\n        <li>\n          <a\n            class=\"border-r border-black-500 pr-2\"\n            href=\"https://github.com/yeonjuan/html-eslint/issues\"\n            rel=\"noreferrer\"\n            target=\"_blank\"\n          >Report issue</a>\n        </li>\n        <li>\n          <a\n            class=\"border-r border-black-500 px-2\"\n            href=\"~/src/privacy-policy.html\"\n            rel=\"noreferrer\"\n            target=\"_blank\"\n          >Privacy Policy</a>\n        </li>\n        <li>\n          <a\n            class=\"pl-2\"\n            href=\"~/src/docs/faq.html\"\n            rel=\"noreferrer\"\n            target=\"_blank\"\n          >FAQs</a>\n        </li>\n      </ul>\n      <span class=\"text-black-500 mt-2\">Copyright © 2025 html-eslint</span>\n    </div>\n    <div class=\"ml-auto\">\n      <a href=\"https://github.com/yeonjuan/html-eslint\">\n        <img\n          alt=\"github\"\n          height=\"19\"\n          src=\"~/src/assets/github.svg\"\n          width=\"19\"\n        >\n      </a>\n    </div>\n  </section>\n</footer>\n"
  },
  {
    "path": "packages/website/src/components/header/header.html",
    "content": "<style>\n  .burger {\n  cursor: pointer;\n  justify-content: space-between;\n  flex-direction: column;\n}\n\n.burger > div {\n  height: 2px;\n  transition: 0.2s ease-out;\n  z-index: 999;\n}\n\n.menuInput:checked ~ .burger > div:nth-child(1) {\n  transform: translateY(6.5px) rotate(45deg);\n}\n.menuInput:checked ~ .burger > div:nth-child(2) {\n  opacity: 0;\n}\n.menuInput:checked ~ .burger > div:nth-child(3) {\n  transform: translateY(-6.5px) rotate(-45deg);\n}\n</style>\n<header class=\"flex fixed top-0 bg-white w-full z-50 flex-row items-center h-[66px] px-[20px] drop-shadow-[0_1px_#E8EBEF]\">\n  <a class=\"flex flex-row items-center md:py-0 no-underline text-black text-base text-[20px] font-[800]\" href=\"/\">\n    <img\n      class=\"inline w-[26px] mr-1\"\n      alt=\"\"\n      height=\"36\"\n      src=\"~/src/assets/logo_48x48.svg\"\n      width=\"36\"\n    >\n    html-eslint\n  </a>\n  <span class=\"body8 inline-block bg-gray-200 text-black-500 rounded-[12px] px-[8px] py-[5px] mx-[8px]\">\n    v{{ version }}\n  </span>\n  <input\n    id=\"menu\"\n    type=\"checkbox\"\n    class=\"menuInput peer sr-only hidden\"\n    aria-hidden=\"true\"\n    tabindex=\"-1\"\n  >\n  <label\n    class=\"burger flex flex-col justify-between ml-auto h-[21px] w-[21px] px-[1px] py-[3px] [&>div]:h-[2px] [&>div]:w-[18px] [&>div]:bg-black-900 md:hidden hover:cursor-pointer\"\n    aria-label=\"menu button\"\n    for=\"menu\"\n  >\n    <div></div>\n    <div></div>\n    <div></div>\n  </label>\n  <module href=\"/components/header/nav.html\"></module>\n</header>\n\n"
  },
  {
    "path": "packages/website/src/components/header/nav.html",
    "content": "<nav class=\"fixed transition-[max-height] duration-200 overflow-hidden max-h-0 top-[67px] left-[0px] peer-checked:max-h-[200px] bg-white w-full md:ml-auto md:flex md:top-auto md:max-h-max md:relative md:w-auto md:peer-checked:translate-y-0\">\n  <ul class=\"body2 flex flex-col text-black-500 p-[12px] [&>li>a]:px-[16px] [&>li>a]:py-[12px] [&>li]:rounded-[10px] md:[&>li>a]:px-0 md:[&>li>a]:py-0 md:title5 md:gap-[24px] md:flex-row md:p-0\">\n    <li\n      class=\"hover:text-black-900 hover:bg-gray-200 md:hover:bg-white\"\n      data-nav=\"/docs\"\n      data-nav-active=\"text-black-900\"\n    >\n      <a class=\"w-full h-full flex justify-center flex-col\" href=\"~/src/docs/getting-started.html\">\n        <span>HTML Plugin</span>\n      </a>\n    </li>\n    <li\n      class=\"hover:text-black-900 hover:bg-gray-200 md:hover:bg-white\"\n      data-nav=\"/docs/react\"\n      data-nav-active=\"text-black-900\"\n    >\n      <a class=\"w-full h-full flex justify-center flex-col\" href=\"~/src/docs/react/getting-started.html\">\n        <span>React Plugin</span>\n      </a>\n    </li>\n    <li\n      class=\"hover:text-black-900 hover:bg-gray-200 md:hover:bg-white\"\n      data-nav=\"/docs/svelte\"\n      data-nav-active=\"text-black-900\"\n    >\n      <a class=\"w-full h-full flex justify-center flex-col\" href=\"~/src/docs/svelte/getting-started.html\">\n        <span>Svelte Plugin</span>\n      </a>\n    </li>\n    <li\n      class=\"hover:text-black-900 hover:bg-gray-200 md:hover:bg-white\"\n      data-nav=\"/docs/angular-template\"\n      data-nav-active=\"text-black-900\"\n    >\n      <a class=\"w-full h-full flex justify-center flex-col\" href=\"~/src/docs/angular-template/getting-started.html\">\n        <span>Angular Template Plugin</span>\n      </a>\n    </li>\n    <li\n      class=\"hover:text-black-900 hover:bg-gray-200 md:hover:bg-white\"\n      data-nav=\"/playground\"\n      data-nav-active=\"text-black-900\"\n    >\n      <a class=\"w-full h-full flex justify-center flex-col\" href=\"~/src/playground.html\">Playground</a>\n    </li>\n    <li class=\"hover:text-black-900 hover:bg-gray-200 md:hover:bg-white\">\n      <a class=\"w-full h-full flex justify-center flex-col\" href=\"https://github.com/yeonjuan/html-eslint\">\n        <img\n          class=\"hidden md:block\"\n          alt=\"github\"\n          height=\"26\"\n          src=\"~/src/assets/github.svg\"\n          width=\"26\"\n        >\n        <span class=\"md:hidden\">Github</span>\n      </a>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "packages/website/src/components/home.html",
    "content": "<div class=\"flex flex-col w-full text-left justify-center md:text-center items-center\">\n  <section class=\"pt-[24px] md:pt-[60px] pb-[80px] md:pb-[80px] md:max-w-[1200px] flex flex-col items-center\">\n    <img\n      alt=\"HTML ESLint Logo\"\n      height=\"160\"\n      src=\"~/src/assets/logo_320x320.png\"\n      width=\"160\"\n    >\n    <h1 class=\"display1 text-[40px]\">HTML ESLINT</h1>\n    <p class=\"text-black-900 text-center text-lg md:text-xl my-6 md:my-8\">\n      ESLint plugins for formatting and linting HTML, and React/JSX.\n    </p>\n\n    <div class=\"w-full max-w-[900px] flex flex-col gap-8 mt-8 mb-12\">\n      <div\n        class=\"bg-white border-2 border-gray-300 rounded-xl p-6 shadow-sm\"\n        itemscope\n        itemtype=\"https://schema.org/SoftwareApplication\"\n      >\n        <h2 class=\"text-2xl font-bold text-gray-900 mb-2 flex items-center gap-2 justify-center\">\n          <span class=\"text-accent\" itemprop=\"name\">HTML Plugin</span>\n        </h2>\n        <div class=\"text-center mb-4\">\n          <a\n            class=\"text-sm text-gray-700 hover:text-accent transition-colors font-mono\"\n            href=\"https://www.npmjs.com/package/@html-eslint/eslint-plugin\"\n            itemprop=\"downloadUrl\"\n            rel=\"noreferrer noopener\"\n            target=\"_blank\"\n          >@html-eslint/eslint-plugin</a>\n        </div>\n        <p class=\"text-gray-700 mb-4 leading-relaxed\" itemprop=\"description\">\n          Lint and format HTML files with 70+ rules. Supports HTML in JavaScript template literals and integration with template engines like Handlebars, ERB, and TWIG.\n        </p>\n        <meta content=\"DeveloperApplication\" itemprop=\"applicationCategory\">\n        <meta content=\"Cross-platform\" itemprop=\"operatingSystem\">\n        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n          <a class=\"bg-accent border border-accent px-5 py-3 text-white rounded-lg hover:bg-accent/90 transition-colors text-center font-medium\" href=\"~/src/docs/getting-started.html\">\n            Getting Started\n          </a>\n          <a class=\"bg-white border-2 border-gray-300 px-5 py-3 text-gray-900 rounded-lg hover:border-accent hover:text-accent transition-colors text-center font-medium\" href=\"~/src/docs/rules.html\">\n            All Rules\n          </a>\n          <a class=\"bg-white border-2 border-gray-300 px-5 py-3 text-gray-900 rounded-lg hover:border-accent hover:text-accent transition-colors text-center font-medium\" href=\"~/src/docs/getting-started.html#lint-html-code-inside-javascript-template-literals\">\n            HTML in JS\n          </a>\n          <a class=\"bg-white border-2 border-gray-300 px-5 py-3 text-gray-900 rounded-lg hover:border-accent hover:text-accent transition-colors text-center font-medium\" href=\"~/src/docs/integrating-template-engine.html\">\n            Template Syntax Engine\n          </a>\n        </div>\n      </div>\n\n      <div\n        class=\"bg-white border-2 border-gray-300 rounded-xl p-6 shadow-sm\"\n        itemscope\n        itemtype=\"https://schema.org/SoftwareApplication\"\n      >\n        <h2 class=\"text-2xl font-bold text-gray-900 mb-2 flex items-center gap-2 justify-center\">\n          <span class=\"text-accent\" itemprop=\"name\">React Plugin</span>\n        </h2>\n        <div class=\"text-center mb-4\">\n          <a\n            class=\"text-sm text-gray-700 hover:text-accent transition-colors font-mono\"\n            href=\"https://www.npmjs.com/package/@html-eslint/eslint-plugin-react\"\n            itemprop=\"downloadUrl\"\n            rel=\"noreferrer noopener\"\n            target=\"_blank\"\n          >@html-eslint/eslint-plugin-react</a>\n        </div>\n        <p class=\"text-gray-700 mb-4 leading-relaxed\" itemprop=\"description\">\n          Validate HTML attribute values and enforce baseline browser compatibility directly in your React/JSX code. Catch invalid attributes and ensure cross-browser support.\n        </p>\n        <meta content=\"DeveloperApplication\" itemprop=\"applicationCategory\">\n        <meta content=\"Cross-platform\" itemprop=\"operatingSystem\">\n        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n          <a class=\"bg-accent border border-accent px-5 py-3 text-white rounded-lg hover:bg-accent/90 transition-colors text-center font-medium\" href=\"~/src/docs/react/getting-started.html\">\n            Getting Started\n          </a>\n          <a class=\"bg-white border-2 border-gray-300 px-5 py-3 text-gray-900 rounded-lg hover:border-accent hover:text-accent transition-colors text-center font-medium\" href=\"~/src/docs/react/rules.html\">\n            All Rules\n          </a>\n        </div>\n      </div>\n\n      <div\n        class=\"bg-white border-2 border-gray-300 rounded-xl p-6 shadow-sm\"\n        itemscope\n        itemtype=\"https://schema.org/SoftwareApplication\"\n      >\n        <h2 class=\"text-2xl font-bold text-gray-900 mb-2 flex items-center gap-2 justify-center\">\n          <span class=\"text-accent\" itemprop=\"name\">Svelte Plugin</span>\n        </h2>\n        <div class=\"text-center mb-4\">\n          <a\n            class=\"text-sm text-gray-700 hover:text-accent transition-colors font-mono\"\n            href=\"https://www.npmjs.com/package/@html-eslint/eslint-plugin-svelte\"\n            itemprop=\"downloadUrl\"\n            rel=\"noreferrer noopener\"\n            target=\"_blank\"\n          >@html-eslint/eslint-plugin-svelte</a>\n        </div>\n        <p class=\"text-gray-700 mb-4 leading-relaxed\" itemprop=\"description\">\n          Lint HTML elements and attributes in Svelte components. Validate attribute values and enforce browser compatibility standards in your Svelte templates.\n        </p>\n        <meta content=\"DeveloperApplication\" itemprop=\"applicationCategory\">\n        <meta content=\"Cross-platform\" itemprop=\"operatingSystem\">\n        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n          <a class=\"bg-accent border border-accent px-5 py-3 text-white rounded-lg hover:bg-accent/90 transition-colors text-center font-medium\" href=\"~/src/docs/svelte/getting-started.html\">\n            Getting Started\n          </a>\n          <a class=\"bg-white border-2 border-gray-300 px-5 py-3 text-gray-900 rounded-lg hover:border-accent hover:text-accent transition-colors text-center font-medium\" href=\"~/src/docs/svelte/rules.html\">\n            All Rules\n          </a>\n        </div>\n      </div>\n\n      <div class=\"bg-white border-2 border-gray-300 rounded-xl p-6 shadow-sm\">\n        <h2 class=\"text-2xl font-bold text-gray-900 mb-2 flex items-center gap-2 justify-center\">\n          <span class=\"text-accent\">Angular Template</span>\n        </h2>\n        <div class=\"text-center mb-4\">\n          <a\n            class=\"text-sm text-gray-700 hover:text-accent transition-colors font-mono\"\n            href=\"https://www.npmjs.com/package/@html-eslint/eslint-plugin-angular-template\"\n            rel=\"noreferrer noopener\"\n            target=\"_blank\"\n          >@html-eslint/eslint-plugin-angular-template</a>\n        </div>\n        <p class=\"text-gray-700 mb-4 leading-relaxed\">\n          Validate HTML elements and attributes in Angular templates. Ensure baseline browser compatibility and catch invalid attributes in your Angular component templates.\n        </p>\n        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n          <a class=\"bg-accent border border-accent px-5 py-3 text-white rounded-lg hover:bg-accent/90 transition-colors text-center font-medium\" href=\"~/src/docs/angular-template/getting-started.html\">\n            Getting Started\n          </a>\n          <a class=\"bg-white border-2 border-gray-300 px-5 py-3 text-gray-900 rounded-lg hover:border-accent hover:text-accent transition-colors text-center font-medium\" href=\"~/src/docs/angular-template/rules.html\">\n            All Rules\n          </a>\n        </div>\n      </div>\n\n      <div class=\"bg-accent/5 border-2 border-accent rounded-xl p-6 shadow-sm text-center\">\n        <h2 class=\"text-2xl font-bold text-gray-900 mb-4\">Try it now</h2>\n        <a class=\"bg-accent border border-accent px-8 py-3 text-white rounded-lg hover:bg-accent/90 transition-colors inline-block font-medium text-lg\" href=\"~/src/playground.html\">\n          Open Playground\n        </a>\n      </div>\n    </div>\n\n    <p class=\"flex justify-center flex-col items-center text-gray-900 mt-12\">\n      <span>\n        If you'd like to support html-eslint, please consider\n        <a\n          class=\"text-accent underline hover:no-underline\"\n          href=\"https://github.com/yeonjuan/html-eslint\"\n          rel=\"noreferrer noopener\"\n          target=\"_blank\"\n        >starring it on GitHub</a>\n        or making a donation!\n      </span>\n\n      <a\n        class=\"mt-12\"\n        href=\"https://www.buymeacoffee.com/yeonjuan93p\"\n        rel=\"noreferrer noopener\"\n        target=\"_blank\"\n      >\n        <img\n          style=\"height: 40px !important;width: 144px !important;\"\n          alt=\"Buy Me A Coffee\"\n          height=\"80\"\n          src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\"\n          width=\"144\"\n        >\n      </a>\n    </p>\n  </section>\n</div>\n"
  },
  {
    "path": "packages/website/src/components/layout.html",
    "content": "<script locals>\n  module.exports = {\n    version: locals.version\n  }\n</script>\n<!doctype html>\n<html class=\"light\" lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <block name=\"meta\">\n    </block>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\">\n    <link href=\"https://fonts.googleapis.com\" rel=\"preconnect\">\n    <link\n      crossorigin\n      href=\"https://fonts.gstatic.com\"\n      rel=\"preconnect\"\n    >\n    <script async src=\"https://www.googletagmanager.com/gtag/js?id=G-JNELG2PQ3Z\"></script>\n    <script>\n      window.dataLayer = window.dataLayer || [];\n      function gtag(){dataLayer.push(arguments);}\n      gtag('js', new Date());\n      gtag('config', 'G-JNELG2PQ3Z');\n    </script>\n    <link href=\"~/src/highlight.scss\" rel=\"stylesheet\">\n    <link href=\"~/src/common.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css2?family=Google+Sans:ital,opsz,wght@0,17..18,400..700;1,17..18,400..700&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap\" rel=\"stylesheet\">\n    <meta content=\"html-eslint\" property=\"og:site_name\">\n    <meta content=\"website\" property=\"og:type\">\n    <meta content=\"https://html-eslint.org\" property=\"og:url\">\n    <meta content=\"~/src/assets/logo_506x253.png\" property=\"og:image\">\n    <meta content=\"506\" property=\"og:image:width\">\n    <meta content=\"253\" property=\"og:image:height\">\n    <meta content=\"image/png\" property=\"og:image:type\">\n    <meta content=\"en\" property=\"og:locale\">\n    <meta content=\"summary_large_image\" name=\"twitter:card\">\n    <meta content=\"ESLint plugin for linting HTML.\" name=\"twitter:title\">\n    <block name=\"head\"></block>\n    <meta content=\"Find and fix problems in your HTML code\" name=\"twitter:description\">\n    <meta content=\"~/src/assets/logo_506x253.png\" name=\"twitter:image\">\n    <link href=\"~/src/assets/logo_48x48.svg\" rel=\"icon\">\n    <link\n      type=\"image/png\"\n      href=\"~/src/assets/logo_32x32.png\"\n      rel=\"icon\"\n      sizes=\"32x32\"\n    >\n    <link\n      type=\"image/png\"\n      href=\"~/src/assets/logo_16x16.png\"\n      rel=\"icon\"\n      sizes=\"16x16\"\n    >\n    <link\n      href=\"~/src/assets/logo_180x180.png\"\n      rel=\"apple-touch-icon\"\n      sizes=\"180x180\"\n    >\n  </head>\n  <body class=\"text-base relative\">\n    <module href=\"/components/header/header.html\" locals='{\"version\": \"{{version}}\"}'></module>\n    <main class=\"relative pt-[66px] px-[20px] md:flex\">\n      <block name=\"menu\"></block>\n      <block name=\"nav\"></block>\n      <block name=\"content\"></block>\n      <div id=\"overlay\" class=\"hidden md:hidden fixed inset-0 bg-black/20 backdrop-blur-sm dark:bg-slate-900/80 h-full\">\n      </div>\n    </main>\n    <block name=\"footer\"></block>\n    <script src=\"~/src/scripts/layout.js\"></script>\n  </body>\n</html>\n\n\n"
  },
  {
    "path": "packages/website/src/components/nav-angular.html",
    "content": "<script locals>\n  module.exports = {\n    list: locals.navsAngularTemplate\n  }\n</script>\n<div class=\"font-black md:pl-[280px] w-full md:w-[200px]\">\n  <button\n    id=\"nav-button\"\n    type=\"button\"\n    class=\"mt-[17px] flex md:hidden body4 text-black-700 w-full px-[16px] py-[12px] border-gray-300 border rounded-[6px]\"\n  >\n    Menu\n    <img\n      class=\"rotate-90 ml-auto\"\n      alt=\"\"\n      height=\"20\"\n      src=\"~/src/assets/icon-chevron-right.svg\"\n      width=\"20\"\n    >\n  </button>\n  <aside id=\"nav\" class=\"hidden w-full border border-gray-300 border-t-0 bg-white md:h-[calc(100vh-66px)] md:overflow-y-auto md:block md:w-[280px] md:top-0 md:mt-[66px] md:fixed md:left-0 md:pb-[60px]\">\n    <div class=\"flex flex-col justify-center pr-4 pt-4 md:hidden\">\n      <button\n        id=\"nav-close-btn\"\n        type=\"button\"\n        class=\"hidden ml-auto w-[24px] h-[24px]\"\n      >\n        <img\n          alt=\"\"\n          height=\"21\"\n          src=\"~/src/assets/icon-close.svg\"\n          width=\"21\"\n        >\n      </button>\n    </div>\n    <ul class=\"mt-[22px] px-[12px] [&>li]:px-[12px] [&>li]:mb-[12px]\">\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/angular-template/getting-started.html\">\n          <span class=\"title5\">Getting Started</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/angular-template/rules.html\">\n          <span class=\"title5\">Rules</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <module href=\"/components/nav-list.html\" locals='{ \"list\": {{list}} }'>\n      </module>\n    </ul>\n  </aside>\n</div>\n"
  },
  {
    "path": "packages/website/src/components/nav-list.html",
    "content": "<!-- eslint-disable html/require-li-container -->\n<div>\n  <label class=\"nav-list-title flex pl-2 pb-2\">\n    <content></content>\n  </label>\n  <ul class=\"pl-1 [&>li]:pl-3 [&>li]:py-[4px] [&>li]:border-l [&>li]:border-slate-300 body4 md:body5\">\n    <each loop=\"a, index in list\">\n      <li\n        class=\"hover:border-slate-800 cursor-pointer text-black-500 hover:text-black-900\"\n        data-nav=\"/docs/rules/{{a[0]}}\"\n        data-nav-active=\"!border-slate-800 !text-slate-900\"\n      >\n        <a class=\"w-full no-underline inline-block\" href=\"{{a[1]}}\">\n          <if condition=\"a[2]\">\n            <s>{{a[0]}} (deprecated)</s>\n          </if>\n          <else>{{a[0]}}</else>\n        </a>\n      </li>\n    </each>\n  </ul>\n</div>\n"
  },
  {
    "path": "packages/website/src/components/nav-react.html",
    "content": "<script locals>\n  module.exports = {\n    navs: locals.navsReact\n  }\n</script>\n<div class=\"font-black md:pl-[280px] w-full md:w-[200px]\">\n  <button\n    id=\"nav-button\"\n    type=\"button\"\n    class=\"mt-[17px] flex md:hidden body4 text-black-700 w-full px-[16px] py-[12px] border-gray-300 border rounded-[6px]\"\n  >\n    Menu\n    <img\n      class=\"rotate-90 ml-auto\"\n      alt=\"\"\n      height=\"20\"\n      src=\"~/src/assets/icon-chevron-right.svg\"\n      width=\"20\"\n    >\n  </button>\n  <aside id=\"nav\" class=\"hidden w-full border border-gray-300 border-t-0 bg-white md:h-[calc(100vh-66px)] md:overflow-y-auto md:block md:w-[280px] md:top-0 md:mt-[66px] md:fixed md:left-0 md:pb-[60px]\">\n    <div class=\"flex flex-col justify-center pr-4 pt-4 md:hidden\">\n      <button\n        id=\"nav-close-btn\"\n        type=\"button\"\n        class=\"hidden ml-auto w-[24px] h-[24px]\"\n      >\n        <img\n          alt=\"\"\n          height=\"21\"\n          src=\"~/src/assets/icon-close.svg\"\n          width=\"21\"\n        >\n      </button>\n    </div>\n    <ul class=\"mt-[22px] px-[12px] [&>li]:px-[12px] [&>li]:mb-[12px]\">\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/react/getting-started.html\">\n          <span class=\"title5\">Getting Started</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/react/rules.html\">\n          <span class=\"title5\">Rules</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <module href=\"/components/nav-list.html\" locals='{ \"list\": {{navs}} }'>\n      </module>\n    </ul>\n  </aside>\n</div>\n"
  },
  {
    "path": "packages/website/src/components/nav-svelte.html",
    "content": "<script locals>\n  module.exports = {\n    navs: locals.navsSvelte\n  }\n</script>\n<div class=\"font-black md:pl-[280px] w-full md:w-[200px]\">\n  <button\n    id=\"nav-button\"\n    type=\"button\"\n    class=\"mt-[17px] flex md:hidden body4 text-black-700 w-full px-[16px] py-[12px] border-gray-300 border rounded-[6px]\"\n  >\n    Menu\n    <img\n      class=\"rotate-90 ml-auto\"\n      alt=\"\"\n      height=\"20\"\n      src=\"~/src/assets/icon-chevron-right.svg\"\n      width=\"20\"\n    >\n  </button>\n  <aside id=\"nav\" class=\"hidden w-full border border-gray-300 border-t-0 bg-white md:h-[calc(100vh-66px)] md:overflow-y-auto md:block md:w-[280px] md:top-0 md:mt-[66px] md:fixed md:left-0 md:pb-[60px]\">\n    <div class=\"flex flex-col justify-center pr-4 pt-4 md:hidden\">\n      <button\n        id=\"nav-close-btn\"\n        type=\"button\"\n        class=\"hidden ml-auto w-[24px] h-[24px]\"\n      >\n        <img\n          alt=\"\"\n          height=\"21\"\n          src=\"~/src/assets/icon-close.svg\"\n          width=\"21\"\n        >\n      </button>\n    </div>\n    <ul class=\"mt-[22px] px-[12px] [&>li]:px-[12px] [&>li]:mb-[12px]\">\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/svelte/getting-started.html\">\n          <span class=\"title5\">Getting Started</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/svelte/rules.html\">\n          <span class=\"title5\">Rules</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <module href=\"/components/nav-list.html\" locals='{ \"list\": {{navs}} }'>\n      </module>\n    </ul>\n  </aside>\n</div>\n"
  },
  {
    "path": "packages/website/src/components/nav.html",
    "content": "<script locals>\n  module.exports = {\n    projectNavs: locals.navs.project,\n    bestPracticeNavs: locals.navs.bestPractice,\n    seoNavs: locals.navs.seo,\n    accessibilityNavs: locals.navs.accessibility,\n    styleNavs: locals.navs.style\n  }\n</script>\n<div class=\"font-black md:pl-[280px] w-full md:w-[200px]\">\n  <button\n    id=\"nav-button\"\n    type=\"button\"\n    class=\"mt-[17px] flex md:hidden body4 text-black-700 w-full px-[16px] py-[12px] border-gray-300 border rounded-[6px]\"\n  >\n    Menu\n    <img\n      class=\"rotate-90 ml-auto\"\n      alt=\"\"\n      height=\"20\"\n      src=\"~/src/assets/icon-chevron-right.svg\"\n      width=\"20\"\n    >\n  </button>\n  <aside id=\"nav\" class=\"hidden w-full border border-gray-300 border-t-0 bg-white md:h-[calc(100vh-66px)] md:overflow-y-auto md:block md:w-[280px] md:top-0 md:mt-[66px] md:fixed md:left-0 md:pb-[60px]\">\n    <div class=\"flex flex-col justify-center pr-4 pt-4 md:hidden\">\n      <button\n        id=\"nav-close-btn\"\n        type=\"button\"\n        class=\"hidden ml-auto w-[24px] h-[24px]\"\n      >\n        <img\n          alt=\"\"\n          height=\"21\"\n          src=\"~/src/assets/icon-close.svg\"\n          width=\"21\"\n        >\n      </button>\n    </div>\n    <ul class=\"mt-[22px] px-[12px] [&>li]:px-[12px] [&>li]:mb-[12px]\">\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/getting-started.html\">\n          <span class=\"title5\">Getting Started</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/integrating-template-engine.html\">\n          <span class=\"title5\">Integrating Template Engine</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/developer-guide.html\">\n          <span class=\"title5\">Developer Guide</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/faq.html\">\n          <span class=\"title5\">FAQs</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <a class=\"w-full flex items-center\" href=\"~/src/docs/rules.html\">\n          <span class=\"title5\">Rules</span>\n          <img\n            class=\"ml-auto\"\n            alt=\"\"\n            height=\"20\"\n            src=\"~/src/assets/icon-chevron-right.svg\"\n            width=\"20\"\n          >\n        </a>\n      </li>\n      <li>\n        <module href=\"/components/nav-list.html\" locals='{ \"id\": \"best-practice-nav\", \"list\": {{bestPracticeNavs}} }'>\n          <span class=\"font-medium text-sm\">\n            Best Practice\n          </span>\n        </module>\n      </li>\n      <li>\n        <module href=\"/components/nav-list.html\" locals='{ \"id\": \"seo-nav\", \"list\": {{seoNavs}} }'>\n          <span class=\"title5\">\n            SEO\n          </span>\n        </module>\n      </li>\n      <li>\n        <module href=\"/components/nav-list.html\" locals='{ \"id\": \"accessibility-nav\", \"list\": {{accessibilityNavs}} }'>\n          <span class=\"title5\">\n            Accessibility\n          </span>\n        </module>\n      </li>\n      <li>\n        <module href=\"/components/nav-list.html\" locals='{ \"id\": \"style-nav\", \"list\": {{styleNavs}} }'>\n          <span class=\"title5\">\n            Style\n          </span>\n        </module>\n      </li>\n    </ul>\n  </aside>\n</div>\n"
  },
  {
    "path": "packages/website/src/components/playground.html",
    "content": "<div class=\"w-full\">\n  <style>\n      .CodeMirror {\n          font-size: 14px;\n      }\n      .editor_error {\n  text-decoration: underline dashed red;\n}\n  </style>\n  <h1 class=\"sr-only\">Playground</h1>\n  <div class=\"flex flex-col mt-3 px-2 w-full\">\n    <div id=\"language-tabs\" class=\"flex\">\n      <div class=\"py-2 px-4 rounded-t cursor-pointer\" data-language=\"html\">\n        <h2>HTML</h2>\n      </div>\n      <div class=\"p-2 py-2 px-4 rounded-t cursor-pointer\" data-language=\"javascript\">\n        <h2>JavaScript </h2>\n      </div>\n      <div class=\"p-2 py-2 px-4 rounded-t cursor-pointer\" data-language=\"jsx\">\n        <h2>JSX</h2>\n      </div>\n    </div>\n    <div class=\"flex-1 min-h-[300px] border-[1px] border-slate rounded md:min-w-[400px] mb-2\">\n      <textarea id=\"code-editor\"></textarea>\n    </div>\n    <div class=\"flex flex-col md:flex-row flex-1 h-[400px] gap-2\">\n      <div class=\"flex-1 min-h-[300px]\">\n        <div>\n          <span class=\"inline-block p-2 rounded-t\">.eslintrc.json</span>\n        </div>\n        <div class=\"border-[1px] border-slate rounded md:min-w-[400px] h-[400px]\">\n          <textarea id=\"config-editor\"></textarea>\n        </div>\n      </div>\n      <div class=\"flex-1\">\n        <div class=\"flex flex-col w-full\">\n          <ul id=\"tabs\" class=\"[&>li]:inline-block [&>li]:p-2 [&>li]:border-[1px] [&>li]:rounded-t [&>li]:border-b-0 [&>li]:border-transparent\">\n            <li class=\"tab cursor-pointer !border-gray-200\" data-tab=\"errors\">\n              Errors\n            </li>\n            <li class=\"tab cursor-pointer\" data-tab=\"fixed\">\n              Fixed\n            </li>\n          </ul>\n        </div>\n        <div class=\"border-[1px] border-slate rounded flex-grow p-2 bg-gray-100 h-[400px] overflow-scroll\">\n          <div id=\"errors\" class=\"block\">\n          </div>\n          <pre id=\"fixed\" class=\"hidden text-sm\">\n          </pre>\n        </div>\n      </div>\n    </div>\n    <script type=\"module\" src=\"~/src/scripts/playground/app.js\"></script>\n    <script>\n          const $tabs = document.getElementById(\"tabs\");\n          $tabs.addEventListener(\"click\", (e) => {\n            const $errors = document.getElementById(\"errors\");\n            const $fixed = document.getElementById(\"fixed\");\n\n            if (e.target) {\n              let $openTarget = null;\n              let $closeTarget = null;\n\n              if (e.target.dataset.tab === \"errors\") {\n                $openTarget = $errors;\n                $closeTarget = $fixed;\n              } else if (e.target.dataset.tab === \"fixed\") {\n                $openTarget = $fixed;\n                $closeTarget = $errors;\n              }\n              if ($openTarget || $closeTarget) {\n                document.querySelectorAll(\".tab\").forEach(elem => {\n                  elem.classList.remove(\"!border-gray-200\");\n                })\n              }\n\n              if ($openTarget) {\n                $openTarget.classList.remove(\"hidden\");\n                $openTarget.classList.add(\"block\");\n                e.target.classList.add(\"!border-gray-200\");\n              }\n              if ($closeTarget) {\n                $closeTarget.classList.remove(\"block\");\n                $closeTarget.classList.add(\"hidden\");\n              }\n            }\n          })\n    </script>\n  </div>\n</div>\n\n"
  },
  {
    "path": "packages/website/src/components/template-angular.html",
    "content": "<extends src=\"components/layout.html\">\n  <block name=\"meta\">\n    {{meta}}\n  </block>\n  <block name=\"nav\">\n    <include src=\"components/nav-angular.html\"></include>\n  </block>\n  <block name=\"content\">\n    <include src=\"{{path}}\"></include>\n  </block>\n  <block name=\"footer\">\n    <module href=\"/components/footer.html\" locals='{\"class\":\"ml-0 md:ml-[280px]\"}'></module>\n  </block>\n</extends>\n"
  },
  {
    "path": "packages/website/src/components/template-react.html",
    "content": "<extends src=\"components/layout.html\">\n  <block name=\"meta\">\n    {{meta}}\n  </block>\n  <block name=\"nav\">\n    <include src=\"components/nav-react.html\"></include>\n  </block>\n  <block name=\"content\">\n    <include src=\"{{path}}\"></include>\n  </block>\n  <block name=\"footer\">\n    <module href=\"/components/footer.html\" locals='{\"class\":\"ml-0 md:ml-[280px]\"}'></module>\n  </block>\n</extends>\n"
  },
  {
    "path": "packages/website/src/components/template-svelte.html",
    "content": "<extends src=\"components/layout.html\">\n  <block name=\"meta\">\n    {{meta}}\n  </block>\n  <block name=\"nav\">\n    <include src=\"components/nav-svelte.html\"></include>\n  </block>\n  <block name=\"content\">\n    <include src=\"{{path}}\"></include>\n  </block>\n  <block name=\"footer\">\n    <module href=\"/components/footer.html\" locals='{\"class\":\"ml-0 md:ml-[280px]\"}'></module>\n  </block>\n</extends>\n"
  },
  {
    "path": "packages/website/src/components/template.html",
    "content": "<extends src=\"components/layout.html\">\n  <block name=\"meta\">\n    {{meta}}\n  </block>\n  <block name=\"nav\">\n    <include src=\"components/nav.html\"></include>\n  </block>\n  <block name=\"content\">\n    <include src=\"{{path}}\"></include>\n  </block>\n  <block name=\"footer\">\n    <module href=\"/components/footer.html\" locals='{\"class\":\"ml-0 md:ml-[280px]\"}'></module>\n  </block>\n</extends>\n"
  },
  {
    "path": "packages/website/src/docs/.gitkeep",
    "content": ""
  },
  {
    "path": "packages/website/src/highlight.scss",
    "content": "@import \"highlight.js/scss/github.scss\";\n.hljs {\n  background: none;\n}\n"
  },
  {
    "path": "packages/website/src/index.html",
    "content": "<!doctype html>\n<extends src=\"components/layout.html\">\n  <block name=\"meta\">\n    <title>html-eslint</title>\n    <link href=\"https://html-eslint.org/\" rel=\"canonical\">\n    <script type=\"application/ld+json\">\n    {\n      \"@context\": \"https://schema.org\",\n      \"@graph\": [\n        {\n          \"@type\": \"SoftwareApplication\",\n          \"@id\": \"https://html-eslint.org/#software\",\n          \"name\": \"html-eslint\",\n          \"url\": \"https://html-eslint.org/\",\n          \"applicationCategory\": \"DeveloperApplication\",\n          \"operatingSystem\": \"Cross-platform\",\n          \"description\": \"An ESLint plugin for linting and fixing HTML, React (JSX), Svelte, and Angular templates.\",\n          \"keywords\": \"ESLint, HTML Lint, React, Svelte, Angular, Static Analysis, Code Quality\",\n          \"softwareVersion\": \"LATEST\",\n          \"license\": \"https://opensource.org/licenses/MIT\",\n          \"offers\": {\n            \"@type\": \"Offer\",\n            \"price\": \"0\",\n            \"priceCurrency\": \"USD\"\n          },\n          \"publisher\": {\n            \"@type\": \"Person\",\n            \"name\": \"yeonjuan\",\n            \"url\": \"https://github.com/yeonjuan\"\n          }\n        },\n        {\n          \"@type\": \"WebSite\",\n          \"@id\": \"https://html-eslint.org/\",\n          \"name\": \"html-eslint\",\n          \"url\": \"https://html-eslint.org/\",\n          \"potentialAction\": {\n            \"@type\": \"SearchAction\",\n            \"target\": \"https://html-eslint.org/docs/rules/{search_term_string}\",\n            \"query-input\": \"required name=search_term_string\"\n          }\n        },\n        {\n          \"@type\": \"ItemList\",\n          \"name\": \"Main Sections\",\n          \"itemListElement\": [\n            {\n              \"@type\": \"SiteNavigationElement\",\n              \"position\": 1,\n              \"name\": \"HTML Plugin\",\n              \"description\": \"ESLint plugin for linting HTML files\",\n              \"url\": \"https://html-eslint.org/docs/getting-started.html\"\n            },\n            {\n              \"@type\": \"SiteNavigationElement\",\n              \"position\": 2,\n              \"name\": \"React Plugin\",\n              \"description\": \"ESLint plugin for linting HTML in React/JSX\",\n              \"url\": \"https://html-eslint.org/docs/react/getting-started\"\n            },\n            {\n              \"@type\": \"SiteNavigationElement\",\n              \"position\": 3,\n              \"name\": \"Svelte Plugin\",\n              \"description\": \"ESLint plugin for linting HTML in Svelte\",\n              \"url\": \"https://html-eslint.org/docs/svelte/getting-started\"\n            },\n            {\n              \"@type\": \"SiteNavigationElement\",\n              \"position\": 4,\n              \"name\": \"Angular Template Plugin\",\n              \"description\": \"ESLint plugin for linting Angular templates\",\n              \"url\": \"https://html-eslint.org/docs/angular-template/getting-started\"\n            },\n            {\n              \"@type\": \"SiteNavigationElement\",\n              \"position\": 5,\n              \"name\": \"Playground\",\n              \"description\": \"Try HTML-ESLint in your browser\",\n              \"url\": \"https://html-eslint.org/playground/\"\n            }\n          ]\n        }\n      ]\n    }\n    </script>\n    <meta content=\"HTML-ESLint - ESLint Plugin for HTML Linting\" property=\"og:title\">\n    <meta content=\"An ESLint plugin for linting and fixing HTML, React (JSX), Svelte, and Angular templates. Find and fix problems in your HTML code.\" property=\"og:description\">\n    <meta content=\"An ESLint plugin for linting and fixing HTML, React (JSX), Svelte, and Angular templates. Find and fix problems in your HTML code.\" name=\"description\">\n  </block>\n  <block name=\"nav\"></block>\n  <block name=\"content\">\n    <include src=\"components/home.html\"></include>\n  </block>\n  <block name=\"footer\">\n    <module href=\"/components/footer.html\" locals='{\"class\":\"\"}'></module>\n  </block>\n</extends>\n"
  },
  {
    "path": "packages/website/src/playground.html",
    "content": "<!doctype html>\n<extends src=\"components/layout.html\">\n  <block name=\"meta\">\n    <title>Playground - html-eslint</title>\n    <link href=\"https://html-eslint.org/playground/\" rel=\"canonical\">\n    <script type=\"application/ld+json\">\n    {\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"WebApplication\",\n      \"name\": \"HTML-ESLint Playground\",\n      \"url\": \"https://html-eslint.org/playground/\",\n      \"applicationCategory\": \"DeveloperApplication\",\n      \"browserRequirements\": \"Requires JavaScript. Requires HTML5.\",\n      \"description\": \"Try HTML-ESLint in your browser. Test and explore linting rules for HTML, React (JSX), Svelte, and Angular templates with our interactive playground.\",\n      \"operatingSystem\": \"Any\",\n      \"offers\": {\n        \"@type\": \"Offer\",\n        \"price\": \"0\",\n        \"priceCurrency\": \"USD\"\n      },\n      \"featureList\": [\n        \"Interactive HTML linting\",\n        \"Real-time error detection\",\n        \"Support for HTML, React (JSX)\",\n        \"Rule configuration testing\"\n      ],\n      \"publisher\": {\n        \"@type\": \"Person\",\n        \"name\": \"yeonjuan\",\n        \"url\": \"https://github.com/yeonjuan\"\n      },\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"@id\": \"https://html-eslint.org/\",\n        \"name\": \"html-eslint\"\n      }\n    }\n    </script>\n    <meta content=\"HTML-ESLint Playground - Try HTML Linting Online\" property=\"og:title\">\n    <meta content=\"Try HTML-ESLint in your browser. Test and explore linting rules for HTML, React (JSX), Svelte, and Angular templates with our interactive playground.\" property=\"og:description\">\n    <meta content=\"Try HTML-ESLint in your browser. Test and explore linting rules for HTML, React (JSX), Svelte, and Angular templates with our interactive playground.\" name=\"description\">\n  </block>\n  <block name=\"nav\">\n  </block>\n  <block name=\"content\">\n    <include src=\"components/playground.html\"></include>\n  </block>\n  <block name=\"footer\">\n    <module href=\"/components/footer.html\" locals='{\"class\":\"\"}'></module>\n  </block>\n</extends>\n"
  },
  {
    "path": "packages/website/src/privacy-policy.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\">\n    <title>html-eslint - Privacy Policy</title>\n    <meta content=\"HTML ESLint Privacy Policy\" name=\"description\">\n    <meta content=\"website\" property=\"og:type\">\n    <meta content=\"https://html-eslint.org/privacy-policy\" property=\"og:url\">\n    <meta content=\"html-eslint\" property=\"og:site_name\">\n    <meta content=\"html-eslint - Privacy Policy\" property=\"og:title\">\n    <meta content=\"HTML ESLint Privacy Policy\" property=\"og:description\">\n    <meta content=\"~/src/assets/logo_506x253.png\" property=\"og:image\">\n    <meta content=\"506\" property=\"og:image:width\">\n    <meta content=\"253\" property=\"og:image:height\">\n    <meta content=\"image/png\" property=\"og:image:type\">\n    <meta content=\"en\" property=\"og:locale\">\n    <meta content=\"summary_large_image\" name=\"twitter:card\">\n    <meta content=\"html-eslint - Privacy Policy\" name=\"twitter:title\">\n    <meta content=\"HTML ESLint Privacy Policy\" name=\"twitter:description\">\n    <meta content=\"~/src/assets/logo_506x253.png\" name=\"twitter:image\">\n  </head>\n  <body>\n    <h1>Privacy Policy</h1>\n    <p>Last updated: January 31, 2025</p>\n    <p>This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.</p>\n    <p>We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy.</p>\n    <h2>Interpretation and Definitions</h2>\n    <h3>Interpretation</h3>\n    <p>The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.</p>\n    <h3>Definitions</h3>\n    <p>For the purposes of this Privacy Policy:</p>\n    <ul>\n      <li>\n        <p>\n          <strong>Account</strong>\n          means a unique account created for You to access our Service or parts of our Service.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Affiliate</strong>\n          means an entity that controls, is controlled by or is under common control with a party, where &quot;control&quot; means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Company</strong>\n          (referred to as either &quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot; or &quot;Our&quot; in this Agreement) refers to HTML ESLint.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Cookies</strong>\n          are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Country</strong>\n          refers to: South Korea\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Device</strong>\n          means any device that can access the Service such as a computer, a cellphone or a digital tablet.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Personal Data</strong>\n          is any information that relates to an identified or identifiable individual.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Service</strong>\n          refers to the Website.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Service Provider</strong>\n          means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Usage Data</strong>\n          refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>Website</strong>\n          refers to HTML ESLint, accessible from\n          <a\n            href=\"https://html-eslint.org\"\n            rel=\"external nofollow noopener noreferrer\"\n            target=\"_blank\"\n          >https://html-eslint.org</a></p>\n      </li>\n      <li>\n        <p>\n          <strong>You</strong>\n          means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.\n        </p>\n      </li>\n    </ul>\n    <h2>Collecting and Using Your Personal Data</h2>\n    <h3>Types of Data Collected</h3>\n    <h4>Personal Data</h4>\n    <p>While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:</p>\n    <ul>\n      <li>Usage Data</li>\n    </ul>\n    <h4>Usage Data</h4>\n    <p>Usage Data is collected automatically when using the Service.</p>\n    <p>Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.</p>\n    <p>When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.</p>\n    <p>We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.</p>\n    <h4>Tracking Technologies and Cookies</h4>\n    <p>We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:</p>\n    <ul>\n      <li>\n        <strong>Cookies or Browser Cookies.</strong>\n        A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.\n      </li>\n      <li>\n        <strong>Web Beacons.</strong>\n        Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).\n      </li>\n    </ul>\n    <p>\n      Cookies can be &quot;Persistent&quot; or &quot;Session&quot; Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. Learn more about cookies on the\n      <a\n        href=\"https://www.freeprivacypolicy.com/blog/sample-privacy-policy-template/#Use_Of_Cookies_And_Tracking\"\n        rel=\"noreferrer\"\n        target=\"_blank\"\n      >Free Privacy Policy website</a>\n      article.\n    </p>\n    <p>We use both Session and Persistent Cookies for the purposes set out below:</p>\n    <ul>\n      <li>\n        <p>\n          <strong>Necessary / Essential Cookies</strong>\n        </p>\n        <p>Type: Session Cookies</p>\n        <p>Administered by: Us</p>\n        <p>Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.</p>\n      </li>\n      <li>\n        <p>\n          <strong>Cookies Policy / Notice Acceptance Cookies</strong>\n        </p>\n        <p>Type: Persistent Cookies</p>\n        <p>Administered by: Us</p>\n        <p>Purpose: These Cookies identify if users have accepted the use of cookies on the Website.</p>\n      </li>\n      <li>\n        <p>\n          <strong>Functionality Cookies</strong>\n        </p>\n        <p>Type: Persistent Cookies</p>\n        <p>Administered by: Us</p>\n        <p>Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.</p>\n      </li>\n      <li>\n        <p>\n          <strong>Tracking and Performance Cookies</strong>\n        </p>\n        <p>Type: Persistent Cookies</p>\n        <p>Administered by: Third-Parties</p>\n        <p>Purpose: These Cookies are used to track information about traffic to the Website and how users use the Website. The information gathered via these Cookies may directly or indirectly identify you as an individual visitor. This is because the information collected is typically linked to a pseudonymous identifier associated with the device you use to access the Website. We may also use these Cookies to test new pages, features or new functionality of the Website to see how our users react to them.</p>\n      </li>\n    </ul>\n    <p>For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.</p>\n    <h3>Use of Your Personal Data</h3>\n    <p>The Company may use Personal Data for the following purposes:</p>\n    <ul>\n      <li>\n        <p>\n          <strong>To provide and maintain our Service</strong>\n          , including to monitor the usage of our Service.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>To manage Your Account:</strong>\n          to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>For the performance of a contract:</strong>\n          the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>To contact You:</strong>\n          To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>To provide You</strong>\n          with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>To manage Your requests:</strong>\n          To attend and manage Your requests to Us.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>For business transfers:</strong>\n          We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.\n        </p>\n      </li>\n      <li>\n        <p>\n          <strong>For other purposes</strong>\n          : We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.\n        </p>\n      </li>\n    </ul>\n    <p>We may share Your personal information in the following situations:</p>\n    <ul>\n      <li>\n        <strong>With Service Providers:</strong>\n        We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.\n      </li>\n      <li>\n        <strong>For business transfers:</strong>\n        We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.\n      </li>\n      <li>\n        <strong>With Affiliates:</strong>\n        We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.\n      </li>\n      <li>\n        <strong>With business partners:</strong>\n        We may share Your information with Our business partners to offer You certain products, services or promotions.\n      </li>\n      <li>\n        <strong>With other users:</strong>\n        when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.\n      </li>\n      <li>\n        <strong>With Your consent</strong>\n        : We may disclose Your personal information for any other purpose with Your consent.\n      </li>\n    </ul>\n    <h3>Retention of Your Personal Data</h3>\n    <p>The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.</p>\n    <p>The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.</p>\n    <h3>Transfer of Your Personal Data</h3>\n    <p>Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.</p>\n    <p>Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.</p>\n    <p>The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.</p>\n    <h3>Delete Your Personal Data</h3>\n    <p>You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.</p>\n    <p>Our Service may give You the ability to delete certain information about You from within the Service.</p>\n    <p>You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.</p>\n    <p>Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.</p>\n    <h3>Disclosure of Your Personal Data</h3>\n    <h4>Business Transactions</h4>\n    <p>If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.</p>\n    <h4>Law enforcement</h4>\n    <p>Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).</p>\n    <h4>Other legal requirements</h4>\n    <p>The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:</p>\n    <ul>\n      <li>Comply with a legal obligation</li>\n      <li>Protect and defend the rights or property of the Company</li>\n      <li>Prevent or investigate possible wrongdoing in connection with the Service</li>\n      <li>Protect the personal safety of Users of the Service or the public</li>\n      <li>Protect against legal liability</li>\n    </ul>\n    <h3>Security of Your Personal Data</h3>\n    <p>The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.</p>\n    <h2>Detailed Information on the Processing of Your Personal Data</h2>\n    <p>The Service Providers We use may have access to Your Personal Data. These third-party vendors collect, store, use, process and transfer information about Your activity on Our Service in accordance with their Privacy Policies.</p>\n    <h3>Analytics</h3>\n    <p>We may use third-party Service providers to monitor and analyze the use of our Service.</p>\n    <ul>\n      <li>\n        <p>\n          <strong>Google Analytics</strong>\n        </p>\n        <p>Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network.</p>\n        <p>You can opt-out of having made your activity on the Service available to Google Analytics by installing the Google Analytics opt-out browser add-on. The add-on prevents the Google Analytics JavaScript (ga.js, analytics.js and dc.js) from sharing information with Google Analytics about visits activity.</p>\n        <p>\n          For more information on the privacy practices of Google, please visit the Google Privacy &amp; Terms web page:\n          <a\n            href=\"https://policies.google.com/privacy\"\n            rel=\"external nofollow noopener noreferrer\"\n            target=\"_blank\"\n          >https://policies.google.com/privacy</a></p>\n      </li>\n      <li>\n        <p>\n          <strong>Firebase</strong>\n        </p>\n        <p>Firebase is an analytics service provided by Google Inc.</p>\n        <p>\n          You may opt-out of certain Firebase features through your mobile device settings, such as your device advertising settings or by following the instructions provided by Google in their Privacy Policy:\n          <a\n            href=\"https://policies.google.com/privacy\"\n            rel=\"external nofollow noopener noreferrer\"\n            target=\"_blank\"\n          >https://policies.google.com/privacy</a></p>\n        <p>\n          We also encourage you to review the Google's policy for safeguarding your data:\n          <a\n            href=\"https://support.google.com/analytics/answer/6004245\"\n            rel=\"external nofollow noopener noreferrer\"\n            target=\"_blank\"\n          >https://support.google.com/analytics/answer/6004245</a></p>\n        <p>\n          For more information on what type of information Firebase collects, please visit the How Google uses data when you use our partners' sites or apps webpage:\n          <a\n            href=\"https://policies.google.com/technologies/partner-sites\"\n            rel=\"external nofollow noopener noreferrer\"\n            target=\"_blank\"\n          >https://policies.google.com/technologies/partner-sites</a></p>\n      </li>\n    </ul>\n    <h2>Children's Privacy</h2>\n    <p>Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.</p>\n    <p>If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.</p>\n    <h2>Links to Other Websites</h2>\n    <p>Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.</p>\n    <p>We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.</p>\n    <h2>Changes to this Privacy Policy</h2>\n    <p>We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.</p>\n    <p>We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the &quot;Last updated&quot; date at the top of this Privacy Policy.</p>\n    <p>You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.</p>\n    <h2>Contact Us</h2>\n    <p>If you have any questions about this Privacy Policy, You can contact us:</p>\n    <ul>\n      <li>By email: yeonjuan93@naver.com</li>\n    </ul>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/website/src/scripts/layout.js",
    "content": "const navElements = Array.from(document.querySelectorAll(\"[data-nav]\"));\nnavElements.sort((a, b) => b.dataset.nav.length - a.dataset.nav.length);\n\nfor (const elem of navElements) {\n  if (window.location.pathname.indexOf(elem.dataset.nav) === 0) {\n    elem.dataset.navActive.split(\" \").forEach((cls) => {\n      elem.classList.add(cls);\n    });\n    break;\n  }\n}\n\nconst $overlay = document.getElementById(\"overlay\");\nconst $menu = document.getElementById(\"menu\");\n\nfunction openOverlay() {\n  $overlay.classList.remove(\"hidden\");\n  document.body.classList.add(\"overflow-hidden\");\n}\n\nfunction closeOverlay() {\n  $overlay.classList.add(\"hidden\");\n  document.body.classList.remove(\"overflow-hidden\");\n}\n\n$menu.addEventListener(\n  \"change\",\n  (event) => {\n    if (event.target.checked) {\n      openOverlay();\n    } else {\n      closeOverlay();\n    }\n  }\n);\n\n$overlay.addEventListener(\n  \"click\",\n  (event) => {\n    $menu.checked = false;\n    closeOverlay();\n  }\n);\n\nconst $navButton = document.getElementById(\"nav-button\");\n\nfunction toggleMenu() {\n  const $nav = document.getElementById(\"nav\");\n  $nav.classList.toggle(\"hidden\");\n}\n\nif ($navButton) {\n  $navButton.addEventListener(\n    \"click\",\n    toggleMenu\n  );\n}\ndocument.querySelectorAll('a').forEach((link) => {\n  link.addEventListener('mouseover', () => {\n    const href = link.getAttribute('href');\n    if (href.indexOf(\"/\") === 0) {\n      const prefetchLink = document.createElement('link');\n      prefetchLink.rel = 'prefetch';\n      prefetchLink.href = href;\n      document.head.appendChild(prefetchLink);\n    }\n  });\n});\n"
  },
  {
    "path": "packages/website/src/scripts/playground/app.js",
    "content": "/**\n * @import {Editor} from \"codemirror\";\n */\nimport {\n  Model\n} from \"./model\";\nimport {\n  View\n} from \"./view\";\n\nclass App {\n  constructor() {\n    this.view = new View();\n    this.model = new Model();\n    this.model.on(\n      \"lint\",\n      () => this.handleLint()\n    );\n    this.model.on(\n      \"changeLanguage\",\n      () => this.handleLanguageChange()\n    );\n    this.model.on(\n      \"autofixed\",\n      () => this.view.codeEditor.setValue(this.model.getCode())\n    );\n    this.view.codeEditor.on(\n      \"change\",\n      (editor) => this.handleCodeChange(editor)\n    );\n    this.view.configEditor.on(\n      \"change\",\n      (editor) => {\n        this.handleConfigChange(editor);\n      }\n    );\n    this.view.$languageTabs.addEventListener(\n      \"click\",\n      (event) => {\n        const $tab = event.target.closest(\"[data-language]\");\n        this.model.setLanguage($tab.dataset.language);\n      }\n    );\n    this.view.$errors.addEventListener('click', (event) => {\n      const $button = event.target.closest(\"button\");\n      if ($button) {\n        const $li = $button.closest(\"li\");\n        const index = Array.from($li.parentNode.children).indexOf($li);\n        const message = this.model.messages[index];\n        if ($button.textContent.includes(\"fix\")) {\n          this.model.applyFix(message);\n        } else if ($button.textContent.includes(\"suggestion\")) {\n          this.model.applySuggestion(message);\n        }\n      }\n    });\n  }\n\n  start() {\n    const decoded = decodeURIComponent(escape(window.atob(window.location.hash.substring(1))));\n    this.model.load(decoded);\n\n    this.view.codeEditor.setValue(this.model.getCode());\n    this.view.configEditor.setValue(JSON.stringify(\n      {\n        parserOptions: this.model.parserOptions || undefined,\n        rules: this.model.rules\n      },\n      null,\n      2\n    ));\n    this.handleCodeChange(this.view.codeEditor);\n    this.handleConfigChange(this.view.configEditor);\n    this.handleLanguageChange();\n  }\n\n  /**\n   * @param {Editor} editor\n   */\n  handleConfigChange(editor) {\n    try {\n      const parsed = JSON.parse(editor.getValue());\n      const rules = parsed.rules;\n      const parserOptions = parsed.parserOptions;\n      this.model.setRules(rules);\n      this.model.setParserOptions(parserOptions);\n      this.model.lint();\n    } catch (e) {\n      this.view.renderErrors([\n        {\n          line: 0,\n          column: 0,\n          message: e.message,\n          fatal: true\n        }\n      ]);\n    }\n  }\n\n  /**\n   * @param {Editor} editor\n   */\n  handleCodeChange(editor) {\n    this.model.setCode(editor.getValue());\n    this.model.lint();\n  }\n\n  handleLint() {\n    this.view.renderErrors(this.model.messages);\n    this.view.renderFixed(this.model.fixed);\n    const hash = this.model.toHash();\n    window.location.hash = hash;\n  }\n\n  handleLanguageChange() {\n    this.view.renderLanguageTabs(this.model.language.key);\n    this.view.codeEditor.setOption(\n      \"mode\",\n      this.model.language.mime\n    );\n    this.view.codeEditor.setValue(this.model.getCode());\n    this.view.configEditor.setValue(JSON.stringify({\n      rules: this.model.rules\n    }, null, 2))\n    this.model.lint();\n  }\n}\n\nconst app = new App();\napp.start();\n"
  },
  {
    "path": "packages/website/src/scripts/playground/helpers.js",
    "content": "/**\n * @import {Position} from \"codemirror\";\n * @import eslint from \"eslint\";\n */\n\n/**\n * @param {number} pos\n * @returns {number}\n */\nfunction toMarkerPos(pos) {\n  return pos - 1;\n}\n\n/**\n * @param {eslint.Linter.LintMessage} message\n * @returns {[Position, Position]}\n */\nexport function toMarker(message) {\n  const from = {\n    line: toMarkerPos(message.line),\n    ch: toMarkerPos(message.column)\n  };\n  const to = {\n    line: toMarkerPos(message.endLine || message.line),\n    ch: toMarkerPos(message.endColumn || message.column)\n  };\n  return [\n    from,\n    to\n  ];\n}\n\n/**\n * @param {string} str \n * @returns {string}\n */\nexport function escapeHTML(str) {\n  return str\n    .replace(/&/g, \"&amp;\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\");\n}\n"
  },
  {
    "path": "packages/website/src/scripts/playground/languages/html.js",
    "content": "/**\n * @import {Language} from './types';\n */\nimport {\n  html\n} from \"@html-kit/html\";\n/**\n * @type {Language}\n */\nexport const languageHTML = {\n  key: \"html\",\n  mime: 'text/html',\n  initialCode:  html`<!doctype html>\n    <html lang=\"en-US\">\n      <head>\n      </head>\n      <body>\n        <div>\n          <li> foo </li>\n        </div>\n      </body>\n    </html>\n    `,\n  initialConfig: {\n    rules: {\n      \"@html-eslint/indent\": \"error\"\n    }\n  },\n  isEqual(lang) {\n    return lang === \"html\";\n  },\n}"
  },
  {
    "path": "packages/website/src/scripts/playground/languages/index.js",
    "content": "/**\n * @import {Language} from './types';\n */\n\nimport {\n  languageHTML \n} from './html';\nimport {\n  languageJavaScript \n} from './javascript';\nimport {\n  languageJSX \n} from './jsx';\n\n/**\n * @param {\"html\" | \"javascript\" | \"jsx\"} lang \n * @returns {Language}\n */\nexport function createLanguage(lang) {\n  switch(lang) {\n    case 'html': {\n      return languageHTML;\n    }\n    case 'javascript': {\n      return languageJavaScript;\n    }\n    case 'jsx': {\n      return languageJSX\n    }\n  }\n}"
  },
  {
    "path": "packages/website/src/scripts/playground/languages/javascript.js",
    "content": "/**\n * @import {Language} from './types';\n */\n\n/**\n * @type {Language}\n */\nexport const languageJavaScript = {\n  key: \"javascript\",\n  mime: 'text/javascript',\n  initialCode: `html\\`\n    <div>\n        <span>\n    </span>\n    </div>\n\\`\n\nconst html = /*html*/\\`\n<div>\n    <span>\n       </span>\n</div>\n\\`;`,\n  initialConfig: {\n    rules: {\n      \"@html-eslint/indent\": \"error\"\n    }\n  },\n  isEqual(lang) {\n    return \"javascript\" === lang\n  }\n}"
  },
  {
    "path": "packages/website/src/scripts/playground/languages/jsx.js",
    "content": "/**\n * @import {Language} from './types';\n */\n\n/**\n * @type {Language}\n */\nexport const languageJSX = {\n  key: \"jsx\",\n  mime: 'text/jsx',\n  initialCode: `const Component = () => {\n    return <a rel=\"no referrer\">link</a>;\n}`,\n  initialConfig: {\n    rules: {\n      \"@html-eslint/react/use-baseline\": \"error\",\n      \"@html-eslint/react/no-invalid-attr-value\": \"error\"\n    }\n  },\n  isEqual(lang) {\n    return lang === \"jsx\";\n  },\n}"
  },
  {
    "path": "packages/website/src/scripts/playground/languages/types.ts",
    "content": "export interface Language {\n    key: \"html\" | \"javascript\" | \"jsx\";\n    mime: string;\n    initialCode: string;\n    initialConfig: {\n        rules: Record<string, unknown>;\n    };\n    isEqual(value: \"html\" | \"javascript\" | \"jsx\"): boolean\n}"
  },
  {
    "path": "packages/website/src/scripts/playground/linter.js",
    "content": "import {\n  parseForESLint\n} from \"@html-eslint/parser\";\nimport rules from \"@html-eslint/eslint-plugin/lib/rules\";\nimport reactRules from '@html-eslint/eslint-plugin-react/lib/rules';\nimport {\n  Linter as WebLinter\n} from \"@html-eslint/web-linter\";\nimport {\n  Language\n} from \"./languages\";\n\n/**\n * @import eslint from \"eslint\";\n * @typedef {Object.<string, eslint.Rule.RuleModule>} RulesModules\n *\n * @callback OnChangeHadnler\n * @param {{ messages: eslint.Linter.LintMessage[], output: string }}\n * @returns {void}\n *\n * @callback OnErrorHhandler\n * @param {Error}\n * @returns {void}\n * \n * @typedef {Object} ParserOptions\n * @property {Record<string, string>} [ParserOptions.templateEngineSyntax]\n */\n\n/**\n * @returns {RulesModules}\n */\nfunction allRules() {\n  const htmlRules = Object.entries(rules).reduce(\n    (rules, [\n      name,\n      rule\n    ]) => ({\n      ...rules,\n      [`@html-eslint/${name}`]: rule\n    }),\n    {}\n  );\n\n  const reactPluginRules = Object.entries(reactRules).reduce(\n    (rules, [\n      name,\n      rule\n    ]) => ({\n      ...rules,\n      [`@html-eslint/react/${name}`]: rule\n    }),\n    {}\n  );\n\n  return {\n    ...htmlRules,\n    ...reactPluginRules\n  };\n}\n\nexport class Linter {\n  constructor() {\n    /**\n     * @type {ESLinter}\n     */\n    this._linter = new WebLinter({\n      configType: \"eslintrc\"\n    });\n\n    /**\n     * @type {eslint.Linter.RulesRecord}\n     */\n    this._rules = {\n      \"@html-eslint/indent\": \"error\"\n    };\n\n    /**\n     * @type {ParserOptions}\n     */\n    this._parserOptions = null;\n\n    this._defineParser();\n    this._defineRules();\n  }\n\n  /**\n   * @private\n   */\n  _defineRules() {\n    this._linter.defineRules(allRules());\n  }\n\n  /**\n   * @private\n   */\n  _defineParser() {\n    this._linter.defineParser(\n      \"@html-eslint/parser\",\n      {\n        parseForESLint(code, options) {\n          return parseForESLint(code, options);\n        }\n      }\n    );\n  }\n\n  /**\n   * @param {Language} language\n   * @returns {string | undefined}\n   */\n  getParser(language) {\n    if (language.key === \"javascript\" || language.key === \"jsx\") {\n      return undefined;\n    }\n    return \"@html-eslint/parser\";\n  }\n\n  /**\n   * Lints the given code and returns the result.\n   * @param {string} code\n   * @param {Language} language\n   * @param {boolean?} fix\n   * @returns {{messages: eslint.Linter.LintMessage[], output: string, fatalMessage?:  eslint.Linter.LintMessage}}\n   */\n  lint(code, language, fix = false) {\n    try {\n      const parserOptions = language.key === \"javascript\" ? ({\n        ecmaVersion: \"latest\"\n      }) : language.key === \"jsx\" ? ({\n        ecmaVersion: \"latest\",\n        ecmaFeatures: {\n          jsx: true,\n        }\n      }): this._parserOptions;\n      const messages = this._linter.verify(\n        code,\n        {\n          rules: this._rules,\n          parser:  this.getParser(language),\n          parserOptions,\n        }\n      );\n      const {\n        output\n      } = this._linter.verifyAndFix(\n        code,\n        {\n          rules: this._rules,\n          parser: this.getParser(language),\n          parserOptions,\n        },\n        {\n          fix\n        }\n      );\n      if (messages.length && messages[0].fatal) {\n        console.error(messages[0]);\n      }\n      return {\n        messages,\n        output\n      };\n    } catch (error) {\n      console.error(error);\n      return {\n        messages: [],\n        output: \"Error!\"\n      };\n    }\n  }\n\n  /**\n   * Change rules configuration.\n   * @param {RulesRecord} rules\n   */\n  setRules(rules) {\n    this._rules = rules;\n  }\n\n  /**\n   * @param {ParserOptions} parserOptions \n   */\n  setParserOptions(parserOptions) {\n    this._parserOptions = parserOptions;\n  }\n}\n"
  },
  {
    "path": "packages/website/src/scripts/playground/model.js",
    "content": "/**\n * @import eslint from \"eslint\";\n * @import {Language} from \"./languages/types\";\n * @import {RulesRecord, ParserOptions} from \"./linter\";\n * @typedef {\"lint\" | \"changeLanguage\" | \"autofixed\"} EventType\n */\n\nimport {\n  createLanguage,\n} from \"./languages\";\nimport {\n  Linter\n} from \"./linter\";\n\nexport class Model {\n  constructor() {\n    /**\n     * @member\n     * @type {string}\n     */\n    this.fixed = \"\";\n\n    /**\n     * @member\n     * @type {string}\n     */\n    this.code = \"\";\n   \n\n    /**\n     * @member\n     * @type {RulesRecord}\n     */\n    this.rules = null;\n\n    /**\n     * @member\n     * @type {ParserOptions}\n     */\n    this.parserOptions = null;\n\n    /**\n     * @member\n     * @type {eslint.Linter.LintMessage[]}\n     */\n    this.messages = [];\n\n    /**\n     * @member\n     * @type {Language}\n     */\n    this.language = createLanguage(\"html\");\n\n\n    this.cache = {\n      html: {\n        code: \"\",\n        config: {\n          rules: null\n        }\n      },\n      javascript: {\n        code: \"\",\n        config: {\n          rules: null\n        }\n      },\n      jsx: {\n        code: \"\",\n        config: {\n          rules: null\n        }\n      },\n    }\n\n    /**\n     * @member\n     * @type {Linter}\n     */\n    this.linter = new Linter();\n\n    /**\n     * @member\n     * @private\n     */\n    this.observers = {\n      lint: new Set(),\n      changeLanguage: new Set(),\n      autofixed: new Set()\n    };\n  }\n\n  /**\n   * @param {StateEventType} type\n   * @param {() => void} observer\n   */\n  on(type, observer) {\n    this.observers[type].add(observer);\n  }\n\n  /**\n   * @param {RulesRecord} rules\n   */\n  setRules(rules) {\n    this.rules = rules;\n  }\n\n  /**\n   * @param {ParserOptions} parserOptions \n   */\n  setParserOptions(parserOptions) {\n    this.parserOptions = parserOptions;\n  }\n\n  setCode(code) {\n    this.code = code;\n  }\n\n  getCode() {\n    return this.code;\n  }\n\n  /**\n   * @param {\"html\" | \"jsx\" | \"javascript\"} language\n   */\n  setLanguage(language) {\n    this.cache[this.language.key] = {\n      code: this.code,\n      config:{\n        rules: this.rules,\n      }\n    } \n    this.language = createLanguage(language);\n    this.setCode(\n      this.cache[language].code || \n      this.language.initialCode\n    );\n  \n    this.setRules(\n      this.cache[language].config.rules || \n      this.language.initialConfig.rules\n    )\n    this.notify(\"changeLanguage\");\n  }\n\n  /**\n   * @param {string} code\n   * @param {RulesRecord} rules\n   */\n  lint() {\n    this.linter.setRules(this.rules);\n    this.linter.setParserOptions(this.parserOptions);\n    const {\n      messages, output\n    } = this.linter.lint(\n      this.getCode(),\n      this.language,\n      true\n    );\n    this.fixed = output;\n    this.messages = messages || [];\n    this.notify(\"lint\");\n  }\n\n  /**\n   * @private\n   * @param {EventType} type\n   */\n  notify(type) {\n    this.observers[type].forEach((observer) => observer());\n  }\n\n  /**\n   *\n   * @param {LintMessage} message\n   */\n  applyFix(message) {\n    const {\n      fix\n    } = message;\n    if (fix) {\n      const code = this.getCode();\n      const [start, end] = fix.range;\n      const fixed = code.slice(0, start) +\n        fix.text +\n        code.slice(end);\n      this.setCode(fixed);\n      this.lint();\n      this.notify('autofixed');\n    }\n  }\n  \n  applySuggestion(message) {\n    const {\n      suggestions \n    } = message;\n    if (suggestions && suggestions.length > 0) {\n      const suggestion = suggestions[0];\n      if (suggestion.fix) {\n        const code = this.getCode();\n        const [start, end] = suggestion.fix.range;\n        const fixed = code.slice(0, start) +\n          suggestion.fix.text +\n          code.slice(end);\n        this.setCode(fixed);\n        this.lint();\n        this.notify('autofixed');\n      }\n    }\n  }\n  /**\n   * @returns {string}\n   */\n  toHash() {\n    const hash = window.btoa(unescape(encodeURIComponent(JSON.stringify({\n      code: this.getCode(),\n      config: {\n        rules: this.rules,\n        parserOptions: this.parserOptions || undefined,\n      },\n      language: this.language.key\n    }))));\n    return hash;\n  }\n\n  /**\n   * @param {string}\n   */\n  load(str) {\n    try {\n      const parsed = JSON.parse(str);\n      if (!parsed || typeof parsed !== \"object\") {\n        throw new Error(\"empty parsed\");\n      }\n      this.setLanguage(parsed.language);\n      this.setCode(parsed.code);\n\n      const hasConfig = parsed.config &&\n        typeof parsed.config === \"object\";\n      const hasRule = hasConfig && parsed.config.rules &&\n        typeof parsed.config.rules === \"object\";\n      if (hasRule) {\n        this.setRules(parsed.config.rules);\n      } \n    } catch (error) {\n      this.setLanguage(\"html\");\n    }\n  }\n}\n"
  },
  {
    "path": "packages/website/src/scripts/playground/view.js",
    "content": "/**\n * @import {LintMessage} from \"./linter\";\n * @import {Editor} from \"codemirror\";\n */\n\nimport \"codemirror/lib/codemirror.css\";\nimport \"codemirror/mode/htmlmixed/htmlmixed.js\";\nimport \"codemirror/mode/javascript/javascript.js\";\nimport \"codemirror/mode/javascript/javascript.js\";\nimport \"codemirror/mode/jsx/jsx.js\";\nimport \"codemirror/addon/hint/show-hint.js\";\nimport \"codemirror/addon/hint/show-hint.css\";\nimport rules from \"@html-eslint/eslint-plugin/lib/rules\";\nimport CodeMirror from \"codemirror\";\nimport {\n  toMarker,\n  escapeHTML\n} from \"./helpers\";\nimport {\n  html\n} from \"@html-kit/html\";\n\n// HTML ESLint rules for autocomplete\nconst HTML_ESLINT_RULES = Object.keys(rules).map(rule => `@html-eslint/${rule}`);\n\nconst HTML_REG = /\"@html-eslint\\//;\nconst RULES_REG = /\"rules\"[\\s\\S]*?\"@html-eslint\\//;\n\n// ESLint severity values for autocomplete\nconst ESLINT_SEVERITIES = [\"error\", \"warn\", \"off\"];\nconst RULES_VALUE_REG = /\"@html-eslint\\/[^\"]*\":\\s*/;\n\nexport class View {\n  constructor() {\n    /**\n     * @member\n     * @type {CodeMirror.Editor}\n     */\n    this.codeEditor = CodeMirror.fromTextArea(\n      document.getElementById(\"code-editor\"),\n      {\n        mode: \"text/html\",\n        lineNumbers: true,\n        showCursorWhenSelecting: true\n      }\n    );\n\n    /**\n     * @member\n     * @type {CodeMirror.Editor}\n     */\n    this.configEditor = CodeMirror.fromTextArea(\n      document.getElementById(\"config-editor\"),\n      {\n        mode: \"application/json\",\n        lineNumbers: false,\n        extraKeys: {\n          \"Ctrl-Space\": \"autocomplete\"\n        },\n        hintOptions: {\n          hint: this.getHtmlEslintHints.bind(this)\n        }\n      }\n    );\n    this.configEditor.on('inputRead', (cm, change) => {\n      if (change.text[0].match(/[\\w$.]/)) {\n        this.configEditor.showHint({\n          completeSingle: false\n        });\n      }\n    });\n\n    this.$languageTabs = document.getElementById(\"language-tabs\");\n    this.$errors = document.getElementById(\"errors\");\n  }\n\n  /**\n   * Custom hint function for HTML ESLint rules\n   * @param {CodeMirror.Editor} cm\n   * @returns {Object|null}\n   */\n  getHtmlEslintHints(cm) {\n    const cur = cm.getCursor();\n    const token = cm.getTokenAt(cur);\n    const start = token.start;\n    const end = cur.ch;\n    const line = cm.getLine(cur.line);\n\n    // Get the text before cursor\n    const textBefore = line.substring(0, cur.ch);\n\n    // Check if we're in a context where rule names should be suggested\n    const ruleNameContext = HTML_REG.test(textBefore) ||\n                           RULES_REG.test(cm.getValue().substring(0, cm.indexFromPos(cur)));\n\n    const ruleValueContext = RULES_VALUE_REG.test(textBefore);\n\n    if (!ruleNameContext && !ruleValueContext) {\n      return null;\n    }\n\n    let suggestions = [];\n    const word = token.string.replace(/^[\"']|[\"']$/g, '');\n\n    if (ruleValueContext) {\n      // Provide ESLint severity suggestions\n      suggestions = ESLINT_SEVERITIES\n        .filter(severity => {\n          const severityStr = severity.toString();\n          return severityStr.toLowerCase().includes(word.toLowerCase());\n        })\n        .map(severity => ({\n          text: typeof severity === 'string' ? `\"${severity}\"` : severity.toString(),\n          displayText: severity.toString()\n        }));\n    } else if (ruleNameContext) {\n      // Provide rule name suggestions\n      suggestions = HTML_ESLINT_RULES\n        .filter(rule => rule.includes(word.toLowerCase()))\n        .map(rule => ({\n          text: `\"${rule}\"`,\n          displayText: rule\n        }));\n    }\n\n    if (suggestions.length === 0) {\n      return null;\n    }\n\n    return {\n      list: suggestions,\n      from: CodeMirror.Pos(cur.line, start),\n      to: CodeMirror.Pos(cur.line, end)\n    };\n  }\n\n  /**\n   * @param {string} content\n   */\n  renderFixed(content) {\n    const $fixed = document.getElementById(\"fixed\");\n    $fixed.textContent = content;\n  }\n\n  /**\n   * @param {string} language\n   */\n  renderLanguageTabs(language) {\n    const $tabs = document.querySelectorAll(\"[data-language]\");\n    [...$tabs].forEach(($tab) => {\n      if ($tab.dataset.language === language) {\n        $tab.classList.add(\"bg-gray-300\");\n      } else {\n        $tab.classList.remove(\"bg-gray-300\");\n      }\n    });\n  }\n\n  /**\n   *\n   * @param {LintMessage[]} messages\n   */\n  renderErrors(messages) {\n    const children = messages.\n      map((message) => this.lintMessageHTML(message));\n\n    this.$errors.innerHTML = html`<ul class=\"text-sm flex flex-col gap-2\">\n        ${children}\n      </ul>`;\n\n    if (messages.some((message) => message.fatal)) {\n      return;\n    }\n\n    this.codeEditor.getAllMarks().forEach((mark) => mark.clear());\n    messages.forEach((message) => {\n      const [\n        start,\n        end\n      ] = toMarker(message);\n      this.codeEditor.markText(\n        start,\n        end,\n        {\n          className: \"editor_error\"\n        }\n      );\n    });\n  }\n\n  /**\n   * @private\n   * @param {LintMessage} message\n   */\n  lintMessageHTML({\n    line, column, message, ruleId, fatal, fix, suggestions\n  }) {\n    if (fatal) {\n      console.error(message);\n      return html`<li class=\"bg-red-100 text-red-800 px-2 py-1 my-1 rounded\">\n          ${line}:${column} - ${message}\n        </li>`;\n    }\n    const rule = ruleId.replace(\n      \"@html-eslint/\",\n      \"\"\n    )\n    return html`<li class=\"bg-red-100 text-red-800 px-2 rounded flex items-center\">\n        <span class=\"my-4\">\n          <span>${line}:${column} - ${escapeHTML(message)}</span>\n          <a class=\"ml-1 hover:underline\" href=\"/docs/rules/${rule}\">(${rule})</a>\n        </span>\n        <div class=\"ml-auto mr-0 my-2\">\n          ${fix ? html`<button type=\"submit\" class=\"bg-accent text-white px-4 py-1 rounded hover:opacity-80 w-max\">apply fix</button>` : \"\"}\n          ${suggestions && suggestions.length > 0 ? html`\n            <button type=\"submit\" class=\"bg-accent text-white px-4 py-1 rounded hover:opacity-80 w-max\">apply suggestion</button>\n          ` : \"\"}\n        </div>\n      </li>`;\n  }\n}\n"
  },
  {
    "path": "packages/website/tailwind.config.js",
    "content": "/** @type {import(\"tailwindcss\").Config} */\nmodule.exports = {\n  content: [\"./src/**/*.{html,js,ts,jsx,tsx}\"],\n  theme: {\n    extend: {\n      colors: {\n        gray: {\n          200: \"#F4F6F8\",\n          300: \"#E8EBEF\",\n          500: \"#8A91A4\",\n          600: \"#707990\",\n        },\n        black: {\n          300: \"#C6C7C8\",\n          500: \"#6e6e6e\",\n          700: \"#525658\",\n          900: \"#1D1D1D\",\n        },\n        accent: \"#6750D2\",\n      },\n    },\n  },\n};\n"
  },
  {
    "path": "prettier.config.mjs",
    "content": "export default {\n  plugins: [\"prettier-plugin-jsdoc\"],\n  trailingComma: \"es5\",\n};\n"
  },
  {
    "path": "tools/baseline/generate-baseline.mjs",
    "content": "import * as fs from \"fs\";\nimport bcd from \"@mdn/browser-compat-data/forLegacyNode\";\nimport { getStatus } from \"compute-baseline\";\nimport prettier from \"prettier\";\n\nconst BASELINE_HIGH = 10;\nconst BASELINE_LOW = 5;\nconst BASELINE_FALSE = 0;\nconst baselineIds = new Map([\n  [\"high\", BASELINE_HIGH],\n  [\"low\", BASELINE_LOW],\n  [false, BASELINE_FALSE],\n]);\n\n/**\n * Checks whether the given entry object has a __compat.tags property.\n *\n * @param {Object} entry The object to check\n * @returns {boolean} Returns true if the entry has a __compat object with a\n *   non-falsy 'tags' property, otherwise false.\n */\nfunction hasCompatTags(entry) {\n  return (\n    typeof entry === \"object\" &&\n    entry &&\n    \"__compat\" in entry &&\n    entry.__compat.tags\n  );\n}\n\n/**\n * Recursively traverses BCD (Browser Compatibility Data) and visits entries\n * that have `__compat.tags` including a `web-features:` tag. For each such\n * entry, calls the `visit` callback with the extracted feature ID and the\n * compatibility key path.\n *\n * @param {Object} bcdData The BCD data object to traverse.\n * @param {string[]} parents An array of parent keys representing the current\n *   path in the object hierarchy.\n * @param {(featureId: string, compatKey: string) => void} visit A callback\n *   function invoked for each matching entry.\n */\nfunction traverseCompat(bcdData, parents, visit) {\n  Object.entries(bcdData).forEach(([id, entry]) => {\n    if (hasCompatTags(entry)) {\n      const webFeature = entry.__compat.tags.find((tag) =>\n        tag.startsWith(\"web-features:\")\n      );\n      if (webFeature) {\n        const featureId = webFeature.split(\":\")[1];\n        const compatKeys = [...parents, id];\n        visit(featureId, compatKeys.join(\".\"));\n        traverseCompat(entry, compatKeys, visit);\n      }\n    }\n  });\n}\n\nfunction getFeatureIdAndCompatKeys() {\n  /** @type {[string, string][]} */\n  const elements = [];\n\n  /** @type {[string, string][]} */\n  const globalAttributes = [];\n\n  traverseCompat(\n    bcd.html.elements,\n    [\"html\", \"elements\"],\n    (featureId, compatKey) => elements.push([featureId, compatKey])\n  );\n\n  traverseCompat(\n    bcd.html.global_attributes,\n    [\"html\", \"global_attributes\"],\n    (featureId, compatKey) => globalAttributes.push([featureId, compatKey])\n  );\n  return {\n    elements,\n    globalAttributes,\n  };\n}\n\n/**\n * Encodes baseline status\n *\n * @param {string} status Baseline status\n * @param {number} year Year\n * @returns {string} Encoded status\n */\nfunction encodeBaselineStatus(status, year) {\n  return `${status}:${year || \"\"}`;\n}\n\n/**\n * @param {ReturnType<typeof getStatus>} status\n * @returns {Object}\n */\nfunction mapFeatureStatus(status) {\n  let baselineYear;\n  if (status.baseline_low_date && status.baseline_low_date.startsWith(\"≤\")) {\n    baselineYear = Number(status.baseline_low_date.slice(1, 5));\n  } else {\n    baselineYear = status.baseline_low_date\n      ? Number(status.baseline_low_date.slice(0, 4))\n      : 0;\n  }\n\n  return encodeBaselineStatus(baselineIds.get(status.baseline), baselineYear);\n}\n\n/**\n * Shorten the given key (\"html.element.a\" -> \"a\")\n *\n * @param {string} key\n * @returns {string}\n */\nfunction shortenKey(key) {\n  const [, , ...rest] = key.split(\".\");\n  return rest.join(\".\");\n}\n\nasync function generateBaseline() {\n  const { elements, globalAttributes } = getFeatureIdAndCompatKeys();\n  const elementsStatus = {};\n  const globalAttributesStatus = {};\n  for (const [featureId, compatKey] of elements) {\n    const status = getStatus(featureId, compatKey);\n    const key = shortenKey(compatKey);\n\n    elementsStatus[key] = mapFeatureStatus(status);\n  }\n\n  for (const [featureId, compatKey] of globalAttributes) {\n    const status = getStatus(featureId, compatKey);\n    const key = shortenKey(compatKey);\n\n    globalAttributesStatus[key] = mapFeatureStatus(status);\n  }\n\n  const js = `\n/**\n * This file is auto-generated. (yarn run baseline)\n */\nconst BASELINE_HIGH = 10;\nconst BASELINE_LOW = 5;\nconst BASELINE_FALSE = 0;\n\nconst elements = new Map(${JSON.stringify(Object.entries(elementsStatus))});\nconst globalAttributes = new Map(${JSON.stringify(Object.entries(globalAttributesStatus))});\nexport {\n  elements,\n  globalAttributes,\n  BASELINE_HIGH,\n  BASELINE_LOW,\n  BASELINE_FALSE\n}\n`;\n  const jsPath = \"./packages/core/lib/utils/baseline.js\";\n  const config = await prettier.resolveConfig(jsPath);\n  fs.writeFileSync(\n    jsPath,\n    await prettier.format(js, { filepath: jsPath, ...config })\n  );\n}\n\ngenerateBaseline();\n"
  },
  {
    "path": "tools/rule/new-rule.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst ROOT_DIR = path.resolve(__dirname, \"../..\");\nconst TEMPLATES_DIR = path.resolve(__dirname, \"./templates\");\n\n/** @typedef {{ src: string; template: string; label: string }} FileEntry */\n\n/**\n * @typedef {Object} PluginConfig\n * @property {string} pluginDir\n * @property {string} docsDir\n * @property {string} templatesDir\n */\n\n/** @type {Record<string, PluginConfig>} */\nconst PLUGIN_CONFIGS = {\n  html: {\n    pluginDir: path.join(ROOT_DIR, \"packages/eslint-plugin\"),\n    docsDir: path.join(ROOT_DIR, \"docs/rules\"),\n    templatesDir: path.join(TEMPLATES_DIR, \"html\"),\n  },\n  react: {\n    pluginDir: path.join(ROOT_DIR, \"packages/eslint-plugin-react\"),\n    docsDir: path.join(ROOT_DIR, \"docs/react/rules\"),\n    templatesDir: path.join(TEMPLATES_DIR, \"react\"),\n  },\n  svelte: {\n    pluginDir: path.join(ROOT_DIR, \"packages/eslint-plugin-svelte\"),\n    docsDir: path.join(ROOT_DIR, \"docs/svelte/rules\"),\n    templatesDir: path.join(TEMPLATES_DIR, \"svelte\"),\n  },\n};\n\n/** @param {string} ruleName @returns {string} */\nfunction toCamelCase(ruleName) {\n  const [first, ...rest] = ruleName.split(\"-\");\n  return `${first}${rest.map((r) => r[0].toUpperCase() + r.slice(1)).join(\"\")}`;\n}\n\n/**\n * @param {string} templatePath\n * @param {string} ruleName\n * @returns {string}\n */\nfunction renderTemplate(templatePath, ruleName) {\n  return fs\n    .readFileSync(templatePath, \"utf-8\")\n    .replace(/\\{ruleName\\}/g, ruleName);\n}\n\n/**\n * @param {PluginConfig} config\n * @param {string} ruleName\n * @returns {FileEntry[]}\n */\nfunction getFileEntries(config, ruleName) {\n  return [\n    {\n      src: path.join(config.docsDir, `${ruleName}.md`),\n      template: path.join(config.templatesDir, \"rule.md\"),\n      label: `${ruleName}.md`,\n    },\n    {\n      src: path.join(config.pluginDir, `lib/rules/${ruleName}.js`),\n      template: path.join(config.templatesDir, \"rule.js\"),\n      label: `${ruleName}.js`,\n    },\n    {\n      src: path.join(config.pluginDir, `tests/rules/${ruleName}.test.js`),\n      template: path.join(config.templatesDir, \"rule.test.js\"),\n      label: `${ruleName}.test.js`,\n    },\n  ];\n}\n\n/**\n * @param {FileEntry[]} entries\n * @param {string} ruleName\n */\nfunction createFiles(entries, ruleName) {\n  for (const { src, template, label } of entries) {\n    if (fs.existsSync(src)) {\n      console.log(`> Skip. ${label} already exists`);\n      continue;\n    }\n    console.log(`> Create ${label} (${src})`);\n    fs.writeFileSync(src, renderTemplate(template, ruleName), \"utf-8\");\n  }\n}\n\n/**\n * @param {PluginConfig} config\n * @param {string} ruleName\n */\nfunction updateIndex(config, ruleName) {\n  const indexPath = path.join(config.pluginDir, \"lib/rules/index.js\");\n  const camelCase = toCamelCase(ruleName);\n  const content = fs.readFileSync(indexPath, \"utf-8\");\n\n  if (content.includes(camelCase)) {\n    console.log(\"> Skip updating index.js\");\n    return;\n  }\n\n  console.log(`> Update index.js (${indexPath})`);\n\n  // Detect if the file uses ESM or CommonJS\n  const isESM =\n    content.includes(\"import \") && content.includes(\"export default\");\n\n  let updated;\n  if (isESM) {\n    // ESM format\n    updated = content\n      .replace(\n        \"// import new rule here ↑\",\n        `import ${camelCase} from \"./${ruleName}.js\";\\n// import new rule here ↑`\n      )\n      .replace(\n        \"// export new rule here ↑\",\n        `\"${ruleName}\": ${camelCase},\\n  // export new rule here ↑`\n      );\n  } else {\n    // CommonJS format\n    updated = content\n      .replace(\n        \"// import new rule here ↑\",\n        `const ${camelCase} = require(\"./${ruleName}\");\\n// import new rule here ↑`\n      )\n      .replace(\n        \"// export new rule here ↑\",\n        `\"${ruleName}\": ${camelCase},\\n  // export new rule here ↑`\n      );\n  }\n\n  fs.writeFileSync(indexPath, updated, \"utf-8\");\n}\n\n/**\n * @param {string[]} argv\n * @returns {{ pluginType: string; ruleName: string }}\n */\nfunction getArgs(argv) {\n  const pluginType = argv[2];\n  const ruleName = argv[3];\n\n  if (!pluginType || !ruleName) {\n    throw new Error(\n      `Usage: ${argv[0]} ${argv[1]} <plugin-type> <rule-name>\\n` +\n        `  plugin-type: ${Object.keys(PLUGIN_CONFIGS).join(\" | \")}`\n    );\n  }\n\n  if (!PLUGIN_CONFIGS[pluginType]) {\n    throw new Error(\n      `Unknown plugin type: \"${pluginType}\". Must be one of: ${Object.keys(PLUGIN_CONFIGS).join(\", \")}`\n    );\n  }\n\n  if (!/^[a-z-]+$/.test(ruleName)) {\n    throw new Error(\"Wrong rule name format.\");\n  }\n\n  return { pluginType, ruleName };\n}\n\nconst { pluginType, ruleName } = getArgs(process.argv);\nconst config = PLUGIN_CONFIGS[pluginType];\ncreateFiles(getFileEntries(config, ruleName), ruleName);\nupdateIndex(config, ruleName);\n"
  },
  {
    "path": "tools/rule/templates/html/rule.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\nconst { RULE_CATEGORY } = require(\"../constants\");\n\n/** @type {RuleModule} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"FILL ME\",\n      recommended: false,\n      category: RULE_CATEGORY.BEST_PRACTICE,\n    },\n  },\n  fixable: null,\n  schema: [],\n  create() {},\n};\n"
  },
  {
    "path": "tools/rule/templates/html/rule.md",
    "content": "# {ruleName}\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/{ruleName}\": \"error\",\n  },\n};\n```\n\n## Rule Details\n"
  },
  {
    "path": "tools/rule/templates/html/rule.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/{ruleName}\");\n\nconst ruleTester = createRuleTester();\nconst templateRuleTester = createRuleTester(\"espree\");\n\nruleTester.run(\"{ruleName}\", rule, {\n  valid: [],\n  invalid: [],\n});\n\ntemplateRuleTester.run(\"[template] {ruleName}\", rule, {\n  valid: [],\n  invalid: [],\n});\n"
  },
  {
    "path": "tools/rule/templates/react/rule.js",
    "content": "/** @import {RuleModule} from \"../types\" */\n\n/** @type {RuleModule} */\nmodule.exports = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"FILL ME\",\n      recommended: false,\n      url: \"https://html-eslint.org/docs/react/rules/{ruleName}\",\n    },\n    fixable: null,\n    schema: [],\n    messages: {},\n  },\n\n  create(context) {\n    return {};\n  },\n};\n"
  },
  {
    "path": "tools/rule/templates/react/rule.md",
    "content": "# {ruleName}\n\n## How to use\n\n```js,.eslintrc.js\nmodule.exports = {\n  rules: {\n    \"@html-eslint/react/{ruleName}\": \"error\",\n  },\n};\n```\n\n## Rule Details\n"
  },
  {
    "path": "tools/rule/templates/react/rule.test.js",
    "content": "const createRuleTester = require(\"../rule-tester\");\nconst rule = require(\"../../lib/rules/{ruleName}\");\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"{ruleName}\", rule, {\n  valid: [],\n  invalid: [],\n});\n"
  },
  {
    "path": "tools/rule/templates/svelte/rule.js",
    "content": "/** @import {RuleModule} from \"../types.js\" */\n\n/** @type {RuleModule} */\nconst rule = {\n  meta: {\n    type: \"code\",\n    docs: {\n      description: \"FILL ME\",\n      recommended: false,\n      url: \"https://html-eslint.org/docs/svelte/rules/{ruleName}\",\n    },\n    fixable: null,\n    schema: [],\n    messages: {},\n  },\n\n  create(context) {\n    return {};\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "tools/rule/templates/svelte/rule.md",
    "content": "# {ruleName}\n\n## How to use\n\n```js,.eslintrc.js\nimport svelteParser from \"svelte-eslint-parser\";\nexport default  [\n {\n    files: [\"**/*.svelte\"],\n    plugins: {\n      \"@html-eslint/svelte\": htmlSvelte,\n    },\n    languageOptions: {\n      parser: svelteParser,\n    },\n    rules: {\n         \"@html-eslint/svelte/{ruleName}\": \"error\",\n    },\n  },\n];\n```\n\n## Rule Details\n"
  },
  {
    "path": "tools/rule/templates/svelte/rule.test.js",
    "content": "import createRuleTester from \"../rule-tester.js\";\nimport rule from \"../../lib/rules/{ruleName}.js\";\n\nconst ruleTester = createRuleTester();\n\nruleTester.run(\"{ruleName}\", rule, {\n  valid: [],\n  invalid: [],\n});\n"
  },
  {
    "path": "tsconfig.base.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"noEmit\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"preserve\",\n    \"moduleResolution\": \"bundler\",\n    \"noImplicitReturns\": true,\n    \"pretty\": true,\n    \"skipLibCheck\": false,\n    \"sourceMap\": true,\n    \"strict\": true,\n    \"target\": \"es2022\",\n    \"lib\": [\"es2023\"],\n    \"types\": [\"node\", \"jest\"],\n    \"resolveJsonModule\": true,\n    \"verbatimModuleSyntax\": true\n  }\n}\n"
  },
  {
    "path": "turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"cache\": false\n    },\n    \"lint\": {},\n    \"dev\": {\n      \"dependsOn\": [\"^dev\", \"^build\"]\n    },\n    \"test\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \"test:legacy\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \"ts\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \"test:integration\": {\n      \"dependsOn\": [\"@html-eslint/eslint-plugin#build\", \"^build\"]\n    },\n    \"docs\": {}\n  }\n}\n"
  }
]