[
  {
    "path": ".circleci/config.yml",
    "content": "---\n# Reactotron CircleCI Config\n\nversion: 2.1\n\n# used to force publish to ir-docs\nparameters:\n  force-publish-docs:\n    type: boolean\n    default: false\n\n# Anchors define reusable sections of YAML\n# See: https://support.atlassian.com/bitbucket-cloud/docs/yaml-anchors/\nanchors:\n  ### Executors\n  node_executor: &node_executor\n    name: node/default\n    resource_class: large\n  # Default Settings\n  defaults: &defaults\n    working_directory: ~/repo\n  # Branch names used to trigger releases\n  release_branch_names: &release_branch_names\n    - master\n    - beta\n    - alpha\n  # All branches\n  release_branch_filter: &release_branch_filter\n    ignore: /.*/\n  # Filter to identify tags of releases\n  release_app_filter: &release_app_filter\n    - /^reactotron-app@.*/\n  # Shared ir-docs config\n  ir_docs_config: &ir_docs_config\n    description: >-\n      Reactotron - A desktop app for inspecting your React JS and React Native projects.\n    git_email: ci@infinite.red\n    git_username: Infinite Red\n    label: Reactotron\n    project_name: reactotron\n    source_docs_dir: docs\n    source_repo_directory: source\n    target_docs_dir: docs\n    target_repo: git@github.com:infinitered/ir-docs.git\n    target_repo_directory: ir-docs\n\norbs:\n  node: circleci/node@5.2.0\n  publish-docs: infinitered/publish-docs@0.4\n\ncommands:\n  install-packages:\n    description: Install and cache npm packages\n    parameters:\n      cache-key:\n        description: Key to bust install package cache\n        type: string\n        default: \"cache-key-1681340799350\"\n    steps:\n      - restore_cache:\n          name: Restore yarn package cache\n          keys:\n            - node-deps-<<parameters.cache-key>>-{{ arch }}-{{ checksum \"yarn.lock\" }}\n      - restore_cache:\n          name: Restore apps/reactotron-app/dist/\n          keys:\n            - apps/reactotron-app/dist/-<<parameters.cache-key>>-{{ arch }}-{{ checksum \"apps/reactotron-app/package.json\" }}\n      - restore_cache:\n          name: Restoring lib/reactotron-apisauce/dist/\n          keys:\n            - lib/reactotron-apisauce/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-apisauce/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-core-client/dist/\n          keys:\n            - lib/reactotron-core-client/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-client/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-core-contract/dist/\n          keys:\n            - lib/reactotron-core-contract/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-contract/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-core-server/dist/\n          keys:\n            - lib/reactotron-core-server/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-server/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-core-ui/dist/\n          keys:\n            - lib/reactotron-core-ui/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-ui/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-mst/dist/\n          keys:\n            - lib/reactotron-mst/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-mst/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-react-js/dist/\n          keys:\n            - lib/reactotron-react-js/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-react-js/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-react-native/dist/\n          keys:\n            - lib/reactotron-react-native/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-react-native/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-redux/dist/\n          keys:\n            - lib/reactotron-redux/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-redux/package.json\" }}\n      - restore_cache:\n          name: Restore lib/reactotron-react-native-mmkv/dist/\n          keys:\n            - lib/reactotron-react-native-mmkv/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-react-native-mmkv/package.json\" }}\n      - restore_cache:\n          name: Restore lib/eslint-plugin-reactotron/dist/\n          keys:\n            - lib/eslint-plugin-reactotron/dist/-<<parameters.cache-key>>-{{ checksum \"lib/eslint-plugin-reactotron/package.json\" }}\n      - run:\n          name: Install packages\n          command: yarn install --immutable\n      - run:\n          name: Build workspace packages\n          command: |\n            if [ \"$SKIP_LIB_BUILD\" != \"1\" ]; then\n              yarn build\n            else\n              echo \"Skipping workspace build (SKIP_LIB_BUILD=1)\"\n            fi\n      - save_cache:\n          paths:\n            - node_modules/\n            - .yarn/cache\n            - .yarn/install-state.gz\n          key: node-deps-<<parameters.cache-key>>-{{ arch }}-{{ checksum \"yarn.lock\" }}\n      - save_cache:\n          name: Saving lib/reactotron-app/dist/\n          paths:\n            - apps/reactotron-app/dist/\n          key: apps/reactotron-app/dist/-<<parameters.cache-key>>-{{ arch }}-{{ checksum \"apps/reactotron-app/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-apisauce/dist/\n          paths:\n            - lib/reactotron-apisauce/dist/\n          key: lib/reactotron-apisauce/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-apisauce/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-core-client/dist/\n          paths:\n            - lib/reactotron-core-client/dist/\n          key: lib/reactotron-core-client/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-client/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-core-contract/dist/\n          paths:\n            - lib/reactotron-core-contract/dist/\n          key: lib/reactotron-core-contract/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-contract/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-core-server/dist/\n          paths:\n            - lib/reactotron-core-server/dist/\n          key: lib/reactotron-core-server/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-server/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-core-ui/dist/\n          paths:\n            - lib/reactotron-core-ui/dist/\n          key: lib/reactotron-core-ui/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-core-ui/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-mst/dist/\n          paths:\n            - lib/reactotron-mst/dist/\n          key: lib/reactotron-mst/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-mst/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-react-native/dist/\n          paths:\n            - lib/reactotron-react-native/dist/\n          key: lib/reactotron-react-native/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-react-native/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-react-js/dist/\n          paths:\n            - lib/reactotron-react-js/dist/\n          key: lib/reactotron-react-js/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-react-js/package.json\" }}\n      - save_cache:\n          name: Saving lib/reactotron-redux/dist/\n          paths:\n            - lib/reactotron-redux/dist/\n          key: lib/reactotron-redux/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-redux/package.json\" }}\n      - save_cache:\n          name: Saving reactotron-react-native-mmkv/dist/\n          paths:\n            - lib/reactotron-react-native-mmkv/dist/\n          key: lib/reactotron-react-native-mmkv/dist/-<<parameters.cache-key>>-{{ checksum \"lib/reactotron-react-native-mmkv/package.json\" }}\n      - save_cache:\n          name: Saving eslint-plugin-reactotron/dist/\n          paths:\n            - lib/eslint-plugin-reactotron/dist/\n          key: lib/eslint-plugin-reactotron/dist/-<<parameters.cache-key>>-{{ checksum \"lib/eslint-plugin-reactotron/package.json\" }}\n  release-reactotron-app:\n    description: Create release build of Reactotron app, upload to workspace\n    parameters:\n      os:\n        type: string\n    steps:\n      - run:\n          name: Build release <<parameters.os>> app\n          command: yarn workspace reactotron-app build:release\n      - run:\n          name: Remove release/builder-debug.yml and default._Reactotron-x.x.x.dmg file to prevent uploading identitical files between jobs\n          command: find apps/reactotron-app/release -type f \\( -name \"*.yml\" -or -name \"*.yaml\" -or -name \"default.*\" \\) -delete\n      - persist_to_workspace:\n          root: ~/repo/apps/reactotron-app\n          paths:\n            - release/*\n\njobs:\n  build_and_test:\n    <<: *defaults\n    executor: *node_executor\n    steps:\n      - checkout\n      - install-packages\n      - run:\n          name: Build\n          command: yarn build\n      - run:\n          name: Package Validation\n          command: yarn package:validate\n      - run:\n          name: Lint\n          command: yarn lint\n      - run:\n          name: Format Check\n          command: yarn format:check\n      - run:\n          name: Tests\n          command: yarn ci:test\n      - run:\n          name: Typecheck\n          command: yarn typecheck\n      - persist_to_workspace:\n          root: ~/repo\n          paths:\n            - lib/*/dist\n  trust_check:\n    executor: *node_executor\n    steps:\n      - run:\n          name: Check if branch is trusted\n          command: |\n            if [ -n \"$CIRCLE_PR_NUMBER\" ]; then\n              if [[ $CIRCLE_BRANCH == temp-ci-trusted-fork-* ]]; then\n                echo \"Branch is trusted\"\n                exit 0\n              else\n                echo \"Branch is not trusted. Please use the trust process before merging.\"\n                exit 1\n              fi\n            else\n              echo \"Not a PR from a fork, skipping trust check\"\n              exit 0\n            fi\n\n  release_tags:\n    <<: *defaults\n    executor: *node_executor\n    steps:\n      - checkout\n      - install-packages\n      - run:\n          name: Set Git Identity\n          command: |\n            git config --global user.email \"ci@infinite.red\"\n            git config --global user.name \"Infinite Red\"\n            git remote set-url origin https://$GITHUB_TOKEN@github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git\n      - run:\n          name: Create git tags and commits for releases\n          command: yarn release:tags\n      - run:\n          name: Push new commits to release branch\n          command: git push origin $CIRCLE_BRANCH\n      - run:\n          name: Publish new tags from commits created on release branch\n          command: yarn release:tags:push\n\n  release_package:\n    <<: *defaults\n    executor: *node_executor\n    steps:\n      - checkout\n      - install-packages\n      - run:\n          name: Release to npm and github\n          command: |\n            echo \"//registry.npmjs.org/:_authToken=$NPM_TOKEN\" > ~/.npmrc\n            npm whoami\n            yarn release:artifacts $CIRCLE_TAG\n\n  build_app_windows:\n    <<: *defaults\n    docker:\n      - image: electronuserland/builder:20-wine-07.24\n    resource_class: large\n    environment:\n      BUILD_TARGET: windows\n      SKIP_LIB_BUILD: \"1\"\n    steps:\n      - checkout\n      - attach_workspace:\n          at: ~/repo\n      - install-packages\n      - release-reactotron-app:\n          os: Windows\n\n  build_app_linux:\n    <<: *defaults\n    executor: *node_executor\n    environment:\n      BUILD_TARGET: linux\n    steps:\n      - checkout\n      - install-packages\n      - run:\n          name: Update apt-get\n          command: sudo apt update\n      - run:\n          name: Install dependencies\n          command: sudo apt-get install --no-install-recommends -y libopenjp2-tools rpm\n      - release-reactotron-app:\n          os: Linux\n\n  build_app_macos:\n    <<: *defaults\n    macos:\n      xcode: \"16.4.0\"\n      resource_class: macos.m1.medium.gen1\n    environment:\n      BUILD_TARGET: macos\n    steps:\n      - checkout\n      - node/install:\n          node-version: \"22\"\n      - install-packages\n      - run:\n          name: Decode Certificates\n          command: echo \"$ReactotronCerts\" | base64 --decode > ~/repo/apps/reactotron-app/Certificates.p12\n      - run:\n          name: Install Bundler\n          command: gem install bundler\n      - run:\n          name: Install Gems\n          command: |\n            cd apps/reactotron-app\n            bundle install\n      - run:\n          name: Install Cert\n          command: |\n            cd apps/reactotron-app\n            bundle exec fastlane setup\n      - release-reactotron-app:\n          os: MacOS\n\n  release_app:\n    <<: *defaults\n    executor: *node_executor\n    steps:\n      - checkout\n      - install-packages\n      - attach_workspace:\n          at: ~/repo/apps/reactotron-app\n      - run:\n          name: Create git tags and commits for releases\n          command: yarn workspace reactotron-app release:artifacts $CIRCLE_TAG\n\nworkflows:\n  pull_request: # prevents the workflow from running when `force-publish-docs` is true\n    when:\n      and:\n        - not: << pipeline.parameters.force-publish-docs >>\n        - true # Placeholder for correct YAML structure\n    jobs:\n      - trust_check:\n          filters:\n            branches:\n              ignore: *release_branch_names\n      - build_and_test:\n          requires:\n            - trust_check\n          filters:\n            branches:\n              ignore: *release_branch_names\n      - publish-docs/build_docs:\n          requires:\n            - trust_check\n          <<: *ir_docs_config\n          filters:\n            branches:\n              ignore: *release_branch_names\n      # Optional build jobs for testing - require manual approval\n      # - hold_for_app_builds:\n      #     type: approval\n      #     requires:\n      #       - build_and_test\n      #     filters:\n      #       branches:\n      #         ignore: *release_branch_names\n      # - build_app_windows:\n      #     context:\n      #       - infinitered-npm-package\n      #     requires:\n      #       - hold_for_app_builds\n      #     filters:\n      #       branches:\n      #         ignore: *release_branch_names\n      # - build_app_macos:\n      #     context:\n      #       - ReactotronCerts\n      #       - infinitered-npm-package\n      #     requires:\n      #       - hold_for_app_builds\n      #     filters:\n      #       branches:\n      #         ignore: *release_branch_names\n      # - build_app_linux:\n      #     context:\n      #       - infinitered-npm-package\n      #     requires:\n      #       - hold_for_app_builds\n      #     filters:\n      #       branches:\n      #         ignore: *release_branch_names\n\n  # Allows for manual publishing of docs independent of deployment\n  # Use the 'trigger pipeline' button in circle ci and set 'force-publish-docs' to 'true'\n  force_publish_docs:\n    when: << pipeline.parameters.force-publish-docs >>\n    jobs:\n      - publish-docs/publish_docs:\n          <<: *ir_docs_config\n\n  release: # prevents the workflow from running when `force-publish-docs` is true\n    when:\n      and:\n        - not: << pipeline.parameters.force-publish-docs >>\n        - true # Placeholder for correct YAML structure\n    jobs:\n      - build_and_test:\n          filters:\n            branches:\n              only: *release_branch_names\n            tags:\n              only: *release_app_filter\n      - release_tags:\n          context:\n            - infinitered-npm-package\n          filters:\n            branches:\n              only: *release_branch_names\n          requires:\n            - build_and_test\n      - publish-docs/build_docs:\n          <<: *ir_docs_config\n          filters:\n            branches:\n              only:\n                - beta\n                - alpha\n      - publish-docs/publish_docs:\n          <<: *ir_docs_config\n          filters:\n            branches:\n              only:\n                - master\n      - release_package:\n          context:\n            - infinitered-npm-package\n          filters:\n            branches: *release_branch_filter\n            tags:\n              only:\n                - /^(?!reactotron-app)(reactotron-.*|eslint-plugin-reactotron)@.*/ # matches 'reactotron-core-ui@2.0.1', 'eslint-plugin-reactotron@0.1.0' but not 'reactotron-app@3.0.0'\n      - build_app_windows:\n          context:\n            - infinitered-npm-package\n          filters:\n            branches: *release_branch_filter\n            tags:\n              only: *release_app_filter\n          requires:\n            - build_and_test\n      - build_app_macos:\n          context:\n            - ReactotronCerts\n            - infinitered-npm-package\n          filters:\n            branches: *release_branch_filter\n            tags:\n              only: *release_app_filter\n          requires:\n            - build_and_test\n      - build_app_linux:\n          context:\n            - infinitered-npm-package\n          filters:\n            branches: *release_branch_filter\n            tags:\n              only: *release_app_filter\n          requires:\n            - build_and_test\n      - release_app:\n          context:\n            - infinitered-npm-package\n          filters:\n            branches: *release_branch_filter\n            tags:\n              only: *release_app_filter\n          requires:\n            - build_app_windows\n            - build_app_macos\n            - build_app_linux\n# VS Code Extension Version: 1.5.1\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "/** @type {import('eslint').Linter.Config} */\nmodule.exports = {\n  root: true,\n  extends: [\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:import/errors\",\n    \"standard\",\n    \"prettier\",\n  ],\n  plugins: [\"@typescript-eslint\"],\n  parser: \"@typescript-eslint/parser\",\n  parserOptions: {\n    tsconfigRootDir: __dirname, // this option prevents us from specifying this file in \"eslintConfig\" package.json key https://github.com/typescript-eslint/typescript-eslint/issues/251\n    project: [\n      \"./tsconfig.base.json\",\n      \"./apps/*/tsconfig.json\",\n      \"./lib/*/tsconfig.json\",\n    ],\n  },\n  settings: {\n    \"import/extensions\": [\".js\", \".jsx\", \".ts\", \".tsx\"],\n    \"import/parsers\": {\n      \"@typescript-eslint/parser\": [\".ts\", \".tsx\"],\n    },\n    \"import/resolver\": {\n      node: {\n        extensions: [\".js\", \".jsx\", \".ts\", \".tsx\"],\n      },\n    },\n    \"import/ignore\": [\n      \"node_modules/react-native/index\\\\.js$\",\n      \"react-native/Libraries/LogBox/Data/parseLogBoxLog.js\",\n      \"react-native/Libraries/LogBox/LogBox.js\",\n      \"react-native/Libraries/Core/NativeExceptionsManager.js\",\n      \"react-native/Libraries/NativeModules/specs/NativeDevMenu.js\",\n    ],\n  },\n  rules: {\n    \"no-unused-vars\": 0,\n    \"no-undef\": 0,\n    \"space-before-function-paren\": 0,\n    \"@typescript-eslint/indent\": 0,\n    \"@typescript-eslint/explicit-member-accessibility\": 0,\n    \"@typescript-eslint/explicit-function-return-type\": 0,\n    \"@typescript-eslint/no-explicit-any\": 0,\n    \"@typescript-eslint/no-object-literal-type-assertion\": 0,\n    \"@typescript-eslint/no-empty-function\": [2, { allow: [\"arrowFunctions\"] }],\n    \"@typescript-eslint/no-empty-interface\": 0,\n    \"@typescript-eslint/no-var-requires\": 0,\n    \"@typescript-eslint/member-delimiter-style\": 0,\n    \"import/no-cycle\": \"error\",\n  },\n  ignorePatterns: [\n    \"**/dist/**/*\",\n    \"**/node_modules/**/*\",\n    \"**/build/**/*\",\n    \"examples\",\n    \"scripts\",\n    \"**/CHANGELOG.md\",\n  ],\n}\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Contributing Guide\n\nOur current contributing guide can be found here: https://docs.infinite.red/reactotron/contributing/\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: Bug report\ndescription: For issues with running reactotron on your computer\nlabels: [\"bug\"]\nbody:\n  - type: markdown\n    attributes:\n      value: >\n        Before creating a **bug report**, please check the following:\n          * Ensure you're running the latest version release of both the Reactotron app and any Reactotron npm packages you are using.\n          * Ensure there isn't an existing issue for your bug. If there is, leave a comment on the existing issue.\n\n        If you're unsure whether you've hit a bug, check out the #react-native and #reactotron channels in our [Slack Community](https://community.infinite.red).\n\n  - type: textarea\n    attributes:\n      label: Describe the bug\n      description: Also include a description of how to reproduce the bug\n    validations:\n      required: true\n\n  - type: input\n    id: version\n    attributes:\n      label: Reactotron version\n      description: If you're not on release, provide the commit hash\n      placeholder: 3.5.1\n    validations:\n      required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Discussions\n    url: https://github.com/infinitered/reactotron/discussions\n    about: For questions and discussion about Reactotron\n  - name: Slack Community\n    url: https://community.infinite.red/\n    about: Check out our community for more real-time discussion\n  - name: Twitter Community\n    url: https://twitter.com/i/communities/1509407040095068166\n    about: We post news, tips, requests for help, and other discussions.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "## Please verify the following:\n\n- [ ] `yarn build-and-test:local` passes\n- [ ] I have added tests for any new features, if relevant\n- [ ] `README.md` (or relevant documentation) has been updated with your changes\n\n## Describe your PR\n"
  },
  {
    "path": ".github/workflows/cleanup-all-temp-trusted-branches.yml",
    "content": "name: Cleanup All Temp Trusted Branches\n\non:\n  workflow_dispatch:\n\njobs:\n  delete-branches:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Setup Git\n        run: |\n          git config user.name github-actions\n          git config user.email github-actions@github.com\n\n      - name: Find branches to delete\n        run: |\n          # Fetch all branches\n          git fetch --all\n          \n          # Find branches starting with 'temp-ci-trusted-fork-'\n          branches_to_delete=$(git branch -r | grep 'origin/temp-ci-trusted-fork-' | sed 's|origin/||')\n          \n          if [ -z \"$branches_to_delete\" ]; then\n            echo \"No branches found to delete.\"\n            exit 0\n          fi\n\n          echo \"Branches to delete:\"\n          echo \"$branches_to_delete\"\n\n          # Delete each branch\n          for branch in $branches_to_delete; do\n            echo \"Deleting branch: $branch\"\n            git push origin --delete \"$branch\"\n          done\n"
  },
  {
    "path": ".github/workflows/trust-fork-pr-cleanup.yml",
    "content": "name: Cleanup Trusted Branch\n\non:\n  workflow_dispatch:\n    inputs:\n      branch_to_delete:\n        description: 'Branch to delete'\n        required: true\n      delete_after:\n        description: 'Delete after (ISO 8601 date)'\n        required: true\n\njobs:\n  cleanup:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Check if it's time to delete\n        id: check_time\n        run: |\n          current_time=$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")\n          if [[ \"$current_time\" > \"${{ github.event.inputs.delete_after }}\" ]]; then\n            echo \"::set-output name=should_delete::true\"\n          else\n            echo \"::set-output name=should_delete::false\"\n          fi\n\n      - name: Delete branch\n        if: steps.check_time.outputs.should_delete == 'true'\n        uses: actions/github-script@v6\n        with:\n          github-token: ${{secrets.GITHUB_TOKEN}}\n          script: |\n            github.rest.git.deleteRef({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              ref: 'heads/${{ github.event.inputs.branch_to_delete }}'\n            });\n"
  },
  {
    "path": ".github/workflows/trust-fork-pr.yml",
    "content": "name: Trust Fork PR\n\non:\n  workflow_dispatch:\n    inputs:\n      pr_number:\n        description: 'PR number to trust'\n        required: true\n\njobs:\n  trust-fork:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Generate unique identifier\n        id: gen_uid\n        run: echo \"::set-output name=uid::$(date +%s)-${{ github.run_id }}\"\n\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Setup Git\n        run: |\n          git config user.name github-actions\n          git config user.email github-actions@github.com\n\n      - name: Fetch PR details\n        id: pr\n        uses: actions/github-script@v6\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const pr = await github.rest.pulls.get({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              pull_number: parseInt(context.payload.inputs.pr_number)\n            });\n            core.setOutput('head_repo', pr.data.head.repo.full_name);\n            core.setOutput('head_branch', pr.data.head.ref);\n\n      - name: Fetch and push to trusted branch\n        env:\n          FORK_REPO: ${{ steps.pr.outputs.head_repo }}\n          FORK_BRANCH: ${{ steps.pr.outputs.head_branch }}\n          UNIQUE_ID: ${{ steps.gen_uid.outputs.uid }}\n        run: |\n          git remote add fork https://github.com/${FORK_REPO}.git\n          git fetch fork ${FORK_BRANCH}\n          git push origin fork/${FORK_BRANCH}:temp-ci-trusted-fork-${UNIQUE_ID} --force\n\n      - name: Cleanup\n        if: always()\n        run: |\n          git remote remove fork\n\n      - name: Schedule branch deletion\n        if: success()\n        env:\n          UNIQUE_ID: ${{ steps.gen_uid.outputs.uid }}\n        uses: actions/github-script@v6\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const deleteDate = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(); // 24 hours from now\n            github.rest.actions.createWorkflowDispatch({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              workflow_id: 'trust-fork-pr-cleanup.yml',\n              ref: 'main',\n              inputs: {\n                branch_to_delete: `temp-ci-trusted-fork-${process.env.UNIQUE_ID}`,\n                delete_after: deleteDate\n              }\n            });\n"
  },
  {
    "path": ".gitignore",
    "content": ".vscode\njsconfig.json\n\n# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n.eslintcache\n\n# Dependency directory\n# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git\nnode_modules\nyarn-error.log\n\n# OSX\n.DS_Store\n\n# flow-typed\nflow-typed/npm/*\n!flow-typed/npm/module_vx.x.x.js\n\n# App packaged\nrelease\nsrc/main.prod.js\nsrc/main.prod.js.map\nsrc/renderer.prod.js\nsrc/renderer.prod.js.map\nsrc/style.css\nsrc/style.css.map\ndist\ndll\nmain.js\nmain.js.map\n\n.idea\nnpm-debug.log.*\n\nTODO\n\n.npmrc\n*.p12\n\n# Yarn 3\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n.nx/cache"
  },
  {
    "path": ".nxignore",
    "content": "scripts/template\napps/example-app"
  },
  {
    "path": ".prettierignore",
    "content": "**/.vscode\n**/android\n**/build\n**/compiled\n**/dist\n**/ios\n**/package.json\n**/release\n**/CHANGELOG.md\n\n/.nx/cache"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"printWidth\": 100,\n  \"semi\": false,\n  \"singleQuote\": false,\n  \"trailingComma\": \"es5\"\n}\n"
  },
  {
    "path": ".tool-versions",
    "content": "nodejs 22.19.0\n"
  },
  {
    "path": ".yarn/patches/electron-webpack-npm-2.8.2-1bda600605.patch",
    "content": "diff --git a/out/main.js b/out/main.js\nindex 91a37868f883d36ccd2565eb32d1b50ef52b6266..983c1b324d34d89cb3033f09d0d3d5872963ed13 100644\n--- a/out/main.js\n+++ b/out/main.js\n@@ -217,7 +217,7 @@ class WebpackConfigurator {\n     this.rules = [];\n     this.plugins = []; // js must be first - e.g. iView has two files loading-bar.js and loading-bar.vue - when we require \"loading-bar\", js file must be resolved and not vue\n \n-    this.extensions = [\".js\", \".json\", \".node\"];\n+    this.extensions = [\".ts\", \".tsx\", \".js\", \".json\", \".node\"];\n     this._electronVersion = null;\n     this.entryFiles = [];\n \ndiff --git a/out/targets/BaseTarget.js b/out/targets/BaseTarget.js\nindex e4c6b00396be2326f03fe8d6dbe55bec55c77be3..3b485d5de154f86251b1a85514f4c25a26f36072 100644\n--- a/out/targets/BaseTarget.js\n+++ b/out/targets/BaseTarget.js\n@@ -95,7 +95,7 @@ class BaseTarget {\n     }\n \n     rules.push({\n-      test: /\\.js$/,\n+      test: /\\.[tj]sx?$/,\n       exclude: /(node_modules|bower_components)/,\n       use: babelLoader\n     }, {\n"
  },
  {
    "path": ".yarn/patches/react-hotkeys-npm-2.0.0-8e6c50bd05.patch",
    "content": "diff --git a/index.d.ts b/index.d.ts\nindex 9760ab72bd6de4f79abcfbbf7cf24054f9ba3ab4..7446f7714ab855319d5f4e6ace8ebb0471b2f7d8 100644\n--- a/index.d.ts\n+++ b/index.d.ts\n@@ -8,12 +8,12 @@ export type KeyName = string;\n export type KeyEventName = 'keyup' | 'keydown' | 'keypress';\n \n export interface KeyMapOptions {\n-  sequence: MouseTrapKeySequence;\n+  sequence?: MouseTrapKeySequence;\n   action: KeyEventName;\n }\n \n export interface ExtendedKeyMapOptions extends KeyMapOptions {\n-  sequences: Array<MouseTrapKeySequence> | Array<KeyMapOptions>;\n+  sequences?: Array<MouseTrapKeySequence> | Array<KeyMapOptions>;\n   name?: string;\n   group?: string;\n   description?: string;\n"
  },
  {
    "path": ".yarn/patches/webpack-npm-4.47.0-42e477a08c.patch",
    "content": "diff --git a/lib/ModuleFilenameHelpers.js b/lib/ModuleFilenameHelpers.js\nindex bd0742b7f70fd7fccb9af5cd3138b4635321e65f..3c3eba8de6e1d4a63aeca962a70230c3c381c1c4 100644\n--- a/lib/ModuleFilenameHelpers.js\n+++ b/lib/ModuleFilenameHelpers.js\n@@ -42,7 +42,7 @@ const getBefore = (str, token) => {\n };\n \n const getHash = str => {\n-\tconst hash = createHash(\"md4\");\n+\tconst hash = createHash(\"sha256\");\n \thash.update(str);\n \tconst digest = /** @type {string} */ (hash.digest(\"hex\"));\n \treturn digest.substr(0, 4);\ndiff --git a/lib/NamedModulesPlugin.js b/lib/NamedModulesPlugin.js\nindex 2d84aafe297a2423af70e1606183790c09c101d8..fe35290f1ca162012ae452aeb112f97da46d6cbc 100644\n--- a/lib/NamedModulesPlugin.js\n+++ b/lib/NamedModulesPlugin.js\n@@ -8,7 +8,7 @@ const createHash = require(\"./util/createHash\");\n const RequestShortener = require(\"./RequestShortener\");\n \n const getHash = str => {\n-\tconst hash = createHash(\"md4\");\n+\tconst hash = createHash(\"sha256\");\n \thash.update(str);\n \tconst digest = /** @type {string} */ (hash.digest(\"hex\"));\n \treturn digest.substr(0, 4);\ndiff --git a/lib/SourceMapDevToolPlugin.js b/lib/SourceMapDevToolPlugin.js\nindex 3018eb2551fe9ddcfc6178f1752a93d6b67bc930..bb37fd6efb39b273ccebc70c02a5ac4f3479682c 100644\n--- a/lib/SourceMapDevToolPlugin.js\n+++ b/lib/SourceMapDevToolPlugin.js\n@@ -346,7 +346,7 @@ class SourceMapDevToolPlugin {\n \t\t\t\t\t\t\t\t\t: filename,\n \t\t\t\t\t\t\t\tquery,\n \t\t\t\t\t\t\t\tbasename: basename(filename),\n-\t\t\t\t\t\t\t\tcontentHash: createHash(\"md4\")\n+\t\t\t\t\t\t\t\tcontentHash: createHash(\"sha256\")\n \t\t\t\t\t\t\t\t\t.update(sourceMapString)\n \t\t\t\t\t\t\t\t\t.digest(\"hex\")\n \t\t\t\t\t\t\t};\ndiff --git a/lib/optimize/ConcatenatedModule.js b/lib/optimize/ConcatenatedModule.js\nindex df4d216b12901b24e0fc18f96f1c6ea4dc7b57ae..03711c47e7a5c1b021a257dba9f436289b9851b6 100644\n--- a/lib/optimize/ConcatenatedModule.js\n+++ b/lib/optimize/ConcatenatedModule.js\n@@ -560,7 +560,7 @@ class ConcatenatedModule extends Module {\n \t\t\t\torderedConcatenationListIdentifiers += \" \";\n \t\t\t}\n \t\t}\n-\t\tconst hash = createHash(\"md4\");\n+\t\tconst hash = createHash(\"sha256\");\n \t\thash.update(orderedConcatenationListIdentifiers);\n \t\treturn this.rootModule.identifier() + \" \" + hash.digest(\"hex\");\n \t}\ndiff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js\nindex 42f23c9ed838f827ef52346b459154e6d4129c3d..690cfd86cd5049bf2d1838d162c67d007607f6d7 100644\n--- a/lib/optimize/SplitChunksPlugin.js\n+++ b/lib/optimize/SplitChunksPlugin.js\n@@ -21,7 +21,7 @@ const createHash = require(\"../util/createHash\");\n const deterministicGroupingForModules = /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */ (deterministicGrouping);\n \n const hashFilename = name => {\n-\treturn createHash(\"md4\")\n+\treturn createHash(\"sha256\")\n \t\t.update(name)\n \t\t.digest(\"hex\")\n \t\t.slice(0, 8);\n"
  },
  {
    "path": ".yarn/releases/yarn-4.1.1.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var Z3e=Object.create;var NR=Object.defineProperty;var $3e=Object.getOwnPropertyDescriptor;var e_e=Object.getOwnPropertyNames;var t_e=Object.getPrototypeOf,r_e=Object.prototype.hasOwnProperty;var ve=(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 new Error('Dynamic require of \"'+t+'\" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)NR(t,r,{get:e[r],enumerable:!0})},n_e=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of e_e(e))!r_e.call(t,a)&&a!==r&&NR(t,a,{get:()=>e[a],enumerable:!(o=$3e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?Z3e(t_e(t)):{},n_e(e||!t||!t.__esModule?NR(r,\"default\",{value:t,enumerable:!0}):r,t));var vi={};Vt(vi,{SAFE_TIME:()=>x7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Ou,S_IFREG:()=>qw});var Ou,wD,qw,ID,x7,k7=Et(()=>{Ou=61440,wD=16384,qw=32768,ID=40960,x7=456789e3});var ar={};Vt(ar,{EBADF:()=>Io,EBUSY:()=>i_e,EEXIST:()=>u_e,EINVAL:()=>o_e,EISDIR:()=>c_e,ENOENT:()=>a_e,ENOSYS:()=>s_e,ENOTDIR:()=>l_e,ENOTEMPTY:()=>f_e,EOPNOTSUPP:()=>p_e,EROFS:()=>A_e,ERR_DIR_CLOSED:()=>LR});function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function i_e(t){return Tl(\"EBUSY\",t)}function s_e(t,e){return Tl(\"ENOSYS\",`${t}, ${e}`)}function o_e(t){return Tl(\"EINVAL\",`invalid argument, ${t}`)}function Io(t){return Tl(\"EBADF\",`bad file descriptor, ${t}`)}function a_e(t){return Tl(\"ENOENT\",`no such file or directory, ${t}`)}function l_e(t){return Tl(\"ENOTDIR\",`not a directory, ${t}`)}function c_e(t){return Tl(\"EISDIR\",`illegal operation on a directory, ${t}`)}function u_e(t){return Tl(\"EEXIST\",`file already exists, ${t}`)}function A_e(t){return Tl(\"EROFS\",`read-only filesystem, ${t}`)}function f_e(t){return Tl(\"ENOTEMPTY\",`directory not empty, ${t}`)}function p_e(t){return Tl(\"EOPNOTSUPP\",`operation not supported, ${t}`)}function LR(){return Tl(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var BD=Et(()=>{});var Ea={};Vt(Ea,{BigIntStatsEntry:()=>ty,DEFAULT_MODE:()=>UR,DirEntry:()=>OR,StatEntry:()=>ey,areStatsEqual:()=>_R,clearStats:()=>vD,convertToBigIntStats:()=>g_e,makeDefaultStats:()=>Q7,makeEmptyStats:()=>h_e});function Q7(){return new ey}function h_e(){return vD(Q7())}function vD(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):MR.types.isDate(r)&&(t[e]=new Date(0))}return t}function g_e(t){let e=new ty;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o==\"number\"?e[r]=BigInt(o):MR.types.isDate(o)&&(e[r]=new Date(o))}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 _R(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,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var MR,UR,OR,ey,ty,HR=Et(()=>{MR=$e(ve(\"util\")),UR=33188,OR=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}},ey=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=UR;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}},ty=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(UR);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 C_e(t){let e,r;if(e=t.match(y_e))t=e[1];else if(r=t.match(E_e))t=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return t;return t.replace(/\\//g,\"\\\\\")}function w_e(t){t=t.replace(/\\\\/g,\"/\");let e,r;return(e=t.match(d_e))?t=`/${e[1]}`:(r=t.match(m_e))&&(t=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),t}function DD(t,e){return t===ue?R7(e):qR(e)}var jw,Bt,dr,ue,V,F7,d_e,m_e,y_e,E_e,qR,R7,Ca=Et(()=>{jw=$e(ve(\"path\")),Bt={root:\"/\",dot:\".\",parent:\"..\"},dr={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(jw.default),V=Object.create(jw.default.posix);ue.cwd=()=>process.cwd();V.cwd=process.platform===\"win32\"?()=>qR(process.cwd()):process.cwd;process.platform===\"win32\"&&(V.resolve=(...t)=>t.length>0&&V.isAbsolute(t[0])?jw.default.posix.resolve(...t):jw.default.posix.resolve(V.cwd(),...t));F7=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)=>F7(ue,t,e);V.contains=(t,e)=>F7(V,t,e);d_e=/^([a-zA-Z]:.*)$/,m_e=/^\\/\\/(\\.\\/)?(.*)$/,y_e=/^\\/([a-zA-Z]:.*)$/,E_e=/^\\/unc\\/(\\.dot\\/)?(.*)$/;qR=process.platform===\"win32\"?w_e:t=>t,R7=process.platform===\"win32\"?C_e:t=>t;ue.fromPortablePath=R7;ue.toPortablePath=qR});async function SD(t,e){let r=\"0123456789abcdef\";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function T7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:Og,mtime:Og}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await jR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function jR(t,e,r,o,a,n,u){let A=u.didParentExist?await N7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=u.stableTime?{atime:Og,mtime:Og}:p,I;switch(!0){case p.isDirectory():I=await B_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await S_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await P_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((I||A?.mtime?.getTime()!==E.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,E)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function N7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function B_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!==\"EEXIST\")throw v}}),h=!0);let E=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of E.sort())await jR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(E.map(async x=>{await jR(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(u,x),I)}))).some(x=>x)&&(h=!0);return h}async function v_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromise(u,{algorithm:\"sha1\"}),I=420,v=A.mode&511,x=`${E}${v!==I?v.toString(8):\"\"}`,C=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),R;(ce=>(ce[ce.Lock=0]=\"Lock\",ce[ce.Rename=1]=\"Rename\"))(R||={});let L=1,U=await N7(r,C);if(a){let ae=U&&a.dev===U.dev&&a.ino===U.ino,fe=U?.mtimeMs!==I_e;if(ae&&fe&&h.autoRepair&&(L=0,U=null),!ae)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let J=!U&&L===1?`${C}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,te=!1;return t.push(async()=>{if(!U&&(L===0&&await r.lockPromise(C,async()=>{let ae=await n.readFilePromise(u);await r.writeFilePromise(C,ae)}),L===1&&J)){let ae=await n.readFilePromise(u);await r.writeFilePromise(J,ae);try{await r.linkPromise(J,C)}catch(fe){if(fe.code===\"EEXIST\")te=!0,await r.unlinkPromise(J);else throw fe}}a||await r.linkPromise(C,o)}),e.push(async()=>{U||(await r.lutimesPromise(C,Og,Og),v!==I&&await r.chmodPromise(C,v)),J&&!te&&await r.unlinkPromise(J)}),!1}async function D_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function S_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?v_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):D_e(t,e,r,o,a,n,u,A,p)}async function P_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Og,I_e,GR=Et(()=>{Ca();Og=new Date(456789e3*1e3),I_e=Og.getTime()});function PD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new Gw(e,a,o)}var Gw,L7=Et(()=>{BD();Gw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw LR()}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 O7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var M7,ry,U7=Et(()=>{M7=ve(\"events\");HR();ry=class extends M7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ry(r,o,a);return n.start(),n}start(){O7(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(){O7(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 o=this.bigint?new ty:new ey;return vD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;_R(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener(\"change\",r);let o=this.changeListeners.get(r);typeof o<\"u\"&&clearInterval(o),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 ny(t,e,r,o){let a,n,u,A;switch(typeof r){case\"function\":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=bD.get(t);typeof p>\"u\"&&bD.set(t,p=new Map);let h=p.get(e);return typeof h>\"u\"&&(h=ry.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Mg(t,e,r){let o=bD.get(t);if(typeof o>\"u\")return;let a=o.get(e);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Ug(t){let e=bD.get(t);if(!(typeof e>\"u\"))for(let r of e.keys())Mg(t,r)}var bD,YR=Et(()=>{U7();bD=new WeakMap});function b_e(t){let e=t.match(/\\r?\\n/g);if(e===null)return H7.EOL;let r=e.filter(a=>a===`\\r\n`).length,o=e.length-r;return r>o?`\\r\n`:`\n`}function _g(t,e){return e.replace(/\\r?\\n/g,b_e(t))}var _7,H7,gf,Mu,Hg=Et(()=>{_7=ve(\"crypto\"),H7=ve(\"os\");GR();Ca();gf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(e,{algorithm:r=\"sha512\"}={}){let o=await this.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,_7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=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(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!==\"EBUSY\"&&u.code!==\"ENOTEMPTY\")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(o.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:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await T7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(DD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(e,\"utf8\")}catch{}let u=o?_g(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(e,\"utf8\")}catch{}let u=o?_g(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code===\"EXDEV\")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code===\"EXDEV\")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await A())try{await this.unlinkPromise(o);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 ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<\"u\"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Mu=class extends gf{constructor(){super(V)}}});var Ss,df=Et(()=>{Hg();Ss=class extends gf{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,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}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,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r==\"string\"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,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,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}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,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}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 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,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}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,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e==\"number\"?e:this.mapToBase(e)}}});var Uu,q7=Et(()=>{df();Uu=class extends Ss{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});function j7(t){let e=t;return typeof t.path==\"string\"&&(e.path=ue.toPortablePath(t.path)),e}var G7,Tn,qg=Et(()=>{G7=$e(ve(\"fs\"));Hg();Ca();Tn=class extends Mu{constructor(r=G7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return V.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<\"u\"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>{let n=a;return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n})}opendirSync(r,o){let n=typeof o<\"u\"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,E)=>{h?p(h):A(E)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o==\"string\"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o==\"string\"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r==\"string\"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r==\"string\"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(j7)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(ue.toPortablePath)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}readdirSync(r,o){return o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),o).map(j7):this.realFs.readdirSync(ue.fromPortablePath(r),o).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(r),o):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var gn,Y7=Et(()=>{qg();df();Ca();gn=class extends Ss{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseFs.resolve(V.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var W7,_u,K7=Et(()=>{qg();df();Ca();W7=Bt.root,_u=class extends Ss{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(W7,r));if(o.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(W7,this.pathUtils.relative(this.target,r))}}});var iy,V7=Et(()=>{df();iy=class extends Ss{constructor(r,o){super(o);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 jg,wa,Hp,J7=Et(()=>{jg=ve(\"fs\");Hg();qg();YR();BD();Ca();wa=4278190080,Hp=class extends Mu{constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=jg.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:I}){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=u?new Map:null,this.factoryPromise=E,this.factorySync=I,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"read\");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"readSync\");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"write\");let[p,h]=A;return typeof o==\"string\"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"writeSync\");let[p,h]=A;return typeof o==\"string\"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"close\");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"closeSync\");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstat\");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstatSync\");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmod\");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmodSync\");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchown\");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchownSync\");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&jg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&jg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncate\");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncateSync\");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ny(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Mg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath===\"/\"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath===\"/\"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o=\"\";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&jg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[u,{childFs:A,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||A.hasOpenFileHandles?.())){if(o>=p){A.saveAndClose?.(),this.mountInstances.delete(u),n-=1;continue}else if(r===null||n<=0){a=p;break}A.saveAndClose?.(),this.mountInstances.delete(u),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-o).unref())}async getMountPromise(r,o){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 o(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await o(a)}finally{a.saveAndClose?.()}}}getMountSync(r,o){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,o(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return o(a)}finally{a.saveAndClose?.()}}}}});var Zt,WR,Yw,z7=Et(()=>{Hg();Ca();Zt=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),WR=class extends gf{constructor(){super(V)}getExtractHint(){throw Zt()}getRealPath(){throw Zt()}resolve(){throw Zt()}async openPromise(){throw Zt()}openSync(){throw Zt()}async opendirPromise(){throw Zt()}opendirSync(){throw Zt()}async readPromise(){throw Zt()}readSync(){throw Zt()}async writePromise(){throw Zt()}writeSync(){throw Zt()}async closePromise(){throw Zt()}closeSync(){throw Zt()}createWriteStream(){throw Zt()}createReadStream(){throw Zt()}async realpathPromise(){throw Zt()}realpathSync(){throw Zt()}async readdirPromise(){throw Zt()}readdirSync(){throw Zt()}async existsPromise(e){throw Zt()}existsSync(e){throw Zt()}async accessPromise(){throw Zt()}accessSync(){throw Zt()}async statPromise(){throw Zt()}statSync(){throw Zt()}async fstatPromise(e){throw Zt()}fstatSync(e){throw Zt()}async lstatPromise(e){throw Zt()}lstatSync(e){throw Zt()}async fchmodPromise(){throw Zt()}fchmodSync(){throw Zt()}async chmodPromise(){throw Zt()}chmodSync(){throw Zt()}async fchownPromise(){throw Zt()}fchownSync(){throw Zt()}async chownPromise(){throw Zt()}chownSync(){throw Zt()}async mkdirPromise(){throw Zt()}mkdirSync(){throw Zt()}async rmdirPromise(){throw Zt()}rmdirSync(){throw Zt()}async linkPromise(){throw Zt()}linkSync(){throw Zt()}async symlinkPromise(){throw Zt()}symlinkSync(){throw Zt()}async renamePromise(){throw Zt()}renameSync(){throw Zt()}async copyFilePromise(){throw Zt()}copyFileSync(){throw Zt()}async appendFilePromise(){throw Zt()}appendFileSync(){throw Zt()}async writeFilePromise(){throw Zt()}writeFileSync(){throw Zt()}async unlinkPromise(){throw Zt()}unlinkSync(){throw Zt()}async utimesPromise(){throw Zt()}utimesSync(){throw Zt()}async lutimesPromise(){throw Zt()}lutimesSync(){throw Zt()}async readFilePromise(){throw Zt()}readFileSync(){throw Zt()}async readlinkPromise(){throw Zt()}readlinkSync(){throw Zt()}async truncatePromise(){throw Zt()}truncateSync(){throw Zt()}async ftruncatePromise(e,r){throw Zt()}ftruncateSync(e,r){throw Zt()}watch(){throw Zt()}watchFile(){throw Zt()}unwatchFile(){throw Zt()}},Yw=WR;Yw.instance=new WR});var qp,X7=Et(()=>{df();Ca();qp=class extends Ss{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var x_e,KR,k_e,mi,Z7=Et(()=>{qg();df();Ca();x_e=/^[0-9]+$/,KR=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,k_e=/^([^/]+-)?[a-f0-9]+$/,mi=class extends Ss{constructor({baseFs:r=new Tn}={}){super(V);this.baseFs=r}static makeVirtualPath(r,o,a){if(V.basename(r)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!V.basename(o).match(k_e))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let u=V.relative(V.dirname(r),a).split(\"/\"),A=0;for(;A<u.length&&u[A]===\"..\";)A+=1;let p=u.slice(A);return V.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(KR);if(!o||!o[3]&&o[5])return r;let a=V.dirname(o[1]);if(!o[3]||!o[4])return a;if(!x_e.test(o[4]))return r;let u=Number(o[4]),A=\"../\".repeat(u),p=o[5]||\".\";return mi.resolveVirtual(V.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(KR);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(KR);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r===\"\")return r;if(this.pathUtils.isAbsolute(r))return mi.resolveVirtual(r);let o=mi.resolveVirtual(this.baseFs.resolve(Bt.dot)),a=mi.resolveVirtual(this.baseFs.resolve(r));return V.relative(o,a)||Bt.dot}mapFromBase(r){return r}}});function Q_e(t,e){return typeof VR.default.isUtf8<\"u\"?VR.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var VR,$7,eY,xD,tY=Et(()=>{VR=$e(ve(\"buffer\")),$7=ve(\"url\"),eY=ve(\"util\");df();Ca();xD=class extends Ss{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r==\"string\")return r;if(r instanceof URL)return(0,$7.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(!Q_e(r,o))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 o}throw new Error(`Unsupported path type: ${(0,eY.inspect)(r)}`)}}});var rY,Bo,mf,jp,kD,QD,sy,Tc,Nc,F_e,R_e,T_e,N_e,Ww,nY=Et(()=>{rY=ve(\"readline\"),Bo=Symbol(\"kBaseFs\"),mf=Symbol(\"kFd\"),jp=Symbol(\"kClosePromise\"),kD=Symbol(\"kCloseResolve\"),QD=Symbol(\"kCloseReject\"),sy=Symbol(\"kRefs\"),Tc=Symbol(\"kRef\"),Nc=Symbol(\"kUnref\"),Ww=class{constructor(e,r){this[F_e]=1;this[R_e]=void 0;this[T_e]=void 0;this[N_e]=void 0;this[Bo]=r,this[mf]=e}get fd(){return this[mf]}async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[Bo].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Nc]()}}async chown(e,r){try{return this[Tc](this.chown),await this[Bo].fchownPromise(this.fd,e,r)}finally{this[Nc]()}}async chmod(e){try{return this[Tc](this.chmod),await this[Bo].fchmodPromise(this.fd,e)}finally{this[Nc]()}}createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??=0,o??=0,o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Bo].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Nc]()}}async readFile(e){try{this[Tc](this.readFile);let r=(typeof e==\"string\"?e:e?.encoding)??void 0;return await this[Bo].readFilePromise(this.fd,r)}finally{this[Nc]()}}readLines(e){return(0,rY.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tc](this.stat),await this[Bo].fstatPromise(this.fd,e)}finally{this[Nc]()}}async truncate(e){try{return this[Tc](this.truncate),await this[Bo].ftruncatePromise(this.fd,e)}finally{this[Nc]()}}utimes(e,r){throw new Error(\"Method not implemented.\")}async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[Bo].writeFilePromise(this.fd,e,o)}finally{this[Nc]()}}async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Nc]()}}async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<\"u\")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Nc]()}}readv(e,r){throw new Error(\"Method not implemented.\")}close(){if(this[mf]===-1)return Promise.resolve();if(this[jp])return this[jp];if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[jp]=this[Bo].closePromise(e).finally(()=>{this[jp]=void 0})}else this[jp]=new Promise((e,r)=>{this[kD]=e,this[QD]=r}).finally(()=>{this[jp]=void 0,this[QD]=void 0,this[kD]=void 0});return this[jp]}[(Bo,mf,F_e=sy,R_e=jp,T_e=kD,N_e=QD,Tc)](e){if(this[mf]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=e.name,r}this[sy]++}[Nc](){if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[Bo].closePromise(e).then(this[kD],this[QD])}}}});function Kw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?.[oy.promisify.custom]<\"u\"&&(n[oy.promisify.custom]=u[oy.promisify.custom])};{r(t,\"exists\",(o,...a)=>{let u=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,\"read\",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let E={};o.length<3?h=o[1]:(E=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=E}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let o of iY){let a=o.replace(/Promise$/,\"\");if(typeof t[a]>\"u\")continue;let n=e[o];if(typeof n>\"u\")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]==\"function\"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,\"existsSync\",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,\"readSync\",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of L_e){let a=o;if(typeof t[a]>\"u\")continue;let n=e[o];typeof n>\"u\"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of iY){let n=a.replace(/Promise$/,\"\");if(typeof o[n]>\"u\")continue;let u=e[a];typeof u>\"u\"||a!==\"open\"&&r(o,n,(A,...p)=>A instanceof Ww?A[n].apply(A,p):u.call(e,A,...p))}r(o,\"open\",async(...a)=>{let n=await e.openPromise(...a);return new Ww(n,e)})}t.read[oy.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[oy.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function FD(t,e){let r=Object.create(t);return Kw(r,e),r}var oy,L_e,iY,sY=Et(()=>{oy=ve(\"util\");tY();nY();L_e=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\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),iY=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function oY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${t}${e}`}function aY(){if(JR)return JR;let t=ue.toPortablePath(lY.default.tmpdir()),e=oe.realpathSync(t);return process.once(\"exit\",()=>{oe.rmtempSync()}),JR={tmpdir:t,realTmpdir:e}}var lY,Lc,JR,oe,cY=Et(()=>{lY=$e(ve(\"os\"));qg();Ca();Lc=new Set,JR=null;oe=Object.assign(new Tn,{detachTemp(t){Lc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(\"xfs-\");try{this.mkdirSync(V.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>\"u\")return a;try{return t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(\"xfs-\");try{await this.mkdirPromise(V.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>\"u\")return a;try{return await t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),Lc.delete(t)}catch{}}))},rmtempSync(){for(let t of Lc)try{oe.removeSync(t),Lc.delete(t)}catch{}}})});var Vw={};Vt(Vw,{AliasFS:()=>Uu,BasePortableFakeFS:()=>Mu,CustomDir:()=>Gw,CwdFS:()=>gn,FakeFS:()=>gf,Filename:()=>dr,JailFS:()=>_u,LazyFS:()=>iy,MountFS:()=>Hp,NoFS:()=>Yw,NodeFS:()=>Tn,PortablePath:()=>Bt,PosixFS:()=>qp,ProxiedFS:()=>Ss,VirtualFS:()=>mi,constants:()=>vi,errors:()=>ar,extendFs:()=>FD,normalizeLineEndings:()=>_g,npath:()=>ue,opendir:()=>PD,patchFs:()=>Kw,ppath:()=>V,setupCopyIndex:()=>SD,statUtils:()=>Ea,unwatchAllFiles:()=>Ug,unwatchFile:()=>Mg,watchFile:()=>ny,xfs:()=>oe});var St=Et(()=>{k7();BD();HR();GR();L7();YR();Hg();Ca();Ca();q7();Hg();Y7();K7();V7();J7();z7();qg();X7();df();Z7();sY();cY()});var hY=_((obt,pY)=>{pY.exports=fY;fY.sync=M_e;var uY=ve(\"fs\");function O_e(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 o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function AY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:O_e(e,r)}function fY(t,e,r){uY.stat(t,function(o,a){r(o,o?!1:AY(a,t,e))})}function M_e(t,e){return AY(uY.statSync(t),t,e)}});var EY=_((abt,yY)=>{yY.exports=dY;dY.sync=U_e;var gY=ve(\"fs\");function dY(t,e,r){gY.stat(t,function(o,a){r(o,o?!1:mY(a,e))})}function U_e(t,e){return mY(gY.statSync(t),e)}function mY(t,e){return t.isFile()&&__e(t,e)}function __e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=A|p,I=r&h||r&p&&a===u||r&A&&o===n||r&E&&n===0;return I}});var wY=_((cbt,CY)=>{var lbt=ve(\"fs\"),RD;process.platform===\"win32\"||global.TESTING_WINDOWS?RD=hY():RD=EY();CY.exports=zR;zR.sync=H_e;function zR(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(o,a){zR(t,e||{},function(n,u){n?a(n):o(u)})})}RD(t,e||{},function(o,a){o&&(o.code===\"EACCES\"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function H_e(t,e){try{return RD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var bY=_((ubt,PY)=>{var ay=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",IY=ve(\"path\"),q_e=ay?\";\":\":\",BY=wY(),vY=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),DY=(t,e)=>{let r=e.colon||q_e,o=t.match(/\\//)||ay&&t.match(/\\\\/)?[\"\"]:[...ay?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],a=ay?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=ay?a.split(r):[\"\"];return ay&&t.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:o,pathExt:n,pathExtExe:a}},SY=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=DY(t,e),u=[],A=h=>new Promise((E,I)=>{if(h===o.length)return e.all&&u.length?E(u):I(vY(t));let v=o[h],x=/^\".*\"$/.test(v)?v.slice(1,-1):v,C=IY.join(x,t),R=!x&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+C:C;E(p(R,h,0))}),p=(h,E,I)=>new Promise((v,x)=>{if(I===a.length)return v(A(E+1));let C=a[I];BY(h+C,{pathExt:n},(R,L)=>{if(!R&&L)if(e.all)u.push(h+C);else return v(h+C);return v(p(h,E,I+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},j_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=DY(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^\".*\"$/.test(A)?A.slice(1,-1):A,h=IY.join(p,t),E=!p&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+h:h;for(let I=0;I<o.length;I++){let v=E+o[I];try{if(BY.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw vY(t)};PY.exports=SY;SY.sync=j_e});var kY=_((Abt,XR)=>{\"use strict\";var xY=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(o=>o.toUpperCase()===\"PATH\")||\"Path\"};XR.exports=xY;XR.exports.default=xY});var TY=_((fbt,RY)=>{\"use strict\";var QY=ve(\"path\"),G_e=bY(),Y_e=kY();function FY(t,e){let r=t.options.env||process.env,o=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 u;try{u=G_e.sync(t.command,{path:r[Y_e({env:r})],pathExt:e?QY.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=QY.resolve(a?t.options.cwd:\"\",u)),u}function W_e(t){return FY(t)||FY(t,!0)}RY.exports=W_e});var NY=_((pbt,$R)=>{\"use strict\";var ZR=/([()\\][%!^\"`<>&|;, *?])/g;function K_e(t){return t=t.replace(ZR,\"^$1\"),t}function V_e(t,e){return t=`${t}`,t=t.replace(/(\\\\*)\"/g,'$1$1\\\\\"'),t=t.replace(/(\\\\*)$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(ZR,\"^$1\"),e&&(t=t.replace(ZR,\"^$1\")),t}$R.exports.command=K_e;$R.exports.argument=V_e});var OY=_((hbt,LY)=>{\"use strict\";LY.exports=/^#!(.*)/});var UY=_((gbt,MY)=>{\"use strict\";var J_e=OY();MY.exports=(t=\"\")=>{let e=t.match(J_e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?o:o?`${a} ${o}`:a}});var HY=_((dbt,_Y)=>{\"use strict\";var eT=ve(\"fs\"),z_e=UY();function X_e(t){let r=Buffer.alloc(150),o;try{o=eT.openSync(t,\"r\"),eT.readSync(o,r,0,150,0),eT.closeSync(o)}catch{}return z_e(r.toString())}_Y.exports=X_e});var YY=_((mbt,GY)=>{\"use strict\";var Z_e=ve(\"path\"),qY=TY(),jY=NY(),$_e=HY(),e8e=process.platform===\"win32\",t8e=/\\.(?:com|exe)$/i,r8e=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function n8e(t){t.file=qY(t);let e=t.file&&$_e(t.file);return e?(t.args.unshift(t.file),t.command=e,qY(t)):t.file}function i8e(t){if(!e8e)return t;let e=n8e(t),r=!t8e.test(e);if(t.options.forceShell||r){let o=r8e.test(e);t.command=Z_e.normalize(t.command),t.command=jY.command(t.command),t.args=t.args.map(n=>jY.argument(n,o));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 s8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:i8e(o)}GY.exports=s8e});var VY=_((ybt,KY)=>{\"use strict\";var tT=process.platform===\"win32\";function rT(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 o8e(t,e){if(!tT)return;let r=t.emit;t.emit=function(o,a){if(o===\"exit\"){let n=WY(a,e,\"spawn\");if(n)return r.call(t,\"error\",n)}return r.apply(t,arguments)}}function WY(t,e){return tT&&t===1&&!e.file?rT(e.original,\"spawn\"):null}function a8e(t,e){return tT&&t===1&&!e.file?rT(e.original,\"spawnSync\"):null}KY.exports={hookChildProcess:o8e,verifyENOENT:WY,verifyENOENTSync:a8e,notFoundError:rT}});var sT=_((Ebt,ly)=>{\"use strict\";var JY=ve(\"child_process\"),nT=YY(),iT=VY();function zY(t,e,r){let o=nT(t,e,r),a=JY.spawn(o.command,o.args,o.options);return iT.hookChildProcess(a,o),a}function l8e(t,e,r){let o=nT(t,e,r),a=JY.spawnSync(o.command,o.args,o.options);return a.error=a.error||iT.verifyENOENTSync(a.status,o),a}ly.exports=zY;ly.exports.spawn=zY;ly.exports.sync=l8e;ly.exports._parse=nT;ly.exports._enoent=iT});var ZY=_((Cbt,XY)=>{\"use strict\";function c8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Gg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Gg)}c8e(Gg,Error);Gg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}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 \"+A(t)+\" but \"+p(e)+\" found.\"};function u8e(t,e){e=e!==void 0?e:{};var r={},o={Start:hg},a=hg,n=function(N){return N||[]},u=function(N,K,re){return[{command:N,type:K}].concat(re||[])},A=function(N,K){return[{command:N,type:K||\";\"}]},p=function(N){return N},h=\";\",E=Br(\";\",!1),I=\"&\",v=Br(\"&\",!1),x=function(N,K){return K?{chain:N,then:K}:{chain:N}},C=function(N,K){return{type:N,line:K}},R=\"&&\",L=Br(\"&&\",!1),U=\"||\",J=Br(\"||\",!1),te=function(N,K){return K?{...N,then:K}:N},ae=function(N,K){return{type:N,chain:K}},fe=\"|&\",ce=Br(\"|&\",!1),me=\"|\",he=Br(\"|\",!1),Be=\"=\",we=Br(\"=\",!1),g=function(N,K){return{name:N,args:[K]}},Ee=function(N){return{name:N,args:[]}},Se=\"(\",le=Br(\"(\",!1),ne=\")\",ee=Br(\")\",!1),Ie=function(N,K){return{type:\"subshell\",subshell:N,args:K}},Fe=\"{\",At=Br(\"{\",!1),H=\"}\",at=Br(\"}\",!1),Re=function(N,K){return{type:\"group\",group:N,args:K}},ke=function(N,K){return{type:\"command\",args:K,envs:N}},xe=function(N){return{type:\"envs\",envs:N}},He=function(N){return N},Te=function(N){return N},Je=/^[0-9]/,qe=Cs([[\"0\",\"9\"]],!1,!1),b=function(N,K,re){return{type:\"redirection\",subtype:K,fd:N!==null?parseInt(N):null,args:[re]}},w=\">>\",P=Br(\">>\",!1),y=\">&\",F=Br(\">&\",!1),z=\">\",X=Br(\">\",!1),Z=\"<<<\",ie=Br(\"<<<\",!1),Pe=\"<&\",Ne=Br(\"<&\",!1),ot=\"<\",dt=Br(\"<\",!1),jt=function(N){return{type:\"argument\",segments:[].concat(...N)}},$t=function(N){return N},bt=\"$'\",an=Br(\"$'\",!1),Qr=\"'\",mr=Br(\"'\",!1),br=function(N){return[{type:\"text\",text:N}]},Wr='\"\"',Kn=Br('\"\"',!1),Ns=function(){return{type:\"text\",text:\"\"}},Ti='\"',ps=Br('\"',!1),io=function(N){return N},Pi=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!0}},Ls=function(N){return{type:\"shell\",shell:N,quoted:!0}},so=function(N){return{type:\"variable\",...N,quoted:!0}},cc=function(N){return{type:\"text\",text:N}},cu=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!1}},lp=function(N){return{type:\"shell\",shell:N,quoted:!1}},cp=function(N){return{type:\"variable\",...N,quoted:!1}},Os=function(N){return{type:\"glob\",pattern:N}},Dn=/^[^']/,oo=Cs([\"'\"],!0,!1),Ms=function(N){return N.join(\"\")},ml=/^[^$\"]/,yl=Cs([\"$\",'\"'],!0,!1),ao=`\\\\\n`,Vn=Br(`\\\\\n`,!1),On=function(){return\"\"},Ni=\"\\\\\",Mn=Br(\"\\\\\",!1),_i=/^[\\\\$\"`]/,tr=Cs([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),Oe=function(N){return N},ii=\"\\\\a\",Ma=Br(\"\\\\a\",!1),hr=function(){return\"a\"},uc=\"\\\\b\",uu=Br(\"\\\\b\",!1),Ac=function(){return\"\\b\"},El=/^[Ee]/,DA=Cs([\"E\",\"e\"],!1,!1),Au=function(){return\"\\x1B\"},Ce=\"\\\\f\",Rt=Br(\"\\\\f\",!1),fc=function(){return\"\\f\"},Hi=\"\\\\n\",fu=Br(\"\\\\n\",!1),Yt=function(){return`\n`},Cl=\"\\\\r\",SA=Br(\"\\\\r\",!1),up=function(){return\"\\r\"},pc=\"\\\\t\",PA=Br(\"\\\\t\",!1),Qn=function(){return\"\t\"},hi=\"\\\\v\",hc=Br(\"\\\\v\",!1),bA=function(){return\"\\v\"},sa=/^[\\\\'\"?]/,Li=Cs([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),_o=function(N){return String.fromCharCode(parseInt(N,16))},Ze=\"\\\\x\",lo=Br(\"\\\\x\",!1),gc=\"\\\\u\",pu=Br(\"\\\\u\",!1),qi=\"\\\\U\",hu=Br(\"\\\\U\",!1),xA=function(N){return String.fromCodePoint(parseInt(N,16))},Ua=/^[0-7]/,dc=Cs([[\"0\",\"7\"]],!1,!1),hs=/^[0-9a-fA-f]/,_t=Cs([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),Fn=ug(),Ci=\"{}\",oa=Br(\"{}\",!1),co=function(){return\"{}\"},Us=\"-\",aa=Br(\"-\",!1),la=\"+\",Ho=Br(\"+\",!1),wi=\".\",gs=Br(\".\",!1),ds=function(N,K,re){return{type:\"number\",value:(N===\"-\"?-1:1)*parseFloat(K.join(\"\")+\".\"+re.join(\"\"))}},ms=function(N,K){return{type:\"number\",value:(N===\"-\"?-1:1)*parseInt(K.join(\"\"))}},_s=function(N){return{type:\"variable\",...N}},Un=function(N){return{type:\"variable\",name:N}},Sn=function(N){return N},ys=\"*\",We=Br(\"*\",!1),tt=\"/\",It=Br(\"/\",!1),nr=function(N,K,re){return{type:K===\"*\"?\"multiplication\":\"division\",right:re}},$=function(N,K){return K.reduce((re,pe)=>({left:re,...pe}),N)},ye=function(N,K,re){return{type:K===\"+\"?\"addition\":\"subtraction\",right:re}},Le=\"$((\",pt=Br(\"$((\",!1),ht=\"))\",Tt=Br(\"))\",!1),er=function(N){return N},$r=\"$(\",ji=Br(\"$(\",!1),es=function(N){return N},bi=\"${\",qo=Br(\"${\",!1),kA=\":-\",QA=Br(\":-\",!1),Ap=function(N,K){return{name:N,defaultValue:K}},ig=\":-}\",gu=Br(\":-}\",!1),sg=function(N){return{name:N,defaultValue:[]}},du=\":+\",uo=Br(\":+\",!1),FA=function(N,K){return{name:N,alternativeValue:K}},mc=\":+}\",ca=Br(\":+}\",!1),og=function(N){return{name:N,alternativeValue:[]}},yc=function(N){return{name:N}},Pm=\"$\",ag=Br(\"$\",!1),$n=function(N){return e.isGlobPattern(N)},fp=function(N){return N},lg=/^[a-zA-Z0-9_]/,RA=Cs([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Hs=function(){return cg()},mu=/^[$@*?#a-zA-Z0-9_\\-]/,Ha=Cs([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),Gi=/^[()}<>$|&; \\t\"']/,ua=Cs([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),yu=/^[<>&; \\t\"']/,Es=Cs([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),Ec=/^[ \\t]/,Cc=Cs([\" \",\"\t\"],!1,!1),G=0,Dt=0,wl=[{line:1,column:1}],xi=0,wc=[],ct=0,Eu;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function cg(){return t.substring(Dt,G)}function yw(){return Ic(Dt,G)}function TA(N,K){throw K=K!==void 0?K:Ic(Dt,G),pg([fg(N)],t.substring(Dt,G),K)}function pp(N,K){throw K=K!==void 0?K:Ic(Dt,G),bm(N,K)}function Br(N,K){return{type:\"literal\",text:N,ignoreCase:K}}function Cs(N,K,re){return{type:\"class\",parts:N,inverted:K,ignoreCase:re}}function ug(){return{type:\"any\"}}function Ag(){return{type:\"end\"}}function fg(N){return{type:\"other\",description:N}}function hp(N){var K=wl[N],re;if(K)return K;for(re=N-1;!wl[re];)re--;for(K=wl[re],K={line:K.line,column:K.column};re<N;)t.charCodeAt(re)===10?(K.line++,K.column=1):K.column++,re++;return wl[N]=K,K}function Ic(N,K){var re=hp(N),pe=hp(K);return{start:{offset:N,line:re.line,column:re.column},end:{offset:K,line:pe.line,column:pe.column}}}function Ct(N){G<xi||(G>xi&&(xi=G,wc=[]),wc.push(N))}function bm(N,K){return new Gg(N,null,null,K)}function pg(N,K,re){return new Gg(Gg.buildMessage(N,K),N,K,re)}function hg(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=Cu(),re===r&&(re=null),re!==r?(Dt=N,K=n(re),N=K):(G=N,N=r)):(G=N,N=r),N}function Cu(){var N,K,re,pe,ze;if(N=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe!==r?(ze=xm(),ze===r&&(ze=null),ze!==r?(Dt=N,K=u(K,pe,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;if(N===r)if(N=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe===r&&(pe=null),pe!==r?(Dt=N,K=A(K,pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function xm(){var N,K,re,pe,ze;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Cu(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=p(re),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function gg(){var N;return t.charCodeAt(G)===59?(N=h,G++):(N=r,ct===0&&Ct(E)),N===r&&(t.charCodeAt(G)===38?(N=I,G++):(N=r,ct===0&&Ct(v))),N}function wu(){var N,K,re;return N=G,K=Aa(),K!==r?(re=Ew(),re===r&&(re=null),re!==r?(Dt=N,K=x(K,re),N=K):(G=N,N=r)):(G=N,N=r),N}function Ew(){var N,K,re,pe,ze,mt,fr;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=km(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=wu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=C(re,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function km(){var N;return t.substr(G,2)===R?(N=R,G+=2):(N=r,ct===0&&Ct(L)),N===r&&(t.substr(G,2)===U?(N=U,G+=2):(N=r,ct===0&&Ct(J))),N}function Aa(){var N,K,re;return N=G,K=dg(),K!==r?(re=Bc(),re===r&&(re=null),re!==r?(Dt=N,K=te(K,re),N=K):(G=N,N=r)):(G=N,N=r),N}function Bc(){var N,K,re,pe,ze,mt,fr;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Il(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Aa(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ae(re,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Il(){var N;return t.substr(G,2)===fe?(N=fe,G+=2):(N=r,ct===0&&Ct(ce)),N===r&&(t.charCodeAt(G)===124?(N=me,G++):(N=r,ct===0&&Ct(he))),N}function Iu(){var N,K,re,pe,ze,mt;if(N=G,K=Cg(),K!==r)if(t.charCodeAt(G)===61?(re=Be,G++):(re=r,ct===0&&Ct(we)),re!==r)if(pe=jo(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(Dt=N,K=g(K,pe),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;else G=N,N=r;if(N===r)if(N=G,K=Cg(),K!==r)if(t.charCodeAt(G)===61?(re=Be,G++):(re=r,ct===0&&Ct(we)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=Ee(K),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function dg(){var N,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===40?(re=Se,G++):(re=r,ct===0&&Ct(le)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===41?(fr=ne,G++):(fr=r,ct===0&&Ct(ee)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=qa();oi!==r;)yn.push(oi),oi=qa();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Ie(ze,yn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===123?(re=Fe,G++):(re=r,ct===0&&Ct(At)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===125?(fr=H,G++):(fr=r,ct===0&&Ct(at)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=qa();oi!==r;)yn.push(oi),oi=qa();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Re(ze,yn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){for(re=[],pe=Iu();pe!==r;)re.push(pe),pe=Iu();if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r){if(ze=[],mt=gp(),mt!==r)for(;mt!==r;)ze.push(mt),mt=gp();else ze=r;if(ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ke(re,ze),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r}else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=Iu(),pe!==r)for(;pe!==r;)re.push(pe),pe=Iu();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=xe(re),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}}}return N}function NA(){var N,K,re,pe,ze;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=dp(),pe!==r)for(;pe!==r;)re.push(pe),pe=dp();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=He(re),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r;return N}function gp(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r?(re=qa(),re!==r?(Dt=N,K=Te(re),N=K):(G=N,N=r)):(G=N,N=r),N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();K!==r?(re=dp(),re!==r?(Dt=N,K=Te(re),N=K):(G=N,N=r)):(G=N,N=r)}return N}function qa(){var N,K,re,pe,ze;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(Je.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(qe)),re===r&&(re=null),re!==r?(pe=mg(),pe!==r?(ze=dp(),ze!==r?(Dt=N,K=b(re,pe,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function mg(){var N;return t.substr(G,2)===w?(N=w,G+=2):(N=r,ct===0&&Ct(P)),N===r&&(t.substr(G,2)===y?(N=y,G+=2):(N=r,ct===0&&Ct(F)),N===r&&(t.charCodeAt(G)===62?(N=z,G++):(N=r,ct===0&&Ct(X)),N===r&&(t.substr(G,3)===Z?(N=Z,G+=3):(N=r,ct===0&&Ct(ie)),N===r&&(t.substr(G,2)===Pe?(N=Pe,G+=2):(N=r,ct===0&&Ct(Ne)),N===r&&(t.charCodeAt(G)===60?(N=ot,G++):(N=r,ct===0&&Ct(dt))))))),N}function dp(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=jo(),re!==r?(Dt=N,K=Te(re),N=K):(G=N,N=r)):(G=N,N=r),N}function jo(){var N,K,re;if(N=G,K=[],re=ws(),re!==r)for(;re!==r;)K.push(re),re=ws();else K=r;return K!==r&&(Dt=N,K=jt(K)),N=K,N}function ws(){var N,K;return N=G,K=Ii(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Qm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Fm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Go(),K!==r&&(Dt=N,K=$t(K)),N=K))),N}function Ii(){var N,K,re,pe;return N=G,t.substr(G,2)===bt?(K=bt,G+=2):(K=r,ct===0&&Ct(an)),K!==r?(re=ln(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Qm(){var N,K,re,pe;return N=G,t.charCodeAt(G)===39?(K=Qr,G++):(K=r,ct===0&&Ct(mr)),K!==r?(re=yp(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Fm(){var N,K,re,pe;if(N=G,t.substr(G,2)===Wr?(K=Wr,G+=2):(K=r,ct===0&&Ct(Kn)),K!==r&&(Dt=N,K=Ns()),N=K,N===r)if(N=G,t.charCodeAt(G)===34?(K=Ti,G++):(K=r,ct===0&&Ct(ps)),K!==r){for(re=[],pe=LA();pe!==r;)re.push(pe),pe=LA();re!==r?(t.charCodeAt(G)===34?(pe=Ti,G++):(pe=r,ct===0&&Ct(ps)),pe!==r?(Dt=N,K=io(re),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Go(){var N,K,re;if(N=G,K=[],re=mp(),re!==r)for(;re!==r;)K.push(re),re=mp();else K=r;return K!==r&&(Dt=N,K=io(K)),N=K,N}function LA(){var N,K;return N=G,K=Gr(),K!==r&&(Dt=N,K=Pi(K)),N=K,N===r&&(N=G,K=Ep(),K!==r&&(Dt=N,K=Ls(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=so(K)),N=K,N===r&&(N=G,K=yg(),K!==r&&(Dt=N,K=cc(K)),N=K))),N}function mp(){var N,K;return N=G,K=Gr(),K!==r&&(Dt=N,K=cu(K)),N=K,N===r&&(N=G,K=Ep(),K!==r&&(Dt=N,K=lp(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=cp(K)),N=K,N===r&&(N=G,K=Cw(),K!==r&&(Dt=N,K=Os(K)),N=K,N===r&&(N=G,K=pa(),K!==r&&(Dt=N,K=cc(K)),N=K)))),N}function yp(){var N,K,re;for(N=G,K=[],Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));re!==r;)K.push(re),Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function yg(){var N,K,re;if(N=G,K=[],re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl))),re!==r)for(;re!==r;)K.push(re),re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function fa(){var N,K,re;return N=G,t.substr(G,2)===ao?(K=ao,G+=2):(K=r,ct===0&&Ct(Vn)),K!==r&&(Dt=N,K=On()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(_i.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(tr)),re!==r?(Dt=N,K=Oe(re),N=K):(G=N,N=r)):(G=N,N=r)),N}function ln(){var N,K,re;for(N=G,K=[],re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));re!==r;)K.push(re),re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Ao(){var N,K,re;return N=G,t.substr(G,2)===ii?(K=ii,G+=2):(K=r,ct===0&&Ct(Ma)),K!==r&&(Dt=N,K=hr()),N=K,N===r&&(N=G,t.substr(G,2)===uc?(K=uc,G+=2):(K=r,ct===0&&Ct(uu)),K!==r&&(Dt=N,K=Ac()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(El.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(DA)),re!==r?(Dt=N,K=Au(),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ce?(K=Ce,G+=2):(K=r,ct===0&&Ct(Rt)),K!==r&&(Dt=N,K=fc()),N=K,N===r&&(N=G,t.substr(G,2)===Hi?(K=Hi,G+=2):(K=r,ct===0&&Ct(fu)),K!==r&&(Dt=N,K=Yt()),N=K,N===r&&(N=G,t.substr(G,2)===Cl?(K=Cl,G+=2):(K=r,ct===0&&Ct(SA)),K!==r&&(Dt=N,K=up()),N=K,N===r&&(N=G,t.substr(G,2)===pc?(K=pc,G+=2):(K=r,ct===0&&Ct(PA)),K!==r&&(Dt=N,K=Qn()),N=K,N===r&&(N=G,t.substr(G,2)===hi?(K=hi,G+=2):(K=r,ct===0&&Ct(hc)),K!==r&&(Dt=N,K=bA()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(sa.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Li)),re!==r?(Dt=N,K=Oe(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=OA()))))))))),N}function OA(){var N,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi,Ig;return N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(re=ja(),re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ze?(K=Ze,G+=2):(K=r,ct===0&&Ct(lo)),K!==r?(re=G,pe=G,ze=ja(),ze!==r?(mt=si(),mt!==r?(ze=[ze,mt],pe=ze):(G=pe,pe=r)):(G=pe,pe=r),pe===r&&(pe=ja()),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===gc?(K=gc,G+=2):(K=r,ct===0&&Ct(pu)),K!==r?(re=G,pe=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(ze=[ze,mt,fr,Cr],pe=ze):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===qi?(K=qi,G+=2):(K=r,ct===0&&Ct(hu)),K!==r?(re=G,pe=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(yn=si(),yn!==r?(oi=si(),oi!==r?(Oi=si(),Oi!==r?(Ig=si(),Ig!==r?(ze=[ze,mt,fr,Cr,yn,oi,Oi,Ig],pe=ze):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=xA(re),N=K):(G=N,N=r)):(G=N,N=r)))),N}function ja(){var N;return Ua.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(dc)),N}function si(){var N;return hs.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(_t)),N}function pa(){var N,K,re,pe,ze;if(N=G,K=[],re=G,t.charCodeAt(G)===92?(pe=Ni,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=G,t.charCodeAt(G)===92?(pe=Ni,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function vc(){var N,K,re,pe,ze,mt;if(N=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe));else re=r;if(re!==r)if(t.charCodeAt(G)===46?(pe=wi,G++):(pe=r,ct===0&&Ct(gs)),pe!==r){if(ze=[],Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(qe)),mt!==r)for(;mt!==r;)ze.push(mt),Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(qe));else ze=r;ze!==r?(Dt=N,K=ds(K,re,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;if(N===r){if(N=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe));else re=r;re!==r?(Dt=N,K=ms(K,re),N=K):(G=N,N=r)}else G=N,N=r;if(N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=_s(K)),N=K,N===r&&(N=G,K=Ga(),K!==r&&(Dt=N,K=Un(K)),N=K,N===r)))if(N=G,t.charCodeAt(G)===40?(K=Se,G++):(K=r,ct===0&&Ct(le)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.charCodeAt(G)===41?(mt=ne,G++):(mt=r,ct===0&&Ct(ee)),mt!==r?(Dt=N,K=Sn(pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r}return N}function Bl(){var N,K,re,pe,ze,mt,fr,Cr;if(N=G,K=vc(),K!==r){for(re=[],pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(G=N,N=r)}else G=N,N=r;return N}function ts(){var N,K,re,pe,ze,mt,fr,Cr;if(N=G,K=Bl(),K!==r){for(re=[],pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(G=N,N=r)}else G=N,N=r;return N}function Gr(){var N,K,re,pe,ze,mt;if(N=G,t.substr(G,3)===Le?(K=Le,G+=3):(K=r,ct===0&&Ct(pt)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.substr(G,2)===ht?(mt=ht,G+=2):(mt=r,ct===0&&Ct(Tt)),mt!==r?(Dt=N,K=er(pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;return N}function Ep(){var N,K,re,pe;return N=G,t.substr(G,2)===$r?(K=$r,G+=2):(K=r,ct===0&&Ct(ji)),K!==r?(re=Cu(),re!==r?(t.charCodeAt(G)===41?(pe=ne,G++):(pe=r,ct===0&&Ct(ee)),pe!==r?(Dt=N,K=es(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Dc(){var N,K,re,pe,ze,mt;return N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===kA?(pe=kA,G+=2):(pe=r,ct===0&&Ct(QA)),pe!==r?(ze=NA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=N,K=Ap(re,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===ig?(pe=ig,G+=3):(pe=r,ct===0&&Ct(gu)),pe!==r?(Dt=N,K=sg(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===du?(pe=du,G+=2):(pe=r,ct===0&&Ct(uo)),pe!==r?(ze=NA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=N,K=FA(re,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===mc?(pe=mc,G+=3):(pe=r,ct===0&&Ct(ca)),pe!==r?(Dt=N,K=og(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.charCodeAt(G)===125?(pe=H,G++):(pe=r,ct===0&&Ct(at)),pe!==r?(Dt=N,K=yc(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.charCodeAt(G)===36?(K=Pm,G++):(K=r,ct===0&&Ct(ag)),K!==r?(re=Ga(),re!==r?(Dt=N,K=yc(re),N=K):(G=N,N=r)):(G=N,N=r)))))),N}function Cw(){var N,K,re;return N=G,K=Eg(),K!==r?(Dt=G,re=$n(K),re?re=void 0:re=r,re!==r?(Dt=N,K=fp(K),N=K):(G=N,N=r)):(G=N,N=r),N}function Eg(){var N,K,re,pe,ze;if(N=G,K=[],re=G,pe=G,ct++,ze=wg(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re!==r)for(;re!==r;)K.push(re),re=G,pe=G,ct++,ze=wg(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r);else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Cg(){var N,K,re;if(N=G,K=[],lg.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(RA)),re!==r)for(;re!==r;)K.push(re),lg.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(RA));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Ga(){var N,K,re;if(N=G,K=[],mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha)),re!==r)for(;re!==r;)K.push(re),mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Rm(){var N;return Gi.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(ua)),N}function wg(){var N;return yu.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(Es)),N}function Qt(){var N,K;if(N=[],Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc)),K!==r)for(;K!==r;)N.push(K),Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc));else N=r;return N}if(Eu=a(),Eu!==r&&G===t.length)return Eu;throw Eu!==r&&G<t.length&&Ct(Ag()),pg(wc,xi<t.length?t.charAt(xi):null,xi<t.length?Ic(xi,xi+1):Ic(xi,xi))}XY.exports={SyntaxError:Gg,parse:u8e}});function ND(t,e={isGlobPattern:()=>!1}){try{return(0,$Y.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 cy(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${LD(r)}${o===\";\"?a!==t.length-1||e?\";\":\"\":\" &\"}`).join(\" \")}function LD(t){return`${uy(t.chain)}${t.then?` ${oT(t.then)}`:\"\"}`}function oT(t){return`${t.type} ${LD(t.line)}`}function uy(t){return`${lT(t)}${t.then?` ${aT(t.then)}`:\"\"}`}function aT(t){return`${t.type} ${uy(t.chain)}`}function lT(t){switch(t.type){case\"command\":return`${t.envs.length>0?`${t.envs.map(e=>TD(e)).join(\" \")} `:\"\"}${t.args.map(e=>cT(e)).join(\" \")}`;case\"subshell\":return`(${cy(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${cy(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(\" \")}`:\"\"}`;case\"envs\":return t.envs.map(e=>TD(e)).join(\" \");default:throw new Error(`Unsupported command type:  \"${t.type}\"`)}}function TD(t){return`${t.name}=${t.args[0]?Yg(t.args[0]):\"\"}`}function cT(t){switch(t.type){case\"redirection\":return Jw(t);case\"argument\":return Yg(t);default:throw new Error(`Unsupported argument type: \"${t.type}\"`)}}function Jw(t){return`${t.subtype} ${t.args.map(e=>Yg(e)).join(\" \")}`}function Yg(t){return t.segments.map(e=>uT(e)).join(\"\")}function uT(t){let e=(o,a)=>a?`\"${o}\"`:o,r=o=>o===\"\"?\"''\":o.match(/[()}<>$|&;\"'\\n\\t ]/)?o.match(/['\\t\\p{C}]/u)?o.match(/'/)?`\"${o.replace(/[\"$\\t\\p{C}]/u,f8e)}\"`:`$'${o.replace(/[\\t\\p{C}]/u,tW)}'`:`'${o}'`:o;switch(t.type){case\"text\":return r(t.text);case\"glob\":return t.pattern;case\"shell\":return e(`\\${${cy(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(o=>Yg(o)).join(\" \")}}`:t.defaultValue.length===0?`\\${${t.name}:-}`:`\\${${t.name}:-${t.defaultValue.map(o=>Yg(o)).join(\" \")}}`,t.quoted);case\"arithmetic\":return`$(( ${OD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${t.type}\"`)}}function OD(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,o=a=>r(OD(a),![\"number\",\"variable\"].includes(a.type));switch(t.type){case\"number\":return String(t.value);case\"variable\":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var $Y,eW,A8e,tW,f8e,rW=Et(()=>{$Y=$e(ZY());eW=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),A8e=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(eW,([t,e])=>[t,`\"$'${e}'\"`])]),tW=t=>eW.get(t)??`\\\\x${t.charCodeAt(0).toString(16).padStart(2,\"0\")}`,f8e=t=>A8e.get(t)??`\"$'${tW(t)}'\"`});var iW=_((Tbt,nW)=>{\"use strict\";function p8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Wg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Wg)}p8e(Wg,Error);Wg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}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 \"+A(t)+\" but \"+p(e)+\" found.\"};function h8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:ke},a=ke,n=\"/\",u=Se(\"/\",!1),A=function(qe,b){return{from:qe,descriptor:b}},p=function(qe){return{descriptor:qe}},h=\"@\",E=Se(\"@\",!1),I=function(qe,b){return{fullName:qe,description:b}},v=function(qe){return{fullName:qe}},x=function(){return Be()},C=/^[^\\/@]/,R=le([\"/\",\"@\"],!0,!1),L=/^[^\\/]/,U=le([\"/\"],!0,!1),J=0,te=0,ae=[{line:1,column:1}],fe=0,ce=[],me=0,he;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function Be(){return t.substring(te,J)}function we(){return At(te,J)}function g(qe,b){throw b=b!==void 0?b:At(te,J),Re([Ie(qe)],t.substring(te,J),b)}function Ee(qe,b){throw b=b!==void 0?b:At(te,J),at(qe,b)}function Se(qe,b){return{type:\"literal\",text:qe,ignoreCase:b}}function le(qe,b,w){return{type:\"class\",parts:qe,inverted:b,ignoreCase:w}}function ne(){return{type:\"any\"}}function ee(){return{type:\"end\"}}function Ie(qe){return{type:\"other\",description:qe}}function Fe(qe){var b=ae[qe],w;if(b)return b;for(w=qe-1;!ae[w];)w--;for(b=ae[w],b={line:b.line,column:b.column};w<qe;)t.charCodeAt(w)===10?(b.line++,b.column=1):b.column++,w++;return ae[qe]=b,b}function At(qe,b){var w=Fe(qe),P=Fe(b);return{start:{offset:qe,line:w.line,column:w.column},end:{offset:b,line:P.line,column:P.column}}}function H(qe){J<fe||(J>fe&&(fe=J,ce=[]),ce.push(qe))}function at(qe,b){return new Wg(qe,null,null,b)}function Re(qe,b,w){return new Wg(Wg.buildMessage(qe,b),qe,b,w)}function ke(){var qe,b,w,P;return qe=J,b=xe(),b!==r?(t.charCodeAt(J)===47?(w=n,J++):(w=r,me===0&&H(u)),w!==r?(P=xe(),P!==r?(te=qe,b=A(b,P),qe=b):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r),qe===r&&(qe=J,b=xe(),b!==r&&(te=qe,b=p(b)),qe=b),qe}function xe(){var qe,b,w,P;return qe=J,b=He(),b!==r?(t.charCodeAt(J)===64?(w=h,J++):(w=r,me===0&&H(E)),w!==r?(P=Je(),P!==r?(te=qe,b=I(b,P),qe=b):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r),qe===r&&(qe=J,b=He(),b!==r&&(te=qe,b=v(b)),qe=b),qe}function He(){var qe,b,w,P,y;return qe=J,t.charCodeAt(J)===64?(b=h,J++):(b=r,me===0&&H(E)),b!==r?(w=Te(),w!==r?(t.charCodeAt(J)===47?(P=n,J++):(P=r,me===0&&H(u)),P!==r?(y=Te(),y!==r?(te=qe,b=x(),qe=b):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r),qe===r&&(qe=J,b=Te(),b!==r&&(te=qe,b=x()),qe=b),qe}function Te(){var qe,b,w;if(qe=J,b=[],C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R)),w!==r)for(;w!==r;)b.push(w),C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R));else b=r;return b!==r&&(te=qe,b=x()),qe=b,qe}function Je(){var qe,b,w;if(qe=J,b=[],L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U)),w!==r)for(;w!==r;)b.push(w),L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U));else b=r;return b!==r&&(te=qe,b=x()),qe=b,qe}if(he=a(),he!==r&&J===t.length)return he;throw he!==r&&J<t.length&&H(ee()),Re(ce,fe<t.length?t.charAt(fe):null,fe<t.length?At(fe,fe+1):At(fe,fe))}nW.exports={SyntaxError:Wg,parse:h8e}});function MD(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,sW.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 UD(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 sW,oW=Et(()=>{sW=$e(iW())});var Vg=_((Lbt,Kg)=>{\"use strict\";function aW(t){return typeof t>\"u\"||t===null}function g8e(t){return typeof t==\"object\"&&t!==null}function d8e(t){return Array.isArray(t)?t:aW(t)?[]:[t]}function m8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r<o;r+=1)a=n[r],t[a]=e[a];return t}function y8e(t,e){var r=\"\",o;for(o=0;o<e;o+=1)r+=t;return r}function E8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}Kg.exports.isNothing=aW;Kg.exports.isObject=g8e;Kg.exports.toArray=d8e;Kg.exports.repeat=y8e;Kg.exports.isNegativeZero=E8e;Kg.exports.extend=m8e});var Ay=_((Obt,lW)=>{\"use strict\";function zw(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||\"\"}zw.prototype=Object.create(Error.prototype);zw.prototype.constructor=zw;zw.prototype.toString=function(e){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!e&&this.mark&&(r+=\" \"+this.mark.toString()),r};lW.exports=zw});var AW=_((Mbt,uW)=>{\"use strict\";var cW=Vg();function AT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}AT.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o=\"\",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){o=\" ... \",a+=5;break}for(n=\"\",u=this.position;u<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(u))===-1;)if(u+=1,u-this.position>r/2-1){n=\" ... \",u-=5;break}return A=this.buffer.slice(a,u),cW.repeat(\" \",e)+o+A+n+`\n`+cW.repeat(\" \",e+this.position-a+o.length)+\"^\"};AT.prototype.toString=function(e){var r,o=\"\";return this.name&&(o+='in \"'+this.name+'\" '),o+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`:\n`+r)),o};uW.exports=AT});var os=_((Ubt,pW)=>{\"use strict\";var fW=Ay(),C8e=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],w8e=[\"scalar\",\"sequence\",\"mapping\"];function I8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function B8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(C8e.indexOf(r)===-1)throw new fW('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=I8e(e.styleAliases||null),w8e.indexOf(this.kind)===-1)throw new fW('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')}pW.exports=B8e});var Jg=_((_bt,gW)=>{\"use strict\";var hW=Vg(),_D=Ay(),v8e=os();function fT(t,e,r){var o=[];return t.include.forEach(function(a){r=fT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function D8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(o);return t}function fy(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 _D(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=fT(this,\"implicit\",[]),this.compiledExplicit=fT(this,\"explicit\",[]),this.compiledTypeMap=D8e(this.compiledImplicit,this.compiledExplicit)}fy.DEFAULT=null;fy.create=function(){var e,r;switch(arguments.length){case 1:e=fy.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new _D(\"Wrong number of arguments for Schema.create function\")}if(e=hW.toArray(e),r=hW.toArray(r),!e.every(function(o){return o instanceof fy}))throw new _D(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(o){return o instanceof v8e}))throw new _D(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new fy({include:e,explicit:r})};gW.exports=fy});var mW=_((Hbt,dW)=>{\"use strict\";var S8e=os();dW.exports=new S8e(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return t!==null?t:\"\"}})});var EW=_((qbt,yW)=>{\"use strict\";var P8e=os();yW.exports=new P8e(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return t!==null?t:[]}})});var wW=_((jbt,CW)=>{\"use strict\";var b8e=os();CW.exports=new b8e(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return t!==null?t:{}}})});var HD=_((Gbt,IW)=>{\"use strict\";var x8e=Jg();IW.exports=new x8e({explicit:[mW(),EW(),wW()]})});var vW=_((Ybt,BW)=>{\"use strict\";var k8e=os();function Q8e(t){if(t===null)return!0;var e=t.length;return e===1&&t===\"~\"||e===4&&(t===\"null\"||t===\"Null\"||t===\"NULL\")}function F8e(){return null}function R8e(t){return t===null}BW.exports=new k8e(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:Q8e,construct:F8e,predicate:R8e,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var SW=_((Wbt,DW)=>{\"use strict\";var T8e=os();function N8e(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 L8e(t){return t===\"true\"||t===\"True\"||t===\"TRUE\"}function O8e(t){return Object.prototype.toString.call(t)===\"[object Boolean]\"}DW.exports=new T8e(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:N8e,construct:L8e,predicate:O8e,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 bW=_((Kbt,PW)=>{\"use strict\";var M8e=Vg(),U8e=os();function _8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function H8e(t){return 48<=t&&t<=55}function q8e(t){return 48<=t&&t<=57}function j8e(t){if(t===null)return!1;var e=t.length,r=0,o=!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;o=!0}return o&&a!==\"_\"}if(a===\"x\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(!_8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}for(;r<e;r++)if(a=t[r],a!==\"_\"){if(!H8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}if(a===\"_\")return!1;for(;r<e;r++)if(a=t[r],a!==\"_\"){if(a===\":\")break;if(!q8e(t.charCodeAt(r)))return!1;o=!0}return!o||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function G8e(t){var e=t,r=1,o,a,n=[];return e.indexOf(\"_\")!==-1&&(e=e.replace(/_/g,\"\")),o=e[0],(o===\"-\"||o===\"+\")&&(o===\"-\"&&(r=-1),e=e.slice(1),o=e[0]),e===\"0\"?0:o===\"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(u){n.unshift(parseInt(u,10))}),e=0,a=1,n.forEach(function(u){e+=u*a,a*=60}),r*e):r*parseInt(e,10)}function Y8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&t%1===0&&!M8e.isNegativeZero(t)}PW.exports=new U8e(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:j8e,construct:G8e,predicate:Y8e,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 QW=_((Vbt,kW)=>{\"use strict\";var xW=Vg(),W8e=os(),K8e=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 V8e(t){return!(t===null||!K8e.test(t)||t[t.length-1]===\"_\")}function J8e(t){var e,r,o,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,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var z8e=/^[-+]?[0-9]+e/;function X8e(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(xW.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),z8e.test(r)?r.replace(\"e\",\".e\"):r}function Z8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&(t%1!==0||xW.isNegativeZero(t))}kW.exports=new W8e(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:V8e,construct:J8e,predicate:Z8e,represent:X8e,defaultStyle:\"lowercase\"})});var pT=_((Jbt,FW)=>{\"use strict\";var $8e=Jg();FW.exports=new $8e({include:[HD()],implicit:[vW(),SW(),bW(),QW()]})});var hT=_((zbt,RW)=>{\"use strict\";var eHe=Jg();RW.exports=new eHe({include:[pT()]})});var OW=_((Xbt,LW)=>{\"use strict\";var tHe=os(),TW=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),NW=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 rHe(t){return t===null?!1:TW.exec(t)!==null||NW.exec(t)!==null}function nHe(t){var e,r,o,a,n,u,A,p=0,h=null,E,I,v;if(e=TW.exec(t),e===null&&(e=NW.exec(t)),e===null)throw new Error(\"Date resolve error\");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return e[9]&&(E=+e[10],I=+(e[11]||0),h=(E*60+I)*6e4,e[9]===\"-\"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function iHe(t){return t.toISOString()}LW.exports=new tHe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:rHe,construct:nHe,instanceOf:Date,represent:iHe})});var UW=_((Zbt,MW)=>{\"use strict\";var sHe=os();function oHe(t){return t===\"<<\"||t===null}MW.exports=new sHe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:oHe})});var qW=_(($bt,HW)=>{\"use strict\";var zg;try{_W=ve,zg=_W(\"buffer\").Buffer}catch{}var _W,aHe=os(),gT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function lHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=gT;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;o+=6}return o%8===0}function cHe(t){var e,r,o=t.replace(/[\\r\\n=]/g,\"\"),a=o.length,n=gT,u=0,A=[];for(e=0;e<a;e++)e%4===0&&e&&(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),zg?zg.from?zg.from(A):new zg(A):A}function uHe(t){var e=\"\",r=0,o,a,n=t.length,u=gT;for(o=0;o<n;o++)o%3===0&&o&&(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function AHe(t){return zg&&zg.isBuffer(t)}HW.exports=new aHe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:lHe,construct:cHe,predicate:AHe,represent:uHe})});var GW=_((txt,jW)=>{\"use strict\";var fHe=os(),pHe=Object.prototype.hasOwnProperty,hHe=Object.prototype.toString;function gHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r<o;r+=1){if(a=A[r],u=!1,hHe.call(a)!==\"[object Object]\")return!1;for(n in a)if(pHe.call(a,n))if(!u)u=!0;else return!1;if(!u)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function dHe(t){return t!==null?t:[]}jW.exports=new fHe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:gHe,construct:dHe})});var WW=_((rxt,YW)=>{\"use strict\";var mHe=os(),yHe=Object.prototype.toString;function EHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1){if(o=u[e],yHe.call(o)!==\"[object Object]\"||(a=Object.keys(o),a.length!==1))return!1;n[e]=[a[0],o[a[0]]]}return!0}function CHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1)o=u[e],a=Object.keys(o),n[e]=[a[0],o[a[0]]];return n}YW.exports=new mHe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:EHe,construct:CHe})});var VW=_((nxt,KW)=>{\"use strict\";var wHe=os(),IHe=Object.prototype.hasOwnProperty;function BHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(IHe.call(r,e)&&r[e]!==null)return!1;return!0}function vHe(t){return t!==null?t:{}}KW.exports=new wHe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:BHe,construct:vHe})});var py=_((ixt,JW)=>{\"use strict\";var DHe=Jg();JW.exports=new DHe({include:[hT()],implicit:[OW(),UW()],explicit:[qW(),GW(),WW(),VW()]})});var XW=_((sxt,zW)=>{\"use strict\";var SHe=os();function PHe(){return!0}function bHe(){}function xHe(){return\"\"}function kHe(t){return typeof t>\"u\"}zW.exports=new SHe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:PHe,construct:bHe,predicate:kHe,represent:xHe})});var $W=_((oxt,ZW)=>{\"use strict\";var QHe=os();function FHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return!(e[0]===\"/\"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!==\"/\"))}function RHe(t){var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return e[0]===\"/\"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function THe(t){var e=\"/\"+t.source+\"/\";return t.global&&(e+=\"g\"),t.multiline&&(e+=\"m\"),t.ignoreCase&&(e+=\"i\"),e}function NHe(t){return Object.prototype.toString.call(t)===\"[object RegExp]\"}ZW.exports=new QHe(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:FHe,construct:RHe,predicate:NHe,represent:THe})});var rK=_((axt,tK)=>{\"use strict\";var qD;try{eK=ve,qD=eK(\"esprima\")}catch{typeof window<\"u\"&&(qD=window.esprima)}var eK,LHe=os();function OHe(t){if(t===null)return!1;try{var e=\"(\"+t+\")\",r=qD.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 MHe(t){var e=\"(\"+t+\")\",r=qD.parse(e,{range:!0}),o=[],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){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,\"return \"+e.slice(a[0],a[1]))}function UHe(t){return t.toString()}function _He(t){return Object.prototype.toString.call(t)===\"[object Function]\"}tK.exports=new LHe(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:OHe,construct:MHe,predicate:_He,represent:UHe})});var Xw=_((cxt,iK)=>{\"use strict\";var nK=Jg();iK.exports=nK.DEFAULT=new nK({include:[py()],explicit:[XW(),$W(),rK()]})});var BK=_((uxt,Zw)=>{\"use strict\";var yf=Vg(),AK=Ay(),HHe=AW(),fK=py(),qHe=Xw(),Yp=Object.prototype.hasOwnProperty,jD=1,pK=2,hK=3,GD=4,dT=1,jHe=2,sK=3,GHe=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,YHe=/[\\x85\\u2028\\u2029]/,WHe=/[,\\[\\]\\{\\}]/,gK=/^(?:!|!!|![a-z\\-]+!)$/i,dK=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function oK(t){return Object.prototype.toString.call(t)}function Hu(t){return t===10||t===13}function Zg(t){return t===9||t===32}function Ia(t){return t===9||t===32||t===10||t===13}function hy(t){return t===44||t===91||t===93||t===123||t===125}function KHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function VHe(t){return t===120?2:t===117?4:t===85?8:0}function JHe(t){return 48<=t&&t<=57?t-48:-1}function aK(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 zHe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var mK=new Array(256),yK=new Array(256);for(Xg=0;Xg<256;Xg++)mK[Xg]=aK(Xg)?1:0,yK[Xg]=aK(Xg);var Xg;function XHe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||qHe,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 EK(t,e){return new AK(e,new HHe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Pr(t,e){throw EK(t,e)}function YD(t,e){t.onWarning&&t.onWarning.call(null,EK(t,e))}var lK={YAML:function(e,r,o){var a,n,u;e.version!==null&&Pr(e,\"duplication of %YAML directive\"),o.length!==1&&Pr(e,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(o[0]),a===null&&Pr(e,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&Pr(e,\"unacceptable YAML version of the document\"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&YD(e,\"unsupported YAML version of the document\")},TAG:function(e,r,o){var a,n;o.length!==2&&Pr(e,\"TAG directive accepts exactly two arguments\"),a=o[0],n=o[1],gK.test(a)||Pr(e,\"ill-formed tag handle (first argument) of the TAG directive\"),Yp.call(e.tagMap,a)&&Pr(e,'there is a previously declared suffix for \"'+a+'\" tag handle'),dK.test(n)||Pr(e,\"ill-formed tag prefix (second argument) of the TAG directive\"),e.tagMap[a]=n}};function Gp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a=0,n=A.length;a<n;a+=1)u=A.charCodeAt(a),u===9||32<=u&&u<=1114111||Pr(t,\"expected valid JSON character\");else GHe.test(A)&&Pr(t,\"the stream contains non-printable characters\");t.result+=A}}function cK(t,e,r,o){var a,n,u,A;for(yf.isObject(r)||Pr(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),u=0,A=a.length;u<A;u+=1)n=a[u],Yp.call(e,n)||(e[n]=r[n],o[n]=!0)}function gy(t,e,r,o,a,n,u,A){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])&&Pr(t,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&oK(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&oK(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),e===null&&(e={}),o===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)cK(t,e,n[p],r);else cK(t,e,n,r);else!t.json&&!Yp.call(r,a)&&Yp.call(e,a)&&(t.line=u||t.line,t.position=A||t.position,Pr(t,\"duplicated mapping key\")),e[a]=n,delete r[a];return e}function mT(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++):Pr(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position}function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Zg(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(Hu(a))for(mT(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&o!==0&&t.lineIndent<r&&YD(t,\"deficient indentation\"),o}function WD(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||Ia(r)))}function yT(t,e){e===1?t.result+=\" \":e>1&&(t.result+=yf.repeat(`\n`,e-1))}function ZHe(t,e,r){var o,a,n,u,A,p,h,E,I=t.kind,v=t.result,x;if(x=t.input.charCodeAt(t.position),Ia(x)||hy(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a)))return!1;for(t.kind=\"scalar\",t.result=\"\",n=u=t.position,A=!1;x!==0;){if(x===58){if(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a))break}else if(x===35){if(o=t.input.charCodeAt(t.position-1),Ia(o))break}else{if(t.position===t.lineStart&&WD(t)||r&&hy(x))break;if(Hu(x))if(p=t.line,h=t.lineStart,E=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,x=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=E;break}}A&&(Gp(t,n,u,!1),yT(t,t.line-p),n=u=t.position,A=!1),Zg(x)||(u=t.position+1),x=t.input.charCodeAt(++t.position)}return Gp(t,n,u,!1),t.result?!0:(t.kind=I,t.result=v,!1)}function $He(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Gp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Hu(r)?(Gp(t,o,a,!0),yT(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&WD(t)?Pr(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,a=t.position);Pr(t,\"unexpected end of the stream within a single quoted scalar\")}function e6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return Gp(t,r,t.position,!0),t.position++,!0;if(A===92){if(Gp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Hu(A))Wi(t,!1,e);else if(A<256&&mK[A])t.result+=yK[A],t.position++;else if((u=VHe(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=KHe(A))>=0?n=(n<<4)+u:Pr(t,\"expected hexadecimal character\");t.result+=zHe(n),t.position++}else Pr(t,\"unknown escape sequence\");r=o=t.position}else Hu(A)?(Gp(t,r,o,!0),yT(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&WD(t)?Pr(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,o=t.position)}Pr(t,\"unexpected end of the stream within a double quoted scalar\")}function t6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,E,I,v={},x,C,R,L;if(L=t.input.charCodeAt(t.position),L===91)p=93,I=!1,n=[];else if(L===123)p=125,I=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),L=t.input.charCodeAt(++t.position);L!==0;){if(Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===p)return t.position++,t.tag=a,t.anchor=u,t.kind=I?\"mapping\":\"sequence\",t.result=n,!0;r||Pr(t,\"missed comma between flow collection entries\"),C=x=R=null,h=E=!1,L===63&&(A=t.input.charCodeAt(t.position+1),Ia(A)&&(h=E=!0,t.position++,Wi(t,!0,e))),o=t.line,dy(t,e,jD,!1,!0),C=t.tag,x=t.result,Wi(t,!0,e),L=t.input.charCodeAt(t.position),(E||t.line===o)&&L===58&&(h=!0,L=t.input.charCodeAt(++t.position),Wi(t,!0,e),dy(t,e,jD,!1,!0),R=t.result),I?gy(t,n,v,C,x,R):h?n.push(gy(t,null,v,C,x,R)):n.push(x),Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===44?(r=!0,L=t.input.charCodeAt(++t.position)):r=!1}Pr(t,\"unexpected end of the stream within a flow collection\")}function r6e(t,e){var r,o,a=dT,n=!1,u=!1,A=e,p=0,h=!1,E,I;if(I=t.input.charCodeAt(t.position),I===124)o=!1;else if(I===62)o=!0;else return!1;for(t.kind=\"scalar\",t.result=\"\";I!==0;)if(I=t.input.charCodeAt(++t.position),I===43||I===45)dT===a?a=I===43?sK:jHe:Pr(t,\"repeat of a chomping mode identifier\");else if((E=JHe(I))>=0)E===0?Pr(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):u?Pr(t,\"repeat of an indentation width identifier\"):(A=e+E-1,u=!0);else break;if(Zg(I)){do I=t.input.charCodeAt(++t.position);while(Zg(I));if(I===35)do I=t.input.charCodeAt(++t.position);while(!Hu(I)&&I!==0)}for(;I!==0;){for(mT(t),t.lineIndent=0,I=t.input.charCodeAt(t.position);(!u||t.lineIndent<A)&&I===32;)t.lineIndent++,I=t.input.charCodeAt(++t.position);if(!u&&t.lineIndent>A&&(A=t.lineIndent),Hu(I)){p++;continue}if(t.lineIndent<A){a===sK?t.result+=yf.repeat(`\n`,n?1+p:p):a===dT&&n&&(t.result+=`\n`);break}for(o?Zg(I)?(h=!0,t.result+=yf.repeat(`\n`,n?1+p:p)):h?(h=!1,t.result+=yf.repeat(`\n`,p+1)):p===0?n&&(t.result+=\" \"):t.result+=yf.repeat(`\n`,p):t.result+=yf.repeat(`\n`,n?1+p:p),n=!0,u=!0,p=0,r=t.position;!Hu(I)&&I!==0;)I=t.input.charCodeAt(++t.position);Gp(t,r,t.position,!1)}return!0}function uK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(u=t.input.charCodeAt(t.position+1),!Ia(u)));){if(A=!0,t.position++,Wi(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,dy(t,e,hK,!1,!0),n.push(t.result),Wi(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)Pr(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break}return A?(t.tag=o,t.anchor=a,t.kind=\"sequence\",t.result=n,!0):!1}function n6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},E={},I=null,v=null,x=null,C=!1,R=!1,L;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),L=t.input.charCodeAt(t.position);L!==0;){if(o=t.input.charCodeAt(t.position+1),n=t.line,u=t.position,(L===63||L===58)&&Ia(o))L===63?(C&&(gy(t,h,E,I,v,null),I=v=x=null),R=!0,C=!0,a=!0):C?(C=!1,a=!0):Pr(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,L=o;else if(dy(t,r,pK,!1,!0))if(t.line===n){for(L=t.input.charCodeAt(t.position);Zg(L);)L=t.input.charCodeAt(++t.position);if(L===58)L=t.input.charCodeAt(++t.position),Ia(L)||Pr(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),C&&(gy(t,h,E,I,v,null),I=v=x=null),R=!0,C=!1,a=!1,I=t.tag,v=t.result;else if(R)Pr(t,\"can not read an implicit mapping pair; a colon is missed\");else return t.tag=A,t.anchor=p,!0}else if(R)Pr(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return t.tag=A,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(dy(t,e,GD,!0,a)&&(C?v=t.result:x=t.result),C||(gy(t,h,E,I,v,x,n,u),I=v=x=null),Wi(t,!0,-1),L=t.input.charCodeAt(t.position)),t.lineIndent>e&&L!==0)Pr(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return C&&gy(t,h,E,I,v,null),R&&(t.tag=A,t.anchor=p,t.kind=\"mapping\",t.result=h),R}function i6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position),u!==33)return!1;if(t.tag!==null&&Pr(t,\"duplication of a tag property\"),u=t.input.charCodeAt(++t.position),u===60?(r=!0,u=t.input.charCodeAt(++t.position)):u===33?(o=!0,a=\"!!\",u=t.input.charCodeAt(++t.position)):a=\"!\",e=t.position,r){do u=t.input.charCodeAt(++t.position);while(u!==0&&u!==62);t.position<t.length?(n=t.input.slice(e,t.position),u=t.input.charCodeAt(++t.position)):Pr(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;u!==0&&!Ia(u);)u===33&&(o?Pr(t,\"tag suffix cannot contain exclamation marks\"):(a=t.input.slice(e-1,t.position+1),gK.test(a)||Pr(t,\"named tag handle cannot contain such characters\"),o=!0,e=t.position+1)),u=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),WHe.test(n)&&Pr(t,\"tag suffix cannot contain flow indicator characters\")}return n&&!dK.test(n)&&Pr(t,\"tag name cannot contain such characters: \"+n),r?t.tag=n:Yp.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a===\"!\"?t.tag=\"!\"+n:a===\"!!\"?t.tag=\"tag:yaml.org,2002:\"+n:Pr(t,'undeclared tag handle \"'+a+'\"'),!0}function s6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Pr(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!Ia(r)&&!hy(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Pr(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function o6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)return!1;for(o=t.input.charCodeAt(++t.position),e=t.position;o!==0&&!Ia(o)&&!hy(o);)o=t.input.charCodeAt(++t.position);return t.position===e&&Pr(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),Yp.call(t.anchorMap,r)||Pr(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],Wi(t,!0,-1),!0}function dy(t,e,r,o,a){var n,u,A,p=1,h=!1,E=!1,I,v,x,C,R;if(t.listener!==null&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=u=A=GD===r||hK===r,o&&Wi(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;i6e(t)||s6e(t);)Wi(t,!0,-1)?(h=!0,A=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):A=!1;if(A&&(A=h||a),(p===1||GD===r)&&(jD===r||pK===r?C=e:C=e+1,R=t.position-t.lineStart,p===1?A&&(uK(t,R)||n6e(t,R,C))||t6e(t,C)?E=!0:(u&&r6e(t,C)||$He(t,C)||e6e(t,C)?E=!0:o6e(t)?(E=!0,(t.tag!==null||t.anchor!==null)&&Pr(t,\"alias node should not have any properties\")):ZHe(t,C,jD===r)&&(E=!0,t.tag===null&&(t.tag=\"?\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(E=A&&uK(t,R))),t.tag!==null&&t.tag!==\"!\")if(t.tag===\"?\"){for(t.result!==null&&t.kind!==\"scalar\"&&Pr(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),I=0,v=t.implicitTypes.length;I<v;I+=1)if(x=t.implicitTypes[I],x.resolve(t.result)){t.result=x.construct(t.result),t.tag=x.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else Yp.call(t.typeMap[t.kind||\"fallback\"],t.tag)?(x=t.typeMap[t.kind||\"fallback\"][t.tag],t.result!==null&&x.kind!==t.kind&&Pr(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+x.kind+'\", not \"'+t.kind+'\"'),x.resolve(t.result)?(t.result=x.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Pr(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")):Pr(t,\"unknown tag !<\"+t.tag+\">\");return t.listener!==null&&t.listener(\"close\",t),t.tag!==null||t.anchor!==null||E}function a6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&Pr(t,\"directive name must not be less than one character in length\");u!==0;){for(;Zg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Hu(u));break}if(Hu(u))break;for(r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&mT(t),Yp.call(lK,o)?lK[o](t,o,a):YD(t,'unknown document directive \"'+o+'\"')}if(Wi(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,Wi(t,!0,-1)):n&&Pr(t,\"directives end mark is expected\"),dy(t,t.lineIndent-1,GD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&YHe.test(t.input.slice(e,t.position))&&YD(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&WD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position<t.length-1)Pr(t,\"end of the stream or a document separator is expected\");else return}function CK(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 XHe(t,e),o=t.indexOf(\"\\0\");for(o!==-1&&(r.position=o,Pr(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;)a6e(r);return r.documents}function wK(t,e,r){e!==null&&typeof e==\"object\"&&typeof r>\"u\"&&(r=e,e=null);var o=CK(t,r);if(typeof e!=\"function\")return o;for(var a=0,n=o.length;a<n;a+=1)e(o[a])}function IK(t,e){var r=CK(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new AK(\"expected a single document in the stream, but found more\")}}function l6e(t,e,r){return typeof e==\"object\"&&e!==null&&typeof r>\"u\"&&(r=e,e=null),wK(t,e,yf.extend({schema:fK},r))}function c6e(t,e){return IK(t,yf.extend({schema:fK},e))}Zw.exports.loadAll=wK;Zw.exports.load=IK;Zw.exports.safeLoadAll=l6e;Zw.exports.safeLoad=c6e});var WK=_((Axt,IT)=>{\"use strict\";var eI=Vg(),tI=Ay(),u6e=Xw(),A6e=py(),QK=Object.prototype.toString,FK=Object.prototype.hasOwnProperty,f6e=9,$w=10,p6e=13,h6e=32,g6e=33,d6e=34,RK=35,m6e=37,y6e=38,E6e=39,C6e=42,TK=44,w6e=45,NK=58,I6e=61,B6e=62,v6e=63,D6e=64,LK=91,OK=93,S6e=96,MK=123,P6e=124,UK=125,vo={};vo[0]=\"\\\\0\";vo[7]=\"\\\\a\";vo[8]=\"\\\\b\";vo[9]=\"\\\\t\";vo[10]=\"\\\\n\";vo[11]=\"\\\\v\";vo[12]=\"\\\\f\";vo[13]=\"\\\\r\";vo[27]=\"\\\\e\";vo[34]='\\\\\"';vo[92]=\"\\\\\\\\\";vo[133]=\"\\\\N\";vo[160]=\"\\\\_\";vo[8232]=\"\\\\L\";vo[8233]=\"\\\\P\";var b6e=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function x6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a<n;a+=1)u=o[a],A=String(e[u]),u.slice(0,2)===\"!!\"&&(u=\"tag:yaml.org,2002:\"+u.slice(2)),p=t.compiledTypeMap.fallback[u],p&&FK.call(p.styleAliases,A)&&(A=p.styleAliases[A]),r[u]=A;return r}function vK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",o=2;else if(t<=65535)r=\"u\",o=4;else if(t<=4294967295)r=\"U\",o=8;else throw new tI(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+eI.repeat(\"0\",o-e.length)+e}function k6e(t){this.schema=t.schema||u6e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=eI.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=x6e(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 DK(t,e){for(var r=eI.repeat(\" \",e),o=0,a=-1,n=\"\",u,A=t.length;o<A;)a=t.indexOf(`\n`,o),a===-1?(u=t.slice(o),o=A):(u=t.slice(o,a+1),o=a+1),u.length&&u!==`\n`&&(n+=r),n+=u;return n}function ET(t,e){return`\n`+eI.repeat(\" \",t.indent*e)}function Q6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function wT(t){return t===h6e||t===f6e}function my(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 F6e(t){return my(t)&&!wT(t)&&t!==65279&&t!==p6e&&t!==$w}function SK(t,e){return my(t)&&t!==65279&&t!==TK&&t!==LK&&t!==OK&&t!==MK&&t!==UK&&t!==NK&&(t!==RK||e&&F6e(e))}function R6e(t){return my(t)&&t!==65279&&!wT(t)&&t!==w6e&&t!==v6e&&t!==NK&&t!==TK&&t!==LK&&t!==OK&&t!==MK&&t!==UK&&t!==RK&&t!==y6e&&t!==C6e&&t!==g6e&&t!==P6e&&t!==I6e&&t!==B6e&&t!==E6e&&t!==d6e&&t!==m6e&&t!==D6e&&t!==S6e}function _K(t){var e=/^\\n* /;return e.test(t)}var HK=1,qK=2,jK=3,GK=4,KD=5;function T6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,E=o!==-1,I=-1,v=R6e(t.charCodeAt(0))&&!wT(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&SK(u,A)}else{for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),u===$w)p=!0,E&&(h=h||n-I-1>o&&t[I+1]!==\" \",I=n);else if(!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&SK(u,A)}h=h||E&&n-I-1>o&&t[I+1]!==\" \"}return!p&&!h?v&&!a(t)?HK:qK:r>9&&_K(t)?KD:h?GK:jK}function N6e(t,e,r,o){t.dump=function(){if(e.length===0)return\"''\";if(!t.noCompatMode&&b6e.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),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return Q6e(t,p)}switch(T6e(e,u,t.indent,n,A)){case HK:return e;case qK:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case jK:return\"|\"+PK(e,t.indent)+bK(DK(e,a));case GK:return\">\"+PK(e,t.indent)+bK(DK(L6e(e,n),a));case KD:return'\"'+O6e(e,n)+'\"';default:throw new tI(\"impossible error: invalid scalar style\")}}()}function PK(t,e){var r=_K(t)?String(e):\"\",o=t[t.length-1]===`\n`,a=o&&(t[t.length-2]===`\n`||t===`\n`),n=a?\"+\":o?\"\":\"-\";return r+n+`\n`}function bK(t){return t[t.length-1]===`\n`?t.slice(0,-1):t}function L6e(t,e){for(var r=/(\\n+)([^\\n]*)/g,o=function(){var h=t.indexOf(`\n`);return h=h!==-1?h:t.length,r.lastIndex=h,xK(t.slice(0,h),e)}(),a=t[0]===`\n`||t[0]===\" \",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===\" \",o+=A+(!a&&!n&&p!==\"\"?`\n`:\"\")+xK(p,e),a=n}return o}function xK(t,e){if(t===\"\"||t[0]===\" \")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p=\"\";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=`\n`+t.slice(a,n),a=n+1),u=A;return p+=`\n`,t.length-a>e&&u>a?p+=t.slice(a,u)+`\n`+t.slice(u+1):p+=t.slice(a),p.slice(1)}function O6e(t){for(var e=\"\",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=vK((r-55296)*1024+o-56320+65536),n++;continue}a=vo[r],e+=!a&&my(r)?t[n]:a||vK(r)}return e}function M6e(t,e,r){var o=\"\",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)$g(t,e,r[n],!1,!1)&&(n!==0&&(o+=\",\"+(t.condenseFlow?\"\":\" \")),o+=t.dump);t.tag=a,t.dump=\"[\"+o+\"]\"}function U6e(t,e,r,o){var a=\"\",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)$g(t,e+1,r[u],!0,!0)&&((!o||u!==0)&&(a+=ET(t,e)),t.dump&&$w===t.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=t.dump);t.tag=n,t.dump=a||\"[]\"}function _6e(t,e,r){var o=\"\",a=t.tag,n=Object.keys(r),u,A,p,h,E;for(u=0,A=n.length;u<A;u+=1)E=\"\",u!==0&&(E+=\", \"),t.condenseFlow&&(E+='\"'),p=n[u],h=r[p],$g(t,e,p,!1,!1)&&(t.dump.length>1024&&(E+=\"? \"),E+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),$g(t,e,h,!1,!1)&&(E+=t.dump,o+=E));t.tag=a,t.dump=\"{\"+o+\"}\"}function H6e(t,e,r,o){var a=\"\",n=t.tag,u=Object.keys(r),A,p,h,E,I,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys==\"function\")u.sort(t.sortKeys);else if(t.sortKeys)throw new tI(\"sortKeys must be a boolean or a function\");for(A=0,p=u.length;A<p;A+=1)v=\"\",(!o||A!==0)&&(v+=ET(t,e)),h=u[A],E=r[h],$g(t,e+1,h,!0,!0,!0)&&(I=t.tag!==null&&t.tag!==\"?\"||t.dump&&t.dump.length>1024,I&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=\"?\":v+=\"? \"),v+=t.dump,I&&(v+=ET(t,e)),$g(t,e+1,E,!0,I)&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=\":\":v+=\": \",v+=t.dump,a+=v));t.tag=n,t.dump=a||\"{}\"}function kK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n<u;n+=1)if(A=a[n],(A.instanceOf||A.predicate)&&(!A.instanceOf||typeof e==\"object\"&&e instanceof A.instanceOf)&&(!A.predicate||A.predicate(e))){if(t.tag=r?A.tag:\"?\",A.represent){if(p=t.styleMap[A.tag]||A.defaultStyle,QK.call(A.represent)===\"[object Function]\")o=A.represent(e,p);else if(FK.call(A.represent,p))o=A.represent[p](e,p);else throw new tI(\"!<\"+A.tag+'> tag resolver accepts not \"'+p+'\" style');t.dump=o}return!0}return!1}function $g(t,e,r,o,a,n){t.tag=null,t.dump=r,kK(t,r,!1)||kK(t,r,!0);var u=QK.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u===\"[object Object]\"||u===\"[object Array]\",p,h;if(A&&(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(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u===\"[object Object]\")o&&Object.keys(t.dump).length!==0?(H6e(t,e,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(_6e(t,e,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump));else if(u===\"[object Array]\"){var E=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(U6e(t,E,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(M6e(t,E,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump))}else if(u===\"[object String]\")t.tag!==\"?\"&&N6e(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new tI(\"unacceptable kind of an object to dump \"+u)}t.tag!==null&&t.tag!==\"?\"&&(t.dump=\"!<\"+t.tag+\"> \"+t.dump)}return!0}function q6e(t,e){var r=[],o=[],a,n;for(CT(t,r,o),a=0,n=o.length;a<n;a+=1)e.duplicates.push(r[o[a]]);e.usedDuplicates=new Array(n)}function CT(t,e,r){var o,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)CT(t[a],e,r);else for(o=Object.keys(t),a=0,n=o.length;a<n;a+=1)CT(t[o[a]],e,r)}function YK(t,e){e=e||{};var r=new k6e(e);return r.noRefs||q6e(t,r),$g(r,0,t,!0,!0)?r.dump+`\n`:\"\"}function j6e(t,e){return YK(t,eI.extend({schema:A6e},e))}IT.exports.dump=YK;IT.exports.safeDump=j6e});var VK=_((fxt,ki)=>{\"use strict\";var VD=BK(),KK=WK();function JD(t){return function(){throw new Error(\"Function \"+t+\" is deprecated and cannot be used.\")}}ki.exports.Type=os();ki.exports.Schema=Jg();ki.exports.FAILSAFE_SCHEMA=HD();ki.exports.JSON_SCHEMA=pT();ki.exports.CORE_SCHEMA=hT();ki.exports.DEFAULT_SAFE_SCHEMA=py();ki.exports.DEFAULT_FULL_SCHEMA=Xw();ki.exports.load=VD.load;ki.exports.loadAll=VD.loadAll;ki.exports.safeLoad=VD.safeLoad;ki.exports.safeLoadAll=VD.safeLoadAll;ki.exports.dump=KK.dump;ki.exports.safeDump=KK.safeDump;ki.exports.YAMLException=Ay();ki.exports.MINIMAL_SCHEMA=HD();ki.exports.SAFE_SCHEMA=py();ki.exports.DEFAULT_SCHEMA=Xw();ki.exports.scan=JD(\"scan\");ki.exports.parse=JD(\"parse\");ki.exports.compose=JD(\"compose\");ki.exports.addConstructor=JD(\"addConstructor\")});var zK=_((pxt,JK)=>{\"use strict\";var G6e=VK();JK.exports=G6e});var ZK=_((hxt,XK)=>{\"use strict\";function Y6e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ed(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ed)}Y6e(ed,Error);ed.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}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 \"+A(t)+\" but \"+p(e)+\" found.\"};function W6e(t,e){e=e!==void 0?e:{};var r={},o={Start:pu},a=pu,n=function($){return[].concat(...$)},u=\"-\",A=Qn(\"-\",!1),p=function($){return $},h=function($){return Object.assign({},...$)},E=\"#\",I=Qn(\"#\",!1),v=hc(),x=function(){return{}},C=\":\",R=Qn(\":\",!1),L=function($,ye){return{[$]:ye}},U=\",\",J=Qn(\",\",!1),te=function($,ye){return ye},ae=function($,ye,Le){return Object.assign({},...[$].concat(ye).map(pt=>({[pt]:Le})))},fe=function($){return $},ce=function($){return $},me=sa(\"correct indentation\"),he=\" \",Be=Qn(\" \",!1),we=function($){return $.length===nr*It},g=function($){return $.length===(nr+1)*It},Ee=function(){return nr++,!0},Se=function(){return nr--,!0},le=function(){return SA()},ne=sa(\"pseudostring\"),ee=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,Ie=hi([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),Fe=/^[^\\r\\n\\t ,\\][{}:#\"']/,At=hi([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),H=function(){return SA().replace(/^ *| *$/g,\"\")},at=\"--\",Re=Qn(\"--\",!1),ke=/^[a-zA-Z\\/0-9]/,xe=hi([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),He=/^[^\\r\\n\\t :,]/,Te=hi([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),Je=\"null\",qe=Qn(\"null\",!1),b=function(){return null},w=\"true\",P=Qn(\"true\",!1),y=function(){return!0},F=\"false\",z=Qn(\"false\",!1),X=function(){return!1},Z=sa(\"string\"),ie='\"',Pe=Qn('\"',!1),Ne=function(){return\"\"},ot=function($){return $},dt=function($){return $.join(\"\")},jt=/^[^\"\\\\\\0-\\x1F\\x7F]/,$t=hi(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),bt='\\\\\"',an=Qn('\\\\\"',!1),Qr=function(){return'\"'},mr=\"\\\\\\\\\",br=Qn(\"\\\\\\\\\",!1),Wr=function(){return\"\\\\\"},Kn=\"\\\\/\",Ns=Qn(\"\\\\/\",!1),Ti=function(){return\"/\"},ps=\"\\\\b\",io=Qn(\"\\\\b\",!1),Pi=function(){return\"\\b\"},Ls=\"\\\\f\",so=Qn(\"\\\\f\",!1),cc=function(){return\"\\f\"},cu=\"\\\\n\",lp=Qn(\"\\\\n\",!1),cp=function(){return`\n`},Os=\"\\\\r\",Dn=Qn(\"\\\\r\",!1),oo=function(){return\"\\r\"},Ms=\"\\\\t\",ml=Qn(\"\\\\t\",!1),yl=function(){return\"\t\"},ao=\"\\\\u\",Vn=Qn(\"\\\\u\",!1),On=function($,ye,Le,pt){return String.fromCharCode(parseInt(`0x${$}${ye}${Le}${pt}`))},Ni=/^[0-9a-fA-F]/,Mn=hi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),_i=sa(\"blank space\"),tr=/^[ \\t]/,Oe=hi([\" \",\"\t\"],!1,!1),ii=sa(\"white space\"),Ma=/^[ \\t\\n\\r]/,hr=hi([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),uc=`\\r\n`,uu=Qn(`\\r\n`,!1),Ac=`\n`,El=Qn(`\n`,!1),DA=\"\\r\",Au=Qn(\"\\r\",!1),Ce=0,Rt=0,fc=[{line:1,column:1}],Hi=0,fu=[],Yt=0,Cl;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function SA(){return t.substring(Rt,Ce)}function up(){return _o(Rt,Ce)}function pc($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),gc([sa($)],t.substring(Rt,Ce),ye)}function PA($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),lo($,ye)}function Qn($,ye){return{type:\"literal\",text:$,ignoreCase:ye}}function hi($,ye,Le){return{type:\"class\",parts:$,inverted:ye,ignoreCase:Le}}function hc(){return{type:\"any\"}}function bA(){return{type:\"end\"}}function sa($){return{type:\"other\",description:$}}function Li($){var ye=fc[$],Le;if(ye)return ye;for(Le=$-1;!fc[Le];)Le--;for(ye=fc[Le],ye={line:ye.line,column:ye.column};Le<$;)t.charCodeAt(Le)===10?(ye.line++,ye.column=1):ye.column++,Le++;return fc[$]=ye,ye}function _o($,ye){var Le=Li($),pt=Li(ye);return{start:{offset:$,line:Le.line,column:Le.column},end:{offset:ye,line:pt.line,column:pt.column}}}function Ze($){Ce<Hi||(Ce>Hi&&(Hi=Ce,fu=[]),fu.push($))}function lo($,ye){return new ed($,null,null,ye)}function gc($,ye,Le){return new ed(ed.buildMessage($,ye),$,ye,Le)}function pu(){var $;return $=xA(),$}function qi(){var $,ye,Le;for($=Ce,ye=[],Le=hu();Le!==r;)ye.push(Le),Le=hu();return ye!==r&&(Rt=$,ye=n(ye)),$=ye,$}function hu(){var $,ye,Le,pt,ht;return $=Ce,ye=hs(),ye!==r?(t.charCodeAt(Ce)===45?(Le=u,Ce++):(Le=r,Yt===0&&Ze(A)),Le!==r?(pt=Sn(),pt!==r?(ht=dc(),ht!==r?(Rt=$,ye=p(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$}function xA(){var $,ye,Le;for($=Ce,ye=[],Le=Ua();Le!==r;)ye.push(Le),Le=Ua();return ye!==r&&(Rt=$,ye=h(ye)),$=ye,$}function Ua(){var $,ye,Le,pt,ht,Tt,er,$r,ji;if($=Ce,ye=Sn(),ye===r&&(ye=null),ye!==r){if(Le=Ce,t.charCodeAt(Ce)===35?(pt=E,Ce++):(pt=r,Yt===0&&Ze(I)),pt!==r){if(ht=[],Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r),Tt!==r)for(;Tt!==r;)ht.push(Tt),Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r);else ht=r;ht!==r?(pt=[pt,ht],Le=pt):(Ce=Le,Le=r)}else Ce=Le,Le=r;if(Le===r&&(Le=null),Le!==r){if(pt=[],ht=We(),ht!==r)for(;ht!==r;)pt.push(ht),ht=We();else pt=r;pt!==r?(Rt=$,ye=x(),$=ye):(Ce=$,$=r)}else Ce=$,$=r}else Ce=$,$=r;if($===r&&($=Ce,ye=hs(),ye!==r?(Le=oa(),Le!==r?(pt=Sn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=L(Le,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=hs(),ye!==r?(Le=co(),Le!==r?(pt=Sn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=L(Le,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))){if($=Ce,ye=hs(),ye!==r)if(Le=co(),Le!==r)if(pt=Sn(),pt!==r)if(ht=aa(),ht!==r){if(Tt=[],er=We(),er!==r)for(;er!==r;)Tt.push(er),er=We();else Tt=r;Tt!==r?(Rt=$,ye=L(Le,ht),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;if($===r)if($=Ce,ye=hs(),ye!==r)if(Le=co(),Le!==r){if(pt=[],ht=Ce,Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Sn(),$r===r&&($r=null),$r!==r?(ji=co(),ji!==r?(Rt=ht,Tt=te(Le,ji),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r),ht!==r)for(;ht!==r;)pt.push(ht),ht=Ce,Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Sn(),$r===r&&($r=null),$r!==r?(ji=co(),ji!==r?(Rt=ht,Tt=te(Le,ji),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r);else pt=r;pt!==r?(ht=Sn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(Ce)===58?(Tt=C,Ce++):(Tt=r,Yt===0&&Ze(R)),Tt!==r?(er=Sn(),er===r&&(er=null),er!==r?($r=dc(),$r!==r?(Rt=$,ye=ae(Le,pt,$r),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r}return $}function dc(){var $,ye,Le,pt,ht,Tt,er;if($=Ce,ye=Ce,Yt++,Le=Ce,pt=tt(),pt!==r?(ht=_t(),ht!==r?(t.charCodeAt(Ce)===45?(Tt=u,Ce++):(Tt=r,Yt===0&&Ze(A)),Tt!==r?(er=Sn(),er!==r?(pt=[pt,ht,Tt,er],Le=pt):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r),Yt--,Le!==r?(Ce=ye,ye=void 0):ye=r,ye!==r?(Le=We(),Le!==r?(pt=Fn(),pt!==r?(ht=qi(),ht!==r?(Tt=Ci(),Tt!==r?(Rt=$,ye=fe(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=tt(),ye!==r?(Le=Fn(),Le!==r?(pt=xA(),pt!==r?(ht=Ci(),ht!==r?(Rt=$,ye=fe(pt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))if($=Ce,ye=Us(),ye!==r){if(Le=[],pt=We(),pt!==r)for(;pt!==r;)Le.push(pt),pt=We();else Le=r;Le!==r?(Rt=$,ye=ce(ye),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function hs(){var $,ye,Le;for(Yt++,$=Ce,ye=[],t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));Le!==r;)ye.push(Le),t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Le=we(ye),Le?Le=void 0:Le=r,Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)):(Ce=$,$=r),Yt--,$===r&&(ye=r,Yt===0&&Ze(me)),$}function _t(){var $,ye,Le;for($=Ce,ye=[],t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));Le!==r;)ye.push(Le),t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Le=g(ye),Le?Le=void 0:Le=r,Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)):(Ce=$,$=r),$}function Fn(){var $;return Rt=Ce,$=Ee(),$?$=void 0:$=r,$}function Ci(){var $;return Rt=Ce,$=Se(),$?$=void 0:$=r,$}function oa(){var $;return $=ds(),$===r&&($=la()),$}function co(){var $,ye,Le;if($=ds(),$===r){if($=Ce,ye=[],Le=Ho(),Le!==r)for(;Le!==r;)ye.push(Le),Le=Ho();else ye=r;ye!==r&&(Rt=$,ye=le()),$=ye}return $}function Us(){var $;return $=wi(),$===r&&($=gs(),$===r&&($=ds(),$===r&&($=la()))),$}function aa(){var $;return $=wi(),$===r&&($=ds(),$===r&&($=Ho())),$}function la(){var $,ye,Le,pt,ht,Tt;if(Yt++,$=Ce,ee.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Ie)),ye!==r){for(Le=[],pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Le.push(pt),pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Le!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ne)),$}function Ho(){var $,ye,Le,pt,ht;if($=Ce,t.substr(Ce,2)===at?(ye=at,Ce+=2):(ye=r,Yt===0&&Ze(Re)),ye===r&&(ye=null),ye!==r)if(ke.test(t.charAt(Ce))?(Le=t.charAt(Ce),Ce++):(Le=r,Yt===0&&Ze(xe)),Le!==r){for(pt=[],He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));ht!==r;)pt.push(ht),He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));pt!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;return $}function wi(){var $,ye;return $=Ce,t.substr(Ce,4)===Je?(ye=Je,Ce+=4):(ye=r,Yt===0&&Ze(qe)),ye!==r&&(Rt=$,ye=b()),$=ye,$}function gs(){var $,ye;return $=Ce,t.substr(Ce,4)===w?(ye=w,Ce+=4):(ye=r,Yt===0&&Ze(P)),ye!==r&&(Rt=$,ye=y()),$=ye,$===r&&($=Ce,t.substr(Ce,5)===F?(ye=F,Ce+=5):(ye=r,Yt===0&&Ze(z)),ye!==r&&(Rt=$,ye=X()),$=ye),$}function ds(){var $,ye,Le,pt;return Yt++,$=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(Pe)),ye!==r?(t.charCodeAt(Ce)===34?(Le=ie,Ce++):(Le=r,Yt===0&&Ze(Pe)),Le!==r?(Rt=$,ye=Ne(),$=ye):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(Pe)),ye!==r?(Le=ms(),Le!==r?(t.charCodeAt(Ce)===34?(pt=ie,Ce++):(pt=r,Yt===0&&Ze(Pe)),pt!==r?(Rt=$,ye=ot(Le),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)),Yt--,$===r&&(ye=r,Yt===0&&Ze(Z)),$}function ms(){var $,ye,Le;if($=Ce,ye=[],Le=_s(),Le!==r)for(;Le!==r;)ye.push(Le),Le=_s();else ye=r;return ye!==r&&(Rt=$,ye=dt(ye)),$=ye,$}function _s(){var $,ye,Le,pt,ht,Tt;return jt.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze($t)),$===r&&($=Ce,t.substr(Ce,2)===bt?(ye=bt,Ce+=2):(ye=r,Yt===0&&Ze(an)),ye!==r&&(Rt=$,ye=Qr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===mr?(ye=mr,Ce+=2):(ye=r,Yt===0&&Ze(br)),ye!==r&&(Rt=$,ye=Wr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Kn?(ye=Kn,Ce+=2):(ye=r,Yt===0&&Ze(Ns)),ye!==r&&(Rt=$,ye=Ti()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ps?(ye=ps,Ce+=2):(ye=r,Yt===0&&Ze(io)),ye!==r&&(Rt=$,ye=Pi()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ls?(ye=Ls,Ce+=2):(ye=r,Yt===0&&Ze(so)),ye!==r&&(Rt=$,ye=cc()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===cu?(ye=cu,Ce+=2):(ye=r,Yt===0&&Ze(lp)),ye!==r&&(Rt=$,ye=cp()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Os?(ye=Os,Ce+=2):(ye=r,Yt===0&&Ze(Dn)),ye!==r&&(Rt=$,ye=oo()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ms?(ye=Ms,Ce+=2):(ye=r,Yt===0&&Ze(ml)),ye!==r&&(Rt=$,ye=yl()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ao?(ye=ao,Ce+=2):(ye=r,Yt===0&&Ze(Vn)),ye!==r?(Le=Un(),Le!==r?(pt=Un(),pt!==r?(ht=Un(),ht!==r?(Tt=Un(),Tt!==r?(Rt=$,ye=On(Le,pt,ht,Tt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)))))))))),$}function Un(){var $;return Ni.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze(Mn)),$}function Sn(){var $,ye;if(Yt++,$=[],tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe)),ye!==r)for(;ye!==r;)$.push(ye),tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(_i)),$}function ys(){var $,ye;if(Yt++,$=[],Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr)),ye!==r)for(;ye!==r;)$.push(ye),Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ii)),$}function We(){var $,ye,Le,pt,ht,Tt;if($=Ce,ye=tt(),ye!==r){for(Le=[],pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Le.push(pt),pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function tt(){var $;return t.substr(Ce,2)===uc?($=uc,Ce+=2):($=r,Yt===0&&Ze(uu)),$===r&&(t.charCodeAt(Ce)===10?($=Ac,Ce++):($=r,Yt===0&&Ze(El)),$===r&&(t.charCodeAt(Ce)===13?($=DA,Ce++):($=r,Yt===0&&Ze(Au)))),$}let It=2,nr=0;if(Cl=a(),Cl!==r&&Ce===t.length)return Cl;throw Cl!==r&&Ce<t.length&&Ze(bA()),gc(fu,Hi<t.length?t.charAt(Hi):null,Hi<t.length?_o(Hi,Hi+1):_o(Hi,Hi))}XK.exports={SyntaxError:ed,parse:W6e}});function eV(t){return t.match(K6e)?t:JSON.stringify(t)}function rV(t){return typeof t>\"u\"?!0:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>rV(t[e])):!1}function BT(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`${eV(t)}\n`;if(Array.isArray(t)){if(t.length===0)return`[]\n`;let o=\"  \".repeat(e);return`\n${t.map(n=>`${o}- ${BT(n,e+1,!1)}`).join(\"\")}`}if(typeof t==\"object\"&&t){let[o,a]=t instanceof zD?[t.data,!1]:[t,!0],n=\"  \".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let E=$K.indexOf(p),I=$K.indexOf(h);return E===-1&&I===-1?p<h?-1:p>h?1:0:E!==-1&&I===-1?-1:E===-1&&I!==-1?1:E-I});let A=u.filter(p=>!rV(o[p])).map((p,h)=>{let E=o[p],I=eV(p),v=BT(E,e+1,!0),x=h>0||r?n:\"\",C=I.length>1024?`? ${I}\n${x}:`:`${I}:`,R=v.startsWith(`\n`)?v:` ${v}`;return`${x}${C}${R}`}).join(e===0?`\n`:\"\")||`\n`;return r?`\n${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ba(t){try{let e=BT(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 V6e(t){return t.endsWith(`\n`)||(t+=`\n`),(0,tV.parse)(t)}function z6e(t){if(J6e.test(t))return V6e(t);let e=(0,XD.safeLoad)(t,{schema:XD.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 Ki(t){return z6e(t)}var XD,tV,K6e,$K,zD,J6e,nV=Et(()=>{XD=$e(zK()),tV=$e(ZK()),K6e=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,$K=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],zD=class{constructor(e){this.data=e}};Ba.PreserveOrdering=zD;J6e=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var rI={};Vt(rI,{parseResolution:()=>MD,parseShell:()=>ND,parseSyml:()=>Ki,stringifyArgument:()=>cT,stringifyArgumentSegment:()=>uT,stringifyArithmeticExpression:()=>OD,stringifyCommand:()=>lT,stringifyCommandChain:()=>uy,stringifyCommandChainThen:()=>aT,stringifyCommandLine:()=>LD,stringifyCommandLineThen:()=>oT,stringifyEnvSegment:()=>TD,stringifyRedirectArgument:()=>Jw,stringifyResolution:()=>UD,stringifyShell:()=>cy,stringifyShellLine:()=>cy,stringifySyml:()=>Ba,stringifyValueArgument:()=>Yg});var Nl=Et(()=>{rW();oW();nV()});var sV=_((Ext,vT)=>{\"use strict\";var X6e=t=>{let e=!1,r=!1,o=!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,o=r,r=!0,a++):r&&o&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+\"-\"+t.slice(a-1),o=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,o=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},iV=(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=X6e(t)),t=t.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(t))};vT.exports=iV;vT.exports.default=iV});var oV=_((Cxt,Z6e)=>{Z6e.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:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{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:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{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:\"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:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{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\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{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\"}},{name:\"Vercel\",constant:\"VERCEL\",env:\"NOW_BUILDER\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"}]});var td=_(Xa=>{\"use strict\";var lV=oV(),qu=process.env;Object.defineProperty(Xa,\"_vendors\",{value:lV.map(function(t){return t.constant})});Xa.name=null;Xa.isPR=null;lV.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return aV(o)});if(Xa[t.constant]=r,r)switch(Xa.name=t.name,typeof t.pr){case\"string\":Xa.isPR=!!qu[t.pr];break;case\"object\":\"env\"in t.pr?Xa.isPR=t.pr.env in qu&&qu[t.pr.env]!==t.pr.ne:\"any\"in t.pr?Xa.isPR=t.pr.any.some(function(o){return!!qu[o]}):Xa.isPR=aV(t.pr);break;default:Xa.isPR=null}});Xa.isCI=!!(qu.CI||qu.CONTINUOUS_INTEGRATION||qu.BUILD_NUMBER||qu.RUN_ID||Xa.name);function aV(t){return typeof t==\"string\"?!!qu[t]:Object.keys(t).every(function(e){return qu[e]===t[e]})}});var Hn,cn,rd,DT,ZD,cV,ST,PT,$D=Et(()=>{(function(t){t.StartOfInput=\"\\0\",t.EndOfInput=\"\u0001\",t.EndOfPartialInput=\"\u0002\"})(Hn||(Hn={}));(function(t){t[t.InitialNode=0]=\"InitialNode\",t[t.SuccessNode=1]=\"SuccessNode\",t[t.ErrorNode=2]=\"ErrorNode\",t[t.CustomNode=3]=\"CustomNode\"})(cn||(cn={}));rd=-1,DT=/^(-h|--help)(?:=([0-9]+))?$/,ZD=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,cV=/^-[a-zA-Z]{2,}$/,ST=/^([^=]+)=([\\s\\S]*)$/,PT=process.env.DEBUG_CLI===\"1\"});var it,yy,eS,bT,tS=Et(()=>{$D();it=class extends Error{constructor(e){super(e),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},yy=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(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${o}\n${bT(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${bT(e)}`}},eS=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((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${bT(e)}`}},bT=t=>`While running ${t.filter(e=>e!==Hn.EndOfInput&&e!==Hn.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\\s/)||e.length===0||r!==`\"${e}\"`?r:e}).join(\" \")}`});function $6e(t){let e=t.split(`\n`),r=e.filter(a=>a.match(/\\S/)),o=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(o).trimRight()).join(`\n`)}function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\\r\\n?/g,`\n`),t=$6e(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,(o,a)=>a||\" \"),r&&(t=t.split(/\\n/).map(o=>{let a=o.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((u,A)=>\" \".repeat(n)+(A===0?\"- \":\"  \")+u).join(`\n`)}).join(`\n\n`)),t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t}\n`:\"\"}var xT,uV,AV,kT=Et(()=>{xT=Array(80).fill(\"\\u2501\");for(let t=0;t<=24;++t)xT[xT.length-t]=`\\x1B[38;5;${232+t}m\\u2501`;uV={header:t=>`\\x1B[1m\\u2501\\u2501\\u2501 ${t}${t.length<80-5?` ${xT.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`},AV={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Ko(t){return{...t,[nI]:!0}}function ju(t,e){return typeof t>\"u\"?[t,e]:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function rS(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,o,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=o!==\".\"||!e?`${o.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function iI(t,e){return e.length===1?new it(`${t}${rS(e[0],{mergeName:!0})}`):new it(`${t}:\n${e.map(r=>`\n- ${rS(r)}`).join(\"\")}`)}function nd(t,e,r){if(typeof r>\"u\")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw iI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var nI,Ef=Et(()=>{tS();nI=Symbol(\"clipanion/isOption\")});var Vo={};Vt(Vo,{KeyRelationship:()=>Gu,TypeAssertionError:()=>Kp,applyCascade:()=>aI,as:()=>yqe,assert:()=>gqe,assertWithErrors:()=>dqe,cascade:()=>oS,fn:()=>Eqe,hasAtLeastOneKey:()=>OT,hasExactLength:()=>dV,hasForbiddenKeys:()=>Mqe,hasKeyRelationship:()=>cI,hasMaxLength:()=>wqe,hasMinLength:()=>Cqe,hasMutuallyExclusiveKeys:()=>Uqe,hasRequiredKeys:()=>Oqe,hasUniqueItems:()=>Iqe,isArray:()=>nS,isAtLeast:()=>NT,isAtMost:()=>Dqe,isBase64:()=>Rqe,isBoolean:()=>aqe,isDate:()=>cqe,isDict:()=>fqe,isEnum:()=>Ks,isHexColor:()=>Fqe,isISO8601:()=>Qqe,isInExclusiveRange:()=>Pqe,isInInclusiveRange:()=>Sqe,isInstanceOf:()=>hqe,isInteger:()=>LT,isJSON:()=>Tqe,isLiteral:()=>pV,isLowerCase:()=>bqe,isMap:()=>Aqe,isNegative:()=>Bqe,isNullable:()=>Lqe,isNumber:()=>RT,isObject:()=>hV,isOneOf:()=>TT,isOptional:()=>Nqe,isPartial:()=>pqe,isPayload:()=>lqe,isPositive:()=>vqe,isRecord:()=>sS,isSet:()=>uqe,isString:()=>Cy,isTuple:()=>iS,isUUID4:()=>kqe,isUnknown:()=>FT,isUpperCase:()=>xqe,makeTrait:()=>gV,makeValidator:()=>Hr,matchesRegExp:()=>oI,softAssert:()=>mqe});function qn(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 Ey(t,e){if(t.length===0)return\"nothing\";if(t.length===1)return qn(t[0]);let r=t.slice(0,-1),o=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>qn(n)).join(\", \")}${a}${qn(o)}`}function Wp(t,e){var r,o,a;return typeof e==\"number\"?`${(r=t?.p)!==null&&r!==void 0?r:\".\"}[${e}]`:eqe.test(e)?`${(o=t?.p)!==null&&o!==void 0?o:\"\"}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(e)}]`}function QT(t,e,r){return t===1?e:r}function pr({errors:t,p:e}={},r){return t?.push(`${e??\".\"}: ${r}`),!1}function sqe(t,e){return r=>{t[e]=r}}function Yu(t,e){return r=>{let o=t[e];return t[e]=r,Yu(t,e).bind(null,o)}}function sI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}function FT(){return Hr({test:(t,e)=>!0})}function pV(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${qn(t)} (got ${qn(e)})`):!0})}function Cy(){return Hr({test:(t,e)=>typeof t!=\"string\"?pr(e,`Expected a string (got ${qn(t)})`):!0})}function Ks(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a==\"string\"||typeof a==\"number\"),o=new Set(e);return o.size===1?pV([...o][0]):Hr({test:(a,n)=>o.has(a)?!0:r?pr(n,`Expected one of ${Ey(e,\"or\")} (got ${qn(a)})`):pr(n,`Expected a valid enumeration value (got ${qn(a)})`)})}function aqe(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"boolean\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o=oqe.get(t);if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a boolean (got ${qn(t)})`)}return!0}})}function RT(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"number\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"){let a;try{a=JSON.parse(t)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===t)o=a;else return pr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a number (got ${qn(t)})`)}return!0}})}function lqe(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>\"u\")return pr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return pr(r,\"Unbound coercion result\");if(typeof e!=\"string\")return pr(r,`Expected a string (got ${qn(e)})`);let a;try{a=JSON.parse(e)}catch{return pr(r,`Expected a JSON string (got ${qn(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yu(n,\"value\")}))?(r.coercions.push([(o=r.p)!==null&&o!==void 0?o:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function cqe(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"&&fV.test(t))o=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))o=new Date(a*1e3);else return pr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a date (got ${qn(t)})`)}return!0}})}function nS(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if(typeof r==\"string\"&&typeof e<\"u\"&&typeof o?.coercions<\"u\"){if(typeof o?.coercion>\"u\")return pr(o,\"Unbound coercion result\");r=r.split(e)}if(!Array.isArray(r))return pr(o,`Expected an array (got ${qn(r)})`);let u=!0;for(let A=0,p=r.length;A<p&&(u=t(r[A],Object.assign(Object.assign({},o),{p:Wp(o,A),coercion:Yu(r,A)}))&&u,!(!u&&o?.errors==null));++A);return r!==n&&o.coercions.push([(a=o.p)!==null&&a!==void 0?a:\".\",o.coercion.bind(null,r)]),u}})}function uqe(t,{delimiter:e}={}){let r=nS(t,{delimiter:e});return Hr({test:(o,a)=>{var n,u;if(Object.getPrototypeOf(o).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A=[...o],p=[...o];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,I)=>E!==A[I])?new Set(p):o;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",sI(a.coercion,o,h)]),!0}else{let A=!0;for(let p of o)if(A=t(p,Object.assign({},a))&&A,!A&&a?.errors==null)break;return A}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A={value:o};return r(o,Object.assign(Object.assign({},a),{coercion:Yu(A,\"value\")}))?(a.coercions.push([(u=a.p)!==null&&u!==void 0?u:\".\",sI(a.coercion,o,()=>new Set(A.value))]),!0):!1}return pr(a,`Expected a set (got ${qn(o)})`)}})}function Aqe(t,e){let r=nS(iS([t,e])),o=sS(e,{keys:t});return Hr({test:(a,n)=>{var u,A,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let I=()=>E.some((v,x)=>v[0]!==h[x][0]||v[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(u=n.p)!==null&&u!==void 0?u:\".\",sI(n.coercion,a,I)]),!0}else{let h=!0;for(let[E,I]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(I,Object.assign(Object.assign({},n),{p:Wp(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(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([(A=n.p)!==null&&A!==void 0?A:\".\",sI(n.coercion,a,()=>new Map(h.value))]),!0):!1:o(a,Object.assign(Object.assign({},n),{coercion:Yu(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",sI(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return pr(n,`Expected a map (got ${qn(a)})`)}})}function iS(t,{delimiter:e}={}){let r=dV(t.length);return Hr({test:(o,a)=>{var n;if(typeof o==\"string\"&&typeof e<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)])}if(!Array.isArray(o))return pr(a,`Expected a tuple (got ${qn(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A<p&&A<t.length&&(u=t[A](o[A],Object.assign(Object.assign({},a),{p:Wp(a,A),coercion:Yu(o,A)}))&&u,!(!u&&a?.errors==null));++A);return u}})}function sS(t,{keys:e=null}={}){let r=nS(iS([e??Cy(),t]));return Hr({test:(o,a)=>{var n;if(Array.isArray(o)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?pr(a,\"Unbound coercion result\"):r(o,Object.assign(Object.assign({},a),{coercion:void 0}))?(o=Object.fromEntries(o),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)]),!0):!1;if(typeof o!=\"object\"||o===null)return pr(a,`Expected an object (got ${qn(o)})`);let u=Object.keys(o),A=!0;for(let p=0,h=u.length;p<h&&(A||a?.errors!=null);++p){let E=u[p],I=o[E];if(E===\"__proto__\"||E===\"constructor\"){A=pr(Object.assign(Object.assign({},a),{p:Wp(a,E)}),\"Unsafe property name\");continue}if(e!==null&&!e(E,a)){A=!1;continue}if(!t(I,Object.assign(Object.assign({},a),{p:Wp(a,E),coercion:Yu(o,E)}))){A=!1;continue}}return A}})}function fqe(t,e={}){return sS(t,e)}function hV(t,{extra:e=null}={}){let r=Object.keys(t),o=Hr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return pr(n,`Expected an object (got ${qn(a)})`);let u=new Set([...r,...Object.keys(a)]),A={},p=!0;for(let h of u){if(h===\"constructor\"||h===\"__proto__\")p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,I=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(I,Object.assign(Object.assign({},n),{p:Wp(n,h),coercion:Yu(a,h)}))&&p:e===null?p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),`Extraneous property (got ${qn(I)})`):Object.defineProperty(A,h,{enumerable:!0,get:()=>I,set:sqe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(A,n)&&p),p}});return Object.assign(o,{properties:t})}function pqe(t){return hV(t,{extra:sS(FT())})}function gV(t){return()=>t}function Hr({test:t}){return gV(t)()}function gqe(t,e){if(!e(t))throw new Kp}function dqe(t,e){let r=[];if(!e(t,{errors:r}))throw new Kp({errors:r})}function mqe(t,e){}function yqe(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}let u={value:t},A=Yu(u,\"value\"),p=[];if(!e(t,{errors:n,coercion:A,coercions:p})){if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?u.value:{value:u.value,errors:void 0}}function Eqe(t,e){let r=iS(t);return(...o)=>{if(!r(o))throw new Kp;return e(...o)}}function Cqe(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function wqe(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function dV(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function Iqe({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;n<u;++n){let A=e[n],p=typeof t<\"u\"?t(A):A;if(o.has(p)){if(a.has(p))continue;pr(r,`Expected to contain unique elements; got a duplicate with ${qn(e)}`),a.add(p)}else o.add(p)}return a.size===0}})}function Bqe(){return Hr({test:(t,e)=>t<=0?!0:pr(e,`Expected to be negative (got ${t})`)})}function vqe(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be positive (got ${t})`)})}function NT(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at least ${t} (got ${e})`)})}function Dqe(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at most ${t} (got ${e})`)})}function Sqe(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function Pqe(t,e){return Hr({test:(r,o)=>r>=t&&r<e?!0:pr(o,`Expected to be in the [${t}; ${e}[ range (got ${r})`)})}function LT({unsafe:t=!1}={}){return Hr({test:(e,r)=>e!==Math.round(e)?pr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?pr(r,`Expected to be a safe integer (got ${e})`):!0})}function oI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to match the pattern ${t.toString()} (got ${qn(e)})`)})}function bqe(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected to be all-lowercase (got ${t})`):!0})}function xqe(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected to be all-uppercase (got ${t})`):!0})}function kqe(){return Hr({test:(t,e)=>iqe.test(t)?!0:pr(e,`Expected to be a valid UUID v4 (got ${qn(t)})`)})}function Qqe(){return Hr({test:(t,e)=>fV.test(t)?!0:pr(e,`Expected to be a valid ISO 8601 date string (got ${qn(t)})`)})}function Fqe({alpha:t=!1}){return Hr({test:(e,r)=>(t?tqe.test(e):rqe.test(e))?!0:pr(r,`Expected to be a valid hexadecimal color string (got ${qn(e)})`)})}function Rqe(){return Hr({test:(t,e)=>nqe.test(t)?!0:pr(e,`Expected to be a valid base 64 string (got ${qn(t)})`)})}function Tqe(t=FT()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return pr(r,`Expected to be a valid JSON string (got ${qn(e)})`)}return t(o,r)}})}function oS(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,a)=>{var n,u;let A={value:o},p=typeof a?.coercions<\"u\"?Yu(A,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!t(o,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,I]of h)E.push(I());try{if(typeof a?.coercions<\"u\"){if(A.value!==o){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,A.value)])}(u=a?.coercions)===null||u===void 0||u.push(...h)}return r.every(I=>I(A.value,a))}finally{for(let I of E)I()}}})}function aI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return oS(t,r)}function Nqe(t){return Hr({test:(e,r)=>typeof e>\"u\"?!0:t(e,r)})}function Lqe(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}function Oqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)||p.push(h);return p.length>0?pr(u,`Missing required ${QT(p.length,\"property\",\"properties\")} ${Ey(p,\"and\")}`):!0}})}function OT(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>Object.keys(n).some(h=>a(o,h,n))?!0:pr(u,`Missing at least one property from ${Ey(Array.from(o),\"or\")}`)})}function Mqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>0?pr(u,`Forbidden ${QT(p.length,\"property\",\"properties\")} ${Ey(p,\"and\")}`):!0}})}function Uqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>1?pr(u,`Mutually exclusive properties ${Ey(p,\"and\")}`):!0}})}function cI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==void 0?a:[]),A=lI[(n=o?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=_qe[e],E=e===Gu.Forbids?\"or\":\"and\";return Hr({test:(I,v)=>{let x=new Set(Object.keys(I));if(!A(x,t,I)||u.has(I[t]))return!0;let C=[];for(let R of p)(A(x,R,I)&&!u.has(I[R]))!==h.expect&&C.push(R);return C.length>=1?pr(v,`Property \"${t}\" ${h.message} ${QT(C.length,\"property\",\"properties\")} ${Ey(C,E)}`):!0}})}var eqe,tqe,rqe,nqe,iqe,fV,oqe,hqe,TT,Kp,lI,Gu,_qe,Za=Et(()=>{eqe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;tqe=/^#[0-9a-f]{6}$/i,rqe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,nqe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,iqe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,fV=/^(?:[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)?)$/;oqe=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);hqe=t=>Hr({test:(e,r)=>e instanceof t?!0:pr(r,`Expected an instance of ${t.name} (got ${qn(e)})`)}),TT=(t,{exclusive:e=!1}={})=>Hr({test:(r,o)=>{var a,n,u;let A=[],p=typeof o?.errors<\"u\"?[]:void 0;for(let h=0,E=t.length;h<E;++h){let I=typeof o?.errors<\"u\"?[]:void 0,v=typeof o?.coercions<\"u\"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},o),{errors:I,coercions:v,p:`${(a=o?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(A.push([`#${h+1}`,v]),!e)break}else p?.push(I[0])}if(A.length===1){let[,h]=A[0];return typeof h<\"u\"&&((n=o?.coercions)===null||n===void 0||n.push(...h)),!0}return A.length>1?pr(o,`Expected to match exactly a single predicate (matched ${A.join(\", \")})`):(u=o?.errors)===null||u===void 0||u.push(...p),!1}});Kp=class extends Error{constructor({errors:e}={}){let r=\"Type mismatch\";if(e&&e.length>0){r+=`\n`;for(let o of e)r+=`\n- ${o}`}super(r)}};lI={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\"})(Gu||(Gu={}));_qe={[Gu.Forbids]:{expect:!1,message:\"forbids using\"},[Gu.Requires]:{expect:!0,message:\"requires using\"}}});var nt,Vp=Et(()=>{Ef();nt=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:u}=await Promise.resolve().then(()=>(Za(),Vo)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw iI(\"Invalid option schema\",p);for(let[,I]of h)I()}else if(r!=null)throw new Error(\"Invalid command schema\");let o=await this.execute();return typeof o<\"u\"?o:0}};nt.isOption=nI;nt.Default=[]});function va(t){PT&&console.log(t)}function yV(){let t={nodes:[]};for(let e=0;e<cn.CustomNode;++e)t.nodes.push($a());return t}function Hqe(t){let e=yV(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n<a.nodes.length;++n)CV(n)||e.nodes.push(Jqe(a.nodes[n],o));o+=a.nodes.length-cn.CustomNode+1}for(let a of r)wy(e,cn.InitialNode,a);return e}function Oc(t,e){return t.nodes.push(e),t.nodes.length-1}function qqe(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let I of h)E.some(({to:v})=>I.to===v)||E.push(I)}for(let[p,h]of A.dynamics)a.dynamics.some(([E,{to:I}])=>p===E&&h.to===I)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(cn.InitialNode)}function jqe(t,{prefix:e=\"\"}={}){if(PT){va(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)va(`${e}  ${r}: ${JSON.stringify(t.nodes[r])}`)}}function Gqe(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=[{node:cn.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];jqe(t,{prefix:\"  \"});let a=[Hn.StartOfInput,...e];for(let n=0;n<a.length;++n){let u=a[n],A=u===Hn.EndOfInput||u===Hn.EndOfPartialInput,p=n-1;va(`  Processing ${JSON.stringify(u)}`);let h=[];for(let{node:E,state:I}of o){va(`    Current node is ${E}`);let v=t.nodes[E];if(E===cn.ErrorNode){h.push({node:E,state:I});continue}console.assert(v.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let x=Object.prototype.hasOwnProperty.call(v.statics,u);if(!r||n<a.length-1||x)if(x){let C=v.statics[u];for(let{to:R,reducer:L}of C)h.push({node:R,state:typeof L<\"u\"?aS(UT,L,I,u,p):I}),va(`      Static transition to ${R} found`)}else va(\"      No static transition found\");else{let C=!1;for(let R of Object.keys(v.statics))if(!!R.startsWith(u)){if(u===R)for(let{to:L,reducer:U}of v.statics[R])h.push({node:L,state:typeof U<\"u\"?aS(UT,U,I,u,p):I}),va(`      Static transition to ${L} found`);else for(let{to:L}of v.statics[R])h.push({node:L,state:{...I,remainder:R.slice(u.length)}}),va(`      Static transition to ${L} found (partial match)`);C=!0}C||va(\"      No partial static transition found\")}if(!A)for(let[C,{to:R,reducer:L}]of v.dynamics)aS(zqe,C,I,u,p)&&(h.push({node:R,state:typeof L<\"u\"?aS(UT,L,I,u,p):I}),va(`      Dynamic transition to ${R} found (via ${C})`))}if(h.length===0&&A&&e.length===1)return[{node:cn.InitialNode,state:mV}];if(h.length===0)throw new yy(e,o.filter(({node:E})=>E!==cn.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===cn.ErrorNode))throw new yy(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));o=Wqe(h)}if(o.length>0){va(\"  Results:\");for(let n of o)va(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else va(\"  No results\");return o}function Yqe(t,e,{endToken:r=Hn.EndOfInput}={}){let o=Gqe(t,[...e,r]);return Kqe(e,o.map(({state:a})=>a))}function Wqe(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 Kqe(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v=>!v.partial);if(o.length>0&&(r=o),r.length===0)throw new Error;let a=r.filter(v=>v.selectedIndex===rd||v.requiredOptions.every(x=>x.some(C=>v.options.find(R=>R.name===C))));if(a.length===0)throw new yy(t,r.map(v=>({usage:v.candidateUsage,reason:null})));let n=0;for(let v of a)v.path.length>n&&(n=v.path.length);let u=a.filter(v=>v.path.length===n),A=v=>v.positionals.filter(({extra:x})=>!x).length+v.options.length,p=u.map(v=>({state:v,positionalCount:A(v)})),h=0;for(let{positionalCount:v}of p)v>h&&(h=v);let E=p.filter(({positionalCount:v})=>v===h).map(({state:v})=>v),I=Vqe(E);if(I.length>1)throw new eS(t,I.map(v=>v.candidateUsage));return I[0]}function Vqe(t){let e=[],r=[];for(let o of t)o.selectedIndex===rd?r.push(o):e.push(o);return r.length>0&&e.push({...mV,path:EV(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function EV(t,e,...r){return e===void 0?Array.from(t):EV(t.filter((o,a)=>o===e[a]),...r)}function $a(){return{dynamics:[],shortcuts:[],statics:{}}}function CV(t){return t===cn.SuccessNode||t===cn.ErrorNode}function MT(t,e=0){return{to:CV(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn.CustomNode+1:t.to+e,reducer:t.reducer}}function Jqe(t,e=0){let r=$a();for(let[o,a]of t.dynamics)r.dynamics.push([o,MT(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(MT(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>MT(n,e));return r}function Ps(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function wy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function Jo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function aS(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,o,a,...u)}else return t[e](r,o,a)}var mV,zqe,UT,el,_T,Iy,lS=Et(()=>{$D();tS();mV={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:rd,partial:!1,tokens:[]};zqe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!==\"-\"&&e.startsWith(\"-\"),isNotOptionLike:(t,e)=>t.ignoreOptions||e===\"-\"||!e.startsWith(\"-\"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===o,isBatchOption:(t,e,r,o)=>!t.ignoreOptions&&cV.test(e)&&[...e.slice(1)].every(a=>o.has(`-${a}`)),isBoundOption:(t,e,r,o,a)=>{let n=e.match(ST);return!t.ignoreOptions&&!!n&&ZD.test(n[1])&&o.has(n[1])&&a.filter(u=>u.nameSet.includes(n[1])).every(u=>u.allowBinding)},isNegatedOption:(t,e,r,o)=>!t.ignoreOptions&&e===`--no-${o.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&DT.test(e),isUnsupportedOption:(t,e,r,o)=>!t.ignoreOptions&&e.startsWith(\"-\")&&ZD.test(e)&&!o.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith(\"-\")&&!ZD.test(e)},UT={setCandidateState:(t,e,r,o)=>({...t,...o}),setSelectedIndex:(t,e,r,o)=>({...t,selectedIndex:o}),setPartialIndex:(t,e,r,o)=>({...t,selectedIndex:o,partial:!0}),pushBatch:(t,e,r,o)=>{let a=t.options.slice(),n=t.tokens.slice();for(let u=1;u<e.length;++u){let A=o.get(`-${e[u]}`),p=u===1?[0,2]:[u,u+1];a.push({name:A,value:!0}),n.push({segmentIndex:r,type:\"option\",option:A,slice:p})}return{...t,options:a,tokens:n}},pushBound:(t,e,r)=>{let[,o,a]=e.match(ST),n=t.options.concat({name:o,value:a}),u=t.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,o.length],option:o},{segmentIndex:r,type:\"assign\",slice:[o.length,o.length+1]},{segmentIndex:r,type:\"value\",slice:[o.length+1,o.length+a.length+1]}]);return{...t,options:n,tokens:u}},pushPath:(t,e,r)=>{let o=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:\"path\"});return{...t,path:o,tokens:a}},pushPositional:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtra:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:el}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushTrue:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!1}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,o)=>{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 o;let a=t.options[t.options.length-1],n=t.options.slice(),u=t.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((o=a.value)!==null&&o!==void 0?o:[]).concat([e]),{...t,options:n,tokens:u}},setStringValue:(t,e,r)=>{let o=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:\"value\"});return o.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,o)=>{let[,,a]=e.match(DT);return typeof a<\"u\"?{...t,options:[{name:\"-c\",value:String(o)},{name:\"-i\",value:a}]}:{...t,options:[{name:\"-c\",value:String(o)}]}},setError:(t,e,r,o)=>e===Hn.EndOfInput||e===Hn.EndOfPartialInput?{...t,errorMessage:`${o}.`}:{...t,errorMessage:`${o} (\"${e}\").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},el=Symbol(),_T=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:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===el)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!==el?this.arity.extra.push(e):this.arity.extra!==el&&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===el)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 o=0;o<r;++o)this.addPositional({name:e});this.arity.extra=el}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,allowBinding:u=!0}){if(!u&&o>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);let A=e.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of e)this.allOptionNames.set(p,A);this.options.push({preferredName:A,nameSet:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{preferredName:u,nameSet:A,arity:p,hidden:h,description:E,required:I}of this.options){if(h)continue;let v=[];for(let C=0;C<p;++C)v.push(` #${C}`);let x=`${A.join(\",\")}${v.join(\"\")}`;!r&&E?a.push({preferredName:u,nameSet:A,definition:x,description:E,required:I}):o.push(I?`<${x}>`:`[${x}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===el?o.push(\"...\"):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let e=yV(),r=cn.InitialNode,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.nameSet);r=Oc(e,$a()),Jo(e,cn.InitialNode,Hn.StartOfInput,r,[\"setCandidateState\",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=Oc(e,$a());wy(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v<A.length;++v){let x=Oc(e,$a());Jo(e,p,A[v],x,\"pushPath\"),p=x}if(this.arity.leading.length>0||!this.arity.proxy){let v=Oc(e,$a());Ps(e,p,\"isHelp\",v,[\"useHelp\",this.cliIndex]),Ps(e,v,\"always\",v,\"pushExtra\"),Jo(e,v,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",rd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Jo(e,p,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,p,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let v=0;v<this.arity.leading.length;++v){let x=Oc(e,$a());(!this.arity.proxy||v+1!==this.arity.leading.length)&&this.registerOptions(e,x),(this.arity.trailing.length>0||v+1!==this.arity.leading.length)&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ps(e,h,\"isNotOptionLike\",x,\"pushPositional\"),h=x}let E=h;if(this.arity.extra===el||this.arity.extra.length>0){let v=Oc(e,$a());if(wy(e,h,v),this.arity.extra===el){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),Ps(e,h,n,x,\"pushExtraNoLimits\"),Ps(e,x,n,x,\"pushExtraNoLimits\"),wy(e,x,v)}else for(let x=0;x<this.arity.extra.length;++x){let C=Oc(e,$a());(!this.arity.proxy||x>0)&&this.registerOptions(e,C),Ps(e,E,n,C,\"pushExtra\"),wy(e,C,v),E=C}E=v}this.arity.trailing.length>0&&(Jo(e,E,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,E,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let I=E;for(let v=0;v<this.arity.trailing.length;++v){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),v+1<this.arity.trailing.length&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ps(e,I,\"isNotOptionLike\",x,\"pushPositional\"),I=x}Ps(e,I,n,cn.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Jo(e,I,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Jo(e,I,Hn.EndOfPartialInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Ps(e,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),Ps(e,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),Ps(e,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),Ps(e,r,[\"isUnsupportedOption\",this.allOptionNames],cn.ErrorNode,[\"setError\",\"Unsupported option name\"]),Ps(e,r,[\"isInvalidOption\"],cn.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let o of this.options)if(o.arity===0)for(let a of o.nameSet)Ps(e,r,[\"isOption\",a],r,[\"pushTrue\",o.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&Ps(e,r,[\"isNegatedOption\",a],r,[\"pushFalse\",o.preferredName]);else{let a=Oc(e,$a());for(let n of o.nameSet)Ps(e,r,[\"isOption\",n],a,[\"pushUndefined\",o.preferredName]);for(let n=0;n<o.arity;++n){let u=Oc(e,$a());Jo(e,a,Hn.EndOfInput,cn.ErrorNode,\"setOptionArityError\"),Jo(e,a,Hn.EndOfPartialInput,cn.ErrorNode,\"setOptionArityError\"),Ps(e,a,\"isOptionLike\",cn.ErrorNode,\"setOptionArityError\");let A=o.arity===1?\"setStringValue\":\"pushStringValue\";Ps(e,a,\"isNotOptionLike\",u,A),a=u}wy(e,a,r)}}},Iy=class{constructor({binaryName:e=\"...\"}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new Iy(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 _T(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:u}=a.compile();e.push(n),r.push(u)}let o=Hqe(e);return qqe(o),{machine:o,contexts:r,process:(a,{partial:n}={})=>{let u=n?Hn.EndOfPartialInput:Hn.EndOfInput;return Yqe(o,a,{endToken:u})}}}}});function IV(){return cS.default&&\"getColorDepth\"in cS.default.WriteStream.prototype?cS.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 BV(t){let e=wV;if(typeof e>\"u\"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=ve(\"async_hooks\");e=wV=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var cS,wV,vV=Et(()=>{cS=$e(ve(\"tty\"),1)});var By,DV=Et(()=>{Vp();By=class extends nt{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new By(r);o.path=e.path;for(let a of e.options)switch(a.name){case\"-c\":o.commands.push(Number(a.value));break;case\"-i\":o.index=Number(a.value);break}return o}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 o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].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 bV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).runExit(o,a)}async function xV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).run(o,a)}function kV(t){let e,r,o,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function PV(t){return t()}var SV,as,QV=Et(()=>{$D();lS();kT();vV();Vp();DV();SV=Symbol(\"clipanion/errorCommand\");as=class{constructor({binaryLabel:e,binaryName:r=\"...\",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Iy({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[nt.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<\"u\")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:o,context:a,partial:n}=typeof e==\"object\"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:u,process:A}=this.builder.compile(),p=A(o,{partial:n}),h={...as.defaultContext,...a};switch(p.selectedIndex){case rd:{let E=By.from(p,u);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=u[p.selectedIndex],I=this.registrations.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let v=new E;v.context=h,v.tokens=p.tokens,v.path=p.path;try{for(let[x,{transformer:C}]of I.specs.entries())v[x]=C(I.builder,x,p,h);return v}catch(x){throw x[SV]=v,x}}break}}async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(E){return u.stdout.write(this.error(E,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,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,I)=>this.error(E,I),format:E=>this.format(E),process:(E,I)=>this.process(E,{...u,...I}),run:(E,I)=>this.run(E,{...u,...I}),usage:(E,I)=>this.usage(E,I)};let p=this.enableCapture&&(a=BV(u))!==null&&a!==void 0?a:PV,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return u.stdout.write(this.error(E,{colored:A,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:o}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),u=typeof e.usage.category<\"u\"?Do(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,A=typeof e.usage.description<\"u\"?Do(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<\"u\"?Do(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<\"u\"?e.usage.examples.map(([E,I])=>[Do(E,{format:this.format(r),paragraphs:!1}),I.replace(/\\$0/g,this.binaryName)]):void 0;return{path:o,usage:a,category:u,description:A,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations.keys()){let a=this.definition(o,{colored:e});!a||r.push(a)}return r}usage(e=null,{colored:r,detailed:o=!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(x=>x.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof nt?e.constructor:e,A=\"\";if(u)if(o){let{description:p=\"\",details:h=\"\",examples:E=[]}=u.usage||{};p!==\"\"&&(A+=Do(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),A+=`\n`),(h!==\"\"||E.length>0)&&(A+=`${this.format(r).header(\"Usage\")}\n`,A+=`\n`);let{usage:I,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${I}\n`,v.length>0){A+=`\n`,A+=`${this.format(r).header(\"Options\")}\n`;let x=v.reduce((C,R)=>Math.max(C,R.definition.length),0);A+=`\n`;for(let{definition:C,description:R}of v)A+=`  ${this.format(r).bold(C.padEnd(x))}    ${Do(R,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(A+=`\n`,A+=`${this.format(r).header(\"Details\")}\n`,A+=`\n`,A+=Do(h,{format:this.format(r),paragraphs:!0})),E.length>0){A+=`\n`,A+=`${this.format(r).header(\"Examples\")}\n`;for(let[x,C]of E)A+=`\n`,A+=Do(x,{format:this.format(r),paragraphs:!1}),A+=`${C.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(u);A+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[v,{index:x}]of this.registrations.entries()){if(typeof v.usage>\"u\")continue;let C=typeof v.usage.category<\"u\"?Do(v.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(C);typeof R>\"u\"&&p.set(C,R=[]);let{usage:L}=this.getUsageByIndex(x);R.push({commandClass:v,usage:L})}let h=Array.from(p.keys()).sort((v,x)=>v===null?-1:x===null?1:v.localeCompare(x,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",I=typeof this.binaryVersion<\"u\";E||I?(E&&I?A+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?A+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:A+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,A+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):A+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let v of h){let x=p.get(v).slice().sort((R,L)=>R.usage.localeCompare(L.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),C=v!==null?v.trim():\"General commands\";A+=`\n`,A+=`${this.format(r).header(`${C}`)}\n`;for(let{commandClass:R,usage:L}of x){let U=R.usage.description||\"undocumented\";A+=`\n`,A+=`  ${this.format(r).bold(L)}\n`,A+=`    ${Do(U,{format:this.format(r),paragraphs:!1})}`}}A+=`\n`,A+=Do(\"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 A}error(e,r){var o,{colored:a,command:n=(o=e[SV])!==null&&o!==void 0?o: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 u=\"\",A=e.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");A===\"Error\"&&(A=\"Internal Error\"),u+=`${this.format(a).error(A)}: ${e.message}\n`;let p=e.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(u+=`\n`,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\\n/,\"\")}\n`),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as.defaultContext.colorDepth>1)?uV:AV}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};as.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:IV()}});var uI,FV=Et(()=>{Vp();uI=class extends nt{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};uI.paths=[[\"--clipanion=definitions\"]]});var AI,RV=Et(()=>{Vp();AI=class extends nt{async execute(){this.context.stdout.write(this.cli.usage())}};AI.paths=[[\"-h\"],[\"--help\"]]});function uS(t={}){return Ko({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var HT=Et(()=>{Ef()});var fI,TV=Et(()=>{Vp();HT();fI=class extends nt{constructor(){super(...arguments),this.args=uS()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};fI.paths=[[\"--clipanion=tokens\"]]});var pI,NV=Et(()=>{Vp();pI=class extends nt{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:\"<unknown>\"}\n`)}};pI.paths=[[\"-v\"],[\"--version\"]]});var qT={};Vt(qT,{DefinitionsCommand:()=>uI,HelpCommand:()=>AI,TokensCommand:()=>fI,VersionCommand:()=>pI});var LV=Et(()=>{FV();RV();TV();NV()});function OV(t,e,r){let[o,a]=ju(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let I,v=typeof o<\"u\"?[...o]:void 0;for(let{name:x,value:C}of E.options)!A.has(x)||(I=x,v=v??[],v.push(C));return typeof v<\"u\"?nd(I??h,v,a.validator):v}})}var MV=Et(()=>{Ef()});function UV(t,e,r){let[o,a]=ju(e,r??{}),n=t.split(\",\"),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E=v);return E}})}var _V=Et(()=>{Ef()});function HV(t,e,r){let[o,a]=ju(e,r??{}),n=t.split(\",\"),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E??(E=0),v?E+=1:E=0);return E}})}var qV=Et(()=>{Ef()});function jV(t={}){return Ko({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===el||A.extra===!1&&u<e.arity.leading.length},n=0;for(;n<o.positionals.length&&a(n);)n+=1;return o.positionals.splice(0,n).map(({value:u})=>u)}})}var GV=Et(()=>{lS();Ef()});function Xqe(t,e,r){let[o,a]=ju(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,I){let v,x=o;typeof a.env<\"u\"&&I.env[a.env]&&(v=a.env,x=I.env[a.env]);for(let{name:C,value:R}of E.options)!A.has(C)||(v=C,x=R);return typeof x==\"string\"?nd(v??h,x,a.validator):x}})}function Zqe(t={}){let{required:e=!0}=t;return Ko({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u<a.positionals.length;++u){if(a.positionals[u].extra===el||e&&a.positionals[u].extra===!0||!e&&a.positionals[u].extra===!1)continue;let[A]=a.positionals.splice(u,1);return nd((n=t.name)!==null&&n!==void 0?n:o,A.value,t.validator)}}})}function YV(t,...e){return typeof t==\"string\"?Xqe(t,...e):Zqe(t)}var WV=Et(()=>{lS();Ef()});var ge={};Vt(ge,{Array:()=>OV,Boolean:()=>UV,Counter:()=>HV,Proxy:()=>uS,Rest:()=>jV,String:()=>YV,applyValidator:()=>nd,cleanValidationError:()=>rS,formatError:()=>iI,isOptionSymbol:()=>nI,makeCommandOption:()=>Ko,rerouteArguments:()=>ju});var KV=Et(()=>{Ef();HT();MV();_V();qV();GV();WV()});var hI={};Vt(hI,{Builtins:()=>qT,Cli:()=>as,Command:()=>nt,Option:()=>ge,UsageError:()=>it,formatMarkdownish:()=>Do,run:()=>xV,runExit:()=>bV});var qt=Et(()=>{tS();kT();Vp();QV();LV();KV()});var VV=_((Pkt,$qe)=>{$qe.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 ZV=_((bkt,Cf)=>{var JV=ve(\"fs\"),GT=ve(\"path\"),eje=ve(\"os\"),tje=ve(\"crypto\"),rje=VV(),YT=rje.version,nje=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function ije(t){let e={},r=t.toString();r=r.replace(/\\r\\n?/mg,`\n`);let o;for(;(o=nje.exec(r))!=null;){let a=o[1],n=o[2]||\"\";n=n.trim();let u=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),u==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),e[a]=n}return e}function sje(t){let e=XV(t),r=bs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let o=zV(t).split(\",\"),a=o.length,n;for(let u=0;u<a;u++)try{let A=o[u].trim(),p=lje(r,A);n=bs.decrypt(p.ciphertext,p.key);break}catch(A){if(u+1>=a)throw A}return bs.parse(n)}function oje(t){console.log(`[dotenv@${YT}][INFO] ${t}`)}function aje(t){console.log(`[dotenv@${YT}][WARN] ${t}`)}function jT(t){console.log(`[dotenv@${YT}][DEBUG] ${t}`)}function zV(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 lje(t,e){let r;try{r=new URL(e)}catch(A){throw A.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\"):A}let o=r.password;if(!o)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()}`,u=t.parsed[n];if(!u)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:u,key:o}}function XV(t){let e=GT.resolve(process.cwd(),\".env\");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(\".vault\")?e:`${e}.vault`}function cje(t){return t[0]===\"~\"?GT.join(eje.homedir(),t.slice(1)):t}function uje(t){oje(\"Loading env from encrypted .env.vault\");let e=bs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),bs.populate(r,e,t),{parsed:e}}function Aje(t){let e=GT.resolve(process.cwd(),\".env\"),r=\"utf8\",o=Boolean(t&&t.debug);t&&(t.path!=null&&(e=cje(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=bs.parse(JV.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),bs.populate(n,a,t),{parsed:a}}catch(a){return o&&jT(`Failed to load ${e} ${a.message}`),{error:a}}}function fje(t){let e=XV(t);return zV(t).length===0?bs.configDotenv(t):JV.existsSync(e)?bs._configVault(t):(aje(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),bs.configDotenv(t))}function pje(t,e){let r=Buffer.from(e.slice(-64),\"hex\"),o=Buffer.from(t,\"base64\"),a=o.slice(0,12),n=o.slice(-16);o=o.slice(12,-16);try{let u=tje.createDecipheriv(\"aes-256-gcm\",r,a);return u.setAuthTag(n),`${u.update(o)}${u.final()}`}catch(u){let A=u instanceof RangeError,p=u.message===\"Invalid key length\",h=u.message===\"Unsupported state or unable to authenticate data\";if(A||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: \",u.code),console.error(\"Error: \",u.message),u}}function hje(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(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]),o&&jT(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):t[n]=e[n]}var bs={configDotenv:Aje,_configVault:uje,_parseVault:sje,config:fje,decrypt:pje,parse:ije,populate:hje};Cf.exports.configDotenv=bs.configDotenv;Cf.exports._configVault=bs._configVault;Cf.exports._parseVault=bs._parseVault;Cf.exports.config=bs.config;Cf.exports.decrypt=bs.decrypt;Cf.exports.parse=bs.parse;Cf.exports.populate=bs.populate;Cf.exports=bs});var eJ=_((xkt,$V)=>{\"use strict\";$V.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var id=_((kkt,WT)=>{\"use strict\";var gje=eJ(),tJ=t=>{if(t<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let E=gje(A,...h);p(E),E.then(o,o)},n=(A,p,...h)=>{r<t?a(A,p,...h):e.push(a.bind(null,A,p,...h))},u=(A,...p)=>new Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};WT.exports=tJ;WT.exports.default=tJ});function Wu(t){return`YN${t.toString(10).padStart(4,\"0\")}`}function AS(t){let e=Number(t.slice(2));if(typeof wr[e]>\"u\")throw new Error(`Unknown message name: \"${t}\"`);return e}var wr,fS=Et(()=>{wr=(Oe=>(Oe[Oe.UNNAMED=0]=\"UNNAMED\",Oe[Oe.EXCEPTION=1]=\"EXCEPTION\",Oe[Oe.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Oe[Oe.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Oe[Oe.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Oe[Oe.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Oe[Oe.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Oe[Oe.MUST_BUILD=7]=\"MUST_BUILD\",Oe[Oe.MUST_REBUILD=8]=\"MUST_REBUILD\",Oe[Oe.BUILD_FAILED=9]=\"BUILD_FAILED\",Oe[Oe.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Oe[Oe.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Oe[Oe.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Oe[Oe.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Oe[Oe.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Oe[Oe.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Oe[Oe.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Oe[Oe.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Oe[Oe.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Oe[Oe.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Oe[Oe.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Oe[Oe.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Oe[Oe.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Oe[Oe.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Oe[Oe.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Oe[Oe.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Oe[Oe.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Oe[Oe.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Oe[Oe.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Oe[Oe.FETCH_FAILED=30]=\"FETCH_FAILED\",Oe[Oe.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Oe[Oe.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Oe[Oe.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Oe[Oe.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Oe[Oe.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Oe[Oe.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Oe[Oe.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Oe[Oe.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Oe[Oe.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Oe[Oe.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Oe[Oe.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Oe[Oe.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Oe[Oe.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Oe[Oe.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Oe[Oe.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Oe[Oe.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Oe[Oe.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Oe[Oe.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Oe[Oe.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Oe[Oe.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Oe[Oe.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Oe[Oe.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Oe[Oe.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Oe[Oe.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Oe[Oe.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Oe[Oe.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Oe[Oe.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Oe[Oe.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Oe[Oe.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Oe[Oe.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Oe[Oe.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Oe[Oe.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Oe[Oe.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Oe[Oe.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Oe[Oe.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Oe[Oe.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Oe[Oe.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Oe[Oe.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Oe[Oe.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Oe[Oe.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Oe[Oe.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Oe[Oe.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Oe[Oe.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Oe[Oe.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Oe[Oe.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Oe[Oe.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Oe[Oe.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Oe[Oe.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Oe[Oe.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Oe[Oe.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Oe[Oe.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Oe[Oe.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Oe[Oe.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Oe[Oe.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Oe[Oe.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Oe[Oe.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Oe[Oe.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Oe[Oe.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Oe[Oe.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Oe))(wr||{})});var gI=_((Fkt,rJ)=>{var dje=\"2.0.0\",mje=Number.MAX_SAFE_INTEGER||9007199254740991,yje=16,Eje=256-6,Cje=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];rJ.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:yje,MAX_SAFE_BUILD_LENGTH:Eje,MAX_SAFE_INTEGER:mje,RELEASE_TYPES:Cje,SEMVER_SPEC_VERSION:dje,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var dI=_((Rkt,nJ)=>{var wje=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error(\"SEMVER\",...t):()=>{};nJ.exports=wje});var vy=_((wf,iJ)=>{var{MAX_SAFE_COMPONENT_LENGTH:KT,MAX_SAFE_BUILD_LENGTH:Ije,MAX_LENGTH:Bje}=gI(),vje=dI();wf=iJ.exports={};var Dje=wf.re=[],Sje=wf.safeRe=[],lr=wf.src=[],cr=wf.t={},Pje=0,VT=\"[a-zA-Z0-9-]\",bje=[[\"\\\\s\",1],[\"\\\\d\",Bje],[VT,Ije]],xje=t=>{for(let[e,r]of bje)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let o=xje(e),a=Pje++;vje(t,a,e),cr[t]=a,lr[a]=e,Dje[a]=new RegExp(e,r?\"g\":void 0),Sje[a]=new RegExp(o,r?\"g\":void 0)};Jr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Jr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Jr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${VT}*`);Jr(\"MAINVERSION\",`(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})`);Jr(\"MAINVERSIONLOOSE\",`(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})`);Jr(\"PRERELEASEIDENTIFIER\",`(?:${lr[cr.NUMERICIDENTIFIER]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${lr[cr.NUMERICIDENTIFIERLOOSE]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASE\",`(?:-(${lr[cr.PRERELEASEIDENTIFIER]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIER]})*))`);Jr(\"PRERELEASELOOSE\",`(?:-?(${lr[cr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr(\"BUILDIDENTIFIER\",`${VT}+`);Jr(\"BUILD\",`(?:\\\\+(${lr[cr.BUILDIDENTIFIER]}(?:\\\\.${lr[cr.BUILDIDENTIFIER]})*))`);Jr(\"FULLPLAIN\",`v?${lr[cr.MAINVERSION]}${lr[cr.PRERELEASE]}?${lr[cr.BUILD]}?`);Jr(\"FULL\",`^${lr[cr.FULLPLAIN]}$`);Jr(\"LOOSEPLAIN\",`[v=\\\\s]*${lr[cr.MAINVERSIONLOOSE]}${lr[cr.PRERELEASELOOSE]}?${lr[cr.BUILD]}?`);Jr(\"LOOSE\",`^${lr[cr.LOOSEPLAIN]}$`);Jr(\"GTLT\",\"((?:<|>)?=?)\");Jr(\"XRANGEIDENTIFIERLOOSE\",`${lr[cr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Jr(\"XRANGEIDENTIFIER\",`${lr[cr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Jr(\"XRANGEPLAIN\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:${lr[cr.PRERELEASE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:${lr[cr.PRERELEASELOOSE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAIN]}$`);Jr(\"XRANGELOOSE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${KT}})(?:\\\\.(\\\\d{1,${KT}}))?(?:\\\\.(\\\\d{1,${KT}}))?(?:$|[^\\\\d])`);Jr(\"COERCERTL\",lr[cr.COERCE],!0);Jr(\"LONETILDE\",\"(?:~>?)\");Jr(\"TILDETRIM\",`(\\\\s*)${lr[cr.LONETILDE]}\\\\s+`,!0);wf.tildeTrimReplace=\"$1~\";Jr(\"TILDE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"TILDELOOSE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"LONECARET\",\"(?:\\\\^)\");Jr(\"CARETTRIM\",`(\\\\s*)${lr[cr.LONECARET]}\\\\s+`,!0);wf.caretTrimReplace=\"$1^\";Jr(\"CARET\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"CARETLOOSE\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COMPARATORLOOSE\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]})$|^$`);Jr(\"COMPARATOR\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.FULLPLAIN]})$|^$`);Jr(\"COMPARATORTRIM\",`(\\\\s*)${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]}|${lr[cr.XRANGEPLAIN]})`,!0);wf.comparatorTrimReplace=\"$1$2$3\";Jr(\"HYPHENRANGE\",`^\\\\s*(${lr[cr.XRANGEPLAIN]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAIN]})\\\\s*$`);Jr(\"HYPHENRANGELOOSE\",`^\\\\s*(${lr[cr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAINLOOSE]})\\\\s*$`);Jr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Jr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Jr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var pS=_((Tkt,sJ)=>{var kje=Object.freeze({loose:!0}),Qje=Object.freeze({}),Fje=t=>t?typeof t!=\"object\"?kje:t:Qje;sJ.exports=Fje});var JT=_((Nkt,lJ)=>{var oJ=/^[0-9]+$/,aJ=(t,e)=>{let r=oJ.test(t),o=oJ.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:t<e?-1:1},Rje=(t,e)=>aJ(e,t);lJ.exports={compareIdentifiers:aJ,rcompareIdentifiers:Rje}});var So=_((Lkt,fJ)=>{var hS=dI(),{MAX_LENGTH:cJ,MAX_SAFE_INTEGER:gS}=gI(),{safeRe:uJ,t:AJ}=vy(),Tje=pS(),{compareIdentifiers:Dy}=JT(),tl=class{constructor(e,r){if(r=Tje(r),e instanceof tl){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>cJ)throw new TypeError(`version is longer than ${cJ} characters`);hS(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?uJ[AJ.LOOSE]:uJ[AJ.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>gS||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>gS||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>gS||this.patch<0)throw new TypeError(\"Invalid patch version\");o[4]?this.prerelease=o[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<gS)return n}return a}):this.prerelease=[],this.build=o[5]?o[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(hS(\"SemVer.compare\",this.version,this.options,e),!(e instanceof tl)){if(typeof e==\"string\"&&e===this.version)return 0;e=new tl(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof tl||(e=new tl(e,this.options)),Dy(this.major,e.major)||Dy(this.minor,e.minor)||Dy(this.patch,e.patch)}comparePre(e){if(e instanceof tl||(e=new tl(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 o=this.prerelease[r],a=e.prerelease[r];if(hS(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Dy(o,a)}while(++r)}compareBuild(e){e instanceof tl||(e=new tl(e,this.options));let r=0;do{let o=this.build[r],a=e.build[r];if(hS(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Dy(o,a)}while(++r)}inc(e,r,o){switch(e){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,o);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,o);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);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(o)?1:0;if(!r&&o===!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(\".\")&&o===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];o===!1&&(n=[r]),Dy(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}};fJ.exports=tl});var sd=_((Okt,hJ)=>{var pJ=So(),Nje=(t,e,r=!1)=>{if(t instanceof pJ)return t;try{return new pJ(t,e)}catch(o){if(!r)return null;throw o}};hJ.exports=Nje});var dJ=_((Mkt,gJ)=>{var Lje=sd(),Oje=(t,e)=>{let r=Lje(t,e);return r?r.version:null};gJ.exports=Oje});var yJ=_((Ukt,mJ)=>{var Mje=sd(),Uje=(t,e)=>{let r=Mje(t.trim().replace(/^[=v]+/,\"\"),e);return r?r.version:null};mJ.exports=Uje});var wJ=_((_kt,CJ)=>{var EJ=So(),_je=(t,e,r,o,a)=>{typeof r==\"string\"&&(a=o,o=r,r=void 0);try{return new EJ(t instanceof EJ?t.version:t,r).inc(e,o,a).version}catch{return null}};CJ.exports=_je});var vJ=_((Hkt,BJ)=>{var IJ=sd(),Hje=(t,e)=>{let r=IJ(t,null,!0),o=IJ(e,null,!0),a=r.compare(o);if(a===0)return null;let n=a>0,u=n?r:o,A=n?o:r,p=!!u.prerelease.length;if(!!A.prerelease.length&&!p)return!A.patch&&!A.minor?\"major\":u.patch?\"patch\":u.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==o.major?E+\"major\":r.minor!==o.minor?E+\"minor\":r.patch!==o.patch?E+\"patch\":\"prerelease\"};BJ.exports=Hje});var SJ=_((qkt,DJ)=>{var qje=So(),jje=(t,e)=>new qje(t,e).major;DJ.exports=jje});var bJ=_((jkt,PJ)=>{var Gje=So(),Yje=(t,e)=>new Gje(t,e).minor;PJ.exports=Yje});var kJ=_((Gkt,xJ)=>{var Wje=So(),Kje=(t,e)=>new Wje(t,e).patch;xJ.exports=Kje});var FJ=_((Ykt,QJ)=>{var Vje=sd(),Jje=(t,e)=>{let r=Vje(t,e);return r&&r.prerelease.length?r.prerelease:null};QJ.exports=Jje});var Ll=_((Wkt,TJ)=>{var RJ=So(),zje=(t,e,r)=>new RJ(t,r).compare(new RJ(e,r));TJ.exports=zje});var LJ=_((Kkt,NJ)=>{var Xje=Ll(),Zje=(t,e,r)=>Xje(e,t,r);NJ.exports=Zje});var MJ=_((Vkt,OJ)=>{var $je=Ll(),eGe=(t,e)=>$je(t,e,!0);OJ.exports=eGe});var dS=_((Jkt,_J)=>{var UJ=So(),tGe=(t,e,r)=>{let o=new UJ(t,r),a=new UJ(e,r);return o.compare(a)||o.compareBuild(a)};_J.exports=tGe});var qJ=_((zkt,HJ)=>{var rGe=dS(),nGe=(t,e)=>t.sort((r,o)=>rGe(r,o,e));HJ.exports=nGe});var GJ=_((Xkt,jJ)=>{var iGe=dS(),sGe=(t,e)=>t.sort((r,o)=>iGe(o,r,e));jJ.exports=sGe});var mI=_((Zkt,YJ)=>{var oGe=Ll(),aGe=(t,e,r)=>oGe(t,e,r)>0;YJ.exports=aGe});var mS=_(($kt,WJ)=>{var lGe=Ll(),cGe=(t,e,r)=>lGe(t,e,r)<0;WJ.exports=cGe});var zT=_((eQt,KJ)=>{var uGe=Ll(),AGe=(t,e,r)=>uGe(t,e,r)===0;KJ.exports=AGe});var XT=_((tQt,VJ)=>{var fGe=Ll(),pGe=(t,e,r)=>fGe(t,e,r)!==0;VJ.exports=pGe});var yS=_((rQt,JJ)=>{var hGe=Ll(),gGe=(t,e,r)=>hGe(t,e,r)>=0;JJ.exports=gGe});var ES=_((nQt,zJ)=>{var dGe=Ll(),mGe=(t,e,r)=>dGe(t,e,r)<=0;zJ.exports=mGe});var ZT=_((iQt,XJ)=>{var yGe=zT(),EGe=XT(),CGe=mI(),wGe=yS(),IGe=mS(),BGe=ES(),vGe=(t,e,r,o)=>{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 yGe(t,r,o);case\"!=\":return EGe(t,r,o);case\">\":return CGe(t,r,o);case\">=\":return wGe(t,r,o);case\"<\":return IGe(t,r,o);case\"<=\":return BGe(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};XJ.exports=vGe});var $J=_((sQt,ZJ)=>{var DGe=So(),SGe=sd(),{safeRe:CS,t:wS}=vy(),PGe=(t,e)=>{if(t instanceof DGe)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(CS[wS.COERCE]);else{let o;for(;(o=CS[wS.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),CS[wS.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;CS[wS.COERCERTL].lastIndex=-1}return r===null?null:SGe(`${r[2]}.${r[3]||\"0\"}.${r[4]||\"0\"}`,e)};ZJ.exports=PGe});var tz=_((oQt,ez)=>{\"use strict\";ez.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var IS=_((aQt,rz)=>{\"use strict\";rz.exports=Cn;Cn.Node=od;Cn.create=Cn;function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),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,o=arguments.length;r<o;r++)e.push(arguments[r]);return e}Cn.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};Cn.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++}};Cn.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++}};Cn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)xGe(this,arguments[t]);return this.length};Cn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)kGe(this,arguments[t]);return this.length};Cn.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}};Cn.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}};Cn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,o=0;r!==null;o++)t.call(e,r.value,o,this),r=r.next};Cn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,o=this.length-1;r!==null;o--)t.call(e,r.value,o,this),r=r.prev};Cn.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};Cn.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};Cn.prototype.map=function(t,e){e=e||this;for(var r=new Cn,o=this.head;o!==null;)r.push(t.call(e,o.value,this)),o=o.next;return r};Cn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new Cn,o=this.tail;o!==null;)r.push(t.call(e,o.value,this)),o=o.prev;return r};Cn.prototype.reduce=function(t,e){var r,o=this.head;if(arguments.length>1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};Cn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=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;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};Cn.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};Cn.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};Cn.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 Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(;a!==null&&o<e;o++,a=a.next)r.push(a.value);return r};Cn.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 Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};Cn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(var n=[],o=0;a&&o<e;o++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var o=0;o<r.length;o++)a=bGe(this,a,r[o]);return n};Cn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var o=r.prev;r.prev=r.next,r.next=o}return this.head=e,this.tail=t,this};function bGe(t,e,r){var o=e===t.head?new od(r,null,e,t):new od(r,e,e.next,t);return o.next===null&&(t.tail=o),o.prev===null&&(t.head=o),t.length++,o}function xGe(t,e){t.tail=new od(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function kGe(t,e){t.head=new od(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function od(t,e,r,o){if(!(this instanceof od))return new od(t,e,r,o);this.list=o,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{tz()(Cn)}catch{}});var az=_((lQt,oz)=>{\"use strict\";var QGe=IS(),ad=Symbol(\"max\"),Bf=Symbol(\"length\"),Sy=Symbol(\"lengthCalculator\"),EI=Symbol(\"allowStale\"),ld=Symbol(\"maxAge\"),If=Symbol(\"dispose\"),nz=Symbol(\"noDisposeOnSet\"),xs=Symbol(\"lruList\"),Mc=Symbol(\"cache\"),sz=Symbol(\"updateAgeOnGet\"),$T=()=>1,tN=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[ad]=e.max||1/0,o=e.length||$T;if(this[Sy]=typeof o!=\"function\"?$T:o,this[EI]=e.stale||!1,e.maxAge&&typeof e.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[ld]=e.maxAge||0,this[If]=e.dispose,this[nz]=e.noDisposeOnSet||!1,this[sz]=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[ad]=e||1/0,yI(this)}get max(){return this[ad]}set allowStale(e){this[EI]=!!e}get allowStale(){return this[EI]}set maxAge(e){if(typeof e!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[ld]=e,yI(this)}get maxAge(){return this[ld]}set lengthCalculator(e){typeof e!=\"function\"&&(e=$T),e!==this[Sy]&&(this[Sy]=e,this[Bf]=0,this[xs].forEach(r=>{r.length=this[Sy](r.value,r.key),this[Bf]+=r.length})),yI(this)}get lengthCalculator(){return this[Sy]}get length(){return this[Bf]}get itemCount(){return this[xs].length}rforEach(e,r){r=r||this;for(let o=this[xs].tail;o!==null;){let a=o.prev;iz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[xs].head;o!==null;){let a=o.next;iz(this,e,o,r),o=a}}keys(){return this[xs].toArray().map(e=>e.key)}values(){return this[xs].toArray().map(e=>e.value)}reset(){this[If]&&this[xs]&&this[xs].length&&this[xs].forEach(e=>this[If](e.key,e.value)),this[Mc]=new Map,this[xs]=new QGe,this[Bf]=0}dump(){return this[xs].map(e=>BS(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[xs]}set(e,r,o){if(o=o||this[ld],o&&typeof o!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=o?Date.now():0,n=this[Sy](r,e);if(this[Mc].has(e)){if(n>this[ad])return Py(this,this[Mc].get(e)),!1;let p=this[Mc].get(e).value;return this[If]&&(this[nz]||this[If](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[Bf]+=n-p.length,p.length=n,this.get(e),yI(this),!0}let u=new rN(e,r,n,a,o);return u.length>this[ad]?(this[If]&&this[If](e,r),!1):(this[Bf]+=u.length,this[xs].unshift(u),this[Mc].set(e,this[xs].head),yI(this),!0)}has(e){if(!this[Mc].has(e))return!1;let r=this[Mc].get(e).value;return!BS(this,r)}get(e){return eN(this,e,!0)}peek(e){return eN(this,e,!1)}pop(){let e=this[xs].tail;return e?(Py(this,e),e.value):null}del(e){Py(this,this[Mc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[Mc].forEach((e,r)=>eN(this,r,!1))}},eN=(t,e,r)=>{let o=t[Mc].get(e);if(o){let a=o.value;if(BS(t,a)){if(Py(t,o),!t[EI])return}else r&&(t[sz]&&(o.value.now=Date.now()),t[xs].unshiftNode(o));return a.value}},BS=(t,e)=>{if(!e||!e.maxAge&&!t[ld])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[ld]&&r>t[ld]},yI=t=>{if(t[Bf]>t[ad])for(let e=t[xs].tail;t[Bf]>t[ad]&&e!==null;){let r=e.prev;Py(t,e),e=r}},Py=(t,e)=>{if(e){let r=e.value;t[If]&&t[If](r.key,r.value),t[Bf]-=r.length,t[Mc].delete(r.key),t[xs].removeNode(e)}},rN=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},iz=(t,e,r,o)=>{let a=r.value;BS(t,a)&&(Py(t,r),t[EI]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};oz.exports=tN});var Ol=_((cQt,Az)=>{var cd=class{constructor(e,r){if(r=RGe(r),e instanceof cd)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new cd(e.raw,r);if(e instanceof nN)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(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!cz(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&_Ge(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 o=((this.options.includePrerelease&&MGe)|(this.options.loose&&UGe))+\":\"+e,a=lz.get(o);if(a)return a;let n=this.options.loose,u=n?Da[zo.HYPHENRANGELOOSE]:Da[zo.HYPHENRANGE];e=e.replace(u,zGe(this.options.includePrerelease)),ci(\"hyphen replace\",e),e=e.replace(Da[zo.COMPARATORTRIM],NGe),ci(\"comparator trim\",e),e=e.replace(Da[zo.TILDETRIM],LGe),ci(\"tilde trim\",e),e=e.replace(Da[zo.CARETTRIM],OGe),ci(\"caret trim\",e);let A=e.split(\" \").map(I=>HGe(I,this.options)).join(\" \").split(/\\s+/).map(I=>JGe(I,this.options));n&&(A=A.filter(I=>(ci(\"loose invalid filter\",I,this.options),!!I.match(Da[zo.COMPARATORLOOSE])))),ci(\"range list\",A);let p=new Map,h=A.map(I=>new nN(I,this.options));for(let I of h){if(cz(I))return[I];p.set(I.value,I)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return lz.set(o,E),E}intersects(e,r){if(!(e instanceof cd))throw new TypeError(\"a Range is required\");return this.set.some(o=>uz(o,r)&&e.set.some(a=>uz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e==\"string\")try{e=new TGe(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(XGe(this.set[r],e,this.options))return!0;return!1}};Az.exports=cd;var FGe=az(),lz=new FGe({max:1e3}),RGe=pS(),nN=CI(),ci=dI(),TGe=So(),{safeRe:Da,t:zo,comparatorTrimReplace:NGe,tildeTrimReplace:LGe,caretTrimReplace:OGe}=vy(),{FLAG_INCLUDE_PRERELEASE:MGe,FLAG_LOOSE:UGe}=gI(),cz=t=>t.value===\"<0.0.0-0\",_Ge=t=>t.value===\"\",uz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},HGe=(t,e)=>(ci(\"comp\",t,e),t=GGe(t,e),ci(\"caret\",t),t=qGe(t,e),ci(\"tildes\",t),t=WGe(t,e),ci(\"xrange\",t),t=VGe(t,e),ci(\"stars\",t),t),Xo=t=>!t||t.toLowerCase()===\"x\"||t===\"*\",qGe=(t,e)=>t.trim().split(/\\s+/).map(r=>jGe(r,e)).join(\" \"),jGe=(t,e)=>{let r=e.loose?Da[zo.TILDELOOSE]:Da[zo.TILDE];return t.replace(r,(o,a,n,u,A)=>{ci(\"tilde\",t,o,a,n,u,A);let p;return Xo(a)?p=\"\":Xo(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Xo(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(ci(\"replaceTilde pr\",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,ci(\"tilde return\",p),p})},GGe=(t,e)=>t.trim().split(/\\s+/).map(r=>YGe(r,e)).join(\" \"),YGe=(t,e)=>{ci(\"caret\",t,e);let r=e.loose?Da[zo.CARETLOOSE]:Da[zo.CARET],o=e.includePrerelease?\"-0\":\"\";return t.replace(r,(a,n,u,A,p)=>{ci(\"caret\",t,a,n,u,A,p);let h;return Xo(n)?h=\"\":Xo(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Xo(A)?n===\"0\"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(ci(\"replaceCaret pr\",p),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(ci(\"no pr\"),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),ci(\"caret return\",h),h})},WGe=(t,e)=>(ci(\"replaceXRanges\",t,e),t.split(/\\s+/).map(r=>KGe(r,e)).join(\" \")),KGe=(t,e)=>{t=t.trim();let r=e.loose?Da[zo.XRANGELOOSE]:Da[zo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{ci(\"xRange\",t,o,a,n,u,A,p);let h=Xo(n),E=h||Xo(u),I=E||Xo(A),v=I;return a===\"=\"&&v&&(a=\"\"),p=e.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?o=\"<0.0.0-0\":o=\"*\":a&&v?(E&&(u=0),A=0,a===\">\"?(a=\">=\",E?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:u=+u+1),a===\"<\"&&(p=\"-0\"),o=`${a+n}.${u}.${A}${p}`):E?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:I&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),ci(\"xRange return\",o),o})},VGe=(t,e)=>(ci(\"replaceStars\",t,e),t.trim().replace(Da[zo.STAR],\"\")),JGe=(t,e)=>(ci(\"replaceGTE0\",t,e),t.trim().replace(Da[e.includePrerelease?zo.GTE0PRE:zo.GTE0],\"\")),zGe=t=>(e,r,o,a,n,u,A,p,h,E,I,v,x)=>(Xo(o)?r=\"\":Xo(a)?r=`>=${o}.0.0${t?\"-0\":\"\"}`:Xo(n)?r=`>=${o}.${a}.0${t?\"-0\":\"\"}`:u?r=`>=${r}`:r=`>=${r}${t?\"-0\":\"\"}`,Xo(h)?p=\"\":Xo(E)?p=`<${+h+1}.0.0-0`:Xo(I)?p=`<${h}.${+E+1}.0-0`:v?p=`<=${h}.${E}.${I}-${v}`:t?p=`<${h}.${E}.${+I+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),XGe=(t,e,r)=>{for(let o=0;o<t.length;o++)if(!t[o].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let o=0;o<t.length;o++)if(ci(t[o].semver),t[o].semver!==nN.ANY&&t[o].semver.prerelease.length>0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var CI=_((uQt,mz)=>{var wI=Symbol(\"SemVer ANY\"),by=class{static get ANY(){return wI}constructor(e,r){if(r=fz(r),e instanceof by){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\\s+/).join(\" \"),sN(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===wI?this.value=\"\":this.value=this.operator+this.semver.version,sN(\"comp\",this)}parse(e){let r=this.options.loose?pz[hz.COMPARATORLOOSE]:pz[hz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),o[2]?this.semver=new gz(o[2],this.options.loose):this.semver=wI}toString(){return this.value}test(e){if(sN(\"Comparator.test\",e,this.options.loose),this.semver===wI||e===wI)return!0;if(typeof e==\"string\")try{e=new gz(e,this.options)}catch{return!1}return iN(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof by))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new dz(e.value,r).test(this.value):e.operator===\"\"?e.value===\"\"?!0:new dz(this.value,r).test(e.semver):(r=fz(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(\"=\")||iN(this.semver,\"<\",e.semver,r)&&this.operator.startsWith(\">\")&&e.operator.startsWith(\"<\")||iN(this.semver,\">\",e.semver,r)&&this.operator.startsWith(\"<\")&&e.operator.startsWith(\">\")))}};mz.exports=by;var fz=pS(),{safeRe:pz,t:hz}=vy(),iN=ZT(),sN=dI(),gz=So(),dz=Ol()});var II=_((AQt,yz)=>{var ZGe=Ol(),$Ge=(t,e,r)=>{try{e=new ZGe(e,r)}catch{return!1}return e.test(t)};yz.exports=$Ge});var Cz=_((fQt,Ez)=>{var e5e=Ol(),t5e=(t,e)=>new e5e(t,e).set.map(r=>r.map(o=>o.value).join(\" \").trim().split(\" \"));Ez.exports=t5e});var Iz=_((pQt,wz)=>{var r5e=So(),n5e=Ol(),i5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new n5e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new r5e(o,r))}),o};wz.exports=i5e});var vz=_((hQt,Bz)=>{var s5e=So(),o5e=Ol(),a5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new o5e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new s5e(o,r))}),o};Bz.exports=a5e});var Pz=_((gQt,Sz)=>{var oN=So(),l5e=Ol(),Dz=mI(),c5e=(t,e)=>{t=new l5e(t,e);let r=new oN(\"0.0.0\");if(t.test(r)||(r=new oN(\"0.0.0-0\"),t.test(r)))return r;r=null;for(let o=0;o<t.set.length;++o){let a=t.set[o],n=null;a.forEach(u=>{let A=new oN(u.semver.version);switch(u.operator){case\">\":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case\"\":case\">=\":(!n||Dz(A,n))&&(n=A);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Dz(r,n))&&(r=n)}return r&&t.test(r)?r:null};Sz.exports=c5e});var xz=_((dQt,bz)=>{var u5e=Ol(),A5e=(t,e)=>{try{return new u5e(t,e).range||\"*\"}catch{return null}};bz.exports=A5e});var vS=_((mQt,Rz)=>{var f5e=So(),Fz=CI(),{ANY:p5e}=Fz,h5e=Ol(),g5e=II(),kz=mI(),Qz=mS(),d5e=ES(),m5e=yS(),y5e=(t,e,r,o)=>{t=new f5e(t,o),e=new h5e(e,o);let a,n,u,A,p;switch(r){case\">\":a=kz,n=d5e,u=Qz,A=\">\",p=\">=\";break;case\"<\":a=Qz,n=m5e,u=kz,A=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(g5e(t,e,o))return!1;for(let h=0;h<e.set.length;++h){let E=e.set[h],I=null,v=null;if(E.forEach(x=>{x.semver===p5e&&(x=new Fz(\">=0.0.0\")),I=I||x,v=v||x,a(x.semver,I.semver,o)?I=x:u(x.semver,v.semver,o)&&(v=x)}),I.operator===A||I.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};Rz.exports=y5e});var Nz=_((yQt,Tz)=>{var E5e=vS(),C5e=(t,e,r)=>E5e(t,e,\">\",r);Tz.exports=C5e});var Oz=_((EQt,Lz)=>{var w5e=vS(),I5e=(t,e,r)=>w5e(t,e,\"<\",r);Lz.exports=I5e});var _z=_((CQt,Uz)=>{var Mz=Ol(),B5e=(t,e,r)=>(t=new Mz(t,r),e=new Mz(e,r),t.intersects(e,r));Uz.exports=B5e});var qz=_((wQt,Hz)=>{var v5e=II(),D5e=Ll();Hz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((E,I)=>D5e(E,I,r));for(let E of u)v5e(E,e,r)?(n=E,a||(a=E)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[E,I]of o)E===I?A.push(E):!I&&E===u[0]?A.push(\"*\"):I?E===u[0]?A.push(`<=${I}`):A.push(`${E} - ${I}`):A.push(`>=${E}`);let p=A.join(\" || \"),h=typeof e.raw==\"string\"?e.raw:String(e);return p.length<h.length?p:e}});var Vz=_((IQt,Kz)=>{var jz=Ol(),lN=CI(),{ANY:aN}=lN,BI=II(),cN=Ll(),S5e=(t,e,r={})=>{if(t===e)return!0;t=new jz(t,r),e=new jz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=b5e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},P5e=[new lN(\">=0.0.0-0\")],Gz=[new lN(\">=0.0.0\")],b5e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===aN){if(e.length===1&&e[0].semver===aN)return!0;r.includePrerelease?t=P5e:t=Gz}if(e.length===1&&e[0].semver===aN){if(r.includePrerelease)return!0;e=Gz}let o=new Set,a,n;for(let x of t)x.operator===\">\"||x.operator===\">=\"?a=Yz(a,x,r):x.operator===\"<\"||x.operator===\"<=\"?n=Wz(n,x,r):o.add(x.semver);if(o.size>1)return null;let u;if(a&&n){if(u=cN(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let x of o){if(a&&!BI(x,String(a),r)||n&&!BI(x,String(n),r))return null;for(let C of e)if(!BI(x,String(C),r))return!1;return!0}let A,p,h,E,I=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;I&&I.prerelease.length===1&&n.operator===\"<\"&&I.prerelease[0]===0&&(I=!1);for(let x of e){if(E=E||x.operator===\">\"||x.operator===\">=\",h=h||x.operator===\"<\"||x.operator===\"<=\",a){if(v&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===v.major&&x.semver.minor===v.minor&&x.semver.patch===v.patch&&(v=!1),x.operator===\">\"||x.operator===\">=\"){if(A=Yz(a,x,r),A===x&&A!==a)return!1}else if(a.operator===\">=\"&&!BI(a.semver,String(x),r))return!1}if(n){if(I&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===I.major&&x.semver.minor===I.minor&&x.semver.patch===I.patch&&(I=!1),x.operator===\"<\"||x.operator===\"<=\"){if(p=Wz(n,x,r),p===x&&p!==n)return!1}else if(n.operator===\"<=\"&&!BI(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&E&&!a&&u!==0||v||I)},Yz=(t,e,r)=>{if(!t)return e;let o=cN(t.semver,e.semver,r);return o>0?t:o<0||e.operator===\">\"&&t.operator===\">=\"?e:t},Wz=(t,e,r)=>{if(!t)return e;let o=cN(t.semver,e.semver,r);return o<0?t:o>0||e.operator===\"<\"&&t.operator===\"<=\"?e:t};Kz.exports=S5e});var zn=_((BQt,Xz)=>{var uN=vy(),Jz=gI(),x5e=So(),zz=JT(),k5e=sd(),Q5e=dJ(),F5e=yJ(),R5e=wJ(),T5e=vJ(),N5e=SJ(),L5e=bJ(),O5e=kJ(),M5e=FJ(),U5e=Ll(),_5e=LJ(),H5e=MJ(),q5e=dS(),j5e=qJ(),G5e=GJ(),Y5e=mI(),W5e=mS(),K5e=zT(),V5e=XT(),J5e=yS(),z5e=ES(),X5e=ZT(),Z5e=$J(),$5e=CI(),e9e=Ol(),t9e=II(),r9e=Cz(),n9e=Iz(),i9e=vz(),s9e=Pz(),o9e=xz(),a9e=vS(),l9e=Nz(),c9e=Oz(),u9e=_z(),A9e=qz(),f9e=Vz();Xz.exports={parse:k5e,valid:Q5e,clean:F5e,inc:R5e,diff:T5e,major:N5e,minor:L5e,patch:O5e,prerelease:M5e,compare:U5e,rcompare:_5e,compareLoose:H5e,compareBuild:q5e,sort:j5e,rsort:G5e,gt:Y5e,lt:W5e,eq:K5e,neq:V5e,gte:J5e,lte:z5e,cmp:X5e,coerce:Z5e,Comparator:$5e,Range:e9e,satisfies:t9e,toComparators:r9e,maxSatisfying:n9e,minSatisfying:i9e,minVersion:s9e,validRange:o9e,outside:a9e,gtr:l9e,ltr:c9e,intersects:u9e,simplifyRange:A9e,subset:f9e,SemVer:x5e,re:uN.re,src:uN.src,tokens:uN.t,SEMVER_SPEC_VERSION:Jz.SEMVER_SPEC_VERSION,RELEASE_TYPES:Jz.RELEASE_TYPES,compareIdentifiers:zz.compareIdentifiers,rcompareIdentifiers:zz.rcompareIdentifiers}});var $z=_((vQt,Zz)=>{\"use strict\";function p9e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ud(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ud)}p9e(ud,Error);ud.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(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\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}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 \"+A(t)+\" but \"+p(e)+\" found.\"};function h9e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n=\"|\",u=Re(\"|\",!1),A=\"&\",p=Re(\"&\",!1),h=\"^\",E=Re(\"^\",!1),I=function(Z,ie){return!!ie.reduce((Pe,Ne)=>{switch(Ne[1]){case\"|\":return Pe|Ne[3];case\"&\":return Pe&Ne[3];case\"^\":return Pe^Ne[3]}},Z)},v=\"!\",x=Re(\"!\",!1),C=function(Z){return!Z},R=\"(\",L=Re(\"(\",!1),U=\")\",J=Re(\")\",!1),te=function(Z){return Z},ae=/^[^ \\t\\n\\r()!|&\\^]/,fe=ke([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),ce=function(Z){return e.queryPattern.test(Z)},me=function(Z){return e.checkFn(Z)},he=Te(\"whitespace\"),Be=/^[ \\t\\n\\r]/,we=ke([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,Ee=0,Se=[{line:1,column:1}],le=0,ne=[],ee=0,Ie;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function Fe(){return t.substring(Ee,g)}function At(){return qe(Ee,g)}function H(Z,ie){throw ie=ie!==void 0?ie:qe(Ee,g),P([Te(Z)],t.substring(Ee,g),ie)}function at(Z,ie){throw ie=ie!==void 0?ie:qe(Ee,g),w(Z,ie)}function Re(Z,ie){return{type:\"literal\",text:Z,ignoreCase:ie}}function ke(Z,ie,Pe){return{type:\"class\",parts:Z,inverted:ie,ignoreCase:Pe}}function xe(){return{type:\"any\"}}function He(){return{type:\"end\"}}function Te(Z){return{type:\"other\",description:Z}}function Je(Z){var ie=Se[Z],Pe;if(ie)return ie;for(Pe=Z-1;!Se[Pe];)Pe--;for(ie=Se[Pe],ie={line:ie.line,column:ie.column};Pe<Z;)t.charCodeAt(Pe)===10?(ie.line++,ie.column=1):ie.column++,Pe++;return Se[Z]=ie,ie}function qe(Z,ie){var Pe=Je(Z),Ne=Je(ie);return{start:{offset:Z,line:Pe.line,column:Pe.column},end:{offset:ie,line:Ne.line,column:Ne.column}}}function b(Z){g<le||(g>le&&(le=g,ne=[]),ne.push(Z))}function w(Z,ie){return new ud(Z,null,null,ie)}function P(Z,ie,Pe){return new ud(ud.buildMessage(Z,ie),Z,ie,Pe)}function y(){var Z,ie,Pe,Ne,ot,dt,jt,$t;if(Z=g,ie=F(),ie!==r){for(Pe=[],Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(jt=X(),jt!==r?($t=F(),$t!==r?(ot=[ot,dt,jt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Ne!==r;)Pe.push(Ne),Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(jt=X(),jt!==r?($t=F(),$t!==r?(ot=[ot,dt,jt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Pe!==r?(Ee=Z,ie=I(ie,Pe),Z=ie):(g=Z,Z=r)}else g=Z,Z=r;return Z}function F(){var Z,ie,Pe,Ne,ot,dt;return Z=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,ee===0&&b(x)),ie!==r?(Pe=F(),Pe!==r?(Ee=Z,ie=C(Pe),Z=ie):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=g,t.charCodeAt(g)===40?(ie=R,g++):(ie=r,ee===0&&b(L)),ie!==r?(Pe=X(),Pe!==r?(Ne=y(),Ne!==r?(ot=X(),ot!==r?(t.charCodeAt(g)===41?(dt=U,g++):(dt=r,ee===0&&b(J)),dt!==r?(Ee=Z,ie=te(Ne),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=z())),Z}function z(){var Z,ie,Pe,Ne,ot;if(Z=g,ie=X(),ie!==r){if(Pe=g,Ne=[],ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe)),ot!==r)for(;ot!==r;)Ne.push(ot),ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe));else Ne=r;Ne!==r?Pe=t.substring(Pe,g):Pe=Ne,Pe!==r?(Ee=g,Ne=ce(Pe),Ne?Ne=void 0:Ne=r,Ne!==r?(Ee=Z,ie=me(Pe),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)}else g=Z,Z=r;return Z}function X(){var Z,ie;for(ee++,Z=[],Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));ie!==r;)Z.push(ie),Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));return ee--,Z===r&&(ie=r,ee===0&&b(he)),Z}if(Ie=a(),Ie!==r&&g===t.length)return Ie;throw Ie!==r&&g<t.length&&b(He()),P(ne,le<t.length?t.charAt(le):null,le<t.length?qe(le,le+1):qe(le,le))}Zz.exports={SyntaxError:ud,parse:h9e}});var eX=_(DS=>{var{parse:g9e}=$z();DS.makeParser=(t=/[a-z]+/)=>(e,r)=>g9e(e,{queryPattern:t,checkFn:r});DS.parse=DS.makeParser()});var rX=_((SQt,tX)=>{\"use strict\";tX.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 AN=_((PQt,iX)=>{var vI=rX(),nX={};for(let t of Object.keys(vI))nX[vI[t]]=t;var Ar={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\"]}};iX.exports=Ar;for(let t of Object.keys(Ar)){if(!(\"channels\"in Ar[t]))throw new Error(\"missing channels property: \"+t);if(!(\"labels\"in Ar[t]))throw new Error(\"missing channel labels property: \"+t);if(Ar[t].labels.length!==Ar[t].channels)throw new Error(\"channel and label counts mismatch: \"+t);let{channels:e,labels:r}=Ar[t];delete Ar[t].channels,delete Ar[t].labels,Object.defineProperty(Ar[t],\"channels\",{value:e}),Object.defineProperty(Ar[t],\"labels\",{value:r})}Ar.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};Ar.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),E=h-Math.min(u,A,p),I=function(v){return(h-v)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=I(u),r=I(A),o=I(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};Ar.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=Ar.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};Ar.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function d9e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Ar.rgb.keyword=function(t){let e=nX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(vI)){let n=vI[a],u=d9e(t,n);u<r&&(r=u,o=a)}return o};Ar.keyword.rgb=function(t){return vI[t]};Ar.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,o=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,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};Ar.rgb.lab=function(t){let e=Ar.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};Ar.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-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?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};Ar.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};Ar.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};Ar.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};Ar.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,E,I;switch(u){default:case 6:case 0:h=A,E=p,I=r;break;case 1:h=p,E=A,I=r;break;case 2:h=r,E=A,I=p;break;case 3:h=r,E=p,I=A;break;case 4:h=p,E=r,I=A;break;case 5:h=A,E=r,I=p;break}return[h*255,E*255,I*255]};Ar.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};Ar.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*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,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};Ar.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};Ar.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};Ar.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};Ar.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};Ar.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?Ar.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};Ar.hsv.ansi16=function(t){return Ar.rgb.ansi16(Ar.hsv.rgb(t),t[2])};Ar.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?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(o/255*5)};Ar.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,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};Ar.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,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};Ar.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};Ar.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(A=>A+A).join(\"\"));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};Ar.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};Ar.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};Ar.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};Ar.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};Ar.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};Ar.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};Ar.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};Ar.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};Ar.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Ar.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Ar.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Ar.gray.hsl=function(t){return[0,0,t[0]]};Ar.gray.hsv=Ar.gray.hsl;Ar.gray.hwb=function(t){return[0,100,t[0]]};Ar.gray.cmyk=function(t){return[0,0,0,t[0]]};Ar.gray.lab=function(t){return[t[0],0,0]};Ar.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(o.length)+o};Ar.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var oX=_((bQt,sX)=>{var SS=AN();function m9e(){let t={},e=Object.keys(SS);for(let r=e.length,o=0;o<r;o++)t[e[o]]={distance:-1,parent:null};return t}function y9e(t){let e=m9e(),r=[t];for(e[t].distance=0;r.length;){let o=r.pop(),a=Object.keys(SS[o]);for(let n=a.length,u=0;u<n;u++){let A=a[u],p=e[A];p.distance===-1&&(p.distance=e[o].distance+1,p.parent=o,r.unshift(A))}}return e}function E9e(t,e){return function(r){return e(t(r))}}function C9e(t,e){let r=[e[t].parent,t],o=SS[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),o=E9e(SS[e[a].parent][a],o),a=e[a].parent;return o.conversion=r,o}sX.exports=function(t){let e=y9e(t),r={},o=Object.keys(e);for(let a=o.length,n=0;n<a;n++){let u=o[n];e[u].parent!==null&&(r[u]=C9e(u,e))}return r}});var lX=_((xQt,aX)=>{var fN=AN(),w9e=oX(),xy={},I9e=Object.keys(fN);function B9e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return\"conversion\"in t&&(e.conversion=t.conversion),e}function v9e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a==\"object\")for(let n=a.length,u=0;u<n;u++)a[u]=Math.round(a[u]);return a};return\"conversion\"in t&&(e.conversion=t.conversion),e}I9e.forEach(t=>{xy[t]={},Object.defineProperty(xy[t],\"channels\",{value:fN[t].channels}),Object.defineProperty(xy[t],\"labels\",{value:fN[t].labels});let e=w9e(t);Object.keys(e).forEach(o=>{let a=e[o];xy[t][o]=v9e(a),xy[t][o].raw=B9e(a)})});aX.exports=xy});var DI=_((kQt,pX)=>{\"use strict\";var cX=(t,e)=>(...r)=>`\\x1B[${t(...r)+e}m`,uX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};5;${o}m`},AX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},PS=t=>t,fX=(t,e,r)=>[t,e,r],ky=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},pN,Qy=(t,e,r,o)=>{pN===void 0&&(pN=lX());let a=o?10:0,n={};for(let[u,A]of Object.entries(pN)){let p=u===\"ansi16\"?\"ansi\":u;u===e?n[p]=t(r,a):typeof A==\"object\"&&(n[p]=t(A[e],a))}return n};function D9e(){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,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,\"codes\",{value:t,enumerable:!1}),e.color.close=\"\\x1B[39m\",e.bgColor.close=\"\\x1B[49m\",ky(e.color,\"ansi\",()=>Qy(cX,\"ansi16\",PS,!1)),ky(e.color,\"ansi256\",()=>Qy(uX,\"ansi256\",PS,!1)),ky(e.color,\"ansi16m\",()=>Qy(AX,\"rgb\",fX,!1)),ky(e.bgColor,\"ansi\",()=>Qy(cX,\"ansi16\",PS,!0)),ky(e.bgColor,\"ansi256\",()=>Qy(uX,\"ansi256\",PS,!0)),ky(e.bgColor,\"ansi16m\",()=>Qy(AX,\"rgb\",fX,!0)),e}Object.defineProperty(pX,\"exports\",{enumerable:!0,get:D9e})});var gX=_((QQt,hX)=>{\"use strict\";hX.exports=(t,e=process.argv)=>{let r=t.startsWith(\"-\")?\"\":t.length===1?\"-\":\"--\",o=e.indexOf(r+t),a=e.indexOf(\"--\");return o!==-1&&(a===-1||o<a)}});var dN=_((FQt,mX)=>{\"use strict\";var S9e=ve(\"os\"),dX=ve(\"tty\"),Ml=gX(),{env:ls}=process,Jp;Ml(\"no-color\")||Ml(\"no-colors\")||Ml(\"color=false\")||Ml(\"color=never\")?Jp=0:(Ml(\"color\")||Ml(\"colors\")||Ml(\"color=true\")||Ml(\"color=always\"))&&(Jp=1);\"FORCE_COLOR\"in ls&&(ls.FORCE_COLOR===\"true\"?Jp=1:ls.FORCE_COLOR===\"false\"?Jp=0:Jp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function hN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function gN(t,e){if(Jp===0)return 0;if(Ml(\"color=16m\")||Ml(\"color=full\")||Ml(\"color=truecolor\"))return 3;if(Ml(\"color=256\"))return 2;if(t&&!e&&Jp===void 0)return 0;let r=Jp||0;if(ls.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let o=S9e.release().split(\".\");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if(\"CI\"in ls)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(o=>o in ls)||ls.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in ls)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(ls.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in ls)return 1;if(ls.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(ls.TERM_PROGRAM){case\"iTerm.app\":return o>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||\"COLORTERM\"in ls?1:r}function P9e(t){let e=gN(t,t&&t.isTTY);return hN(e)}mX.exports={supportsColor:P9e,stdout:hN(gN(!0,dX.isatty(1))),stderr:hN(gN(!0,dX.isatty(2)))}});var EX=_((RQt,yX)=>{\"use strict\";var b9e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},x9e=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};yX.exports={stringReplaceAll:b9e,stringEncaseCRLFWithFirstIndex:x9e}});var vX=_((TQt,BX)=>{\"use strict\";var k9e=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,CX=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,Q9e=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,F9e=/\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi,R9e=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function IX(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)):R9e.get(t)||t}function T9e(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(Q9e))r.push(a[2].replace(F9e,(A,p,h)=>p?IX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function N9e(t){CX.lastIndex=0;let e=[],r;for(;(r=CX.exec(t))!==null;){let o=r[1];if(r[2]){let a=T9e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function wX(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 o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}BX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(k9e,(n,u,A,p,h,E)=>{if(u)a.push(IX(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:wX(t,r)(I)),r.push({inverse:A,styles:N9e(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(wX(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.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 o.join(\"\")}});var IN=_((NQt,bX)=>{\"use strict\";var SI=DI(),{stdout:yN,stderr:EN}=dN(),{stringReplaceAll:L9e,stringEncaseCRLFWithFirstIndex:O9e}=EX(),DX=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],Fy=Object.create(null),M9e=(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=yN?yN.level:0;t.level=e.level===void 0?r:e.level},CN=class{constructor(e){return SX(e)}},SX=t=>{let e={};return M9e(e,t),e.template=(...r)=>H9e(e.template,...r),Object.setPrototypeOf(e,bS.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=CN,e.template};function bS(t){return SX(t)}for(let[t,e]of Object.entries(SI))Fy[t]={get(){let r=xS(this,wN(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Fy.visible={get(){let t=xS(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var PX=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of PX)Fy[t]={get(){let{level:e}=this;return function(...r){let o=wN(SI.color[DX[e]][t](...r),SI.color.close,this._styler);return xS(this,o,this._isEmpty)}}};for(let t of PX){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);Fy[e]={get(){let{level:r}=this;return function(...o){let a=wN(SI.bgColor[DX[r]][t](...o),SI.bgColor.close,this._styler);return xS(this,a,this._isEmpty)}}}}var U9e=Object.defineProperties(()=>{},{...Fy,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),wN=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},xS=(t,e,r)=>{let o=(...a)=>_9e(o,a.length===1?\"\"+a[0]:a.join(\" \"));return o.__proto__=U9e,o._generator=t,o._styler=e,o._isEmpty=r,o},_9e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=L9e(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=O9e(e,a,o,n)),o+e+a},mN,H9e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return mN===void 0&&(mN=vX()),mN(t,a.join(\"\"))};Object.defineProperties(bS.prototype,Fy);var PI=bS();PI.supportsColor=yN;PI.stderr=bS({level:EN?EN.level:0});PI.stderr.supportsColor=EN;PI.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:\"None\",1:\"Basic\",2:\"Ansi256\",3:\"TrueColor\"};bX.exports=PI});var kS=_(Ul=>{\"use strict\";Ul.isInteger=t=>typeof t==\"number\"?Number.isInteger(t):typeof t==\"string\"&&t.trim()!==\"\"?Number.isInteger(Number(t)):!1;Ul.find=(t,e)=>t.nodes.find(r=>r.type===e);Ul.exceedsLimit=(t,e,r=1,o)=>o===!1||!Ul.isInteger(t)||!Ul.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Ul.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type===\"open\"||o.type===\"close\")&&o.escaped!==!0&&(o.value=\"\\\\\"+o.value,o.escaped=!0)};Ul.encloseBrace=t=>t.type!==\"brace\"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Ul.isInvalidBrace=t=>t.type!==\"brace\"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Ul.isOpenOrClose=t=>t.type===\"open\"||t.type===\"close\"?!0:t.open===!0||t.close===!0;Ul.reduce=t=>t.reduce((e,r)=>(r.type===\"text\"&&e.push(r.value),r.type===\"range\"&&(r.type=\"text\"),e),[]);Ul.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a<o.length;a++){let n=o[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var QS=_((OQt,kX)=>{\"use strict\";var xX=kS();kX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&xX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=\"\";if(o.value)return(n||u)&&xX.isOpenOrClose(o)?\"\\\\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var FX=_((MQt,QX)=>{\"use strict\";QX.exports=function(t){return typeof t==\"number\"?t-t===0:typeof t==\"string\"&&t.trim()!==\"\"?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var HX=_((UQt,_X)=>{\"use strict\";var RX=FX(),Ad=(t,e,r)=>{if(RX(t)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(e===void 0||t===e)return String(t);if(RX(e)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let o={relaxZeros:!0,...r};typeof o.strictZeros==\"boolean\"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+\":\"+e+\"=\"+a+n+u+A;if(Ad.cache.hasOwnProperty(p))return Ad.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 o.capture?`(${R})`:o.wrap===!1?R:`(?:${R})`}let I=UX(t)||UX(e),v={min:t,max:e,a:h,b:E},x=[],C=[];if(I&&(v.isPadded=I,v.maxLen=String(v.max).length),h<0){let R=E<0?Math.abs(E):1;C=TX(R,Math.abs(h),v,o),h=v.a=0}return E>=0&&(x=TX(h,E,v,o)),v.negatives=C,v.positives=x,v.result=q9e(C,x,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&x.length+C.length>1&&(v.result=`(?:${v.result})`),Ad.cache[p]=v,v.result};function q9e(t,e,r){let o=BN(t,e,\"-\",!1,r)||[],a=BN(e,t,\"\",!1,r)||[],n=BN(t,e,\"-?\",!0,r)||[];return o.concat(n).concat(a).join(\"|\")}function j9e(t,e){let r=1,o=1,a=LX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=LX(t,r);for(a=OX(e+1,o)-1;t<a&&a<=e;)n.add(a),o+=1,a=OX(e+1,o)-1;return n=[...n],n.sort(W9e),n}function G9e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=Y9e(t,e),a=o.length,n=\"\",u=0;for(let A=0;A<a;A++){let[p,h]=o[A];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=K9e(p,h,r):u++}return u&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[u],digits:a}}function TX(t,e,r,o){let a=j9e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p++){let h=a[p],E=G9e(String(u),String(h),o),I=\"\";if(!r.isPadded&&A&&A.pattern===E.pattern){A.count.length>1&&A.count.pop(),A.count.push(E.count[0]),A.string=A.pattern+MX(A.count),u=h+1;continue}r.isPadded&&(I=V9e(h,r,o)),E.string=I+E.pattern+MX(E.count),n.push(E),u=h+1,A=E}return n}function BN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!NX(e,\"string\",A)&&n.push(r+A),o&&NX(e,\"string\",A)&&n.push(r+A)}return n}function Y9e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]);return r}function W9e(t,e){return t>e?1:e>t?-1:0}function NX(t,e,r){return t.some(o=>o[e]===r)}function LX(t,e){return Number(String(t).slice(0,-e)+\"9\".repeat(e))}function OX(t,e){return t-t%Math.pow(10,e)}function MX(t){let[e=0,r=\"\"]=t;return r||e>1?`{${e+(r?\",\"+r:\"\")}}`:\"\"}function K9e(t,e,r){return`[${t}${e-t===1?\"\":\"-\"}${e}]`}function UX(t){return/^-?(0+)\\d/.test(t)}function V9e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${o}}`:`0{${o}}`}}Ad.cache={};Ad.clearCache=()=>Ad.cache={};_X.exports=Ad});var SN=_((_Qt,JX)=>{\"use strict\";var J9e=ve(\"util\"),GX=HX(),qX=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),z9e=t=>e=>t===!0?Number(e):String(e),vN=t=>typeof t==\"number\"||typeof t==\"string\"&&t!==\"\",bI=t=>Number.isInteger(+t),DN=t=>{let e=`${t}`,r=-1;if(e[0]===\"-\"&&(e=e.slice(1)),e===\"0\")return!1;for(;e[++r]===\"0\";);return r>0},X9e=(t,e,r)=>typeof t==\"string\"||typeof e==\"string\"?!0:r.stringify===!0,Z9e=(t,e,r)=>{if(e>0){let o=t[0]===\"-\"?\"-\":\"\";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,\"0\")}return r===!1?String(t):t},jX=(t,e)=>{let r=t[0]===\"-\"?\"-\":\"\";for(r&&(t=t.slice(1),e--);t.length<e;)t=\"0\"+t;return r?\"-\"+t:t},$9e=(t,e)=>{t.negatives.sort((u,A)=>u<A?-1:u>A?1:0),t.positives.sort((u,A)=>u<A?-1:u>A?1:0);let r=e.capture?\"\":\"?:\",o=\"\",a=\"\",n;return t.positives.length&&(o=t.positives.join(\"|\")),t.negatives.length&&(a=`-(${r}${t.negatives.join(\"|\")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},YX=(t,e,r,o)=>{if(r)return GX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},WX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?\"\":\"?:\";return o?`(${a}${t.join(\"|\")})`:t.join(\"|\")}return GX(t,e,r)},KX=(...t)=>new RangeError(\"Invalid range arguments: \"+J9e.inspect(...t)),VX=(t,e,r)=>{if(r.strictRanges===!0)throw KX([t,e]);return[]},e7e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step \"${t}\" to be a number`);return[]},t7e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw KX([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=DN(A)||DN(p)||DN(h),I=E?Math.max(A.length,p.length,h.length):0,v=E===!1&&X9e(t,e,o)===!1,x=o.transform||z9e(v);if(o.toRegex&&r===1)return YX(jX(t,I),jX(e,I),!0,o);let C={negatives:[],positives:[]},R=J=>C[J<0?\"negatives\":\"positives\"].push(Math.abs(J)),L=[],U=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?R(a):L.push(Z9e(x(a,U),I,v)),a=u?a-r:a+r,U++;return o.toRegex===!0?r>1?$9e(C,o):WX(L,null,{wrap:!1,...o}):L},r7e=(t,e,r=1,o={})=>{if(!bI(t)&&t.length>1||!bI(e)&&e.length>1)return VX(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return YX(p,h,!1,o);let E=[],I=0;for(;A?n>=u:n<=u;)E.push(a(n,I)),n=A?n-r:n+r,I++;return o.toRegex===!0?WX(E,null,{wrap:!1,options:o}):E},RS=(t,e,r,o={})=>{if(e==null&&vN(t))return[t];if(!vN(t)||!vN(e))return VX(t,e,o);if(typeof r==\"function\")return RS(t,e,1,{transform:r});if(qX(r))return RS(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,bI(r)?bI(t)&&bI(e)?t7e(t,e,r,a):r7e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!qX(r)?e7e(r,a):RS(t,e,1,r)};JX.exports=RS});var ZX=_((HQt,XX)=>{\"use strict\";var n7e=SN(),zX=kS(),i7e=(t,e={})=>{let r=(o,a={})=>{let n=zX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type===\"open\")return A?p+o.value:\"(\";if(o.type===\"close\")return A?p+o.value:\")\";if(o.type===\"comma\")return o.prev.type===\"comma\"?\"\":A?o.value:\"|\";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let E=zX.reduce(o.nodes),I=n7e(...E,{...e,wrap:!1,toRegex:!0});if(I.length!==0)return E.length>1&&I.length>1?`(${I})`:I}if(o.nodes)for(let E of o.nodes)h+=r(E,o);return h};return r(t)};XX.exports=i7e});var tZ=_((qQt,eZ)=>{\"use strict\";var s7e=SN(),$X=QS(),Ry=kS(),fd=(t=\"\",e=\"\",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?Ry.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(fd(n,e,r));else for(let n of e)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),o.push(Array.isArray(n)?fd(a,n,r):a+n);return Ry.flatten(o)},o7e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!==\"brace\"&&u.type!==\"root\"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(fd(A.pop(),$X(a,e)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){A.push(fd(A.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let I=Ry.reduce(a.nodes);if(Ry.exceedsLimit(...I,e.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let v=s7e(...I,e);v.length===0&&(v=$X(a,e)),A.push(fd(A.pop(),v)),a.nodes=[];return}let p=Ry.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let I=0;I<a.nodes.length;I++){let v=a.nodes[I];if(v.type===\"comma\"&&a.type===\"brace\"){I===1&&h.push(\"\"),h.push(\"\");continue}if(v.type===\"close\"){A.push(fd(A.pop(),h,p));continue}if(v.value&&v.type!==\"open\"){h.push(fd(h.pop(),v.value));continue}v.nodes&&o(v,a)}return h};return Ry.flatten(o(t))};eZ.exports=o7e});var nZ=_((jQt,rZ)=>{\"use strict\";rZ.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 lZ=_((GQt,aZ)=>{\"use strict\";var a7e=QS(),{MAX_LENGTH:iZ,CHAR_BACKSLASH:PN,CHAR_BACKTICK:l7e,CHAR_COMMA:c7e,CHAR_DOT:u7e,CHAR_LEFT_PARENTHESES:A7e,CHAR_RIGHT_PARENTHESES:f7e,CHAR_LEFT_CURLY_BRACE:p7e,CHAR_RIGHT_CURLY_BRACE:h7e,CHAR_LEFT_SQUARE_BRACKET:sZ,CHAR_RIGHT_SQUARE_BRACKET:oZ,CHAR_DOUBLE_QUOTE:g7e,CHAR_SINGLE_QUOTE:d7e,CHAR_NO_BREAK_SPACE:m7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:y7e}=nZ(),E7e=(t,e={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");let r=e||{},o=typeof r.maxLength==\"number\"?Math.min(iZ,r.maxLength):iZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:\"root\",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,E=0,I=0,v,x={},C=()=>t[E++],R=L=>{if(L.type===\"text\"&&A.type===\"dot\"&&(A.type=\"text\"),A&&A.type===\"text\"&&L.type===\"text\"){A.value+=L.value;return}return u.nodes.push(L),L.parent=u,L.prev=A,A=L,L};for(R({type:\"bos\"});E<h;)if(u=n[n.length-1],v=C(),!(v===y7e||v===m7e)){if(v===PN){R({type:\"text\",value:(e.keepEscaping?v:\"\")+C()});continue}if(v===oZ){R({type:\"text\",value:\"\\\\\"+v});continue}if(v===sZ){p++;let L=!0,U;for(;E<h&&(U=C());){if(v+=U,U===sZ){p++;continue}if(U===PN){v+=C();continue}if(U===oZ&&(p--,p===0))break}R({type:\"text\",value:v});continue}if(v===A7e){u=R({type:\"paren\",nodes:[]}),n.push(u),R({type:\"text\",value:v});continue}if(v===f7e){if(u.type!==\"paren\"){R({type:\"text\",value:v});continue}u=n.pop(),R({type:\"text\",value:v}),u=n[n.length-1];continue}if(v===g7e||v===d7e||v===l7e){let L=v,U;for(e.keepQuotes!==!0&&(v=\"\");E<h&&(U=C());){if(U===PN){v+=U+C();continue}if(U===L){e.keepQuotes===!0&&(v+=U);break}v+=U}R({type:\"text\",value:v});continue}if(v===p7e){I++;let U={type:\"brace\",open:!0,close:!1,dollar:A.value&&A.value.slice(-1)===\"$\"||u.dollar===!0,depth:I,commas:0,ranges:0,nodes:[]};u=R(U),n.push(u),R({type:\"open\",value:v});continue}if(v===h7e){if(u.type!==\"brace\"){R({type:\"text\",value:v});continue}let L=\"close\";u=n.pop(),u.close=!0,R({type:L,value:v}),I--,u=n[n.length-1];continue}if(v===c7e&&I>0){if(u.ranges>0){u.ranges=0;let L=u.nodes.shift();u.nodes=[L,{type:\"text\",value:a7e(u)}]}R({type:\"comma\",value:v}),u.commas++;continue}if(v===u7e&&I>0&&u.commas===0){let L=u.nodes;if(I===0||L.length===0){R({type:\"text\",value:v});continue}if(A.type===\"dot\"){if(u.range=[],A.value+=v,A.type=\"range\",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type=\"text\";continue}u.ranges++,u.args=[];continue}if(A.type===\"range\"){L.pop();let U=L[L.length-1];U.value+=A.value+v,A=U,u.ranges--;continue}R({type:\"dot\",value:v});continue}R({type:\"text\",value:v})}do if(u=n.pop(),u.type!==\"root\"){u.nodes.forEach(J=>{J.nodes||(J.type===\"open\"&&(J.isOpen=!0),J.type===\"close\"&&(J.isClose=!0),J.nodes||(J.type=\"text\"),J.invalid=!0)});let L=n[n.length-1],U=L.nodes.indexOf(u);L.nodes.splice(U,1,...u.nodes)}while(n.length>0);return R({type:\"eos\"}),a};aZ.exports=E7e});var AZ=_((YQt,uZ)=>{\"use strict\";var cZ=QS(),C7e=ZX(),w7e=tZ(),I7e=lZ(),rl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=rl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(rl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};rl.parse=(t,e={})=>I7e(t,e);rl.stringify=(t,e={})=>cZ(typeof t==\"string\"?rl.parse(t,e):t,e);rl.compile=(t,e={})=>(typeof t==\"string\"&&(t=rl.parse(t,e)),C7e(t,e));rl.expand=(t,e={})=>{typeof t==\"string\"&&(t=rl.parse(t,e));let r=w7e(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};rl.create=(t,e={})=>t===\"\"||t.length<3?[t]:e.expand!==!0?rl.compile(t,e):rl.expand(t,e);uZ.exports=rl});var xI=_((WQt,dZ)=>{\"use strict\";var B7e=ve(\"path\"),Ku=\"\\\\\\\\/\",fZ=`[^${Ku}]`,vf=\"\\\\.\",v7e=\"\\\\+\",D7e=\"\\\\?\",TS=\"\\\\/\",S7e=\"(?=.)\",pZ=\"[^/]\",bN=`(?:${TS}|$)`,hZ=`(?:^|${TS})`,xN=`${vf}{1,2}${bN}`,P7e=`(?!${vf})`,b7e=`(?!${hZ}${xN})`,x7e=`(?!${vf}{0,1}${bN})`,k7e=`(?!${xN})`,Q7e=`[^.${TS}]`,F7e=`${pZ}*?`,gZ={DOT_LITERAL:vf,PLUS_LITERAL:v7e,QMARK_LITERAL:D7e,SLASH_LITERAL:TS,ONE_CHAR:S7e,QMARK:pZ,END_ANCHOR:bN,DOTS_SLASH:xN,NO_DOT:P7e,NO_DOTS:b7e,NO_DOT_SLASH:x7e,NO_DOTS_SLASH:k7e,QMARK_NO_DOT:Q7e,STAR:F7e,START_ANCHOR:hZ},R7e={...gZ,SLASH_LITERAL:`[${Ku}]`,QMARK:fZ,STAR:`${fZ}*?`,DOTS_SLASH:`${vf}{1,2}(?:[${Ku}]|$)`,NO_DOT:`(?!${vf})`,NO_DOTS:`(?!(?:^|[${Ku}])${vf}{1,2}(?:[${Ku}]|$))`,NO_DOT_SLASH:`(?!${vf}{0,1}(?:[${Ku}]|$))`,NO_DOTS_SLASH:`(?!${vf}{1,2}(?:[${Ku}]|$))`,QMARK_NO_DOT:`[^.${Ku}]`,START_ANCHOR:`(?:^|[${Ku}])`,END_ANCHOR:`(?:[${Ku}]|$)`},T7e={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\"};dZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T7e,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:B7e.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?R7e:gZ}}});var kI=_(Sa=>{\"use strict\";var N7e=ve(\"path\"),L7e=process.platform===\"win32\",{REGEX_BACKSLASH:O7e,REGEX_REMOVE_BACKSLASH:M7e,REGEX_SPECIAL_CHARS:U7e,REGEX_SPECIAL_CHARS_GLOBAL:_7e}=xI();Sa.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);Sa.hasRegexChars=t=>U7e.test(t);Sa.isRegexChar=t=>t.length===1&&Sa.hasRegexChars(t);Sa.escapeRegex=t=>t.replace(_7e,\"\\\\$1\");Sa.toPosixSlashes=t=>t.replace(O7e,\"/\");Sa.removeBackslashes=t=>t.replace(M7e,e=>e===\"\\\\\"?\"\":e);Sa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(\".\").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Sa.isWindows=t=>t&&typeof t.windows==\"boolean\"?t.windows:L7e===!0||N7e.sep===\"\\\\\";Sa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]===\"\\\\\"?Sa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\\\${t.slice(o)}`};Sa.removePrefix=(t,e={})=>{let r=t;return r.startsWith(\"./\")&&(r=r.slice(2),e.prefix=\"./\"),r};Sa.wrapOutput=(t,e={},r={})=>{let o=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var vZ=_((VQt,BZ)=>{\"use strict\";var mZ=kI(),{CHAR_ASTERISK:kN,CHAR_AT:H7e,CHAR_BACKWARD_SLASH:QI,CHAR_COMMA:q7e,CHAR_DOT:QN,CHAR_EXCLAMATION_MARK:FN,CHAR_FORWARD_SLASH:IZ,CHAR_LEFT_CURLY_BRACE:RN,CHAR_LEFT_PARENTHESES:TN,CHAR_LEFT_SQUARE_BRACKET:j7e,CHAR_PLUS:G7e,CHAR_QUESTION_MARK:yZ,CHAR_RIGHT_CURLY_BRACE:Y7e,CHAR_RIGHT_PARENTHESES:EZ,CHAR_RIGHT_SQUARE_BRACKET:W7e}=xI(),CZ=t=>t===IZ||t===QI,wZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},K7e=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,E=0,I=0,v=!1,x=!1,C=!1,R=!1,L=!1,U=!1,J=!1,te=!1,ae=!1,fe=!1,ce=0,me,he,Be={value:\"\",depth:0,isGlob:!1},we=()=>h>=o,g=()=>p.charCodeAt(h+1),Ee=()=>(me=he,p.charCodeAt(++h));for(;h<o;){he=Ee();let Ie;if(he===QI){J=Be.backslashes=!0,he=Ee(),he===RN&&(U=!0);continue}if(U===!0||he===RN){for(ce++;we()!==!0&&(he=Ee());){if(he===QI){J=Be.backslashes=!0,Ee();continue}if(he===RN){ce++;continue}if(U!==!0&&he===QN&&(he=Ee())===QN){if(v=Be.isBrace=!0,C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(U!==!0&&he===q7e){if(v=Be.isBrace=!0,C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===Y7e&&(ce--,ce===0)){U=!1,v=Be.isBrace=!0,fe=!0;break}}if(a===!0)continue;break}if(he===IZ){if(n.push(h),u.push(Be),Be={value:\"\",depth:0,isGlob:!1},fe===!0)continue;if(me===QN&&h===E+1){E+=2;continue}I=h+1;continue}if(r.noext!==!0&&(he===G7e||he===H7e||he===kN||he===yZ||he===FN)===!0&&g()===TN){if(C=Be.isGlob=!0,R=Be.isExtglob=!0,fe=!0,he===FN&&h===E&&(ae=!0),a===!0){for(;we()!==!0&&(he=Ee());){if(he===QI){J=Be.backslashes=!0,he=Ee();continue}if(he===EZ){C=Be.isGlob=!0,fe=!0;break}}continue}break}if(he===kN){if(me===kN&&(L=Be.isGlobstar=!0),C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===yZ){if(C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===j7e){for(;we()!==!0&&(Ie=Ee());){if(Ie===QI){J=Be.backslashes=!0,Ee();continue}if(Ie===W7e){x=Be.isBracket=!0,C=Be.isGlob=!0,fe=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&he===FN&&h===E){te=Be.negated=!0,E++;continue}if(r.noparen!==!0&&he===TN){if(C=Be.isGlob=!0,a===!0){for(;we()!==!0&&(he=Ee());){if(he===TN){J=Be.backslashes=!0,he=Ee();continue}if(he===EZ){fe=!0;break}}continue}break}if(C===!0){if(fe=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,C=!1);let Se=p,le=\"\",ne=\"\";E>0&&(le=p.slice(0,E),p=p.slice(E),I-=E),Se&&C===!0&&I>0?(Se=p.slice(0,I),ne=p.slice(I)):C===!0?(Se=\"\",ne=p):Se=p,Se&&Se!==\"\"&&Se!==\"/\"&&Se!==p&&CZ(Se.charCodeAt(Se.length-1))&&(Se=Se.slice(0,-1)),r.unescape===!0&&(ne&&(ne=mZ.removeBackslashes(ne)),Se&&J===!0&&(Se=mZ.removeBackslashes(Se)));let ee={prefix:le,input:t,start:E,base:Se,glob:ne,isBrace:v,isBracket:x,isGlob:C,isExtglob:R,isGlobstar:L,negated:te,negatedExtglob:ae};if(r.tokens===!0&&(ee.maxDepth=0,CZ(he)||u.push(Be),ee.tokens=u),r.parts===!0||r.tokens===!0){let Ie;for(let Fe=0;Fe<n.length;Fe++){let At=Ie?Ie+1:E,H=n[Fe],at=t.slice(At,H);r.tokens&&(Fe===0&&E!==0?(u[Fe].isPrefix=!0,u[Fe].value=le):u[Fe].value=at,wZ(u[Fe]),ee.maxDepth+=u[Fe].depth),(Fe!==0||at!==\"\")&&A.push(at),Ie=H}if(Ie&&Ie+1<t.length){let Fe=t.slice(Ie+1);A.push(Fe),r.tokens&&(u[u.length-1].value=Fe,wZ(u[u.length-1]),ee.maxDepth+=u[u.length-1].depth)}ee.slashes=n,ee.parts=A}return ee};BZ.exports=K7e});var PZ=_((JQt,SZ)=>{\"use strict\";var NS=xI(),nl=kI(),{MAX_LENGTH:LS,POSIX_REGEX_SOURCE:V7e,REGEX_NON_SPECIAL_CHARS:J7e,REGEX_SPECIAL_CHARS_BACKREF:z7e,REPLACEMENTS:DZ}=NS,X7e=(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=>nl.escapeRegex(a)).join(\"..\")}return r},Ty=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`,NN=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");t=DZ[t]||t;let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LS,r.maxLength):LS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},u=[n],A=r.capture?\"\":\"?:\",p=nl.isWindows(e),h=NS.globChars(p),E=NS.extglobChars(h),{DOT_LITERAL:I,PLUS_LITERAL:v,SLASH_LITERAL:x,ONE_CHAR:C,DOTS_SLASH:R,NO_DOT:L,NO_DOT_SLASH:U,NO_DOTS_SLASH:J,QMARK:te,QMARK_NO_DOT:ae,STAR:fe,START_ANCHOR:ce}=h,me=b=>`(${A}(?:(?!${ce}${b.dot?R:I}).)*?)`,he=r.dot?\"\":L,Be=r.dot?te:ae,we=r.bash===!0?me(r):fe;r.capture&&(we=`(${we})`),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:u};t=nl.removePrefix(t,g),a=t.length;let Ee=[],Se=[],le=[],ne=n,ee,Ie=()=>g.index===a-1,Fe=g.peek=(b=1)=>t[g.index+b],At=g.advance=()=>t[++g.index]||\"\",H=()=>t.slice(g.index+1),at=(b=\"\",w=0)=>{g.consumed+=b,g.index+=w},Re=b=>{g.output+=b.output!=null?b.output:b.value,at(b.value)},ke=()=>{let b=1;for(;Fe()===\"!\"&&(Fe(2)!==\"(\"||Fe(3)===\"?\");)At(),g.start++,b++;return b%2===0?!1:(g.negated=!0,g.start++,!0)},xe=b=>{g[b]++,le.push(b)},He=b=>{g[b]--,le.pop()},Te=b=>{if(ne.type===\"globstar\"){let w=g.braces>0&&(b.type===\"comma\"||b.type===\"brace\"),P=b.extglob===!0||Ee.length&&(b.type===\"pipe\"||b.type===\"paren\");b.type!==\"slash\"&&b.type!==\"paren\"&&!w&&!P&&(g.output=g.output.slice(0,-ne.output.length),ne.type=\"star\",ne.value=\"*\",ne.output=we,g.output+=ne.output)}if(Ee.length&&b.type!==\"paren\"&&(Ee[Ee.length-1].inner+=b.value),(b.value||b.output)&&Re(b),ne&&ne.type===\"text\"&&b.type===\"text\"){ne.value+=b.value,ne.output=(ne.output||\"\")+b.value;return}b.prev=ne,u.push(b),ne=b},Je=(b,w)=>{let P={...E[w],conditions:1,inner:\"\"};P.prev=ne,P.parens=g.parens,P.output=g.output;let y=(r.capture?\"(\":\"\")+P.open;xe(\"parens\"),Te({type:b,value:w,output:g.output?\"\":C}),Te({type:\"paren\",extglob:!0,value:At(),output:y}),Ee.push(P)},qe=b=>{let w=b.close+(r.capture?\")\":\"\"),P;if(b.type===\"negate\"){let y=we;if(b.inner&&b.inner.length>1&&b.inner.includes(\"/\")&&(y=me(r)),(y!==we||Ie()||/^\\)+$/.test(H()))&&(w=b.close=`)$))${y}`),b.inner.includes(\"*\")&&(P=H())&&/^\\.[^\\\\/.]+$/.test(P)){let F=NN(P,{...e,fastpaths:!1}).output;w=b.close=`)${F})${y})`}b.prev.type===\"bos\"&&(g.negatedExtglob=!0)}Te({type:\"paren\",extglob:!0,value:ee,output:w}),He(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let b=!1,w=t.replace(z7e,(P,y,F,z,X,Z)=>z===\"\\\\\"?(b=!0,P):z===\"?\"?y?y+z+(X?te.repeat(X.length):\"\"):Z===0?Be+(X?te.repeat(X.length):\"\"):te.repeat(F.length):z===\".\"?I.repeat(F.length):z===\"*\"?y?y+z+(X?we:\"\"):we:y?P:`\\\\${P}`);return b===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,P=>P.length%2===0?\"\\\\\\\\\":P?\"\\\\\":\"\")),w===t&&r.contains===!0?(g.output=t,g):(g.output=nl.wrapOutput(w,g,e),g)}for(;!Ie();){if(ee=At(),ee===\"\\0\")continue;if(ee===\"\\\\\"){let P=Fe();if(P===\"/\"&&r.bash!==!0||P===\".\"||P===\";\")continue;if(!P){ee+=\"\\\\\",Te({type:\"text\",value:ee});continue}let y=/^\\\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(ee+=\"\\\\\")),r.unescape===!0?ee=At():ee+=At(),g.brackets===0){Te({type:\"text\",value:ee});continue}}if(g.brackets>0&&(ee!==\"]\"||ne.value===\"[\"||ne.value===\"[^\")){if(r.posix!==!1&&ee===\":\"){let P=ne.value.slice(1);if(P.includes(\"[\")&&(ne.posix=!0,P.includes(\":\"))){let y=ne.value.lastIndexOf(\"[\"),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=V7e[z];if(X){ne.value=F+X,g.backtrack=!0,At(),!n.output&&u.indexOf(ne)===1&&(n.output=C);continue}}}(ee===\"[\"&&Fe()!==\":\"||ee===\"-\"&&Fe()===\"]\")&&(ee=`\\\\${ee}`),ee===\"]\"&&(ne.value===\"[\"||ne.value===\"[^\")&&(ee=`\\\\${ee}`),r.posix===!0&&ee===\"!\"&&ne.value===\"[\"&&(ee=\"^\"),ne.value+=ee,Re({value:ee});continue}if(g.quotes===1&&ee!=='\"'){ee=nl.escapeRegex(ee),ne.value+=ee,Re({value:ee});continue}if(ee==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Te({type:\"text\",value:ee});continue}if(ee===\"(\"){xe(\"parens\"),Te({type:\"paren\",value:ee});continue}if(ee===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"(\"));let P=Ee[Ee.length-1];if(P&&g.parens===P.parens+1){qe(Ee.pop());continue}Te({type:\"paren\",value:ee,output:g.parens?\")\":\"\\\\)\"}),He(\"parens\");continue}if(ee===\"[\"){if(r.nobracket===!0||!H().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));ee=`\\\\${ee}`}else xe(\"brackets\");Te({type:\"bracket\",value:ee});continue}if(ee===\"]\"){if(r.nobracket===!0||ne&&ne.type===\"bracket\"&&ne.value.length===1){Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"[\"));Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}He(\"brackets\");let P=ne.value.slice(1);if(ne.posix!==!0&&P[0]===\"^\"&&!P.includes(\"/\")&&(ee=`/${ee}`),ne.value+=ee,Re({value:ee}),r.literalBrackets===!1||nl.hasRegexChars(P))continue;let y=nl.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(ee===\"{\"&&r.nobrace!==!0){xe(\"braces\");let P={type:\"brace\",value:ee,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};Se.push(P),Te(P);continue}if(ee===\"}\"){let P=Se[Se.length-1];if(r.nobrace===!0||!P){Te({type:\"text\",value:ee,output:ee});continue}let y=\")\";if(P.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!==\"brace\");X--)F[X].type!==\"dots\"&&z.unshift(F[X].value);y=X7e(z,r),g.backtrack=!0}if(P.comma!==!0&&P.dots!==!0){let F=g.output.slice(0,P.outputIndex),z=g.tokens.slice(P.tokensIndex);P.value=P.output=\"\\\\{\",ee=y=\"\\\\}\",g.output=F;for(let X of z)g.output+=X.output||X.value}Te({type:\"brace\",value:ee,output:y}),He(\"braces\"),Se.pop();continue}if(ee===\"|\"){Ee.length>0&&Ee[Ee.length-1].conditions++,Te({type:\"text\",value:ee});continue}if(ee===\",\"){let P=ee,y=Se[Se.length-1];y&&le[le.length-1]===\"braces\"&&(y.comma=!0,P=\"|\"),Te({type:\"comma\",value:ee,output:P});continue}if(ee===\"/\"){if(ne.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",u.pop(),ne=n;continue}Te({type:\"slash\",value:ee,output:x});continue}if(ee===\".\"){if(g.braces>0&&ne.type===\"dot\"){ne.value===\".\"&&(ne.output=I);let P=Se[Se.length-1];ne.type=\"dots\",ne.output+=ee,ne.value+=ee,P.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!==\"bos\"&&ne.type!==\"slash\"){Te({type:\"text\",value:ee,output:I});continue}Te({type:\"dot\",value:ee,output:I});continue}if(ee===\"?\"){if(!(ne&&ne.value===\"(\")&&r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Je(\"qmark\",ee);continue}if(ne&&ne.type===\"paren\"){let y=Fe(),F=ee;if(y===\"<\"&&!nl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(ne.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(H()))&&(F=`\\\\${ee}`),Te({type:\"text\",value:ee,output:F});continue}if(r.dot!==!0&&(ne.type===\"slash\"||ne.type===\"bos\")){Te({type:\"qmark\",value:ee,output:ae});continue}Te({type:\"qmark\",value:ee,output:te});continue}if(ee===\"!\"){if(r.noextglob!==!0&&Fe()===\"(\"&&(Fe(2)!==\"?\"||!/[!=<:]/.test(Fe(3)))){Je(\"negate\",ee);continue}if(r.nonegate!==!0&&g.index===0){ke();continue}}if(ee===\"+\"){if(r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Je(\"plus\",ee);continue}if(ne&&ne.value===\"(\"||r.regex===!1){Te({type:\"plus\",value:ee,output:v});continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\"||ne.type===\"brace\")||g.parens>0){Te({type:\"plus\",value:ee});continue}Te({type:\"plus\",value:v});continue}if(ee===\"@\"){if(r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Te({type:\"at\",extglob:!0,value:ee,output:\"\"});continue}Te({type:\"text\",value:ee});continue}if(ee!==\"*\"){(ee===\"$\"||ee===\"^\")&&(ee=`\\\\${ee}`);let P=J7e.exec(H());P&&(ee+=P[0],g.index+=P[0].length),Te({type:\"text\",value:ee});continue}if(ne&&(ne.type===\"globstar\"||ne.star===!0)){ne.type=\"star\",ne.star=!0,ne.value+=ee,ne.output=we,g.backtrack=!0,g.globstar=!0,at(ee);continue}let b=H();if(r.noextglob!==!0&&/^\\([^?]/.test(b)){Je(\"star\",ee);continue}if(ne.type===\"star\"){if(r.noglobstar===!0){at(ee);continue}let P=ne.prev,y=P.prev,F=P.type===\"slash\"||P.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||b[0]&&b[0]!==\"/\")){Te({type:\"star\",value:ee,output:\"\"});continue}let X=g.braces>0&&(P.type===\"comma\"||P.type===\"brace\"),Z=Ee.length&&(P.type===\"pipe\"||P.type===\"paren\");if(!F&&P.type!==\"paren\"&&!X&&!Z){Te({type:\"star\",value:ee,output:\"\"});continue}for(;b.slice(0,3)===\"/**\";){let ie=t[g.index+4];if(ie&&ie!==\"/\")break;b=b.slice(3),at(\"/**\",3)}if(P.type===\"bos\"&&Ie()){ne.type=\"globstar\",ne.value+=ee,ne.output=me(r),g.output=ne.output,g.globstar=!0,at(ee);continue}if(P.type===\"slash\"&&P.prev.type!==\"bos\"&&!z&&Ie()){g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type=\"globstar\",ne.output=me(r)+(r.strictSlashes?\")\":\"|$)\"),ne.value+=ee,g.globstar=!0,g.output+=P.output+ne.output,at(ee);continue}if(P.type===\"slash\"&&P.prev.type!==\"bos\"&&b[0]===\"/\"){let ie=b[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type=\"globstar\",ne.output=`${me(r)}${x}|${x}${ie})`,ne.value+=ee,g.output+=P.output+ne.output,g.globstar=!0,at(ee+At()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}if(P.type===\"bos\"&&b[0]===\"/\"){ne.type=\"globstar\",ne.value+=ee,ne.output=`(?:^|${x}|${me(r)}${x})`,g.output=ne.output,g.globstar=!0,at(ee+At()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-ne.output.length),ne.type=\"globstar\",ne.output=me(r),ne.value+=ee,g.output+=ne.output,g.globstar=!0,at(ee);continue}let w={type:\"star\",value:ee,output:we};if(r.bash===!0){w.output=\".*?\",(ne.type===\"bos\"||ne.type===\"slash\")&&(w.output=he+w.output),Te(w);continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\")&&r.regex===!0){w.output=ee,Te(w);continue}(g.index===g.start||ne.type===\"slash\"||ne.type===\"dot\")&&(ne.type===\"dot\"?(g.output+=U,ne.output+=U):r.dot===!0?(g.output+=J,ne.output+=J):(g.output+=he,ne.output+=he),Fe()!==\"*\"&&(g.output+=C,ne.output+=C)),Te(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));g.output=nl.escapeLast(g.output,\"[\"),He(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\")\"));g.output=nl.escapeLast(g.output,\"(\"),He(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"}\"));g.output=nl.escapeLast(g.output,\"{\"),He(\"braces\")}if(r.strictSlashes!==!0&&(ne.type===\"star\"||ne.type===\"bracket\")&&Te({type:\"maybe_slash\",value:\"\",output:`${x}?`}),g.backtrack===!0){g.output=\"\";for(let b of g.tokens)g.output+=b.output!=null?b.output:b.value,b.suffix&&(g.output+=b.suffix)}return g};NN.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LS,r.maxLength):LS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=DZ[t]||t;let n=nl.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:I,NO_DOTS_SLASH:v,STAR:x,START_ANCHOR:C}=NS.globChars(n),R=r.dot?I:E,L=r.dot?v:E,U=r.capture?\"\":\"?:\",J={negated:!1,prefix:\"\"},te=r.bash===!0?\".*?\":x;r.capture&&(te=`(${te})`);let ae=he=>he.noglobstar===!0?te:`(${U}(?:(?!${C}${he.dot?h:u}).)*?)`,fe=he=>{switch(he){case\"*\":return`${R}${p}${te}`;case\".*\":return`${u}${p}${te}`;case\"*.*\":return`${R}${te}${u}${p}${te}`;case\"*/*\":return`${R}${te}${A}${p}${L}${te}`;case\"**\":return R+ae(r);case\"**/*\":return`(?:${R}${ae(r)}${A})?${L}${p}${te}`;case\"**/*.*\":return`(?:${R}${ae(r)}${A})?${L}${te}${u}${p}${te}`;case\"**/.*\":return`(?:${R}${ae(r)}${A})?${u}${p}${te}`;default:{let Be=/^(.*?)\\.(\\w+)$/.exec(he);if(!Be)return;let we=fe(Be[1]);return we?we+u+Be[2]:void 0}}},ce=nl.removePrefix(t,J),me=fe(ce);return me&&r.strictSlashes!==!0&&(me+=`${A}?`),me};SZ.exports=NN});var xZ=_((zQt,bZ)=>{\"use strict\";var Z7e=ve(\"path\"),$7e=vZ(),LN=PZ(),ON=kI(),eYe=xI(),tYe=t=>t&&typeof t==\"object\"&&!Array.isArray(t),Mi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(v=>Mi(v,e,r));return v=>{for(let x of E){let C=x(v);if(C)return C}return!1}}let o=tYe(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!=\"string\"&&!o)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=e||{},n=ON.isWindows(e),u=o?Mi.compileRe(t,e):Mi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Mi(a.ignore,E,r)}let h=(E,I=!1)=>{let{isMatch:v,match:x,output:C}=Mi.test(E,u,e,{glob:t,posix:n}),R={glob:t,state:A,regex:u,posix:n,input:E,output:C,match:x,isMatch:v};return typeof a.onResult==\"function\"&&a.onResult(R),v===!1?(R.isMatch=!1,I?R:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(R),R.isMatch=!1,I?R:!1):(typeof a.onMatch==\"function\"&&a.onMatch(R),I?R:!0)};return r&&(h.state=A),h};Mi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected input to be a string\");if(t===\"\")return{isMatch:!1,output:\"\"};let n=r||{},u=n.format||(a?ON.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Mi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Mi.matchBase=(t,e,r,o=ON.isWindows(r))=>(e instanceof RegExp?e:Mi.makeRe(e,r)).test(Z7e.basename(t));Mi.isMatch=(t,e,r)=>Mi(e,r)(t);Mi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Mi.parse(r,e)):LN(t,{...e,fastpaths:!1});Mi.scan=(t,e)=>$7e(t,e);Mi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?\"\":\"^\",u=a.contains?\"\":\"$\",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Mi.toRegex(A,e);return o===!0&&(p.state=t),p};Mi.makeRe=(t,e={},r=!1,o=!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=LN.fastpaths(t,e)),a.output||(a=LN(t,e)),Mi.compileRe(a,e,r,o)};Mi.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/$^/}};Mi.constants=eYe;bZ.exports=Mi});var QZ=_((XQt,kZ)=>{\"use strict\";kZ.exports=xZ()});var Zo=_((ZQt,NZ)=>{\"use strict\";var RZ=ve(\"util\"),TZ=AZ(),Vu=QZ(),MN=kI(),FZ=t=>t===\"\"||t===\"./\",yi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<e.length;E++){let I=Vu(String(e[E]),{...r,onResult:A},!0),v=I.state.negated||I.state.negatedExtglob;v&&u++;for(let x of t){let C=I(x,!0);!(v?!C.isMatch:C.isMatch)||(v?o.add(C.output):(o.delete(C.output),a.add(C.output)))}}let h=(u===e.length?[...n]:[...a]).filter(E=>!o.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};yi.match=yi;yi.matcher=(t,e)=>Vu(t,e);yi.isMatch=(t,e,r)=>Vu(e,r)(t);yi.any=yi.isMatch;yi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(yi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};yi.contains=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${RZ.inspect(t)}\"`);if(Array.isArray(e))return e.some(o=>yi.contains(t,o,r));if(typeof e==\"string\"){if(FZ(t)||FZ(e))return!1;if(t.includes(e)||t.startsWith(\"./\")&&t.slice(2).includes(e))return!0}return yi.isMatch(t,e,{...r,contains:!0})};yi.matchKeys=(t,e,r)=>{if(!MN.isObject(t))throw new TypeError(\"Expected the first argument to be an object\");let o=yi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};yi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(o.some(u=>n(u)))return!0}return!1};yi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};yi.all=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${RZ.inspect(t)}\"`);return[].concat(e).every(o=>Vu(o,r)(t))};yi.capture=(t,e,r)=>{let o=MN.isWindows(r),n=Vu.makeRe(String(t),{...r,capture:!0}).exec(o?MN.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?\"\":u)};yi.makeRe=(...t)=>Vu.makeRe(...t);yi.scan=(...t)=>Vu.scan(...t);yi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of TZ(String(o),e))r.push(Vu.parse(a,e));return r};yi.braces=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return e&&e.nobrace===!0||!/\\{.*\\}/.test(t)?[t]:TZ(t,e)};yi.braceExpand=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return yi.braces(t,{...e,expand:!0})};NZ.exports=yi});var OZ=_(($Qt,LZ)=>{\"use strict\";LZ.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 OS=_((eFt,MZ)=>{\"use strict\";var rYe=OZ();MZ.exports=t=>typeof t==\"string\"?t.replace(rYe(),\"\"):t});var _Z=_((tFt,UZ)=>{function nYe(){this.__data__=[],this.size=0}UZ.exports=nYe});var Ny=_((rFt,HZ)=>{function iYe(t,e){return t===e||t!==t&&e!==e}HZ.exports=iYe});var FI=_((nFt,qZ)=>{var sYe=Ny();function oYe(t,e){for(var r=t.length;r--;)if(sYe(t[r][0],e))return r;return-1}qZ.exports=oYe});var GZ=_((iFt,jZ)=>{var aYe=FI(),lYe=Array.prototype,cYe=lYe.splice;function uYe(t){var e=this.__data__,r=aYe(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():cYe.call(e,r,1),--this.size,!0}jZ.exports=uYe});var WZ=_((sFt,YZ)=>{var AYe=FI();function fYe(t){var e=this.__data__,r=AYe(e,t);return r<0?void 0:e[r][1]}YZ.exports=fYe});var VZ=_((oFt,KZ)=>{var pYe=FI();function hYe(t){return pYe(this.__data__,t)>-1}KZ.exports=hYe});var zZ=_((aFt,JZ)=>{var gYe=FI();function dYe(t,e){var r=this.__data__,o=gYe(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}JZ.exports=dYe});var RI=_((lFt,XZ)=>{var mYe=_Z(),yYe=GZ(),EYe=WZ(),CYe=VZ(),wYe=zZ();function Ly(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ly.prototype.clear=mYe;Ly.prototype.delete=yYe;Ly.prototype.get=EYe;Ly.prototype.has=CYe;Ly.prototype.set=wYe;XZ.exports=Ly});var $Z=_((cFt,ZZ)=>{var IYe=RI();function BYe(){this.__data__=new IYe,this.size=0}ZZ.exports=BYe});var t$=_((uFt,e$)=>{function vYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}e$.exports=vYe});var n$=_((AFt,r$)=>{function DYe(t){return this.__data__.get(t)}r$.exports=DYe});var s$=_((fFt,i$)=>{function SYe(t){return this.__data__.has(t)}i$.exports=SYe});var UN=_((pFt,o$)=>{var PYe=typeof global==\"object\"&&global&&global.Object===Object&&global;o$.exports=PYe});var _l=_((hFt,a$)=>{var bYe=UN(),xYe=typeof self==\"object\"&&self&&self.Object===Object&&self,kYe=bYe||xYe||Function(\"return this\")();a$.exports=kYe});var pd=_((gFt,l$)=>{var QYe=_l(),FYe=QYe.Symbol;l$.exports=FYe});var f$=_((dFt,A$)=>{var c$=pd(),u$=Object.prototype,RYe=u$.hasOwnProperty,TYe=u$.toString,TI=c$?c$.toStringTag:void 0;function NYe(t){var e=RYe.call(t,TI),r=t[TI];try{t[TI]=void 0;var o=!0}catch{}var a=TYe.call(t);return o&&(e?t[TI]=r:delete t[TI]),a}A$.exports=NYe});var h$=_((mFt,p$)=>{var LYe=Object.prototype,OYe=LYe.toString;function MYe(t){return OYe.call(t)}p$.exports=MYe});var hd=_((yFt,m$)=>{var g$=pd(),UYe=f$(),_Ye=h$(),HYe=\"[object Null]\",qYe=\"[object Undefined]\",d$=g$?g$.toStringTag:void 0;function jYe(t){return t==null?t===void 0?qYe:HYe:d$&&d$ in Object(t)?UYe(t):_Ye(t)}m$.exports=jYe});var il=_((EFt,y$)=>{function GYe(t){var e=typeof t;return t!=null&&(e==\"object\"||e==\"function\")}y$.exports=GYe});var MS=_((CFt,E$)=>{var YYe=hd(),WYe=il(),KYe=\"[object AsyncFunction]\",VYe=\"[object Function]\",JYe=\"[object GeneratorFunction]\",zYe=\"[object Proxy]\";function XYe(t){if(!WYe(t))return!1;var e=YYe(t);return e==VYe||e==JYe||e==KYe||e==zYe}E$.exports=XYe});var w$=_((wFt,C$)=>{var ZYe=_l(),$Ye=ZYe[\"__core-js_shared__\"];C$.exports=$Ye});var v$=_((IFt,B$)=>{var _N=w$(),I$=function(){var t=/[^.]+$/.exec(_N&&_N.keys&&_N.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}();function eWe(t){return!!I$&&I$ in t}B$.exports=eWe});var HN=_((BFt,D$)=>{var tWe=Function.prototype,rWe=tWe.toString;function nWe(t){if(t!=null){try{return rWe.call(t)}catch{}try{return t+\"\"}catch{}}return\"\"}D$.exports=nWe});var P$=_((vFt,S$)=>{var iWe=MS(),sWe=v$(),oWe=il(),aWe=HN(),lWe=/[\\\\^$.*+?()[\\]{}|]/g,cWe=/^\\[object .+?Constructor\\]$/,uWe=Function.prototype,AWe=Object.prototype,fWe=uWe.toString,pWe=AWe.hasOwnProperty,hWe=RegExp(\"^\"+fWe.call(pWe).replace(lWe,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function gWe(t){if(!oWe(t)||sWe(t))return!1;var e=iWe(t)?hWe:cWe;return e.test(aWe(t))}S$.exports=gWe});var x$=_((DFt,b$)=>{function dWe(t,e){return t?.[e]}b$.exports=dWe});var zp=_((SFt,k$)=>{var mWe=P$(),yWe=x$();function EWe(t,e){var r=yWe(t,e);return mWe(r)?r:void 0}k$.exports=EWe});var US=_((PFt,Q$)=>{var CWe=zp(),wWe=_l(),IWe=CWe(wWe,\"Map\");Q$.exports=IWe});var NI=_((bFt,F$)=>{var BWe=zp(),vWe=BWe(Object,\"create\");F$.exports=vWe});var N$=_((xFt,T$)=>{var R$=NI();function DWe(){this.__data__=R$?R$(null):{},this.size=0}T$.exports=DWe});var O$=_((kFt,L$)=>{function SWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}L$.exports=SWe});var U$=_((QFt,M$)=>{var PWe=NI(),bWe=\"__lodash_hash_undefined__\",xWe=Object.prototype,kWe=xWe.hasOwnProperty;function QWe(t){var e=this.__data__;if(PWe){var r=e[t];return r===bWe?void 0:r}return kWe.call(e,t)?e[t]:void 0}M$.exports=QWe});var H$=_((FFt,_$)=>{var FWe=NI(),RWe=Object.prototype,TWe=RWe.hasOwnProperty;function NWe(t){var e=this.__data__;return FWe?e[t]!==void 0:TWe.call(e,t)}_$.exports=NWe});var j$=_((RFt,q$)=>{var LWe=NI(),OWe=\"__lodash_hash_undefined__\";function MWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=LWe&&e===void 0?OWe:e,this}q$.exports=MWe});var Y$=_((TFt,G$)=>{var UWe=N$(),_We=O$(),HWe=U$(),qWe=H$(),jWe=j$();function Oy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Oy.prototype.clear=UWe;Oy.prototype.delete=_We;Oy.prototype.get=HWe;Oy.prototype.has=qWe;Oy.prototype.set=jWe;G$.exports=Oy});var V$=_((NFt,K$)=>{var W$=Y$(),GWe=RI(),YWe=US();function WWe(){this.size=0,this.__data__={hash:new W$,map:new(YWe||GWe),string:new W$}}K$.exports=WWe});var z$=_((LFt,J$)=>{function KWe(t){var e=typeof t;return e==\"string\"||e==\"number\"||e==\"symbol\"||e==\"boolean\"?t!==\"__proto__\":t===null}J$.exports=KWe});var LI=_((OFt,X$)=>{var VWe=z$();function JWe(t,e){var r=t.__data__;return VWe(e)?r[typeof e==\"string\"?\"string\":\"hash\"]:r.map}X$.exports=JWe});var $$=_((MFt,Z$)=>{var zWe=LI();function XWe(t){var e=zWe(this,t).delete(t);return this.size-=e?1:0,e}Z$.exports=XWe});var tee=_((UFt,eee)=>{var ZWe=LI();function $We(t){return ZWe(this,t).get(t)}eee.exports=$We});var nee=_((_Ft,ree)=>{var eKe=LI();function tKe(t){return eKe(this,t).has(t)}ree.exports=tKe});var see=_((HFt,iee)=>{var rKe=LI();function nKe(t,e){var r=rKe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}iee.exports=nKe});var _S=_((qFt,oee)=>{var iKe=V$(),sKe=$$(),oKe=tee(),aKe=nee(),lKe=see();function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}My.prototype.clear=iKe;My.prototype.delete=sKe;My.prototype.get=oKe;My.prototype.has=aKe;My.prototype.set=lKe;oee.exports=My});var lee=_((jFt,aee)=>{var cKe=RI(),uKe=US(),AKe=_S(),fKe=200;function pKe(t,e){var r=this.__data__;if(r instanceof cKe){var o=r.__data__;if(!uKe||o.length<fKe-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new AKe(o)}return r.set(t,e),this.size=r.size,this}aee.exports=pKe});var HS=_((GFt,cee)=>{var hKe=RI(),gKe=$Z(),dKe=t$(),mKe=n$(),yKe=s$(),EKe=lee();function Uy(t){var e=this.__data__=new hKe(t);this.size=e.size}Uy.prototype.clear=gKe;Uy.prototype.delete=dKe;Uy.prototype.get=mKe;Uy.prototype.has=yKe;Uy.prototype.set=EKe;cee.exports=Uy});var Aee=_((YFt,uee)=>{var CKe=\"__lodash_hash_undefined__\";function wKe(t){return this.__data__.set(t,CKe),this}uee.exports=wKe});var pee=_((WFt,fee)=>{function IKe(t){return this.__data__.has(t)}fee.exports=IKe});var gee=_((KFt,hee)=>{var BKe=_S(),vKe=Aee(),DKe=pee();function qS(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new BKe;++e<r;)this.add(t[e])}qS.prototype.add=qS.prototype.push=vKe;qS.prototype.has=DKe;hee.exports=qS});var mee=_((VFt,dee)=>{function SKe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}dee.exports=SKe});var Eee=_((JFt,yee)=>{function PKe(t,e){return t.has(e)}yee.exports=PKe});var qN=_((zFt,Cee)=>{var bKe=gee(),xKe=mee(),kKe=Eee(),QKe=1,FKe=2;function RKe(t,e,r,o,a,n){var u=r&QKe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var I=-1,v=!0,x=r&FKe?new bKe:void 0;for(n.set(t,e),n.set(e,t);++I<A;){var C=t[I],R=e[I];if(o)var L=u?o(R,C,I,e,t,n):o(C,R,I,t,e,n);if(L!==void 0){if(L)continue;v=!1;break}if(x){if(!xKe(e,function(U,J){if(!kKe(x,J)&&(C===U||a(C,U,r,o,n)))return x.push(J)})){v=!1;break}}else if(!(C===R||a(C,R,r,o,n))){v=!1;break}}return n.delete(t),n.delete(e),v}Cee.exports=RKe});var jN=_((XFt,wee)=>{var TKe=_l(),NKe=TKe.Uint8Array;wee.exports=NKe});var Bee=_((ZFt,Iee)=>{function LKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}Iee.exports=LKe});var Dee=_(($Ft,vee)=>{function OKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}vee.exports=OKe});var kee=_((eRt,xee)=>{var See=pd(),Pee=jN(),MKe=Ny(),UKe=qN(),_Ke=Bee(),HKe=Dee(),qKe=1,jKe=2,GKe=\"[object Boolean]\",YKe=\"[object Date]\",WKe=\"[object Error]\",KKe=\"[object Map]\",VKe=\"[object Number]\",JKe=\"[object RegExp]\",zKe=\"[object Set]\",XKe=\"[object String]\",ZKe=\"[object Symbol]\",$Ke=\"[object ArrayBuffer]\",eVe=\"[object DataView]\",bee=See?See.prototype:void 0,GN=bee?bee.valueOf:void 0;function tVe(t,e,r,o,a,n,u){switch(r){case eVe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case $Ke:return!(t.byteLength!=e.byteLength||!n(new Pee(t),new Pee(e)));case GKe:case YKe:case VKe:return MKe(+t,+e);case WKe:return t.name==e.name&&t.message==e.message;case JKe:case XKe:return t==e+\"\";case KKe:var A=_Ke;case zKe:var p=o&qKe;if(A||(A=HKe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=jKe,u.set(t,e);var E=UKe(A(t),A(e),o,a,n,u);return u.delete(t),E;case ZKe:if(GN)return GN.call(t)==GN.call(e)}return!1}xee.exports=tVe});var jS=_((tRt,Qee)=>{function rVe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}Qee.exports=rVe});var Hl=_((rRt,Fee)=>{var nVe=Array.isArray;Fee.exports=nVe});var YN=_((nRt,Ree)=>{var iVe=jS(),sVe=Hl();function oVe(t,e,r){var o=e(t);return sVe(t)?o:iVe(o,r(t))}Ree.exports=oVe});var Nee=_((iRt,Tee)=>{function aVe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var u=t[r];e(u,r,t)&&(n[a++]=u)}return n}Tee.exports=aVe});var WN=_((sRt,Lee)=>{function lVe(){return[]}Lee.exports=lVe});var GS=_((oRt,Mee)=>{var cVe=Nee(),uVe=WN(),AVe=Object.prototype,fVe=AVe.propertyIsEnumerable,Oee=Object.getOwnPropertySymbols,pVe=Oee?function(t){return t==null?[]:(t=Object(t),cVe(Oee(t),function(e){return fVe.call(t,e)}))}:uVe;Mee.exports=pVe});var _ee=_((aRt,Uee)=>{function hVe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}Uee.exports=hVe});var Ju=_((lRt,Hee)=>{function gVe(t){return t!=null&&typeof t==\"object\"}Hee.exports=gVe});var jee=_((cRt,qee)=>{var dVe=hd(),mVe=Ju(),yVe=\"[object Arguments]\";function EVe(t){return mVe(t)&&dVe(t)==yVe}qee.exports=EVe});var OI=_((uRt,Wee)=>{var Gee=jee(),CVe=Ju(),Yee=Object.prototype,wVe=Yee.hasOwnProperty,IVe=Yee.propertyIsEnumerable,BVe=Gee(function(){return arguments}())?Gee:function(t){return CVe(t)&&wVe.call(t,\"callee\")&&!IVe.call(t,\"callee\")};Wee.exports=BVe});var Vee=_((ARt,Kee)=>{function vVe(){return!1}Kee.exports=vVe});var UI=_((MI,_y)=>{var DVe=_l(),SVe=Vee(),Xee=typeof MI==\"object\"&&MI&&!MI.nodeType&&MI,Jee=Xee&&typeof _y==\"object\"&&_y&&!_y.nodeType&&_y,PVe=Jee&&Jee.exports===Xee,zee=PVe?DVe.Buffer:void 0,bVe=zee?zee.isBuffer:void 0,xVe=bVe||SVe;_y.exports=xVe});var _I=_((fRt,Zee)=>{var kVe=9007199254740991,QVe=/^(?:0|[1-9]\\d*)$/;function FVe(t,e){var r=typeof t;return e=e??kVe,!!e&&(r==\"number\"||r!=\"symbol\"&&QVe.test(t))&&t>-1&&t%1==0&&t<e}Zee.exports=FVe});var YS=_((pRt,$ee)=>{var RVe=9007199254740991;function TVe(t){return typeof t==\"number\"&&t>-1&&t%1==0&&t<=RVe}$ee.exports=TVe});var tte=_((hRt,ete)=>{var NVe=hd(),LVe=YS(),OVe=Ju(),MVe=\"[object Arguments]\",UVe=\"[object Array]\",_Ve=\"[object Boolean]\",HVe=\"[object Date]\",qVe=\"[object Error]\",jVe=\"[object Function]\",GVe=\"[object Map]\",YVe=\"[object Number]\",WVe=\"[object Object]\",KVe=\"[object RegExp]\",VVe=\"[object Set]\",JVe=\"[object String]\",zVe=\"[object WeakMap]\",XVe=\"[object ArrayBuffer]\",ZVe=\"[object DataView]\",$Ve=\"[object Float32Array]\",eJe=\"[object Float64Array]\",tJe=\"[object Int8Array]\",rJe=\"[object Int16Array]\",nJe=\"[object Int32Array]\",iJe=\"[object Uint8Array]\",sJe=\"[object Uint8ClampedArray]\",oJe=\"[object Uint16Array]\",aJe=\"[object Uint32Array]\",ui={};ui[$Ve]=ui[eJe]=ui[tJe]=ui[rJe]=ui[nJe]=ui[iJe]=ui[sJe]=ui[oJe]=ui[aJe]=!0;ui[MVe]=ui[UVe]=ui[XVe]=ui[_Ve]=ui[ZVe]=ui[HVe]=ui[qVe]=ui[jVe]=ui[GVe]=ui[YVe]=ui[WVe]=ui[KVe]=ui[VVe]=ui[JVe]=ui[zVe]=!1;function lJe(t){return OVe(t)&&LVe(t.length)&&!!ui[NVe(t)]}ete.exports=lJe});var WS=_((gRt,rte)=>{function cJe(t){return function(e){return t(e)}}rte.exports=cJe});var KS=_((HI,Hy)=>{var uJe=UN(),nte=typeof HI==\"object\"&&HI&&!HI.nodeType&&HI,qI=nte&&typeof Hy==\"object\"&&Hy&&!Hy.nodeType&&Hy,AJe=qI&&qI.exports===nte,KN=AJe&&uJe.process,fJe=function(){try{var t=qI&&qI.require&&qI.require(\"util\").types;return t||KN&&KN.binding&&KN.binding(\"util\")}catch{}}();Hy.exports=fJe});var VS=_((dRt,ote)=>{var pJe=tte(),hJe=WS(),ite=KS(),ste=ite&&ite.isTypedArray,gJe=ste?hJe(ste):pJe;ote.exports=gJe});var VN=_((mRt,ate)=>{var dJe=_ee(),mJe=OI(),yJe=Hl(),EJe=UI(),CJe=_I(),wJe=VS(),IJe=Object.prototype,BJe=IJe.hasOwnProperty;function vJe(t,e){var r=yJe(t),o=!r&&mJe(t),a=!r&&!o&&EJe(t),n=!r&&!o&&!a&&wJe(t),u=r||o||a||n,A=u?dJe(t.length,String):[],p=A.length;for(var h in t)(e||BJe.call(t,h))&&!(u&&(h==\"length\"||a&&(h==\"offset\"||h==\"parent\")||n&&(h==\"buffer\"||h==\"byteLength\"||h==\"byteOffset\")||CJe(h,p)))&&A.push(h);return A}ate.exports=vJe});var JS=_((yRt,lte)=>{var DJe=Object.prototype;function SJe(t){var e=t&&t.constructor,r=typeof e==\"function\"&&e.prototype||DJe;return t===r}lte.exports=SJe});var JN=_((ERt,cte)=>{function PJe(t,e){return function(r){return t(e(r))}}cte.exports=PJe});var Ate=_((CRt,ute)=>{var bJe=JN(),xJe=bJe(Object.keys,Object);ute.exports=xJe});var pte=_((wRt,fte)=>{var kJe=JS(),QJe=Ate(),FJe=Object.prototype,RJe=FJe.hasOwnProperty;function TJe(t){if(!kJe(t))return QJe(t);var e=[];for(var r in Object(t))RJe.call(t,r)&&r!=\"constructor\"&&e.push(r);return e}fte.exports=TJe});var jI=_((IRt,hte)=>{var NJe=MS(),LJe=YS();function OJe(t){return t!=null&&LJe(t.length)&&!NJe(t)}hte.exports=OJe});var zS=_((BRt,gte)=>{var MJe=VN(),UJe=pte(),_Je=jI();function HJe(t){return _Je(t)?MJe(t):UJe(t)}gte.exports=HJe});var zN=_((vRt,dte)=>{var qJe=YN(),jJe=GS(),GJe=zS();function YJe(t){return qJe(t,GJe,jJe)}dte.exports=YJe});var Ete=_((DRt,yte)=>{var mte=zN(),WJe=1,KJe=Object.prototype,VJe=KJe.hasOwnProperty;function JJe(t,e,r,o,a,n){var u=r&WJe,A=mte(t),p=A.length,h=mte(e),E=h.length;if(p!=E&&!u)return!1;for(var I=p;I--;){var v=A[I];if(!(u?v in e:VJe.call(e,v)))return!1}var x=n.get(t),C=n.get(e);if(x&&C)return x==e&&C==t;var R=!0;n.set(t,e),n.set(e,t);for(var L=u;++I<p;){v=A[I];var U=t[v],J=e[v];if(o)var te=u?o(J,U,v,e,t,n):o(U,J,v,t,e,n);if(!(te===void 0?U===J||a(U,J,r,o,n):te)){R=!1;break}L||(L=v==\"constructor\")}if(R&&!L){var ae=t.constructor,fe=e.constructor;ae!=fe&&\"constructor\"in t&&\"constructor\"in e&&!(typeof ae==\"function\"&&ae instanceof ae&&typeof fe==\"function\"&&fe instanceof fe)&&(R=!1)}return n.delete(t),n.delete(e),R}yte.exports=JJe});var wte=_((SRt,Cte)=>{var zJe=zp(),XJe=_l(),ZJe=zJe(XJe,\"DataView\");Cte.exports=ZJe});var Bte=_((PRt,Ite)=>{var $Je=zp(),eze=_l(),tze=$Je(eze,\"Promise\");Ite.exports=tze});var Dte=_((bRt,vte)=>{var rze=zp(),nze=_l(),ize=rze(nze,\"Set\");vte.exports=ize});var Pte=_((xRt,Ste)=>{var sze=zp(),oze=_l(),aze=sze(oze,\"WeakMap\");Ste.exports=aze});var GI=_((kRt,Tte)=>{var XN=wte(),ZN=US(),$N=Bte(),eL=Dte(),tL=Pte(),Rte=hd(),qy=HN(),bte=\"[object Map]\",lze=\"[object Object]\",xte=\"[object Promise]\",kte=\"[object Set]\",Qte=\"[object WeakMap]\",Fte=\"[object DataView]\",cze=qy(XN),uze=qy(ZN),Aze=qy($N),fze=qy(eL),pze=qy(tL),gd=Rte;(XN&&gd(new XN(new ArrayBuffer(1)))!=Fte||ZN&&gd(new ZN)!=bte||$N&&gd($N.resolve())!=xte||eL&&gd(new eL)!=kte||tL&&gd(new tL)!=Qte)&&(gd=function(t){var e=Rte(t),r=e==lze?t.constructor:void 0,o=r?qy(r):\"\";if(o)switch(o){case cze:return Fte;case uze:return bte;case Aze:return xte;case fze:return kte;case pze:return Qte}return e});Tte.exports=gd});var qte=_((QRt,Hte)=>{var rL=HS(),hze=qN(),gze=kee(),dze=Ete(),Nte=GI(),Lte=Hl(),Ote=UI(),mze=VS(),yze=1,Mte=\"[object Arguments]\",Ute=\"[object Array]\",XS=\"[object Object]\",Eze=Object.prototype,_te=Eze.hasOwnProperty;function Cze(t,e,r,o,a,n){var u=Lte(t),A=Lte(e),p=u?Ute:Nte(t),h=A?Ute:Nte(e);p=p==Mte?XS:p,h=h==Mte?XS:h;var E=p==XS,I=h==XS,v=p==h;if(v&&Ote(t)){if(!Ote(e))return!1;u=!0,E=!1}if(v&&!E)return n||(n=new rL),u||mze(t)?hze(t,e,r,o,a,n):gze(t,e,p,r,o,a,n);if(!(r&yze)){var x=E&&_te.call(t,\"__wrapped__\"),C=I&&_te.call(e,\"__wrapped__\");if(x||C){var R=x?t.value():t,L=C?e.value():e;return n||(n=new rL),a(R,L,r,o,n)}}return v?(n||(n=new rL),dze(t,e,r,o,a,n)):!1}Hte.exports=Cze});var Wte=_((FRt,Yte)=>{var wze=qte(),jte=Ju();function Gte(t,e,r,o,a){return t===e?!0:t==null||e==null||!jte(t)&&!jte(e)?t!==t&&e!==e:wze(t,e,r,o,Gte,a)}Yte.exports=Gte});var Vte=_((RRt,Kte)=>{var Ize=Wte();function Bze(t,e){return Ize(t,e)}Kte.exports=Bze});var nL=_((TRt,Jte)=>{var vze=zp(),Dze=function(){try{var t=vze(Object,\"defineProperty\");return t({},\"\",{}),t}catch{}}();Jte.exports=Dze});var ZS=_((NRt,Xte)=>{var zte=nL();function Sze(t,e,r){e==\"__proto__\"&&zte?zte(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}Xte.exports=Sze});var iL=_((LRt,Zte)=>{var Pze=ZS(),bze=Ny();function xze(t,e,r){(r!==void 0&&!bze(t[e],r)||r===void 0&&!(e in t))&&Pze(t,e,r)}Zte.exports=xze});var ere=_((ORt,$te)=>{function kze(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}$te.exports=kze});var rre=_((MRt,tre)=>{var Qze=ere(),Fze=Qze();tre.exports=Fze});var sL=_((YI,jy)=>{var Rze=_l(),ore=typeof YI==\"object\"&&YI&&!YI.nodeType&&YI,nre=ore&&typeof jy==\"object\"&&jy&&!jy.nodeType&&jy,Tze=nre&&nre.exports===ore,ire=Tze?Rze.Buffer:void 0,sre=ire?ire.allocUnsafe:void 0;function Nze(t,e){if(e)return t.slice();var r=t.length,o=sre?sre(r):new t.constructor(r);return t.copy(o),o}jy.exports=Nze});var $S=_((URt,lre)=>{var are=jN();function Lze(t){var e=new t.constructor(t.byteLength);return new are(e).set(new are(t)),e}lre.exports=Lze});var oL=_((_Rt,cre)=>{var Oze=$S();function Mze(t,e){var r=e?Oze(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}cre.exports=Mze});var eP=_((HRt,ure)=>{function Uze(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}ure.exports=Uze});var pre=_((qRt,fre)=>{var _ze=il(),Are=Object.create,Hze=function(){function t(){}return function(e){if(!_ze(e))return{};if(Are)return Are(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();fre.exports=Hze});var tP=_((jRt,hre)=>{var qze=JN(),jze=qze(Object.getPrototypeOf,Object);hre.exports=jze});var aL=_((GRt,gre)=>{var Gze=pre(),Yze=tP(),Wze=JS();function Kze(t){return typeof t.constructor==\"function\"&&!Wze(t)?Gze(Yze(t)):{}}gre.exports=Kze});var mre=_((YRt,dre)=>{var Vze=jI(),Jze=Ju();function zze(t){return Jze(t)&&Vze(t)}dre.exports=zze});var lL=_((WRt,Ere)=>{var Xze=hd(),Zze=tP(),$ze=Ju(),eXe=\"[object Object]\",tXe=Function.prototype,rXe=Object.prototype,yre=tXe.toString,nXe=rXe.hasOwnProperty,iXe=yre.call(Object);function sXe(t){if(!$ze(t)||Xze(t)!=eXe)return!1;var e=Zze(t);if(e===null)return!0;var r=nXe.call(e,\"constructor\")&&e.constructor;return typeof r==\"function\"&&r instanceof r&&yre.call(r)==iXe}Ere.exports=sXe});var cL=_((KRt,Cre)=>{function oXe(t,e){if(!(e===\"constructor\"&&typeof t[e]==\"function\")&&e!=\"__proto__\")return t[e]}Cre.exports=oXe});var rP=_((VRt,wre)=>{var aXe=ZS(),lXe=Ny(),cXe=Object.prototype,uXe=cXe.hasOwnProperty;function AXe(t,e,r){var o=t[e];(!(uXe.call(t,e)&&lXe(o,r))||r===void 0&&!(e in t))&&aXe(t,e,r)}wre.exports=AXe});var dd=_((JRt,Ire)=>{var fXe=rP(),pXe=ZS();function hXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;){var A=e[n],p=o?o(r[A],t[A],A,r,t):void 0;p===void 0&&(p=t[A]),a?pXe(r,A,p):fXe(r,A,p)}return r}Ire.exports=hXe});var vre=_((zRt,Bre)=>{function gXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Bre.exports=gXe});var Sre=_((XRt,Dre)=>{var dXe=il(),mXe=JS(),yXe=vre(),EXe=Object.prototype,CXe=EXe.hasOwnProperty;function wXe(t){if(!dXe(t))return yXe(t);var e=mXe(t),r=[];for(var o in t)o==\"constructor\"&&(e||!CXe.call(t,o))||r.push(o);return r}Dre.exports=wXe});var Gy=_((ZRt,Pre)=>{var IXe=VN(),BXe=Sre(),vXe=jI();function DXe(t){return vXe(t)?IXe(t,!0):BXe(t)}Pre.exports=DXe});var xre=_(($Rt,bre)=>{var SXe=dd(),PXe=Gy();function bXe(t){return SXe(t,PXe(t))}bre.exports=bXe});var Nre=_((eTt,Tre)=>{var kre=iL(),xXe=sL(),kXe=oL(),QXe=eP(),FXe=aL(),Qre=OI(),Fre=Hl(),RXe=mre(),TXe=UI(),NXe=MS(),LXe=il(),OXe=lL(),MXe=VS(),Rre=cL(),UXe=xre();function _Xe(t,e,r,o,a,n,u){var A=Rre(t,r),p=Rre(e,r),h=u.get(p);if(h){kre(t,r,h);return}var E=n?n(A,p,r+\"\",t,e,u):void 0,I=E===void 0;if(I){var v=Fre(p),x=!v&&TXe(p),C=!v&&!x&&MXe(p);E=p,v||x||C?Fre(A)?E=A:RXe(A)?E=QXe(A):x?(I=!1,E=xXe(p,!0)):C?(I=!1,E=kXe(p,!0)):E=[]:OXe(p)||Qre(p)?(E=A,Qre(A)?E=UXe(A):(!LXe(A)||NXe(A))&&(E=FXe(p))):I=!1}I&&(u.set(p,E),a(E,p,o,n,u),u.delete(p)),kre(t,r,E)}Tre.exports=_Xe});var Mre=_((tTt,Ore)=>{var HXe=HS(),qXe=iL(),jXe=rre(),GXe=Nre(),YXe=il(),WXe=Gy(),KXe=cL();function Lre(t,e,r,o,a){t!==e&&jXe(e,function(n,u){if(a||(a=new HXe),YXe(n))GXe(t,e,u,r,Lre,o,a);else{var A=o?o(KXe(t,u),n,u+\"\",t,e,a):void 0;A===void 0&&(A=n),qXe(t,u,A)}},WXe)}Ore.exports=Lre});var uL=_((rTt,Ure)=>{function VXe(t){return t}Ure.exports=VXe});var Hre=_((nTt,_re)=>{function JXe(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)}_re.exports=JXe});var AL=_((iTt,jre)=>{var zXe=Hre(),qre=Math.max;function XXe(t,e,r){return e=qre(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=qre(o.length-e,0),u=Array(n);++a<n;)u[a]=o[e+a];a=-1;for(var A=Array(e+1);++a<e;)A[a]=o[a];return A[e]=r(u),zXe(t,this,A)}}jre.exports=XXe});var Yre=_((sTt,Gre)=>{function ZXe(t){return function(){return t}}Gre.exports=ZXe});var Vre=_((oTt,Kre)=>{var $Xe=Yre(),Wre=nL(),eZe=uL(),tZe=Wre?function(t,e){return Wre(t,\"toString\",{configurable:!0,enumerable:!1,value:$Xe(e),writable:!0})}:eZe;Kre.exports=tZe});var zre=_((aTt,Jre)=>{var rZe=800,nZe=16,iZe=Date.now;function sZe(t){var e=0,r=0;return function(){var o=iZe(),a=nZe-(o-r);if(r=o,a>0){if(++e>=rZe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Jre.exports=sZe});var fL=_((lTt,Xre)=>{var oZe=Vre(),aZe=zre(),lZe=aZe(oZe);Xre.exports=lZe});var $re=_((cTt,Zre)=>{var cZe=uL(),uZe=AL(),AZe=fL();function fZe(t,e){return AZe(uZe(t,e,cZe),t+\"\")}Zre.exports=fZe});var tne=_((uTt,ene)=>{var pZe=Ny(),hZe=jI(),gZe=_I(),dZe=il();function mZe(t,e,r){if(!dZe(r))return!1;var o=typeof e;return(o==\"number\"?hZe(r)&&gZe(e,r.length):o==\"string\"&&e in r)?pZe(r[e],t):!1}ene.exports=mZe});var nne=_((ATt,rne)=>{var yZe=$re(),EZe=tne();function CZe(t){return yZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n==\"function\"?(a--,n):void 0,u&&EZe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o<a;){var A=r[o];A&&t(e,A,o,n)}return e})}rne.exports=CZe});var sne=_((fTt,ine)=>{var wZe=Mre(),IZe=nne(),BZe=IZe(function(t,e,r,o){wZe(t,e,r,o)});ine.exports=BZe});var _e={};Vt(_e,{AsyncActions:()=>gL,BufferStream:()=>hL,CachingStrategy:()=>mne,DefaultStream:()=>dL,allSettledSafe:()=>Uc,assertNever:()=>yL,bufferStream:()=>Vy,buildIgnorePattern:()=>kZe,convertMapsToIndexableObjects:()=>iP,dynamicRequire:()=>Df,escapeRegExp:()=>DZe,getArrayWithDefault:()=>Yy,getFactoryWithDefault:()=>ol,getMapWithDefault:()=>Wy,getSetWithDefault:()=>md,groupBy:()=>wL,isIndexableObject:()=>pL,isPathLike:()=>QZe,isTaggedYarnVersion:()=>vZe,makeDeferred:()=>hne,mapAndFilter:()=>sl,mapAndFind:()=>KI,mergeIntoTarget:()=>Ene,overrideType:()=>SZe,parseBoolean:()=>VI,parseInt:()=>Jy,parseOptionalBoolean:()=>yne,plural:()=>nP,prettifyAsyncErrors:()=>Ky,prettifySyncErrors:()=>EL,releaseAfterUseAsync:()=>bZe,replaceEnvVariables:()=>sP,sortMap:()=>ks,toMerged:()=>FZe,tryParseOptionalBoolean:()=>CL,validateEnum:()=>PZe});function vZe(t){return!!(Ane.default.valid(t)&&t.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function nP(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}function DZe(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function SZe(t){}function yL(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function PZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(\", \")})`);return e}function sl(t,e){let r=[];for(let o of t){let a=e(o);a!==fne&&r.push(a)}return r}function KI(t,e){for(let r of t){let o=e(r);if(o!==pne)return o}}function pL(t){return typeof t==\"object\"&&t!==null}async function Uc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status===\"rejected\")throw o.reason;r.push(o.value)}return r}function iP(t){if(t instanceof Map&&(t=Object.fromEntries(t)),pL(t))for(let e of Object.keys(t)){let r=t[e];pL(r)&&(t[e]=iP(r))}return t}function ol(t,e,r){let o=t.get(e);return typeof o>\"u\"&&t.set(e,o=r()),o}function Yy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=[]),r}function md(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Set),r}function Wy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Map),r}async function bZe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Ky(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function EL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Vy(t){return await new Promise((e,r)=>{let o=[];t.on(\"error\",a=>{r(a)}),t.on(\"data\",a=>{o.push(a)}),t.on(\"end\",()=>{e(Buffer.concat(o))})})}function hne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function gne(t){return WI(ue.fromPortablePath(t))}function dne(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=WI.cache[physicalPath];delete WI.cache[physicalPath];let result;try{result=gne(physicalPath);let freshCacheEntry=WI.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{WI.cache[physicalPath]=currentCacheEntry}return result}function xZe(t){let e=one.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let o=dne(t);return one.set(t,{mtime:r.mtimeMs,instance:o}),o}function Df(t,{cachingStrategy:e=2}={}){switch(e){case 0:return dne(t);case 1:return xZe(t);case 2:return gne(t);default:throw new Error(\"Unsupported caching strategy\")}}function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function kZe(t){return t.length===0?null:t.map(e=>`(${cne.default.makeRe(e,{windows:!1,dot:!0}).source})`).join(\"|\")}function sP(t,{env:e}){let r=/\\${(?<variableName>[\\d\\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.hasOwn(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new it(`Environment variable not found (${a})`)})}function VI(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 yne(t){return typeof t>\"u\"?t:VI(t)}function CL(t){try{return yne(t)}catch{return null}}function QZe(t){return!!(ue.isAbsolute(t)||t.match(/^(\\.{1,2}|~)\\//))}function Ene(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,lne.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,ane.default)(h,p))||u.push(p);return u}});return n}function FZe(...t){return Ene({},...t)}function wL(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[a]??=[],r[a].push(o)}return r}function Jy(t){return typeof t==\"string\"?Number.parseInt(t,10):t}var ane,lne,cne,une,Ane,mL,fne,pne,hL,gL,dL,WI,one,mne,ql=Et(()=>{St();qt();ane=$e(Vte()),lne=$e(sne()),cne=$e(Zo()),une=$e(id()),Ane=$e(zn()),mL=ve(\"stream\");fne=Symbol();sl.skip=fne;pne=Symbol();KI.skip=pne;hL=class extends mL.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!==\"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))}};gL=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,une.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>\"u\"&&this.deferred.set(e,o=hne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},dL=class extends mL.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!==\"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)}},WI=eval(\"require\");one=new Map;mne=(o=>(o[o.NoCache=0]=\"NoCache\",o[o.FsTime=1]=\"FsTime\",o[o.Node=2]=\"Node\",o))(mne||{})});var zy,IL,BL,Cne=Et(()=>{zy=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(zy||{}),IL=(o=>(o.Dependency=\"Dependency\",o.PeerDependency=\"PeerDependency\",o.PeerDependencyMeta=\"PeerDependencyMeta\",o))(IL||{}),BL=(o=>(o.Inactive=\"inactive\",o.Redundant=\"redundant\",o.Active=\"active\",o))(BL||{})});var de={};Vt(de,{LogLevel:()=>uP,Style:()=>aP,Type:()=>yt,addLogFilterSupport:()=>XI,applyColor:()=>Vs,applyHyperlink:()=>Zy,applyStyle:()=>yd,json:()=>Ed,jsonOrPretty:()=>NZe,mark:()=>bL,pretty:()=>Mt,prettyField:()=>zu,prettyList:()=>PL,prettyTruncatedLocatorList:()=>cP,stripAnsi:()=>Xy.default,supportsColor:()=>lP,supportsHyperlinks:()=>SL,tuple:()=>_c});function wne(t){let e=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let o=1024**r;return`${Math.floor(t*100/o)/100} ${e[r-1]}`}function _c(t,e){return[e,t]}function yd(t,e,r){return t.get(\"enableColors\")&&r&2&&(e=zI.default.bold(e)),e}function Vs(t,e,r){if(!t.get(\"enableColors\"))return e;let o=RZe.get(r);if(o===null)return e;let a=typeof o>\"u\"?r:DL.level>=3?o[0]:o[1],n=typeof a==\"number\"?vL.ansi256(a):a.startsWith(\"#\")?vL.hex(a):vL[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(e)}function Zy(t,e,r){return t.get(\"enableHyperlinks\")?TZe?`\\x1B]8;;${r}\\x1B\\\\${e}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${e}\\x1B]8;;\\x07`:e}function Mt(t,e,r){if(e===null)return Vs(t,\"null\",yt.NULL);if(Object.hasOwn(oP,r))return oP[r].pretty(t,e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Vs(t,e,r)}function PL(t,e,r,{separator:o=\", \"}={}){return[...e].map(a=>Mt(t,a,r)).join(o)}function Ed(t,e){if(t===null)return null;if(Object.hasOwn(oP,e))return oP[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 NZe(t,e,[r,o]){return t?Ed(r,o):Mt(e,r,o)}function bL(t){return{Check:Vs(t,\"\\u2713\",\"green\"),Cross:Vs(t,\"\\u2718\",\"red\"),Question:Vs(t,\"?\",\"cyan\")}}function zu(t,{label:e,value:[r,o]}){return`${Mt(t,e,yt.CODE)}: ${Mt(t,r,o)}`}function cP(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${qr(t,h)}, `,I=xL(h).length+2;if(o.length>0&&n<I)break;o.push([E,I]),n-=I,a.shift()}if(a.length===0)return o.map(([h])=>h).join(\"\").slice(0,-2);let u=\"X\".repeat(a.length.toString().length),A=`and ${u} more.`,p=a.length;for(;o.length>1&&n<A.length;)n+=o[o.length-1][1],p+=1,o.pop();return[o.map(([h])=>h).join(\"\"),A.replace(u,Mt(t,p,yt.NUMBER))].join(\"\")}function XI(t,{configuration:e}){let r=e.get(\"logFilters\"),o=new Map,a=new Map,n=[];for(let I of r){let v=I.get(\"level\");if(typeof v>\"u\")continue;let x=I.get(\"code\");typeof x<\"u\"&&o.set(x,v);let C=I.get(\"text\");typeof C<\"u\"&&a.set(C,v);let R=I.get(\"pattern\");typeof R<\"u\"&&n.push([Ine.default.matcher(R,{contains:!0}),v])}n.reverse();let u=(I,v,x)=>{if(I===null||I===0)return x;let C=a.size>0||n.length>0?(0,Xy.default)(v):v;if(a.size>0){let R=a.get(C);if(typeof R<\"u\")return R??x}if(n.length>0){for(let[R,L]of n)if(R(C))return L??x}if(o.size>0){let R=o.get(Wu(I));if(typeof R<\"u\")return R??x}return x},A=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(I,v,x,C){switch(u(v,x,C)){case\"info\":A.call(I,v,x);break;case\"warning\":p.call(I,v??0,x);break;case\"error\":h.call(I,v??0,x);break}};t.reportInfo=function(...I){return E(this,...I,\"info\")},t.reportWarning=function(...I){return E(this,...I,\"warning\")},t.reportError=function(...I){return E(this,...I,\"error\")}}var zI,JI,Ine,Xy,Bne,yt,aP,DL,lP,SL,vL,RZe,Po,oP,TZe,uP,jl=Et(()=>{St();zI=$e(IN()),JI=$e(td());qt();Ine=$e(Zo()),Xy=$e(OS()),Bne=ve(\"util\");fS();bo();yt={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\"},aP=(e=>(e[e.BOLD=2]=\"BOLD\",e))(aP||{}),DL=JI.default.GITHUB_ACTIONS?{level:2}:zI.default.supportsColor?{level:zI.default.supportsColor.level}:{level:0},lP=DL.level!==0,SL=lP&&!JI.default.GITHUB_ACTIONS&&!JI.default.CIRCLE&&!JI.default.GITLAB,vL=new zI.default.Instance(DL),RZe=new Map([[yt.NO_HINT,null],[yt.NULL,[\"#a853b5\",129]],[yt.SCOPE,[\"#d75f00\",166]],[yt.NAME,[\"#d7875f\",173]],[yt.RANGE,[\"#00afaf\",37]],[yt.REFERENCE,[\"#87afff\",111]],[yt.NUMBER,[\"#ffd700\",220]],[yt.PATH,[\"#d75fd7\",170]],[yt.URL,[\"#d75fd7\",170]],[yt.ADDED,[\"#5faf00\",70]],[yt.REMOVED,[\"#ff3131\",160]],[yt.CODE,[\"#87afff\",111]],[yt.SIZE,[\"#ffd700\",220]]]),Po=t=>t;oP={[yt.ID]:Po({pretty:(t,e)=>typeof e==\"number\"?Vs(t,`${e}`,yt.NUMBER):Vs(t,e,yt.CODE),json:t=>t}),[yt.INSPECT]:Po({pretty:(t,e)=>(0,Bne.inspect)(e,{depth:1/0,colors:t.get(\"enableColors\"),compact:!0,breakLength:1/0}),json:t=>t}),[yt.NUMBER]:Po({pretty:(t,e)=>Vs(t,`${e}`,yt.NUMBER),json:t=>t}),[yt.IDENT]:Po({pretty:(t,e)=>cs(t,e),json:t=>fn(t)}),[yt.LOCATOR]:Po({pretty:(t,e)=>qr(t,e),json:t=>ba(t)}),[yt.DESCRIPTOR]:Po({pretty:(t,e)=>jn(t,e),json:t=>Pa(t)}),[yt.RESOLUTION]:Po({pretty:(t,{descriptor:e,locator:r})=>ZI(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Pa(t),locator:e!==null?ba(e):null})}),[yt.DEPENDENT]:Po({pretty:(t,{locator:e,descriptor:r})=>kL(t,e,r),json:({locator:t,descriptor:e})=>({locator:ba(t),descriptor:Pa(e)})}),[yt.PACKAGE_EXTENSION]:Po({pretty:(t,e)=>{switch(e.type){case\"Dependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"dependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"peerDependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependencyMeta\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"peerDependenciesMeta\",yt.CODE)} \\u27A4 ${cs(t,Js(e.selector))} \\u27A4 ${Vs(t,e.key,yt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case\"Dependency\":return`${fn(t.parentDescriptor)} > ${fn(t.descriptor)}`;case\"PeerDependency\":return`${fn(t.parentDescriptor)} >> ${fn(t.descriptor)}`;case\"PeerDependencyMeta\":return`${fn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[yt.SETTING]:Po({pretty:(t,e)=>(t.get(e),Zy(t,Vs(t,e,yt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[yt.DURATION]:Po({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[yt.SIZE]:Po({pretty:(t,e)=>Vs(t,wne(e),yt.NUMBER),json:t=>t}),[yt.SIZE_DIFF]:Po({pretty:(t,e)=>{let r=e>=0?\"+\":\"-\",o=r===\"+\"?yt.REMOVED:yt.ADDED;return Vs(t,`${r} ${wne(Math.max(Math.abs(e),1))}`,o)},json:t=>t}),[yt.PATH]:Po({pretty:(t,e)=>Vs(t,ue.fromPortablePath(e),yt.PATH),json:t=>ue.fromPortablePath(t)}),[yt.MARKDOWN]:Po({pretty:(t,{text:e,format:r,paragraphs:o})=>Do(e,{format:r,paragraphs:o}),json:({text:t})=>t}),[yt.MARKDOWN_INLINE]:Po({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,o,a)=>Mt(t,o+a+o,yt.CODE)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,o,a)=>yd(t,a,2)),e),json:t=>t})};TZe=!!process.env.KONSOLE_VERSION;uP=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))(uP||{})});var vne=_($y=>{\"use strict\";Object.defineProperty($y,\"__esModule\",{value:!0});$y.splitWhen=$y.flatten=void 0;function LZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}$y.flatten=LZe;function OZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}$y.splitWhen=OZe});var Dne=_(AP=>{\"use strict\";Object.defineProperty(AP,\"__esModule\",{value:!0});AP.isEnoentCodeError=void 0;function MZe(t){return t.code===\"ENOENT\"}AP.isEnoentCodeError=MZe});var Sne=_(fP=>{\"use strict\";Object.defineProperty(fP,\"__esModule\",{value:!0});fP.createDirentFromStats=void 0;var QL=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 UZe(t,e){return new QL(t,e)}fP.createDirentFromStats=UZe});var Pne=_(Xu=>{\"use strict\";Object.defineProperty(Xu,\"__esModule\",{value:!0});Xu.removeLeadingDotSegment=Xu.escape=Xu.makeAbsolute=Xu.unixify=void 0;var _Ze=ve(\"path\"),HZe=2,qZe=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;function jZe(t){return t.replace(/\\\\/g,\"/\")}Xu.unixify=jZe;function GZe(t,e){return _Ze.resolve(t,e)}Xu.makeAbsolute=GZe;function YZe(t){return t.replace(qZe,\"\\\\$2\")}Xu.escape=YZe;function WZe(t){if(t.charAt(0)===\".\"){let e=t.charAt(1);if(e===\"/\"||e===\"\\\\\")return t.slice(HZe)}return t}Xu.removeLeadingDotSegment=WZe});var xne=_((PTt,bne)=>{bne.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 Fne=_((bTt,Qne)=>{var KZe=xne(),kne={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},VZe=function(t){if(t[0]===\"!\")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;e<t.length;){if(t[e]===\"*\"||t[e+1]===\"?\"&&/[\\].+)]/.test(t[e])||o!==-1&&t[e]===\"[\"&&t[e+1]!==\"]\"&&(o<e&&(o=t.indexOf(\"]\",e)),o>e&&(u===-1||u>o||(u=t.indexOf(\"\\\\\",e),u===-1||u>o)))||a!==-1&&t[e]===\"{\"&&t[e+1]!==\"}\"&&(a=t.indexOf(\"}\",e),a>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>a))||n!==-1&&t[e]===\"(\"&&t[e+1]===\"?\"&&/[:!=]/.test(t[e+2])&&t[e+3]!==\")\"&&(n=t.indexOf(\")\",e),n>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>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&&(u=t.indexOf(\"\\\\\",r),u===-1||u>n))))return!0;if(t[e]===\"\\\\\"){var A=t[e+1];e+=2;var p=kne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]===\"!\")return!0}else e++}return!1},JZe=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 o=kne[r];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]===\"!\")return!0}else e++}return!1};Qne.exports=function(e,r){if(typeof e!=\"string\"||e===\"\")return!1;if(KZe(e))return!0;var o=VZe;return r&&r.strict===!1&&(o=JZe),o(e)}});var Tne=_((xTt,Rne)=>{\"use strict\";var zZe=Fne(),XZe=ve(\"path\").posix.dirname,ZZe=ve(\"os\").platform()===\"win32\",FL=\"/\",$Ze=/\\\\/g,e$e=/[\\{\\[].*[\\}\\]]$/,t$e=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,r$e=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;Rne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&ZZe&&e.indexOf(FL)<0&&(e=e.replace($Ze,FL)),e$e.test(e)&&(e+=FL),e+=\"a\";do e=XZe(e);while(zZe(e)||t$e.test(e));return e.replace(r$e,\"$1\")}});var qne=_(jr=>{\"use strict\";Object.defineProperty(jr,\"__esModule\",{value:!0});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 n$e=ve(\"path\"),i$e=Tne(),RL=Zo(),Nne=\"**\",s$e=\"\\\\\",o$e=/[*?]|^!/,a$e=/\\[[^[]*]/,l$e=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,c$e=/[!*+?@]\\([^(]*\\)/,u$e=/,|\\.\\./;function Lne(t,e={}){return!One(t,e)}jr.isStaticPattern=Lne;function One(t,e={}){return t===\"\"?!1:!!(e.caseSensitiveMatch===!1||t.includes(s$e)||o$e.test(t)||a$e.test(t)||l$e.test(t)||e.extglob!==!1&&c$e.test(t)||e.braceExpansion!==!1&&A$e(t))}jr.isDynamicPattern=One;function A$e(t){let e=t.indexOf(\"{\");if(e===-1)return!1;let r=t.indexOf(\"}\",e+1);if(r===-1)return!1;let o=t.slice(e,r);return u$e.test(o)}function f$e(t){return pP(t)?t.slice(1):t}jr.convertToPositivePattern=f$e;function p$e(t){return\"!\"+t}jr.convertToNegativePattern=p$e;function pP(t){return t.startsWith(\"!\")&&t[1]!==\"(\"}jr.isNegativePattern=pP;function Mne(t){return!pP(t)}jr.isPositivePattern=Mne;function h$e(t){return t.filter(pP)}jr.getNegativePatterns=h$e;function g$e(t){return t.filter(Mne)}jr.getPositivePatterns=g$e;function d$e(t){return t.filter(e=>!TL(e))}jr.getPatternsInsideCurrentDirectory=d$e;function m$e(t){return t.filter(TL)}jr.getPatternsOutsideCurrentDirectory=m$e;function TL(t){return t.startsWith(\"..\")||t.startsWith(\"./..\")}jr.isPatternRelatedToParentDirectory=TL;function y$e(t){return i$e(t,{flipBackslashes:!1})}jr.getBaseDirectory=y$e;function E$e(t){return t.includes(Nne)}jr.hasGlobStar=E$e;function Une(t){return t.endsWith(\"/\"+Nne)}jr.endsWithSlashGlobStar=Une;function C$e(t){let e=n$e.basename(t);return Une(t)||Lne(e)}jr.isAffectDepthOfReadingPattern=C$e;function w$e(t){return t.reduce((e,r)=>e.concat(_ne(r)),[])}jr.expandPatternsWithBraceExpansion=w$e;function _ne(t){return RL.braces(t,{expand:!0,nodupes:!0})}jr.expandBraceExpansion=_ne;function I$e(t,e){let{parts:r}=RL.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=I$e;function Hne(t,e){return RL.makeRe(t,e)}jr.makeRe=Hne;function B$e(t,e){return t.map(r=>Hne(r,e))}jr.convertPatternsToRe=B$e;function v$e(t,e){return e.some(r=>r.test(t))}jr.matchAny=v$e});var Wne=_((QTt,Yne)=>{\"use strict\";var D$e=ve(\"stream\"),jne=D$e.PassThrough,S$e=Array.prototype.slice;Yne.exports=P$e;function P$e(){let t=[],e=S$e.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=jne(o);function A(){for(let E=0,I=arguments.length;E<I;E++)t.push(Gne(arguments[E],o));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 I=E.length+1;function v(){--I>0||(r=!1,p())}function x(C){function R(){C.removeListener(\"merge2UnpipeEnd\",R),C.removeListener(\"end\",R),n&&C.removeListener(\"error\",L),v()}function L(U){u.emit(\"error\",U)}if(C._readableState.endEmitted)return v();C.on(\"merge2UnpipeEnd\",R),C.on(\"end\",R),n&&C.on(\"error\",L),C.pipe(u,{end:!1}),C.resume()}for(let C=0;C<E.length;C++)x(E[C]);v()}function h(){r=!1,u.emit(\"queueDrain\"),a&&u.end()}return u.setMaxListeners(0),u.add=A,u.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),e.length&&A.apply(null,e),u}function Gne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r]=Gne(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(jne(e))),!t._readableState||!t.pause||!t.pipe)throw new Error(\"Only readable stream can be merged.\");t.pause()}return t}});var Vne=_(hP=>{\"use strict\";Object.defineProperty(hP,\"__esModule\",{value:!0});hP.merge=void 0;var b$e=Wne();function x$e(t){let e=b$e(t);return t.forEach(r=>{r.once(\"error\",o=>e.emit(\"error\",o))}),e.once(\"close\",()=>Kne(t)),e.once(\"end\",()=>Kne(t)),e}hP.merge=x$e;function Kne(t){t.forEach(e=>e.emit(\"close\"))}});var Jne=_(eE=>{\"use strict\";Object.defineProperty(eE,\"__esModule\",{value:!0});eE.isEmpty=eE.isString=void 0;function k$e(t){return typeof t==\"string\"}eE.isString=k$e;function Q$e(t){return t===\"\"}eE.isEmpty=Q$e});var Sf=_(xo=>{\"use strict\";Object.defineProperty(xo,\"__esModule\",{value:!0});xo.string=xo.stream=xo.pattern=xo.path=xo.fs=xo.errno=xo.array=void 0;var F$e=vne();xo.array=F$e;var R$e=Dne();xo.errno=R$e;var T$e=Sne();xo.fs=T$e;var N$e=Pne();xo.path=N$e;var L$e=qne();xo.pattern=L$e;var O$e=Vne();xo.stream=O$e;var M$e=Jne();xo.string=M$e});var Zne=_(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 Pf=Sf();function U$e(t,e){let r=zne(t),o=Xne(t,e.ignore),a=r.filter(p=>Pf.pattern.isStaticPattern(p,e)),n=r.filter(p=>Pf.pattern.isDynamicPattern(p,e)),u=NL(a,o,!1),A=NL(n,o,!0);return u.concat(A)}ko.generate=U$e;function NL(t,e,r){let o=[],a=Pf.pattern.getPatternsOutsideCurrentDirectory(t),n=Pf.pattern.getPatternsInsideCurrentDirectory(t),u=LL(a),A=LL(n);return o.push(...OL(u,e,r)),\".\"in A?o.push(ML(\".\",n,e,r)):o.push(...OL(A,e,r)),o}ko.convertPatternsToTasks=NL;function zne(t){return Pf.pattern.getPositivePatterns(t)}ko.getPositivePatterns=zne;function Xne(t,e){return Pf.pattern.getNegativePatterns(t).concat(e).map(Pf.pattern.convertToPositivePattern)}ko.getNegativePatternsAsPositive=Xne;function LL(t){let e={};return t.reduce((r,o)=>{let a=Pf.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}ko.groupPatternsByBaseDirectory=LL;function OL(t,e,r){return Object.keys(t).map(o=>ML(o,t[o],e,r))}ko.convertPatternGroupsToTasks=OL;function ML(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Pf.pattern.convertToNegativePattern))}}ko.convertPatternGroupToTask=ML});var eie=_(tE=>{\"use strict\";Object.defineProperty(tE,\"__esModule\",{value:!0});tE.removeDuplicateSlashes=tE.transform=void 0;var _$e=/(?!^)\\/{2,}/g;function H$e(t){return t.map(e=>$ne(e))}tE.transform=H$e;function $ne(t){return t.replace(_$e,\"/\")}tE.removeDuplicateSlashes=$ne});var rie=_(gP=>{\"use strict\";Object.defineProperty(gP,\"__esModule\",{value:!0});gP.read=void 0;function q$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){tie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){UL(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){tie(r,n);return}UL(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),UL(r,u)})})}gP.read=q$e;function tie(t,e){t(e)}function UL(t,e){t(null,e)}});var nie=_(dP=>{\"use strict\";Object.defineProperty(dP,\"__esModule\",{value:!0});dP.read=void 0;function j$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}dP.read=j$e});var iie=_(Xp=>{\"use strict\";Object.defineProperty(Xp,\"__esModule\",{value:!0});Xp.createFileSystemAdapter=Xp.FILE_SYSTEM_ADAPTER=void 0;var mP=ve(\"fs\");Xp.FILE_SYSTEM_ADAPTER={lstat:mP.lstat,stat:mP.stat,lstatSync:mP.lstatSync,statSync:mP.statSync};function G$e(t){return t===void 0?Xp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Xp.FILE_SYSTEM_ADAPTER),t)}Xp.createFileSystemAdapter=G$e});var sie=_(HL=>{\"use strict\";Object.defineProperty(HL,\"__esModule\",{value:!0});var Y$e=iie(),_L=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Y$e.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}};HL.default=_L});var Cd=_(Zp=>{\"use strict\";Object.defineProperty(Zp,\"__esModule\",{value:!0});Zp.statSync=Zp.stat=Zp.Settings=void 0;var oie=rie(),W$e=nie(),qL=sie();Zp.Settings=qL.default;function K$e(t,e,r){if(typeof e==\"function\"){oie.read(t,jL(),e);return}oie.read(t,jL(e),r)}Zp.stat=K$e;function V$e(t,e){let r=jL(e);return W$e.read(t,r)}Zp.statSync=V$e;function jL(t={}){return t instanceof qL.default?t:new qL.default(t)}});var lie=_((qTt,aie)=>{aie.exports=J$e;function J$e(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,E){r[p]=E,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,E){A(p,h,E)})}):t.forEach(function(p,h){p(function(E,I){A(h,E,I)})}):u(null),n=!1}});var YL=_(EP=>{\"use strict\";Object.defineProperty(EP,\"__esModule\",{value:!0});EP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var yP=process.versions.node.split(\".\");if(yP[0]===void 0||yP[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var cie=Number.parseInt(yP[0],10),z$e=Number.parseInt(yP[1],10),uie=10,X$e=10,Z$e=cie>uie,$$e=cie===uie&&z$e>=X$e;EP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Z$e||$$e});var Aie=_(CP=>{\"use strict\";Object.defineProperty(CP,\"__esModule\",{value:!0});CP.createDirentFromStats=void 0;var WL=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 eet(t,e){return new WL(t,e)}CP.createDirentFromStats=eet});var KL=_(wP=>{\"use strict\";Object.defineProperty(wP,\"__esModule\",{value:!0});wP.fs=void 0;var tet=Aie();wP.fs=tet});var VL=_(IP=>{\"use strict\";Object.defineProperty(IP,\"__esModule\",{value:!0});IP.joinPathSegments=void 0;function ret(t,e,r){return t.endsWith(r)?t+e:t+r+e}IP.joinPathSegments=ret});var mie=_($p=>{\"use strict\";Object.defineProperty($p,\"__esModule\",{value:!0});$p.readdir=$p.readdirWithFileTypes=$p.read=void 0;var net=Cd(),fie=lie(),iet=YL(),pie=KL(),hie=VL();function set(t,e,r){if(!e.stats&&iet.IS_SUPPORT_READDIR_WITH_FILE_TYPES){gie(t,e,r);return}die(t,e,r)}$p.read=set;function gie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){BP(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:hie.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){JL(r,n);return}let u=n.map(A=>oet(A,e));fie(u,(A,p)=>{if(A!==null){BP(r,A);return}JL(r,p)})})}$p.readdirWithFileTypes=gie;function oet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=pie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function die(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){BP(r,o);return}let n=a.map(u=>{let A=hie.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{net.stat(A,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let I={name:u,path:A,dirent:pie.fs.createDirentFromStats(u,E)};e.stats&&(I.stats=E),p(null,I)})}});fie(n,(u,A)=>{if(u!==null){BP(r,u);return}JL(r,A)})})}$p.readdir=die;function BP(t,e){t(e)}function JL(t,e){t(null,e)}});var Iie=_(eh=>{\"use strict\";Object.defineProperty(eh,\"__esModule\",{value:!0});eh.readdir=eh.readdirWithFileTypes=eh.read=void 0;var aet=Cd(),cet=YL(),yie=KL(),Eie=VL();function uet(t,e){return!e.stats&&cet.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Cie(t,e):wie(t,e)}eh.read=uet;function Cie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:Eie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=yie.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}eh.readdirWithFileTypes=Cie;function wie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Eie.joinPathSegments(t,o,e.pathSegmentSeparator),n=aet.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:yie.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}eh.readdir=wie});var Bie=_(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.createFileSystemAdapter=th.FILE_SYSTEM_ADAPTER=void 0;var rE=ve(\"fs\");th.FILE_SYSTEM_ADAPTER={lstat:rE.lstat,stat:rE.stat,lstatSync:rE.lstatSync,statSync:rE.statSync,readdir:rE.readdir,readdirSync:rE.readdirSync};function Aet(t){return t===void 0?th.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},th.FILE_SYSTEM_ADAPTER),t)}th.createFileSystemAdapter=Aet});var vie=_(XL=>{\"use strict\";Object.defineProperty(XL,\"__esModule\",{value:!0});var fet=ve(\"path\"),pet=Cd(),het=Bie(),zL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=het.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,fet.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new pet.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};XL.default=zL});var vP=_(rh=>{\"use strict\";Object.defineProperty(rh,\"__esModule\",{value:!0});rh.Settings=rh.scandirSync=rh.scandir=void 0;var Die=mie(),get=Iie(),ZL=vie();rh.Settings=ZL.default;function det(t,e,r){if(typeof e==\"function\"){Die.read(t,$L(),e);return}Die.read(t,$L(e),r)}rh.scandir=det;function met(t,e){let r=$L(e);return get.read(t,r)}rh.scandirSync=met;function $L(t={}){return t instanceof ZL.default?t:new ZL.default(t)}});var Pie=_((ZTt,Sie)=>{\"use strict\";function yet(t){var e=new t,r=e;function o(){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:o,release:a}}Sie.exports=yet});var xie=_(($Tt,eO)=>{\"use strict\";var Eet=Pie();function bie(t,e,r){if(typeof t==\"function\"&&(r=e,e=t,t=null),r<1)throw new Error(\"fastqueue concurrency must be greater than 1\");var o=Eet(Cet),a=null,n=null,u=0,A=null,p={push:R,drain:Gl,saturated:Gl,pause:E,paused:!1,concurrency:r,running:h,resume:x,idle:C,length:I,getQueue:v,unshift:L,empty:Gl,kill:J,killAndDrain:te,error:ae};return p;function h(){return u}function E(){p.paused=!0}function I(){for(var fe=a,ce=0;fe;)fe=fe.next,ce++;return ce}function v(){for(var fe=a,ce=[];fe;)ce.push(fe.value),fe=fe.next;return ce}function x(){if(!!p.paused){p.paused=!1;for(var fe=0;fe<p.concurrency;fe++)u++,U()}}function C(){return u===0&&p.length()===0}function R(fe,ce){var me=o.get();me.context=t,me.release=U,me.value=fe,me.callback=ce||Gl,me.errorHandler=A,u===p.concurrency||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(u++,e.call(t,me.value,me.worked))}function L(fe,ce){var me=o.get();me.context=t,me.release=U,me.value=fe,me.callback=ce||Gl,u===p.concurrency||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(u++,e.call(t,me.value,me.worked))}function U(fe){fe&&o.release(fe);var ce=a;ce?p.paused?u--:(n===a&&(n=null),a=ce.next,ce.next=null,e.call(t,ce.value,ce.worked),n===null&&p.empty()):--u===0&&p.drain()}function J(){a=null,n=null,p.drain=Gl}function te(){a=null,n=null,p.drain(),p.drain=Gl}function ae(fe){A=fe}}function Gl(){}function Cet(){this.value=null,this.callback=Gl,this.next=null,this.release=Gl,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,o){var a=t.callback,n=t.errorHandler,u=t.value;t.value=null,t.callback=Gl,t.errorHandler&&n(r,u),a.call(t.context,r,o),t.release(t)}}function wet(t,e,r){typeof t==\"function\"&&(r=e,e=t,t=null);function o(E,I){e.call(this,E).then(function(v){I(null,v)},I)}var a=bie(t,o,r),n=a.push,u=a.unshift;return a.push=A,a.unshift=p,a.drained=h,a;function A(E){var I=new Promise(function(v,x){n(E,function(C,R){if(C){x(C);return}v(R)})});return I.catch(Gl),I}function p(E){var I=new Promise(function(v,x){u(E,function(C,R){if(C){x(C);return}v(R)})});return I.catch(Gl),I}function h(){var E=a.drain,I=new Promise(function(v){a.drain=function(){E(),v()}});return I}}eO.exports=bie;eO.exports.promise=wet});var DP=_(Zu=>{\"use strict\";Object.defineProperty(Zu,\"__esModule\",{value:!0});Zu.joinPathSegments=Zu.replacePathSegmentSeparator=Zu.isAppliedFilter=Zu.isFatalError=void 0;function Iet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Zu.isFatalError=Iet;function Bet(t,e){return t===null||t(e)}Zu.isAppliedFilter=Bet;function vet(t,e){return t.split(/[/\\\\]/).join(e)}Zu.replacePathSegmentSeparator=vet;function Det(t,e,r){return t===\"\"?e:t.endsWith(r)?t+e:t+r+e}Zu.joinPathSegments=Det});var nO=_(rO=>{\"use strict\";Object.defineProperty(rO,\"__esModule\",{value:!0});var Pet=DP(),tO=class{constructor(e,r){this._root=e,this._settings=r,this._root=Pet.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};rO.default=tO});var oO=_(sO=>{\"use strict\";Object.defineProperty(sO,\"__esModule\",{value:!0});var bet=ve(\"events\"),xet=vP(),ket=xie(),SP=DP(),Qet=nO(),iO=class extends Qet.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=xet.scandir,this._emitter=new bet.EventEmitter,this._queue=ket(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 o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!SP.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 o=e.path;r!==void 0&&(e.path=SP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),SP.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&SP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit(\"entry\",e)}};sO.default=iO});var kie=_(lO=>{\"use strict\";Object.defineProperty(lO,\"__esModule\",{value:!0});var Fet=oO(),aO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Fet.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{Ret(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Tet(e,this._storage)}),this._reader.read()}};lO.default=aO;function Ret(t,e){t(e)}function Tet(t,e){t(null,e)}});var Qie=_(uO=>{\"use strict\";Object.defineProperty(uO,\"__esModule\",{value:!0});var Net=ve(\"stream\"),Let=oO(),cO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Let.default(this._root,this._settings),this._stream=new Net.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}};uO.default=cO});var Fie=_(fO=>{\"use strict\";Object.defineProperty(fO,\"__esModule\",{value:!0});var Oet=vP(),PP=DP(),Met=nO(),AO=class extends Met.default{constructor(){super(...arguments),this._scandir=Oet.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 o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!PP.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=PP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),PP.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&PP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};fO.default=AO});var Rie=_(hO=>{\"use strict\";Object.defineProperty(hO,\"__esModule\",{value:!0});var Uet=Fie(),pO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Uet.default(this._root,this._settings)}read(){return this._reader.read()}};hO.default=pO});var Tie=_(dO=>{\"use strict\";Object.defineProperty(dO,\"__esModule\",{value:!0});var _et=ve(\"path\"),Het=vP(),gO=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,_et.sep),this.fsScandirSettings=new Het.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}};dO.default=gO});var xP=_($u=>{\"use strict\";Object.defineProperty($u,\"__esModule\",{value:!0});$u.Settings=$u.walkStream=$u.walkSync=$u.walk=void 0;var Nie=kie(),qet=Qie(),jet=Rie(),mO=Tie();$u.Settings=mO.default;function Get(t,e,r){if(typeof e==\"function\"){new Nie.default(t,bP()).read(e);return}new Nie.default(t,bP(e)).read(r)}$u.walk=Get;function Yet(t,e){let r=bP(e);return new jet.default(t,r).read()}$u.walkSync=Yet;function Wet(t,e){let r=bP(e);return new qet.default(t,r).read()}$u.walkStream=Wet;function bP(t={}){return t instanceof mO.default?t:new mO.default(t)}});var kP=_(EO=>{\"use strict\";Object.defineProperty(EO,\"__esModule\",{value:!0});var Ket=ve(\"path\"),Vet=Cd(),Lie=Sf(),yO=class{constructor(e){this._settings=e,this._fsStatSettings=new Vet.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Ket.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:Lie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!Lie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};EO.default=yO});var IO=_(wO=>{\"use strict\";Object.defineProperty(wO,\"__esModule\",{value:!0});var Jet=ve(\"stream\"),zet=Cd(),Xet=xP(),Zet=kP(),CO=class extends Zet.default{constructor(){super(...arguments),this._walkStream=Xet.walkStream,this._stat=zet.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new Jet.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;n<o.length;n++)a.write(n);return a}_getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};wO.default=CO});var Oie=_(vO=>{\"use strict\";Object.defineProperty(vO,\"__esModule\",{value:!0});var $et=xP(),ett=kP(),ttt=IO(),BO=class extends ett.default{constructor(){super(...arguments),this._walkAsync=$et.walk,this._readerStream=new ttt.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once(\"error\",u),a.on(\"data\",A=>o.push(A)),a.once(\"end\",()=>n(o))})}};vO.default=BO});var Mie=_(SO=>{\"use strict\";Object.defineProperty(SO,\"__esModule\",{value:!0});var nE=Sf(),DO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=nE.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return nE.pattern.getPatternParts(e,this._micromatchOptions).map(o=>nE.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:nE.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return nE.array.splitWhen(e,r=>r.dynamic&&nE.pattern.hasGlobStar(r.pattern))}};SO.default=DO});var Uie=_(bO=>{\"use strict\";Object.defineProperty(bO,\"__esModule\",{value:!0});var rtt=Mie(),PO=class extends rtt.default{match(e){let r=e.split(\"/\"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.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}};bO.default=PO});var _ie=_(kO=>{\"use strict\";Object.defineProperty(kO,\"__esModule\",{value:!0});var QP=Sf(),ntt=Uie(),xO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new ntt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(QP.pattern.isAffectDepthOfReadingPattern);return QP.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=QP.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!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 o=r.split(\"/\").length;if(e===\"\")return o;let a=e.split(\"/\").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!QP.pattern.matchAny(e,r)}};kO.default=xO});var Hie=_(FO=>{\"use strict\";Object.defineProperty(FO,\"__esModule\",{value:!0});var wd=Sf(),QO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=wd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=wd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,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 o=wd.path.makeAbsolute(this._settings.cwd,e);return wd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=wd.path.removeLeadingDotSegment(e),n=wd.pattern.matchAny(a,r);return!n&&o?wd.pattern.matchAny(a+\"/\",r):n}};FO.default=QO});var qie=_(TO=>{\"use strict\";Object.defineProperty(TO,\"__esModule\",{value:!0});var itt=Sf(),RO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return itt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};TO.default=RO});var Gie=_(LO=>{\"use strict\";Object.defineProperty(LO,\"__esModule\",{value:!0});var jie=Sf(),NO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=jie.path.makeAbsolute(this._settings.cwd,r),r=jie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};LO.default=NO});var FP=_(MO=>{\"use strict\";Object.defineProperty(MO,\"__esModule\",{value:!0});var stt=ve(\"path\"),ott=_ie(),att=Hie(),ltt=qie(),ctt=Gie(),OO=class{constructor(e){this._settings=e,this.errorFilter=new ltt.default(this._settings),this.entryFilter=new att.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new ott.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new ctt.default(this._settings)}_getRootDirectory(e){return stt.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}}};MO.default=OO});var Yie=_(_O=>{\"use strict\";Object.defineProperty(_O,\"__esModule\",{value:!0});var utt=Oie(),Att=FP(),UO=class extends Att.default{constructor(){super(...arguments),this._reader=new utt.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};_O.default=UO});var Wie=_(qO=>{\"use strict\";Object.defineProperty(qO,\"__esModule\",{value:!0});var ftt=ve(\"stream\"),ptt=IO(),htt=FP(),HO=class extends htt.default{constructor(){super(...arguments),this._reader=new ptt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new ftt.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",u=>n.emit(\"error\",u)).on(\"data\",u=>n.emit(\"data\",o.transform(u))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};qO.default=HO});var Kie=_(GO=>{\"use strict\";Object.defineProperty(GO,\"__esModule\",{value:!0});var gtt=Cd(),dtt=xP(),mtt=kP(),jO=class extends mtt.default{constructor(){super(...arguments),this._walkSync=dtt.walkSync,this._statSync=gtt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};GO.default=jO});var Vie=_(WO=>{\"use strict\";Object.defineProperty(WO,\"__esModule\",{value:!0});var ytt=Kie(),Ett=FP(),YO=class extends Ett.default{constructor(){super(...arguments),this._reader=new ytt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};WO.default=YO});var Jie=_(sE=>{\"use strict\";Object.defineProperty(sE,\"__esModule\",{value:!0});sE.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var iE=ve(\"fs\"),Ctt=ve(\"os\"),wtt=Math.max(Ctt.cpus().length,1);sE.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:iE.lstat,lstatSync:iE.lstatSync,stat:iE.stat,statSync:iE.statSync,readdir:iE.readdir,readdirSync:iE.readdirSync};var KO=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,wtt),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)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},sE.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};sE.default=KO});var RP=_((vNt,Zie)=>{\"use strict\";var zie=Zne(),Xie=eie(),Itt=Yie(),Btt=Wie(),vtt=Vie(),VO=Jie(),Id=Sf();async function JO(t,e){oE(t);let r=zO(t,Itt.default,e),o=await Promise.all(r);return Id.array.flatten(o)}(function(t){function e(u,A){oE(u);let p=zO(u,vtt.default,A);return Id.array.flatten(p)}t.sync=e;function r(u,A){oE(u);let p=zO(u,Btt.default,A);return Id.stream.merge(p)}t.stream=r;function o(u,A){oE(u);let p=Xie.transform([].concat(u)),h=new VO.default(A);return zie.generate(p,h)}t.generateTasks=o;function a(u,A){oE(u);let p=new VO.default(A);return Id.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return oE(u),Id.path.escape(u)}t.escapePath=n})(JO||(JO={}));function zO(t,e,r){let o=Xie.transform([].concat(t)),a=new VO.default(r),n=zie.generate(o,a),u=new e(a);return n.map(u.read,u)}function oE(t){if(![].concat(t).every(o=>Id.string.isString(o)&&!Id.string.isEmpty(o)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}Zie.exports=JO});var wn={};Vt(wn,{checksumFile:()=>NP,checksumPattern:()=>LP,makeHash:()=>zs});function zs(...t){let e=(0,TP.createHash)(\"sha512\"),r=\"\";for(let o of t)typeof o==\"string\"?r+=o:o&&(r&&(e.update(r),r=\"\"),e.update(o));return r&&e.update(r),e.digest(\"hex\")}async function NP(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:\"sha512\"}){let o=await e.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,TP.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await e.closePromise(o)}}async function LP(t,{cwd:e}){let o=(await(0,XO.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(A=>`${A}/**/*`),a=await(0,XO.default)([t,...o],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=ue.toPortablePath(A),E=await oe.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await oe.readlinkPromise(h))):E.isFile()&&p.push(await oe.readFilePromise(h)),p.join(\"\\0\")})),u=(0,TP.createHash)(\"sha512\");for(let A of n)u.update(A);return u.digest(\"hex\")}var TP,XO,nh=Et(()=>{St();TP=ve(\"crypto\"),XO=$e(RP())});var W={};Vt(W,{areDescriptorsEqual:()=>nse,areIdentsEqual:()=>n1,areLocatorsEqual:()=>i1,areVirtualPackagesEquivalent:()=>Rtt,bindDescriptor:()=>Qtt,bindLocator:()=>Ftt,convertDescriptorToLocator:()=>OP,convertLocatorToDescriptor:()=>$O,convertPackageToLocator:()=>btt,convertToIdent:()=>Ptt,convertToManifestRange:()=>jtt,copyPackage:()=>e1,devirtualizeDescriptor:()=>t1,devirtualizeLocator:()=>r1,ensureDevirtualizedDescriptor:()=>xtt,ensureDevirtualizedLocator:()=>ktt,getIdentVendorPath:()=>nM,isPackageCompatible:()=>qP,isVirtualDescriptor:()=>bf,isVirtualLocator:()=>Hc,makeDescriptor:()=>In,makeIdent:()=>eA,makeLocator:()=>Qs,makeRange:()=>_P,parseDescriptor:()=>ih,parseFileStyleRange:()=>Htt,parseIdent:()=>Js,parseLocator:()=>xf,parseRange:()=>Bd,prettyDependent:()=>kL,prettyDescriptor:()=>jn,prettyIdent:()=>cs,prettyLocator:()=>qr,prettyLocatorNoColors:()=>xL,prettyRange:()=>cE,prettyReference:()=>o1,prettyResolution:()=>ZI,prettyWorkspace:()=>a1,renamePackage:()=>eM,slugifyIdent:()=>ZO,slugifyLocator:()=>lE,sortDescriptors:()=>uE,stringifyDescriptor:()=>Pa,stringifyIdent:()=>fn,stringifyLocator:()=>ba,tryParseDescriptor:()=>s1,tryParseIdent:()=>ise,tryParseLocator:()=>UP,tryParseRange:()=>_tt,virtualizeDescriptor:()=>tM,virtualizePackage:()=>rM});function eA(t,e){if(t?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:zs(t,e),scope:t,name:e}}function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zs(t.identHash,e),range:e}}function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zs(t.identHash,e),reference:e}}function Ptt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function OP(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function $O(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function btt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function eM(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 e1(t){return eM(t,t)}function tM(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return In(t,`virtual:${e}#${t.range}`)}function rM(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return eM(t,Qs(t,`virtual:${e}#${t.reference}`))}function bf(t){return t.range.startsWith($I)}function Hc(t){return t.reference.startsWith($I)}function t1(t){if(!bf(t))throw new Error(\"Not a virtual descriptor\");return In(t,t.range.replace(MP,\"\"))}function r1(t){if(!Hc(t))throw new Error(\"Not a virtual descriptor\");return Qs(t,t.reference.replace(MP,\"\"))}function xtt(t){return bf(t)?In(t,t.range.replace(MP,\"\")):t}function ktt(t){return Hc(t)?Qs(t,t.reference.replace(MP,\"\")):t}function Qtt(t,e){return t.range.includes(\"::\")?t:In(t,`${t.range}::${aE.default.stringify(e)}`)}function Ftt(t,e){return t.reference.includes(\"::\")?t:Qs(t,`${t.reference}::${aE.default.stringify(e)}`)}function n1(t,e){return t.identHash===e.identHash}function nse(t,e){return t.descriptorHash===e.descriptorHash}function i1(t,e){return t.locatorHash===e.locatorHash}function Rtt(t,e){if(!Hc(t))throw new Error(\"Invalid package type\");if(!Hc(e))throw new Error(\"Invalid package type\");if(!n1(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!nse(r,o))return!1}return!0}function Js(t){let e=ise(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function ise(t){let e=t.match(Ttt);if(!e)return null;let[,r,o]=e;return eA(typeof r<\"u\"?r:null,o)}function ih(t,e=!1){let r=s1(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function s1(t,e=!1){let r=e?t.match(Ntt):t.match(Ltt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return In(eA(u,a),A)}function xf(t,e=!1){let r=UP(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function UP(t,e=!1){let r=e?t.match(Ott):t.match(Mtt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return Qs(eA(u,a),A)}function Bd(t,e){let r=t.match(Utt);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<\"u\"?r[1]:null;if(typeof e?.requireProtocol==\"string\"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if(e?.requireProtocol&&o===null)throw new Error(`Missing protocol (${o})`);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]),u=e?.parseSelector?aE.default.parse(n):n,A=typeof r[4]<\"u\"?aE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function _tt(t,e){try{return Bd(t,e)}catch{return null}}function Htt(t,{protocol:e}){let{selector:r,params:o}=Bd(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:xf(o.locator,!0),path:r}}function $ie(t){return t=t.replaceAll(\"%\",\"%25\"),t=t.replaceAll(\":\",\"%3A\"),t=t.replaceAll(\"#\",\"%23\"),t}function qtt(t){return t===null?!1:Object.entries(t).length>0}function _P({protocol:t,source:e,selector:r,params:o}){let a=\"\";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${$ie(e)}#`),a+=$ie(r),qtt(o)&&(a+=`::${aE.default.stringify(o)}`),a}function jtt(t){let{params:e,protocol:r,source:o,selector:a}=Bd(t);for(let n in e)n.startsWith(\"__\")&&delete e[n];return _P({protocol:r,source:o,params:e,selector:a})}function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Pa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ba(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function ZO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function lE(t){let{protocol:e,selector:r}=Bd(t.reference),o=e!==null?e.replace(Gtt,\"\"):\"exotic\",a=ese.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10;return t.scope?`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`}function cs(t,e){return e.scope?`${Mt(t,`@${e.scope}/`,yt.SCOPE)}${Mt(t,e.name,yt.NAME)}`:`${Mt(t,e.name,yt.NAME)}`}function HP(t){if(t.startsWith($I)){let e=HP(t.substring(t.indexOf(\"#\")+1)),r=t.substring($I.length,$I.length+Dtt);return`${e} [${r}]`}else return t.replace(Ytt,\"?[...]\")}function cE(t,e){return`${Mt(t,HP(e),yt.RANGE)}`}function jn(t,e){return`${cs(t,e)}${Mt(t,\"@\",yt.RANGE)}${cE(t,e.range)}`}function o1(t,e){return`${Mt(t,HP(e),yt.REFERENCE)}`}function qr(t,e){return`${cs(t,e)}${Mt(t,\"@\",yt.REFERENCE)}${o1(t,e.reference)}`}function xL(t){return`${fn(t)}@${HP(t.reference)}`}function uE(t){return ks(t,[e=>fn(e),e=>e.range])}function a1(t,e){return cs(t,e.anchoredLocator)}function ZI(t,e,r){let o=bf(e)?t1(e):e;return r===null?`${jn(t,o)} \\u2192 ${bL(t).Cross}`:o.identHash===r.identHash?`${jn(t,o)} \\u2192 ${o1(t,r.reference)}`:`${jn(t,o)} \\u2192 ${qr(t,r)}`}function kL(t,e,r){return r===null?`${qr(t,e)}`:`${qr(t,e)} (via ${cE(t,r.range)})`}function nM(t){return`node_modules/${fn(t)}`}function qP(t,e){return t.conditions?Stt(t.conditions,r=>{let[,o,a]=r.match(rse),n=e[o];return n?n.includes(a):!0}):!0}var aE,ese,tse,$I,Dtt,rse,Stt,MP,Ttt,Ntt,Ltt,Ott,Mtt,Utt,Gtt,Ytt,bo=Et(()=>{aE=$e(ve(\"querystring\")),ese=$e(zn()),tse=$e(eX());jl();nh();ql();bo();$I=\"virtual:\",Dtt=5,rse=/(os|cpu|libc)=([a-z0-9_-]+)/,Stt=(0,tse.makeParser)(rse);MP=/^[^#]*#/;Ttt=/^(?:@([^/]+?)\\/)?([^@/]+)$/;Ntt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Ltt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Ott=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Mtt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Utt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;Gtt=/:$/;Ytt=/\\?.*/});var sse,ose=Et(()=>{bo();sse={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==fn(r)||e.configuration.normalizeLocator(Qs(Js(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==fn(t)||e.configuration.normalizeDependency(In(xf(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(In(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=a1(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${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 o of r.errors)e.reportWarning(57,o.message)}}}});var l1,Xn,vd=Et(()=>{l1=class{supportsDescriptor(e,r){return!!(e.range.startsWith(l1.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(l1.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(l1.protocol.length));return{...e,version:o.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Xn=l1;Xn.protocol=\"workspace:\"});var kr={};Vt(kr,{SemVer:()=>Ase.SemVer,clean:()=>Ktt,getComparator:()=>cse,mergeComparators:()=>iM,satisfiesWithPrereleases:()=>kf,simplifyRanges:()=>sM,stringifyComparator:()=>use,validRange:()=>xa});function kf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=ase.get(o);if(typeof a>\"u\")try{a=new sh.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{ase.set(o,a||null)}else if(a===null)return!1;let n;try{n=new sh.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function xa(t){if(t.indexOf(\":\")!==-1)return null;let e=lse.get(t);if(typeof e<\"u\")return e;try{e=new sh.default.Range(t)}catch{e=null}return lse.set(t,e),e}function Ktt(t){let e=Wtt.exec(t);return e?e[1]:null}function cse(t){if(t.semver===sh.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 iM(t){if(t.length===0)return null;let e=null,r=null;for(let o of t){if(o.gt){let a=e!==null?sh.default.compare(o.gt[1],e[1]):null;(a===null||a>0||a===0&&o.gt[0]===\">\")&&(e=o.gt)}if(o.lt){let a=r!==null?sh.default.compare(o.lt[1],r[1]):null;(a===null||a<0||a===0&&o.lt[0]===\"<\")&&(r=o.lt)}}if(e&&r){let o=sh.default.compare(e[1],r[1]);if(o===0&&(e[0]===\">\"||r[0]===\"<\")||o>0)return null}return{gt:e,lt:r}}function use(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 sM(t){let e=t.map(o=>xa(o).set.map(a=>a.map(n=>cse(n)))),r=e.shift().map(o=>iM(o)).filter(o=>o!==null);for(let o of e){let a=[];for(let n of r)for(let u of o){let A=iM([n,...u]);A!==null&&a.push(A)}r=a}return r.length===0?null:r.map(o=>use(o)).join(\" || \")}var sh,Ase,ase,lse,Wtt,Qf=Et(()=>{sh=$e(zn()),Ase=$e(zn()),ase=new Map;lse=new Map;Wtt=/^(?:[\\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 fse(t){let e=t.match(/^[ \\t]+/m);return e?e[0]:\"  \"}function pse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function $o(t){return t.replace(/\\\\/g,\"/\")}function jP(t,{yamlCompatibilityMode:e}){return e?CL(t):typeof t>\"u\"||typeof t==\"boolean\"?t:null}function hse(t,e){let r=e.search(/[^!]/);if(r===-1)return\"invalid\";let o=r%2===0?\"\":\"!\",a=e.slice(r);return`${o}${t}=${a}`}function oM(t,e){return e.length===1?hse(t,e[0]):`(${e.map(r=>hse(t,r)).join(\" | \")})`}var gse,AE,Ot,fE=Et(()=>{St();Nl();gse=$e(zn());vd();ql();Qf();bo();AE=class{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 async tryFind(e,{baseFs:r=new Tn}={}){let o=V.join(e,\"package.json\");try{return await AE.fromFile(o,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await AE.tryFind(e,{baseFs:r});if(o===null)throw new Error(\"Manifest not found\");return o}static async fromFile(e,{baseFs:r=new Tn}={}){let o=new AE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new AE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(pse(e)||\"{}\")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=fse(e)}async loadFile(e,{baseFs:r=new Tn}){let o=await r.readFilePromise(e,\"utf8\"),a;try{a=JSON.parse(pse(o)||\"{}\")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=fse(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!=\"object\"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name==\"string\")try{this.name=Js(e.name)}catch{o.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 u of e.os)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'os' field\")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(u)}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=$o(e.main):this.main=null,typeof e.module==\"string\"?this.module=$o(e.module):this.module=null,e.browser!=null)if(typeof e.browser==\"string\")this.browser=$o(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set($o(n),typeof u==\"string\"?$o(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin==\"string\")e.bin.trim()===\"\"?o.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,$o(e.bin)):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.bin==\"object\"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!=\"string\"||u.trim()===\"\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Js(n);this.bin.set(A.name,$o(u))}if(this.scripts=new Map,typeof e.scripts==\"object\"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!=\"string\"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies==\"object\"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies==\"object\"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies==\"object\"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!=\"string\"||!u.startsWith(Xn.protocol)&&!xa(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u=\"*\");let p=In(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces==\"object\"&&e.workspaces!==null&&e.workspaces.nohoist&&o.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\"){o.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,u]of Object.entries(e.dependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=ih(n),p=this.ensureDependencyMeta(A),h=jP(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=jP(u.optional,{yamlCompatibilityMode:r});if(E===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let I=jP(u.unplugged,{yamlCompatibilityMode:r});if(I===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:I})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta==\"object\"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=ih(n),p=this.ensurePeerDependencyMeta(A),h=jP(u.optional,{yamlCompatibilityMode:r});if(h===null){o.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,u]of Object.entries(e.resolutions)){if(typeof u!=\"string\"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:MD(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!=\"string\"){o.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=$o(e.publishConfig.main)),typeof e.publishConfig.module==\"string\"&&(this.publishConfig.module=$o(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser==\"string\")this.publishConfig.browser=$o(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set($o(n),typeof u==\"string\"?$o(u):u)}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,$o(e.publishConfig.bin)]]):o.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,u]of Object.entries(e.publishConfig.bin)){if(typeof u!=\"string\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,$o(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!=\"string\"){o.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add($o(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:o.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof e.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies==\"object\"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p);let h=In(A,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged==\"boolean\"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}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(oM(\"os\",this.os)),this.cpu&&this.cpu.length>0&&e.push(oM(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&e.push(oM(\"libc\",this.libc)),e.length>0?e.join(\" & \"):null}ensureDependencyMeta(e){if(e.range!==\"unknown\"&&!gse.default.valid(e.range))throw new Error(`Invalid meta field range for '${Pa(e)}'`);let r=fn(e),o=e.range!==\"unknown\"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!==\"unknown\")throw new Error(`Invalid meta field range for '${Pa(e)}'`);let r=fn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.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,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=fn(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(u=>({[u]:n.get(u)}))))}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 o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(fn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...uE(o).map(n=>({[fn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...uE(a).map(n=>({[fn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...uE(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...uE(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of ks(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of ks(u.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=A!==null?Pa(In(Js(n),A)):n,E={...p};r&&A===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({},...ks(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[UD(n)]:u}))):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,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Ot=AE;Ot.fileName=\"package.json\",Ot.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],Ot.hardDependencies=[\"dependencies\",\"devDependencies\"]});var mse=_((UNt,dse)=>{var Vtt=_l(),Jtt=function(){return Vtt.Date.now()};dse.exports=Jtt});var Ese=_((_Nt,yse)=>{var ztt=/\\s/;function Xtt(t){for(var e=t.length;e--&&ztt.test(t.charAt(e)););return e}yse.exports=Xtt});var wse=_((HNt,Cse)=>{var Ztt=Ese(),$tt=/^\\s+/;function ert(t){return t&&t.slice(0,Ztt(t)+1).replace($tt,\"\")}Cse.exports=ert});var pE=_((qNt,Ise)=>{var trt=hd(),rrt=Ju(),nrt=\"[object Symbol]\";function irt(t){return typeof t==\"symbol\"||rrt(t)&&trt(t)==nrt}Ise.exports=irt});var Sse=_((jNt,Dse)=>{var srt=wse(),Bse=il(),ort=pE(),vse=0/0,art=/^[-+]0x[0-9a-f]+$/i,lrt=/^0b[01]+$/i,crt=/^0o[0-7]+$/i,urt=parseInt;function Art(t){if(typeof t==\"number\")return t;if(ort(t))return vse;if(Bse(t)){var e=typeof t.valueOf==\"function\"?t.valueOf():t;t=Bse(e)?e+\"\":e}if(typeof t!=\"string\")return t===0?t:+t;t=srt(t);var r=lrt.test(t);return r||crt.test(t)?urt(t.slice(2),r?2:8):art.test(t)?vse:+t}Dse.exports=Art});var xse=_((GNt,bse)=>{var frt=il(),aM=mse(),Pse=Sse(),prt=\"Expected a function\",hrt=Math.max,grt=Math.min;function drt(t,e,r){var o,a,n,u,A,p,h=0,E=!1,I=!1,v=!0;if(typeof t!=\"function\")throw new TypeError(prt);e=Pse(e)||0,frt(r)&&(E=!!r.leading,I=\"maxWait\"in r,n=I?hrt(Pse(r.maxWait)||0,e):n,v=\"trailing\"in r?!!r.trailing:v);function x(ce){var me=o,he=a;return o=a=void 0,h=ce,u=t.apply(he,me),u}function C(ce){return h=ce,A=setTimeout(U,e),E?x(ce):u}function R(ce){var me=ce-p,he=ce-h,Be=e-me;return I?grt(Be,n-he):Be}function L(ce){var me=ce-p,he=ce-h;return p===void 0||me>=e||me<0||I&&he>=n}function U(){var ce=aM();if(L(ce))return J(ce);A=setTimeout(U,R(ce))}function J(ce){return A=void 0,v&&o?x(ce):(o=a=void 0,u)}function te(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function ae(){return A===void 0?u:J(aM())}function fe(){var ce=aM(),me=L(ce);if(o=arguments,a=this,p=ce,me){if(A===void 0)return C(p);if(I)return clearTimeout(A),A=setTimeout(U,e),x(p)}return A===void 0&&(A=setTimeout(U,e)),u}return fe.cancel=te,fe.flush=ae,fe}bse.exports=drt});var lM=_((YNt,kse)=>{var mrt=xse(),yrt=il(),Ert=\"Expected a function\";function Crt(t,e,r){var o=!0,a=!0;if(typeof t!=\"function\")throw new TypeError(Ert);return yrt(r)&&(o=\"leading\"in r?!!r.leading:o,a=\"trailing\"in r?!!r.trailing:a),mrt(t,e,{leading:o,maxWait:e,trailing:a})}kse.exports=Crt});function Irt(t){return typeof t.reportCode<\"u\"}var Qse,Fse,Rse,wrt,zt,Xs,Yl=Et(()=>{Qse=$e(lM()),Fse=ve(\"stream\"),Rse=ve(\"string_decoder\"),wrt=15,zt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Xs=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,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(E=>{o=E}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return A},hasProgress:!0,hasTitle:!1,set:n,tick:u}}static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,Qse.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/wrt),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),o?.reportExtra?.(this))}reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),o?.reportExtra?.(this))}reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),o?.reportExtra?.(this))}reportExceptionOnce(e){Irt(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 Fse.PassThrough,o=new Rse.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var hE,cM=Et(()=>{Yl();bo();hE=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 o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new zt(11,`${qr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var Dd,uM=Et(()=>{bo();Dd=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,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${jn(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${qr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var gE,AM=Et(()=>{St();bo();gE=class{supports(e){return!!e.reference.startsWith(\"virtual:\")}getLocalPath(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return lE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get(\"virtualFolder\"),u=this.getLocatorFilename(e),A=mi.makeVirtualPath(n,u,a),p=new Uu(A,{baseFs:r.packageFs,pathUtils:V});return{...r,packageFs:p}}}});var dE,c1,Tse=Et(()=>{dE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(dE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(dE.protocol)}supportsDescriptor(e,r){return dE.isVirtualDescriptor(e)}supportsLocator(e,r){return dE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){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,o){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,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')}},c1=dE;c1.protocol=\"virtual:\"});var mE,fM=Et(()=>{St();vd();mE=class{supports(e){return!!e.reference.startsWith(Xn.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new gn(o),prefixPath:Bt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Xn.protocol.length))}}});function u1(t){return typeof t==\"object\"&&t!==null&&!Array.isArray(t)}function Nse(t){return typeof t>\"u\"?3:u1(t)?0:Array.isArray(t)?1:2}function gM(t,e){return Object.hasOwn(t,e)}function vrt(t){return u1(t)&&gM(t,\"onConflict\")&&typeof t.onConflict==\"string\"}function Drt(t){if(typeof t>\"u\")return{onConflict:\"default\",value:t};if(!vrt(t))return{onConflict:\"default\",value:t};if(gM(t,\"value\"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function Lse(t,e){let r=u1(t)&&gM(t,e)?t[e]:void 0;return Drt(r)}function yE(t,e){return[t,e,Ose]}function dM(t){return Array.isArray(t)?t[2]===Ose:!1}function pM(t,e){if(u1(t)){let r={};for(let o of Object.keys(t))r[o]=pM(t[o],e);return yE(e,r)}return Array.isArray(t)?yE(e,t.map(r=>pM(r,e))):yE(e,t)}function hM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let E=a-1;E>=o;--E){let[I,v]=t[E],{onConflict:x,value:C}=Lse(v,r),R=Nse(C);if(R!==3){if(n??=R,R!==n||x===\"hardReset\"){p=A;break}if(R===2)return yE(I,C);if(u.unshift([I,C]),x===\"reset\"){p=E;break}x===\"extend\"&&E===o&&(o=0),A=E}}if(typeof n>\"u\")return null;let h=u.map(([E])=>E).join(\", \");switch(n){case 1:return yE(h,new Array().concat(...u.map(([E,I])=>I.map(v=>pM(v,E)))));case 0:{let E=Object.assign({},...u.map(([,R])=>R)),I=Object.keys(E),v={},x=t.map(([R,L])=>[R,Lse(L,r).value]),C=Brt(x,([R,L])=>{let U=Nse(L);return U!==0&&U!==3});if(C!==-1){let R=x.slice(C+1);for(let L of I)v[L]=hM(R,e,L,0,R.length)}else for(let R of I)v[R]=hM(x,e,R,p,x.length);return yE(h,v)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function Mse(t){return hM(t.map(([e,r])=>[e,{[\".\"]:r}]),[],\".\",0,t.length)}function A1(t){return dM(t)?t[1]:t}function GP(t){let e=dM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>GP(r));if(u1(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=GP(a);return r}return e}function mM(t){return dM(t)?t[0]:null}var Brt,Ose,Use=Et(()=>{Brt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Ose=Symbol()});var YP={};Vt(YP,{getDefaultGlobalFolder:()=>EM,getHomeFolder:()=>EE,isFolderInside:()=>CM});function EM(){if(process.platform===\"win32\"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,yM.homedir)(),\"AppData\",\"Local\"));return V.resolve(t,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return V.resolve(t,\"yarn/berry\")}return V.resolve(EE(),\".yarn/berry\")}function EE(){return ue.toPortablePath((0,yM.homedir)()||\"/usr/local/share\")}function CM(t,e){let r=V.relative(e,t);return r&&!r.startsWith(\"..\")&&!V.isAbsolute(r)}var yM,WP=Et(()=>{St();yM=ve(\"os\")});var jse=_(CE=>{\"use strict\";var iLt=ve(\"net\"),Prt=ve(\"tls\"),wM=ve(\"http\"),_se=ve(\"https\"),brt=ve(\"events\"),sLt=ve(\"assert\"),xrt=ve(\"util\");CE.httpOverHttp=krt;CE.httpsOverHttp=Qrt;CE.httpOverHttps=Frt;CE.httpsOverHttps=Rrt;function krt(t){var e=new Ff(t);return e.request=wM.request,e}function Qrt(t){var e=new Ff(t);return e.request=wM.request,e.createSocket=Hse,e.defaultPort=443,e}function Frt(t){var e=new Ff(t);return e.request=_se.request,e}function Rrt(t){var e=new Ff(t);return e.request=_se.request,e.createSocket=Hse,e.defaultPort=443,e}function Ff(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||wM.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on(\"free\",function(o,a,n,u){for(var A=qse(a,n,u),p=0,h=e.requests.length;p<h;++p){var E=e.requests[p];if(E.host===A.host&&E.port===A.port){e.requests.splice(p,1),E.request.onSocket(o);return}}o.destroy(),e.removeSocket(o)})}xrt.inherits(Ff,brt.EventEmitter);Ff.prototype.addRequest=function(e,r,o,a){var n=this,u=IM({request:e},n.options,qse(r,o,a));if(n.sockets.length>=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on(\"free\",p),A.on(\"close\",h),A.on(\"agentRemove\",h),e.onSocket(A);function p(){n.emit(\"free\",A,u)}function h(E){n.removeSocket(A),A.removeListener(\"free\",p),A.removeListener(\"close\",h),A.removeListener(\"agentRemove\",h)}})};Ff.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=IM({},o.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\")),oh(\"making CONNECT request\");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once(\"response\",A),u.once(\"upgrade\",p),u.once(\"connect\",h),u.once(\"error\",E),u.end();function A(I){I.upgrade=!0}function p(I,v,x){process.nextTick(function(){h(I,v,x)})}function h(I,v,x){if(u.removeAllListeners(),v.removeAllListeners(),I.statusCode!==200){oh(\"tunneling socket could not be established, statusCode=%d\",I.statusCode),v.destroy();var C=new Error(\"tunneling socket could not be established, statusCode=\"+I.statusCode);C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}if(x.length>0){oh(\"got illegal response body from proxy\"),v.destroy();var C=new Error(\"got illegal response body from proxy\");C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}return oh(\"tunneling connection has established\"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function E(I){u.removeAllListeners(),oh(`tunneling socket could not be established, cause=%s\n`,I.message,I.stack);var v=new Error(\"tunneling socket could not be established, cause=\"+I.message);v.code=\"ECONNRESET\",e.request.emit(\"error\",v),o.removeSocket(a)}};Ff.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function Hse(t,e){var r=this;Ff.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader(\"host\"),n=IM({},r.options,{socket:o,servername:a?a.replace(/:.*$/,\"\"):t.host}),u=Prt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function qse(t,e,r){return typeof t==\"string\"?{host:t,port:e,localAddress:r}:t}function IM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e];if(typeof o==\"object\")for(var a=Object.keys(o),n=0,u=a.length;n<u;++n){var A=a[n];o[A]!==void 0&&(t[A]=o[A])}}return t}var oh;process.env.NODE_DEBUG&&/\\btunnel\\b/.test(process.env.NODE_DEBUG)?oh=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)}:oh=function(){};CE.debug=oh});var Yse=_((aLt,Gse)=>{Gse.exports=jse()});var Tf=_((Rf,KP)=>{\"use strict\";Object.defineProperty(Rf,\"__esModule\",{value:!0});var Wse=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function Trt(t){return Wse.includes(t)}var Nrt=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...Wse];function Lrt(t){return Nrt.includes(t)}var Ort=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function Mrt(t){return Ort.includes(t)}function wE(t){return e=>typeof e===t}var{toString:Kse}=Object.prototype,f1=t=>{let e=Kse.call(t).slice(8,-1);if(/HTML\\w+Element/.test(e)&&be.domElement(t))return\"HTMLElement\";if(Lrt(e))return e},ei=t=>e=>f1(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=f1(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=wE(\"undefined\");be.string=wE(\"string\");var Urt=wE(\"number\");be.number=t=>Urt(t)&&!be.nan(t);be.bigint=wE(\"bigint\");be.function_=wE(\"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=wE(\"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,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};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=>be.iterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>ei(\"Promise\")(t);var _rt=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)||_rt(t);be.generatorFunction=ei(\"GeneratorFunction\");be.asyncGeneratorFunction=t=>f1(t)===\"AsyncGeneratorFunction\";be.asyncFunction=t=>f1(t)===\"AsyncFunction\";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty(\"prototype\");be.regExp=ei(\"RegExp\");be.date=ei(\"Date\");be.error=ei(\"Error\");be.map=t=>ei(\"Map\")(t);be.set=t=>ei(\"Set\")(t);be.weakMap=t=>ei(\"WeakMap\")(t);be.weakSet=t=>ei(\"WeakSet\")(t);be.int8Array=ei(\"Int8Array\");be.uint8Array=ei(\"Uint8Array\");be.uint8ClampedArray=ei(\"Uint8ClampedArray\");be.int16Array=ei(\"Int16Array\");be.uint16Array=ei(\"Uint16Array\");be.int32Array=ei(\"Int32Array\");be.uint32Array=ei(\"Uint32Array\");be.float32Array=ei(\"Float32Array\");be.float64Array=ei(\"Float64Array\");be.bigInt64Array=ei(\"BigInt64Array\");be.bigUint64Array=ei(\"BigUint64Array\");be.arrayBuffer=ei(\"ArrayBuffer\");be.sharedArrayBuffer=ei(\"SharedArrayBuffer\");be.dataView=ei(\"DataView\");be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>ei(\"URL\")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>Boolean(t);be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||Mrt(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(Kse.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>Trt(f1(t));var Hrt=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&Hrt(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 qrt=1,jrt=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];be.domElement=t=>be.object(t)&&t.nodeType===qrt&&be.string(t.nodeName)&&!be.plainObject(t)&&jrt.every(e=>e in t);be.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)[\"@@observable\"])===null||a===void 0?void 0:a.call(o)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var Vse=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=Vse(0);be.oddInteger=Vse(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;be.nonEmptyString=t=>be.string(t)&&t.length>0;var Grt=t=>be.string(t)&&!/\\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||Grt(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=>ei(\"FormData\")(t);be.urlSearchParams=t=>ei(\"URLSearchParams\")(t);var Jse=(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(o=>Jse(Array.prototype.some,o,e));be.all=(t,...e)=>Jse(Array.prototype.every,t,e);var Ht=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\\`${be(u)}\\``))].join(\", \")}`:`received value of type \\`${be(r)}\\``;throw new TypeError(`Expected value which is \\`${e}\\`, ${n}.`)}};Rf.assert={undefined:t=>Ht(be.undefined(t),\"undefined\",t),string:t=>Ht(be.string(t),\"string\",t),number:t=>Ht(be.number(t),\"number\",t),bigint:t=>Ht(be.bigint(t),\"bigint\",t),function_:t=>Ht(be.function_(t),\"Function\",t),null_:t=>Ht(be.null_(t),\"null\",t),class_:t=>Ht(be.class_(t),\"Class\",t),boolean:t=>Ht(be.boolean(t),\"boolean\",t),symbol:t=>Ht(be.symbol(t),\"symbol\",t),numericString:t=>Ht(be.numericString(t),\"string with a number\",t),array:(t,e)=>{Ht(be.array(t),\"Array\",t),e&&t.forEach(e)},buffer:t=>Ht(be.buffer(t),\"Buffer\",t),nullOrUndefined:t=>Ht(be.nullOrUndefined(t),\"null or undefined\",t),object:t=>Ht(be.object(t),\"Object\",t),iterable:t=>Ht(be.iterable(t),\"Iterable\",t),asyncIterable:t=>Ht(be.asyncIterable(t),\"AsyncIterable\",t),generator:t=>Ht(be.generator(t),\"Generator\",t),asyncGenerator:t=>Ht(be.asyncGenerator(t),\"AsyncGenerator\",t),nativePromise:t=>Ht(be.nativePromise(t),\"native Promise\",t),promise:t=>Ht(be.promise(t),\"Promise\",t),generatorFunction:t=>Ht(be.generatorFunction(t),\"GeneratorFunction\",t),asyncGeneratorFunction:t=>Ht(be.asyncGeneratorFunction(t),\"AsyncGeneratorFunction\",t),asyncFunction:t=>Ht(be.asyncFunction(t),\"AsyncFunction\",t),boundFunction:t=>Ht(be.boundFunction(t),\"Function\",t),regExp:t=>Ht(be.regExp(t),\"RegExp\",t),date:t=>Ht(be.date(t),\"Date\",t),error:t=>Ht(be.error(t),\"Error\",t),map:t=>Ht(be.map(t),\"Map\",t),set:t=>Ht(be.set(t),\"Set\",t),weakMap:t=>Ht(be.weakMap(t),\"WeakMap\",t),weakSet:t=>Ht(be.weakSet(t),\"WeakSet\",t),int8Array:t=>Ht(be.int8Array(t),\"Int8Array\",t),uint8Array:t=>Ht(be.uint8Array(t),\"Uint8Array\",t),uint8ClampedArray:t=>Ht(be.uint8ClampedArray(t),\"Uint8ClampedArray\",t),int16Array:t=>Ht(be.int16Array(t),\"Int16Array\",t),uint16Array:t=>Ht(be.uint16Array(t),\"Uint16Array\",t),int32Array:t=>Ht(be.int32Array(t),\"Int32Array\",t),uint32Array:t=>Ht(be.uint32Array(t),\"Uint32Array\",t),float32Array:t=>Ht(be.float32Array(t),\"Float32Array\",t),float64Array:t=>Ht(be.float64Array(t),\"Float64Array\",t),bigInt64Array:t=>Ht(be.bigInt64Array(t),\"BigInt64Array\",t),bigUint64Array:t=>Ht(be.bigUint64Array(t),\"BigUint64Array\",t),arrayBuffer:t=>Ht(be.arrayBuffer(t),\"ArrayBuffer\",t),sharedArrayBuffer:t=>Ht(be.sharedArrayBuffer(t),\"SharedArrayBuffer\",t),dataView:t=>Ht(be.dataView(t),\"DataView\",t),urlInstance:t=>Ht(be.urlInstance(t),\"URL\",t),urlString:t=>Ht(be.urlString(t),\"string with a URL\",t),truthy:t=>Ht(be.truthy(t),\"truthy\",t),falsy:t=>Ht(be.falsy(t),\"falsy\",t),nan:t=>Ht(be.nan(t),\"NaN\",t),primitive:t=>Ht(be.primitive(t),\"primitive\",t),integer:t=>Ht(be.integer(t),\"integer\",t),safeInteger:t=>Ht(be.safeInteger(t),\"integer\",t),plainObject:t=>Ht(be.plainObject(t),\"plain object\",t),typedArray:t=>Ht(be.typedArray(t),\"TypedArray\",t),arrayLike:t=>Ht(be.arrayLike(t),\"array-like\",t),domElement:t=>Ht(be.domElement(t),\"HTMLElement\",t),observable:t=>Ht(be.observable(t),\"Observable\",t),nodeStream:t=>Ht(be.nodeStream(t),\"Node.js Stream\",t),infinite:t=>Ht(be.infinite(t),\"infinite number\",t),emptyArray:t=>Ht(be.emptyArray(t),\"empty array\",t),nonEmptyArray:t=>Ht(be.nonEmptyArray(t),\"non-empty array\",t),emptyString:t=>Ht(be.emptyString(t),\"empty string\",t),nonEmptyString:t=>Ht(be.nonEmptyString(t),\"non-empty string\",t),emptyStringOrWhitespace:t=>Ht(be.emptyStringOrWhitespace(t),\"empty string or whitespace\",t),emptyObject:t=>Ht(be.emptyObject(t),\"empty object\",t),nonEmptyObject:t=>Ht(be.nonEmptyObject(t),\"non-empty object\",t),emptySet:t=>Ht(be.emptySet(t),\"empty set\",t),nonEmptySet:t=>Ht(be.nonEmptySet(t),\"non-empty set\",t),emptyMap:t=>Ht(be.emptyMap(t),\"empty map\",t),nonEmptyMap:t=>Ht(be.nonEmptyMap(t),\"non-empty map\",t),propertyKey:t=>Ht(be.propertyKey(t),\"PropertyKey\",t),formData:t=>Ht(be.formData(t),\"FormData\",t),urlSearchParams:t=>Ht(be.urlSearchParams(t),\"URLSearchParams\",t),evenInteger:t=>Ht(be.evenInteger(t),\"even integer\",t),oddInteger:t=>Ht(be.oddInteger(t),\"odd integer\",t),directInstanceOf:(t,e)=>Ht(be.directInstanceOf(t,e),\"T\",t),inRange:(t,e)=>Ht(be.inRange(t,e),\"in range\",t),any:(t,...e)=>Ht(be.any(t,...e),\"predicate returns truthy for any value\",e,{multipleValues:!0}),all:(t,...e)=>Ht(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(Rf.assert,{class:{value:Rf.assert.class_},function:{value:Rf.assert.function_},null:{value:Rf.assert.null_}});Rf.default=be;KP.exports=be;KP.exports.default=be;KP.exports.assert=Rf.assert});var zse=_((lLt,BM)=>{\"use strict\";var VP=class extends Error{constructor(e){super(e||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},IE=class{static fn(e){return(...r)=>new IE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}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 VP(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(IE.prototype,Promise.prototype);BM.exports=IE;BM.exports.CancelError=VP});var Xse=_((DM,SM)=>{\"use strict\";Object.defineProperty(DM,\"__esModule\",{value:!0});var Yrt=ve(\"tls\"),vM=(t,e)=>{let r;typeof e==\"function\"?r={connect:e}:r=e;let o=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",u=()=>{o&&r.connect(),t instanceof Yrt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once(\"secureConnect\",r.secureConnect)),n&&t.once(\"close\",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once(\"connect\",u):t.destroyed&&n&&r.close(t._hadError)};DM.default=vM;SM.exports=vM;SM.exports.default=vM});var Zse=_((bM,xM)=>{\"use strict\";Object.defineProperty(bM,\"__esModule\",{value:!0});var Wrt=Xse(),Krt=Number(process.versions.node.split(\".\")[0]),PM=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=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p===\"error\"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener(\"abort\",()=>{e.abort=Date.now(),(!e.response||Krt>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener(\"lookup\",A),Wrt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener(\"lookup\",A),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?o(t.socket):t.prependOnceListener(\"socket\",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??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\",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener(\"end\",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};bM.default=PM;xM.exports=PM;xM.exports.default=PM});var soe=_((cLt,FM)=>{\"use strict\";var{V4MAPPED:Vrt,ADDRCONFIG:Jrt,ALL:ioe,promises:{Resolver:$se},lookup:zrt}=ve(\"dns\"),{promisify:kM}=ve(\"util\"),Xrt=ve(\"os\"),BE=Symbol(\"cacheableLookupCreateConnection\"),QM=Symbol(\"cacheableLookupInstance\"),eoe=Symbol(\"expires\"),Zrt=typeof ioe==\"number\",toe=t=>{if(!(t&&typeof t.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},$rt=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},roe=()=>{let t=!1,e=!1;for(let r of Object.values(Xrt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family===\"IPv6\"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},ent=t=>Symbol.iterator in t,noe={ttl:!0},tnt={all:!0},JP=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new $se,lookup:u=zrt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=kM(u),this._resolver instanceof $se?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=kM(this._resolver.resolve4.bind(this._resolver)),this._resolve6=kM(this._resolver.resolve6.bind(this._resolver))),this._iface=roe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.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,o){if(typeof r==\"function\"?(o=r,r={}):typeof r==\"number\"&&(r={family:r}),!o)throw new Error(\"Callback must be a function.\");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r==\"number\"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&Vrt&&(Zrt&&r.hints&ioe||a.length===0)?$rt(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&Jrt){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code=\"ENOTFOUND\",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[o,a]=await Promise.all([this._resolve4(e,noe),this._resolve6(e,noe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)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,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[eoe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}ent(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,tnt);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 o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),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 o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[eoe];a>=A?this._cache.delete(n):A<o&&(o=A)}o!==1/0&&this._tick(o-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(toe(e),BE in e)throw new Error(\"CacheableLookup has been already installed\");e[BE]=e.createConnection,e[QM]=this,e.createConnection=(r,o)=>(\"lookup\"in r||(r.lookup=this.lookup),e[BE](r,o))}uninstall(e){if(toe(e),e[BE]){if(e[QM]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");e.createConnection=e[BE],delete e[BE],delete e[QM]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=roe(),(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()}};FM.exports=JP;FM.exports.default=JP});var loe=_((uLt,RM)=>{\"use strict\";var rnt=typeof URL>\"u\"?ve(\"url\").URL:URL,nnt=\"text/plain\",int=\"us-ascii\",ooe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),snt=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(\";\"),a=r[2],n=e?\"\":r[3],u=!1;o[o.length-1]===\"base64\"&&(o.pop(),u=!0);let A=(o.shift()||\"\").toLowerCase(),h=[...o.map(E=>{let[I,v=\"\"]=E.split(\"=\").map(x=>x.trim());return I===\"charset\"&&(v=v.toLowerCase(),v===int)?\"\":`${I}${v?`=${v}`:\"\"}`}).filter(Boolean)];return u&&h.push(\"base64\"),(h.length!==0||A&&A!==nnt)&&h.unshift(A),`data:${h.join(\";\")},${u?a.trim():a}${n?`#${n}`:\"\"}`},aoe=(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 snt(t,e);let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new rnt(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,u)=>/^(?!\\/)/g.test(u)?`${u}/`:\"/\")),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(\"/\"),u=n[n.length-1];ooe(u,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()])ooe(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};RM.exports=aoe;RM.exports.default=aoe});var Aoe=_((ALt,uoe)=>{uoe.exports=coe;function coe(t,e){if(t&&e)return coe(t)(e);if(typeof t!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];var n=t.apply(this,o),u=o[o.length-1];return typeof n==\"function\"&&n!==u&&Object.keys(u).forEach(function(A){n[A]=u[A]}),n}}});var NM=_((fLt,TM)=>{var foe=Aoe();TM.exports=foe(zP);TM.exports.strict=foe(poe);zP.proto=zP(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return zP(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return poe(this)},configurable:!0})});function zP(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function poe(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 LM=_((pLt,goe)=>{var ont=NM(),ant=function(){},lnt=function(t){return t.setHeader&&typeof t.abort==\"function\"},cnt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},hoe=function(t,e,r){if(typeof e==\"function\")return hoe(t,null,e);e||(e={}),r=ont(r||ant);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},E=function(C){r.call(t,C?new Error(\"exited with error code: \"+C):null)},I=function(C){r.call(t,C)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error(\"premature close\"));if(u&&!(o&&o.ended))return r.call(t,new Error(\"premature close\"))},x=function(){t.req.on(\"finish\",p)};return lnt(t)?(t.on(\"complete\",p),t.on(\"abort\",v),t.req?x():t.on(\"request\",x)):u&&!o&&(t.on(\"end\",A),t.on(\"close\",A)),cnt(t)&&t.on(\"exit\",E),t.on(\"end\",h),t.on(\"finish\",p),e.error!==!1&&t.on(\"error\",I),t.on(\"close\",v),function(){t.removeListener(\"complete\",p),t.removeListener(\"abort\",v),t.removeListener(\"request\",x),t.req&&t.req.removeListener(\"finish\",p),t.removeListener(\"end\",A),t.removeListener(\"close\",A),t.removeListener(\"finish\",p),t.removeListener(\"exit\",E),t.removeListener(\"end\",h),t.removeListener(\"error\",I),t.removeListener(\"close\",v)}};goe.exports=hoe});var yoe=_((hLt,moe)=>{var unt=NM(),Ant=LM(),OM=ve(\"fs\"),p1=function(){},fnt=/^v?\\.0/.test(process.version),XP=function(t){return typeof t==\"function\"},pnt=function(t){return!fnt||!OM?!1:(t instanceof(OM.ReadStream||p1)||t instanceof(OM.WriteStream||p1))&&XP(t.close)},hnt=function(t){return t.setHeader&&XP(t.abort)},gnt=function(t,e,r,o){o=unt(o);var a=!1;t.on(\"close\",function(){a=!0}),Ant(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,pnt(t))return t.close(p1);if(hnt(t))return t.abort();if(XP(t.destroy))return t.destroy();o(u||new Error(\"stream was destroyed\"))}}},doe=function(t){t()},dnt=function(t,e){return t.pipe(e)},mnt=function(){var t=Array.prototype.slice.call(arguments),e=XP(t[t.length-1]||p1)&&t.pop()||p1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error(\"pump requires two streams per minimum\");var r,o=t.map(function(a,n){var u=n<t.length-1,A=n>0;return gnt(a,u,A,function(p){r||(r=p),p&&o.forEach(doe),!u&&(o.forEach(doe),e(r))})});return t.reduce(dnt)};moe.exports=mnt});var Coe=_((gLt,Eoe)=>{\"use strict\";var{PassThrough:ynt}=ve(\"stream\");Eoe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r===\"buffer\",a=!1;e?a=!(r||o):r=r||\"utf8\",o&&(r=null);let n=new ynt({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on(\"data\",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(\"\"),n.getBufferedLength=()=>u,n}});var woe=_((dLt,vE)=>{\"use strict\";var Ent=yoe(),Cnt=Coe(),ZP=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function $P(t,e){if(!t)return Promise.reject(new Error(\"Expected a stream\"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=Ent(t,Cnt(e),A=>{if(A){u(A);return}a()}),o.on(\"data\",()=>{o.getBufferedLength()>r&&u(new ZP)})}),o.getBufferedValue()}vE.exports=$P;vE.exports.default=$P;vE.exports.buffer=(t,e)=>$P(t,{...e,encoding:\"buffer\"});vE.exports.array=(t,e)=>$P(t,{...e,array:!0});vE.exports.MaxBufferError=ZP});var Boe=_((yLt,Ioe)=>{\"use strict\";var wnt=new Set([200,203,204,206,300,301,404,405,410,414,501]),Int=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),Bnt=new Set([500,502,503,504]),vnt={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},Dnt={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function Sd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Snt(t){return t?Bnt.has(t.status):!0}function MM(t){let e={};if(!t)return e;let r=t.trim().split(/\\s*,\\s*/);for(let o of r){let[a,n]=o.split(/\\s*=\\s*/,2);e[a]=n===void 0?!0:n.replace(/^\"|\"$/g,\"\")}return e}function Pnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+\"=\"+o)}if(!!e.length)return e.join(\", \")}Ioe.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!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=MM(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=MM(e.headers[\"cache-control\"]),u&&\"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\":Pnt(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())&&Int.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||wnt.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=MM(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 o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)vnt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\\s*,\\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.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 Sd(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 Sd(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return Sd(this._rescc[\"max-age\"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||o<r?0:Math.max(e,(o-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let o=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(o)&&r>o)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+Sd(this._rescc[\"stale-if-error\"]),o=e+Sd(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Sd(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Sd(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()&&Snt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?o=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!Dnt[u]?r.headers[u]:this._resHeaders[u];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 eb=_((ELt,voe)=>{\"use strict\";voe.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var Soe=_((CLt,Doe)=>{\"use strict\";var bnt=ve(\"stream\").Readable,xnt=eb(),UM=class extends bnt{constructor(e,r,o,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(!(o 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=xnt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};Doe.exports=UM});var boe=_((wLt,Poe)=>{\"use strict\";var knt=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];Poe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(knt));for(let o of r)o in e||(e[o]=typeof t[o]==\"function\"?t[o].bind(t):t[o])}});var koe=_((ILt,xoe)=>{\"use strict\";var Qnt=ve(\"stream\").PassThrough,Fnt=boe(),Rnt=t=>{if(!(t&&t.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let e=new Qnt;return Fnt(t,e),t.pipe(e)};xoe.exports=Rnt});var Qoe=_(_M=>{_M.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=\"\",o=Array.isArray(e);r=o?\"[\":\"{\";var a=!0;for(var n in e){var u=typeof e[n]==\"function\"||!o&&typeof e[n]>\"u\";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=\",\"),a=!1,o?e[n]==null?r+=\"null\":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+\":\"+t(e[n])))}return r+=o?\"]\":\"}\",r}else return typeof e==\"string\"?JSON.stringify(/^:/.test(e)?\":\"+e:e):typeof e>\"u\"?\"null\":JSON.stringify(e)};_M.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 Toe=_((vLt,Roe)=>{\"use strict\";var Tnt=ve(\"events\"),Foe=Qoe(),Nnt=t=>{let e={redis:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(ve(e[r]))(t)}return new Map},HM=class extends Tnt{constructor(e,r){if(super(),this.opts=Object.assign({namespace:\"keyv\",serialize:Foe.stringify,deserialize:Foe.parse},typeof e==\"string\"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=Nnt(o)}typeof this.opts.store.on==\"function\"&&this.opts.store.on(\"error\",o=>this.emit(\"error\",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a==\"string\"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires==\"number\"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>\"u\"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o==\"number\"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};Roe.exports=HM});var Ooe=_((SLt,Loe)=>{\"use strict\";var Lnt=ve(\"events\"),tb=ve(\"url\"),Ont=loe(),Mnt=woe(),qM=Boe(),Noe=Soe(),Unt=eb(),_nt=koe(),Hnt=Toe(),qc=class{constructor(e,r){if(typeof e!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new Hnt({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r==\"string\")a=jM(tb.parse(r)),r={};else if(r instanceof tb.URL)a=jM(tb.parse(r.toString())),r={};else{let[I,...v]=(r.path||\"\").split(\"?\"),x=v.length>0?`?${v.join(\"?\")}`:\"\";a=jM({...r,pathname:I,search:x})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...qnt(a)},r.headers=Unt(r.headers);let n=new Lnt,u=Ont(tb.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,E=I=>{h=!0;let v=!1,x,C=new Promise(L=>{x=()=>{v||(v=!0,L())}}),R=L=>{if(p&&!I.forceRefresh){L.status=L.statusCode;let J=qM.fromObject(p.cachePolicy).revalidatedPolicy(I,L);if(!J.modified){let te=J.policy.responseHeaders();L=new Noe(p.statusCode,te,p.body,p.url),L.cachePolicy=J.policy,L.fromCache=!0}}L.fromCache||(L.cachePolicy=new qM(I,L,I),L.fromCache=!1);let U;I.cache&&L.cachePolicy.storable()?(U=_nt(L),(async()=>{try{let J=Mnt.buffer(L);if(await Promise.race([C,new Promise(ce=>L.once(\"end\",ce))]),v)return;let te=await J,ae={cachePolicy:L.cachePolicy.toObject(),url:L.url,statusCode:L.fromCache?p.statusCode:L.statusCode,body:te},fe=I.strictTtl?L.cachePolicy.timeToLive():void 0;I.maxTtl&&(fe=fe?Math.min(fe,I.maxTtl):I.maxTtl),await this.cache.set(A,ae,fe)}catch(J){n.emit(\"error\",new qc.CacheError(J))}})()):I.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(J){n.emit(\"error\",new qc.CacheError(J))}})(),n.emit(\"response\",U||L),typeof o==\"function\"&&o(U||L)};try{let L=e(I,R);L.once(\"error\",x),L.once(\"abort\",x),n.emit(\"request\",L)}catch(L){n.emit(\"error\",new qc.RequestError(L))}};return(async()=>{let I=async x=>{await Promise.resolve();let C=x.cache?await this.cache.get(A):void 0;if(typeof C>\"u\")return E(x);let R=qM.fromObject(C.cachePolicy);if(R.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let L=R.responseHeaders(),U=new Noe(C.statusCode,L,C.body,C.url);U.cachePolicy=R,U.fromCache=!0,n.emit(\"response\",U),typeof o==\"function\"&&o(U)}else p=C,x.headers=R.revalidationHeaders(x),E(x)},v=x=>n.emit(\"error\",new qc.CacheError(x));this.cache.once(\"error\",v),n.on(\"response\",()=>this.cache.removeListener(\"error\",v));try{await I(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new qc.CacheError(x))}})(),n}}};function qnt(t){let e={...t};return e.path=`${t.pathname||\"/\"}${t.search||\"\"}`,delete e.pathname,delete e.search,e}function jM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||\"localhost\",port:t.port,pathname:t.pathname,search:t.search}}qc.RequestError=class extends Error{constructor(t){super(t.message),this.name=\"RequestError\",Object.assign(this,t)}};qc.CacheError=class extends Error{constructor(t){super(t.message),this.name=\"CacheError\",Object.assign(this,t)}};Loe.exports=qc});var Uoe=_((xLt,Moe)=>{\"use strict\";var jnt=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];Moe.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(jnt)),o={};for(let a of r)a in e||(o[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,o),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 Hoe=_((kLt,_oe)=>{\"use strict\";var{Transform:Gnt,PassThrough:Ynt}=ve(\"stream\"),GM=ve(\"zlib\"),Wnt=Uoe();_oe.exports=t=>{let e=(t.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(e))return t;let r=e===\"br\";if(r&&typeof GM.createBrotliDecompress!=\"function\")return t.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),t;let o=!0,a=new Gnt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new Ynt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?GM.createBrotliDecompress():GM.createUnzip();return u.once(\"error\",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),Wnt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var WM=_((QLt,qoe)=>{\"use strict\";var YM=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[o,a]of this.oldCache.entries())this.onEviction(o,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)}};qoe.exports=YM});var VM=_((FLt,Woe)=>{\"use strict\";var Knt=ve(\"events\"),Vnt=ve(\"tls\"),Jnt=ve(\"http2\"),znt=WM(),ea=Symbol(\"currentStreamsCount\"),joe=Symbol(\"request\"),Wl=Symbol(\"cachedOriginSet\"),DE=Symbol(\"gracefullyClosing\"),Xnt=[\"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\"],Znt=(t,e,r)=>{let o=0,a=t.length;for(;o<a;){let n=o+a>>>1;r(t[n],e)?o=n+1:a=n}return o},$nt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,KM=(t,e)=>{for(let r of t)r[Wl].length<e[Wl].length&&r[Wl].every(o=>e[Wl].includes(o))&&r[ea]+e[ea]<=e.remoteSettings.maxConcurrentStreams&&Yoe(r)},eit=(t,e)=>{for(let r of t)e[Wl].length<r[Wl].length&&e[Wl].every(o=>r[Wl].includes(o))&&e[ea]+r[ea]<=r.remoteSettings.maxConcurrentStreams&&Yoe(e)},Goe=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[tA.kCurrentStreamsCount]<u.remoteSettings.maxConcurrentStreams;return e?A:!A});n.length!==0&&(r[o]=n)}return r},Yoe=t=>{t[DE]=!0,t[ea]===0&&t.close()},tA=class extends Knt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new znt({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 o of Xnt)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount<this.maxSessions&&!o.completed&&(o.completed=!0,o())}getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=tA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:E}of o)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(u in this.sessions){let E=this.sessions[u],I=-1,v=-1,x;for(let C of E){let R=C.remoteSettings.maxConcurrentStreams;if(R<I)break;if(C[Wl].includes(A)){let L=C[ea];if(L>=R||C[DE]||C.destroyed)continue;x||(I=R),L>v&&(x=C,v=L)}}if(x){if(o.length!==1){for(let{reject:C}of o){let R=new Error(`Expected the length of listeners to be 1, got ${o.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);C(R)}return}o[0].resolve(x);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let E=`${A}:${u}`,I=!1;try{let v=Jnt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});v[ea]=0,v[DE]=!1;let x=()=>v[ea]<v.remoteSettings.maxConcurrentStreams,C=!0;v.socket.once(\"session\",L=>{this.tlsSessionCache.set(E,L)}),v.once(\"error\",L=>{for(let{reject:U}of o)U(L);this.tlsSessionCache.delete(E)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once(\"close\",()=>{if(I){C&&this._freeSessionsCount--,this._sessionsCount--;let L=this.sessions[u];L.splice(L.indexOf(v),1),L.length===0&&delete this.sessions[u]}else{let L=new Error(\"Session closed without receiving a SETTINGS frame\");L.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of o)U(L);p()}this._tryToCreateNewSession(u,A)});let R=()=>{if(!(!(u in this.queue)||!x())){for(let L of v[Wl])if(L in this.queue[u]){let{listeners:U}=this.queue[u][L];for(;U.length!==0&&x();)U.shift().resolve(v);let J=this.queue[u];if(J[L].listeners.length===0&&(delete J[L],Object.keys(J).length===0)){delete this.queue[u];break}if(!x())break}}};v.on(\"origin\",()=>{v[Wl]=v.originSet,x()&&(R(),KM(this.sessions[u],v))}),v.once(\"remoteSettings\",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let L=new Error(\"Agent has been destroyed\");for(let U of o)U.reject(L);v.destroy();return}v[Wl]=v.originSet;{let L=this.sessions;if(u in L){let U=L[u];U.splice(Znt(U,v,$nt),0,v)}else L[u]=[v]}this._freeSessionsCount+=1,I=!0,this.emit(\"session\",v),R(),p(),v[ea]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on(\"remoteSettings\",()=>{R(),KM(this.sessions[u],v)})}),v[joe]=v.request,v.request=(L,U)=>{if(v[DE])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let J=v[joe](L,U);return v.ref(),++v[ea],v[ea]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,J.once(\"close\",()=>{if(C=x(),--v[ea],!v.destroyed&&!v.closed&&(eit(this.sessions[u],v),x()&&!v.closed)){C||(this._freeSessionsCount++,C=!0);let te=v[ea]===0;te&&v.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||v[DE])?v.close():(KM(this.sessions[u],v),R())}}),J}}catch(v){for(let x of o)x.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return tA.connect(e,r)}static connect(e,r){r.ALPNProtocols=[\"h2\"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>\"u\"&&(r.servername=a),Vnt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ea]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return Goe({agent:this,isFree:!0})}get busySessions(){return Goe({agent:this,isFree:!1})}};tA.kCurrentStreamsCount=ea;tA.kGracefullyClosing=DE;Woe.exports={Agent:tA,globalAgent:new tA}});var zM=_((RLt,Koe)=>{\"use strict\";var{Readable:tit}=ve(\"stream\"),JM=class extends tit{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()}};Koe.exports=JM});var XM=_((TLt,Voe)=>{\"use strict\";Voe.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 zoe=_((NLt,Joe)=>{\"use strict\";Joe.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var Zoe=_((LLt,Xoe)=>{\"use strict\";Xoe.exports=t=>{switch(t){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var eae=_((MLt,$oe)=>{\"use strict\";var SE=(t,e,r)=>{$oe.exports[e]=class extends t{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};SE(TypeError,\"ERR_INVALID_ARG_TYPE\",t=>{let e=t[0].includes(\".\")?\"property\":\"argument\",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${t[0]}\" ${e} must be ${o?\"one of\":\"of\"} type ${r}. Received ${typeof t[2]}`});SE(TypeError,\"ERR_INVALID_PROTOCOL\",t=>`Protocol \"${t[0]}\" not supported. Expected \"${t[1]}\"`);SE(Error,\"ERR_HTTP_HEADERS_SENT\",t=>`Cannot ${t[0]} headers after they are sent to the client`);SE(TypeError,\"ERR_INVALID_HTTP_TOKEN\",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);SE(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",t=>`Invalid value \"${t[0]} for header \"${t[1]}\"`);SE(TypeError,\"ERR_INVALID_CHAR\",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var r4=_((ULt,aae)=>{\"use strict\";var rit=ve(\"http2\"),{Writable:nit}=ve(\"stream\"),{Agent:tae,globalAgent:iit}=VM(),sit=zM(),oit=XM(),ait=zoe(),lit=Zoe(),{ERR_INVALID_ARG_TYPE:ZM,ERR_INVALID_PROTOCOL:cit,ERR_HTTP_HEADERS_SENT:rae,ERR_INVALID_HTTP_TOKEN:uit,ERR_HTTP_INVALID_HEADER_VALUE:Ait,ERR_INVALID_CHAR:fit}=eae(),{HTTP2_HEADER_STATUS:nae,HTTP2_HEADER_METHOD:iae,HTTP2_HEADER_PATH:sae,HTTP2_METHOD_CONNECT:pit}=rit.constants,Qo=Symbol(\"headers\"),$M=Symbol(\"origin\"),e4=Symbol(\"session\"),oae=Symbol(\"options\"),rb=Symbol(\"flushedHeaders\"),h1=Symbol(\"jobs\"),hit=/^[\\^`\\-\\w!#$%&*+.|~]+$/,git=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,t4=class extends nit{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e==\"string\"||e instanceof URL;if(a&&(e=oit(e instanceof URL?e:new URL(e))),typeof r==\"function\"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[e4]=r.h2session;else if(r.agent===!1)this.agent=new tae({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new tae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=iit;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new ZM(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new cit(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[Qo]=Object.create(null),this[h1]=[],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[Qo])&&(this[Qo].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[oae]=r,n===443?(this[$M]=`https://${u}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=u)):(this[$M]=`https://${u}:${n}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once(\"response\",o),this[rb]=!1}get method(){return this[Qo][iae]}set method(e){e&&(this[Qo][iae]=e.toUpperCase())}get path(){return this[Qo][sae]}set path(e){e&&(this[Qo][sae]=e)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[h1].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[h1].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[rb]||this.destroyed)return;this[rb]=!0;let e=this.method===pit,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||ait(o,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once(\"finish\",()=>{u(...A)})};o.once(\"response\",a((u,A,p)=>{let h=new sit(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[nae],h.headers=u,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,o,Buffer.alloc(0))?this.emit(\"close\"):o.destroy()):(o.on(\"data\",E=>{!h._dumped&&!h.push(E)&&o.pause()}),o.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),o.once(\"headers\",a(u=>this.emit(\"information\",{statusCode:u[nae]}))),o.once(\"trailers\",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[h1])u();this.emit(\"socket\",this.socket)};if(this[e4])try{r(this[e4].request(this[Qo]))}catch(o){this.emit(\"error\",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[$M],this[oae],this[Qo]))}catch(o){this.emit(\"error\",o)}}}getHeader(e){if(typeof e!=\"string\")throw new ZM(\"name\",\"string\",e);return this[Qo][e.toLowerCase()]}get headersSent(){return this[rb]}removeHeader(e){if(typeof e!=\"string\")throw new ZM(\"name\",\"string\",e);if(this.headersSent)throw new rae(\"remove\");delete this[Qo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new rae(\"set\");if(typeof e!=\"string\"||!hit.test(e)&&!lit(e))throw new uit(\"Header name\",e);if(typeof r>\"u\")throw new Ait(r,e);if(git.test(r))throw new fit(\"header content\",e);this[Qo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[h1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};aae.exports=t4});var cae=_((_Lt,lae)=>{\"use strict\";var dit=ve(\"tls\");lae.exports=(t={})=>new Promise((e,r)=>{let o=dit.connect(t,()=>{t.resolveSocket?(o.off(\"error\",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on(\"error\",r)})});var Aae=_((HLt,uae)=>{\"use strict\";var mit=ve(\"net\");uae.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]),mit.isIP(e)?\"\":e}});var hae=_((qLt,i4)=>{\"use strict\";var fae=ve(\"http\"),n4=ve(\"https\"),yit=cae(),Eit=WM(),Cit=r4(),wit=Aae(),Iit=XM(),nb=new Eit({maxSize:100}),g1=new Map,pae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit(\"free\",e,r)};e.on(\"free\",o);let a=()=>{t.removeSocket(e,r)};e.on(\"close\",a);let n=()=>{t.removeSocket(e,r),e.off(\"close\",a),e.off(\"free\",o),e.off(\"agentRemove\",n)};e.on(\"agentRemove\",n),t.emit(\"free\",e,r)},Bit=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!nb.has(e)){if(g1.has(e))return(await g1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=yit(t);g1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if(nb.set(e,u),t.path=r,u===\"h2\")n.destroy();else{let{globalAgent:A}=n4,p=n4.Agent.prototype.createConnection;o?o.createConnection===p?pae(o,n,t):n.destroy():A.createConnection===p?pae(A,n,t):n.destroy()}return g1.delete(e),u}catch(n){throw g1.delete(e),n}}return nb.get(e)};i4.exports=async(t,e,r)=>{if((typeof t==\"string\"||t instanceof URL)&&(t=Iit(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 o=e.protocol===\"https:\";e.host=e.hostname||e.host||\"localhost\",e.session=e.tlsSession,e.servername=e.servername||wit(e),e.port=e.port||(o?443:80),e._defaultAgent=o?n4.globalAgent:fae.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[o?\"https\":\"http\"]}return o&&await Bit(e)===\"h2\"?(a&&(e.agent=a.http2),new Cit(e,r)):fae.request(e,r)};i4.exports.protocolCache=nb});var dae=_((jLt,gae)=>{\"use strict\";var vit=ve(\"http2\"),Dit=VM(),s4=r4(),Sit=zM(),Pit=hae(),bit=(t,e,r)=>new s4(t,e,r),xit=(t,e,r)=>{let o=new s4(t,e,r);return o.end(),o};gae.exports={...vit,ClientRequest:s4,IncomingMessage:Sit,...Dit,request:bit,get:xit,auto:Pit}});var a4=_(o4=>{\"use strict\";Object.defineProperty(o4,\"__esModule\",{value:!0});var mae=Tf();o4.default=t=>mae.default.nodeStream(t)&&mae.default.function_(t.getBoundary)});var wae=_(l4=>{\"use strict\";Object.defineProperty(l4,\"__esModule\",{value:!0});var Eae=ve(\"fs\"),Cae=ve(\"util\"),yae=Tf(),kit=a4(),Qit=Cae.promisify(Eae.stat);l4.default=async(t,e)=>{if(e&&\"content-length\"in e)return Number(e[\"content-length\"]);if(!t)return 0;if(yae.default.string(t))return Buffer.byteLength(t);if(yae.default.buffer(t))return t.length;if(kit.default(t))return Cae.promisify(t.getLength.bind(t))();if(t instanceof Eae.ReadStream){let{size:r}=await Qit(t.path);return r===0?void 0:r}}});var u4=_(c4=>{\"use strict\";Object.defineProperty(c4,\"__esModule\",{value:!0});function Fit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}c4.default=Fit});var Iae=_(A4=>{\"use strict\";Object.defineProperty(A4,\"__esModule\",{value:!0});A4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var vae=_(d1=>{\"use strict\";Object.defineProperty(d1,\"__esModule\",{value:!0});d1.TimeoutError=void 0;var Rit=ve(\"net\"),Tit=Iae(),Bae=Symbol(\"reentry\"),Nit=()=>{},ib=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};d1.TimeoutError=ib;d1.default=(t,e,r)=>{if(Bae in t)return Nit;t[Bae]=!0;let o=[],{once:a,unhandleAll:n}=Tit.default(),u=(I,v,x)=>{var C;let R=setTimeout(v,I,I,x);(C=R.unref)===null||C===void 0||C.call(R);let L=()=>{clearTimeout(R)};return o.push(L),L},{host:A,hostname:p}=r,h=(I,v)=>{t.destroy(new ib(I,v))},E=()=>{for(let I of o)I();n()};if(t.once(\"error\",I=>{if(E(),t.listenerCount(\"error\")===0)throw I}),t.once(\"close\",E),a(t,\"response\",I=>{a(I,\"end\",E)}),typeof e.request<\"u\"&&u(e.request,h,\"request\"),typeof e.socket<\"u\"){let I=()=>{h(e.socket,\"socket\")};t.setTimeout(e.socket,I),o.push(()=>{t.removeListener(\"timeout\",I)})}return a(t,\"socket\",I=>{var v;let{socketPath:x}=t;if(I.connecting){let C=Boolean(x??Rit.isIP((v=p??A)!==null&&v!==void 0?v:\"\")!==0);if(typeof e.lookup<\"u\"&&!C&&typeof I.address().address>\"u\"){let R=u(e.lookup,h,\"lookup\");a(I,\"lookup\",R)}if(typeof e.connect<\"u\"){let R=()=>u(e.connect,h,\"connect\");C?a(I,\"connect\",R()):a(I,\"lookup\",L=>{L===null&&a(I,\"connect\",R())})}typeof e.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(I,\"connect\",()=>{let R=u(e.secureConnect,h,\"secureConnect\");a(I,\"secureConnect\",R)})}if(typeof e.send<\"u\"){let C=()=>u(e.send,h,\"send\");I.connecting?a(I,\"connect\",()=>{a(t,\"upload-complete\",C())}):a(t,\"upload-complete\",C())}}),typeof e.response<\"u\"&&a(t,\"upload-complete\",()=>{let I=u(e.response,h,\"response\");a(t,\"response\",I)}),E}});var Sae=_(f4=>{\"use strict\";Object.defineProperty(f4,\"__esModule\",{value:!0});var Dae=Tf();f4.default=t=>{t=t;let e={protocol:t.protocol,hostname:Dae.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 Dae.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 Pae=_(p4=>{\"use strict\";Object.defineProperty(p4,\"__esModule\",{value:!0});var Lit=ve(\"url\"),Oit=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];p4.default=(t,e)=>{var r,o;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}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:\"\"}`}let a=new Lit.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 Oit)e[n]&&(a[n]=e[n].toString());return a}});var bae=_(g4=>{\"use strict\";Object.defineProperty(g4,\"__esModule\",{value:!0});var h4=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)}};g4.default=h4});var m4=_(d4=>{\"use strict\";Object.defineProperty(d4,\"__esModule\",{value:!0});var Mit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(\"\"))};d4.default=Mit});var kae=_(Pd=>{\"use strict\";Object.defineProperty(Pd,\"__esModule\",{value:!0});Pd.dnsLookupIpVersionToFamily=Pd.isDnsLookupIpVersion=void 0;var xae={auto:0,ipv4:4,ipv6:6};Pd.isDnsLookupIpVersion=t=>t in xae;Pd.dnsLookupIpVersionToFamily=t=>{if(Pd.isDnsLookupIpVersion(t))return xae[t];throw new Error(\"Invalid DNS lookup IP version\")}});var y4=_(sb=>{\"use strict\";Object.defineProperty(sb,\"__esModule\",{value:!0});sb.isResponseOk=void 0;sb.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Fae=_(E4=>{\"use strict\";Object.defineProperty(E4,\"__esModule\",{value:!0});var Qae=new Set;E4.default=t=>{Qae.has(t)||(Qae.add(t),process.emitWarning(`Got: ${t}`,{type:\"DeprecationWarning\"}))}});var Rae=_(C4=>{\"use strict\";Object.defineProperty(C4,\"__esModule\",{value:!0});var Ai=Tf(),Uit=(t,e)=>{if(Ai.default.null_(t.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Ai.assert.any([Ai.default.string,Ai.default.undefined],t.encoding),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.resolveBodyOnly),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.methodRewriting),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.isStream),Ai.assert.any([Ai.default.string,Ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType=\"text\");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Ai.default.number(r)&&(t.retry.limit=r),Ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Ai.default.number))),Ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!Ai.default.function_(o.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Ai.default.function_(o.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Ai.default.function_(o.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Ai.default.function_(o.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};C4.default=Uit});var Tae=_(m1=>{\"use strict\";Object.defineProperty(m1,\"__esModule\",{value:!0});m1.retryAfterStatusCodes=void 0;m1.retryAfterStatusCodes=new Set([413,429,503]);var _it=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};m1.default=_it});var C1=_(Bn=>{\"use strict\";Object.defineProperty(Bn,\"__esModule\",{value:!0});Bn.UnsupportedProtocolError=Bn.ReadError=Bn.TimeoutError=Bn.UploadError=Bn.CacheError=Bn.HTTPError=Bn.MaxRedirectsError=Bn.RequestError=Bn.setNonEnumerableProperties=Bn.knownHookEvents=Bn.withoutBody=Bn.kIsNormalizedAlready=void 0;var Nae=ve(\"util\"),Lae=ve(\"stream\"),Hit=ve(\"fs\"),ah=ve(\"url\"),Oae=ve(\"http\"),w4=ve(\"http\"),qit=ve(\"https\"),jit=Zse(),Git=soe(),Mae=Ooe(),Yit=Hoe(),Wit=dae(),Kit=eb(),st=Tf(),Vit=wae(),Uae=a4(),Jit=u4(),_ae=vae(),zit=Sae(),Hae=Pae(),Xit=bae(),Zit=m4(),qae=kae(),$it=y4(),lh=Fae(),est=Rae(),tst=Tae(),I4,Zs=Symbol(\"request\"),lb=Symbol(\"response\"),PE=Symbol(\"responseSize\"),bE=Symbol(\"downloadedSize\"),xE=Symbol(\"bodySize\"),kE=Symbol(\"uploadedSize\"),ob=Symbol(\"serverResponsesPiped\"),jae=Symbol(\"unproxyEvents\"),Gae=Symbol(\"isFromCache\"),B4=Symbol(\"cancelTimeouts\"),Yae=Symbol(\"startedReading\"),QE=Symbol(\"stopReading\"),ab=Symbol(\"triggerRead\"),ch=Symbol(\"body\"),y1=Symbol(\"jobs\"),Wae=Symbol(\"originalResponse\"),Kae=Symbol(\"retryTimeout\");Bn.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var rst=st.default.string(process.versions.brotli);Bn.withoutBody=new Set([\"GET\",\"HEAD\"]);Bn.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function nst(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st.default.number(r)&&!st.default.boolean(r)&&!st.default.null_(r)&&!st.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function ist(t){return st.default.object(t)&&!(\"statusCode\"in t)}var v4=new Xit.default,sst=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once(\"error\",o),t.once(\"ready\",()=>{t.off(\"error\",o),e()})}),ost=new Set([300,301,302,303,304,307,308]),ast=[\"context\",\"body\",\"json\",\"form\"];Bn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of ast)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Vi=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,o instanceof db?(Object.defineProperty(this,\"request\",{enumerable:!1,value:o}),Object.defineProperty(this,\"response\",{enumerable:!1,value:o[lb]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:o.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,st.default.string(r.stack)&&st.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(`\n`).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(`\n`)}${A.reverse().join(`\n`)}`}}};Bn.RequestError=Vi;var ub=class extends Vi{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=\"MaxRedirectsError\"}};Bn.MaxRedirectsError=ub;var Ab=class extends Vi{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=\"HTTPError\"}};Bn.HTTPError=Ab;var fb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"CacheError\"}};Bn.CacheError=fb;var pb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"UploadError\"}};Bn.UploadError=pb;var hb=class extends Vi{constructor(e,r,o){super(e.message,e,o),this.name=\"TimeoutError\",this.event=e.event,this.timings=r}};Bn.TimeoutError=hb;var E1=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"ReadError\"}};Bn.ReadError=E1;var gb=class extends Vi{constructor(e){super(`Unsupported protocol \"${e.url.protocol}\"`,{},e),this.name=\"UnsupportedProtocolError\"}};Bn.UnsupportedProtocolError=gb;var lst=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],db=class extends Lae.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[bE]=0,this[kE]=0,this.requestInitialized=!1,this[ob]=new Set,this.redirects=[],this[QE]=!1,this[ab]=!1,this[y1]=[],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 w4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),Bn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){st.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Hit.ReadStream&&await sst(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[Zs])===null||h===void 0||h.destroy();return}for(let I of this[y1])I();this[y1].length=0,this.requestInitialized=!0}catch(E){if(E instanceof Vi){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.object(e)&&!st.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...o,...r},e!==void 0&&(r.url=e),st.default.urlInstance(r.url)&&(r.url=new ah.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),st.assert.any([st.default.string,st.default.undefined],r.method),st.assert.any([st.default.object,st.default.undefined],r.headers),st.assert.any([st.default.string,st.default.urlInstance,st.default.undefined],r.prefixUrl),st.assert.any([st.default.object,st.default.undefined],r.cookieJar),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.searchParams),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.cache),st.assert.any([st.default.object,st.default.number,st.default.undefined],r.timeout),st.assert.any([st.default.object,st.default.undefined],r.context),st.assert.any([st.default.object,st.default.undefined],r.hooks),st.assert.any([st.default.boolean,st.default.undefined],r.decompress),st.assert.any([st.default.boolean,st.default.undefined],r.ignoreInvalidCookies),st.assert.any([st.default.boolean,st.default.undefined],r.followRedirect),st.assert.any([st.default.number,st.default.undefined],r.maxRedirects),st.assert.any([st.default.boolean,st.default.undefined],r.throwHttpErrors),st.assert.any([st.default.boolean,st.default.undefined],r.http2),st.assert.any([st.default.boolean,st.default.undefined],r.allowGetBody),st.assert.any([st.default.string,st.default.undefined],r.localAddress),st.assert.any([qae.isDnsLookupIpVersion,st.default.undefined],r.dnsLookupIpVersion),st.assert.any([st.default.object,st.default.undefined],r.https),st.assert.any([st.default.boolean,st.default.undefined],r.rejectUnauthorized),r.https&&(st.assert.any([st.default.boolean,st.default.undefined],r.https.rejectUnauthorized),st.assert.any([st.default.function_,st.default.undefined],r.https.checkServerIdentity),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificateAuthority),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.key),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificate),st.assert.any([st.default.string,st.default.undefined],r.https.passphrase),st.assert.any([st.default.string,st.default.buffer,st.default.array,st.default.undefined],r.https.pfx)),st.assert.any([st.default.object,st.default.undefined],r.cacheOptions),st.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===o?.headers?r.headers={...r.headers}:r.headers=Kit({...o?.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!==o?.searchParams){let x;if(st.default.string(r.searchParams)||r.searchParams instanceof ah.URLSearchParams)x=new ah.URLSearchParams(r.searchParams);else{nst(r.searchParams),x=new ah.URLSearchParams;for(let C in r.searchParams){let R=r.searchParams[C];R===null?x.append(C,\"\"):R!==void 0&&x.append(C,R)}}(a=o?.searchParams)===null||a===void 0||a.forEach((C,R)=>{x.has(R)||x.append(R,C)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(u=r.password)!==null&&u!==void 0?u:\"\",st.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o?.prefixUrl)!==null&&A!==void 0?A:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),st.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=Hae.default(r.prefixUrl+r.url,r)}else(st.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=Hae.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,\"prefixUrl\",{set:R=>{let L=r.url;if(!L.href.startsWith(R))throw new Error(`Cannot change \\`prefixUrl\\` from ${x} to ${R}: ${L.href}`);r.url=new ah.URL(R+L.href.slice(x.length)),x=R},get:()=>x});let{protocol:C}=r.url;if(C===\"unix:\"&&(C=\"http:\",r.url=new ah.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),C!==\"http:\"&&C!==\"https:\")throw new gb(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:x,getCookieString:C}=E;st.assert.function_(x),st.assert.function_(C),x.length===4&&C.length===0&&(x=Nae.promisify(x.bind(r.cookieJar)),C=Nae.promisify(C.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:C})}let{cache:I}=r;if(I&&(v4.has(I)||v4.set(I,new Mae((x,C)=>{let R=x[Zs](x,C);return st.default.promise(R)&&(R.once=(L,U)=>{if(L===\"error\")R.catch(U);else if(L===\"abort\")(async()=>{try{(await R).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${L}`);return R}),R},I))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)I4||(I4=new Git.default),r.dnsCache=I4;else if(!st.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${st.default(r.dnsCache)}`);st.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===o?.hooks;r.hooks={...r.hooks};for(let x of Bn.knownHookEvents)if(x in r.hooks)if(st.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \\`${x}\\` must be an Array, got ${st.default(r.hooks[x])}`);else r.hooks[x]=[];if(o&&!v)for(let x of Bn.knownHookEvents)o.hooks[x].length>0&&(r.hooks[x]=[...o.hooks[x],...r.hooks[x]]);if(\"family\"in r&&lh.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),o?.https&&(r.https={...o.https,...r.https}),\"rejectUnauthorized\"in r&&lh.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&lh.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&lh.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&lh.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&lh.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&lh.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&lh.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 x in r.agent)if(x!==\"http\"&&x!==\"https\"&&x!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${x}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Bn.setNonEnumerableProperties([o,h],r),est.default(r,o)}_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,o=!st.default.undefined(e.form),a=!st.default.undefined(e.json),n=!st.default.undefined(e.body),u=o||a||n,A=Bn.withoutBody.has(e.method)&&!(e.method===\"GET\"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \\`${e.method}\\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(e.body instanceof Lae.Readable)&&!st.default.string(e.body)&&!st.default.buffer(e.body)&&!Uae.default(e.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(o&&!st.default.object(e.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!st.default.string(r[\"content-type\"]);n?(Uae.default(e.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[ch]=e.body):o?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[ch]=new ah.URLSearchParams(e.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[ch]=e.stringifyJson(e.json));let h=await Vit.default(this[ch],e.headers);st.default.undefined(r[\"content-length\"])&&st.default.undefined(r[\"transfer-encoding\"])&&!A&&!st.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[xE]=Number(r[\"content-length\"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Wae]=e,r.decompress&&(e=Yit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Oae.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[Gae]=n.isFromCache,this[PE]=Number(e.headers[\"content-length\"])||void 0,this[lb]=e,e.once(\"end\",()=>{this[PE]=this[bE],this.emit(\"downloadProgress\",this.downloadProgress)}),e.once(\"error\",A=>{e.destroy(),this._beforeError(new E1(A,this))}),e.once(\"aborted\",()=>{this._beforeError(new E1({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let u=e.headers[\"set-cookie\"];if(st.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&ost.has(a)){if(e.resume(),this[Zs]&&(this[B4](),delete this[Zs],this[jae]()),(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[ch]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new ub(this));return}try{let p=Buffer.from(e.headers.location,\"binary\").toString(),h=new ah.URL(p,o),E=h.toString();decodeURI(E),h.hostname!==o.hostname||h.port!==o.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 I of r.hooks.beforeRedirect)await I(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!$it.isResponseOk(n)){this._beforeError(new Ab(n));return}e.on(\"readable\",()=>{this[ab]&&this._read()}),this.on(\"resume\",()=>{e.resume()}),this.on(\"pause\",()=>{e.pause()}),e.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",e);for(let A of this[ob])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=e.headers[p];h&&A.setHeader(p,E)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;jit.default(e),this[B4]=_ae.default(e,o,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 _ae.TimeoutError?new hb(p,this.timings,this):new Vi(p.message,p,this),this._beforeError(p)}),this[jae]=Jit.default(e,this,lst),this[Zs]=e,this.emit(\"uploadProgress\",this.uploadProgress);let u=this[ch],A=this.redirects.length===0?this:e;st.default.nodeStream(u)?(u.pipe(A),u.once(\"error\",p=>{this._beforeError(new pb(p,this))})):(this._unlockWrite(),st.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit(\"request\",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,zit.default(e)),delete r.url;let n,u=v4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",A),o(A)});r.url=e,u.once(\"error\",a),u.once(\"request\",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let U in A)if(st.default.undefined(A[U]))delete A[U];else if(st.default.null_(A[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(u.decompress&&st.default.undefined(A[\"accept-encoding\"])&&(A[\"accept-encoding\"]=rst?\"gzip, deflate, br\":\"gzip, deflate\"),u.cookieJar){let U=await u.cookieJar.getCookieString(u.url.toString());st.default.nonEmptyString(U)&&(u.headers.cookie=U)}for(let U of u.hooks.beforeRequest){let J=await U(u);if(!st.default.undefined(J)){u.request=()=>J;break}}u.body&&this[ch]!==u.body&&(this[ch]=u.body);let{agent:p,request:h,timeout:E,url:I}=u;if(u.dnsCache&&!(\"lookup\"in u)&&(u.lookup=u.dnsCache.lookup),I.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${I.pathname}${I.search}`);if(U?.groups){let{socketPath:J,path:te}=U.groups;Object.assign(u,{socketPath:J,path:te,host:\"\"})}}let v=I.protocol===\"https:\",x;u.http2?x=Wit.auto:x=v?qit.request:Oae.request;let C=(e=u.request)!==null&&e!==void 0?e:x,R=u.cache?this._createCacheableRequest:C;p&&!u.http2&&(u.agent=p[v?\"https\":\"http\"]),u[Zs]=C,delete u.request,delete u.timeout;let L=u;if(L.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,L.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,L.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,L.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{L.family=qae.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}u.https&&(\"rejectUnauthorized\"in u.https&&(L.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(L.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(L.ca=u.https.certificateAuthority),u.https.certificate&&(L.cert=u.https.certificate),u.https.key&&(L.key=u.https.key),u.https.passphrase&&(L.passphrase=u.https.passphrase),u.https.pfx&&(L.pfx=u.https.pfx));try{let U=await R(I,L);st.default.undefined(U)&&(U=x(I,L)),u.request=h,u.timeout=E,u.agent=p,u.https&&(\"rejectUnauthorized\"in u.https&&delete L.rejectUnauthorized,u.https.checkServerIdentity&&delete L.checkServerIdentity,u.https.certificateAuthority&&delete L.ca,u.https.certificate&&delete L.cert,u.https.key&&delete L.key,u.https.passphrase&&delete L.passphrase,u.https.pfx&&delete L.pfx),ist(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 Mae.CacheError?new fb(U,this):new Vi(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Vi(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[QE])return;let{options:r}=this,o=this.retryCount+1;this[QE]=!0,e instanceof Vi||(e=new Vi(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Zit.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let u;try{let A;n&&\"retry-after\"in n.headers&&(A=Number(n.headers[\"retry-after\"]),Number.isNaN(A)?(A=Date.parse(n.headers[\"retry-after\"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:tst.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Vi(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Vi(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",o,e))};this[Kae]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[ab]=!0;let e=this[lb];if(e&&!this[QE]){e.readableLength&&(this[ab]=!1);let r;for(;(r=e.read())!==null;){this[bE]+=r.length,this[Yae]=!0;let o=this.downloadProgress;o.percent<1&&this.emit(\"downloadProgress\",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[y1].push(a)}_writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push(()=>{this[kE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[Zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Zs in this)){e();return}if(this[Zs].destroyed){e();return}this[Zs].end(o=>{o||(this[xE]=this[kE],this.emit(\"uploadProgress\",this.uploadProgress),this[Zs].emit(\"upload-complete\")),e(o)})};this.requestInitialized?r():this[y1].push(r)}_destroy(e,r){var o;this[QE]=!0,clearTimeout(this[Kae]),Zs in this&&(this[B4](),!((o=this[lb])===null||o===void 0)&&o.complete||this[Zs].destroy()),e!==null&&!st.default.undefined(e)&&!(e instanceof Vi)&&(e=new Vi(e.message,e,this)),r(e)}get _isAboutToError(){return this[QE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[Wae])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[PE]?e=this[bE]/this[PE]:this[PE]===this[bE]?e=1:e=0,{percent:e,transferred:this[bE],total:this[PE]}}get uploadProgress(){let e;return this[xE]?e=this[kE]/this[xE]:this[xE]===this[kE]?e=1:e=0,{percent:e,transferred:this[kE],total:this[xE]}}get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Gae]}pipe(e,r){if(this[Yae])throw new Error(\"Failed to pipe. The response has been emitted already.\");return e instanceof w4.ServerResponse&&this[ob].add(e),super.pipe(e,r)}unpipe(e){return e instanceof w4.ServerResponse&&this[ob].delete(e),super.unpipe(e),this}};Bn.default=db});var w1=_(jc=>{\"use strict\";var cst=jc&&jc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),ust=jc&&jc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&cst(e,t,r)};Object.defineProperty(jc,\"__esModule\",{value:!0});jc.CancelError=jc.ParseError=void 0;var Vae=C1(),D4=class extends Vae.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in \"${o.url.toString()}\"`,e,r.request),this.name=\"ParseError\"}};jc.ParseError=D4;var S4=class extends Vae.RequestError{constructor(e){super(\"Promise was canceled\",{},e),this.name=\"CancelError\"}get isCanceled(){return!0}};jc.CancelError=S4;ust(C1(),jc)});var zae=_(P4=>{\"use strict\";Object.defineProperty(P4,\"__esModule\",{value:!0});var Jae=w1(),Ast=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e===\"text\")return a.toString(o);if(e===\"json\")return a.length===0?\"\":r(a.toString());if(e===\"buffer\")return a;throw new Jae.ParseError({message:`Unknown body type '${e}'`,name:\"Error\"},t)}catch(n){throw new Jae.ParseError(n,t)}};P4.default=Ast});var b4=_(uh=>{\"use strict\";var fst=uh&&uh.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),pst=uh&&uh.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&fst(e,t,r)};Object.defineProperty(uh,\"__esModule\",{value:!0});var hst=ve(\"events\"),gst=Tf(),dst=zse(),mb=w1(),Xae=zae(),Zae=C1(),mst=u4(),yst=m4(),$ae=y4(),Est=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function ele(t){let e,r,o=new hst.EventEmitter,a=new dst((u,A,p)=>{let h=E=>{let I=new Zae.default(void 0,t);I.retryCount=E,I._noPipe=!0,p(()=>I.destroy()),p.shouldReject=!1,p(()=>A(new mb.CancelError(I))),e=I,I.once(\"response\",async C=>{var R;if(C.retryCount=E,C.request.aborted)return;let L;try{L=await yst.default(I),C.rawBody=L}catch{return}if(I._isAboutToError)return;let U=((R=C.headers[\"content-encoding\"])!==null&&R!==void 0?R:\"\").toLowerCase(),J=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:te}=I;if(J&&!te.decompress)C.body=L;else try{C.body=Xae.default(C,te.responseType,te.parseJson,te.encoding)}catch(ae){if(C.body=L.toString(),$ae.isResponseOk(C)){I._beforeError(ae);return}}try{for(let[ae,fe]of te.hooks.afterResponse.entries())C=await fe(C,async ce=>{let me=Zae.default.normalizeArguments(void 0,{...ce,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ae);for(let Be of me.hooks.beforeRetry)await Be(me);let he=ele(me);return p(()=>{he.catch(()=>{}),he.cancel()}),he})}catch(ae){I._beforeError(new mb.RequestError(ae.message,ae,I));return}if(!$ae.isResponseOk(C)){I._beforeError(new mb.HTTPError(C));return}r=C,u(I.options.resolveBodyOnly?C.body:C)});let v=C=>{if(a.isCanceled)return;let{options:R}=I;if(C instanceof mb.HTTPError&&!R.throwHttpErrors){let{response:L}=C;u(I.options.resolveBodyOnly?L.body:L);return}A(C)};I.once(\"error\",v);let x=I.options.body;I.once(\"retry\",(C,R)=>{var L,U;if(x===((L=R.request)===null||L===void 0?void 0:L.options.body)&&gst.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){v(R);return}h(C)}),mst.default(I,o,Est)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return Xae.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}uh.default=ele;pst(w1(),uh)});var tle=_(x4=>{\"use strict\";Object.defineProperty(x4,\"__esModule\",{value:!0});var Cst=w1();function wst(t,...e){let r=(async()=>{if(t instanceof Cst.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}x4.default=wst});var ile=_(k4=>{\"use strict\";Object.defineProperty(k4,\"__esModule\",{value:!0});var rle=Tf();function nle(t){for(let e of Object.values(t))(rle.default.plainObject(e)||rle.default.array(e))&&nle(e);return Object.freeze(t)}k4.default=nle});var ole=_(sle=>{\"use strict\";Object.defineProperty(sle,\"__esModule\",{value:!0})});var Q4=_(Vl=>{\"use strict\";var Ist=Vl&&Vl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Bst=Vl&&Vl.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Ist(e,t,r)};Object.defineProperty(Vl,\"__esModule\",{value:!0});Vl.defaultHandler=void 0;var ale=Tf(),Kl=b4(),vst=tle(),Eb=C1(),Dst=ile(),Sst={RequestError:Kl.RequestError,CacheError:Kl.CacheError,ReadError:Kl.ReadError,HTTPError:Kl.HTTPError,MaxRedirectsError:Kl.MaxRedirectsError,TimeoutError:Kl.TimeoutError,ParseError:Kl.ParseError,CancelError:Kl.CancelError,UnsupportedProtocolError:Kl.UnsupportedProtocolError,UploadError:Kl.UploadError},Pst=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:yb}=Eb.default,lle=(...t)=>{let e;for(let r of t)e=yb(void 0,r,e);return e},bst=t=>t.isStream?new Eb.default(void 0,t):Kl.default(t),xst=t=>\"defaults\"in t&&\"options\"in t.defaults,kst=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Vl.defaultHandler=(t,e)=>e(t);var cle=(t,e)=>{if(t)for(let r of t)r(e)},ule=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:E,finally:I}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=E,p.finally=I}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?bst:h);if(ale.default.plainObject(o)){let E={...o,...a};Eb.setNonEnumerableProperties([o,a],E),a=E,o=void 0}try{let E;try{cle(t.options.hooks.init,a),cle((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){E=v}let I=yb(o,a,n??t.options);if(I[Eb.kIsNormalizedAlready]=!0,E)throw new Kl.RequestError(E.message,E,I);return h(I)}catch(E){if(a.isStream)throw E;return vst.default(E,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)xst(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),\"handlers\"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==Vl.defaultHandler),n.length===0&&n.push(Vl.defaultHandler),ule({options:lle(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=yb(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!ale.default.object(u))throw new TypeError(\"`options.pagination` must be implemented\");let A=[],{countLimit:p}=u,h=0;for(;h<u.requestLimit;){h!==0&&await Pst(u.backoff);let E=await e(void 0,void 0,n),I=await u.transform(E),v=[];for(let C of I)if(u.filter(C,A,v)&&(!u.shouldContinue(C,A,v)||(yield C,u.stackAllItems&&A.push(C),v.push(C),--p<=0)))return;let x=u.paginate(E,A,v);if(x===!1)return;x===E.request.options?n=E.request.options:x!==void 0&&(n=yb(void 0,x,n)),h++}};e.paginate=r,e.paginate.all=async(o,a)=>{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of kst)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Sst),Object.defineProperty(e,\"defaults\",{value:t.mutableDefaults?t:Dst.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=lle,e};Vl.default=ule;Bst(ole(),Vl)});var ple=_((Nf,Cb)=>{\"use strict\";var Qst=Nf&&Nf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Ale=Nf&&Nf.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Qst(e,t,r)};Object.defineProperty(Nf,\"__esModule\",{value:!0});var Fst=ve(\"url\"),fle=Q4(),Rst={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 o of e){let a=o.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Fst.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:[fle.defaultHandler],mutableDefaults:!1},F4=fle.default(Rst);Nf.default=F4;Cb.exports=F4;Cb.exports.default=F4;Cb.exports.__esModule=!0;Ale(Q4(),Nf);Ale(b4(),Nf)});var nn={};Vt(nn,{Method:()=>Cle,del:()=>Mst,get:()=>L4,getNetworkSettings:()=>Ele,post:()=>O4,put:()=>Ost,request:()=>I1});function dle(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 R4(t){return ol(gle,t,()=>oe.readFilePromise(t).then(e=>(gle.set(t,e),e)))}function Lst({statusCode:t,statusMessage:e},r){let o=Mt(r,t,yt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Zy(r,`${o}${e?` (${e})`:\"\"}`,a)}async function wb(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(o){if(o.name!==\"HTTPError\")throw o;let a=r?.(o,e)??o.response.body?.error;a==null&&(o.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=o.message),o.code===\"ETIMEDOUT\"&&o.event===\"socket\"&&(a+=`(can be increased via ${Mt(e,\"httpTimeout\",yt.SETTING)})`);let n=new zt(35,a,u=>{o.response&&u.reportError(35,`  ${zu(e,{label:\"Response Code\",value:_c(yt.NO_HINT,Lst(o.response,e))})}`),o.request&&(u.reportError(35,`  ${zu(e,{label:\"Request Method\",value:_c(yt.NO_HINT,o.request.options.method)})}`),u.reportError(35,`  ${zu(e,{label:\"Request URL\",value:_c(yt.URL,o.request.requestUrl)})}`)),o.request.redirects.length>0&&u.reportError(35,`  ${zu(e,{label:\"Request Redirects\",value:_c(yt.NO_HINT,PL(e,o.request.redirects,yt.URL))})}`),o.request.retryCount===o.request.options.retry.limit&&u.reportError(35,`  ${zu(e,{label:\"Request Retry Count\",value:_c(yt.NO_HINT,`${Mt(e,o.request.retryCount,yt.NUMBER)} (can be increased via ${Mt(e,\"httpRetry\",yt.SETTING)})`)})}`)});throw n.originalError=o,n}}function Ele(t,e){let r=[...e.configuration.get(\"networkSettings\")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t==\"string\"?new URL(t):t;for(let[u,A]of r)if(N4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>\"u\"&&(o[p]=h)}for(let u of a)typeof o[u]>\"u\"&&(o[u]=e.configuration.get(u));return o}async function I1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\",wrapNetworkRequest:A}){let p={target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u},h=async()=>await Ust(t,e,p),E=typeof A<\"u\"?await A(h,p):h;return await(await r.reduceHook(v=>v.wrapNetworkRequest,E,p))()}async function L4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,wrapNetworkRequest:a,...n}){let u=()=>wb(I1(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:o}).then(p=>p.body),A=await(typeof a<\"u\"?u():ol(hle,t,()=>u().then(p=>(hle.set(t,p),p))));return r?JSON.parse(A.toString()):A}async function Ost(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:\"PUT\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function O4(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:\"POST\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function Mst(t,{customErrorMessage:e,...r}){return(await wb(I1(t,null,{...r,method:\"DELETE\"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Ust(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\"}){let A=typeof t==\"string\"?new URL(t):t,p=Ele(A,{configuration:r});if(p.enableNetwork===!1)throw new zt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol===\"http:\"&&!N4.default.isMatch(A.hostname,r.get(\"unsafeHttpWhitelist\")))throw new zt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let E={agent:{http:p.httpProxy?T4.default.httpOverHttp(dle(p.httpProxy)):Tst,https:p.httpsProxy?T4.default.httpsOverHttp(dle(p.httpsProxy)):Nst},headers:o,method:u};E.responseType=n?\"json\":\"buffer\",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e==\"string\"?E.body=e:E.json=e);let I=r.get(\"httpTimeout\"),v=r.get(\"httpRetry\"),x=r.get(\"enableStrictSsl\"),C=p.httpsCaFilePath,R=p.httpsCertFilePath,L=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>$e(ple())),J=C?await R4(C):void 0,te=R?await R4(R):void 0,ae=L?await R4(L):void 0,fe=U.extend({timeout:{socket:I},retry:v,https:{rejectUnauthorized:x,certificateAuthority:J,certificate:te,key:ae},...E});return r.getLimit(\"networkConcurrency\")(()=>fe(A))}var mle,yle,N4,T4,hle,gle,Tst,Nst,Cle,Ib=Et(()=>{St();mle=ve(\"https\"),yle=ve(\"http\"),N4=$e(Zo()),T4=$e(Yse());Yl();jl();ql();hle=new Map,gle=new Map,Tst=new yle.Agent({keepAlive:!0}),Nst=new mle.Agent({keepAlive:!0});Cle=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(Cle||{})});var Ji={};Vt(Ji,{availableParallelism:()=>U4,getArchitecture:()=>B1,getArchitectureName:()=>Gst,getArchitectureSet:()=>M4,getCaller:()=>Vst,major:()=>_st,openUrl:()=>Hst});function jst(){if(process.platform===\"darwin\"||process.platform===\"win32\")return null;let t;try{t=oe.readFileSync(qst)}catch{}if(typeof t<\"u\"){if(t&&t.includes(\"GLIBC\"))return\"glibc\";if(t&&t.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],o=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return KI(r,a=>{let n=a.match(o);if(!n)return KI.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 B1(){return Ile=Ile??{os:process.platform,cpu:process.arch,libc:jst()}}function Gst(t=B1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function M4(){let t=B1();return Ble=Ble??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Kst(t){let e=Yst.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf(\"native\")===0,o=e[2]&&e[2].indexOf(\"eval\")===0,a=Wst.exec(e[2]);return o&&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 Vst(){let e=new Error().stack.split(`\n`)[3];return Kst(e)}function U4(){return typeof Bb.default.availableParallelism<\"u\"?Bb.default.availableParallelism():Math.max(1,Bb.default.cpus().length)}var Bb,_st,wle,Hst,qst,Ile,Ble,Yst,Wst,vb=Et(()=>{St();Bb=$e(ve(\"os\"));Db();ql();_st=Number(process.versions.node.split(\".\")[0]),wle=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),Hst=typeof wle<\"u\"?async t=>{try{return await _4(wle,[t],{cwd:V.cwd()}),!0}catch{return!1}}:void 0,qst=\"/usr/bin/ldd\";Yst=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,Wst=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function Y4(t,e,r,o,a){let n=A1(r);if(o.isArray||o.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>H4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>H4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${e}\" cannot be an array`);return H4(t,e,r,o,a)}function H4(t,e,r,o,a){let n=A1(r);switch(o.type){case\"ANY\":return GP(n);case\"SHAPE\":return Zst(t,e,r,o,a);case\"MAP\":return $st(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings \"${e}\" cannot be set to null`);if(o.values?.includes(n))return n;let A=(()=>{if(o.type===\"BOOLEAN\"&&typeof n!=\"string\")return VI(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${e}\" to be a string, got ${typeof n}`);let p=sP(n,{env:t.env});switch(o.type){case\"ABSOLUTE_PATH\":{let h=a,E=mM(r);return E&&E[0]!==\"<\"&&(h=V.dirname(E)),V.resolve(h,ue.toPortablePath(p))}case\"LOCATOR_LOOSE\":return xf(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return xf(p);case\"BOOLEAN\":return VI(p);default:return p}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(\", \")}`);return A}function Zst(t,e,r,o,a){let n=A1(r);if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Object configuration settings \"${e}\" must be an object`);let u=W4(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new it(`Unrecognized configuration settings found: ${e}.${A} - run \"yarn config -v\" to see the list of settings supported in Yarn`);u.set(A,Y4(t,h,p,o.properties[A],a))}return u}function $st(t,e,r,o,a){let n=A1(r),u=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Map configuration settings \"${e}\" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,E=`${e}['${h}']`,I=o.valueDefinition;u.set(h,Y4(t,E,p,I,a))}return u}function W4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case\"SHAPE\":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,W4(t,n));return o}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(o=>V.normalize(o)):V.isAbsolute(e.default)?V.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>V.resolve(t.projectCwd,o)):V.resolve(t.projectCwd,e.default);default:return e.default}}function Pb(t,e,r){if(e.type===\"SECRET\"&&typeof t==\"string\"&&r.hideSecrets)return Xst;if(e.type===\"ABSOLUTE_PATH\"&&typeof t==\"string\"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(Pb(a,e,r));return o}if(e.type===\"MAP\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=Pb(n,e.valueDefinition,r);typeof u<\"u\"&&o.set(a,u)}return o}if(e.type===\"SHAPE\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a],A=Pb(n,u,r);typeof A<\"u\"&&o.set(a,A)}return o}return t}function eot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(bb)&&(e=(0,Dle.default)(e.slice(bb.length)),t[e]=r);return t}function j4(){let t=`${bb}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r==\"string\")return r;return G4}async function vle(t){try{return await oe.readFilePromise(t)}catch{return Buffer.of()}}async function tot(t,e){return Buffer.compare(...await Promise.all([vle(t),vle(e)]))===0}async function rot(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe.statPromise(e)]);return r.dev===o.dev&&r.ino===o.ino}async function iot({configuration:t,selfPath:e}){let r=t.get(\"yarnPath\");return t.get(\"ignorePath\")||r===null||r===e||await not(r,e)?null:r}var Dle,Lf,Sle,Ple,ble,q4,Jst,v1,zst,FE,bb,G4,Xst,D1,xle,xb,Sb,not,rA,Ke,S1=Et(()=>{St();Nl();Dle=$e(sV()),Lf=$e(td());qt();Sle=$e(ZV()),Ple=ve(\"module\"),ble=$e(id()),q4=ve(\"stream\");ose();fE();cM();uM();AM();Tse();fM();vd();Use();WP();jl();nh();Ib();ql();vb();Qf();bo();Jst=function(){if(!Lf.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=oe.readJsonSync(t)}catch{return!1}return!(!(\"repository\"in e)||!e.repository||(e.repository.private??!0))}(),v1=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\"]),zst=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"zipDataEpilogue\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),FE=/^(?!v)[a-z0-9._-]+$/i,bb=\"yarn_\",G4=\".yarnrc.yml\",Xst=\"********\",D1=(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))(D1||{}),xle=yt,xb=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(xb||{}),Sb={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:EM()},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:j4()},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:lP,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:SL,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Lf.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:!Lf.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:!Lf.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:U4()},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(uP),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:Lf.isPR&&Jst,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},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}}}}}}}};not=process.platform===\"win32\"?tot:rot;rA=class{constructor(e){this.isCI=Lf.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 create(e,r,o){let a=new rA(e);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(Sb);let n=typeof o<\"u\"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){let u=eot();delete u.rcFilename;let A=new rA(e),p=await rA.findRcFiles(e),h=await rA.findFolderRcFile(EE());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Mse(p.map(ce=>[ce.path,ce.data])),I=Bt.dot,v=new Set(Object.keys(Sb)),x=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he})=>({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he}),C=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he,...Be})=>{let we={};for(let[g,Ee]of Object.entries(Be))v.has(g)&&(we[g]=Ee);return we},R=({yarnPath:ce,ignorePath:me,...he})=>{let Be={};for(let[we,g]of Object.entries(he))v.has(we)||(Be[we]=g);return Be};if(A.importSettings(x(Sb)),A.useWithSource(\"<environment>\",x(u),e,{strict:!1}),E){let[ce,me]=E;A.useWithSource(ce,x(me),I,{strict:!1})}if(a){if(await iot({configuration:A,selfPath:a})!==null)return A;A.useWithSource(\"<override>\",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let L=await rA.findProjectCwd(e);A.startingCwd=e,A.projectCwd=L;let U=Object.assign(Object.create(null),process.env);A.env=U;let J=await Promise.all(A.get(\"injectEnvironmentFiles\").map(async ce=>{let me=ce.endsWith(\"?\")?await oe.readFilePromise(ce.slice(0,-1),\"utf8\").catch(()=>\"\"):await oe.readFilePromise(ce,\"utf8\");return(0,Sle.parse)(me)}));for(let ce of J)for(let[me,he]of Object.entries(ce))A.env[me]=sP(he,{env:U});if(A.importSettings(C(Sb)),A.useWithSource(\"<environment>\",C(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,C(me),I,{strict:o})}let te=ce=>\"default\"in ce?ce.default:ce,ae=new Map([[\"@@core\",sse]]);if(r!==null)for(let ce of r.plugins.keys())ae.set(ce,te(r.modules.get(ce)));for(let[ce,me]of ae)A.activatePlugin(ce,me);let fe=new Map([]);if(r!==null){let ce=new Map;for(let Be of Ple.builtinModules)ce.set(Be,()=>Df(Be));for(let[Be,we]of r.modules)ce.set(Be,()=>we);let me=new Set,he=async(Be,we)=>{let{factory:g,name:Ee}=Df(Be);if(!g||me.has(Ee))return;let Se=new Map(ce),le=ee=>{if(Se.has(ee))return Se.get(ee)();throw new it(`This plugin cannot access the package referenced via ${ee} which is neither a builtin, nor an exposed entry`)},ne=await Ky(async()=>te(await g(le)),ee=>`${ee} (when initializing ${Ee}, defined in ${we})`);ce.set(Ee,()=>ne),me.add(Ee),fe.set(Ee,ne)};if(u.plugins)for(let Be of u.plugins.split(\";\")){let we=V.resolve(e,ue.toPortablePath(Be));await he(we,\"<environment>\")}for(let{path:Be,cwd:we,data:g}of p)if(!!n&&!!Array.isArray(g.plugins))for(let Ee of g.plugins){let Se=typeof Ee!=\"string\"?Ee.path:Ee,le=Ee?.spec??\"\",ne=Ee?.checksum??\"\";if(v1.has(le))continue;let ee=V.resolve(we,ue.toPortablePath(Se));if(!await oe.existsPromise(ee)){if(!le){let At=Mt(A,V.basename(ee,\".cjs\"),yt.NAME),H=Mt(A,\".gitignore\",yt.NAME),at=Mt(A,A.values.get(\"rcFilename\"),yt.NAME),Re=Mt(A,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",yt.URL);throw new it(`Missing source for the ${At} plugin - please try to remove the plugin from ${at} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Re} to make sure your plugin folder isn't gitignored.`)}if(!le.match(/^https?:/)){let At=Mt(A,V.basename(ee,\".cjs\"),yt.NAME),H=Mt(A,A.values.get(\"rcFilename\"),yt.NAME);throw new it(`Failed to recognize the source for the ${At} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let Ie=await L4(le,{configuration:A}),Fe=zs(Ie);if(ne&&ne!==Fe){let At=Mt(A,V.basename(ee,\".cjs\"),yt.NAME),H=Mt(A,A.values.get(\"rcFilename\"),yt.NAME),at=Mt(A,`yarn plugin import ${le}`,yt.CODE);throw new it(`Failed to fetch the ${At} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${at} to reimport it.`)}await oe.mkdirPromise(V.dirname(ee),{recursive:!0}),await oe.writeFilePromise(ee,Ie)}await he(ee,Be)}}for(let[ce,me]of fe)A.activatePlugin(ce,me);if(A.useWithSource(\"<environment>\",R(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,R(me),I,{strict:o})}return A.get(\"enableGlobalCache\")&&(A.values.set(\"cacheFolder\",`${A.get(\"globalFolder\")}/cache`),A.sources.set(\"cacheFolder\",\"<internal>\")),A}static async findRcFiles(e){let r=j4(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=V.join(n,r);if(oe.existsSync(u)){let A=await oe.readFilePromise(u,\"utf8\"),p;try{p=Ki(A)}catch{let E=\"\";throw A.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(E=\" (in particular, make sure you list the colons after each key name)\"),new it(`Parse error when loading ${u}; please check it's proper Yaml${E}`)}o.unshift({path:u,cwd:n,data:p})}a=V.dirname(n)}return o}static async findFolderRcFile(e){let r=V.join(e,dr.rc),o;try{o=await oe.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=Ki(o);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o,oe.existsSync(V.join(a,dr.lockfile)))return a;oe.existsSync(V.join(a,dr.manifest))&&(r=a),o=V.dirname(a)}return r}static async updateConfiguration(e,r,o={}){let a=j4(),n=V.join(e,a),u=oe.existsSync(n)?Ki(await oe.readFilePromise(n,\"utf8\")):{},A=!1,p;if(typeof r==\"function\"){try{p=r(u)}catch{p=r({})}if(p===u)return!1}else{p=u;for(let h of Object.keys(r)){let E=u[h],I=r[h],v;if(typeof I==\"function\")try{v=I(E)}catch{v=I(void 0)}else v=I;E!==v&&(v===rA.deleteProperty?delete p[h]:p[h]=v,A=!0)}if(!A)return!1}return await oe.changeFilePromise(n,Ba(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await rA.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!=\"string\"?A.path:A,h=u.find(E=>E.path===p);h?(n.push(h),u=u.filter(E=>E!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=EE();return await rA.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,o),this.values.set(r,W4(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Mt(this,e,yt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let u of[\"enableStrictSettings\",...Object.keys(r)]){let A=r[u],p=mM(A);if(p&&(e=p),typeof A>\"u\"||u===\"plugins\"||e===\"<environment>\"&&zst.has(u))continue;if(u===\"rcFilename\")throw new it(`The rcFilename settings can only be set via ${`${bb}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let I=EE(),v=e[0]!==\"<\"?V.dirname(e):null;if(a&&!(v!==null?I===v:!1))throw new it(`Unrecognized or legacy configuration settings found: ${u} - run \"yarn config -v\" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=Y4(this,u,A,h,o)}catch(I){throw I.message+=` in ${Mt(this,e,yt.PATH)}`,I}if(u===\"enableStrictSettings\"&&e!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let I=this.values.get(u);this.values.set(u,new Map(n?[...I,...E]:[...E,...I])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let I=this.values.get(u);this.values.set(u,n?[...I,...E]:[...E,...I]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,E),this.sources.set(u,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:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>\"u\")throw new it(`Couldn't find a configuration settings named \"${e}\"`);return Pb(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.createWriteStream(e);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${o} ${Mt(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${o} ${Mt(this,\"STDERR\",\"red\")}`);n=new q4.PassThrough,n.pipe(p),n.pipe(A),u=new q4.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new Dd([new c1,new Xn,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new hE([new gE,new mE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=B1(),r=this.get(\"supportedArchitectures\"),o=r.get(\"os\");o!==null&&(o=o.map(u=>u===\"current\"?e.os:u));let a=r.get(\"cpu\");a!==null&&(a=a.map(u=>u===\"current\"?e.cpu:u));let n=r.get(\"libc\");return n!==null&&(n=sl(n,u=>u===\"current\"?e.libc??sl.skip:u)),{os:o,cpu:a,libc:n}}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!xa(o.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let u=new Ot;u.load(a,{yamlCompatibilityMode:!0});let A=Yy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:o};for(let E of u.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of u.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,I]of u.peerDependenciesMeta)for(let[v,x]of Object.entries(I))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:v,value:x})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get(\"packageExtensions\"))r(ih(o,!0),iP(a),{userProvided:!0});return e}normalizeLocator(e){return xa(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):FE.test(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):e}normalizeDependency(e){return xa(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):FE.test(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e,{packageExtensions:r}){let o=e1(e),a=r.get(e.identHash);if(typeof a<\"u\"){let u=e.version;if(u!==null){for(let[A,p]of a)if(!!kf(u,A))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof o.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof o.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=o.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",ol(o.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:yL(h)}}}let n=u=>u.scope?`${u.scope}__${u.name}`:`${u.name}`;for(let u of o.peerDependenciesMeta.keys()){let A=Js(u);o.peerDependencies.has(A.identHash)||o.peerDependencies.set(A.identHash,In(A,\"*\"))}for(let u of o.peerDependencies.values()){if(u.scope===\"types\")continue;let A=n(u),p=eA(\"types\",A),h=fn(p);o.peerDependencies.has(p.identHash)||o.peerDependenciesMeta.has(h)||(o.peerDependencies.set(p.identHash,In(p,\"*\")),o.peerDependenciesMeta.set(h,{optional:!0}))}return o.dependencies=new Map(ks(o.dependencies,([,u])=>Pa(u))),o.peerDependencies=new Map(ks(o.peerDependencies,([,u])=>Pa(u))),o}getLimit(e){return ol(this.limits,e,()=>(0,ble.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<\"u\")return u}return null}},Ke=rA;Ke.deleteProperty=Symbol(),Ke.telemetry=null});var Ur={};Vt(Ur,{EndStrategy:()=>z4,ExecError:()=>kb,PipeError:()=>P1,execvp:()=>_4,pipevp:()=>Gc});function bd(t){return t!==null&&typeof t.fd==\"number\"}function K4(){}function V4(){for(let t of xd)t.kill()}async function Gc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":bd(n)&&(h[0]=n),bd(u)&&(h[1]=u),bd(A)&&(h[2]=A);let E=(0,J4.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...o,PWD:ue.fromPortablePath(r)},stdio:h});xd.add(E),xd.size===1&&(process.on(\"SIGINT\",K4),process.on(\"SIGTERM\",V4)),!bd(n)&&n!==null&&n.pipe(E.stdin),bd(u)||E.stdout.pipe(u,{end:!1}),bd(A)||E.stderr.pipe(A,{end:!1});let I=()=>{for(let v of new Set([u,A]))bd(v)||v.end()};return new Promise((v,x)=>{E.on(\"error\",C=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",K4),process.off(\"SIGTERM\",V4)),(p===2||p===1)&&I(),x(C)}),E.on(\"close\",(C,R)=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",K4),process.off(\"SIGTERM\",V4)),(p===2||p===1&&C!==0)&&I(),C===0||!a?v({code:X4(C,R)}):x(new P1({fileName:t,code:C,signal:R}))})})}async function _4(t,e,{cwd:r,env:o=process.env,encoding:a=\"utf8\",strict:n=!1}){let u=[\"ignore\",\"pipe\",\"pipe\"],A=[],p=[],h=ue.fromPortablePath(r);typeof o.PWD<\"u\"&&(o={...o,PWD:h});let E=(0,J4.default)(t,e,{cwd:h,env:o,stdio:u});return E.stdout.on(\"data\",I=>{A.push(I)}),E.stderr.on(\"data\",I=>{p.push(I)}),await new Promise((I,v)=>{E.on(\"error\",x=>{let C=Ke.create(r),R=Mt(C,t,yt.PATH);v(new zt(1,`Process ${R} failed to spawn`,L=>{L.reportError(1,`  ${zu(C,{label:\"Thrown Error\",value:_c(yt.NO_HINT,x.message)})}`)}))}),E.on(\"close\",(x,C)=>{let R=a===\"buffer\"?Buffer.concat(A):Buffer.concat(A).toString(a),L=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?I({code:X4(x,C),stdout:R,stderr:L}):v(new kb({fileName:t,code:x,signal:C,stdout:R,stderr:L}))})})}function X4(t,e){let r=sot.get(e);return typeof r<\"u\"?128+r:t??1}function oot(t,e,{configuration:r,report:o}){o.reportError(1,`  ${zu(r,t!==null?{label:\"Exit Code\",value:_c(yt.NUMBER,t)}:{label:\"Exit Signal\",value:_c(yt.CODE,e)})}`)}var J4,z4,P1,kb,xd,sot,Db=Et(()=>{St();J4=$e(sT());S1();Yl();jl();z4=(o=>(o[o.Never=0]=\"Never\",o[o.ErrorCode=1]=\"ErrorCode\",o[o.Always=2]=\"Always\",o))(z4||{}),P1=class extends zt{constructor({fileName:r,code:o,signal:a}){let n=Ke.create(V.cwd()),u=Mt(n,r,yt.PATH);super(1,`Child ${u} reported an error`,A=>{oot(o,a,{configuration:n,report:A})});this.code=X4(o,a)}},kb=class extends P1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};xd=new Set;sot=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function Qle(t){kle=t}function b1(){return typeof Z4>\"u\"&&(Z4=kle()),Z4}var Z4,kle,$4=Et(()=>{kle=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var Fle=_((Qb,tU)=>{var aot=Object.assign({},ve(\"fs\")),eU=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:{},o,a;r.ready=new Promise(function(We,tt){o=We,a=tt});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p=\"./this.program\",h=function(We,tt){throw tt},E=!1,I=!0,v=\"\";function x(We){return r.locateFile?r.locateFile(We,v):v+We}var C,R,L,U;I&&(E?v=ve(\"path\").dirname(v)+\"/\":v=__dirname+\"/\",C=function(tt,It){var nr=ii(tt);return nr?It?nr:nr.toString():(L||(L=aot),U||(U=ve(\"path\")),tt=U.normalize(tt),L.readFileSync(tt,It?null:\"utf8\"))},R=function(tt){var It=C(tt,!0);return It.buffer||(It=new Uint8Array(It)),Ee(It.buffer),It},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),A=process.argv.slice(2),h=function(We){process.exit(We)},r.inspect=function(){return\"[Emscripten Module object]\"});var J=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ae=0,fe=function(We){ae=We},ce;r.wasmBinary&&(ce=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&Ti(\"no native wasm support detected\");function he(We,tt,It){switch(tt=tt||\"i8\",tt.charAt(tt.length-1)===\"*\"&&(tt=\"i32\"),tt){case\"i1\":return He[We>>0];case\"i8\":return He[We>>0];case\"i16\":return cp((We>>1)*2);case\"i32\":return Os((We>>2)*4);case\"i64\":return Os((We>>2)*4);case\"float\":return cu((We>>2)*4);case\"double\":return lp((We>>3)*8);default:Ti(\"invalid type for getValue: \"+tt)}return null}var Be,we=!1,g;function Ee(We,tt){We||Ti(\"Assertion failed: \"+tt)}function Se(We){var tt=r[\"_\"+We];return Ee(tt,\"Cannot call unknown function \"+We+\", make sure it is exported\"),tt}function le(We,tt,It,nr,$){var ye={string:function(es){var bi=0;if(es!=null&&es!==0){var qo=(es.length<<2)+1;bi=Un(qo),At(es,bi,qo)}return bi},array:function(es){var bi=Un(es.length);return Re(es,bi),bi}};function Le(es){return tt===\"string\"?Ie(es):tt===\"boolean\"?Boolean(es):es}var pt=Se(We),ht=[],Tt=0;if(nr)for(var er=0;er<nr.length;er++){var $r=ye[It[er]];$r?(Tt===0&&(Tt=ms()),ht[er]=$r(nr[er])):ht[er]=nr[er]}var ji=pt.apply(null,ht);return ji=Le(ji),Tt!==0&&_s(Tt),ji}function ne(We,tt,It,nr){It=It||[];var $=It.every(function(Le){return Le===\"number\"}),ye=tt!==\"string\";return ye&&$&&!nr?Se(We):function(){return le(We,tt,It,arguments,nr)}}var ee=new TextDecoder(\"utf8\");function Ie(We,tt){if(!We)return\"\";for(var It=We+tt,nr=We;!(nr>=It)&&Te[nr];)++nr;return ee.decode(Te.subarray(We,nr))}function Fe(We,tt,It,nr){if(!(nr>0))return 0;for(var $=It,ye=It+nr-1,Le=0;Le<We.length;++Le){var pt=We.charCodeAt(Le);if(pt>=55296&&pt<=57343){var ht=We.charCodeAt(++Le);pt=65536+((pt&1023)<<10)|ht&1023}if(pt<=127){if(It>=ye)break;tt[It++]=pt}else if(pt<=2047){if(It+1>=ye)break;tt[It++]=192|pt>>6,tt[It++]=128|pt&63}else if(pt<=65535){if(It+2>=ye)break;tt[It++]=224|pt>>12,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}else{if(It+3>=ye)break;tt[It++]=240|pt>>18,tt[It++]=128|pt>>12&63,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}}return tt[It]=0,It-$}function At(We,tt,It){return Fe(We,Te,tt,It)}function H(We){for(var tt=0,It=0;It<We.length;++It){var nr=We.charCodeAt(It);nr>=55296&&nr<=57343&&(nr=65536+((nr&1023)<<10)|We.charCodeAt(++It)&1023),nr<=127?++tt:nr<=2047?tt+=2:nr<=65535?tt+=3:tt+=4}return tt}function at(We){var tt=H(We)+1,It=Li(tt);return It&&Fe(We,He,It,tt),It}function Re(We,tt){He.set(We,tt)}function ke(We,tt){return We%tt>0&&(We+=tt-We%tt),We}var xe,He,Te,Je,qe,b,w,P,y,F;function z(We){xe=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=He=new Int8Array(We),r.HEAP16=Je=new Int16Array(We),r.HEAP32=b=new Int32Array(We),r.HEAPU8=Te=new Uint8Array(We),r.HEAPU16=qe=new Uint16Array(We),r.HEAPU32=w=new Uint32Array(We),r.HEAPF32=P=new Float32Array(We),r.HEAPF64=y=new Float64Array(We)}var X=r.INITIAL_MEMORY||16777216,Z,ie=[],Pe=[],Ne=[],ot=!1;function dt(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)bt(r.preRun.shift());oo(ie)}function jt(){ot=!0,oo(Pe)}function $t(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Qr(r.postRun.shift());oo(Ne)}function bt(We){ie.unshift(We)}function an(We){Pe.unshift(We)}function Qr(We){Ne.unshift(We)}var mr=0,br=null,Wr=null;function Kn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(mr)}function Ns(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependencies(mr),mr==0&&(br!==null&&(clearInterval(br),br=null),Wr)){var tt=Wr;Wr=null,tt()}}r.preloadedImages={},r.preloadedAudios={};function Ti(We){r.onAbort&&r.onAbort(We),We+=\"\",te(We),we=!0,g=1,We=\"abort(\"+We+\"). Build with -s ASSERTIONS=1 for more info.\";var tt=new WebAssembly.RuntimeError(We);throw a(tt),tt}var ps=\"data:application/octet-stream;base64,\";function io(We){return We.startsWith(ps)}var Pi=\"data:application/octet-stream;base64,AGFzbQEAAAAB/wEkYAN/f38Bf2ABfwF/YAJ/fwF/YAF/AGAEf39/fwF/YAN/f38AYAV/f39/fwF/YAJ/fwBgBH9/f38AYAABf2AFf39/fn8BfmAEf35/fwF/YAR/f35/AX5gAn9+AX9gA398fwBgA39/fgF/YAF/AX5gBn9/f39/fwF/YAN/fn8Bf2AEf39/fwF+YAV/f35/fwF/YAR/f35/AX9gA39/fgF+YAJ/fgBgAn9/AX5gBX9/f39/AGADf35/AX5gBX5+f35/AX5gA39/fwF+YAZ/fH9/f38Bf2AAAGAHf35/f39+fwF/YAV/fn9/fwF/YAV/f39/fwF+YAJ+fwF/YAJ/fAACJQYBYQFhAAMBYQFiAAEBYQFjAAABYQFkAAEBYQFlAAIBYQFmAAED5wHlAQMAAwEDAwEHDAgDFgcNEgEDDRcFAQ8DEAUQAwIBAhgECxkEAQMBBQsFAwMDARACBAMAAggLBwEAAwADGgQDGwYGABwBBgMTFBEHBwcVCx4ABAgHBAICAgAfAQICAgIGFSAAIQAiAAIBBgIHAg0LEw0FAQUCACMDAQAUAAAGBQECBQUDCwsSAgEDBQIHAQEICAACCQQEAQABCAEBCQoBAwkBAQEBBgEGBgYABAIEBAQGEQQEAAARAAEDCQEJAQAJCQkBAQECCgoAAAMPAQEBAwACAgICBQIABwAKBgwHAAADAgICBQEEBQFwAT8/BQcBAYACgIACBgkBfwFBgInBAgsH+gEzAWcCAAFoAFQBaQDqAQFqALsBAWsAwQEBbACpAQFtAKgBAW4ApwEBbwClAQFwAKMBAXEAoAEBcgCbAQFzAMABAXQAugEBdQC5AQF2AEsBdwDiAQF4AMgBAXkAxwEBegDCAQFBAMkBAUIAuAEBQwAGAUQACQFFAKYBAUYAtwEBRwC2AQFIALUBAUkAtAEBSgCzAQFLALIBAUwAsQEBTQCwAQFOAK8BAU8AvAEBUACuAQFRAK0BAVIArAEBUwAaAVQACwFVAKQBAVYAMgFXAQABWACrAQFZAKoBAVoAxgEBXwDFAQEkAMQBAmFhAL8BAmJhAL4BAmNhAL0BCXgBAEEBCz6iAeMBjgGQAVpbjwFYnwGdAVeeAV1coQFZVlWcAZoBmQGYAZcBlgGVAZQBkwGSAZEB6QHoAecB5gHlAeQB4QHfAeAB3gHdAdwB2gHbAYUB2QHYAdcB1gHVAdQB0wHSAdEB0AHPAc4BzQHMAcsBygE4wwEK1N8G5QHMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNBxIQBKAIASQ0BIAAgAWohACADQciEASgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RB3IQBakYaIAIgAygCDCIBRgRAQbSEAUG0hAEoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQbyEASAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAM2AgBBwIQBQcCEASgCACAAaiIANgIAIAMgAEEBcjYCBCADQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASADNgIAQbyEAUG8hAEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QdyEAWpGGiACIAUoAgwiAUYEQEG0hAFBtIQBKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQcSEASgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANByIQBKAIARw0BQbyEASAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QdyEAWohAAJ/QbSEASgCACICQQEgAXQiAXFFBEBBtIQBIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHkhgFqIQECQAJAAkBBuIQBKAIAIgRBASACdCIHcUUEQEG4hAEgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQdSEAUHUhAEoAgBBAWsiAEF/IAAbNgIACwuDBAEDfyACQYAETwRAIAAgASACEAIaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALGgAgAARAIAAtAAEEQCAAKAIEEAYLIAAQBgsLoi4BDH8jAEEQayIMJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEG0hAEoAgAiBUEQIABBC2pBeHEgAEELSRsiCEEDdiICdiIBQQNxBEAgAUF/c0EBcSACaiIDQQN0IgFB5IQBaigCACIEQQhqIQACQCAEKAIIIgIgAUHchAFqIgFGBEBBtIQBIAVBfiADd3E2AgAMAQsgAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEG8hAEoAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHkhAFqKAIAIgQoAggiASAAQdyEAWoiAEYEQEG0hAEgBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QdyEAWohB0HIhAEoAgAhBAJ/IAVBASABdCIBcUUEQEG0hAEgASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0HIhAEgAjYCAEG8hAEgAzYCAAwNC0G4hAEoAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB5IYBaigCACIBKAIEQXhxIAhrIQMgASECA0ACQCACKAIQIgBFBEAgAigCFCIARQ0BCyAAKAIEQXhxIAhrIgIgAyACIANJIgIbIQMgACABIAIbIQEgACECDAELCyABIAhqIgkgAU0NAiABKAIYIQsgASABKAIMIgRHBEAgASgCCCIAQcSEASgCAEkaIAAgBDYCDCAEIAA2AggMDAsgAUEUaiICKAIAIgBFBEAgASgCECIARQ0EIAFBEGohAgsDQCACIQcgACIEQRRqIgIoAgAiAA0AIARBEGohAiAEKAIQIgANAAsgB0EANgIADAsLQX8hCCAAQb9/Sw0AIABBC2oiAEF4cSEIQbiEASgCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHkhgFqKAIAIgJFBEBBACEADAELQQAhACAIQQBBGSAFQQF2ayAFQR9GG3QhAQNAAkAgAigCBEF4cSAIayIHIANPDQAgAiEEIAciAw0AQQAhAyACIQAMAwsgACACKAIUIgcgByACIAFBHXZBBHFqKAIQIgJGGyAAIAcbIQAgAUEBdCEBIAINAAsLIAAgBHJFBEBBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QeSGAWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAhrIgEgA0khAiABIAMgAhshAyAAIAQgAhshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBvIQBKAIAIAhrTw0AIAQgCGoiBiAETQ0BIAQoAhghBSAEIAQoAgwiAUcEQCAEKAIIIgBBxIQBKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEG8hAEoAgAiAk0EQEHIhAEoAgAhAwJAIAIgCGsiAUEQTwRAQbyEASABNgIAQciEASADIAhqIgA2AgAgACABQQFyNgIEIAIgA2ogATYCACADIAhBA3I2AgQMAQtByIQBQQA2AgBBvIQBQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEHAhAEoAgAiBkkEQEHAhAEgBiAIayIBNgIAQcyEAUHMhAEoAgAiAiAIaiIANgIAIAAgAUEBcjYCBCACIAhBA3I2AgQgAkEIaiEADAsLQQAhACAIQS9qIgkCf0GMiAEoAgAEQEGUiAEoAgAMAQtBmIgBQn83AgBBkIgBQoCggICAgAQ3AgBBjIgBIAxBDGpBcHFB2KrVqgVzNgIAQaCIAUEANgIAQfCHAUEANgIAQYAgCyIBaiIFQQAgAWsiB3EiAiAITQ0KQeyHASgCACIEBEBB5IcBKAIAIgMgAmoiASADTQ0LIAEgBEsNCwtB8IcBLQAAQQRxDQUCQAJAQcyEASgCACIDBEBB9IcBIQADQCADIAAoAgAiAU8EQCABIAAoAgRqIANLDQMLIAAoAggiAA0ACwtBABApIgFBf0YNBiACIQVBkIgBKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITQ0GIAVB/v///wdLDQZB7IcBKAIAIgQEQEHkhwEoAgAiAyAFaiIAIANNDQcgACAESw0HCyAFECkiACABRw0BDAgLIAUgBmsgB3EiBUH+////B0sNBSAFECkiASAAKAIAIAAoAgRqRg0EIAEhAAsCQCAAQX9GDQAgCEEwaiAFTQ0AQZSIASgCACIBIAkgBWtqQQAgAWtxIgFB/v///wdLBEAgACEBDAgLIAEQKUF/RwRAIAEgBWohBSAAIQEMCAtBACAFaxApGgwFCyAAIgFBf0cNBgwECwALQQAhBAwHC0EAIQEMBQsgAUF/Rw0CC0HwhwFB8IcBKAIAQQRyNgIACyACQf7///8HSw0BIAIQKSEBQQAQKSEAIAFBf0YNASAAQX9GDQEgACABTQ0BIAAgAWsiBSAIQShqTQ0BC0HkhwFB5IcBKAIAIAVqIgA2AgBB6IcBKAIAIABJBEBB6IcBIAA2AgALAkACQAJAQcyEASgCACIHBEBB9IcBIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0HEhAEoAgAiAEEAIAAgAU0bRQRAQcSEASABNgIAC0EAIQBB+IcBIAU2AgBB9IcBIAE2AgBB1IQBQX82AgBB2IQBQYyIASgCADYCAEGAiAFBADYCAANAIABBA3QiA0HkhAFqIANB3IQBaiICNgIAIANB6IQBaiACNgIAIABBAWoiAEEgRw0AC0HAhAEgBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQcyEASAAIAFqIgA2AgAgACACQQFyNgIEIAEgA2pBKDYCBEHQhAFBnIgBKAIANgIADAILIAAtAAxBCHENACADIAdLDQAgASAHTQ0AIAAgAiAFajYCBEHMhAEgB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEHAhAFBwIQBKAIAIAVqIgEgAGsiADYCACACIABBAXI2AgQgASAHakEoNgIEQdCEAUGciAEoAgA2AgAMAQtBxIQBKAIAIAFLBEBBxIQBIAE2AgALIAEgBWohAkH0hwEhAAJAAkACQAJAAkACQANAIAIgACgCAEcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAQtB9IcBIQADQCAHIAAoAgAiAk8EQCACIAAoAgRqIgQgB0sNAwsgACgCCCEADAALAAsgACABNgIAIAAgACgCBCAFajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAIQQNyNgIEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIFIAggCWoiBmshAiAFIAdGBEBBzIQBIAY2AgBBwIQBQcCEASgCACACaiIANgIAIAYgAEEBcjYCBAwDCyAFQciEASgCAEYEQEHIhAEgBjYCAEG8hAFBvIQBKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RB3IQBakYaIAMgBSgCDCIBRgRAQbSEAUG0hAEoAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QeSGAWoiACgCAEYEQCAAIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHchAFqIQICf0G0hAEoAgAiAUEBIAB0IgBxRQRAQbSEASAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QeSGAWohBAJAQbiEASgCACIDQQEgAHQiAXFFBEBBuIQBIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBwIQBIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEHMhAEgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRB0IQBQZyIASgCADYCACAHIARBJyAEa0EHcUEAIARBJ2tBB3EbakEvayIAIAAgB0EQakkbIgJBGzYCBCACQfyHASkCADcCECACQfSHASkCADcCCEH8hwEgAkEIajYCAEH4hwEgBTYCAEH0hwEgATYCAEGAiAFBADYCACACQRhqIQADQCAAQQc2AgQgAEEIaiEBIABBBGohACABIARJDQALIAIgB0YNAyACIAIoAgRBfnE2AgQgByACIAdrIgRBAXI2AgQgAiAENgIAIARB/wFNBEAgBEEDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwEC0EfIQAgB0IANwIQIARB////B00EQCAEQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgBCAAQRVqdkEBcXJBHGohAAsgByAANgIcIABBAnRB5IYBaiEDAkBBuIQBKAIAIgJBASAAdCIBcUUEQEG4hAEgASACcjYCACADIAc2AgAgByADNgIYDAELIARBAEEZIABBAXZrIABBH0YbdCEAIAMoAgAhAQNAIAEiAigCBEF4cSAERg0EIABBHXYhASAAQQF0IQAgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwDCyADKAIIIgAgBjYCDCADIAY2AgggBkEANgIYIAYgAzYCDCAGIAA2AggLIAlBCGohAAwFCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLQcCEASgCACIAIAhNDQBBwIQBIAAgCGsiATYCAEHMhAFBzIQBKAIAIgIgCGoiADYCACAAIAFBAXI2AgQgAiAIQQNyNgIEIAJBCGohAAwDC0GEhAFBMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QeSGAWoiACgCACAERgRAIAAgATYCACABDQFBuIQBIAlBfiACd3EiCTYCAAwCCyAFQRBBFCAFKAIQIARGG2ogATYCACABRQ0BCyABIAU2AhggBCgCECIABEAgASAANgIQIAAgATYCGAsgBCgCFCIARQ0AIAEgADYCFCAAIAE2AhgLAkAgA0EPTQRAIAQgAyAIaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgCEEDcjYCBCAGIANBAXI2AgQgAyAGaiADNgIAIANB/wFNBEAgA0EDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwBC0EfIQAgA0H///8HTQRAIANBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCADIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRB5IYBaiECAkACQCAJQQEgAHQiAXFFBEBBuIQBIAEgCXI2AgAgAiAGNgIAIAYgAjYCGAwBCyADQQBBGSAAQQF2ayAAQR9GG3QhACACKAIAIQgDQCAIIgEoAgRBeHEgA0YNAiAAQR12IQIgAEEBdCEAIAEgAkEEcWoiAigCECIIDQALIAIgBjYCECAGIAE2AhgLIAYgBjYCDCAGIAY2AggMAQsgASgCCCIAIAY2AgwgASAGNgIIIAZBADYCGCAGIAE2AgwgBiAANgIICyAEQQhqIQAMAQsCQCALRQ0AAkAgASgCHCICQQJ0QeSGAWoiACgCACABRgRAIAAgBDYCACAEDQFBuIQBIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QdyEAWohBEHIhAEoAgAhAgJ/QQEgAHQiACAFcUUEQEG0hAEgACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0HIhAEgCTYCAEG8hAEgAzYCAAsgAUEIaiEACyAMQRBqJAAgAAuJAQEDfyAAKAIcIgEQMAJAIAAoAhAiAiABKAIQIgMgAiADSRsiAkUNACAAKAIMIAEoAgggAhAHGiAAIAAoAgwgAmo2AgwgASABKAIIIAJqNgIIIAAgACgCFCACajYCFCAAIAAoAhAgAms2AhAgASABKAIQIAJrIgA2AhAgAA0AIAEgASgCBDYCCAsLzgEBBX8CQCAARQ0AIAAoAjAiAQRAIAAgAUEBayIBNgIwIAENAQsgACgCIARAIABBATYCICAAEBoaCyAAKAIkQQFGBEAgABBDCwJAIAAoAiwiAUUNACAALQAoDQACQCABKAJEIgNFDQAgASgCTCEEA0AgACAEIAJBAnRqIgUoAgBHBEAgAyACQQFqIgJHDQEMAgsLIAUgBCADQQFrIgJBAnRqKAIANgIAIAEgAjYCRAsLIABBAEIAQQUQDhogACgCACIBBEAgARALCyAAEAYLC1oCAn4BfwJ/AkACQCAALQAARQ0AIAApAxAiAUJ9Vg0AIAFCAnwiAiAAKQMIWA0BCyAAQQA6AABBAAwBC0EAIAAoAgQiA0UNABogACACNwMQIAMgAadqLwAACwthAgJ+AX8CQAJAIAAtAABFDQAgACkDECICQn1WDQAgAkICfCIDIAApAwhYDQELIABBADoAAA8LIAAoAgQiBEUEQA8LIAAgAzcDECAEIAKnaiIAIAFBCHY6AAEgACABOgAAC8wCAQJ/IwBBEGsiBCQAAkAgACkDGCADrYinQQFxRQRAIABBDGoiAARAIABBADYCBCAAQRw2AgALQn8hAgwBCwJ+IAAoAgAiBUUEQCAAKAIIIAEgAiADIAAoAgQRDAAMAQsgBSAAKAIIIAEgAiADIAAoAgQRCgALIgJCf1UNAAJAIANBBGsOCwEAAAAAAAAAAAABAAsCQAJAIAAtABhBEHFFBEAgAEEMaiIBBEAgAUEANgIEIAFBHDYCAAsMAQsCfiAAKAIAIgFFBEAgACgCCCAEQQhqQghBBCAAKAIEEQwADAELIAEgACgCCCAEQQhqQghBBCAAKAIEEQoAC0J/VQ0BCyAAQQxqIgAEQCAAQQA2AgQgAEEUNgIACwwBCyAEKAIIIQEgBCgCDCEDIABBDGoiAARAIAAgAzYCBCAAIAE2AgALCyAEQRBqJAAgAguTFQIOfwN+AkACQAJAAkACQAJAAkACQAJAAkACQCAAKALwLQRAIAAoAogBQQFIDQEgACgCACIEKAIsQQJHDQQgAC8B5AENAyAALwHoAQ0DIAAvAewBDQMgAC8B8AENAyAALwH0AQ0DIAAvAfgBDQMgAC8B/AENAyAALwGcAg0DIAAvAaACDQMgAC8BpAINAyAALwGoAg0DIAAvAawCDQMgAC8BsAINAyAALwG0Ag0DIAAvAbgCDQMgAC8BvAINAyAALwHAAg0DIAAvAcQCDQMgAC8ByAINAyAALwHUAg0DIAAvAdgCDQMgAC8B3AINAyAALwHgAg0DIAAvAYgCDQIgAC8BjAINAiAALwGYAg0CQSAhBgNAIAAgBkECdCIFai8B5AENAyAAIAVBBHJqLwHkAQ0DIAAgBUEIcmovAeQBDQMgACAFQQxyai8B5AENAyAGQQRqIgZBgAJHDQALDAMLIABBBzYC/C0gAkF8Rw0FIAFFDQUMBgsgAkEFaiIEIQcMAwtBASEHCyAEIAc2AiwLIAAgAEHoFmoQUSAAIABB9BZqEFEgAC8B5gEhBCAAIABB7BZqKAIAIgxBAnRqQf//AzsB6gEgAEGQFmohECAAQZQWaiERIABBjBZqIQdBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJA0AgBCEIIAAgCyIOQQFqIgtBAnRqLwHmASEEAkACQCAGQQFqIgVB//8DcSIPIA1B//8DcU8NACAEIAhHDQAgBSEGDAELAn8gACAIQQJ0akHMFWogCkH//wNxIA9LDQAaIAgEQEEBIQUgByAIIAlGDQEaIAAgCEECdGpBzBVqIgYgBi8BAEEBajsBACAHDAELQQEhBSAQIBEgBkH//wNxQQpJGwsiBiAGLwEAIAVqOwEAQQAhBgJ/IARFBEBBAyEKQYoBDAELQQNBBCAEIAhGIgUbIQpBBkEHIAUbCyENIAghCQsgDCAORw0ACwsgAEHaE2ovAQAhBCAAIABB+BZqKAIAIgxBAnRqQd4TakH//wM7AQBBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJQQAhCwNAIAQhCCAAIAsiDkEBaiILQQJ0akHaE2ovAQAhBAJAAkAgBkEBaiIFQf//A3EiDyANQf//A3FPDQAgBCAIRw0AIAUhBgwBCwJ/IAAgCEECdGpBzBVqIApB//8DcSAPSw0AGiAIBEBBASEFIAcgCCAJRg0BGiAAIAhBAnRqQcwVaiIGIAYvAQBBAWo7AQAgBwwBC0EBIQUgECARIAZB//8DcUEKSRsLIgYgBi8BACAFajsBAEEAIQYCfyAERQRAQQMhCkGKAQwBC0EDQQQgBCAIRiIFGyEKQQZBByAFGwshDSAIIQkLIAwgDkcNAAsLIAAgAEGAF2oQUSAAIAAoAvgtAn9BEiAAQYoWai8BAA0AGkERIABB0hVqLwEADQAaQRAgAEGGFmovAQANABpBDyAAQdYVai8BAA0AGkEOIABBghZqLwEADQAaQQ0gAEHaFWovAQANABpBDCAAQf4Vai8BAA0AGkELIABB3hVqLwEADQAaQQogAEH6FWovAQANABpBCSAAQeIVai8BAA0AGkEIIABB9hVqLwEADQAaQQcgAEHmFWovAQANABpBBiAAQfIVai8BAA0AGkEFIABB6hVqLwEADQAaQQQgAEHuFWovAQANABpBA0ECIABBzhVqLwEAGwsiBkEDbGoiBEERajYC+C0gACgC/C1BCmpBA3YiByAEQRtqQQN2IgRNBEAgByEEDAELIAAoAowBQQRHDQAgByEECyAEIAJBBGpPQQAgARsNASAEIAdHDQQLIANBAmqtIRIgACkDmC4hFCAAKAKgLiIBQQNqIgdBP0sNASASIAGthiAUhCESDAILIAAgASACIAMQOQwDCyABQcAARgRAIAAoAgQgACgCEGogFDcAACAAIAAoAhBBCGo2AhBBAyEHDAELIAAoAgQgACgCEGogEiABrYYgFIQ3AAAgACAAKAIQQQhqNgIQIAFBPWshByASQcAAIAFrrYghEgsgACASNwOYLiAAIAc2AqAuIABBgMEAQYDKABCHAQwBCyADQQRqrSESIAApA5guIRQCQCAAKAKgLiIBQQNqIgRBP00EQCASIAGthiAUhCESDAELIAFBwABGBEAgACgCBCAAKAIQaiAUNwAAIAAgACgCEEEIajYCEEEDIQQMAQsgACgCBCAAKAIQaiASIAGthiAUhDcAACAAIAAoAhBBCGo2AhAgAUE9ayEEIBJBwAAgAWutiCESCyAAIBI3A5guIAAgBDYCoC4gAEHsFmooAgAiC6xCgAJ9IRMgAEH4FmooAgAhCQJAAkACfwJ+AkACfwJ/IARBOk0EQCATIASthiAShCETIARBBWoMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQIAmsIRJCBSEUQQoMAgsgACgCBCAAKAIQaiATIASthiAShDcAACAAIAAoAhBBCGo2AhAgE0HAACAEa62IIRMgBEE7awshBSAJrCESIAVBOksNASAFrSEUIAVBBWoLIQcgEiAUhiAThAwBCyAFQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgBq1CA30hE0IFIRRBCQwCCyAAKAIEIAAoAhBqIBIgBa2GIBOENwAAIAAgACgCEEEIajYCECAFQTtrIQcgEkHAACAFa62ICyESIAatQgN9IRMgB0E7Sw0BIAetIRQgB0EEagshBCATIBSGIBKEIRMMAQsgB0HAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQQQQhBAwBCyAAKAIEIAAoAhBqIBMgB62GIBKENwAAIAAgACgCEEEIajYCECAHQTxrIQQgE0HAACAHa62IIRMLQQAhBQNAIAAgBSIBQZDWAGotAABBAnRqQc4VajMBACEUAn8gBEE8TQRAIBQgBK2GIBOEIRMgBEEDagwBCyAEQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgFCETQQMMAQsgACgCBCAAKAIQaiAUIASthiAThDcAACAAIAAoAhBBCGo2AhAgFEHAACAEa62IIRMgBEE9awshBCABQQFqIQUgASAGRw0ACyAAIAQ2AqAuIAAgEzcDmC4gACAAQeQBaiICIAsQhgEgACAAQdgTaiIBIAkQhgEgACACIAEQhwELIAAQiAEgAwRAAkAgACgCoC4iBEE5TgRAIAAoAgQgACgCEGogACkDmC43AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgQ2AqAuCyAEQQlOBH8gACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACgCoC5BEGsFIAQLQQFIDQAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiAAKQOYLjwAAAsgAEEANgKgLiAAQgA3A5guCwsZACAABEAgACgCABAGIAAoAgwQBiAAEAYLC6wBAQJ+Qn8hAwJAIAAtACgNAAJAAkAgACgCIEUNACACQgBTDQAgAlANASABDQELIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAALQA1DQBCACEDIAAtADQNACACUA0AA0AgACABIAOnaiACIAN9QQEQDiIEQn9XBEAgAEEBOgA1Qn8gAyADUBsPCyAEUEUEQCADIAR8IgMgAloNAgwBCwsgAEEBOgA0CyADC3UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCe1YNACACQgR8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUEYdjoAAyAAIAFBEHY6AAIgACABQQh2OgABIAAgAToAAAtUAgF+AX8CQAJAIAAtAABFDQAgASAAKQMQIgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADwsgACgCBCIDRQRAQQAPCyAAIAI3AxAgAyABp2oLdwECfyMAQRBrIgMkAEF/IQQCQCAALQAoDQAgACgCIEEAIAJBA0kbRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALDAELIAMgAjYCCCADIAE3AwAgACADQhBBBhAOQgBTDQBBACEEIABBADoANAsgA0EQaiQAIAQLVwICfgF/AkACQCAALQAARQ0AIAApAxAiAUJ7Vg0AIAFCBHwiAiAAKQMIWA0BCyAAQQA6AABBAA8LIAAoAgQiA0UEQEEADwsgACACNwMQIAMgAadqKAAAC1UCAX4BfyAABEACQCAAKQMIUA0AQgEhAQNAIAAoAgAgAkEEdGoQPiABIAApAwhaDQEgAachAiABQgF8IQEMAAsACyAAKAIAEAYgACgCKBAQIAAQBgsLZAECfwJAAkACQCAARQRAIAGnEAkiA0UNAkEYEAkiAkUNAQwDCyAAIQNBGBAJIgINAkEADwsgAxAGC0EADwsgAkIANwMQIAIgATcDCCACIAM2AgQgAkEBOgAAIAIgAEU6AAEgAgudAQICfgF/AkACQCAALQAARQ0AIAApAxAiAkJ3Vg0AIAJCCHwiAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2oiACABQjiIPAAHIAAgAUIwiDwABiAAIAFCKIg8AAUgACABQiCIPAAEIAAgAUIYiDwAAyAAIAFCEIg8AAIgACABQgiIPAABIAAgATwAAAvwAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiADYCACADIAIgBGtBfHEiAmoiAUEEayAANgIAIAJBCUkNACADIAA2AgggAyAANgIEIAFBCGsgADYCACABQQxrIAA2AgAgAkEZSQ0AIAMgADYCGCADIAA2AhQgAyAANgIQIAMgADYCDCABQRBrIAA2AgAgAUEUayAANgIAIAFBGGsgADYCACABQRxrIAA2AgAgAiADQQRxQRhyIgFrIgJBIEkNACAArUKBgICAEH4hBSABIANqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsLbwEDfyAAQQxqIQICQAJ/IAAoAiAiAUUEQEF/IQFBEgwBCyAAIAFBAWsiAzYCIEEAIQEgAw0BIABBAEIAQQIQDhogACgCACIARQ0BIAAQGkF/Sg0BQRQLIQAgAgRAIAJBADYCBCACIAA2AgALCyABC58BAgF/AX4CfwJAAn4gACgCACIDKAIkQQFGQQAgAkJ/VRtFBEAgA0EMaiIBBEAgAUEANgIEIAFBEjYCAAtCfwwBCyADIAEgAkELEA4LIgRCf1cEQCAAKAIAIQEgAEEIaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQtBACACIARRDQEaIABBCGoEQCAAQRs2AgwgAEEGNgIICwtBfwsLJAEBfyAABEADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLC5gBAgJ+AX8CQAJAIAAtAABFDQAgACkDECIBQndWDQAgAUIIfCICIAApAwhYDQELIABBADoAAEIADwsgACgCBCIDRQRAQgAPCyAAIAI3AxAgAyABp2oiADEABkIwhiAAMQAHQjiGhCAAMQAFQiiGhCAAMQAEQiCGhCAAMQADQhiGhCAAMQACQhCGhCAAMQABQgiGhCAAMQAAfAsjACAAQShGBEAgAhAGDwsgAgRAIAEgAkEEaygCACAAEQcACwsyACAAKAIkQQFHBEAgAEEMaiIABEAgAEEANgIEIABBEjYCAAtCfw8LIABBAEIAQQ0QDgsPACAABEAgABA2IAAQBgsLgAEBAX8gAC0AKAR/QX8FIAFFBEAgAEEMagRAIABBADYCECAAQRI2AgwLQX8PCyABECoCQCAAKAIAIgJFDQAgAiABECFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAtBfw8LIAAgAUI4QQMQDkI/h6cLC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsL3wIBCH8gAEUEQEEBDwsCQCAAKAIIIgINAEEBIQQgAC8BBCIHRQRAQQEhAgwBCyAAKAIAIQgDQAJAIAMgCGoiBS0AACICQSBPBEAgAkEYdEEYdUF/Sg0BCyACQQ1NQQBBASACdEGAzABxGw0AAn8CfyACQeABcUHAAUYEQEEBIQYgA0EBagwBCyACQfABcUHgAUYEQCADQQJqIQNBACEGQQEMAgsgAkH4AXFB8AFHBEBBBCECDAULQQAhBiADQQNqCyEDQQALIQlBBCECIAMgB08NAiAFLQABQcABcUGAAUcNAkEDIQQgBg0AIAUtAAJBwAFxQYABRw0CIAkNACAFLQADQcABcUGAAUcNAgsgBCECIANBAWoiAyAHSQ0ACwsgACACNgIIAn8CQCABRQ0AAkAgAUECRw0AIAJBA0cNAEECIQIgAEECNgIICyABIAJGDQBBBSACQQFHDQEaCyACCwtIAgJ+An8jAEEQayIEIAE2AgxCASAArYYhAgNAIAQgAUEEaiIANgIMIAIiA0IBIAEoAgAiBa2GhCECIAAhASAFQX9KDQALIAMLhwUBB38CQAJAIABFBEBBxRQhAiABRQ0BIAFBADYCAEHFFA8LIAJBwABxDQEgACgCCEUEQCAAQQAQIxoLIAAoAgghBAJAIAJBgAFxBEAgBEEBa0ECTw0BDAMLIARBBEcNAgsCQCAAKAIMIgINACAAAn8gACgCACEIIABBEGohCUEAIQICQAJAAkACQCAALwEEIgUEQEEBIQQgBUEBcSEHIAVBAUcNAQwCCyAJRQ0CIAlBADYCAEEADAQLIAVBfnEhBgNAIARBAUECQQMgAiAIai0AAEEBdEHQFGovAQAiCkGAEEkbIApBgAFJG2pBAUECQQMgCCACQQFyai0AAEEBdEHQFGovAQAiBEGAEEkbIARBgAFJG2ohBCACQQJqIQIgBkECayIGDQALCwJ/IAcEQCAEQQFBAkEDIAIgCGotAABBAXRB0BRqLwEAIgJBgBBJGyACQYABSRtqIQQLIAQLEAkiB0UNASAFQQEgBUEBSxshCkEAIQVBACEGA0AgBSAHaiEDAn8gBiAIai0AAEEBdEHQFGovAQAiAkH/AE0EQCADIAI6AAAgBUEBagwBCyACQf8PTQRAIAMgAkE/cUGAAXI6AAEgAyACQQZ2QcABcjoAACAFQQJqDAELIAMgAkE/cUGAAXI6AAIgAyACQQx2QeABcjoAACADIAJBBnZBP3FBgAFyOgABIAVBA2oLIQUgBkEBaiIGIApHDQALIAcgBEEBayICakEAOgAAIAlFDQAgCSACNgIACyAHDAELIAMEQCADQQA2AgQgA0EONgIAC0EACyICNgIMIAINAEEADwsgAUUNACABIAAoAhA2AgALIAIPCyABBEAgASAALwEENgIACyAAKAIAC4MBAQR/QRIhBQJAAkAgACkDMCABWA0AIAGnIQYgACgCQCEEIAJBCHEiB0UEQCAEIAZBBHRqKAIEIgINAgsgBCAGQQR0aiIEKAIAIgJFDQAgBC0ADEUNAUEXIQUgBw0BC0EAIQIgAyAAQQhqIAMbIgAEQCAAQQA2AgQgACAFNgIACwsgAgtuAQF/IwBBgAJrIgUkAAJAIARBgMAEcQ0AIAIgA0wNACAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxAZIAFFBEADQCAAIAVBgAIQLiACQYACayICQf8BSw0ACwsgACAFIAIQLgsgBUGAAmokAAuBAQEBfyMAQRBrIgQkACACIANsIQICQCAAQSdGBEAgBEEMaiACEIwBIQBBACAEKAIMIAAbIQAMAQsgAUEBIAJBxABqIAARAAAiAUUEQEEAIQAMAQtBwAAgAUE/cWsiACABakHAAEEAIABBBEkbaiIAQQRrIAE2AAALIARBEGokACAAC1IBAn9BhIEBKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQA0UNAQtBhIEBIAA2AgAgAQ8LQYSEAUEwNgIAQX8LNwAgAEJ/NwMQIABBADYCCCAAQgA3AwAgAEEANgIwIABC/////w83AyggAEIANwMYIABCADcDIAulAQEBf0HYABAJIgFFBEBBAA8LAkAgAARAIAEgAEHYABAHGgwBCyABQgA3AyAgAUEANgIYIAFC/////w83AxAgAUEAOwEMIAFBv4YoNgIIIAFBAToABiABQQA6AAQgAUIANwNIIAFBgIDYjXg2AkQgAUIANwMoIAFCADcDMCABQgA3AzggAUFAa0EAOwEAIAFCADcDUAsgAUEBOgAFIAFBADYCACABC1gCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgMgAq18IgQgA1QNACAEIAApAwhYDQELIABBADoAAA8LIAAoAgQiBUUEQA8LIAAgBDcDECAFIAOnaiABIAIQBxoLlgEBAn8CQAJAIAJFBEAgAacQCSIFRQ0BQRgQCSIEDQIgBRAGDAELIAIhBUEYEAkiBA0BCyADBEAgA0EANgIEIANBDjYCAAtBAA8LIARCADcDECAEIAE3AwggBCAFNgIEIARBAToAACAEIAJFOgABIAAgBSABIAMQZUEASAR/IAQtAAEEQCAEKAIEEAYLIAQQBkEABSAECwubAgEDfyAALQAAQSBxRQRAAkAgASEDAkAgAiAAIgEoAhAiAAR/IAAFAn8gASABLQBKIgBBAWsgAHI6AEogASgCACIAQQhxBEAgASAAQSByNgIAQX8MAQsgAUIANwIEIAEgASgCLCIANgIcIAEgADYCFCABIAAgASgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgAyACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIERQ0CGiADIARBAWsiAGotAABBCkcNAAsgASADIAQgASgCJBEAACAESQ0CIAMgBGohAyABKAIUIQUgAiAEawwBCyACCyEAIAUgAyAAEAcaIAEgASgCFCAAajYCFAsLCwvNBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJoIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/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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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAEGBywAL7AYBAgMEBAUFBgYGBgcHBwcICAgICAgICAkJCQkJCQkJCgoKCgoKCgoKCgoKCgoKCgsLCwsLCwsLCwsLCwsLCwsMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8AABAREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAAECAwQFBgcICAkJCgoLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQEBAQEBEREREREREREhISEhISEhITExMTExMTExQUFBQUFBQUFBQUFBQUFBQVFRUVFRUVFRUVFRUVFRUVFhYWFhYWFhYWFhYWFhYWFhcXFxcXFxcXFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAQYTSAAutAQEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAgCAAAMApAAABAQAAHgEAAA8AAAAAJQAAQCoAAAAAAAAeAAAADwAAAAAAAADAKgAAAAAAABMAAAAHAEHg0wALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHQ1AALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEGA1gALIwIAAAADAAAABwAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAEHQ1gALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHA1wALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEG42AALASwAQcTYAAthLQAAAAQABAAIAAQALgAAAAQABgAQAAYALwAAAAQADAAgABgALwAAAAgAEAAgACAALwAAAAgAEACAAIAALwAAAAgAIACAAAABMAAAACAAgAACAQAEMAAAACAAAgECAQAQMABBsNkAC6UTAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQAAAAAAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEABNAMoAAAABAAIAAwAEAAUABwAJAA0AEQAZACEAMQBBAGEAgQDBAAEBgQEBAgEDAQQBBgEIAQwBEAEYASABMAFAAWAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAAGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcAAEAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAAEwc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagAAAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgAEgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQAEAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQAAAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwAEQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwAFAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwAYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIAAAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIAEQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoAEAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboAAAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYAEQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYAFAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4AAAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4AEgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEAEAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEAAAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckAEQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkAFAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUAAAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUAEgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0AEAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0AAAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMAEAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMAEwc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasAAAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsAEgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecAEAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcAAAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8AEQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8AFAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8AEAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEgEgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFgEAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEHg7AALQREACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGx7QALIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBB6+0ACwEMAEH37QALFQwAAAAADAAAAAAJDAAAAAAADAAADABBpe4ACwEOAEGx7gALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBB3+4ACwEQAEHr7gALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBBou8ACw4SAAAAEhISAAAAAAAACQBB0+8ACwELAEHf7wALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBjfAACwEMAEGZ8AALJwwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRgBB5PAACwE+AEGL8QALBf//////AEHQ8QALVxkSRDsCPyxHFD0zMAobBkZLRTcPSQ6OFwNAHTxpKzYfSi0cASAlKSEIDBUWIi4QOD4LNDEYZHR1di9BCX85ESNDMkKJiosFBCYoJw0qHjWMBxpIkxOUlQBBsPIAC4oOSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";io(Pi)||(Pi=x(Pi));function Ls(We){try{if(We==Pi&&ce)return new Uint8Array(ce);var tt=ii(We);if(tt)return tt;if(R)return R(We);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(It){Ti(It)}}function so(We,tt){var It,nr,$;try{$=Ls(We),nr=new WebAssembly.Module($),It=new WebAssembly.Instance(nr,tt)}catch(Le){var ye=Le.toString();throw te(\"failed to compile wasm module: \"+ye),(ye.includes(\"imported Memory\")||ye.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).\"),Le}return[It,nr]}function cc(){var We={a:Ma};function tt($,ye){var Le=$.exports;r.asm=Le,Be=r.asm.g,z(Be.buffer),Z=r.asm.W,an(r.asm.h),Ns(\"wasm-instantiate\")}if(Kn(\"wasm-instantiate\"),r.instantiateWasm)try{var It=r.instantiateWasm(We,tt);return It}catch($){return te(\"Module.instantiateWasm callback failed with error: \"+$),!1}var nr=so(Pi,We);return tt(nr[0]),r.asm}function cu(We){return F.getFloat32(We,!0)}function lp(We){return F.getFloat64(We,!0)}function cp(We){return F.getInt16(We,!0)}function Os(We){return F.getInt32(We,!0)}function Dn(We,tt){F.setInt32(We,tt,!0)}function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt==\"function\"){tt(r);continue}var It=tt.func;typeof It==\"number\"?tt.arg===void 0?Z.get(It)():Z.get(It)(tt.arg):It(tt.arg===void 0?null:tt.arg)}}function Ms(We,tt){var It=new Date(Os((We>>2)*4)*1e3);Dn((tt>>2)*4,It.getUTCSeconds()),Dn((tt+4>>2)*4,It.getUTCMinutes()),Dn((tt+8>>2)*4,It.getUTCHours()),Dn((tt+12>>2)*4,It.getUTCDate()),Dn((tt+16>>2)*4,It.getUTCMonth()),Dn((tt+20>>2)*4,It.getUTCFullYear()-1900),Dn((tt+24>>2)*4,It.getUTCDay()),Dn((tt+36>>2)*4,0),Dn((tt+32>>2)*4,0);var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((tt+28>>2)*4,$),Ms.GMTString||(Ms.GMTString=at(\"GMT\")),Dn((tt+40>>2)*4,Ms.GMTString),tt}function ml(We,tt){return Ms(We,tt)}function yl(We,tt,It){Te.copyWithin(We,tt,tt+It)}function ao(We){try{return Be.grow(We-xe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function Vn(We){var tt=Te.length;We=We>>>0;var It=2147483648;if(We>It)return!1;for(var nr=1;nr<=4;nr*=2){var $=tt*(1+.2/nr);$=Math.min($,We+100663296);var ye=Math.min(It,ke(Math.max(We,$),65536)),Le=ao(ye);if(Le)return!0}return!1}function On(We){fe(We)}function Ni(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}function Mn(){if(Mn.called)return;Mn.called=!0;var We=new Date().getFullYear(),tt=new Date(We,0,1),It=new Date(We,6,1),nr=tt.getTimezoneOffset(),$=It.getTimezoneOffset(),ye=Math.max(nr,$);Dn((ds()>>2)*4,ye*60),Dn((gs()>>2)*4,Number(nr!=$));function Le($r){var ji=$r.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return ji?ji[1]:\"GMT\"}var pt=Le(tt),ht=Le(It),Tt=at(pt),er=at(ht);$<nr?(Dn((wi()>>2)*4,Tt),Dn((wi()+4>>2)*4,er)):(Dn((wi()>>2)*4,er),Dn((wi()+4>>2)*4,Tt))}function _i(We){Mn();var tt=Date.UTC(Os((We+20>>2)*4)+1900,Os((We+16>>2)*4),Os((We+12>>2)*4),Os((We+8>>2)*4),Os((We+4>>2)*4),Os((We>>2)*4),0),It=new Date(tt);Dn((We+24>>2)*4,It.getUTCDay());var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((We+28>>2)*4,$),It.getTime()/1e3|0}var tr=typeof atob==\"function\"?atob:function(We){var tt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",It=\"\",nr,$,ye,Le,pt,ht,Tt,er=0;We=We.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Le=tt.indexOf(We.charAt(er++)),pt=tt.indexOf(We.charAt(er++)),ht=tt.indexOf(We.charAt(er++)),Tt=tt.indexOf(We.charAt(er++)),nr=Le<<2|pt>>4,$=(pt&15)<<4|ht>>2,ye=(ht&3)<<6|Tt,It=It+String.fromCharCode(nr),ht!==64&&(It=It+String.fromCharCode($)),Tt!==64&&(It=It+String.fromCharCode(ye));while(er<We.length);return It};function Oe(We){if(typeof I==\"boolean\"&&I){var tt;try{tt=Buffer.from(We,\"base64\")}catch{tt=new Buffer(We,\"base64\")}return new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength)}try{for(var It=tr(We),nr=new Uint8Array(It.length),$=0;$<It.length;++$)nr[$]=It.charCodeAt($);return nr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function ii(We){if(!!io(We))return Oe(We.slice(ps.length))}var Ma={e:ml,c:yl,d:Vn,a:On,b:Ni,f:_i},hr=cc(),uc=r.___wasm_call_ctors=hr.h,uu=r._zip_ext_count_symlinks=hr.i,Ac=r._zip_file_get_external_attributes=hr.j,El=r._zipstruct_statS=hr.k,DA=r._zipstruct_stat_size=hr.l,Au=r._zipstruct_stat_mtime=hr.m,Ce=r._zipstruct_stat_crc=hr.n,Rt=r._zipstruct_errorS=hr.o,fc=r._zipstruct_error_code_zip=hr.p,Hi=r._zipstruct_stat_comp_size=hr.q,fu=r._zipstruct_stat_comp_method=hr.r,Yt=r._zip_close=hr.s,Cl=r._zip_delete=hr.t,SA=r._zip_dir_add=hr.u,up=r._zip_discard=hr.v,pc=r._zip_error_init_with_code=hr.w,PA=r._zip_get_error=hr.x,Qn=r._zip_file_get_error=hr.y,hi=r._zip_error_strerror=hr.z,hc=r._zip_fclose=hr.A,bA=r._zip_file_add=hr.B,sa=r._free=hr.C,Li=r._malloc=hr.D,_o=r._zip_source_error=hr.E,Ze=r._zip_source_seek=hr.F,lo=r._zip_file_set_external_attributes=hr.G,gc=r._zip_file_set_mtime=hr.H,pu=r._zip_fopen_index=hr.I,qi=r._zip_fread=hr.J,hu=r._zip_get_name=hr.K,xA=r._zip_get_num_entries=hr.L,Ua=r._zip_source_read=hr.M,dc=r._zip_name_locate=hr.N,hs=r._zip_open_from_source=hr.O,_t=r._zip_set_file_compression=hr.P,Fn=r._zip_source_buffer=hr.Q,Ci=r._zip_source_buffer_create=hr.R,oa=r._zip_source_close=hr.S,co=r._zip_source_free=hr.T,Us=r._zip_source_keep=hr.U,aa=r._zip_source_open=hr.V,la=r._zip_source_tell=hr.X,Ho=r._zip_stat_index=hr.Y,wi=r.__get_tzname=hr.Z,gs=r.__get_daylight=hr._,ds=r.__get_timezone=hr.$,ms=r.stackSave=hr.aa,_s=r.stackRestore=hr.ba,Un=r.stackAlloc=hr.ca;r.cwrap=ne,r.getValue=he;var Sn;Wr=function We(){Sn||ys(),Sn||(Wr=We)};function ys(We){if(We=We||A,mr>0||(dt(),mr>0))return;function tt(){Sn||(Sn=!0,r.calledRun=!0,!we&&(jt(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),$t()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),tt()},1)):tt()}if(r.run=ys,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return ys(),e}}();typeof Qb==\"object\"&&typeof tU==\"object\"?tU.exports=eU:typeof define==\"function\"&&define.amd?define([],function(){return eU}):typeof Qb==\"object\"&&(Qb.createModule=eU)});var Of,Rle,Tle,Nle=Et(()=>{Of=[\"number\",\"number\"],Rle=(ee=>(ee[ee.ZIP_ER_OK=0]=\"ZIP_ER_OK\",ee[ee.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",ee[ee.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",ee[ee.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",ee[ee.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",ee[ee.ZIP_ER_READ=5]=\"ZIP_ER_READ\",ee[ee.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",ee[ee.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",ee[ee.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",ee[ee.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",ee[ee.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",ee[ee.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",ee[ee.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",ee[ee.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",ee[ee.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",ee[ee.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",ee[ee.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",ee[ee.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",ee[ee.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",ee[ee.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",ee[ee.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",ee[ee.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",ee[ee.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",ee[ee.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",ee[ee.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",ee[ee.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",ee[ee.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",ee[ee.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",ee[ee.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",ee[ee.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",ee[ee.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",ee[ee.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",ee))(Rle||{}),Tle=t=>({get HEAPU8(){return t.HEAPU8},errors:Rle,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\",...Of,\"number\",\"number\"]),fopenIndex:t.cwrap(\"zip_fopen_index\",\"number\",[\"number\",...Of,\"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\",...Of,\"number\",\"number\",\"number\"]),setExternalAttributes:t.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",...Of,\"number\",\"number\",\"number\"]),setMtime:t.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",...Of,\"number\",\"number\"]),setCompression:t.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",...Of,\"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\",...Of,\"number\",\"number\"]),fromBuffer:t.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",...Of,\"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\",...Of,\"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 rU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==V.sep);){if(t[r-1]===V.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==V.sep?null:t.slice(0,o)}var Jl,Lle=Et(()=>{St();St();nA();Jl=class extends Hp{static async openPromise(e,r){let o=new Jl(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>\"u\"?A=>rU(A,\".zip\"):A=>{for(let p of r){let h=rU(A,p);if(h)return h}return null},n=(A,p)=>new zi(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new zi(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function lot(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(Ole.types.isDate(t))return t.getTime()/1e3;throw new Error(\"Invalid time\")}function Fb(){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 ta,nU,Ole,iU,Mle,Rb,zi,sU=Et(()=>{St();St();St();St();St();St();ta=ve(\"fs\"),nU=ve(\"stream\"),Ole=ve(\"util\"),iU=$e(ve(\"zlib\"));$4();Mle=\"mixed\";Rb=class extends Error{constructor(r,o){super(r);this.name=\"Libzip Error\",this.code=o}},zi=class extends Mu{constructor(r,o={}){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;let a=o;if(this.level=typeof a.level<\"u\"?a.level:Mle,r??=Fb(),typeof r==\"string\"){let{baseFs:A=new Tn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code===\"ENOENT\"&&a.create)this.stats=Ea.makeDefaultStats();else throw A}else this.stats=Ea.makeDefaultStats();this.libzip=b1();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r==\"string\"&&(r=a.create?Fb():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,\"i32\")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(Bt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;A<u;++A){let p=this.libzip.getName(this.zip,A,0);if(V.isAbsolute(p))continue;let h=V.resolve(Bt.root,p);this.registerEntry(h,A),p.endsWith(\"/\")&&this.registerListing(h)}if(this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.ready=!0}makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzip.error.strerror(r),n=new Rb(a,this.libzip.errors[o]);if(o===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${n.message}`);return n}getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils.extname(o);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 ar.EBUSY(\"archive closed, close\");Ug(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),Fb();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 r=this.libzip.source.tell(this.lzSource);if(r===-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 o=this.libzip.malloc(r);if(!o)throw new Error(\"Couldn't allocate enough memory\");try{let a=this.libzip.source.read(this.lzSource,o,r);if(a===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(a<r)throw new Error(\"Incomplete read\");if(a>r)throw new Error(\"Overread\");let n=Buffer.from(this.libzip.HEAPU8.subarray(o,o+r));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(n=Buffer.concat([n,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),n}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),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===Ea.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return V.resolve(Bt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,\"r\");return PD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>\"u\")throw ar.EBADF(\"read\");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=E),E}async writePromise(r,o,a,n,u){return typeof o==\"string\"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>\"u\"?ar.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw ar.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new nU.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),u=Object.assign(new nU.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on(\"data\",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw ar.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=V.resolve(Bt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`access '${r}'`);if(this.readOnly&&o&ta.constants.W_OK)throw ar.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>\"u\")throw ar.EBADF(\"fstatSync\");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw ar.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(u))throw ar.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<\"u\"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,E=this.libzip.struct.statSize(u)>>>0,I=512,v=Math.ceil(E/I),x=(this.libzip.struct.statMtime(u)>>>0)*1e3,C=x,R=x,L=x,U=new Date(C),J=new Date(R),te=new Date(L),ae=new Date(x),fe=this.listings.has(o)?ta.constants.S_IFDIR:this.isSymbolicLink(n)?ta.constants.S_IFLNK:ta.constants.S_IFREG,ce=fe===ta.constants.S_IFDIR?493:420,me=fe|this.getUnixMode(n,ce)&511,he=this.libzip.struct.statCrc(u),Be=Object.assign(new Ea.StatEntry,{uid:p,gid:h,size:E,blksize:I,blocks:v,atime:U,birthtime:J,ctime:te,mtime:ae,atimeMs:C,birthtimeMs:R,ctimeMs:L,mtimeMs:x,mode:me,crc:he});return a.bigint===!0?Ea.convertToBigIntStats(Be):Be}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,E=0,I=this.stats.mtimeMs,v=this.stats.mtimeMs,x=this.stats.mtimeMs,C=this.stats.mtimeMs,R=new Date(I),L=new Date(v),U=new Date(x),J=new Date(C),te=ta.constants.S_IFDIR|493,ae=0,fe=Object.assign(new Ea.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:E,atime:R,birthtime:L,ctime:U,mtime:J,atimeMs:I,birthtimeMs:v,ctimeMs:x,mtimeMs:C,mode:te,crc:ae});return a.bigint===!0?Ea.convertToBigIntStats(fe):fe}throw new Error(\"Unreachable\")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(V.dirname(r)).add(V.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(V.dirname(r)).add(V.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r),this.listings.get(V.dirname(r))?.delete(V.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>\"u\")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw ar.EBUSY(`archive closed, ${r}`);let u=V.resolve(Bt.root,o);if(u===\"/\")return Bt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,V.resolve(V.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,V.dirname(u),!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 ar.ENOENT(r)}if(!h)throw ar.ENOTDIR(r);if(u=V.resolve(p,V.basename(u)),!a||this.symlinkCount===0)break;let I=this.libzip.name.locate(this.zip,u.slice(1),0);if(I===-1)break;if(this.isSymbolicLink(I)){let v=this.getFileSource(I).toString();u=V.resolve(V.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=V.relative(Bt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!==\"mixed\"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16&ta.constants.S_IFMT)===ta.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let E=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(E===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let I=this.libzip.fread(E,h,A,0);if(I===-1)throw this.makeLibzipError(this.libzip.file.getError(E));if(I<A)throw new Error(\"Incomplete read\");if(I>A)throw new Error(\"Overread\");let v=this.libzip.HEAPU8.subarray(h,h+A),x=Buffer.from(v);if(p===0)return this.fileSources.set(r,x),x;if(o.asyncDecompress)return new Promise((C,R)=>{iU.default.inflateRaw(x,(L,U)=>{L?R(L):(this.fileSources.set(r,U),C(U))})});{let C=iU.default.inflateRawSync(x);return this.fileSources.set(r,C),C}}finally{this.libzip.fclose(E)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw ar.EROFS(`chmod '${r}'`);o&=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 A=this.getUnixMode(n,ta.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error(\"Unimplemented\")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error(\"Unimplemented\")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw ar.EROFS(`copyfile '${r} -> '${o}'`);if((a&ta.constants.COPYFILE_FICLONE_FORCE)!==0)throw ar.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>\"u\")throw ar.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(ta.constants.COPYFILE_EXCL|ta.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<\"u\")throw ar.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw ar.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,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw ar.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,o,a)}fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw ar.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw ar.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw ar.EISDIR(`open '${r}'`);let n=null,u=null;typeof o==\"string\"?n=o:typeof o==\"object\"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw ar.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw ar.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>\"u\")throw ar.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){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\");if(this.libzip.file.setMtime(this.zip,a,0,lot(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw ar.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw ar.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw ar.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw ar.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>\"u\")throw ar.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,V.relative(Bt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw ar.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw ar.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw ar.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw ar.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(ta.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={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 ar.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw ar.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`scandir '${r}'`);if(o?.recursive)if(o?.withFileTypes){let u=Array.from(n,A=>Object.assign(this.statImpl(\"lstat\",V.join(r,A)),{name:A,path:Bt.dot}));for(let A of u){if(!A.isDirectory())continue;let p=V.join(A.path,A.name),h=this.listings.get(V.join(a,p));for(let E of h)u.push(Object.assign(this.statImpl(\"lstat\",V.join(r,p,E)),{name:E,path:p}))}return u}else{let u=[...n];for(let A of u){let p=this.listings.get(V.join(a,A));if(!(typeof p>\"u\"))for(let h of p)u.push(V.join(A,h))}return u}else return o?.withFileTypes?Array.from(n,u=>Object.assign(this.statImpl(\"lstat\",V.join(r,u)),{name:u,path:void 0})):[...n]}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(o))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw ar.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw ar.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),o)}watch(r,o,a){let n;switch(typeof o){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=V.resolve(Bt.root,r);return ny(this,n,o,a)}unwatchFile(r,o){let a=V.resolve(Bt.root,r);return Mg(this,a,o)}}});function _le(t,e,r=Buffer.alloc(0),o){let a=new zi(r),n=I=>I===e||I.startsWith(`${e}/`)?I.slice(0,e.length):null,u=async(I,v)=>()=>a,A=(I,v)=>a,p={...t},h=new Tn(p),E=new Hp({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o?.typeCheck});return Kw(Ule.default,new qp(E)),a}var Ule,Hle=Et(()=>{St();Ule=$e(ve(\"fs\"));sU()});var qle=Et(()=>{Lle();sU();Hle()});var x1={};Vt(x1,{DEFAULT_COMPRESSION_LEVEL:()=>Mle,LibzipError:()=>Rb,ZipFS:()=>zi,ZipOpenFS:()=>Jl,getArchivePart:()=>rU,getLibzipPromise:()=>uot,getLibzipSync:()=>cot,makeEmptyArchive:()=>Fb,mountMemoryDrive:()=>_le});function cot(){return b1()}async function uot(){return b1()}var jle,nA=Et(()=>{$4();jle=$e(Fle());Nle();qle();Qle(()=>{let t=(0,jle.default)();return Tle(t)})});var RE,Gle=Et(()=>{St();qt();k1();RE=class extends nt{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()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await TE(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};RE.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\"']]}});var al,Yle=Et(()=>{al=class extends Error{constructor(e){super(e),this.name=\"ShellError\"}}});var Lb={};Vt(Lb,{fastGlobOptions:()=>Vle,isBraceExpansion:()=>oU,isGlobPattern:()=>Aot,match:()=>fot,micromatchOptions:()=>Nb});function Aot(t){if(!Tb.default.scan(t,Nb).isGlob)return!1;try{Tb.default.parse(t,Nb)}catch{return!1}return!0}function fot(t,{cwd:e,baseFs:r}){return(0,Wle.default)(t,{...Vle,cwd:ue.fromPortablePath(e),fs:FD(Kle.default,new qp(r))})}function oU(t){return Tb.default.scan(t,Nb).isBrace}var Wle,Kle,Tb,Nb,Vle,Jle=Et(()=>{St();Wle=$e(RP()),Kle=$e(ve(\"fs\")),Tb=$e(Zo()),Nb={strictBrackets:!0},Vle={onlyDirectories:!1,onlyFiles:!1}});function aU(){}function lU(){for(let t of kd)t.kill()}function $le(t,e,r,o){return a=>{let n=a[0]instanceof iA.Transform?\"pipe\":a[0],u=a[1]instanceof iA.Transform?\"pipe\":a[1],A=a[2]instanceof iA.Transform?\"pipe\":a[2],p=(0,Xle.default)(t,e,{...o,stdio:[n,u,A]});return kd.add(p),kd.size===1&&(process.on(\"SIGINT\",aU),process.on(\"SIGTERM\",lU)),a[0]instanceof iA.Transform&&a[0].pipe(p.stdin),a[1]instanceof iA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof iA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(kd.delete(p),kd.size===0&&(process.off(\"SIGINT\",aU),process.off(\"SIGTERM\",lU)),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=>{kd.delete(p),kd.size===0&&(process.off(\"SIGINT\",aU),process.off(\"SIGTERM\",lU)),h(E!==null?E:129)})})}}}function ece(t){return e=>{let r=e[0]===\"pipe\"?new iA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Ob(t,e){return NE.start(t,e)}function zle(t,e=null){let r=new iA.PassThrough,o=new Zle.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&t(e!==null?`${e} ${n}`:n)}),r}function tce(t,{prefix:e}){return{stdout:zle(r=>t.stdout.write(`${r}\n`),t.stdout.isTTY?e:null),stderr:zle(r=>t.stderr.write(`${r}\n`),t.stderr.isTTY?e:null)}}var Xle,iA,Zle,kd,zl,cU,NE,uU=Et(()=>{Xle=$e(sT()),iA=ve(\"stream\"),Zle=ve(\"string_decoder\"),kd=new Set;zl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},cU=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}},NE=class{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:o,stderr:a}){let n=new NE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new NE(this,e),a=new cU;return o.pipe=a,o.stdout=this.stdout,o.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),o}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 o;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var T1={};Vt(T1,{EntryCommand:()=>RE,ShellError:()=>al,execute:()=>TE,globUtils:()=>Lb});function rce(t,e,r){let o=new ll.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof ll.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new al(`Bad file descriptor: \"${t}\"`)}return o}function Ub(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function hot(t,e,r){let o=[],a=new ll.PassThrough;return a.on(\"data\",n=>o.push(n)),await _b(t,e,Ub(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\\r\\n]+$/,\"\")}async function nce(t,e,r){let o=t.map(async n=>{let u=await Qd(n.args,e,r);return{name:n.name,value:u.join(\" \")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function Mb(t){return t.match(/[^ \\r\\n\\t]+/g)||[]}async function cce(t,e,r,o,a=o){switch(t.name){case\"$\":o(String(process.pid));break;case\"#\":o(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 u=Mb(n);for(let A=0;A<u.length-1;++A)a(u[A]);o(u[u.length-1])}break;case\"*\":{let n=e.args.join(\" \");if(t.quoted)o(n);else for(let u of Mb(n))a(u)}break;case\"PPID\":o(String(process.ppid));break;case\"RANDOM\":o(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),u,A=Number.isFinite(n);if(A?n>=0&&n<e.args.length&&(u=e.args[n]):Object.hasOwn(r.variables,t.name)?u=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(u=r.environment[t.name]),typeof u<\"u\"&&t.alternativeValue?u=(await Qd(t.alternativeValue,e,r)).join(\" \"):typeof u>\"u\"&&(t.defaultValue?u=(await Qd(t.defaultValue,e,r)).join(\" \"):t.alternativeValue&&(u=\"\")),typeof u>\"u\")throw A?new al(`Unbound argument #${n}`):new al(`Unbound variable \"${t.name}\"`);if(t.quoted)o(u);else{let p=Mb(u);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&o(h)}}break}}async function Q1(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 o=[];await cce({...t,quoted:!0},e,r,n=>o.push(n));let a=Number(o.join(\" \"));return Number.isNaN(a)?Q1({type:\"variable\",name:o.join(\" \")},e,r):Q1({type:\"number\",value:a},e,r)}else return got[t.type](await Q1(t.left,e,r),await Q1(t.right,e,r))}async function Qd(t,e,r){let o=new Map,a=[],n=[],u=E=>{n.push(E)},A=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{u(E),A()},h=(E,I,v)=>{let x=JSON.stringify({type:E,fd:I}),C=o.get(x);typeof C>\"u\"&&o.set(x,C=[]),C.push(v)};for(let E of t){let I=!1;switch(E.type){case\"redirection\":{let v=await Qd(E.args,e,r);for(let x of v)h(E.subtype,E.fd,x)}break;case\"argument\":for(let v of E.segments)switch(v.type){case\"text\":u(v.text);break;case\"glob\":u(v.pattern),I=!0;break;case\"shell\":{let x=await hot(v.shell,e,r);if(v.quoted)u(x);else{let C=Mb(x);for(let R=0;R<C.length-1;++R)p(C[R]);u(C[C.length-1])}}break;case\"variable\":await cce(v,e,r,u,p);break;case\"arithmetic\":u(String(await Q1(v.arithmetic,e,r)));break}break}if(A(),I){let v=a.pop();if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let x=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(x.length===0){let C=oU(v)?\". 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 al(`No matches found: \"${v}\"${C}`)}for(let C of x.sort())p(C)}}if(o.size>0){let E=[];for(let[I,v]of o.entries())E.splice(E.length,0,I,String(v.length),...v);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function F1(t,e,r){e.builtins.has(t[0])||(t=[\"command\",...t]);let o=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:o});let[n,...u]=t;if(n===\"command\")return $le(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return ece(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:I,stdout:v,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await A(u,e,r)}finally{r.stdin=I,r.stdout=v,r.stderr=x}})}function dot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,Ub(r,{stdin:a}));return{stdin:a,promise:n}}}function mot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,r);return{stdin:a,promise:n}}}function ice(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,F1([...e,\"__ysh_run_procedure\",a],r,o)}}async function sce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case\"command\":{let p=await Qd(o.args,e,r),h=await nce(o.envs,e,r);A=o.envs.length?F1(p,e,Ub(u,{environment:h})):F1(p,e,u)}break;case\"subshell\":{let p=await Qd(o.args,e,r),h=dot(o.subshell,e,u);A=ice(h,p,e,u)}break;case\"group\":{let p=await Qd(o.args,e,r),h=mot(o.group,e,u);A=ice(h,p,e,u)}break;case\"envs\":{let p=await nce(o.envs,e,r);u.environment={...u.environment,...p},A=F1([\"true\"],e,u)}break}if(typeof A>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=Ob(A,{stdin:new zl(u.stdin),stdout:new zl(u.stdout),stderr:new zl(u.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(A,1);break;case\"|&\":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function yot(t,e,r,{background:o=!1}={}){function a(n){let u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[n%u.length];return oce.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:E}=tce(r,{prefix:p});return r.backgroundJobs.push(sce(t,e,Ub(r,{stdout:h,stderr:E})).catch(I=>E.write(`${I.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(uy(t))}' has ended\n`)})),0}return await sce(t,e,r)}async function Eot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables[\"?\"]=String(A)},u=async A=>{try{return await yot(A.chain,e,r,{background:o&&typeof A.then>\"u\"})}catch(p){if(!(p instanceof al))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case\"&&\":a===0&&n(await u(t.then.line));break;case\"||\":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${t.then.type}\"`)}t=t.then.line}return a}async function _b(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await Eot(n,e,r,{background:u===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function uce(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=>R1(e))||\"alternativeValue\"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>R1(e));case\"arithmetic\":return AU(t.arithmetic);case\"shell\":return fU(t.shell);default:return!1}}function R1(t){switch(t.type){case\"redirection\":return t.args.some(e=>R1(e));case\"argument\":return t.segments.some(e=>uce(e));default:throw new Error(`Assertion failed: Unsupported argument type: \"${t.type}\"`)}}function AU(t){switch(t.type){case\"variable\":return uce(t);case\"number\":return!1;default:return AU(t.left)||AU(t.right)}}function fU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case\"subshell\":o=fU(r.subshell);break;case\"command\":o=r.envs.some(a=>a.args.some(n=>R1(n)))||r.args.some(a=>R1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function TE(t,e=[],{baseFs:r=new Tn,builtins:o={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=Lb}={}){let I={};for(let[C,R]of Object.entries(n))typeof R<\"u\"&&(I[C]=R);let v=new Map(pot);for(let[C,R]of Object.entries(o))v.set(C,R);u===null&&(u=new ll.PassThrough,u.end());let x=ND(t,E);if(!fU(x)&&x.length>0&&e.length>0){let{command:C}=x[x.length-1];for(;C.then;)C=C.then.line;let R=C.chain;for(;R.then;)R=R.then.chain;R.type===\"command\"&&(R.args=R.args.concat(e.map(L=>({type:\"argument\",segments:[{type:\"text\",text:L}]}))))}return await _b(x,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:E},{cwd:a,environment:I,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{[\"?\"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var oce,ace,ll,lce,pot,got,k1=Et(()=>{St();Nl();oce=$e(IN()),ace=ve(\"os\"),ll=ve(\"stream\"),lce=ve(\"timers/promises\");Gle();Yle();Jle();uU();uU();pot=new Map([[\"cd\",async([t=(0,ace.homedir)(),...e],r,o)=>{let a=V.resolve(o.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code===\"ENOENT\"?new al(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new al(`cd: not a directory: ${t}`);return o.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,o)=>o.exitCode=parseInt(t??o.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 al(\"sleep: missing operand\");let o=Number(t);if(Number.isNaN(o))throw new al(`sleep: invalid time interval '${t}'`);return await(0,lce.setTimeout)(1e3*o,0)}],[\"__ysh_run_procedure\",async(t,e,r)=>{let o=r.procedures[t[0]];return await Ob(o,{stdin:new zl(r.stdin),stdout:new zl(r.stdout),stderr:new zl(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!==\"--\";){let I=t[h++],{type:v,fd:x}=JSON.parse(I),C=J=>{switch(x){case null:case 0:u.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},R=J=>{switch(x){case null:case 1:A.push(J);break;case 2:p.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},L=Number(t[h++]),U=h+L;for(let J=h;J<U;++h,++J)switch(v){case\"<\":C(()=>e.baseFs.createReadStream(V.resolve(r.cwd,ue.toPortablePath(t[J]))));break;case\"<<<\":C(()=>{let te=new ll.PassThrough;return process.nextTick(()=>{te.write(`${t[J]}\n`),te.end()}),te});break;case\"<&\":C(()=>rce(Number(t[J]),1,r));break;case\">\":case\">>\":{let te=V.resolve(r.cwd,ue.toPortablePath(t[J]));R(te===\"/dev/null\"?new ll.Writable({autoDestroy:!0,emitClose:!0,write(ae,fe,ce){setImmediate(ce)}}):e.baseFs.createWriteStream(te,v===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":R(rce(Number(t[J]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${v}\"`)}}if(u.length>0){let I=new ll.PassThrough;o=I;let v=x=>{if(x===u.length)I.end();else{let C=u[x]();C.pipe(I,{end:!1}),C.on(\"end\",()=>{v(x+1)})}};v(0)}if(A.length>0){let I=new ll.PassThrough;a=I;for(let v of A)I.pipe(v)}if(p.length>0){let I=new ll.PassThrough;n=I;for(let v of p)I.pipe(v)}let E=await Ob(F1(t.slice(h+1),e,r),{stdin:new zl(o),stdout:new zl(a),stderr:new zl(n)}).run();return await Promise.all(A.map(I=>new Promise((v,x)=>{I.on(\"error\",C=>{x(C)}),I.on(\"close\",()=>{v()}),I.end()}))),await Promise.all(p.map(I=>new Promise((v,x)=>{I.on(\"error\",C=>{x(C)}),I.on(\"close\",()=>{v()}),I.end()}))),E}]]);got={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Hb=_((r4t,Ace)=>{function Cot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}Ace.exports=Cot});var mce=_((n4t,dce)=>{var fce=pd(),wot=Hb(),Iot=Hl(),Bot=pE(),vot=1/0,pce=fce?fce.prototype:void 0,hce=pce?pce.toString:void 0;function gce(t){if(typeof t==\"string\")return t;if(Iot(t))return wot(t,gce)+\"\";if(Bot(t))return hce?hce.call(t):\"\";var e=t+\"\";return e==\"0\"&&1/t==-vot?\"-0\":e}dce.exports=gce});var N1=_((i4t,yce)=>{var Dot=mce();function Sot(t){return t==null?\"\":Dot(t)}yce.exports=Sot});var pU=_((s4t,Ece)=>{function Pot(t,e,r){var o=-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);++o<a;)n[o]=t[o+e];return n}Ece.exports=Pot});var wce=_((o4t,Cce)=>{var bot=pU();function xot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:bot(t,e,r)}Cce.exports=xot});var hU=_((a4t,Ice)=>{var kot=\"\\\\ud800-\\\\udfff\",Qot=\"\\\\u0300-\\\\u036f\",Fot=\"\\\\ufe20-\\\\ufe2f\",Rot=\"\\\\u20d0-\\\\u20ff\",Tot=Qot+Fot+Rot,Not=\"\\\\ufe0e\\\\ufe0f\",Lot=\"\\\\u200d\",Oot=RegExp(\"[\"+Lot+kot+Tot+Not+\"]\");function Mot(t){return Oot.test(t)}Ice.exports=Mot});var vce=_((l4t,Bce)=>{function Uot(t){return t.split(\"\")}Bce.exports=Uot});var Fce=_((c4t,Qce)=>{var Dce=\"\\\\ud800-\\\\udfff\",_ot=\"\\\\u0300-\\\\u036f\",Hot=\"\\\\ufe20-\\\\ufe2f\",qot=\"\\\\u20d0-\\\\u20ff\",jot=_ot+Hot+qot,Got=\"\\\\ufe0e\\\\ufe0f\",Yot=\"[\"+Dce+\"]\",gU=\"[\"+jot+\"]\",dU=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Wot=\"(?:\"+gU+\"|\"+dU+\")\",Sce=\"[^\"+Dce+\"]\",Pce=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",bce=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Kot=\"\\\\u200d\",xce=Wot+\"?\",kce=\"[\"+Got+\"]?\",Vot=\"(?:\"+Kot+\"(?:\"+[Sce,Pce,bce].join(\"|\")+\")\"+kce+xce+\")*\",Jot=kce+xce+Vot,zot=\"(?:\"+[Sce+gU+\"?\",gU,Pce,bce,Yot].join(\"|\")+\")\",Xot=RegExp(dU+\"(?=\"+dU+\")|\"+zot+Jot,\"g\");function Zot(t){return t.match(Xot)||[]}Qce.exports=Zot});var Tce=_((u4t,Rce)=>{var $ot=vce(),eat=hU(),tat=Fce();function rat(t){return eat(t)?tat(t):$ot(t)}Rce.exports=rat});var Lce=_((A4t,Nce)=>{var nat=wce(),iat=hU(),sat=Tce(),oat=N1();function aat(t){return function(e){e=oat(e);var r=iat(e)?sat(e):void 0,o=r?r[0]:e.charAt(0),a=r?nat(r,1).join(\"\"):e.slice(1);return o[t]()+a}}Nce.exports=aat});var Mce=_((f4t,Oce)=>{var lat=Lce(),cat=lat(\"toUpperCase\");Oce.exports=cat});var mU=_((p4t,Uce)=>{var uat=N1(),Aat=Mce();function fat(t){return Aat(uat(t).toLowerCase())}Uce.exports=fat});var _ce=_((h4t,qb)=>{function pat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,E=10,I=11,v=12,x=13,C=14,R=15,L=16,U=17,J=0,te=1,ae=2,fe=3,ce=4;function me(g,Ee){return 55296<=g.charCodeAt(Ee)&&g.charCodeAt(Ee)<=56319&&56320<=g.charCodeAt(Ee+1)&&g.charCodeAt(Ee+1)<=57343}function he(g,Ee){Ee===void 0&&(Ee=0);var Se=g.charCodeAt(Ee);if(55296<=Se&&Se<=56319&&Ee<g.length-1){var le=Se,ne=g.charCodeAt(Ee+1);return 56320<=ne&&ne<=57343?(le-55296)*1024+(ne-56320)+65536:le}if(56320<=Se&&Se<=57343&&Ee>=1){var le=g.charCodeAt(Ee-1),ne=Se;return 55296<=le&&le<=56319?(le-55296)*1024+(ne-56320)+65536:ne}return Se}function Be(g,Ee,Se){var le=[g].concat(Ee).concat([Se]),ne=le[le.length-2],ee=Se,Ie=le.lastIndexOf(C);if(Ie>1&&le.slice(1,Ie).every(function(H){return H==o})&&[o,x,U].indexOf(g)==-1)return ae;var Fe=le.lastIndexOf(a);if(Fe>0&&le.slice(1,Fe).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return le.filter(function(H){return H==a}).length%2==1?fe:ce;if(ne==t&&ee==e)return J;if(ne==r||ne==t||ne==e)return ee==C&&Ee.every(function(H){return H==o})?ae:te;if(ee==r||ee==t||ee==e)return te;if(ne==u&&(ee==u||ee==A||ee==h||ee==E))return J;if((ne==h||ne==A)&&(ee==A||ee==p))return J;if((ne==E||ne==p)&&ee==p)return J;if(ee==o||ee==R)return J;if(ee==n)return J;if(ne==v)return J;var At=le.indexOf(o)!=-1?le.lastIndexOf(o)-1:le.length-2;return[x,U].indexOf(le[At])!=-1&&le.slice(At+1,-1).every(function(H){return H==o})&&ee==C||ne==R&&[L,U].indexOf(ee)!=-1?J:Ee.indexOf(a)!=-1?ae:ne==a&&ee==a?J:te}this.nextBreak=function(g,Ee){if(Ee===void 0&&(Ee=0),Ee<0)return 0;if(Ee>=g.length-1)return g.length;for(var Se=we(he(g,Ee)),le=[],ne=Ee+1;ne<g.length;ne++)if(!me(g,ne-1)){var ee=we(he(g,ne));if(Be(Se,le,ee))return ne;le.push(ee)}return g.length},this.splitGraphemes=function(g){for(var Ee=[],Se=0,le;(le=this.nextBreak(g,Se))<g.length;)Ee.push(g.slice(Se,le)),Se=le;return Se<g.length&&Ee.push(g.slice(Se)),Ee},this.iterateGraphemes=function(g){var Ee=0,Se={next:function(){var le,ne;return(ne=this.nextBreak(g,Ee))<g.length?(le=g.slice(Ee,ne),Ee=ne,{value:le,done:!1}):Ee<g.length?(le=g.slice(Ee),Ee=g.length,{value:le,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(Se[Symbol.iterator]=function(){return Se}),Se},this.countGraphemes=function(g){for(var Ee=0,Se=0,le;(le=this.nextBreak(g,Se))<g.length;)Se=le,Ee++;return Se<g.length&&Ee++,Ee};function we(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?v: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?o: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?u:4448<=g&&g<=4519||55216<=g&&g<=55238?A: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?x:127995<=g&&g<=127999?C: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?L:128102<=g&&g<=128105?U:I}return this}typeof qb<\"u\"&&qb.exports&&(qb.exports=pat)});var qce=_((g4t,Hce)=>{var hat=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,jb;function gat(){if(jb)return jb;if(typeof Intl.Segmenter<\"u\"){let t=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return jb=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=_ce(),e=new t;return jb=r=>e.splitGraphemes(r)}}Hce.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let o=r-e,a=\"\",n=0,u=0;for(;t.length>0;){let A=t.match(hat)||[t,t,void 0],p=gat()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(o-u,p.length);a+=p.slice(0,E).join(\"\"),n+=h,u+=E,typeof A[2]<\"u\"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});var rn,L1=Et(()=>{rn=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.1.1\"});function Vce(t,{configuration:e,json:r}){if(!e.get(\"enableMessageNames\"))return\"\";let a=Wu(t===null?0:t);return!r&&t===null?Mt(e,a,\"grey\"):a}function yU(t,{configuration:e,json:r}){let o=Vce(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=wr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Zy(e,o,n)}async function LE({configuration:t,stdout:e,forceError:r},o){let a=await Nt.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let u=!1,A=!1;for(let p of o)typeof p.option<\"u\"&&(p.error||r?(A=!0,n.reportError(50,p.message)):(u=!0,n.reportWarning(50,p.message)),p.callback?.());u&&!A&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Wce,Gb,dat,jce,Gce,Ah,Kce,Yce,mat,yat,Yb,Eat,Nt,O1=Et(()=>{Wce=$e(qce()),Gb=$e(td());fS();Yl();L1();jl();dat=\"\\xB7\",jce=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],Gce=80,Ah=Gb.default.GITHUB_ACTIONS?{start:t=>`::group::${t}\n`,end:t=>`::endgroup::\n`}:Gb.default.TRAVIS?{start:t=>`travis_fold:start:${t}\n`,end:t=>`travis_fold:end:${t}\n`}:Gb.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,Kce=Ah!==null,Yce=new Date,mat=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,yat=t=>t,Yb=yat({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}}),Eat=mat&&Object.keys(Yb).find(t=>{let e=Yb[t];return!(e.date&&(e.date[0]!==Yce.getDate()||e.date[1]!==Yce.getMonth()+1))})||\"default\";Nt=class extends Xs{constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=!1,includeNames:u=!0,includePrefix:A=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:I=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(XI(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=u,this.includePrefix=A,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=I,this.json=a,this.stdout=o,r.get(\"enableProgressBars\")&&!a&&o.isTTY&&o.columns>22){let v=r.get(\"progressBarStyle\")||Eat;if(!Object.hasOwn(Yb,v))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=Yb[v];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!=\"string\"){let h=u;u=h.message,A=A??h.name}let p=typeof A<\"u\"?`${A}: ${u}`:u;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,yd(r.configuration,`Yarn ${rn}`,2));try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,o-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}startTimerImpl(r,o,a){return{cb:typeof o==\"function\"?o:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,Ah!==null&&!this.json&&this.includeInfos&&this.stdout.write(Ah.start(r))},reportFooter:A=>{if(this.indent-=1,Ah!==null&&!this.json&&this.includeInfos){this.stdout.write(Ah.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&A>200?this.reportInfo(null,`\\u2514 Completed in ${Mt(this.configuration,A,yt.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof o==\"function\"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",u=`${this.formatPrefix(n,\"blueBright\")}${o}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(u)}reportWarning(r,o){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:o}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${o}`)}reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,o)),this.reportErrorImpl(r,o)}reportErrorImpl(r,o){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:o}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${o}`,{truncate:!1})}reportFold(r,o){if(!Ah)return;let a=`${Ah.start(r)}${o}${Ah.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 o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!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 o=Mt(this.configuration,Date.now()-this.startTime,yt.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})}\n`),this.writeProgress()}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||o)&&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>Gce&&(this.progressFrame=(this.progressFrame+1)%jce.length,this.progressTime=r);let o=jce[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 u=this.formatName(null),A=u?`${u}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"blueBright\")} ${A}${o}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Gce)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>\"u\"&&(o=this.configuration.get(\"preferTruncatedLines\")),o&&(r=(0,Wce.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Vce(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,o){return this.includePrefix?`${Mt(this.configuration,\"\\u27A4\",o)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?yU(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${dat} `}}});var un={};Vt(un,{PackageManager:()=>Xce,detectPackageManager:()=>Zce,executePackageAccessibleBinary:()=>nue,executePackageScript:()=>Wb,executePackageShellcode:()=>EU,executeWorkspaceAccessibleBinary:()=>Sat,executeWorkspaceLifecycleScript:()=>tue,executeWorkspaceScript:()=>eue,getPackageAccessibleBinaries:()=>Kb,getWorkspaceAccessibleBinaries:()=>rue,hasPackageScript:()=>Bat,hasWorkspaceScript:()=>CU,isNodeScript:()=>wU,makeScriptEnv:()=>M1,maybeExecuteWorkspaceLifecycleScript:()=>Dat,prepareExternalProject:()=>Iat});async function fh(t,e,r,o=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${o.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await oe.writeFilePromise(V.format({dir:t,name:e,ext:\".cmd\"}),a)}await oe.writeFilePromise(V.join(t,e),`#!/bin/sh\nexec \"${r}\" ${o.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function Zce(t){let e=await Ot.tryFind(t);if(e?.packageManager){let o=UP(e.packageManager);if(o?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(\".\");switch(o.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 oe.readFilePromise(V.join(t,dr.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'}:oe.existsSync(V.join(t,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:oe.existsSync(V.join(t,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function M1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let u={};for(let[E,I]of Object.entries(n))typeof I<\"u\"&&(u[E.toLowerCase()!==\"path\"?E:\"PATH\"]=I);let A=ue.fromPortablePath(r);u.BERRY_BIN_FOLDER=ue.fromPortablePath(A);let p=process.env.COREPACK_ROOT&&!o?ue.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([fh(r,\"node\",process.execPath),...rn!==null?[fh(r,\"run\",process.execPath,[p,\"run\"]),fh(r,\"yarn\",process.execPath,[p]),fh(r,\"yarnpkg\",process.execPath,[p]),fh(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),t&&(u.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),u.PROJECT_CWD=ue.fromPortablePath(t.cwd)),u.PATH=u.PATH?`${A}${ue.delimiter}${u.PATH}`:`${A}`,u.npm_execpath=`${A}${ue.sep}yarn`,u.npm_node_execpath=`${A}${ue.sep}node`,e){if(!t)throw new Error(\"Assertion failed: Missing project\");let E=t.tryWorkspaceByLocator(e),I=E?E.manifest.version??\"\":t.storedPackages.get(e.locatorHash).version??\"\";u.npm_package_name=fn(e),u.npm_package_version=I;let v;if(E)v=E.cwd;else{let x=t.storedPackages.get(e.locatorHash);if(!x)throw new Error(`Package for ${qr(t.configuration,e)} not found in the project`);let C=t.configuration.getLinkers(),R={project:t,report:new Nt({stdout:new ph.PassThrough,configuration:t.configuration})},L=C.find(U=>U.supportsPackage(x,R));if(!L)throw new Error(`The package ${qr(t.configuration,x)} isn't supported by any of the available linkers`);v=await L.findPackageLocation(x,R)}u.npm_package_json=ue.fromPortablePath(V.join(v,dr.manifest))}let h=rn!==null?`yarn/${rn}`:`yarn/${Df(\"@yarnpkg/core\").version}-core`;return u.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(u.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,u,async(E,I,v)=>await fh(r,E,I,v)),u}async function Iat(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await wat(async()=>{await oe.mktempPromise(async u=>{let A=V.join(u,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(A,{prefix:ue.fromPortablePath(t),report:o}),I=n&&Hc(n)?r1(n):n,v=I?ba(I):\"an external project\";h.write(`Packing ${v} from sources\n`);let x=await Zce(t),C;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason}\n\n`),C=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),C=\"Yarn\");let R=C===\"Yarn\"&&!x?.packageManagerField;await oe.mktempPromise(async L=>{let U=await M1({binFolder:L,ignoreCorepack:R}),te=new Map([[\"Yarn Classic\",async()=>{let fe=a!==null?[\"workspace\",a]:[],ce=V.join(t,dr.manifest),me=await oe.readFilePromise(ce),he=await Gc(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(he.code!==0)return he.code;await oe.writeFilePromise(ce,me),await oe.appendFilePromise(V.join(t,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let Be=await Gc(\"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 we=await Gc(\"yarn\",[...fe,\"pack\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return we.code!==0?we.code:0}],[\"Yarn\",async()=>{let fe=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let ce=V.join(t,dr.lockfile);await oe.existsPromise(ce)||await oe.writeFilePromise(ce,\"\");let me=await Gc(\"yarn\",[...fe,\"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 Ee=new ph.PassThrough,Se=Vy(Ee);Ee.pipe(h,{end:!1});let le=await Gc(\"npm\",[\"--version\"],{cwd:t,env:U,stdin:p,stdout:Ee,stderr:E,end:0});if(Ee.end(),le.code!==0)return h.end(),E.end(),le.code;let ne=(await Se).toString().trim();if(!kf(ne,\">=7.x\")){let ee=eA(null,\"npm\"),Ie=In(ee,ne),Fe=In(ee,\">=7.x\");throw new Error(`Workspaces aren't supported by ${jn(r,Ie)}; please upgrade to ${jn(r,Fe)} (npm has been detected as the primary package manager for ${Mt(r,t,yt.PATH)})`)}}let fe=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 Gc(\"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 ph.PassThrough,he=Vy(me);me.pipe(h);let Be=await Gc(\"npm\",[\"pack\",\"--silent\",...fe],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let we=(await he).toString().trim().replace(/^.*\\n/s,\"\"),g=V.resolve(t,ue.toPortablePath(we));return await oe.renamePromise(g,e),0}]]).get(C);if(typeof te>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let ae=await te();if(!(ae===0||typeof ae>\"u\"))throw oe.detachTemp(u),new zt(58,`Packing the package failed (exit code ${ae}, logs can be found here: ${Mt(r,A,yt.PATH)})`)})})})}async function Bat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return CU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${qr(r.configuration,t)} not found in the project`);return await Jl.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Nt({stdout:new ph.PassThrough,configuration:u})},h=A.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${qr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),I=new gn(E,{baseFs:n});return(await Ot.find(Bt.dot,{baseFs:I})).scripts.has(e)})}async function Wb(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{manifest:h,env:E,cwd:I}=await $ce(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>\"u\")return 1;let x=async()=>await TE(v,r,{cwd:I,env:E,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,x,a,t,e,{script:v,args:r,cwd:I,env:E,stdin:n,stdout:u,stderr:A}))()})}async function EU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{env:h,cwd:E}=await $ce(t,{project:a,binFolder:p,cwd:o});return await TE(e,r,{cwd:E,env:h,stdin:n,stdout:u,stderr:A})})}async function vat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await M1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await IU(e,await rue(t)),typeof r>\"u\"&&(r=V.dirname(await oe.realpathPromise(V.join(t.cwd,\"package.json\")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function $ce(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return vat(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${qr(e.configuration,t)} not found in the project`);return await Jl.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Nt({stdout:new ph.PassThrough,configuration:p})},I=h.find(L=>L.supportsPackage(u,E));if(!I)throw new Error(`The package ${qr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await M1({project:e,locator:t,binFolder:r,lifecycleScript:a});await IU(r,await Kb(t,{project:e}));let x=await I.findPackageLocation(u,E),C=new gn(x,{baseFs:A}),R=await Ot.find(Bt.dot,{baseFs:C});return typeof o>\"u\"&&(o=x),{manifest:R,binFolder:r,env:v,cwd:o}})}async function eue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Wb(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function CU(t,e){return t.manifest.scripts.has(e)}async function tue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await oe.mktempPromise(async u=>{let A=V.join(u,`${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(A,{report:o,prefix:qr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the \"${e}\" lifecycle script`);let I=await eue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),I!==0)throw oe.detachTemp(u),new zt(36,`${(0,Jce.default)(e)} script failed (exit code ${Mt(a,I,yt.NUMBER)}, logs can be found here: ${Mt(a,A,yt.PATH)}); run ${Mt(a,`yarn ${e}`,yt.CODE)} to investigate`)})}async function Dat(t,e,r){CU(t,e)&&await tue(t,e,r)}function wU(t){let e=V.extname(t);if(e.match(/\\.[cm]?[jt]sx?$/))return!0;if(e===\".exe\"||e===\".bin\")return!1;let r=Buffer.alloc(4),o;try{o=oe.openSync(t,\"r\")}catch{return!0}try{oe.readSync(o,r,0,r.length,0)}finally{oe.closeSync(o)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function Kb(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${qr(r,t)} not found in the project`);let n=new ph.Writable,u=r.getLinkers(),A={project:e,report:new Nt({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let I=e.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(`Assertion failed: The resolution (${jn(r,E)}) should have been registered`);p.add(I)}let h=await Promise.all(Array.from(p,async E=>{let I=e.storedPackages.get(E);if(!I)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(I.bin.size===0)return sl.skip;let v=u.find(C=>C.supportsPackage(I,A));if(!v)return sl.skip;let x=null;try{x=await v.findPackageLocation(I,A)}catch(C){if(C.code===\"LOCATOR_NOT_INSTALLED\")return sl.skip;throw C}return{dependency:I,packageLocation:x}}));for(let E of h){if(E===sl.skip)continue;let{dependency:I,packageLocation:v}=E;for(let[x,C]of I.bin){let R=V.resolve(v,C);o.set(x,[I,ue.fromPortablePath(R),wU(R)])}}return o}async function rue(t){return await Kb(t.anchoredLocator,{project:t.project})}async function IU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?fh(t,r,process.execPath,[o]):fh(t,r,o,[])))}async function nue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await Kb(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${qr(a.configuration,t)}`);return await oe.mktempPromise(async I=>{let[,v]=E,x=await M1({project:a,locator:t,binFolder:I});await IU(x.BERRY_BIN_FOLDER,h);let C=wU(ue.toPortablePath(v))?Gc(process.execPath,[...p,v,...r],{cwd:o,env:x,stdin:n,stdout:u,stderr:A}):Gc(v,r,{cwd:o,env:x,stdin:n,stdout:u,stderr:A}),R;try{R=await C}finally{await oe.removePromise(x.BERRY_BIN_FOLDER)}return R.code})}async function Sat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await nue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var Jce,zce,ph,Xce,Cat,wat,BU=Et(()=>{St();St();nA();k1();Jce=$e(mU()),zce=$e(id()),ph=ve(\"stream\");fE();Yl();O1();L1();Db();jl();ql();Qf();bo();Xce=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))(Xce||{});Cat=2,wat=(0,zce.default)(Cat)});var OE=_((L4t,sue)=>{\"use strict\";var iue=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\"]]);sue.exports=t=>t?Object.keys(t).map(e=>[iue.has(e)?iue.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var UE=_((O4t,hue)=>{\"use strict\";var oue=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},Pat=ve(\"events\"),aue=ve(\"stream\"),lue=ve(\"string_decoder\").StringDecoder,Mf=Symbol(\"EOF\"),Uf=Symbol(\"maybeEmitEnd\"),hh=Symbol(\"emittedEnd\"),Vb=Symbol(\"emittingEnd\"),U1=Symbol(\"emittedError\"),Jb=Symbol(\"closed\"),cue=Symbol(\"read\"),zb=Symbol(\"flush\"),uue=Symbol(\"flushChunk\"),ka=Symbol(\"encoding\"),_f=Symbol(\"decoder\"),Xb=Symbol(\"flowing\"),_1=Symbol(\"paused\"),ME=Symbol(\"resume\"),Fs=Symbol(\"bufferLength\"),vU=Symbol(\"bufferPush\"),DU=Symbol(\"bufferShift\"),Fo=Symbol(\"objectMode\"),Ro=Symbol(\"destroyed\"),SU=Symbol(\"emitData\"),Aue=Symbol(\"emitEnd\"),PU=Symbol(\"emitEnd2\"),Hf=Symbol(\"async\"),H1=t=>Promise.resolve().then(t),fue=global._MP_NO_ITERATOR_SYMBOLS_!==\"1\",bat=fue&&Symbol.asyncIterator||Symbol(\"asyncIterator not implemented\"),xat=fue&&Symbol.iterator||Symbol(\"iterator not implemented\"),kat=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",Qat=t=>t instanceof ArrayBuffer||typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,Fat=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),Zb=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[ME](),r.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},bU=class extends Zb{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}};hue.exports=class pue extends aue{constructor(e){super(),this[Xb]=!1,this[_1]=!1,this.pipes=[],this.buffer=[],this[Fo]=e&&e.objectMode||!1,this[Fo]?this[ka]=null:this[ka]=e&&e.encoding||null,this[ka]===\"buffer\"&&(this[ka]=null),this[Hf]=e&&!!e.async||!1,this[_f]=this[ka]?new lue(this[ka]):null,this[Mf]=!1,this[hh]=!1,this[Vb]=!1,this[Jb]=!1,this[U1]=null,this.writable=!0,this.readable=!0,this[Fs]=0,this[Ro]=!1}get bufferLength(){return this[Fs]}get encoding(){return this[ka]}set encoding(e){if(this[Fo])throw new Error(\"cannot set encoding in objectMode\");if(this[ka]&&e!==this[ka]&&(this[_f]&&this[_f].lastNeed||this[Fs]))throw new Error(\"cannot change encoding\");this[ka]!==e&&(this[_f]=e?new lue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[_f].write(r)))),this[ka]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Fo]}set objectMode(e){this[Fo]=this[Fo]||!!e}get async(){return this[Hf]}set async(e){this[Hf]=this[Hf]||!!e}write(e,r,o){if(this[Mf])throw new Error(\"write after end\");if(this[Ro])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(o=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[Hf]?H1:n=>n();return!this[Fo]&&!Buffer.isBuffer(e)&&(Fat(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Qat(e)?e=Buffer.from(e):typeof e!=\"string\"&&(this.objectMode=!0)),this[Fo]?(this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit(\"data\",e):this[vU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):e.length?(typeof e==\"string\"&&!(r===this[ka]&&!this[_f].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ka]&&(e=this[_f].write(e)),this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit(\"data\",e):this[vU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):(this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing)}read(e){if(this[Ro])return null;if(this[Fs]===0||e===0||e>this[Fs])return this[Uf](),null;this[Fo]&&(e=null),this.buffer.length>1&&!this[Fo]&&(this.encoding?this.buffer=[this.buffer.join(\"\")]:this.buffer=[Buffer.concat(this.buffer,this[Fs])]);let r=this[cue](e||null,this.buffer[0]);return this[Uf](),r}[cue](e,r){return e===r.length||e===null?this[DU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Fs]-=e),this.emit(\"data\",r),!this.buffer.length&&!this[Mf]&&this.emit(\"drain\"),r}end(e,r,o){return typeof e==\"function\"&&(o=e,e=null),typeof r==\"function\"&&(o=r,r=\"utf8\"),e&&this.write(e,r),o&&this.once(\"end\",o),this[Mf]=!0,this.writable=!1,(this.flowing||!this[_1])&&this[Uf](),this}[ME](){this[Ro]||(this[_1]=!1,this[Xb]=!0,this.emit(\"resume\"),this.buffer.length?this[zb]():this[Mf]?this[Uf]():this.emit(\"drain\"))}resume(){return this[ME]()}pause(){this[Xb]=!1,this[_1]=!0}get destroyed(){return this[Ro]}get flowing(){return this[Xb]}get paused(){return this[_1]}[vU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}[DU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.buffer[0].length),this.buffer.shift()}[zb](e){do;while(this[uue](this[DU]()));!e&&!this.buffer.length&&!this[Mf]&&this.emit(\"drain\")}[uue](e){return e?(this.emit(\"data\",e),this.flowing):!1}pipe(e,r){if(this[Ro])return;let o=this[hh];return r=r||{},e===oue.stdout||e===oue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new bU(this,e,r):new Zb(this,e,r)),this[Hf]?H1(()=>this[ME]()):this[ME]()),e}unpipe(e){let r=this.pipes.find(o=>o.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 o=super.on(e,r);return e===\"data\"&&!this.pipes.length&&!this.flowing?this[ME]():e===\"readable\"&&this[Fs]!==0?super.emit(\"readable\"):kat(e)&&this[hh]?(super.emit(e),this.removeAllListeners(e)):e===\"error\"&&this[U1]&&(this[Hf]?H1(()=>r.call(this,this[U1])):r.call(this,this[U1])),o}get emittedEnd(){return this[hh]}[Uf](){!this[Vb]&&!this[hh]&&!this[Ro]&&this.buffer.length===0&&this[Mf]&&(this[Vb]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[Jb]&&this.emit(\"close\"),this[Vb]=!1)}emit(e,r,...o){if(e!==\"error\"&&e!==\"close\"&&e!==Ro&&this[Ro])return;if(e===\"data\")return r?this[Hf]?H1(()=>this[SU](r)):this[SU](r):!1;if(e===\"end\")return this[Aue]();if(e===\"close\"){if(this[Jb]=!0,!this[hh]&&!this[Ro])return;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[U1]=r;let n=super.emit(\"error\",r);return this[Uf](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[Uf](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[Uf](),a}[SU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit(\"data\",e);return this[Uf](),r}[Aue](){this[hh]||(this[hh]=!0,this.readable=!1,this[Hf]?H1(()=>this[PU]()):this[PU]())}[PU](){if(this[_f]){let r=this[_f].end();if(r){for(let o of this.pipes)o.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[Fo]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",o=>{e.push(o),this[Fo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this.collect().then(e=>this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this[ka]?e.join(\"\"):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Ro,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",o=>r(o)),this.on(\"end\",()=>e())})}[bat](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Mf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener(\"data\",u),this.removeListener(\"end\",A),a(h)},u=h=>{this.removeListener(\"error\",n),this.removeListener(\"end\",A),this.pause(),o({value:h,done:!!this[Mf]})},A=()=>{this.removeListener(\"error\",n),this.removeListener(\"data\",u),o({done:!0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,o=h,this.once(Ro,p),this.once(\"error\",n),this.once(\"end\",A),this.once(\"data\",u)})}}}[xat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Ro]?(e?this.emit(\"error\",e):this.emit(Ro),this):(this[Ro]=!0,this.buffer.length=0,this[Fs]=0,typeof this.close==\"function\"&&!this[Jb]&&this.close(),e?this.emit(\"error\",e):this.emit(Ro),this)}static isStream(e){return!!e&&(e instanceof pue||e instanceof aue||e instanceof Pat&&(typeof e.pipe==\"function\"||typeof e.write==\"function\"&&typeof e.end==\"function\"))}}});var due=_((M4t,gue)=>{var Rat=ve(\"zlib\").constants||{ZLIB_VERNUM:4736};gue.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},Rat))});var GU=_(cl=>{\"use strict\";var RU=ve(\"assert\"),gh=ve(\"buffer\").Buffer,Eue=ve(\"zlib\"),Fd=cl.constants=due(),Tat=UE(),mue=gh.concat,Rd=Symbol(\"_superWrite\"),HE=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\"}},Nat=Symbol(\"opts\"),q1=Symbol(\"flushFlag\"),yue=Symbol(\"finishFlushFlag\"),jU=Symbol(\"fullFlushFlag\"),ti=Symbol(\"handle\"),$b=Symbol(\"onError\"),_E=Symbol(\"sawError\"),xU=Symbol(\"level\"),kU=Symbol(\"strategy\"),QU=Symbol(\"ended\"),U4t=Symbol(\"_defaultFullFlush\"),ex=class extends Tat{constructor(e,r){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");super(e),this[_E]=!1,this[QU]=!1,this[Nat]=e,this[q1]=e.flush,this[yue]=e.finishFlush;try{this[ti]=new Eue[r](e)}catch(o){throw new HE(o)}this[$b]=o=>{this[_E]||(this[_E]=!0,this.close(),this.emit(\"error\",o))},this[ti].on(\"error\",o=>this[$b](new HE(o))),this.once(\"end\",()=>this.close)}close(){this[ti]&&(this[ti].close(),this[ti]=null,this.emit(\"close\"))}reset(){if(!this[_E])return RU(this[ti],\"zlib binding closed\"),this[ti].reset()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this[jU]),this.write(Object.assign(gh.alloc(0),{[q1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[yue]),this[QU]=!0,super.end(null,null,o)}get ended(){return this[QU]}write(e,r,o){if(typeof r==\"function\"&&(o=r,r=\"utf8\"),typeof e==\"string\"&&(e=gh.from(e,r)),this[_E])return;RU(this[ti],\"zlib binding closed\");let a=this[ti]._handle,n=a.close;a.close=()=>{};let u=this[ti].close;this[ti].close=()=>{},gh.concat=h=>h;let A;try{let h=typeof e[q1]==\"number\"?e[q1]:this[q1];A=this[ti]._processChunk(e,h),gh.concat=mue}catch(h){gh.concat=mue,this[$b](new HE(h))}finally{this[ti]&&(this[ti]._handle=a,a.close=n,this[ti].close=u,this[ti].removeAllListeners(\"error\"))}this[ti]&&this[ti].on(\"error\",h=>this[$b](new HE(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Rd](gh.from(A[0]));for(let h=1;h<A.length;h++)p=this[Rd](A[h])}else p=this[Rd](gh.from(A));return o&&o(),p}[Rd](e){return super.write(e)}},qf=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.Z_NO_FLUSH,e.finishFlush=e.finishFlush||Fd.Z_FINISH,super(e,r),this[jU]=Fd.Z_FULL_FLUSH,this[xU]=e.level,this[kU]=e.strategy}params(e,r){if(!this[_E]){if(!this[ti])throw new Error(\"cannot switch params when binding is closed\");if(!this[ti].params)throw new Error(\"not supported in this implementation\");if(this[xU]!==e||this[kU]!==r){this.flush(Fd.Z_SYNC_FLUSH),RU(this[ti],\"zlib binding closed\");let o=this[ti].flush;this[ti].flush=(a,n)=>{this.flush(a),n()};try{this[ti].params(e,r)}finally{this[ti].flush=o}this[ti]&&(this[xU]=e,this[kU]=r)}}}},TU=class extends qf{constructor(e){super(e,\"Deflate\")}},NU=class extends qf{constructor(e){super(e,\"Inflate\")}},FU=Symbol(\"_portable\"),LU=class extends qf{constructor(e){super(e,\"Gzip\"),this[FU]=e&&!!e.portable}[Rd](e){return this[FU]?(this[FU]=!1,e[9]=255,super[Rd](e)):super[Rd](e)}},OU=class extends qf{constructor(e){super(e,\"Gunzip\")}},MU=class extends qf{constructor(e){super(e,\"DeflateRaw\")}},UU=class extends qf{constructor(e){super(e,\"InflateRaw\")}},_U=class extends qf{constructor(e){super(e,\"Unzip\")}},tx=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Fd.BROTLI_OPERATION_FINISH,super(e,r),this[jU]=Fd.BROTLI_OPERATION_FLUSH}},HU=class extends tx{constructor(e){super(e,\"BrotliCompress\")}},qU=class extends tx{constructor(e){super(e,\"BrotliDecompress\")}};cl.Deflate=TU;cl.Inflate=NU;cl.Gzip=LU;cl.Gunzip=OU;cl.DeflateRaw=MU;cl.InflateRaw=UU;cl.Unzip=_U;typeof Eue.BrotliCompress==\"function\"?(cl.BrotliCompress=HU,cl.BrotliDecompress=qU):cl.BrotliCompress=cl.BrotliDecompress=class{constructor(){throw new Error(\"Brotli is not supported in this version of Node.js\")}}});var qE=_((q4t,Cue)=>{var Lat=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Cue.exports=Lat!==\"win32\"?t=>t:t=>t&&t.replace(/\\\\/g,\"/\")});var rx=_((G4t,wue)=>{\"use strict\";var Oat=UE(),YU=qE(),WU=Symbol(\"slurp\");wue.exports=class extends Oat{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,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=YU(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=YU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[WU](r),o&&this[WU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[WU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=o===\"path\"||o===\"linkpath\"?YU(e[o]):e[o])}}});var KU=_(nx=>{\"use strict\";nx.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\"]]);nx.code=new Map(Array.from(nx.name).map(t=>[t[1],t[0]]))});var Due=_((W4t,vue)=>{\"use strict\";var Mat=(t,e)=>{if(Number.isSafeInteger(t))t<0?_at(t,e):Uat(t,e);else throw Error(\"cannot encode number outside of javascript safe integer range\");return e},Uat=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},_at=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=Iue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=Bue(a))}},Hat=t=>{let e=t[0],r=e===128?jat(t.slice(1,t.length)):e===255?qat(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},qat=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=Iue(n):n===0?u=n:(o=!0,u=Bue(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},jat=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},Iue=t=>(255^t)&255,Bue=t=>(255^t)+1&255;vue.exports={encode:Mat,parse:Hat}});var GE=_((K4t,Pue)=>{\"use strict\";var VU=KU(),jE=ve(\"path\").posix,Sue=Due(),JU=Symbol(\"slurp\"),ul=Symbol(\"type\"),ZU=class{constructor(e,r,o,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[ul]=\"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,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");if(this.path=Td(e,r,100),this.mode=dh(e,r+100,8),this.uid=dh(e,r+108,8),this.gid=dh(e,r+116,8),this.size=dh(e,r+124,12),this.mtime=zU(e,r+136,12),this.cksum=dh(e,r+148,12),this[JU](o),this[JU](a,!0),this[ul]=Td(e,r+156,1),this[ul]===\"\"&&(this[ul]=\"0\"),this[ul]===\"0\"&&this.path.substr(-1)===\"/\"&&(this[ul]=\"5\"),this[ul]===\"5\"&&(this.size=0),this.linkpath=Td(e,r+157,100),e.slice(r+257,r+265).toString()===\"ustar\\x0000\")if(this.uname=Td(e,r+265,32),this.gname=Td(e,r+297,32),this.devmaj=dh(e,r+329,8),this.devmin=dh(e,r+337,8),e[r+475]!==0){let u=Td(e,r+345,155);this.path=u+\"/\"+this.path}else{let u=Td(e,r+345,130);u&&(this.path=u+\"/\"+this.path),this.atime=zU(e,r+476,12),this.ctime=zU(e,r+488,12)}let n=8*32;for(let u=r;u<r+148;u++)n+=e[u];for(let u=r+156;u<r+512;u++)n+=e[u];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[JU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=e[o])}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 o=this.ctime||this.atime?130:155,a=Gat(this.path||\"\",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Nd(e,r,100,n)||this.needPax,this.needPax=mh(e,r+100,8,this.mode)||this.needPax,this.needPax=mh(e,r+108,8,this.uid)||this.needPax,this.needPax=mh(e,r+116,8,this.gid)||this.needPax,this.needPax=mh(e,r+124,12,this.size)||this.needPax,this.needPax=XU(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[ul].charCodeAt(0),this.needPax=Nd(e,r+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",r+257,8),this.needPax=Nd(e,r+265,32,this.uname)||this.needPax,this.needPax=Nd(e,r+297,32,this.gname)||this.needPax,this.needPax=mh(e,r+329,8,this.devmaj)||this.needPax,this.needPax=mh(e,r+337,8,this.devmin)||this.needPax,this.needPax=Nd(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Nd(e,r+345,155,u)||this.needPax:(this.needPax=Nd(e,r+345,130,u)||this.needPax,this.needPax=XU(e,r+476,12,this.atime)||this.needPax,this.needPax=XU(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p<r+148;p++)A+=e[p];for(let p=r+156;p<r+512;p++)A+=e[p];return this.cksum=A,mh(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 VU.name.get(this[ul])||this[ul]}get typeKey(){return this[ul]}set type(e){VU.code.has(e)?this[ul]=VU.code.get(e):this[ul]=e}},Gat=(t,e)=>{let o=t,a=\"\",n,u=jE.parse(t).root||\".\";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=jE.dirname(o),o=jE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=jE.join(jE.basename(a),o),a=jE.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),\"\",!0])}return n},Td=(t,e,r)=>t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*/,\"\"),zU=(t,e,r)=>Yat(dh(t,e,r)),Yat=t=>t===null?null:new Date(t*1e3),dh=(t,e,r)=>t[e]&128?Sue.parse(t.slice(e,e+r)):Kat(t,e,r),Wat=t=>isNaN(t)?null:t,Kat=(t,e,r)=>Wat(parseInt(t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),Vat={12:8589934591,8:2097151},mh=(t,e,r,o)=>o===null?!1:o>Vat[r]||o<0?(Sue.encode(o,t.slice(e,e+r)),!0):(Jat(t,e,r,o),!1),Jat=(t,e,r,o)=>t.write(zat(o,r),e,r,\"ascii\"),zat=(t,e)=>Xat(Math.floor(t).toString(8),e),Xat=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join(\"0\")+t+\" \")+\"\\0\",XU=(t,e,r,o)=>o===null?!1:mh(t,e,r,o.getTime()/1e3),Zat=new Array(156).join(\"\\0\"),Nd=(t,e,r,o)=>o===null?!1:(t.write(o+Zat,e,r,\"utf8\"),o.length!==Buffer.byteLength(o)||o.length>r);Pue.exports=ZU});var ix=_((V4t,bue)=>{\"use strict\";var $at=GE(),elt=ve(\"path\"),j1=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),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new $at({path:(\"PaxHeader/\"+elt.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],o=\" \"+(e===\"dev\"||e===\"ino\"||e===\"nlink\"?\"SCHILY.\":\"\")+e+\"=\"+r+`\n`,a=Buffer.byteLength(o),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+o}};j1.parse=(t,e,r)=>new j1(tlt(rlt(t),e),r);var tlt=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,rlt=t=>t.replace(/\\n$/,\"\").split(`\n`).reduce(nlt,Object.create(null)),nlt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+\" \").length);let o=e.split(\"=\"),a=o.shift().replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\");if(!a)return t;let n=o.join(\"=\");return t[a]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};bue.exports=j1});var YE=_((J4t,xue)=>{xue.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 sx=_((z4t,kue)=>{\"use strict\";kue.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit(\"warn\",o.tarCode,r,o)):r instanceof Error?this.emit(\"error\",Object.assign(r,o)):this.emit(\"error\",Object.assign(new Error(`${e}: ${r}`),o))}}});var e3=_((Z4t,Que)=>{\"use strict\";var ox=[\"|\",\"<\",\">\",\"?\",\":\"],$U=ox.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ilt=new Map(ox.map((t,e)=>[t,$U[e]])),slt=new Map($U.map((t,e)=>[t,ox[e]]));Que.exports={encode:t=>ox.reduce((e,r)=>e.split(r).join(ilt.get(r)),t),decode:t=>$U.reduce((e,r)=>e.split(r).join(slt.get(r)),t)}});var t3=_(($4t,Rue)=>{var{isAbsolute:olt,parse:Fue}=ve(\"path\").win32;Rue.exports=t=>{let e=\"\",r=Fue(t);for(;olt(t)||r.root;){let o=t.charAt(0)===\"/\"&&t.slice(0,4)!==\"//?/\"?\"/\":r.root;t=t.substr(o.length),e+=o,r=Fue(t)}return[e,t]}});var Nue=_((eUt,Tue)=>{\"use strict\";Tue.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 A3=_((nUt,Jue)=>{\"use strict\";var que=UE(),jue=ix(),Gue=GE(),oA=ve(\"fs\"),Lue=ve(\"path\"),sA=qE(),alt=YE(),Yue=(t,e)=>e?(t=sA(t).replace(/^\\.(\\/|$)/,\"\"),alt(e)+\"/\"+t):sA(t),llt=16*1024*1024,Oue=Symbol(\"process\"),Mue=Symbol(\"file\"),Uue=Symbol(\"directory\"),n3=Symbol(\"symlink\"),_ue=Symbol(\"hardlink\"),G1=Symbol(\"header\"),ax=Symbol(\"read\"),i3=Symbol(\"lstat\"),lx=Symbol(\"onlstat\"),s3=Symbol(\"onread\"),o3=Symbol(\"onreadlink\"),a3=Symbol(\"openfile\"),l3=Symbol(\"onopenfile\"),yh=Symbol(\"close\"),cx=Symbol(\"mode\"),c3=Symbol(\"awaitDrain\"),r3=Symbol(\"ondrain\"),aA=Symbol(\"prefix\"),Hue=Symbol(\"hadError\"),Wue=sx(),clt=e3(),Kue=t3(),Vue=Nue(),ux=Wue(class extends que{constructor(e,r){if(r=r||{},super(r),typeof e!=\"string\")throw new TypeError(\"path is required\");this.path=sA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||\"\",this.maxReadSize=r.maxReadSize||llt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=sA(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?sA(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 o=!1;if(!this.preservePaths){let[a,n]=Kue(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=clt.decode(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=sA(r.absolute||Lue.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[lx](this.statCache.get(this.absolute)):this[i3]()}emit(e,...r){return e===\"error\"&&(this[Hue]=!0),super.emit(e,...r)}[i3](){oA.lstat(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[lx](r)})}[lx](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Alt(e),this.emit(\"stat\",e),this[Oue]()}[Oue](){switch(this.type){case\"File\":return this[Mue]();case\"Directory\":return this[Uue]();case\"SymbolicLink\":return this[n3]();default:return this.end()}}[cx](e){return Vue(e,this.type===\"Directory\",this.portable)}[aA](e){return Yue(e,this.prefix)}[G1](){this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.header=new Gue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this[cx](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 jue({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[aA](this.path),linkpath:this.type===\"Link\"?this[aA](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)}[Uue](){this.path.substr(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[G1](),this.end()}[n3](){oA.readlink(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[o3](r)})}[o3](e){this.linkpath=sA(e),this[G1](),this.end()}[_ue](e){this.type=\"Link\",this.linkpath=sA(Lue.relative(this.cwd,e)),this.stat.size=0,this[G1](),this.end()}[Mue](){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[_ue](r)}this.linkCache.set(e,this.absolute)}if(this[G1](),this.stat.size===0)return this.end();this[a3]()}[a3](){oA.open(this.absolute,\"r\",(e,r)=>{if(e)return this.emit(\"error\",e);this[l3](r)})}[l3](e){if(this.fd=e,this[Hue])return this[yh]();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[ax]()}[ax](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;oA.read(e,r,o,a,n,(u,A)=>{if(u)return this[yh](()=>this.emit(\"error\",u));this[s3](A)})}[yh](e){oA.close(this.fd,e)}[s3](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[yh](()=>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[yh](()=>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[r3]():this[c3](()=>this[r3]())}[c3](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)}[r3](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[yh](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[ax]()}}),u3=class extends ux{[i3](){this[lx](oA.lstatSync(this.absolute))}[n3](){this[o3](oA.readlinkSync(this.absolute))}[a3](){this[l3](oA.openSync(this.absolute,\"r\"))}[ax](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=oA.readSync(r,o,a,n,u);this[s3](A),e=!1}finally{if(e)try{this[yh](()=>{})}catch{}}}[c3](e){e()}[yh](e){oA.closeSync(this.fd),e()}},ult=Wue(class extends que{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=sA(e.path),this.mode=this[cx](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=sA(e.linkpath),typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Kue(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Gue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](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}),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new jue({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[aA](this.path),linkpath:this.type===\"Link\"?this[aA](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)}[aA](e){return Yue(e,this.prefix)}[cx](e){return Vue(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()}});ux.Sync=u3;ux.Tar=ult;var Alt=t=>t.isFile()?\"File\":t.isDirectory()?\"Directory\":t.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\";Jue.exports=ux});var Ex=_((sUt,rAe)=>{\"use strict\";var mx=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}},flt=UE(),plt=GU(),hlt=rx(),C3=A3(),glt=C3.Sync,dlt=C3.Tar,mlt=IS(),zue=Buffer.alloc(1024),px=Symbol(\"onStat\"),Ax=Symbol(\"ended\"),lA=Symbol(\"queue\"),WE=Symbol(\"current\"),Ld=Symbol(\"process\"),fx=Symbol(\"processing\"),Xue=Symbol(\"processJob\"),cA=Symbol(\"jobs\"),f3=Symbol(\"jobDone\"),hx=Symbol(\"addFSEntry\"),Zue=Symbol(\"addTarEntry\"),d3=Symbol(\"stat\"),m3=Symbol(\"readdir\"),gx=Symbol(\"onreaddir\"),dx=Symbol(\"pipe\"),$ue=Symbol(\"entry\"),p3=Symbol(\"entryOpt\"),y3=Symbol(\"writeEntryClass\"),tAe=Symbol(\"write\"),h3=Symbol(\"ondrain\"),yx=ve(\"fs\"),eAe=ve(\"path\"),ylt=sx(),g3=qE(),w3=ylt(class extends flt{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=g3(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[y3]=C3,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 plt.Gzip(e.gzip),this.zip.on(\"data\",r=>super.write(r)),this.zip.on(\"end\",r=>super.end()),this.zip.on(\"drain\",r=>this[h3]()),this.on(\"resume\",r=>this.zip.resume())):this.on(\"drain\",this[h3]),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[lA]=new mlt,this[cA]=0,this.jobs=+e.jobs||4,this[fx]=!1,this[Ax]=!1}[tAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Ax]=!0,this[Ld](),this}write(e){if(this[Ax])throw new Error(\"write after end\");return e instanceof hlt?this[Zue](e):this[hx](e),this.flowing}[Zue](e){let r=g3(eAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new mx(e.path,r,!1);o.entry=new dlt(e,this[p3](o)),o.entry.on(\"end\",a=>this[f3](o)),this[cA]+=1,this[lA].push(o)}this[Ld]()}[hx](e){let r=g3(eAe.resolve(this.cwd,e));this[lA].push(new mx(e,r)),this[Ld]()}[d3](e){e.pending=!0,this[cA]+=1;let r=this.follow?\"stat\":\"lstat\";yx[r](e.absolute,(o,a)=>{e.pending=!1,this[cA]-=1,o?this.emit(\"error\",o):this[px](e,a)})}[px](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Ld]()}[m3](e){e.pending=!0,this[cA]+=1,yx.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[cA]-=1,r)return this.emit(\"error\",r);this[gx](e,o)})}[gx](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Ld]()}[Ld](){if(!this[fx]){this[fx]=!0;for(let e=this[lA].head;e!==null&&this[cA]<this.jobs;e=e.next)if(this[Xue](e.value),e.value.ignore){let r=e.next;this[lA].removeNode(e),e.next=r}this[fx]=!1,this[Ax]&&!this[lA].length&&this[cA]===0&&(this.zip?this.zip.end(zue):(super.write(zue),super.end()))}}get[WE](){return this[lA]&&this[lA].head&&this[lA].head.value}[f3](e){this[lA].shift(),this[cA]-=1,this[Ld]()}[Xue](e){if(!e.pending){if(e.entry){e===this[WE]&&!e.piped&&this[dx](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[px](e,this.statCache.get(e.absolute)):this[d3](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[gx](e,this.readdirCache.get(e.absolute)):this[m3](e),!e.readdir))){if(e.entry=this[$ue](e),!e.entry){e.ignore=!0;return}e===this[WE]&&!e.piped&&this[dx](e)}}}[p3](e){return{onwarn:(r,o,a)=>this.warn(r,o,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}}[$ue](e){this[cA]+=1;try{return new this[y3](e.path,this[p3](e)).on(\"end\",()=>this[f3](e)).on(\"error\",r=>this.emit(\"error\",r))}catch(r){this.emit(\"error\",r)}}[h3](){this[WE]&&this[WE].entry&&this[WE].entry.resume()}[dx](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[hx](u+a)});let r=e.entry,o=this.zip;o?r.on(\"data\",a=>{o.write(a)||r.pause()}):r.on(\"data\",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),E3=class extends w3{constructor(e){super(e),this[y3]=glt}pause(){}resume(){}[d3](e){let r=this.follow?\"statSync\":\"lstatSync\";this[px](e,yx[r](e.absolute))}[m3](e,r){this[gx](e,yx.readdirSync(e.absolute))}[dx](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[hx](u+a)}),o?r.on(\"data\",a=>{o.write(a)}):r.on(\"data\",a=>{super[tAe](a)})}};w3.Sync=E3;rAe.exports=w3});var eC=_(W1=>{\"use strict\";var Elt=UE(),Clt=ve(\"events\").EventEmitter,Qa=ve(\"fs\"),v3=Qa.writev;if(!v3){let t=process.binding(\"fs\"),e=t.FSReqWrap||t.FSReqCallback;v3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var ZE=Symbol(\"_autoClose\"),Yc=Symbol(\"_close\"),Y1=Symbol(\"_ended\"),Gn=Symbol(\"_fd\"),nAe=Symbol(\"_finished\"),Ch=Symbol(\"_flags\"),I3=Symbol(\"_flush\"),D3=Symbol(\"_handleChunk\"),S3=Symbol(\"_makeBuf\"),vx=Symbol(\"_mode\"),Cx=Symbol(\"_needDrain\"),zE=Symbol(\"_onerror\"),$E=Symbol(\"_onopen\"),B3=Symbol(\"_onread\"),VE=Symbol(\"_onwrite\"),wh=Symbol(\"_open\"),jf=Symbol(\"_path\"),Od=Symbol(\"_pos\"),uA=Symbol(\"_queue\"),JE=Symbol(\"_read\"),iAe=Symbol(\"_readSize\"),Eh=Symbol(\"_reading\"),wx=Symbol(\"_remain\"),sAe=Symbol(\"_size\"),Ix=Symbol(\"_write\"),KE=Symbol(\"_writing\"),Bx=Symbol(\"_defaultFlag\"),XE=Symbol(\"_errored\"),Dx=class extends Elt{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[XE]=!1,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[jf]=e,this[iAe]=r.readSize||16*1024*1024,this[Eh]=!1,this[sAe]=typeof r.size==\"number\"?r.size:1/0,this[wx]=this[sAe],this[ZE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0,typeof this[Gn]==\"number\"?this[JE]():this[wh]()}get fd(){return this[Gn]}get path(){return this[jf]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[wh](){Qa.open(this[jf],\"r\",(e,r)=>this[$E](e,r))}[$E](e,r){e?this[zE](e):(this[Gn]=r,this.emit(\"open\",r),this[JE]())}[S3](){return Buffer.allocUnsafe(Math.min(this[iAe],this[wx]))}[JE](){if(!this[Eh]){this[Eh]=!0;let e=this[S3]();if(e.length===0)return process.nextTick(()=>this[B3](null,0,e));Qa.read(this[Gn],e,0,e.length,null,(r,o,a)=>this[B3](r,o,a))}}[B3](e,r,o){this[Eh]=!1,e?this[zE](e):this[D3](r,o)&&this[JE]()}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}[zE](e){this[Eh]=!0,this[Yc](),this.emit(\"error\",e)}[D3](e,r){let o=!1;return this[wx]-=e,e>0&&(o=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[wx]<=0)&&(o=!1,this[Yc](),super.end()),o}emit(e,r){switch(e){case\"prefinish\":case\"finish\":break;case\"drain\":typeof this[Gn]==\"number\"&&this[JE]();break;case\"error\":return this[XE]?void 0:(this[XE]=!0,super.emit(e,r));default:return super.emit(e,r)}}},P3=class extends Dx{[wh](){let e=!0;try{this[$E](null,Qa.openSync(this[jf],\"r\")),e=!1}finally{e&&this[Yc]()}}[JE](){let e=!0;try{if(!this[Eh]){this[Eh]=!0;do{let r=this[S3](),o=r.length===0?0:Qa.readSync(this[Gn],r,0,r.length,null);if(!this[D3](o,r))break}while(!0);this[Eh]=!1}e=!1}finally{e&&this[Yc]()}}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}},Sx=class extends Clt{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[XE]=!1,this[KE]=!1,this[Y1]=!1,this[Cx]=!1,this[uA]=[],this[jf]=e,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[vx]=r.mode===void 0?438:r.mode,this[Od]=typeof r.start==\"number\"?r.start:null,this[ZE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0;let o=this[Od]!==null?\"r+\":\"w\";this[Bx]=r.flags===void 0,this[Ch]=this[Bx]?o:r.flags,this[Gn]===null&&this[wh]()}emit(e,r){if(e===\"error\"){if(this[XE])return;this[XE]=!0}return super.emit(e,r)}get fd(){return this[Gn]}get path(){return this[jf]}[zE](e){this[Yc](),this[KE]=!0,this.emit(\"error\",e)}[wh](){Qa.open(this[jf],this[Ch],this[vx],(e,r)=>this[$E](e,r))}[$E](e,r){this[Bx]&&this[Ch]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[Ch]=\"w\",this[wh]()):e?this[zE](e):(this[Gn]=r,this.emit(\"open\",r),this[I3]())}end(e,r){return e&&this.write(e,r),this[Y1]=!0,!this[KE]&&!this[uA].length&&typeof this[Gn]==\"number\"&&this[VE](null,0),this}write(e,r){return typeof e==\"string\"&&(e=Buffer.from(e,r)),this[Y1]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[Gn]===null||this[KE]||this[uA].length?(this[uA].push(e),this[Cx]=!0,!1):(this[KE]=!0,this[Ix](e),!0)}[Ix](e){Qa.write(this[Gn],e,0,e.length,this[Od],(r,o)=>this[VE](r,o))}[VE](e,r){e?this[zE](e):(this[Od]!==null&&(this[Od]+=r),this[uA].length?this[I3]():(this[KE]=!1,this[Y1]&&!this[nAe]?(this[nAe]=!0,this[Yc](),this.emit(\"finish\")):this[Cx]&&(this[Cx]=!1,this.emit(\"drain\"))))}[I3](){if(this[uA].length===0)this[Y1]&&this[VE](null,0);else if(this[uA].length===1)this[Ix](this[uA].pop());else{let e=this[uA];this[uA]=[],v3(this[Gn],e,this[Od],(r,o)=>this[VE](r,o))}}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}},b3=class extends Sx{[wh](){let e;if(this[Bx]&&this[Ch]===\"r+\")try{e=Qa.openSync(this[jf],this[Ch],this[vx])}catch(r){if(r.code===\"ENOENT\")return this[Ch]=\"w\",this[wh]();throw r}else e=Qa.openSync(this[jf],this[Ch],this[vx]);this[$E](null,e)}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}[Ix](e){let r=!0;try{this[VE](null,Qa.writeSync(this[Gn],e,0,e.length,this[Od])),r=!1}finally{if(r)try{this[Yc]()}catch{}}}};W1.ReadStream=Dx;W1.ReadStreamSync=P3;W1.WriteStream=Sx;W1.WriteStreamSync=b3});var Rx=_((lUt,fAe)=>{\"use strict\";var wlt=sx(),Ilt=GE(),Blt=ve(\"events\"),vlt=IS(),Dlt=1024*1024,Slt=rx(),oAe=ix(),Plt=GU(),x3=Buffer.from([31,139]),Xl=Symbol(\"state\"),Md=Symbol(\"writeEntry\"),Gf=Symbol(\"readEntry\"),k3=Symbol(\"nextEntry\"),aAe=Symbol(\"processEntry\"),Zl=Symbol(\"extendedHeader\"),K1=Symbol(\"globalExtendedHeader\"),Ih=Symbol(\"meta\"),lAe=Symbol(\"emitMeta\"),fi=Symbol(\"buffer\"),Yf=Symbol(\"queue\"),Ud=Symbol(\"ended\"),cAe=Symbol(\"emittedEnd\"),_d=Symbol(\"emit\"),Fa=Symbol(\"unzip\"),Px=Symbol(\"consumeChunk\"),bx=Symbol(\"consumeChunkSub\"),Q3=Symbol(\"consumeBody\"),uAe=Symbol(\"consumeMeta\"),AAe=Symbol(\"consumeHeader\"),xx=Symbol(\"consuming\"),F3=Symbol(\"bufferConcat\"),R3=Symbol(\"maybeEnd\"),V1=Symbol(\"writing\"),Bh=Symbol(\"aborted\"),kx=Symbol(\"onDone\"),Hd=Symbol(\"sawValidEntry\"),Qx=Symbol(\"sawNullBlock\"),Fx=Symbol(\"sawEOF\"),blt=t=>!0;fAe.exports=wlt(class extends Blt{constructor(e){e=e||{},super(e),this.file=e.file||\"\",this[Hd]=null,this.on(kx,r=>{(this[Xl]===\"begin\"||this[Hd]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(kx,e.ondone):this.on(kx,r=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Dlt,this.filter=typeof e.filter==\"function\"?e.filter:blt,this.writable=!0,this.readable=!1,this[Yf]=new vlt,this[fi]=null,this[Gf]=null,this[Md]=null,this[Xl]=\"begin\",this[Ih]=\"\",this[Zl]=null,this[K1]=null,this[Ud]=!1,this[Fa]=null,this[Bh]=!1,this[Qx]=!1,this[Fx]=!1,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onentry==\"function\"&&this.on(\"entry\",e.onentry)}[AAe](e,r){this[Hd]===null&&(this[Hd]=!1);let o;try{o=new Ilt(e,r,this[Zl],this[K1])}catch(a){return this.warn(\"TAR_ENTRY_INVALID\",a)}if(o.nullBlock)this[Qx]?(this[Fx]=!0,this[Xl]===\"begin\"&&(this[Xl]=\"header\"),this[_d](\"eof\")):(this[Qx]=!0,this[_d](\"nullBlock\"));else if(this[Qx]=!1,!o.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:o});else if(!o.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:o});else{let n=this[Md]=new Slt(o,this[Zl],this[K1]);if(!this[Hd])if(n.remain){let u=()=>{n.invalid||(this[Hd]=!0)};n.on(\"end\",u)}else this[Hd]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[_d](\"ignoredEntry\",n),this[Xl]=\"ignore\",n.resume()):n.size>0&&(this[Ih]=\"\",n.on(\"data\",u=>this[Ih]+=u),this[Xl]=\"meta\"):(this[Zl]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[_d](\"ignoredEntry\",n),this[Xl]=n.remain?\"ignore\":\"header\",n.resume()):(n.remain?this[Xl]=\"body\":(this[Xl]=\"header\",n.end()),this[Gf]?this[Yf].push(n):(this[Yf].push(n),this[k3]())))}}}[aAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Gf]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",o=>this[k3]()),r=!1)):(this[Gf]=null,r=!1),r}[k3](){do;while(this[aAe](this[Yf].shift()));if(!this[Yf].length){let e=this[Gf];!e||e.flowing||e.size===e.remain?this[V1]||this.emit(\"drain\"):e.once(\"drain\",o=>this.emit(\"drain\"))}}[Q3](e,r){let o=this[Md],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[Xl]=\"header\",this[Md]=null,o.end()),n.length}[uAe](e,r){let o=this[Md],a=this[Q3](e,r);return this[Md]||this[lAe](o),a}[_d](e,r,o){!this[Yf].length&&!this[Gf]?this.emit(e,r,o):this[Yf].push([e,r,o])}[lAe](e){switch(this[_d](\"meta\",this[Ih]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[Zl]=oAe.parse(this[Ih],this[Zl],!1);break;case\"GlobalExtendedHeader\":this[K1]=oAe.parse(this[Ih],this[K1],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].path=this[Ih].replace(/\\0.*/,\"\");break;case\"NextFileHasLongLinkpath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].linkpath=this[Ih].replace(/\\0.*/,\"\");break;default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[Bh]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e){if(this[Bh])return;if(this[Fa]===null&&e){if(this[fi]&&(e=Buffer.concat([this[fi],e]),this[fi]=null),e.length<x3.length)return this[fi]=e,!0;for(let o=0;this[Fa]===null&&o<x3.length;o++)e[o]!==x3[o]&&(this[Fa]=!1);if(this[Fa]===null){let o=this[Ud];this[Ud]=!1,this[Fa]=new Plt.Unzip,this[Fa].on(\"data\",n=>this[Px](n)),this[Fa].on(\"error\",n=>this.abort(n)),this[Fa].on(\"end\",n=>{this[Ud]=!0,this[Px]()}),this[V1]=!0;let a=this[Fa][o?\"end\":\"write\"](e);return this[V1]=!1,a}}this[V1]=!0,this[Fa]?this[Fa].write(e):this[Px](e),this[V1]=!1;let r=this[Yf].length?!1:this[Gf]?this[Gf].flowing:!0;return!r&&!this[Yf].length&&this[Gf].once(\"drain\",o=>this.emit(\"drain\")),r}[F3](e){e&&!this[Bh]&&(this[fi]=this[fi]?Buffer.concat([this[fi],e]):e)}[R3](){if(this[Ud]&&!this[cAe]&&!this[Bh]&&!this[xx]){this[cAe]=!0;let e=this[Md];if(e&&e.blockRemain){let r=this[fi]?this[fi].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[fi]&&e.write(this[fi]),e.end()}this[_d](kx)}}[Px](e){if(this[xx])this[F3](e);else if(!e&&!this[fi])this[R3]();else{if(this[xx]=!0,this[fi]){this[F3](e);let r=this[fi];this[fi]=null,this[bx](r)}else this[bx](e);for(;this[fi]&&this[fi].length>=512&&!this[Bh]&&!this[Fx];){let r=this[fi];this[fi]=null,this[bx](r)}this[xx]=!1}(!this[fi]||this[Ud])&&this[R3]()}[bx](e){let r=0,o=e.length;for(;r+512<=o&&!this[Bh]&&!this[Fx];)switch(this[Xl]){case\"begin\":case\"header\":this[AAe](e,r),r+=512;break;case\"ignore\":case\"body\":r+=this[Q3](e,r);break;case\"meta\":r+=this[uAe](e,r);break;default:throw new Error(\"invalid state: \"+this[Xl])}r<o&&(this[fi]?this[fi]=Buffer.concat([e.slice(r),this[fi]]):this[fi]=e.slice(r))}end(e){this[Bh]||(this[Fa]?this[Fa].end(e):(this[Ud]=!0,this.write(e)))}})});var Tx=_((cUt,dAe)=>{\"use strict\";var xlt=OE(),hAe=Rx(),tC=ve(\"fs\"),klt=eC(),pAe=ve(\"path\"),T3=YE();dAe.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 o=xlt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Flt(o,e),o.noResume||Qlt(o),o.file&&o.sync?Rlt(o):o.file?Tlt(o,r):gAe(o)};var Qlt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Flt=(t,e)=>{let r=new Map(e.map(n=>[T3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||pAe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(pAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(T3(n)):n=>a(T3(n))},Rlt=t=>{let e=gAe(t),r=t.file,o=!0,a;try{let n=tC.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size<u)e.end(tC.readFileSync(r));else{let A=0,p=Buffer.allocUnsafe(u);for(a=tC.openSync(r,\"r\");A<n.size;){let h=tC.readSync(a,p,0,u,A);A+=h,e.write(p.slice(0,h))}e.end()}o=!1}finally{if(o&&a)try{tC.closeSync(a)}catch{}}},Tlt=(t,e)=>{let r=new hAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"end\",u),tC.stat(a,(p,h)=>{if(p)A(p);else{let E=new klt.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},gAe=t=>new hAe(t)});var IAe=_((uUt,wAe)=>{\"use strict\";var Nlt=OE(),Nx=Ex(),mAe=eC(),yAe=Tx(),EAe=ve(\"path\");wAe.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 o=Nlt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return o.file&&o.sync?Llt(o,e):o.file?Olt(o,e,r):o.sync?Mlt(o,e):Ult(o,e)};var Llt=(t,e)=>{let r=new Nx.Sync(t),o=new mAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),CAe(r,e)},Olt=(t,e,r)=>{let o=new Nx(t),a=new mAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on(\"error\",A),a.on(\"close\",u),o.on(\"error\",A)});return N3(o,e),r?n.then(r,r):n},CAe=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?yAe({file:EAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},N3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return yAe({file:EAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>N3(t,e));t.add(r)}t.end()},Mlt=(t,e)=>{let r=new Nx.Sync(t);return CAe(r,e),r},Ult=(t,e)=>{let r=new Nx(t);return N3(r,e),r}});var L3=_((AUt,xAe)=>{\"use strict\";var _lt=OE(),BAe=Ex(),Al=ve(\"fs\"),vAe=eC(),DAe=Tx(),SAe=ve(\"path\"),PAe=GE();xAe.exports=(t,e,r)=>{let o=_lt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.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),o.sync?Hlt(o,e):jlt(o,e,r)};var Hlt=(t,e)=>{let r=new BAe.Sync(t),o=!0,a,n;try{try{a=Al.openSync(t.file,\"r+\")}catch(p){if(p.code===\"ENOENT\")a=Al.openSync(t.file,\"w+\");else throw p}let u=Al.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;n<u.size;n+=512){for(let E=0,I=0;E<512;E+=I){if(I=Al.readSync(a,A,E,A.length-E,n+E),n===0&&A[0]===31&&A[1]===139)throw new Error(\"cannot append to compressed archives\");if(!I)break e}let p=new PAe(A);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>u.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,qlt(t,r,n,a,e)}finally{if(o)try{Al.closeSync(a)}catch{}}},qlt=(t,e,r,o,a)=>{let n=new vAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),Glt(e,a)},jlt=(t,e,r)=>{e=Array.from(e);let o=new BAe(t),a=(u,A,p)=>{let h=(C,R)=>{C?Al.close(u,L=>p(C)):p(null,R)},E=0;if(A===0)return h(null,0);let I=0,v=Buffer.alloc(512),x=(C,R)=>{if(C)return h(C);if(I+=R,I<512&&R)return Al.read(u,v,I,v.length-I,E+I,x);if(E===0&&v[0]===31&&v[1]===139)return h(new Error(\"cannot append to compressed archives\"));if(I<512)return h(null,E);let L=new PAe(v);if(!L.cksumValid)return h(null,E);let U=512*Math.ceil(L.size/512);if(E+U+512>A||(E+=U+512,E>=A))return h(null,E);t.mtimeCache&&t.mtimeCache.set(L.path,L.mtime),I=0,Al.read(u,v,0,512,E,x)};Al.read(u,v,0,512,E,x)},n=new Promise((u,A)=>{o.on(\"error\",A);let p=\"r+\",h=(E,I)=>{if(E&&E.code===\"ENOENT\"&&p===\"r+\")return p=\"w+\",Al.open(t.file,p,h);if(E)return A(E);Al.fstat(I,(v,x)=>{if(v)return Al.close(I,()=>A(v));a(I,x.size,(C,R)=>{if(C)return A(C);let L=new vAe.WriteStream(t.file,{fd:I,start:R});o.pipe(L),L.on(\"error\",A),L.on(\"close\",u),bAe(o,e)})})};Al.open(t.file,p,h)});return r?n.then(r,r):n},Glt=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?DAe({file:SAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},bAe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return DAe({file:SAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>bAe(t,e));t.add(r)}t.end()}});var QAe=_((fUt,kAe)=>{\"use strict\";var Ylt=OE(),Wlt=L3();kAe.exports=(t,e,r)=>{let o=Ylt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.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),Klt(o),Wlt(o,e,r)};var Klt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var TAe=_((pUt,RAe)=>{var{promisify:FAe}=ve(\"util\"),vh=ve(\"fs\"),Vlt=t=>{if(!t)t={mode:511,fs:vh};else if(typeof t==\"object\")t={mode:511,fs:vh,...t};else if(typeof t==\"number\")t={mode:t,fs:vh};else if(typeof t==\"string\")t={mode:parseInt(t,8),fs:vh};else throw new TypeError(\"invalid options argument\");return t.mkdir=t.mkdir||t.fs.mkdir||vh.mkdir,t.mkdirAsync=FAe(t.mkdir),t.stat=t.stat||t.fs.stat||vh.stat,t.statAsync=FAe(t.stat),t.statSync=t.statSync||t.fs.statSync||vh.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||vh.mkdirSync,t};RAe.exports=Vlt});var LAe=_((hUt,NAe)=>{var Jlt=process.platform,{resolve:zlt,parse:Xlt}=ve(\"path\"),Zlt=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=zlt(t),Jlt===\"win32\"){let e=/[*|\"<>?:]/,{root:r}=Xlt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error(\"Illegal characters in path.\"),{path:t,code:\"EINVAL\"})}return t};NAe.exports=Zlt});var HAe=_((gUt,_Ae)=>{var{dirname:OAe}=ve(\"path\"),MAe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code===\"ENOENT\"?MAe(t,OAe(e),e):void 0),UAe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code===\"ENOENT\"?UAe(t,OAe(e),e):void 0}};_Ae.exports={findMade:MAe,findMadeSync:UAe}});var U3=_((dUt,jAe)=>{var{dirname:qAe}=ve(\"path\"),O3=(t,e,r)=>{e.recursive=!1;let o=qAe(t);return o===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 O3(o,e).then(n=>O3(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})})},M3=(t,e,r)=>{let o=qAe(t);if(e.recursive=!1,o===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 M3(t,e,M3(o,e,r));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};jAe.exports={mkdirpManual:O3,mkdirpManualSync:M3}});var WAe=_((mUt,YAe)=>{var{dirname:GAe}=ve(\"path\"),{findMade:$lt,findMadeSync:ect}=HAe(),{mkdirpManual:tct,mkdirpManualSync:rct}=U3(),nct=(t,e)=>(e.recursive=!0,GAe(t)===t?e.mkdirAsync(t,e):$lt(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code===\"ENOENT\")return tct(t,e);throw a}))),ict=(t,e)=>{if(e.recursive=!0,GAe(t)===t)return e.mkdirSync(t,e);let o=ect(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code===\"ENOENT\")return rct(t,e);throw a}};YAe.exports={mkdirpNative:nct,mkdirpNativeSync:ict}});var zAe=_((yUt,JAe)=>{var KAe=ve(\"fs\"),sct=process.version,_3=sct.replace(/^v/,\"\").split(\".\"),VAe=+_3[0]>10||+_3[0]==10&&+_3[1]>=12,oct=VAe?t=>t.mkdir===KAe.mkdir:()=>!1,act=VAe?t=>t.mkdirSync===KAe.mkdirSync:()=>!1;JAe.exports={useNative:oct,useNativeSync:act}});var rfe=_((EUt,tfe)=>{var rC=TAe(),nC=LAe(),{mkdirpNative:XAe,mkdirpNativeSync:ZAe}=WAe(),{mkdirpManual:$Ae,mkdirpManualSync:efe}=U3(),{useNative:lct,useNativeSync:cct}=zAe(),iC=(t,e)=>(t=nC(t),e=rC(e),lct(e)?XAe(t,e):$Ae(t,e)),uct=(t,e)=>(t=nC(t),e=rC(e),cct(e)?ZAe(t,e):efe(t,e));iC.sync=uct;iC.native=(t,e)=>XAe(nC(t),rC(e));iC.manual=(t,e)=>$Ae(nC(t),rC(e));iC.nativeSync=(t,e)=>ZAe(nC(t),rC(e));iC.manualSync=(t,e)=>efe(nC(t),rC(e));tfe.exports=iC});var cfe=_((CUt,lfe)=>{\"use strict\";var $l=ve(\"fs\"),qd=ve(\"path\"),Act=$l.lchown?\"lchown\":\"chown\",fct=$l.lchownSync?\"lchownSync\":\"chownSync\",ife=$l.lchown&&!process.version.match(/v1[1-9]+\\./)&&!process.version.match(/v10\\.[6-9]/),nfe=(t,e,r)=>{try{return $l[fct](t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},pct=(t,e,r)=>{try{return $l.chownSync(t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},hct=ife?(t,e,r,o)=>a=>{!a||a.code!==\"EISDIR\"?o(a):$l.chown(t,e,r,o)}:(t,e,r,o)=>o,H3=ife?(t,e,r)=>{try{return nfe(t,e,r)}catch(o){if(o.code!==\"EISDIR\")throw o;pct(t,e,r)}}:(t,e,r)=>nfe(t,e,r),gct=process.version,sfe=(t,e,r)=>$l.readdir(t,e,r),dct=(t,e)=>$l.readdirSync(t,e);/^v4\\./.test(gct)&&(sfe=(t,e,r)=>$l.readdir(t,r));var Lx=(t,e,r,o)=>{$l[Act](t,e,r,hct(t,e,r,a=>{o(a&&a.code!==\"ENOENT\"?a:null)}))},ofe=(t,e,r,o,a)=>{if(typeof e==\"string\")return $l.lstat(qd.resolve(t,e),(n,u)=>{if(n)return a(n.code!==\"ENOENT\"?n:null);u.name=e,ofe(t,u,r,o,a)});if(e.isDirectory())q3(qd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=qd.resolve(t,e.name);Lx(u,r,o,a)});else{let n=qd.resolve(t,e.name);Lx(n,r,o,a)}},q3=(t,e,r,o)=>{sfe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return o();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return o(a)}if(a||!n.length)return Lx(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Lx(t,e,r,o)}};n.forEach(h=>ofe(t,h,e,r,p))})},mct=(t,e,r,o)=>{if(typeof e==\"string\")try{let a=$l.lstatSync(qd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code===\"ENOENT\")return;throw a}e.isDirectory()&&afe(qd.resolve(t,e.name),r,o),H3(qd.resolve(t,e.name),r,o)},afe=(t,e,r)=>{let o;try{o=dct(t,{withFileTypes:!0})}catch(a){if(a.code===\"ENOENT\")return;if(a.code===\"ENOTDIR\"||a.code===\"ENOTSUP\")return H3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>mct(t,a,e,r)),H3(t,e,r)};lfe.exports=q3;q3.sync=afe});var pfe=_((wUt,j3)=>{\"use strict\";var ufe=rfe(),ec=ve(\"fs\"),Ox=ve(\"path\"),Afe=cfe(),Wc=qE(),Mx=class extends Error{constructor(e,r){super(\"Cannot extract through symbolic link\"),this.path=r,this.symlink=e}get name(){return\"SylinkError\"}},Ux=class extends Error{constructor(e,r){super(r+\": Cannot cd into '\"+e+\"'\"),this.path=e,this.code=r}get name(){return\"CwdError\"}},_x=(t,e)=>t.get(Wc(e)),J1=(t,e,r)=>t.set(Wc(e),r),yct=(t,e)=>{ec.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Ux(t,r&&r.code||\"ENOTDIR\")),e(r)})};j3.exports=(t,e,r)=>{t=Wc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u==\"number\"&&typeof A==\"number\"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,E=e.unlink,I=e.cache,v=Wc(e.cwd),x=(L,U)=>{L?r(L):(J1(I,t,!0),U&&p?Afe(U,u,A,J=>x(J)):n?ec.chmod(t,a,r):r())};if(I&&_x(I,t)===!0)return x();if(t===v)return yct(t,x);if(h)return ufe(t,{mode:a}).then(L=>x(null,L),x);let R=Wc(Ox.relative(v,t)).split(\"/\");Hx(v,R,a,I,E,v,null,x)};var Hx=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Wc(Ox.resolve(t+\"/\"+p));if(_x(o,h))return Hx(h,e,r,o,a,n,u,A);ec.mkdir(h,r,ffe(h,e,r,o,a,n,u,A))},ffe=(t,e,r,o,a,n,u,A)=>p=>{p?ec.lstat(t,(h,E)=>{if(h)h.path=h.path&&Wc(h.path),A(h);else if(E.isDirectory())Hx(t,e,r,o,a,n,u,A);else if(a)ec.unlink(t,I=>{if(I)return A(I);ec.mkdir(t,r,ffe(t,e,r,o,a,n,u,A))});else{if(E.isSymbolicLink())return A(new Mx(t,t+\"/\"+e.join(\"/\")));A(p)}}):(u=u||t,Hx(t,e,r,o,a,n,u,A))},Ect=t=>{let e=!1,r=\"ENOTDIR\";try{e=ec.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Ux(t,r)}};j3.exports.sync=(t,e)=>{t=Wc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n==\"number\"&&typeof u==\"number\"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,I=Wc(e.cwd),v=L=>{J1(E,t,!0),L&&A&&Afe.sync(L,n,u),a&&ec.chmodSync(t,o)};if(E&&_x(E,t)===!0)return v();if(t===I)return Ect(I),v();if(p)return v(ufe.sync(t,o));let C=Wc(Ox.relative(I,t)).split(\"/\"),R=null;for(let L=C.shift(),U=I;L&&(U+=\"/\"+L);L=C.shift())if(U=Wc(Ox.resolve(U)),!_x(E,U))try{ec.mkdirSync(U,o),R=R||U,J1(E,U,!0)}catch{let te=ec.lstatSync(U);if(te.isDirectory()){J1(E,U,!0);continue}else if(h){ec.unlinkSync(U),ec.mkdirSync(U,o),R=R||U,J1(E,U,!0);continue}else if(te.isSymbolicLink())return new Mx(U,U+\"/\"+C.join(\"/\"))}return v(R)}});var Y3=_((IUt,hfe)=>{var G3=Object.create(null),{hasOwnProperty:Cct}=Object.prototype;hfe.exports=t=>(Cct.call(G3,t)||(G3[t]=t.normalize(\"NFKD\")),G3[t])});var yfe=_((BUt,mfe)=>{var gfe=ve(\"assert\"),wct=Y3(),Ict=YE(),{join:dfe}=ve(\"path\"),Bct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,vct=Bct===\"win32\";mfe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split(\"/\").slice(0,-1).reduce((I,v)=>(I.length&&(v=dfe(I[I.length-1],v)),I.push(v||\"/\"),I),[]),o=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(I=>t.get(I)),dirs:[...E.dirs].map(I=>t.get(I))}},n=h=>{let{paths:E,dirs:I}=a(h);return E.every(v=>v[0]===h)&&I.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:E,dirs:I}=e.get(h),v=new Set;return E.forEach(x=>{let C=t.get(x);gfe.equal(C[0],h),C.length===1?t.delete(x):(C.shift(),typeof C[0]==\"function\"?v.add(C[0]):C[0].forEach(R=>v.add(R)))}),I.forEach(x=>{let C=t.get(x);gfe(C[0]instanceof Set),C[0].size===1&&C.length===1?t.delete(x):C[0].size===1?(C.shift(),v.add(C[0])):C[0].delete(h)}),o.delete(h),v.forEach(x=>u(x)),!0};return{check:n,reserve:(h,E)=>{h=vct?[\"win32 parallelization disabled\"]:h.map(v=>wct(Ict(dfe(v))).toLowerCase());let I=new Set(h.map(v=>r(v)).reduce((v,x)=>v.concat(x)));return e.set(E,{dirs:I,paths:h}),h.forEach(v=>{let x=t.get(v);x?x.push(E):t.set(v,[E])}),I.forEach(v=>{let x=t.get(v);x?x[x.length-1]instanceof Set?x[x.length-1].add(E):x.push(new Set([E])):t.set(v,[new Set([E])])}),u(E)}}}});var wfe=_((vUt,Cfe)=>{var Dct=process.platform,Sct=Dct===\"win32\",Pct=global.__FAKE_TESTING_FS__||ve(\"fs\"),{O_CREAT:bct,O_TRUNC:xct,O_WRONLY:kct,UV_FS_O_FILEMAP:Efe=0}=Pct.constants,Qct=Sct&&!!Efe,Fct=512*1024,Rct=Efe|xct|bct|kct;Cfe.exports=Qct?t=>t<Fct?Rct:\"w\":()=>\"w\"});var e_=_((DUt,Nfe)=>{\"use strict\";var Tct=ve(\"assert\"),Nct=Rx(),vn=ve(\"fs\"),Lct=eC(),Wf=ve(\"path\"),Ffe=pfe(),Ife=e3(),Oct=yfe(),Mct=t3(),fl=qE(),Uct=YE(),_ct=Y3(),Bfe=Symbol(\"onEntry\"),V3=Symbol(\"checkFs\"),vfe=Symbol(\"checkFs2\"),Gx=Symbol(\"pruneCache\"),J3=Symbol(\"isReusable\"),tc=Symbol(\"makeFs\"),z3=Symbol(\"file\"),X3=Symbol(\"directory\"),Yx=Symbol(\"link\"),Dfe=Symbol(\"symlink\"),Sfe=Symbol(\"hardlink\"),Pfe=Symbol(\"unsupported\"),bfe=Symbol(\"checkPath\"),Dh=Symbol(\"mkdir\"),To=Symbol(\"onError\"),qx=Symbol(\"pending\"),xfe=Symbol(\"pend\"),sC=Symbol(\"unpend\"),W3=Symbol(\"ended\"),K3=Symbol(\"maybeClose\"),Z3=Symbol(\"skip\"),z1=Symbol(\"doChown\"),X1=Symbol(\"uid\"),Z1=Symbol(\"gid\"),$1=Symbol(\"checkedCwd\"),Rfe=ve(\"crypto\"),Tfe=wfe(),Hct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,e2=Hct===\"win32\",qct=(t,e)=>{if(!e2)return vn.unlink(t,e);let r=t+\".DELETE.\"+Rfe.randomBytes(16).toString(\"hex\");vn.rename(t,r,o=>{if(o)return e(o);vn.unlink(r,e)})},jct=t=>{if(!e2)return vn.unlinkSync(t);let e=t+\".DELETE.\"+Rfe.randomBytes(16).toString(\"hex\");vn.renameSync(t,e),vn.unlinkSync(e)},kfe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Qfe=t=>_ct(Uct(fl(t))).toLowerCase(),Gct=(t,e)=>{e=Qfe(e);for(let r of t.keys()){let o=Qfe(r);(o===e||o.indexOf(e+\"/\")===0)&&t.delete(r)}},Yct=t=>{for(let e of t.keys())t.delete(e)},t2=class extends Nct{constructor(e){if(e||(e={}),e.ondone=r=>{this[W3]=!0,this[K3]()},super(e),this[$1]=!1,this.reservations=Oct(),this.transform=typeof e.transform==\"function\"?e.transform:null,this.writable=!0,this.readable=!1,this[qx]=0,this[W3]=!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||e2,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=fl(Wf.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[Bfe](r))}warn(e,r,o={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(o.recoverable=!1),super.warn(e,r,o)}[K3](){this[W3]&&this[qx]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\"))}[bfe](e){if(this.strip){let r=fl(e.path).split(\"/\");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join(\"/\"),e.type===\"Link\"){let o=fl(e.linkpath).split(\"/\");if(o.length>=this.strip)e.linkpath=o.slice(this.strip).join(\"/\");else return!1}}if(!this.preservePaths){let r=fl(e.path),o=r.split(\"/\");if(o.includes(\"..\")||e2&&/^[a-z]:\\.\\.$/i.test(o[0]))return this.warn(\"TAR_ENTRY_ERROR\",\"path contains '..'\",{entry:e,path:r}),!1;let[a,n]=Mct(r);a&&(e.path=n,this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Wf.isAbsolute(e.path)?e.absolute=fl(Wf.resolve(e.path)):e.absolute=fl(Wf.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:fl(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}=Wf.win32.parse(e.absolute);e.absolute=r+Ife.encode(e.absolute.substr(r.length));let{root:o}=Wf.win32.parse(e.path);e.path=o+Ife.encode(e.path.substr(o.length))}return!0}[Bfe](e){if(!this[bfe](e))return e.resume();switch(Tct.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[V3](e);case\"CharacterDevice\":case\"BlockDevice\":case\"FIFO\":default:return this[Pfe](e)}}[To](e,r){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:r}),this[sC](),r.resume())}[Dh](e,r,o){Ffe(fl(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},o)}[z1](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}[X1](e){return kfe(this.uid,e.uid,this.processUid)}[Z1](e){return kfe(this.gid,e.gid,this.processGid)}[z3](e,r){let o=e.mode&4095||this.fmode,a=new Lct.WriteStream(e.absolute,{flags:Tfe(e.size),mode:o,autoClose:!1});a.on(\"error\",p=>{a.fd&&vn.close(a.fd,()=>{}),a.write=()=>!0,this[To](p,e),r()});let n=1,u=p=>{if(p){a.fd&&vn.close(a.fd,()=>{}),this[To](p,e),r();return}--n===0&&vn.close(a.fd,h=>{h?this[To](h,e):this[sC](),r()})};a.on(\"finish\",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let I=e.atime||new Date,v=e.mtime;vn.futimes(E,I,v,x=>x?vn.utimes(h,I,v,C=>u(C&&x)):u())}if(this[z1](e)){n++;let I=this[X1](e),v=this[Z1](e);vn.fchown(E,I,v,x=>x?vn.chown(h,I,v,C=>u(C&&x)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on(\"error\",p=>{this[To](p,e),r()}),e.pipe(A)),A.pipe(a)}[X3](e,r){let o=e.mode&4095||this.dmode;this[Dh](e.absolute,o,a=>{if(a){this[To](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[sC](),e.resume())};e.mtime&&!this.noMtime&&(n++,vn.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[z1](e)&&(n++,vn.chown(e.absolute,this[X1](e),this[Z1](e),u)),u()})}[Pfe](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Dfe](e,r){this[Yx](e,e.linkpath,\"symlink\",r)}[Sfe](e,r){let o=fl(Wf.resolve(this.cwd,e.linkpath));this[Yx](e,o,\"link\",r)}[xfe](){this[qx]++}[sC](){this[qx]--,this[K3]()}[Z3](e){this[sC](),e.resume()}[J3](e,r){return e.type===\"File\"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!e2}[V3](e){this[xfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[vfe](e,o))}[Gx](e){e.type===\"SymbolicLink\"?Yct(this.dirCache):e.type!==\"Directory\"&&Gct(this.dirCache,e.absolute)}[vfe](e,r){this[Gx](e);let o=A=>{this[Gx](e),r(A)},a=()=>{this[Dh](this.cwd,this.dmode,A=>{if(A){this[To](A,e),o();return}this[$1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=fl(Wf.dirname(e.absolute));if(A!==this.cwd)return this[Dh](A,this.dmode,p=>{if(p){this[To](p,e),o();return}u()})}u()},u=()=>{vn.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[Z3](e),o();return}if(A||this[J3](e,p))return this[tc](null,e,o);if(p.isDirectory()){if(e.type===\"Directory\"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=I=>this[tc](I,e,o);return h?vn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return vn.rmdir(e.absolute,h=>this[tc](h,e,o))}if(e.absolute===this.cwd)return this[tc](null,e,o);qct(e.absolute,h=>this[tc](h,e,o))})};this[$1]?n():a()}[tc](e,r,o){if(e){this[To](e,r),o();return}switch(r.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[z3](r,o);case\"Link\":return this[Sfe](r,o);case\"SymbolicLink\":return this[Dfe](r,o);case\"Directory\":case\"GNUDumpDir\":return this[X3](r,o)}}[Yx](e,r,o,a){vn[o](r,e.absolute,n=>{n?this[To](n,e):(this[sC](),e.resume()),a()})}},jx=t=>{try{return[null,t()]}catch(e){return[e,null]}},$3=class extends t2{[tc](e,r){return super[tc](e,r,()=>{})}[V3](e){if(this[Gx](e),!this[$1]){let n=this[Dh](this.cwd,this.dmode);if(n)return this[To](n,e);this[$1]=!0}if(e.absolute!==this.cwd){let n=fl(Wf.dirname(e.absolute));if(n!==this.cwd){let u=this[Dh](n,this.dmode);if(u)return this[To](u,e)}}let[r,o]=jx(()=>vn.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[Z3](e);if(r||this[J3](e,o))return this[tc](null,e);if(o.isDirectory()){if(e.type===\"Directory\"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?jx(()=>{vn.chmodSync(e.absolute,e.mode)}):[];return this[tc](A,e)}let[n]=jx(()=>vn.rmdirSync(e.absolute));this[tc](n,e)}let[a]=e.absolute===this.cwd?[]:jx(()=>jct(e.absolute));this[tc](a,e)}[z3](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{vn.closeSync(n)}catch(h){p=h}(A||p)&&this[To](A||p,e),r()},n;try{n=vn.openSync(e.absolute,Tfe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on(\"error\",A=>this[To](A,e)),e.pipe(u)),u.on(\"data\",A=>{try{vn.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on(\"end\",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{vn.futimesSync(n,h,E)}catch(I){try{vn.utimesSync(e.absolute,h,E)}catch{p=I}}}if(this[z1](e)){let h=this[X1](e),E=this[Z1](e);try{vn.fchownSync(n,h,E)}catch(I){try{vn.chownSync(e.absolute,h,E)}catch{p=p||I}}}a(p)})}[X3](e,r){let o=e.mode&4095||this.dmode,a=this[Dh](e.absolute,o);if(a){this[To](a,e),r();return}if(e.mtime&&!this.noMtime)try{vn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[z1](e))try{vn.chownSync(e.absolute,this[X1](e),this[Z1](e))}catch{}r(),e.resume()}[Dh](e,r){try{return Ffe.sync(fl(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(o){return o}}[Yx](e,r,o,a){try{vn[o+\"Sync\"](r,e.absolute),a(),e.resume()}catch(n){return this[To](n,e)}}};t2.Sync=$3;Nfe.exports=t2});var _fe=_((SUt,Ufe)=>{\"use strict\";var Wct=OE(),Wx=e_(),Ofe=ve(\"fs\"),Mfe=eC(),Lfe=ve(\"path\"),t_=YE();Ufe.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 o=Wct(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Kct(o,e),o.file&&o.sync?Vct(o):o.file?Jct(o,r):o.sync?zct(o):Xct(o)};var Kct=(t,e)=>{let r=new Map(e.map(n=>[t_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||Lfe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(Lfe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(t_(n)):n=>a(t_(n))},Vct=t=>{let e=new Wx.Sync(t),r=t.file,o=Ofe.statSync(r),a=t.maxReadSize||16*1024*1024;new Mfe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},Jct=(t,e)=>{let r=new Wx(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"close\",u),Ofe.stat(a,(p,h)=>{if(p)A(p);else{let E=new Mfe.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},zct=t=>new Wx.Sync(t),Xct=t=>new Wx(t)});var Hfe=_(us=>{\"use strict\";us.c=us.create=IAe();us.r=us.replace=L3();us.t=us.list=Tx();us.u=us.update=QAe();us.x=us.extract=_fe();us.Pack=Ex();us.Unpack=e_();us.Parse=Rx();us.ReadEntry=rx();us.WriteEntry=A3();us.Header=GE();us.Pax=ix();us.types=KU()});var r_,qfe,Sh,r2,n2,jfe=Et(()=>{r_=$e(id()),qfe=ve(\"worker_threads\"),Sh=Symbol(\"kTaskInfo\"),r2=class{constructor(e,r){this.fn=e;this.limit=(0,r_.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},n2=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,r_.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let o=this.workers.pop();o?o.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new qfe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return e.on(\"message\",r=>{if(!e[Sh])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");e[Sh].resolve(r),e[Sh]=null,e.unref(),this.workers.push(e)}),e.on(\"error\",r=>{e[Sh]?.reject(r),e[Sh]=null}),e.on(\"exit\",r=>{r!==0&&e[Sh]?.reject(new Error(`Worker exited with code ${r}`)),e[Sh]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[Sh]={resolve:o,reject:a},r.postMessage(e)})})}}});var Yfe=_((kUt,Gfe)=>{var n_;Gfe.exports.getContent=()=>(typeof n_>\"u\"&&(n_=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),n_)});var Xi={};Vt(Xi,{convertToZip:()=>tut,convertToZipWorker:()=>o_,extractArchiveTo:()=>zfe,getDefaultTaskPool:()=>Vfe,getTaskPoolForConfiguration:()=>Jfe,makeArchiveFromDirectory:()=>eut});function Zct(t,e){switch(t){case\"async\":return new r2(o_,{poolSize:e});case\"workers\":return new n2((0,s_.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function Vfe(){return typeof i_>\"u\"&&(i_=Zct(\"workers\",Ji.availableParallelism())),i_}function Jfe(t){return typeof t>\"u\"?Vfe():ol($ct,t,()=>{let e=t.get(\"taskPoolMode\"),r=t.get(\"taskPoolConcurrency\");switch(e){case\"async\":return new r2(o_,{poolSize:r});case\"workers\":return new n2((0,s_.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function o_(t){let{tmpFile:e,tgz:r,compressionLevel:o,extractBufferOpts:a}=t,n=new zi(e,{create:!0,level:o,stats:Ea.makeDefaultStats()}),u=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await zfe(u,n,a),n.saveAndClose(),e}async function eut(t,{baseFs:e=new Tn,prefixPath:r=Bt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new zi(null,{level:o});else{let A=await oe.mktempPromise(),p=V.join(A,\"archive.zip\");n=new zi(p,{create:!0,level:o})}let u=V.resolve(Bt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function tut(t,e={}){let r=await oe.mktempPromise(),o=V.join(r,\"archive.zip\"),a=e.compressionLevel??e.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??Jfe(e.configuration)).run({tmpFile:o,tgz:t,compressionLevel:a,extractBufferOpts:n}),new zi(o,{level:e.compressionLevel})}async function*rut(t){let e=new Kfe.default.Parse,r=new Wfe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on(\"entry\",o=>{r.write(o)}),e.on(\"error\",o=>{r.destroy(o)}),e.on(\"close\",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function zfe(t,e,{stripComponents:r=0,prefixPath:o=Bt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let u=n.path.split(/\\//g);return!!(u.some(A=>A===\"..\")||u.length<=r)}for await(let n of rut(t)){if(a(n))continue;let u=V.normalize(ue.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(u.length<=r)continue;let A=u.slice(r).join(\"/\"),p=V.join(o,A),h=420;switch((n.type===\"Directory\"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case\"Directory\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"OldFile\":case\"File\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.writeFileSync(p,await Vy(n),{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"SymbolicLink\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break}}return e}var Wfe,Kfe,s_,i_,$ct,Xfe=Et(()=>{Ye();St();nA();Wfe=ve(\"stream\"),Kfe=$e(Hfe());jfe();ql();s_=$e(Yfe());$ct=new WeakMap});var $fe=_((a_,Zfe)=>{(function(t,e){typeof a_==\"object\"?Zfe.exports=e():typeof define==\"function\"&&define.amd?define(e):t.treeify=e()})(a_,function(){function t(a,n){var u=n?\"\\u2514\":\"\\u251C\";return a?u+=\"\\u2500 \":u+=\"\\u2500\\u2500\\u2510\",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]==\"function\"||u.push(A);return u}function r(a,n,u,A,p,h,E){var I=\"\",v=0,x,C,R=A.slice(0);if(R.push([n,u])&&A.length>0&&(A.forEach(function(U,J){J>0&&(I+=(U[1]?\" \":\"\\u2502\")+\"  \"),!C&&U[0]===n&&(C=!0)}),I+=t(a,u)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(I+=\": \"+n),C&&(I+=\" (circular ref.)\"),E(I)),!C&&typeof n==\"object\"){var L=e(n,h);L.forEach(function(U){x=++v===L.length,r(U,n[U],x,R,p,h,E)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!=\"function\"?u:!1;r(\".\",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A=\"\";return r(\".\",a,!1,[],n,u,function(p){A+=p+`\n`}),A},o})});var $s={};Vt($s,{emitList:()=>nut,emitTree:()=>npe,treeNodeToJson:()=>rpe,treeNodeToTreeify:()=>tpe});function tpe(t,{configuration:e}){let r={},o=0,a=(n,u)=>{let A=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of A){if(!h)continue;let{label:E,value:I,children:v}=h,x=[];typeof E<\"u\"&&x.push(yd(e,E,2)),typeof I<\"u\"&&x.push(Mt(e,I[0],I[1])),x.length===0&&x.push(yd(e,`${p}`,2));let C=x.join(\": \").trim(),R=`\\0${o++}\\0`,L=u[`${R}${C}`]={};typeof v<\"u\"&&a(v,L)}};if(typeof t.children>\"u\")throw new Error(\"The root node must only contain children\");return a(t.children,r),r}function rpe(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 Ed(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)u&&(a[iut(n)]=e(u));return typeof r.value>\"u\"?a:{value:Ed(r.value[0],r.value[1]),children:a}};return e(t)}function nut(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));npe({children:a},{configuration:e,stdout:r,json:o})}function npe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)A&&r.write(`${JSON.stringify(rpe(A))}\n`);return}let n=(0,epe.asTree)(tpe(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 u=0;u<2;++u)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 iut(t){return typeof t==\"string\"?t.replace(/^\\0[0-9]+\\0/,\"\"):t}var epe,ipe=Et(()=>{epe=$e($fe());jl()});function i2(t){let e=t.match(sut);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 spe,l_,c_,Kx,Lr,sut,u_=Et(()=>{Ye();St();St();nA();spe=ve(\"crypto\"),l_=$e(ve(\"fs\"));Yl();nh();ql();bo();c_=Jy(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),Kx=Jy(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Lr=class{constructor(e,{configuration:r,immutable:o=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,spe.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let{cacheSpec:n,cacheKey:u}=Lr.getCacheKey(r);this.cacheSpec=n,this.cacheKey=u}static async find(e,{immutable:r,check:o}={}){let a=new Lr(e.get(\"cacheFolder\"),{configuration:e,immutable:r,check:o});return await a.setup(),a}static getCacheKey(e){let r=e.get(\"compressionLevel\"),o=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[Kx,o].join(\"\"),cacheSpec:o}}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`${lE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=i2(r).hash.slice(0,10);return`${lE(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:o}=i2(e);if(r===null||r<c_)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<Kx&&a===\"always\"||o!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(e,r){return this.mirrorCwd===null?V.resolve(this.cwd,this.getVersionFilename(e)):r===null?V.resolve(this.cwd,this.getVersionFilename(e)):V.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?V.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await oe.existsPromise(this.cwd))throw new zt(56,\"Cache path does not exist.\")}else{await oe.mkdirPromise(this.cwd,{recursive:!0});let e=V.resolve(this.cwd,\".gitignore\");await oe.changeFilePromise(e,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await oe.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...u}){let A=this.getLocatorMirrorPath(e),p=new Tn,h=()=>{let he=new zi,Be=V.join(Bt.root,nM(e));return he.mkdirSync(Be,{recursive:!0}),he.writeJsonSync(V.join(Be,dr.manifest),{name:fn(e),mocked:!0}),he},E=async(he,{isColdHit:Be,controlPath:we=null})=>{if(we===null&&u.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?i2(r).cacheKey:this.cacheKey,Ee=!u.skipIntegrityCheck||!r?`${g}/${await NP(he)}`:r;if(we!==null){let le=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await NP(we)}`:r;if(Ee!==le)throw new zt(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let Se=null;switch(r!==null&&Ee!==r&&(this.check?Se=\"throw\":i2(r).cacheKey!==i2(Ee).cacheKey?Se=\"update\":Se=this.configuration.get(\"checksumBehavior\")),Se){case null:case\"update\":return{isValid:!0,hash:Ee};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new zt(18,\"The remote archive doesn't match the expected checksum\")}},I=async he=>{if(!n)throw new Error(`Cache check required but no loader configured for ${qr(this.configuration,e)}`);let Be=await n(),we=Be.getRealPath();Be.saveAndClose(),await oe.chmodPromise(we,420);let g=await E(he,{controlPath:we,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},v=async()=>{if(A===null||!await oe.existsPromise(A)){let he=await n(),Be=he.getRealPath();return he.saveAndClose(),{source:\"loader\",path:Be}}return{source:\"mirror\",path:A}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${qr(this.configuration,e)}`);if(this.immutable)throw new zt(56,`Cache entry required but missing for ${qr(this.configuration,e)}`);let{path:he,source:Be}=await v(),{hash:we}=await E(he,{isColdHit:!0}),g=this.getLocatorPath(e,we),Ee=[];Be!==\"mirror\"&&A!==null&&Ee.push(async()=>{let le=`${A}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let le=`${g}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,g)});let Se=u.mirrorWriteOnly?A??g:g;return await Promise.all(Ee.map(le=>le())),[!1,Se,we]},C=async()=>{let Be=(async()=>{let we=u.unstablePackages?.has(e.locatorHash),g=we||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,Ee=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Se=!!u.mockedPackages?.has(e.locatorHash)&&(!this.check||!Ee),le=Se||Ee,ne=le?o:a;if(ne&&ne(),le){let ee=null,Ie=g;if(!Se)if(this.check)ee=await I(Ie);else{let Fe=await E(Ie,{isColdHit:!1});if(Fe.isValid)ee=Fe.hash;else return x()}return[Se,Ie,ee]}else{if(this.immutable&&we)throw new zt(56,`Cache entry required but missing for ${qr(this.configuration,e)}; consider defining ${de.pretty(this.configuration,\"supportedArchitectures\",de.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let he;he=this.mutexes.get(e.locatorHash);)await he;let[R,L,U]=await C();R||this.markedFiles.add(L);let J,te=R?()=>h():()=>new zi(L,{baseFs:p,readOnly:!0}),ae=new iy(()=>EL(()=>J=te(),he=>`Failed to open the cache entry for ${qr(this.configuration,e)}: ${he}`),V),fe=new Uu(L,{baseFs:ae,pathUtils:V}),ce=()=>{J?.discardAndClose()},me=u.unstablePackages?.has(e.locatorHash)?null:U;return[fe,ce,me]}},sut=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var Vx,ope=Et(()=>{Vx=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(Vx||{})});var out,oC,A_=Et(()=>{St();Nl();Qf();bo();out=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.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)=>_P({protocol:\"npm:\",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=V.join(e.cwd,dr.lockfile);if(!oe.existsSync(o))return;let a=await oe.readFilePromise(o,\"utf8\"),n=Ki(a);if(Object.hasOwn(n,\"__metadata\"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=s1(A);if(!p){r.reportWarning(14,`Failed to parse the string \"${A}\" into a proper descriptor`);continue}let h=xa(p.range)?In(p,`npm:${p.range}`):p,{version:E,resolved:I}=n[A];if(!I)continue;let v;for(let[C,R]of out){let L=I.match(C);if(L){v=R(E,...L);break}}if(!v){r.reportWarning(14,`${jn(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${I}\")`);continue}let x=h;try{let C=Bd(h.range),R=s1(C.selector,!0);R&&(x=R)}catch{}u.set(h.descriptorHash,Qs(x,v))}}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,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){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=$O(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var AA,ape=Et(()=>{Yl();O1();jl();AA=class extends Xs{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;XI(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(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,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o==\"function\"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o==\"function\"?o:a)()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${o}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,o){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${Mt(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 yU(r,{configuration:this.configuration,json:!1})}}});var aC,f_=Et(()=>{bo();aC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(OP(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,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(OP(e).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return o}}});function Kf(){}function aut(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;n<u;n++){var h=e[n];if(h.removed){if(h.value=t.join(o.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var I=e[n-1];e[n-1]=e[n],e[n]=I}}else{if(!h.added&&a){var E=r.slice(A,A+h.count);E=E.map(function(x,C){var R=o[p+C];return R.length>x.length?R:x}),h.value=t.join(E)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value==\"string\"&&(v.added||v.removed)&&t.equals(\"\",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function lut(t){return{newPos:t.newPos,components:t.components.slice(0)}}function cut(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 upe(t,e,r){return r=cut(r,{ignoreWhitespace:!0}),m_.diff(t,e,r)}function uut(t,e,r){return y_.diff(t,e,r)}function Jx(t){return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?Jx=function(e){return typeof e}:Jx=function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Jx(t)}function p_(t){return put(t)||hut(t)||gut(t)||dut()}function put(t){if(Array.isArray(t))return h_(t)}function hut(t){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(t))return Array.from(t)}function gut(t,e){if(!!t){if(typeof t==\"string\")return h_(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 h_(t,e)}}function h_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function dut(){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 g_(t,e,r,o,a){e=e||[],r=r||[],o&&(t=o(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var u;if(mut.call(t)===\"[object Array]\"){for(e.push(t),u=new Array(t.length),r.push(u),n=0;n<t.length;n+=1)u[n]=g_(t[n],e,r,o,a);return e.pop(),r.pop(),u}if(t&&t.toJSON&&(t=t.toJSON()),Jx(t)===\"object\"&&t!==null){e.push(t),u={},r.push(u);var A=[],p;for(p in t)t.hasOwnProperty(p)&&A.push(p);for(A.sort(),n=0;n<A.length;n+=1)p=A[n],u[p]=g_(t[p],e,r,o,p);e.pop(),r.pop()}else u=t;return u}function Ape(t,e,r,o,a,n,u){u||(u={}),typeof u.context>\"u\"&&(u.context=4);var A=uut(r,o,u);if(!A)return;A.push({value:\"\",lines:[]});function p(U){return U.map(function(J){return\" \"+J})}for(var h=[],E=0,I=0,v=[],x=1,C=1,R=function(J){var te=A[J],ae=te.lines||te.value.replace(/\\n$/,\"\").split(`\n`);if(te.lines=ae,te.added||te.removed){var fe;if(!E){var ce=A[J-1];E=x,I=C,ce&&(v=u.context>0?p(ce.lines.slice(-u.context)):[],E-=v.length,I-=v.length)}(fe=v).push.apply(fe,p_(ae.map(function(le){return(te.added?\"+\":\"-\")+le}))),te.added?C+=ae.length:x+=ae.length}else{if(E)if(ae.length<=u.context*2&&J<A.length-2){var me;(me=v).push.apply(me,p_(p(ae)))}else{var he,Be=Math.min(ae.length,u.context);(he=v).push.apply(he,p_(p(ae.slice(0,Be))));var we={oldStart:E,oldLines:x-E+Be,newStart:I,newLines:C-I+Be,lines:v};if(J>=A.length-2&&ae.length<=u.context){var g=/\\n$/.test(r),Ee=/\\n$/.test(o),Se=ae.length==0&&v.length>we.oldLines;!g&&Se&&r.length>0&&v.splice(we.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!Se||!Ee)&&v.push(\"\\\\ No newline at end of file\")}h.push(we),E=0,I=0,v=[]}x+=ae.length,C+=ae.length}},L=0;L<A.length;L++)R(L);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var n3t,lpe,cpe,m_,y_,Aut,fut,mut,s2,d_,E_=Et(()=>{Kf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o==\"function\"&&(a=o,o={}),this.options=o;var n=this;function u(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 A=r.length,p=e.length,h=1,E=A+p;o.maxEditLength&&(E=Math.min(E,o.maxEditLength));var I=[{newPos:-1,components:[]}],v=this.extractCommon(I[0],r,e,0);if(I[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function x(){for(var R=-1*h;R<=h;R+=2){var L=void 0,U=I[R-1],J=I[R+1],te=(J?J.newPos:0)-R;U&&(I[R-1]=void 0);var ae=U&&U.newPos+1<A,fe=J&&0<=te&&te<p;if(!ae&&!fe){I[R]=void 0;continue}if(!ae||fe&&U.newPos<J.newPos?(L=lut(J),n.pushComponent(L.components,void 0,!0)):(L=U,L.newPos++,n.pushComponent(L.components,!0,void 0)),te=n.extractCommon(L,r,e,R),L.newPos+1>=A&&te+1>=p)return u(aut(n,L.components,r,e,n.useLongestToken));I[R]=L}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();x()||R()},0)})();else for(;h<=E;){var C=x();if(C)return C}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1<n&&p+1<u&&this.equals(r[A+1],o[p+1]);)A++,p++,h++;return h&&e.components.push({count:h}),e.newPos=A,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=[],o=0;o<e.length;o++)e[o]&&r.push(e[o]);return r},castInput:function(e){return e},tokenize:function(e){return e.split(\"\")},join:function(e){return e.join(\"\")}};n3t=new Kf;lpe=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,cpe=/\\S/,m_=new Kf;m_.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!cpe.test(t)&&!cpe.test(e)};m_.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]&&lpe.test(e[r])&&lpe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};y_=new Kf;y_.tokenize=function(t){var e=[],r=t.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var o=0;o<r.length;o++){var a=r[o];o%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};Aut=new Kf;Aut.tokenize=function(t){return t.split(/(\\S.+?[.!?])(?=\\s+|$)/)};fut=new Kf;fut.tokenize=function(t){return t.split(/([{}:;,]|\\s+)/)};mut=Object.prototype.toString,s2=new Kf;s2.useLongestToken=!0;s2.tokenize=y_.tokenize;s2.castInput=function(t){var e=this.options,r=e.undefinedReplacement,o=e.stringifyReplacer,a=o===void 0?function(n,u){return typeof u>\"u\"?r:u}:o;return typeof t==\"string\"?t:JSON.stringify(g_(t,null,null,a),a,\"  \")};s2.equals=function(t,e){return Kf.prototype.equals.call(s2,t.replace(/,([\\r\\n])/g,\"$1\"),e.replace(/,([\\r\\n])/g,\"$1\"))};d_=new Kf;d_.tokenize=function(t){return t.slice()};d_.join=d_.removeEmpty=function(t){return t}});var ppe=_((s3t,fpe)=>{var yut=Hl(),Eut=pE(),Cut=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,wut=/^\\w*$/;function Iut(t,e){if(yut(t))return!1;var r=typeof t;return r==\"number\"||r==\"symbol\"||r==\"boolean\"||t==null||Eut(t)?!0:wut.test(t)||!Cut.test(t)||e!=null&&t in Object(e)}fpe.exports=Iut});var dpe=_((o3t,gpe)=>{var hpe=_S(),But=\"Expected a function\";function C_(t,e){if(typeof t!=\"function\"||e!=null&&typeof e!=\"function\")throw new TypeError(But);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(C_.Cache||hpe),r}C_.Cache=hpe;gpe.exports=C_});var ype=_((a3t,mpe)=>{var vut=dpe(),Dut=500;function Sut(t){var e=vut(t,function(o){return r.size===Dut&&r.clear(),o}),r=e.cache;return e}mpe.exports=Sut});var w_=_((l3t,Epe)=>{var Put=ype(),but=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,xut=/\\\\(\\\\)?/g,kut=Put(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(\"\"),t.replace(but,function(r,o,a,n){e.push(a?n.replace(xut,\"$1\"):o||r)}),e});Epe.exports=kut});var jd=_((c3t,Cpe)=>{var Qut=Hl(),Fut=ppe(),Rut=w_(),Tut=N1();function Nut(t,e){return Qut(t)?t:Fut(t,e)?[t]:Rut(Tut(t))}Cpe.exports=Nut});var lC=_((u3t,wpe)=>{var Lut=pE(),Out=1/0;function Mut(t){if(typeof t==\"string\"||Lut(t))return t;var e=t+\"\";return e==\"0\"&&1/t==-Out?\"-0\":e}wpe.exports=Mut});var zx=_((A3t,Ipe)=>{var Uut=jd(),_ut=lC();function Hut(t,e){e=Uut(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[_ut(e[r++])];return r&&r==o?t:void 0}Ipe.exports=Hut});var I_=_((f3t,vpe)=>{var qut=rP(),jut=jd(),Gut=_I(),Bpe=il(),Yut=lC();function Wut(t,e,r,o){if(!Bpe(t))return t;e=jut(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a<n;){var p=Yut(e[a]),h=r;if(p===\"__proto__\"||p===\"constructor\"||p===\"prototype\")return t;if(a!=u){var E=A[p];h=o?o(E,p,A):void 0,h===void 0&&(h=Bpe(E)?E:Gut(e[a+1])?[]:{})}qut(A,p,h),A=A[p]}return t}vpe.exports=Wut});var Spe=_((p3t,Dpe)=>{var Kut=zx(),Vut=I_(),Jut=jd();function zut(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var u=e[o],A=Kut(t,u);r(A,u)&&Vut(n,Jut(u,t),A)}return n}Dpe.exports=zut});var bpe=_((h3t,Ppe)=>{function Xut(t,e){return t!=null&&e in Object(t)}Ppe.exports=Xut});var B_=_((g3t,xpe)=>{var Zut=jd(),$ut=OI(),eAt=Hl(),tAt=_I(),rAt=YS(),nAt=lC();function iAt(t,e,r){e=Zut(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var u=nAt(e[o]);if(!(n=t!=null&&r(t,u)))break;t=t[u]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&rAt(a)&&tAt(u,a)&&(eAt(t)||$ut(t)))}xpe.exports=iAt});var Qpe=_((d3t,kpe)=>{var sAt=bpe(),oAt=B_();function aAt(t,e){return t!=null&&oAt(t,e,sAt)}kpe.exports=aAt});var Rpe=_((m3t,Fpe)=>{var lAt=Spe(),cAt=Qpe();function uAt(t,e){return lAt(t,e,function(r,o){return cAt(t,o)})}Fpe.exports=uAt});var Ope=_((y3t,Lpe)=>{var Tpe=pd(),AAt=OI(),fAt=Hl(),Npe=Tpe?Tpe.isConcatSpreadable:void 0;function pAt(t){return fAt(t)||AAt(t)||!!(Npe&&t&&t[Npe])}Lpe.exports=pAt});var _pe=_((E3t,Upe)=>{var hAt=jS(),gAt=Ope();function Mpe(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=gAt),a||(a=[]);++n<u;){var A=t[n];e>0&&r(A)?e>1?Mpe(A,e-1,r,o,a):hAt(a,A):o||(a[a.length]=A)}return a}Upe.exports=Mpe});var qpe=_((C3t,Hpe)=>{var dAt=_pe();function mAt(t){var e=t==null?0:t.length;return e?dAt(t,1):[]}Hpe.exports=mAt});var v_=_((w3t,jpe)=>{var yAt=qpe(),EAt=AL(),CAt=fL();function wAt(t){return CAt(EAt(t,void 0,yAt),t+\"\")}jpe.exports=wAt});var D_=_((I3t,Gpe)=>{var IAt=Rpe(),BAt=v_(),vAt=BAt(function(t,e){return t==null?{}:IAt(t,e)});Gpe.exports=vAt});var Xx,Ype=Et(()=>{Yl();Xx=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,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new zt(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 zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var Qi,S_=Et(()=>{Yl();Qi=class extends Xs{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r==\"function\"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r==\"function\"?r:o)()}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 Wpe,cC,P_=Et(()=>{St();Wpe=$e(RP());fE();vd();jl();nh();Qf();bo();cC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ot.tryFind(this.cwd)??new Ot,this.relativeCwd=V.relative(this.project.cwd,this.cwd)||Bt.dot;let e=this.manifest.name?this.manifest.name:eA(null,`${this.computeCandidateName()}-${zs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=In(e,`${Xn.protocol}${this.relativeCwd}`),this.anchoredLocator=Qs(e,`${Xn.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let o=await(0,Wpe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});o.sort(),await o.reduce(async(a,n)=>{let u=V.resolve(this.cwd,ue.toPortablePath(n)),A=await oe.existsPromise(V.join(u,\"package.json\"));await a,A&&this.workspacesCwds.add(u)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${a1(this.project.configuration,this)} (${Mt(this.project.configuration,V.join(this.cwd,dr.manifest),yt.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return e}accepts(e){let r=e.indexOf(\":\"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Xn.protocol&&V.normalize(a)===this.relativeCwd||o===Xn.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=xa(a);return n?o===Xn.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\":`${V.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&i1(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let o of r.workspacesCwds){let a=this.project.workspacesByCwd.get(o);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=V.join(this.cwd,Ot.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)}\n`;await oe.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function kAt({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,peerWarnings:A=[],volatileDescriptors:p=new Set}){let h=new Map,E=[],I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,L=new Map(t.workspaces.map(ce=>{let me=ce.anchoredLocator.locatorHash,he=o.get(me);if(typeof he>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[me,e1(he)]})),U=()=>{let ce=oe.mktempSync(),me=V.join(ce,\"stacktrace.log\"),he=String(E.length+1).length,Be=E.map((we,g)=>`${`${g+1}.`.padStart(he,\" \")} ${ba(we)}\n`).join(\"\");throw oe.writeFileSync(me,Be),oe.detachTemp(ce),new zt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(me)}`)},J=ce=>{let me=r.get(ce.descriptorHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let he=o.get(me);if(!he)throw new Error(\"Assertion failed: The package could not be found\");return he},te=(ce,me,he,{top:Be,optional:we})=>{E.length>1e3&&U(),E.push(me);let g=ae(ce,me,he,{top:Be,optional:we});return E.pop(),g},ae=(ce,me,he,{top:Be,optional:we})=>{if(we||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=o.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${qr(t.configuration,me)}) should have been registered`);let Ee=[],Se=[],le=[],ne=[],ee=[];for(let Fe of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Fe.identHash)&&g.locatorHash!==Be)continue;if(bf(Fe))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");p.delete(Fe.descriptorHash);let At=we;if(!At){let Te=g.dependenciesMeta.get(fn(Fe));if(typeof Te<\"u\"){let Je=Te.get(null);typeof Je<\"u\"&&Je.optional&&(At=!0)}}let H=r.get(Fe.descriptorHash);if(!H)throw new Error(`Assertion failed: The resolution (${jn(t.configuration,Fe)}) should have been registered`);let at=L.get(H)||o.get(H);if(!at)throw new Error(`Assertion failed: The package (${H}, resolved from ${jn(t.configuration,Fe)}) should have been registered`);if(at.peerDependencies.size===0){te(Fe,at,new Map,{top:Be,optional:At});continue}let Re,ke,xe=new Set,He;Se.push(()=>{Re=tM(Fe,me.locatorHash),ke=rM(at,me.locatorHash),g.dependencies.delete(Fe.identHash),g.dependencies.set(Re.identHash,Re),r.set(Re.descriptorHash,ke.locatorHash),e.set(Re.descriptorHash,Re),o.set(ke.locatorHash,ke),Ee.push([at,Re,ke])}),le.push(()=>{He=new Map;for(let Te of ke.peerDependencies.values()){let Je=g.dependencies.get(Te.identHash);if(!Je&&n1(me,Te)&&(ce.identHash===me.identHash?Je=ce:(Je=In(me,ce.range),e.set(Je.descriptorHash,Je),r.set(Je.descriptorHash,me.locatorHash),p.delete(Je.descriptorHash))),(!Je||Je.range===\"missing:\")&&ke.dependencies.has(Te.identHash)){ke.peerDependencies.delete(Te.identHash);continue}Je||(Je=In(Te,\"missing:\")),ke.dependencies.set(Je.identHash,Je),bf(Je)&&md(x,Je.descriptorHash).add(ke.locatorHash),I.set(Je.identHash,Je),Je.range===\"missing:\"&&xe.add(Je.identHash),He.set(Te.identHash,he.get(Te.identHash)??ke.locatorHash)}ke.dependencies=new Map(ks(ke.dependencies,([Te,Je])=>fn(Je)))}),ne.push(()=>{if(!o.has(ke.locatorHash))return;let Te=h.get(at.locatorHash);typeof Te==\"number\"&&Te>=2&&U();let Je=h.get(at.locatorHash),qe=typeof Je<\"u\"?Je+1:1;h.set(at.locatorHash,qe),te(Re,ke,He,{top:Be,optional:At}),h.set(at.locatorHash,qe-1)}),ee.push(()=>{let Te=g.dependencies.get(Fe.identHash);if(typeof Te>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency to have been turned into a dependency\");let Je=r.get(Te.descriptorHash);if(typeof Je>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");if(md(R,Je).add(me.locatorHash),!!o.has(ke.locatorHash)){for(let qe of ke.peerDependencies.values()){let b=He.get(qe.identHash);if(typeof b>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency ident to be registered\");Yy(Wy(C,b),fn(qe)).push(ke.locatorHash)}for(let qe of xe)ke.dependencies.delete(qe)}})}for(let Fe of[...Se,...le])Fe();let Ie;do{Ie=!0;for(let[Fe,At,H]of Ee){let at=Wy(v,Fe.locatorHash),Re=zs(...[...H.dependencies.values()].map(Te=>{let Je=Te.range!==\"missing:\"?r.get(Te.descriptorHash):\"missing:\";if(typeof Je>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${jn(t.configuration,Te)} to have been registered`);return Je===Be?`${Je} (top)`:Je}),At.identHash),ke=at.get(Re);if(typeof ke>\"u\"){at.set(Re,At);continue}if(ke===At)continue;o.delete(H.locatorHash),e.delete(At.descriptorHash),r.delete(At.descriptorHash),a.delete(H.locatorHash);let xe=x.get(At.descriptorHash)||[],He=[g.locatorHash,...xe];x.delete(At.descriptorHash);for(let Te of He){let Je=o.get(Te);typeof Je>\"u\"||(Je.dependencies.get(At.identHash).descriptorHash!==ke.descriptorHash&&(Ie=!1),Je.dependencies.set(At.identHash,ke))}}}while(!Ie);for(let Fe of[...ne,...ee])Fe()};for(let ce of t.workspaces){let me=ce.anchoredLocator;p.delete(ce.anchoredDescriptor.descriptorHash),te(ce.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}let fe=new Map;for(let[ce,me]of R){let he=o.get(ce);if(typeof he>\"u\")throw new Error(\"Assertion failed: Expected the root to be registered\");let Be=C.get(ce);if(!(typeof Be>\"u\"))for(let we of me){let g=o.get(we);if(!(typeof g>\"u\")&&!!t.tryWorkspaceByLocator(g))for(let[Ee,Se]of Be){let le=Js(Ee);if(g.peerDependencies.has(le.identHash))continue;let ne=`p${zs(we,Ee,ce).slice(0,5)}`;u.set(ne,{subject:we,requested:le,rootRequester:ce,allRequesters:Se});let ee=he.dependencies.get(le.identHash);if(typeof ee<\"u\"){let Ie=J(ee),Fe=Ie.version??\"0.0.0\",At=new Set;for(let at of Se){let Re=o.get(at);if(typeof Re>\"u\")throw new Error(\"Assertion failed: Expected the link to be registered\");let ke=Re.peerDependencies.get(le.identHash);if(typeof ke>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");At.add(ke.range)}if(![...At].every(at=>{if(at.startsWith(Xn.protocol)){if(!t.tryWorkspaceByLocator(Ie))return!1;at=at.slice(Xn.protocol.length),(at===\"^\"||at===\"~\")&&(at=\"*\")}return kf(Fe,at)})){let at=ol(fe,Ie.locatorHash,()=>({type:2,requested:le,subject:Ie,dependents:new Map,requesters:new Map,links:new Map,version:Fe,hash:`p${Ie.locatorHash.slice(0,5)}`}));at.dependents.set(g.locatorHash,g),at.requesters.set(he.locatorHash,he);for(let Re of Se)at.links.set(Re,o.get(Re));A.push({type:1,subject:g,requested:le,requester:he,version:Fe,hash:ne,requirementCount:Se.length})}}else he.peerDependenciesMeta.get(Ee)?.optional||A.push({type:0,subject:g,requested:le,requester:he,hash:ne})}}}A.push(...fe.values())}function QAt(t,e){let r=wL(t.peerWarnings,\"type\"),o=r[2]?.map(n=>{let u=Array.from(n.links.values(),E=>{let I=t.storedPackages.get(E.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let v=I.peerDependencies.get(n.requested.identHash);if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return v.range}),A=n.links.size>1?\"and other dependencies request\":\"requests\",p=sM(u),h=p?cE(t.configuration,p):Mt(t.configuration,\"but they have non-overlapping ranges!\",\"redBright\");return`${cs(t.configuration,n.requested)} is listed by your project with version ${o1(t.configuration,n.version)}, which doesn't satisfy what ${cs(t.configuration,n.requesters.values().next().value)} (${Mt(t.configuration,n.hash,yt.CODE)}) ${A} (${h}).`})??[],a=r[0]?.map(n=>`${qr(t.configuration,n.subject)} doesn't provide ${cs(t.configuration,n.requested)} (${Mt(t.configuration,n.hash,yt.CODE)}), requested by ${cs(t.configuration,n.requester)}.`)??[];e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met; run ${Mt(t.configuration,\"yarn explain peer-requirements <hash>\",yt.CODE)} for details, where ${Mt(t.configuration,\"<hash>\",yt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of ks(o,u=>Xy.default(u)))e.reportWarning(60,n);for(let n of ks(a,u=>Xy.default(u)))e.reportWarning(2,n)})}var Zx,$x,ek,Jpe,k_,x_,Q_,tk,DAt,SAt,Kpe,PAt,bAt,xAt,pl,b_,rk,Vpe,Pt,zpe=Et(()=>{St();St();Nl();qt();Zx=ve(\"crypto\");E_();$x=$e(D_()),ek=$e(id()),Jpe=$e(zn()),k_=ve(\"util\"),x_=$e(ve(\"v8\")),Q_=$e(ve(\"zlib\"));u_();S1();A_();f_();fE();uM();Yl();Ype();O1();S_();vd();P_();WP();jl();nh();ql();vb();BU();Qf();bo();tk=Jy(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),DAt=3,SAt=/ *, */g,Kpe=/\\/$/,PAt=32,bAt=(0,k_.promisify)(Q_.default.gzip),xAt=(0,k_.promisify)(Q_.default.gunzip),pl=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))(pl||{}),b_={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},rk=(o=>(o[o.NotProvided=0]=\"NotProvided\",o[o.NotCompatible=1]=\"NotCompatible\",o[o.NotCompatibleAggregate=2]=\"NotCompatibleAggregate\",o))(rk||{}),Vpe=t=>zs(`${DAt}`,t),Pt=class{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.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 it(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,oe.existsSync(V.join(n,dr.manifest))){o=n;break}a=V.dirname(n)}let u=new Pt(e.projectCwd,{configuration:e});Ke.telemetry?.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),Ke.telemetry?.reportWorkspaceCount(u.workspaces.length),Ke.telemetry?.reportDependencyCount(u.workspaces.reduce((C,R)=>C+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Mt(e,u.cwd,yt.PATH),E=Mt(e,V.relative(u.cwd,o),yt.PATH),I=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- 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 it(`The nearest package directory (${Mt(e,o,yt.PATH)}) doesn't seem to be part of the project declared in ${Mt(e,u.cwd,yt.PATH)}.\n\n${[I,v,x].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=V.join(this.cwd,dr.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(oe.existsSync(e)){let o=await oe.readFilePromise(e,\"utf8\");this.lockFileChecksum=Vpe(o);let a=Ki(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<tk;for(let A of Object.keys(a)){if(A===\"__metadata\")continue;let p=a[A];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=xf(p.resolution,!0),E=new Ot;E.load(p,{yamlCompatibilityMode:!0});let I=E.version,v=E.languageName||r,x=p.linkType.toUpperCase(),C=p.conditions??null,R=E.dependencies,L=E.peerDependencies,U=E.dependenciesMeta,J=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let fe=typeof u<\"u\"&&!p.checksum.includes(\"/\")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,fe)}let ae={...h,version:I,languageName:v,linkType:x,conditions:C,dependencies:R,peerDependencies:L,dependenciesMeta:U,peerDependenciesMeta:J,bin:te};this.originalPackages.set(ae.locatorHash,ae);for(let fe of A.split(SAt)){let ce=ih(fe);n<=6&&(ce=this.configuration.normalizeDependency(ce),ce=In(ce,ce.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(ce.descriptorHash,ce),this.storedResolutions.set(ce.descriptorHash,h.locatorHash)}}}else o.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,ek.default)(4),o=async(a,n)=>{if(e.has(n))return a;e.add(n);let u=new cC(n,{project:this});await r(()=>u.setup());let A=a.then(()=>{this.addWorkspace(u)});return Array.from(u.workspacesCwds).reduce(o,A)};await o(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${cs(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){V.isAbsolute(e)||(e=V.resolve(this.cwd,e)),e=V.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 o of this.workspaces)V.relative(o.cwd,e).startsWith(\"../\")||r&&r.cwd.length>=o.cwd.length||(r=o);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 (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Xn.protocol)){let o=e.range.slice(Xn.protocol.length);if(o!==\"^\"&&o!==\"~\"&&o!==\"*\"&&!xa(o))return this.tryWorkspaceByCwd(o)}let r=this.tryWorkspaceByIdent(e);return r===null||(bf(e)&&(e=t1(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${jn(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Hc(e)&&(e=r1(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${qr(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 o=new Set(this.storedResolutions.values());typeof r<\"u\"&&!o.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in e){this.deleteLocator(e.locatorHash);for(let[r,o]of this.storedResolutions)o===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[o,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(o)}for(let o of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(o,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(o.locatorHash);let n=r.get(o.locatorHash);if(n){r.delete(o.locatorHash);for(let u of n)this.deleteDescriptor(u)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)bf(o)&&e.dependencies.set(r,t1(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!Jpe.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new Qi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(Kpe,\"\")!==e.replace(Kpe,\"\"))continue;return A}}return null}async loadUserConfig(){let e=V.join(this.cwd,\".pnp.cjs\");await oe.existsPromise(e)&&Df(e).setup();let r=V.join(this.cwd,\"yarn.config.cjs\");return await oe.existsPromise(r)?Df(r):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[u,A]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,A,this,n,A,{resolver:r,resolveOptions:o});if(!n1(A,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,o);n.dependencies.set(u,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),o=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new oC(a);await n.setup(this,{report:e.report});let u=e.lockfileOnly?[new Xx(a)]:[n,a],A=new Dd([new aC(a),...u]),p=new Dd([...u]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:A}:{project:this,report:e.report,resolver:A,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,L=new Map,U=this.topLevelWorkspace.anchoredLocator,J=new Set,te=[],ae=M4(),fe=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Xs.progressViaTitle(),async le=>{let ne=async H=>{let at=await Ky(async()=>await A.resolve(H,E),He=>`${qr(this.configuration,H)}: ${He}`);if(!i1(H,at))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${qr(this.configuration,H)} to ${qr(this.configuration,at)})`);C.set(at.locatorHash,at),!r.delete(at.locatorHash)&&!this.tryWorkspaceByLocator(at)&&o.push(at);let ke=await this.preparePackage(at,{resolver:A,resolveOptions:E}),xe=Uc([...ke.dependencies.values()].map(He=>At(He)));return te.push(xe),xe.catch(()=>{}),v.set(ke.locatorHash,ke),ke},ee=async H=>{let at=R.get(H.locatorHash);if(typeof at<\"u\")return at;let Re=Promise.resolve().then(()=>ne(H));return R.set(H.locatorHash,Re),Re},Ie=async(H,at)=>{let Re=await At(at);return I.set(H.descriptorHash,H),x.set(H.descriptorHash,Re.locatorHash),Re},Fe=async H=>{le.setTitle(jn(this.configuration,H));let at=this.resolutionAliases.get(H.descriptorHash);if(typeof at<\"u\")return Ie(H,this.storedDescriptors.get(at));let Re=A.getResolutionDependencies(H,E),ke=Object.fromEntries(await Uc(Object.entries(Re).map(async([Te,Je])=>{let qe=A.bindDescriptor(Je,U,E),b=await At(qe);return J.add(b.locatorHash),[Te,b]}))),He=(await Ky(async()=>await A.getCandidates(H,ke,E),Te=>`${jn(this.configuration,H)}: ${Te}`))[0];if(typeof He>\"u\")throw new zt(82,`${jn(this.configuration,H)}: No candidates found`);if(e.checkResolutions){let{locators:Te}=await p.getSatisfying(H,ke,[He],{...E,resolver:p});if(!Te.find(Je=>Je.locatorHash===He.locatorHash))throw new zt(78,`Invalid resolution ${ZI(this.configuration,H,He)}`)}return I.set(H.descriptorHash,H),x.set(H.descriptorHash,He.locatorHash),ee(He)},At=H=>{let at=L.get(H.descriptorHash);if(typeof at<\"u\")return at;I.set(H.descriptorHash,H);let Re=Promise.resolve().then(()=>Fe(H));return L.set(H.descriptorHash,Re),Re};for(let H of this.workspaces){let at=H.anchoredDescriptor;te.push(At(at))}for(;te.length>0;){let H=[...te];te.length=0,await Uc(H)}});let ce=sl(r.values(),le=>this.tryWorkspaceByLocator(le)?sl.skip:le);if(o.length>0||ce.length>0){let le=new Set(this.workspaces.flatMap(H=>{let at=v.get(H.anchoredLocator.locatorHash);if(!at)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(at.dependencies.values(),Re=>{let ke=x.get(Re.descriptorHash);if(!ke)throw new Error(\"Assertion failed: The resolution should have been registered\");return ke})})),ne=H=>le.has(H.locatorHash)?\"0\":\"1\",ee=H=>ba(H),Ie=ks(o,[ne,ee]),Fe=ks(ce,[ne,ee]),At=e.report.getRecommendedLength();Ie.length>0&&e.report.reportInfo(85,`${Mt(this.configuration,\"+\",yt.ADDED)} ${cP(this.configuration,Ie,At)}`),Fe.length>0&&e.report.reportInfo(85,`${Mt(this.configuration,\"-\",yt.REMOVED)} ${cP(this.configuration,Fe,At)}`)}let me=new Set(this.resolutionAliases.values()),he=new Set(v.keys()),Be=new Set,we=new Map,g=[];kAt({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:he,peerRequirements:we,peerWarnings:g,allDescriptors:I,allResolutions:x,allPackages:v});for(let le of J)he.delete(le);for(let le of me)I.delete(le),x.delete(le);let Ee=new Set,Se=new Set;for(let le of v.values())le.conditions!=null&&(!he.has(le.locatorHash)||(qP(le,fe)||(qP(le,ae)&&e.report.reportWarningOnce(77,`${qr(this.configuration,le)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Mt(this.configuration,\"supportedArchitectures\",yt.SETTING)} setting`),Se.add(le.locatorHash)),Ee.add(le.locatorHash)));this.storedResolutions=x,this.storedDescriptors=I,this.storedPackages=v,this.accessibleLocators=Be,this.conditionalLocators=Ee,this.disabledLocators=Se,this.originalPackages=C,this.optionalBuilds=he,this.peerRequirements=we,this.peerWarnings=g}async fetchEverything({cache:e,report:r,fetcher:o,mode:a,persistProject:n=!0}){let u={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},A=o||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:A,report:r,cacheOptions:u},h=Array.from(new Set(ks(this.storedResolutions.values(),[C=>{let R=this.storedPackages.get(C);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");return ba(R)}])));a===\"update-lockfile\"&&(h=h.filter(C=>!this.storedChecksums.has(C)));let E=!1,I=Xs.progressViaCounter(h.length);await r.reportProgress(I);let v=(0,ek.default)(PAt);if(await Uc(h.map(C=>v(async()=>{let R=this.storedPackages.get(C);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");if(Hc(R))return;let L;try{L=await A.fetch(R,p)}catch(U){U.message=`${qr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}L.checksum!=null?this.storedChecksums.set(R.locatorHash,L.checksum):this.storedChecksums.delete(R.locatorHash),L.releaseFs&&L.releaseFs()}).finally(()=>{I.tick()}))),E)throw E;let x=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||x){let R=(await Promise.all([...r.cacheMisses].map(async ce=>{let me=this.storedPackages.get(ce),he=this.storedChecksums.get(ce)??null,Be=e.getLocatorPath(me,he);return(await oe.statPromise(Be)).size}))).reduce((ce,me)=>ce+me,0)-(x?.size??0),L=r.cacheMisses.size,U=x?.count??0,J=`${nP(L,{zero:\"No new packages\",one:\"A package was\",more:`${Mt(this.configuration,L,yt.NUMBER)} packages were`})} added to the project`,te=`${nP(U,{zero:\"none were\",one:\"one was\",more:`${Mt(this.configuration,U,yt.NUMBER)} were`})} removed`,ae=R!==0?` (${Mt(this.configuration,R,yt.SIZE_DIFF)})`:\"\",fe=U>0?L>0?`${J}, and ${te}${ae}.`:`${J}, but ${te}${ae}.`:`${J}${ae}.`;r.reportInfo(13,fe)}}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(le=>{let ne=le.makeInstaller(h),ee=le.getCustomDataKey(),Ie=this.linkersCustomData.get(ee);return typeof Ie<\"u\"&&ne.attachCustomData(Ie),[le,ne]})),I=new Map,v=new Map,x=new Map,C=new Map(await Uc([...this.accessibleLocators].map(async le=>{let ne=this.storedPackages.get(le);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");return[le,await u.fetch(ne,A)]}))),R=[],L=new Set,U=[];for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(typeof ne>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let ee=C.get(ne.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let Ie=[],Fe=H=>{Ie.push(H)},At=this.tryWorkspaceByLocator(ne);if(At!==null){let H=[],{scripts:at}=At.manifest;for(let ke of[\"preinstall\",\"install\",\"postinstall\"])at.has(ke)&&H.push({type:0,script:ke});try{for(let[ke,xe]of E)if(ke.supportsPackage(ne,h)&&(await xe.installPackage(ne,ee,{holdFetchResult:Fe})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).catch(()=>{}).then(()=>{ee.releaseFs?.()}))}let Re=V.join(ee.packageFs.getRealPath(),ee.prefixPath);v.set(ne.locatorHash,Re),!Hc(ne)&&H.length>0&&x.set(ne.locatorHash,{buildDirectives:H,buildLocations:[Re]})}else{let H=p.find(ke=>ke.supportsPackage(ne,h));if(!H)throw new zt(12,`${qr(this.configuration,ne)} isn't supported by any available linker`);let at=E.get(H);if(!at)throw new Error(\"Assertion failed: The installer should have been registered\");let Re;try{Re=await at.installPackage(ne,ee,{holdFetchResult:Fe})}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).then(()=>{}).then(()=>{ee.releaseFs?.()}))}I.set(ne.locatorHash,H),v.set(ne.locatorHash,Re.packageLocation),Re.buildRequest&&Re.packageLocation&&(Re.buildRequest.skipped?(L.add(ne.locatorHash),this.skippedBuilds.has(ne.locatorHash)||U.push([ne,Re.buildRequest.explain])):x.set(ne.locatorHash,{buildDirectives:Re.buildRequest.directives,buildLocations:[Re.packageLocation]}))}}let J=new Map;for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");let ee=this.tryWorkspaceByLocator(ne)!==null,Ie=async(Fe,At)=>{let H=v.get(ne.locatorHash);if(typeof H>\"u\")throw new Error(`Assertion failed: The package (${qr(this.configuration,ne)}) should have been registered`);let at=[];for(let Re of ne.dependencies.values()){let ke=this.storedResolutions.get(Re.descriptorHash);if(typeof ke>\"u\")throw new Error(`Assertion failed: The resolution (${jn(this.configuration,Re)}, from ${qr(this.configuration,ne)})should have been registered`);let xe=this.storedPackages.get(ke);if(typeof xe>\"u\")throw new Error(`Assertion failed: The package (${ke}, resolved from ${jn(this.configuration,Re)}) should have been registered`);let He=this.tryWorkspaceByLocator(xe)===null?I.get(ke):null;if(typeof He>\"u\")throw new Error(`Assertion failed: The package (${ke}, resolved from ${jn(this.configuration,Re)}) should have been registered`);He===Fe||He===null?v.get(xe.locatorHash)!==null&&at.push([Re,xe]):!ee&&H!==null&&Yy(J,ke).push(H)}H!==null&&await At.attachInternalDependencies(ne,at)};if(ee)for(let[Fe,At]of E)Fe.supportsPackage(ne,h)&&await Ie(Fe,At);else{let Fe=I.get(ne.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The linker should have been found\");let At=E.get(Fe);if(!At)throw new Error(\"Assertion failed: The installer should have been registered\");await Ie(Fe,At)}}for(let[le,ne]of J){let ee=this.storedPackages.get(le);if(!ee)throw new Error(\"Assertion failed: The package should have been registered\");let Ie=I.get(ee.locatorHash);if(!Ie)throw new Error(\"Assertion failed: The linker should have been found\");let Fe=E.get(Ie);if(!Fe)throw new Error(\"Assertion failed: The installer should have been registered\");await Fe.attachExternalDependents(ee,ne)}let te=new Map;for(let[le,ne]of E){let ee=await ne.finalizeInstall();for(let Ie of ee?.records??[])Ie.buildRequest.skipped?(L.add(Ie.locator.locatorHash),this.skippedBuilds.has(Ie.locator.locatorHash)||U.push([Ie.locator,Ie.buildRequest.explain])):x.set(Ie.locator.locatorHash,{buildDirectives:Ie.buildRequest.directives,buildLocations:Ie.buildLocations});typeof ee?.customData<\"u\"&&te.set(le.getCustomDataKey(),ee.customData)}if(this.linkersCustomData=te,await Uc(R),a===\"skip-build\")return;for(let[,le]of ks(U,([ne])=>ba(ne)))le(r);let ae=new Set(this.storedPackages.keys()),fe=new Set(x.keys());for(let le of fe)ae.delete(le);let ce=(0,Zx.createHash)(\"sha512\");ce.update(process.versions.node),await this.configuration.triggerHook(le=>le.globalHashGeneration,this,le=>{ce.update(\"\\0\"),ce.update(le)});let me=ce.digest(\"hex\"),he=new Map,Be=le=>{let ne=he.get(le.locatorHash);if(typeof ne<\"u\")return ne;let ee=this.storedPackages.get(le.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let Ie=(0,Zx.createHash)(\"sha512\");Ie.update(le.locatorHash),he.set(le.locatorHash,\"<recursive>\");for(let Fe of ee.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(typeof At>\"u\")throw new Error(`Assertion failed: The resolution (${jn(this.configuration,Fe)}) should have been registered`);let H=this.storedPackages.get(At);if(typeof H>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");Ie.update(Be(H))}return ne=Ie.digest(\"hex\"),he.set(le.locatorHash,ne),ne},we=(le,ne)=>{let ee=(0,Zx.createHash)(\"sha512\");ee.update(me),ee.update(Be(le));for(let Ie of ne)ee.update(Ie);return ee.digest(\"hex\")},g=new Map,Ee=!1,Se=le=>{let ne=new Set([le.locatorHash]);for(let ee of ne){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");for(let Fe of Ie.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(!At)throw new Error(`Assertion failed: The resolution (${jn(this.configuration,Fe)}) should have been registered`);if(At!==le.locatorHash&&fe.has(At))return!1;let H=this.storedPackages.get(At);if(!H)throw new Error(\"Assertion failed: The package should have been registered\");let at=this.tryWorkspaceByLocator(H);if(at){if(at.anchoredLocator.locatorHash!==le.locatorHash&&fe.has(at.anchoredLocator.locatorHash))return!1;ne.add(at.anchoredLocator.locatorHash)}ne.add(At)}}return!0};for(;fe.size>0;){let le=fe.size,ne=[];for(let ee of fe){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");if(!Se(Ie))continue;let Fe=x.get(Ie.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The build directive should have been registered\");let At=we(Ie,Fe.buildLocations);if(this.storedBuildState.get(Ie.locatorHash)===At){g.set(Ie.locatorHash,At),fe.delete(ee);continue}Ee||(await this.persistInstallStateFile(),Ee=!0),this.storedBuildState.has(Ie.locatorHash)?r.reportInfo(8,`${qr(this.configuration,Ie)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${qr(this.configuration,Ie)} must be built because it never has been before or the last one failed`);let H=Fe.buildLocations.map(async at=>{if(!V.isAbsolute(at))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${at})`);for(let Re of Fe.buildDirectives){let ke=`# This file contains the result of Yarn building a package (${ba(Ie)})\n`;switch(Re.type){case 0:ke+=`# Script name: ${Re.script}\n`;break;case 1:ke+=`# Script code: ${Re.script}\n`;break}let xe=null;if(!await oe.mktempPromise(async Te=>{let Je=V.join(Te,\"build.log\"),{stdout:qe,stderr:b}=this.configuration.getSubprocessStreams(Je,{header:ke,prefix:qr(this.configuration,Ie),report:r}),w;try{switch(Re.type){case 0:w=await Wb(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:qe,stderr:b});break;case 1:w=await EU(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:qe,stderr:b});break}}catch(F){b.write(F.stack),w=1}if(qe.end(),b.end(),w===0)return!0;oe.detachTemp(Te);let P=`${qr(this.configuration,Ie)} couldn't be built successfully (exit code ${Mt(this.configuration,w,yt.NUMBER)}, logs can be found here: ${Mt(this.configuration,Je,yt.PATH)})`,y=this.optionalBuilds.has(Ie.locatorHash);return y?r.reportInfo(9,P):r.reportError(9,P),Kce&&r.reportFold(ue.fromPortablePath(Je),oe.readFileSync(Je,\"utf8\")),y}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(at=>{fe.delete(ee),at.every(Re=>Re.status===\"fulfilled\"&&Re.value===!0)&&g.set(Ie.locatorHash,At)}))}if(await Uc(ne),le===fe.size){let ee=Array.from(fe).map(Ie=>{let Fe=this.storedPackages.get(Ie);if(!Fe)throw new Error(\"Assertion failed: The package should have been registered\");return qr(this.configuration,Fe)}).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: ${ee})`);break}}this.storedBuildState=g,this.skippedBuilds=L}async installWithNewReport(e,r){return(await Nt.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\");Ke.telemetry?.reportInstall(r);let o=!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,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),o=!0}})}),o)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,I]of E)for(let v of I)v.status=\"inactive\";let n=V.join(this.cwd,dr.lockfile),u=null;if(e.immutable)try{u=await oe.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new zt(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()=>{QAt(this,e.report);for(let[,E]of a)for(let[,I]of E)for(let v of I)if(v.userProvided){let x=Mt(this.configuration,v,yt.PACKAGE_EXTENSION);switch(v.status){case\"inactive\":e.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":e.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(u!==null){let E=_g(u,this.generateLockfile());if(E!==u){let I=Ape(n,n,u,E,void 0,void 0,{maxEditLength:100});if(I){e.report.reportSeparator();for(let v of I.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let x of v.lines)x.startsWith(\"+\")?e.report.reportError(28,Mt(this.configuration,x,yt.ADDED)):x.startsWith(\"-\")?e.report.reportError(28,Mt(this.configuration,x,yt.REMOVED)):e.report.reportInfo(null,Mt(this.configuration,x,\"grey\"))}e.report.reportSeparator()}throw new zt(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,I]of E)for(let v of I)v.userProvided&&v.status===\"active\"&&Ke.telemetry?.reportPackageExtension(Ed(v,yt.PACKAGE_EXTENSION));await e.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(e)});let A=e.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(A.map(async E=>LP(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 ${Mt(this.configuration,\"mode=update-lockfile\",yt.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(A.map(async I=>LP(I,{cwd:this.cwd})));for(let I=0;I<A.length;++I)p[I]!==E[I]&&e.report.reportError(64,`The checksum for ${A[I]} 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,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,u]of this.storedResolutions.entries()){let A=e.get(u);A||e.set(u,A=new Set),A.add(n)}let r={},{cacheKey:o}=Lr.getCacheKey(this.configuration);r.__metadata={version:tk,cacheKey:o};for(let[n,u]of e.entries()){let A=this.originalPackages.get(n);if(!A)continue;let p=[];for(let I of u){let v=this.storedDescriptors.get(I);if(!v)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(v)}let h=p.map(I=>Pa(I)).sort().join(\", \"),E=new Ot;E.version=A.linkType===\"HARD\"?A.version:\"0.0.0-use.local\",E.languageName=A.languageName,E.dependencies=new Map(A.dependencies),E.peerDependencies=new Map(A.peerDependencies),E.dependenciesMeta=new Map(A.dependenciesMeta),E.peerDependenciesMeta=new Map(A.peerDependenciesMeta),E.bin=new Map(A.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:A.linkType.toLowerCase(),resolution:ba(A),checksum:this.storedChecksums.get(A.locatorHash),conditions:A.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`+Ba(r)}async persistLockfile(){let e=V.join(this.cwd,dr.lockfile),r=\"\";try{r=await oe.readFilePromise(e,\"utf8\")}catch{}let o=this.generateLockfile(),a=_g(r,o);a!==r&&(await oe.writeFilePromise(e,a),this.lockFileChecksum=Vpe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(b_))e.push(...u);let r=(0,$x.default)(this,e),o=x_.default.serialize(r),a=zs(o);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await oe.mkdirPromise(V.dirname(n),{recursive:!0}),await oe.writeFilePromise(n,await bAt(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let u=await xAt(await oe.readFilePromise(a));n=x_.default.deserialize(u),this.installStateChecksum=zs(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,$x.default)(n,b_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,$x.default)(n,b_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Qi}),await this.persistInstallStateFile()}async persist(){let e=(0,ek.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 o=new Set([\".gitignore\"]);if(!CM(e.cwd,this.cwd)||!await oe.existsPromise(e.cwd))return null;let a=[];for(let u of await oe.readdirPromise(e.cwd)){if(o.has(u))continue;let A=V.resolve(e.cwd,u);e.markedFiles.has(A)||(e.immutable?r.reportError(56,`${Mt(this.configuration,V.basename(A),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(oe.lstatPromise(A).then(async p=>(await oe.removePromise(A),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((u,A)=>u+A,0)}}}});function FAt(t){let o=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),u=n+a,A=t.state.lastTips??o*864e5,p=A+864e5+8*36e5-t.timeZone,h=u<=t.timeNow,E=p<=t.timeNow,I=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(I={},I.lastUpdate=h?t.timeNow:n,I.lastTips=A,I.blocks=h?{}:t.state.blocks,I.displayedTips=t.state.displayedTips),{nextState:I,triggerUpdate:h,triggerTips:E,nextTips:E?o*864e5:A}}var uC,Xpe=Et(()=>{St();L1();nh();Ib();ql();Qf();uC=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 o=this.getRegistryPath();this.isNew=!oe.existsSync(o),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),o=A=>A&&rn?kf(rn,A):!1,a=e.map((A,p)=>p).filter(A=>e[A]&&o(e[A]?.selector));if(a.length===0)return null;let n=a.filter(A=>!r.has(A));if(n.length===0){let A=Math.floor(a.length*.2);this.displayedTips=A>0?this.displayedTips.slice(-A):[],n=a.filter(p=>!r.has(p))}let u=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(u),this.commitTips(),e[u]}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){md(this.values,e).add(r)}reportEnumerator(e,r){md(this.enumerators,e).add(zs(r))}reportHit(e,r=\"*\"){let o=Wy(this.hits,e),a=ol(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get(\"globalFolder\");return V.join(e,\"telemetry.json\")}sendReport(e){let r=this.getRegistryPath(),o;try{o=oe.readJsonSync(r)}catch{o={}}let{nextState:a,triggerUpdate:n,triggerTips:u,nextTips:A}=FAt({state:o,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=A,this.displayedTips=o.displayedTips??[],a!==null)try{oe.mkdirSync(V.dirname(r),{recursive:!0}),oe.writeJsonSync(r,a)}catch{return!1}if(u&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=o.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=I=>O4(h,I,{configuration:this.configuration}).catch(()=>{});for(let[I,v]of Object.entries(o.blocks??{})){if(Object.keys(v).length===0)continue;let x=v;x.userId=I,x.reportType=\"primary\";for(let L of Object.keys(x.enumerators??{}))x.enumerators[L]=x.enumerators[L].length;E(x);let C=new Map,R=20;for(let[L,U]of Object.entries(x.values))U.length>0&&C.set(L,U.slice(0,R));for(;C.size>0;){let L={};L.userId=I,L.reportType=\"secondary\",L.metrics={};for(let[U,J]of C)L.metrics[U]=J.shift(),J.length===0&&C.delete(U);E(L)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=oe.readJsonSync(e)}catch{r={}}let o=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,E]of this.hits.get(u))p[h]=(p[h]??0)+E}for(let u of[\"values\",\"enumerators\"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),oe.mkdirSync(V.dirname(e),{recursive:!0}),oe.writeJsonSync(e,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var o2={};Vt(o2,{BuildDirectiveType:()=>Vx,CACHE_CHECKPOINT:()=>c_,CACHE_VERSION:()=>Kx,Cache:()=>Lr,Configuration:()=>Ke,DEFAULT_RC_FILENAME:()=>G4,FormatType:()=>xle,InstallMode:()=>pl,LEGACY_PLUGINS:()=>v1,LOCKFILE_VERSION:()=>tk,LegacyMigrationResolver:()=>oC,LightReport:()=>AA,LinkType:()=>zy,LockfileResolver:()=>aC,Manifest:()=>Ot,MessageName:()=>wr,MultiFetcher:()=>hE,PackageExtensionStatus:()=>BL,PackageExtensionType:()=>IL,PeerWarningType:()=>rk,Project:()=>Pt,Report:()=>Xs,ReportError:()=>zt,SettingsType:()=>D1,StreamReport:()=>Nt,TAG_REGEXP:()=>FE,TelemetryManager:()=>uC,ThrowReport:()=>Qi,VirtualFetcher:()=>gE,WindowsLinkType:()=>xb,Workspace:()=>cC,WorkspaceFetcher:()=>mE,WorkspaceResolver:()=>Xn,YarnVersion:()=>rn,execUtils:()=>Ur,folderUtils:()=>YP,formatUtils:()=>de,hashUtils:()=>wn,httpUtils:()=>nn,miscUtils:()=>_e,nodeUtils:()=>Ji,parseMessageName:()=>AS,reportOptionDeprecations:()=>LE,scriptUtils:()=>un,semverUtils:()=>kr,stringifyMessageName:()=>Wu,structUtils:()=>W,tgzUtils:()=>Xi,treeUtils:()=>$s});var Ye=Et(()=>{Db();WP();jl();nh();Ib();ql();vb();BU();Qf();bo();Xfe();ipe();u_();S1();S1();ope();A_();ape();f_();fE();fS();cM();zpe();Yl();O1();Xpe();S_();AM();fM();vd();P_();L1();Cne()});var nhe=_((K_t,l2)=>{\"use strict\";var TAt=process.env.TERM_PROGRAM===\"Hyper\",NAt=process.platform===\"win32\",ehe=process.platform===\"linux\",F_={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\"},the=Object.assign({},F_,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),rhe=Object.assign({},F_,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:ehe?\"\\u25B8\":\"\\u276F\",pointerSmall:ehe?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});l2.exports=NAt&&!TAt?the:rhe;Reflect.defineProperty(l2.exports,\"common\",{enumerable:!1,value:F_});Reflect.defineProperty(l2.exports,\"windows\",{enumerable:!1,value:the});Reflect.defineProperty(l2.exports,\"other\",{enumerable:!1,value:rhe})});var Kc=_((V_t,R_)=>{\"use strict\";var LAt=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),OAt=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,ihe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(t.enabled=process.env.FORCE_COLOR!==\"0\");let e=n=>{let u=n.open=`\\x1B[${n.codes[0]}m`,A=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(A)&&(h=h.replace(p,A+u));let I=u+h+A;return E?I.replace(/\\r*\\n/g,`${A}$&${u}`):I},n},r=(n,u,A)=>typeof n==\"function\"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===\"\"||n==null)return\"\";if(t.enabled===!1)return n;if(t.visible===!1)return\"\";let A=\"\"+n,p=A.includes(`\n`),h=u.length;for(h>0&&u.includes(\"unstyle\")&&(u=[...new Set([\"unstyle\",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>o(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=OAt,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u==\"string\"?t[u]:u;if(typeof A!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");A.stack||(Reflect.defineProperty(A,\"name\",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!LAt(n))throw new TypeError(\"Expected theme to be an object\");for(let u of Object.keys(n))t.alias(u,n[u]);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=nhe(),t.define=a,t};R_.exports=ihe();R_.exports.create=ihe});var No=_(sn=>{\"use strict\";var MAt=Object.prototype.toString,rc=Kc(),she=!1,T_=[],ohe={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};sn.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);sn.hasColor=t=>!!t&&rc.hasColor(t);var ik=sn.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);sn.nativeType=t=>MAt.call(t).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");sn.isAsyncFn=t=>sn.nativeType(t)===\"asyncfunction\";sn.isPrimitive=t=>t!=null&&typeof t!=\"object\"&&typeof t!=\"function\";sn.resolve=(t,e,...r)=>typeof e==\"function\"?e.call(t,...r):e;sn.scrollDown=(t=[])=>[...t.slice(1),t[0]];sn.scrollUp=(t=[])=>[t.pop(),...t];sn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index<o.index?-1:0),e};sn.swap=(t,e,r)=>{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};sn.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};sn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[1]),r};sn.wordWrap=(t,e={})=>{if(!t)return t;typeof e==\"number\"&&(e={width:e});let{indent:r=\"\",newline:o=`\n`+r,width:a=80}=e,n=(o+r).match(/[^\\S\\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,\"g\"),h=A.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(o)};sn.unmute=t=>{let e=t.stack.find(o=>rc.keys.color.includes(o));return e?rc[e]:t.stack.find(o=>o.slice(2)===\"bg\")?rc[e.slice(2)]:o=>o};sn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):\"\";sn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o));if(e){let o=rc[\"bg\"+sn.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)===\"bg\");return r?rc[r.slice(2).toLowerCase()]||t:rc.none};sn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)===\"bg\");if(e&&!r)return rc[ohe[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=ohe[o];return a&&rc[\"bg\"+sn.pascal(a)]||t}return rc.none};sn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?\"pm\":\"am\";e=e%12;let a=e===0?12:e,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+o};sn.set=(t={},e=\"\",r)=>e.split(\".\").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!sn.isObject(A)&&n<u.length-1&&(A={}),o[a]=A},t);sn.get=(t={},e=\"\",r)=>{let o=t[e]==null?e.split(\".\").reduce((a,n)=>a&&a[n],t):t[e];return o??r};sn.mixin=(t,e)=>{if(!ik(t))return e;if(!ik(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty(\"value\"))if(t.hasOwnProperty(r)&&ik(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);ik(a.value)?t[r]=sn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};sn.merge=(...t)=>{let e={};for(let r of t)sn.mixin(e,r);return e};sn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a==\"function\"?sn.define(t,o,a.bind(e)):sn.define(t,o,a)}};sn.onExit=t=>{let e=(r,o)=>{she||(she=!0,T_.forEach(a=>a()),r===!0&&process.exit(128+o))};T_.length===0&&(process.once(\"SIGTERM\",e.bind(null,!0,15)),process.once(\"SIGINT\",e.bind(null,!0,2)),process.once(\"exit\",e)),T_.push(t)};sn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};sn.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var ahe=_(hC=>{\"use strict\";hC.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\"};hC.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};hC.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};hC.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};hC.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 uhe=_((X_t,che)=>{\"use strict\";var lhe=ve(\"readline\"),UAt=ahe(),_At=/^(?:\\x1b)([a-zA-Z0-9])$/,HAt=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,qAt={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 jAt(t){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(t)}function GAt(t){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(t)}var sk=(t=\"\",e={})=>{let r,o={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=o.sequence||\"\"),o.sequence=o.sequence||t||o.name,t===\"\\r\")o.raw=void 0,o.name=\"return\";else if(t===`\n`)o.name=\"enter\";else if(t===\"\t\")o.name=\"tab\";else if(t===\"\\b\"||t===\"\\x7F\"||t===\"\\x1B\\x7F\"||t===\"\\x1B\\b\")o.name=\"backspace\",o.meta=t.charAt(0)===\"\\x1B\";else if(t===\"\\x1B\"||t===\"\\x1B\\x1B\")o.name=\"escape\",o.meta=t.length===2;else if(t===\" \"||t===\"\\x1B \")o.name=\"space\",o.meta=t.length===2;else if(t<=\"\u001a\")o.name=String.fromCharCode(t.charCodeAt(0)+\"a\".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>=\"0\"&&t<=\"9\")o.name=\"number\";else if(t.length===1&&t>=\"a\"&&t<=\"z\")o.name=t;else if(t.length===1&&t>=\"A\"&&t<=\"Z\")o.name=t.toLowerCase(),o.shift=!0;else if(r=_At.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=HAt.exec(t)){let a=[...t];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=qAt[n],o.shift=jAt(n)||o.shift,o.ctrl=GAt(n)||o.ctrl}return o};sk.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let o=lhe.createInterface({terminal:!0,input:r});lhe.emitKeypressEvents(r,o);let a=(A,p)=>e(A,sk(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),o.pause(),o.close()}};sk.action=(t,e,r)=>{let o={...UAt,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};che.exports=sk});var fhe=_((Z_t,Ahe)=>{\"use strict\";Ahe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o==\"number\"&&(o={interval:o}),YAt(t,r,o)}};function YAt(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,\"interval\",{value:n}),t.once(\"close\",()=>o.stop()),o.stop}});var hhe=_(($_t,phe)=>{\"use strict\";var{define:WAt,width:KAt}=No(),N_=class{constructor(e){let r=e.options;WAt(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=KAt(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\"}};phe.exports=N_});var dhe=_((e8t,ghe)=>{\"use strict\";var L_=No(),eo=Kc(),O_={default:eo.noop,noop:eo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||L_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||L_.complement(this.primary)},primary:eo.cyan,success:eo.green,danger:eo.magenta,strong:eo.bold,warning:eo.yellow,muted:eo.dim,disabled:eo.gray,dark:eo.dim.gray,underline:eo.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}};O_.merge=(t={})=>{t.styles&&typeof t.styles.enabled==\"boolean\"&&(eo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible==\"boolean\"&&(eo.visible=t.styles.visible);let e=L_.merge({},O_,t.styles);delete e.merge;for(let r of Object.keys(eo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});for(let r of Object.keys(eo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});return e};ghe.exports=O_});var yhe=_((t8t,mhe)=>{\"use strict\";var M_=process.platform===\"win32\",Vf=Kc(),VAt=No(),U_={...Vf.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:Vf.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:Vf.symbols.question,submitted:Vf.symbols.check,cancelled:Vf.symbols.cross},separator:{pending:Vf.symbols.pointerSmall,submitted:Vf.symbols.middot,cancelled:Vf.symbols.middot},radio:{off:M_?\"( )\":\"\\u25EF\",on:M_?\"(*)\":\"\\u25C9\",disabled:M_?\"(|)\":\"\\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\"]};U_.merge=t=>{let e=VAt.merge({},Vf.symbols,U_,t.symbols);return delete e.merge,e};mhe.exports=U_});var Che=_((r8t,Ehe)=>{\"use strict\";var JAt=dhe(),zAt=yhe(),XAt=No();Ehe.exports=t=>{t.options=XAt.merge({},t.options.theme,t.options),t.symbols=zAt.merge(t.options),t.styles=JAt.merge(t.options)}});var Dhe=_((Bhe,vhe)=>{\"use strict\";var whe=process.env.TERM_PROGRAM===\"Apple_Terminal\",ZAt=Kc(),__=No(),Vc=vhe.exports=Bhe,Di=\"\\x1B[\",Ihe=\"\\x07\",H_=!1,Ph=Vc.code={bell:Ihe,beep:Ihe,beginning:`${Di}G`,down:`${Di}J`,esc:Di,getPosition:`${Di}6n`,hide:`${Di}?25l`,line:`${Di}2K`,lineEnd:`${Di}K`,lineStart:`${Di}1K`,restorePosition:Di+(whe?\"8\":\"u\"),savePosition:Di+(whe?\"7\":\"s\"),screen:`${Di}2J`,show:`${Di}?25h`,up:`${Di}1J`},Gd=Vc.cursor={get hidden(){return H_},hide(){return H_=!0,Ph.hide},show(){return H_=!1,Ph.show},forward:(t=1)=>`${Di}${t}C`,backward:(t=1)=>`${Di}${t}D`,nextLine:(t=1)=>`${Di}E`.repeat(t),prevLine:(t=1)=>`${Di}F`.repeat(t),up:(t=1)=>t?`${Di}${t}A`:\"\",down:(t=1)=>t?`${Di}${t}B`:\"\",right:(t=1)=>t?`${Di}${t}C`:\"\",left:(t=1)=>t?`${Di}${t}D`:\"\",to(t,e){return e?`${Di}${e+1};${t+1}H`:`${Di}${t+1}G`},move(t=0,e=0){let r=\"\";return r+=t<0?Gd.left(-t):t>0?Gd.right(t):\"\",r+=e<0?Gd.up(-e):e>0?Gd.down(e):\"\",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=__.isPrimitive(o)?String(o):\"\",a=__.isPrimitive(a)?String(a):\"\",A=__.isPrimitive(A)?String(A):\"\",u){let p=Vc.cursor.up(u)+Vc.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Vc.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===\"\"&&o&&!n.includes(o)&&(p+=o.length),Vc.cursor.move(p)}}},q_=Vc.erase={screen:Ph.screen,up:Ph.up,down:Ph.down,line:Ph.line,lineEnd:Ph.lineEnd,lineStart:Ph.lineStart,lines(t){let e=\"\";for(let r=0;r<t;r++)e+=Vc.erase.line+(r<t-1?Vc.cursor.up(1):\"\");return t&&(e+=Vc.code.beginning),e}};Vc.clear=(t=\"\",e=process.stdout.columns)=>{if(!e)return q_.line+Gd.to(0);let r=n=>[...ZAt.unstyle(n)].length,o=t.split(/\\r?\\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(q_.line+Gd.prevLine()).repeat(a-1)+q_.line+Gd.to(0)}});var gC=_((n8t,Phe)=>{\"use strict\";var $At=ve(\"events\"),She=Kc(),j_=uhe(),eft=fhe(),tft=hhe(),rft=Che(),Ra=No(),Yd=Dhe(),c2=class extends $At{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,rft(this),eft(this),this.state=new tft(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=ift(this.options.margin),this.setMaxListeners(0),nft(this)}async keypress(e,r={}){this.keypressed=!0;let o=j_.action(e,j_(e,r),this.options.actions);this.state.keypress=o,this.emit(\"keypress\",e,o),this.emit(\"state\",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(Yd.code.beep)}cursorHide(){this.stdout.write(Yd.cursor.hide()),Ra.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Yd.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(Yd.cursor.down(e)+Yd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n=\"\",input:u=\"\",value:A=\"\"}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},E=Yd.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=She.unstyle(o);let a=She.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],v=(o+(r?\" \"+r:\"\")).length,x=v<h.length?h.slice(v+1):\"\";return{header:u,prompt:h,after:x,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(Yd.cursor.down(e.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=j_.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:o}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>o.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,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],E=r&&r[e]!=null?r[e]:await h;if(E===\"\")return E;let I=await this.resolve(E,n,r,o);return!I&&r&&r[e]?this.resolve(h,n,r,o):I}async prefix(){let e=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Ra.isObject(e)&&(e=e[o.status]||e.pending),Ra.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element(\"message\");return Ra.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Ra.isObject(n)&&(n=n[o.status]||n.pending),Ra.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element(\"pointer\",e,r);if(typeof o==\"string\"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?\"on\":\"off\"]||o,this.state),p=Ra.hasColor(A)?A:u(A);return n?p:\" \".repeat(A.length)}}async indicator(e,r){let o=await this.element(\"indicator\",e,r);if(typeof o==\"string\"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?\"on\":\"off\"]||o;return Ra.hasColor(A)?A:u(A)}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 Ra.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 Ra.resolve(this,e,...r)}get base(){return c2.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Ra.height(this.stdout,25)}get width(){return this.options.columns||Ra.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,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function nft(t){let e=a=>t[a]===void 0||typeof t[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],o=[\"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)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!=\"function\"&&(t[a]=n)}}function ift(t){typeof t==\"number\"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`\n`:\" \",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push(\"\")}return o}Phe.exports=c2});var khe=_((i8t,xhe)=>{\"use strict\";var sft=No(),bhe={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 bhe.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}};xhe.exports=(t,e={})=>{let r=sft.merge({},bhe,e.roles);return r[t]||r.default}});var u2=_((s8t,Rhe)=>{\"use strict\";var oft=Kc(),aft=gC(),lft=khe(),ok=No(),{reorder:G_,scrollUp:cft,scrollDown:uft,isObject:Qhe,swap:Aft}=ok,Y_=class extends aft{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:o,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\");Qhe(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),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 o=[],a=0,n=async(u,A)=>{typeof u==\"function\"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p<u.length;p++){let h=u[p]=await this.toChoice(u[p],a++,A);o.push(h),h.choices&&await n(h.choices,h)}return o};return n(e,r).then(u=>(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){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=lft(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,ok.define(e,\"parent\",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+\"  \":e.indent||\"\"),e.path=o?o.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,oft.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,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,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);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 o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return Fhe(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=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=G_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),E=A.filter(I=>!h.includes(I));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num=\"\",o(p)};if(n===\"0\"||n.length===1&&Number(n+\"0\")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=G_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=G_(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,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=cft(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=uft(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){Aft(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(o=>e[o]===!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(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}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((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e==\"function\"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(Qhe(e))return r?e[r]:e;let a=typeof e==\"function\"?e:(u,A)=>[u.name,A].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(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=ok.reorder(n)),this.value=a?n.map(u=>u.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(o=>o.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 o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return Fhe(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:o}=this,a=e.limit||this._limit||r.limit||o.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 Fhe(t,e){if(e instanceof Promise)return e;if(typeof e==\"function\"){if(ok.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}Rhe.exports=Y_});var bh=_((o8t,The)=>{\"use strict\";var fft=u2(),W_=No(),K_=class extends fft{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 o=this.resolve(e.message,this.state,e,r);return e.role===\"heading\"&&!W_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return\":\"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||\"\"),u=await this.resolve(e.hint,this.state,e,r);u&&!W_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(\" \");return e.role===\"heading\"?h():e.disabled?(W_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(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,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger(\"No matching choices\"));let o=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].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,o=\"\",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,\"\"].join(\" \"),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=\" \"+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,E,I].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};The.exports=K_});var Lhe=_((a8t,Nhe)=>{\"use strict\";var pft=bh(),hft=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},V_=class extends pft{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:o}=this.state;return this.input=o.slice(0,r)+e+o.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 o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}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=hft(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Nhe.exports=V_});var z_=_((l8t,Ohe)=>{\"use strict\";var J_=No();Ohe.exports=(t,e={})=>{t.cursorHide();let{input:r=\"\",initial:o=\"\",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=J_.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,I=\" \",v=h(I);if(t.blink&&t.blink.off===!0&&(h=R=>R,v=\"\"),n&&a===0&&o===\"\"&&r===\"\")return h(I);if(n&&a===0&&(r===o||r===\"\"))return h(o[0])+A(o.slice(1));o=J_.isPrimitive(o)?`${o}`:\"\",r=J_.isPrimitive(r)?`${r}`:\"\";let x=o&&o.startsWith(r)&&o!==r,C=x?h(o[r.length]):v;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),C=\"\"),n===!1&&(C=\"\"),x){let R=t.styles.unstyle(E+C);return E+C+A(o.slice(R.length))}return E+C}});var ak=_((c8t,Mhe)=>{\"use strict\";var gft=Kc(),dft=bh(),mft=z_(),X_=class extends dft{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:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.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:o}=e;return r&&r.startsWith(o)&&o!==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 o=await this.resolve(e.separator,this.state,e,r)||\":\";return o?\" \"+this.styles.disabled(o):\"\"}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u=\"\",name:A,hint:p,input:h=\"\"}=e,{muted:E,submitted:I,primary:v,danger:x}=a,C=p,R=this.index===r,L=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),J=e.message;this.align===\"right\"&&(J=J.padStart(this.longest+1,\" \")),this.align===\"left\"&&(J=J.padEnd(this.longest+1,\" \"));let te=this.values[A]=h||u,ae=h?\"success\":\"dark\";await L.call(e,te,this.state)!==!0&&(ae=\"danger\");let fe=a[ae],ce=fe(await this.indicator(e,r))+(e.pad||\"\"),me=this.indent(e),he=()=>[me,ce,J+U,h,C].filter(Boolean).join(\" \");if(o.submitted)return J=gft.unstyle(J),h=I(h),C=\"\",he();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=mft(this,{input:h,initial:u,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,te,e,r)),R&&(J=v(J)),e.error?h+=(h?\" \":\"\")+x(e.error.trim()):e.hint&&(h+=(h?\" \":\"\")+E(e.hint.trim())),he()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Mhe.exports=X_});var Z_=_((u8t,_he)=>{\"use strict\";var yft=ak(),Eft=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},Uhe=(t=Eft)=>{class e extends yft{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return Uhe(o)}}return e};_he.exports=Uhe()});var jhe=_((A8t,qhe)=>{\"use strict\";var Cft=Z_();function wft(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hhe=(t=wft)=>{let e=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends Cft.create(t){constructor(a){super({...a,choices:e})}static create(a){return Hhe(a)}}return r};qhe.exports=Hhe()});var lk=_((f8t,Ghe)=>{\"use strict\";var Ift=gC(),{isPrimitive:Bft,hasColor:vft}=No(),$_=class extends Ift{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:o}=this;return o.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 Bft(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status===\"pending\"){let e=await this.element(\"hint\");return vft(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(\" \");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),I=await this.error()||await this.hint(),v=await this.footer();I&&!A.includes(I)&&(E+=\" \"+I),A+=\" \"+E,this.clear(r),this.write([p,A,v].filter(Boolean).join(`\n`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Ghe.exports=$_});var Whe=_((p8t,Yhe)=>{\"use strict\";var Dft=lk(),e8=class extends Dft{constructor(e){super(e),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};Yhe.exports=e8});var Vhe=_((h8t,Khe)=>{\"use strict\";var Sft=bh(),Pft=ak(),dC=Pft.prototype,t8=class extends Sft{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e===\"a\"||e===\"i\")?super[e]():dC.dispatch.call(this,e,r)}append(e,r){return dC.append.call(this,e,r)}delete(e,r){return dC.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?dC.next.call(this):super.next()}prev(){return this.focused.editable?dC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||\"\",a=e.editable?o: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?dC.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 o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,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)}};Khe.exports=t8});var Wd=_((g8t,Jhe)=>{\"use strict\";var bft=gC(),xft=z_(),{isPrimitive:kft}=No(),r8=class extends bft{constructor(e){super(e),this.initial=kft(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!o||o.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:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.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),o=this.input.slice(e),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=o,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):xft(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(\" \");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=\" \"+p),n+=\" \"+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(`\n`)),this.restore()}};Jhe.exports=r8});var Xhe=_((d8t,zhe)=>{\"use strict\";var Qft=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),ck=t=>Qft(t).filter(Boolean);zhe.exports=(t,e={},r=\"\")=>{let{past:o=[],present:a=\"\"}=e,n,u;switch(t){case\"prev\":case\"undo\":return n=o.slice(0,o.length-1),u=o[o.length-1]||\"\",{past:ck([r,...n]),present:u};case\"next\":case\"redo\":return n=o.slice(1),u=o[0]||\"\",{past:ck([...n,r]),present:u};case\"save\":return{past:ck([...o,r]),present:\"\"};case\"remove\":return u=ck(o.filter(A=>A!==r)),a=\"\",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: \"${t}\"`)}}});var i8=_((m8t,$he)=>{\"use strict\";var Fft=Wd(),Zhe=Xhe(),n8=class extends Fft{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Zhe(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=Zhe(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};$he.exports=n8});var t0e=_((y8t,e0e)=>{\"use strict\";var Rft=Wd(),s8=class extends Rft{format(){return\"\"}};e0e.exports=s8});var n0e=_((E8t,r0e)=>{\"use strict\";var Tft=Wd(),o8=class extends Tft{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()}};r0e.exports=o8});var s0e=_((C8t,i0e)=>{\"use strict\";var Nft=bh(),a8=class extends Nft{constructor(e){super({...e,multiple:!0})}};i0e.exports=a8});var c8=_((w8t,o0e)=>{\"use strict\";var Lft=Wd(),l8=class extends Lft{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,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return o<this.min-r?this.alert():(this.input=`${o-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()}};o0e.exports=l8});var l0e=_((I8t,a0e)=>{a0e.exports=c8()});var u0e=_((B8t,c0e)=>{\"use strict\";var Oft=Wd(),u8=class extends Oft{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)):\"\"}};c0e.exports=u8});var p0e=_((v8t,f0e)=>{\"use strict\";var Mft=Kc(),Uft=u2(),A0e=No(),A8=class extends Uft{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((o,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 o=0;o<this.scale.length;o++)r.scale.push({index:o})}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,o){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(o=>`   ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).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 o=this.scaleLength-r.join(\"\").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),A=\" \".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,e,r,o);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 o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!A0e.hasColor(n)&&(n=this.styles.muted(n));let u=C=>this.margin[3]+C.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),I=this.margin[1]+this.margin[3];this.scaleLength=Mft.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-I.length);let x=A0e.wordWrap(h,{width:this.widths[0],newline:A}).split(`\n`).map(C=>u(C)+this.margin[1]);return o&&(E=this.styles.info(E),x=x.map(C=>this.styles.info(C))),x[0]+=E,this.linebreak&&x.push(\"\"),[p+a,x.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),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=\"\";this.options.promptLine!==!1&&(u=[o,n,a,\"\"].join(\" \"),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),I=await this.renderChoices(),v=await this.footer(),x=this.emptyError;p&&(u+=p),E&&!u.includes(E)&&(u+=\" \"+E),e&&!p&&!I.trim()&&this.multiple&&x!=null&&(u+=this.styles.danger(x)),this.clear(r),this.write([A,u,h,I,v].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)}};f0e.exports=A8});var d0e=_((D8t,g0e)=>{\"use strict\";var h0e=Kc(),_ft=(t=\"\")=>typeof t==\"string\"?t.replace(/^['\"]|['\"]$/g,\"\"):\"\",p8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=_ft(e.initial||this.field.initial||\"\"),this.message=e.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},Hft=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,I=()=>n[++E],v=()=>n[E+1],x=C=>{C.line=h,u.push(C)};for(x({type:\"bos\",value:\"\"});E<n.length-1;){let C=I();if(/^[^\\S\\n ]$/.test(C)){x({type:\"text\",value:C});continue}if(C===`\n`){x({type:\"newline\",value:C}),h++;continue}if(C===\"\\\\\"){C+=I(),x({type:\"text\",value:C});continue}if((C===\"$\"||C===\"#\"||C===\"{\")&&v()===\"{\"){let L=I();C+=L;let U={type:\"template\",open:C,inner:\"\",close:\"\",value:C},J;for(;J=I();){if(J===\"}\"){v()===\"}\"&&(J+=I()),U.value+=J,U.close=J;break}J===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=J),U.value+=J,U.inner+=J}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),x(U),p.push(U.key),o.add(U.key);let te=A.find(ae=>ae.name===U.key);U.field=a.find(ae=>ae.name===U.key),te||(te=new p8(U),A.push(te)),te.lines.push(U.line-1);continue}let R=u[u.length-1];R.type===\"text\"&&R.line===h?R.value+=C:x({type:\"text\",value:C})}return x({type:\"eos\",value:\"\"}),{input:n,tabstops:u,unique:o,keys:p,items:A}};g0e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await Hft(e,o),A=f8(\"result\",t,e),p=f8(\"format\",t,e),h=f8(\"validate\",t,e,!0),E=t.isValue.bind(t);return async(I={},v=!1)=>{let x=0;I.required=r,I.items=n,I.keys=u,I.output=\"\";let C=async(J,te,ae,fe)=>{let ce=await h(J,te,ae,fe);return ce===!1?\"Invalid field \"+ae.name:ce};for(let J of a){let te=J.value,ae=J.key;if(J.type!==\"template\"){te&&(I.output+=te);continue}if(J.type===\"template\"){let fe=n.find(we=>we.name===ae);e.required===!0&&I.required.add(fe.name);let ce=[fe.input,I.values[fe.value],fe.value,te].find(E),he=(fe.field||{}).message||J.inner;if(v){let we=await C(I.values[ae],I,fe,x);if(we&&typeof we==\"string\"||we===!1){I.invalid.set(ae,we);continue}I.invalid.delete(ae);let g=await A(I.values[ae],I,fe,x);I.output+=h0e.unstyle(g);continue}fe.placeholder=!1;let Be=te;te=await p(te,I,fe,x),ce!==te?(I.values[ae]=ce,te=t.styles.typing(ce),I.missing.delete(he)):(I.values[ae]=void 0,ce=`<${he}>`,te=t.styles.primary(ce),fe.placeholder=!0,I.required.has(ae)&&I.missing.add(he)),I.missing.has(he)&&I.validating&&(te=t.styles.warning(ce)),I.invalid.has(ae)&&I.validating&&(te=t.styles.danger(ce)),x===I.index&&(Be!==te?te=t.styles.underline(te):te=t.styles.heading(h0e.unstyle(te))),x++}te&&(I.output+=te)}let R=I.output.split(`\n`).map(J=>\" \"+J),L=n.length,U=0;for(let J of n)I.invalid.has(J.name)&&J.lines.forEach(te=>{R[te][0]===\" \"&&(R[te]=I.styles.danger(I.symbols.bullet)+R[te].slice(1))}),t.isValue(I.values[J.name])&&U++;return I.completed=(U/L*100).toFixed(0),I.output=R.join(`\n`),I.output}};function f8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]==\"function\"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var y0e=_((S8t,m0e)=>{\"use strict\";var qft=Kc(),jft=d0e(),Gft=gC(),h8=class extends Gft{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await jft(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 o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.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),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${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:o,size:a}=this.state,n=[this.options.newline,`\n`].find(J=>J!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),I=await this.error()||\"\",v=await this.hint()||\"\",x=o?\"\":await this.interpolate(this.state),C=this.state.key=r[e]||\"\",R=await this.format(C),L=await this.footer();R&&(h+=\" \"+R),v&&!R&&this.state.completed===0&&(h+=\" \"+v),this.clear(a);let U=[E,h,x,L,I.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[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:o,values:a}=this.state;if(e.size){let A=\"\";for(let[p,h]of e)A+=`Invalid ${p}: ${h}\n`;return this.state.error=A,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let u=qft.unstyle(o).split(`\n`).map(A=>A.slice(1)).join(`\n`);return this.value={values:a,result:u},super.submit()}};m0e.exports=h8});var C0e=_((P8t,E0e)=>{\"use strict\";var Yft=\"(Use <shift>+<up/down> to sort)\",Wft=bh(),g8=class extends Wft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Yft].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(e,r){let o=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} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};E0e.exports=g8});var I0e=_((b8t,w0e)=>{\"use strict\";var Kft=u2(),d8=class extends Kft{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(o=>this.styles.muted(o)),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 o of r)o.scale=Vft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,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 o=this.index===r,a=this.term===\"Hyper\",n=a?9:8,u=a?\"\":\" \",A=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=te=>(te?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+u,E=r+1+\".\",I=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),x=this.indent(e),C=x+e.scale.map((te,ae)=>h(ae===e.scaleIdx)).join(A),R=te=>te===e.scaleIdx?I(te):te,L=x+e.scale.map((te,ae)=>R(ae)).join(p),U=()=>[E,v].filter(Boolean).join(\" \"),J=()=>[U(),C,L,\" \"].filter(Boolean).join(`\n`);return o&&(C=this.styles.cyan(C),L=this.styles.cyan(L)),J()}async renderChoices(){if(this.state.submitted)return\"\";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,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,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(\" \");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();(p||!h)&&(u+=\" \"+p),h&&!u.includes(h)&&(u+=\" \"+h),e&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,E,I].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 Vft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o<t+1;o++)r.push({i:o,selected:!1});return r}w0e.exports=d8});var v0e=_((x8t,B0e)=>{B0e.exports=i8()});var S0e=_((k8t,D0e)=>{\"use strict\";var Jft=lk(),m8=class extends Jft{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=o=>this.styles.primary.underline(o);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(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(\" \");this.state.prompt=h,A&&!h.includes(A)&&(h+=\" \"+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};D0e.exports=m8});var b0e=_((Q8t,P0e)=>{\"use strict\";var zft=bh(),y8=class extends zft{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 o=await super.toChoices(e,r);if(o.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>o.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return o}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)}}};P0e.exports=y8});var k0e=_(E8=>{\"use strict\";var x0e=No(),As=(t,e)=>{x0e.defineExport(E8,t,e),x0e.defineExport(E8,t.toLowerCase(),e)};As(\"AutoComplete\",()=>Lhe());As(\"BasicAuth\",()=>jhe());As(\"Confirm\",()=>Whe());As(\"Editable\",()=>Vhe());As(\"Form\",()=>ak());As(\"Input\",()=>i8());As(\"Invisible\",()=>t0e());As(\"List\",()=>n0e());As(\"MultiSelect\",()=>s0e());As(\"Numeral\",()=>l0e());As(\"Password\",()=>u0e());As(\"Scale\",()=>p0e());As(\"Select\",()=>bh());As(\"Snippet\",()=>y0e());As(\"Sort\",()=>C0e());As(\"Survey\",()=>I0e());As(\"Text\",()=>v0e());As(\"Toggle\",()=>S0e());As(\"Quiz\",()=>b0e())});var F0e=_((R8t,Q0e)=>{Q0e.exports={ArrayPrompt:u2(),AuthPrompt:Z_(),BooleanPrompt:lk(),NumberPrompt:c8(),StringPrompt:Wd()}});var f2=_((T8t,T0e)=>{\"use strict\";var R0e=ve(\"assert\"),w8=ve(\"events\"),xh=No(),Jc=class extends w8{constructor(e,r){super(),this.options=xh.merge({},e),this.answers={...r}}register(e,r){if(xh.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}R0e.equal(typeof r,\"function\",\"expected a function\");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=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(xh.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e==\"function\"&&(e=await e.call(this));let r=xh.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=xh;if(typeof o==\"function\"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];R0e(this.prompts[o],`Prompt \"${o}\" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on(\"submit\",E=>{this.emit(\"answer\",a,E,A),n(this.answers,a,E)});let h=A.emit.bind(A);return A.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill===\"show\"&&await A.submit()):p=A.value=await A.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||gC()}static get prompts(){return k0e()}static get types(){return F0e()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return xh.mixinEmitter(e,new w8),e}};xh.mixinEmitter(Jc,new w8);var C8=Jc.prompts;for(let t of Object.keys(C8)){let e=t.toLowerCase(),r=o=>new C8[t](o).run();Jc.prompt[e]=r,Jc[e]=r,Jc[t]||Reflect.defineProperty(Jc,t,{get:()=>C8[t]})}var A2=t=>{xh.defineExport(Jc,t,()=>Jc.types[t])};A2(\"ArrayPrompt\");A2(\"AuthPrompt\");A2(\"BooleanPrompt\");A2(\"NumberPrompt\");A2(\"StringPrompt\");T0e.exports=Jc});var d2=_((dHt,H0e)=>{var rpt=zx();function npt(t,e,r){var o=t==null?void 0:rpt(t,e);return o===void 0?r:o}H0e.exports=npt});var G0e=_((IHt,j0e)=>{function ipt(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}j0e.exports=ipt});var W0e=_((BHt,Y0e)=>{var spt=dd(),opt=zS();function apt(t,e){return t&&spt(e,opt(e),t)}Y0e.exports=apt});var V0e=_((vHt,K0e)=>{var lpt=dd(),cpt=Gy();function upt(t,e){return t&&lpt(e,cpt(e),t)}K0e.exports=upt});var z0e=_((DHt,J0e)=>{var Apt=dd(),fpt=GS();function ppt(t,e){return Apt(t,fpt(t),e)}J0e.exports=ppt});var P8=_((SHt,X0e)=>{var hpt=jS(),gpt=tP(),dpt=GS(),mpt=WN(),ypt=Object.getOwnPropertySymbols,Ept=ypt?function(t){for(var e=[];t;)hpt(e,dpt(t)),t=gpt(t);return e}:mpt;X0e.exports=Ept});var $0e=_((PHt,Z0e)=>{var Cpt=dd(),wpt=P8();function Ipt(t,e){return Cpt(t,wpt(t),e)}Z0e.exports=Ipt});var b8=_((bHt,ege)=>{var Bpt=YN(),vpt=P8(),Dpt=Gy();function Spt(t){return Bpt(t,Dpt,vpt)}ege.exports=Spt});var rge=_((xHt,tge)=>{var Ppt=Object.prototype,bpt=Ppt.hasOwnProperty;function xpt(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]==\"string\"&&bpt.call(t,\"index\")&&(r.index=t.index,r.input=t.input),r}tge.exports=xpt});var ige=_((kHt,nge)=>{var kpt=$S();function Qpt(t,e){var r=e?kpt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}nge.exports=Qpt});var oge=_((QHt,sge)=>{var Fpt=/\\w*$/;function Rpt(t){var e=new t.constructor(t.source,Fpt.exec(t));return e.lastIndex=t.lastIndex,e}sge.exports=Rpt});var Age=_((FHt,uge)=>{var age=pd(),lge=age?age.prototype:void 0,cge=lge?lge.valueOf:void 0;function Tpt(t){return cge?Object(cge.call(t)):{}}uge.exports=Tpt});var pge=_((RHt,fge)=>{var Npt=$S(),Lpt=ige(),Opt=oge(),Mpt=Age(),Upt=oL(),_pt=\"[object Boolean]\",Hpt=\"[object Date]\",qpt=\"[object Map]\",jpt=\"[object Number]\",Gpt=\"[object RegExp]\",Ypt=\"[object Set]\",Wpt=\"[object String]\",Kpt=\"[object Symbol]\",Vpt=\"[object ArrayBuffer]\",Jpt=\"[object DataView]\",zpt=\"[object Float32Array]\",Xpt=\"[object Float64Array]\",Zpt=\"[object Int8Array]\",$pt=\"[object Int16Array]\",eht=\"[object Int32Array]\",tht=\"[object Uint8Array]\",rht=\"[object Uint8ClampedArray]\",nht=\"[object Uint16Array]\",iht=\"[object Uint32Array]\";function sht(t,e,r){var o=t.constructor;switch(e){case Vpt:return Npt(t);case _pt:case Hpt:return new o(+t);case Jpt:return Lpt(t,r);case zpt:case Xpt:case Zpt:case $pt:case eht:case tht:case rht:case nht:case iht:return Upt(t,r);case qpt:return new o;case jpt:case Wpt:return new o(t);case Gpt:return Opt(t);case Ypt:return new o;case Kpt:return Mpt(t)}}fge.exports=sht});var gge=_((THt,hge)=>{var oht=GI(),aht=Ju(),lht=\"[object Map]\";function cht(t){return aht(t)&&oht(t)==lht}hge.exports=cht});var Ege=_((NHt,yge)=>{var uht=gge(),Aht=WS(),dge=KS(),mge=dge&&dge.isMap,fht=mge?Aht(mge):uht;yge.exports=fht});var wge=_((LHt,Cge)=>{var pht=GI(),hht=Ju(),ght=\"[object Set]\";function dht(t){return hht(t)&&pht(t)==ght}Cge.exports=dht});var Dge=_((OHt,vge)=>{var mht=wge(),yht=WS(),Ige=KS(),Bge=Ige&&Ige.isSet,Eht=Bge?yht(Bge):mht;vge.exports=Eht});var x8=_((MHt,xge)=>{var Cht=HS(),wht=G0e(),Iht=rP(),Bht=W0e(),vht=V0e(),Dht=sL(),Sht=eP(),Pht=z0e(),bht=$0e(),xht=zN(),kht=b8(),Qht=GI(),Fht=rge(),Rht=pge(),Tht=aL(),Nht=Hl(),Lht=UI(),Oht=Ege(),Mht=il(),Uht=Dge(),_ht=zS(),Hht=Gy(),qht=1,jht=2,Ght=4,Sge=\"[object Arguments]\",Yht=\"[object Array]\",Wht=\"[object Boolean]\",Kht=\"[object Date]\",Vht=\"[object Error]\",Pge=\"[object Function]\",Jht=\"[object GeneratorFunction]\",zht=\"[object Map]\",Xht=\"[object Number]\",bge=\"[object Object]\",Zht=\"[object RegExp]\",$ht=\"[object Set]\",e0t=\"[object String]\",t0t=\"[object Symbol]\",r0t=\"[object WeakMap]\",n0t=\"[object ArrayBuffer]\",i0t=\"[object DataView]\",s0t=\"[object Float32Array]\",o0t=\"[object Float64Array]\",a0t=\"[object Int8Array]\",l0t=\"[object Int16Array]\",c0t=\"[object Int32Array]\",u0t=\"[object Uint8Array]\",A0t=\"[object Uint8ClampedArray]\",f0t=\"[object Uint16Array]\",p0t=\"[object Uint32Array]\",ri={};ri[Sge]=ri[Yht]=ri[n0t]=ri[i0t]=ri[Wht]=ri[Kht]=ri[s0t]=ri[o0t]=ri[a0t]=ri[l0t]=ri[c0t]=ri[zht]=ri[Xht]=ri[bge]=ri[Zht]=ri[$ht]=ri[e0t]=ri[t0t]=ri[u0t]=ri[A0t]=ri[f0t]=ri[p0t]=!0;ri[Vht]=ri[Pge]=ri[r0t]=!1;function Ak(t,e,r,o,a,n){var u,A=e&qht,p=e&jht,h=e&Ght;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!Mht(t))return t;var E=Nht(t);if(E){if(u=Fht(t),!A)return Sht(t,u)}else{var I=Qht(t),v=I==Pge||I==Jht;if(Lht(t))return Dht(t,A);if(I==bge||I==Sge||v&&!a){if(u=p||v?{}:Tht(t),!A)return p?bht(t,vht(u,t)):Pht(t,Bht(u,t))}else{if(!ri[I])return a?t:{};u=Rht(t,I,A)}}n||(n=new Cht);var x=n.get(t);if(x)return x;n.set(t,u),Uht(t)?t.forEach(function(L){u.add(Ak(L,e,r,L,t,n))}):Oht(t)&&t.forEach(function(L,U){u.set(U,Ak(L,e,r,U,t,n))});var C=h?p?kht:xht:p?Hht:_ht,R=E?void 0:C(t);return wht(R||t,function(L,U){R&&(U=L,L=t[U]),Iht(u,U,Ak(L,e,r,U,t,n))}),u}xge.exports=Ak});var k8=_((UHt,kge)=>{var h0t=x8(),g0t=1,d0t=4;function m0t(t){return h0t(t,g0t|d0t)}kge.exports=m0t});var Q8=_((_Ht,Qge)=>{var y0t=I_();function E0t(t,e,r){return t==null?t:y0t(t,e,r)}Qge.exports=E0t});var Lge=_((WHt,Nge)=>{var C0t=Object.prototype,w0t=C0t.hasOwnProperty;function I0t(t,e){return t!=null&&w0t.call(t,e)}Nge.exports=I0t});var Mge=_((KHt,Oge)=>{var B0t=Lge(),v0t=B_();function D0t(t,e){return t!=null&&v0t(t,e,B0t)}Oge.exports=D0t});var _ge=_((VHt,Uge)=>{function S0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Uge.exports=S0t});var qge=_((JHt,Hge)=>{var P0t=zx(),b0t=pU();function x0t(t,e){return e.length<2?t:P0t(t,b0t(e,0,-1))}Hge.exports=x0t});var R8=_((zHt,jge)=>{var k0t=jd(),Q0t=_ge(),F0t=qge(),R0t=lC();function T0t(t,e){return e=k0t(e,t),t=F0t(t,e),t==null||delete t[R0t(Q0t(e))]}jge.exports=T0t});var T8=_((XHt,Gge)=>{var N0t=R8();function L0t(t,e){return t==null?!0:N0t(t,e)}Gge.exports=L0t});var Jge=_((S6t,U0t)=>{U0t.exports={name:\"@yarnpkg/cli\",version:\"4.1.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-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\":\"^3.2.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-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:\"ssh://git@github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var j8=_((n5t,ade)=>{\"use strict\";ade.exports=function(e,r){r===!0&&(r=0);var o=\"\";if(typeof e==\"string\")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var cde=_((i5t,lde)=>{\"use strict\";var igt=j8();function sgt(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=igt(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}lde.exports=sgt});var fde=_((s5t,Ade)=>{\"use strict\";var ogt=cde();function agt(t){return t&&typeof t==\"object\"&&\"default\"in t?t:{default:t}}var lgt=agt(ogt),cgt=\"text/plain\",ugt=\"us-ascii\",ude=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Agt=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(\";\");n=e?\"\":n;let A=!1;u[u.length-1]===\"base64\"&&(u.pop(),A=!0);let p=(u.shift()||\"\").toLowerCase(),E=[...u.map(I=>{let[v,x=\"\"]=I.split(\"=\").map(C=>C.trim());return v===\"charset\"&&(x=x.toLowerCase(),x===ugt)?\"\":`${v}${x?`=${x}`:\"\"}`}).filter(Boolean)];return A&&E.push(\"base64\"),(E.length>0||p&&p!==cgt)&&E.unshift(p),`data:${E.join(\";\")},${A?a.trim():a}${n?`#${n}`:\"\"}`};function fgt(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 Agt(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 u=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,A=0,p=\"\";for(;;){let E=u.exec(a.pathname);if(!E)break;let I=E[0],v=E.index,x=a.pathname.slice(A,v);p+=x.replace(/\\/{2,}/g,\"/\"),p+=I,A=v+I.length}let h=a.pathname.slice(A,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 u=a.pathname.split(\"/\"),A=u[u.length-1];ude(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.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 u of[...a.searchParams.keys()])ude(u,e.removeQueryParameters)&&a.searchParams.delete(u);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 G8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!=\"string\"||!t.trim())&&o(\"Invalid url.\"),t.length>G8.MAX_INPUT_LENGTH&&o(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),e&&(typeof e!=\"object\"&&(e={stripHash:!1}),t=fgt(t,e));let a=lgt.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):o(\"URL parsing failed.\")}return a};G8.MAX_INPUT_LENGTH=2048;Ade.exports=G8});var gde=_((o5t,hde)=>{\"use strict\";var pgt=j8();function pde(t){if(Array.isArray(t))return t.indexOf(\"ssh\")!==-1||t.indexOf(\"rsync\")!==-1;if(typeof t!=\"string\")return!1;var e=pgt(t);if(t=t.substring(t.indexOf(\"://\")+3),pde(e))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!t.match(r)&&t.indexOf(\"@\")<t.indexOf(\":\")}hde.exports=pde});var yde=_((a5t,mde)=>{\"use strict\";var hgt=fde(),dde=gde();function ggt(t){var e=hgt(t);return e.token=\"\",e.password===\"x-oauth-basic\"?e.token=e.user:e.user===\"x-token-auth\"&&(e.token=e.password),dde(e.protocols)||e.protocols.length===0&&dde(t)?e.protocol=\"ssh\":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol=\"file\",e.protocols=[\"file\"]),e.href=e.href.replace(/\\/$/,\"\"),e}mde.exports=ggt});var Cde=_((l5t,Ede)=>{\"use strict\";var dgt=yde();function Y8(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=dgt(t),o=r.resource.split(\".\"),a=null;switch(r.toString=function(L){return Y8.stringify(this,L)},r.source=o.length>2?o.slice(1-o.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=o[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 u=a.indexOf(\"-\",2),A=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),I=a.indexOf(\"raw\",2),v=a.indexOf(\"edit\",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:E>0?E-1:I>0?I-1:v>0?v-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 x=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>x+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+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 C=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,R=C.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}Y8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join(\"+\"):t.protocol);var r=t.port?\":\"+t.port:\"\",o=t.user||\"git\",a=t.git_suffix?\".git\":\"\";switch(e){case\"ssh\":return r?\"ssh://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a:o+\"@\"+t.resource+\":\"+t.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return e+\"://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a;case\"http\":case\"https\":var n=t.token?mgt(t):t.user&&(t.protocols.includes(\"http\")||t.protocols.includes(\"https\"))?t.user+\"@\":\"\";return e+\"://\"+n+t.resource+r+\"/\"+ygt(t)+a;default:return t.href}};function mgt(t){switch(t.source){case\"bitbucket.org\":return\"x-token-auth:\"+t.token+\"@\";default:return t.token+\"@\"}}function ygt(t){switch(t.source){case\"bitbucket-server\":return\"scm/\"+t.full_name;default:return\"\"+t.full_name}}Ede.exports=Y8});var Lde=_((H9t,Nde)=>{var xgt=Hb(),kgt=eP(),Qgt=Hl(),Fgt=pE(),Rgt=w_(),Tgt=lC(),Ngt=N1();function Lgt(t){return Qgt(t)?xgt(t,Tgt):Fgt(t)?[t]:kgt(Rgt(Ngt(t)))}Nde.exports=Lgt});function _gt(t,e){return e===1&&Ugt.has(t[0])}function B2(t){let e=Array.isArray(t)?t:(0,Ude.default)(t);return e.map((o,a)=>Ogt.test(o)?`[${o}]`:Mgt.test(o)&&!_gt(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join(\"\").replace(/^\\./,\"\")}function Hgt(t,e){let r=[];if(e.methodName!==null&&r.push(de.pretty(t,e.methodName,de.Type.CODE)),e.file!==null){let o=[];o.push(de.pretty(t,e.file,de.Type.PATH)),e.line!==null&&(o.push(de.pretty(t,e.line,de.Type.NUMBER)),e.column!==null&&o.push(de.pretty(t,e.column,de.Type.NUMBER))),r.push(`(${o.join(de.pretty(t,\":\",\"grey\"))})`)}return r.join(\" \")}function gk(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){let a=new Map,n=new Map,u=[...r.keys()].map(A=>[A,new Map]);for(let[A,p]of[...u,...e]){let h=r.get(A)?.map(x=>({text:x,fixable:!1}))??[],E=!1,I=t.getWorkspaceByCwd(A),v=I.manifest.exportTo({});for(let[x,C]of p){if(C.size>1){let R=[...C].map(([L,U])=>{let J=de.pretty(t.configuration,L,de.Type.INSPECT),te=U.size>0?Hgt(t.configuration,U.values().next().value):null;return te!==null?`\n${J} at ${te}`:`\n${J}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${de.pretty(t.configuration,x,de.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=C,L=(0,Ode.default)(v,x);if(JSON.stringify(L)===JSON.stringify(R))continue;if(!o){let U=typeof L>\"u\"?`Missing field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}`:typeof R>\"u\"?`Extraneous field ${de.pretty(t.configuration,x,de.Type.CODE)} currently set to ${de.pretty(t.configuration,L,de.Type.INSPECT)}`:`Invalid field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}, found ${de.pretty(t.configuration,L,de.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>\"u\"?(0,_de.default)(v,x):(0,Mde.default)(v,x,R),E=!0}E&&a.set(I,v)}h.length>0&&n.set(I,h)}return{changedWorkspaces:a,remainingErrors:n}}function Hde(t,{configuration:e}){let r={children:[]};for(let[o,a]of t){let n=[];for(let A of a){let p=A.text.split(/\\n/);A.fixable&&(p[0]=`${de.pretty(e,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:de.tuple(de.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:de.tuple(de.Type.NO_HINT,h)}))})}let u={value:de.tuple(de.Type.LOCATOR,o.anchoredLocator),children:_e.sortMap(n,A=>A.value[1])};r.children.push(u)}return r.children=_e.sortMap(r.children,o=>o.value[1]),r}var Ode,Mde,Ude,_de,wC,Ogt,Mgt,Ugt,v2=Et(()=>{Ye();Ode=$e(d2()),Mde=$e(Q8()),Ude=$e(Lde()),_de=$e(T8()),wC=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 o=Object.hasOwn(e,r)?e[r]:void 0;if(typeof o>\"u\")continue;_e.getArrayWithDefault(this.indexes[r],o).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 o=[],a;for(let[u,A]of r){let p=u,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){o.push([p,A]);continue}let E=new Set(h.get(A)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let I of a)E.has(I)||a.delete(I);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<\"u\"?Object.hasOwn(u,A)&&u[A]===p:Object.hasOwn(u,A)===!1))return!1;return!0})),n}},Ogt=/^[0-9]+$/,Mgt=/^[a-zA-Z0-9_]+$/,Ugt=new Set([\"scripts\",...Ot.allDependencies])});var qde=_(($9t,sH)=>{var qgt;(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(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else{var p=new t.type.Term(\"length\",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(\",\",[p,new t.type.Term(\"!\",[])])),o.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(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=new t.type.Term(\"[]\"),E=0;E<A.value;E++)h=new t.type.Term(\".\",[u,h]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=E.length-1;I>0;I--)E[I].equals(E[I-1])&&E.splice(I,1);for(var v=new t.type.Term(\"[]\"),I=E.length-1;I>=0;I--)v=new t.type.Term(\".\",[E[I],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"msort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=new t.type.Term(\"[]\"),v=E.length-1;v>=0;v--)I=new t.type.Term(\".\",[E[v],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,A])),a.substitution,a)])}}},\"keysort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h,E=u;E.indicator===\"./2\";){if(h=E.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!==\"-/2\"){o.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))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var I=p.sort(t.compare),v=new t.type.Term(\"[]\"),x=I.length-1;x>=0;x--)v=new t.type.Term(\".\",[new t.type.Term(\"-\",[I[x],I[x].pair]),v]),delete I[x].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"take/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;if(h===0){for(var v=new t.type.Term(\"[]\"),h=E.length-1;h>=0;h--)v=new t.type.Term(\".\",[E[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,p])),a.substitution,a)])}}},\"drop/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p])),a.substitution,a)])}},\"reverse/2\":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type(\"list\",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?u:A,I=new t.type.Term(\"[]\",[]);E.indicator===\"./2\";)I=new t.type.Term(\".\",[E.args[0],I]),E=E.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p?A:u])),a.substitution,a)])}},\"list_to_set/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!==\"[]/0\")o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=[],I=new t.type.Term(\"[]\",[]),v,x=0;x<h.length;x++){v=!1;for(var C=0;C<E.length&&!v;C++)v=t.compare(h[x],E[C])===0;v||E.push(h[x])}for(x=E.length-1;x>=0;x--)I=new t.type.Term(\".\",[E[x],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[A,I])),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 sH<\"u\"?sH.exports=function(o){t=o,new t.type.Module(\"lists\",e(),r)}:new t.type.Module(\"lists\",e(),r)})(qgt)});var nme=_(Yr=>{\"use strict\";var $d=process.platform===\"win32\",oH=\"aes-256-cbc\",jgt=\"sha256\",Yde=\"The current environment doesn't support interactive reading from TTY.\",Yn=ve(\"fs\"),jde=process.binding(\"tty_wrap\").TTY,lH=ve(\"child_process\"),c0=ve(\"path\"),cH={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},zf=\"none\",Xc,BC,Gde=!1,l0,mk,aH,Ggt=0,hH=\"\",Zd=[],yk,Wde=!1,uH=!1,D2=!1;function Kde(t){function e(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(o){return\"#\"+o.charCodeAt(0)+\";\"})}return mk.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?t[a]&&o.push(\"--\"+a):r[a]===\"string\"&&t[a]&&o.push(\"--\"+a,e(t[a]))}),o}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function Ygt(t,e){function r(U){var J,te=\"\",ae;for(aH=aH||ve(\"os\").tmpdir();;){J=c0.join(aH,U+te);try{ae=Yn.openSync(J,\"wx\")}catch(fe){if(fe.code===\"EEXIST\"){te++;continue}else throw fe}Yn.closeSync(ae);break}return J}var o,a,n,u={},A,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),I=r(\"readline-sync.exit\"),v=r(\"readline-sync.done\"),x=ve(\"crypto\"),C,R,L;C=x.createHash(jgt),C.update(\"\"+process.pid+Ggt+++Math.random()),L=C.digest(\"hex\"),R=x.createDecipher(oH,L),o=Kde(t),$d?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+l0+\"%Q%\"+o.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+I+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+oH+\"%Q% %Q%\"+L+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+v+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+l0+'\"'+o.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+I+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+oH+'\" \"'+L+'\" >\"'+h+'\"; echo 1 >\"'+v+'\"']),D2&&D2(\"_execFileSync\",o);try{lH.spawn(a,n,e)}catch(U){u.error=new Error(U.message),u.error.method=\"_execFileSync - spawn\",u.error.program=a,u.error.args=n}for(;Yn.readFileSync(v,{encoding:t.encoding}).trim()!==\"1\";);return(A=Yn.readFileSync(I,{encoding:t.encoding}).trim())===\"0\"?u.input=R.update(Yn.readFileSync(h,{encoding:\"binary\"}),\"hex\",t.encoding)+R.final(t.encoding):(p=Yn.readFileSync(E,{encoding:t.encoding}).trim(),u.error=new Error(Yde+(p?`\n`+p:\"\")),u.error.method=\"_execFileSync\",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Yn.unlinkSync(h),Yn.unlinkSync(E),Yn.unlinkSync(I),Yn.unlinkSync(v),u}function Wgt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(l0||($d?process.env.PSModulePath?(l0=\"powershell.exe\",mk=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(l0=\"cscript.exe\",mk=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(l0=\"/bin/sh\",mk=[__dirname+\"/read.sh\"])),$d&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),lH.execFileSync){e=Kde(t),D2&&D2(\"execFileSync\",e);try{r.input=lH.execFileSync(l0,e,a)}catch(n){o=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(Yde+(o?`\n`+o:\"\")),r.error.method=\"execFileSync\",r.error.program=l0,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Ygt(t,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),t.display=\"\"),r}function AH(t){var e=\"\",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Wgt(t);if(n.error)throw n.error;return n.input}return uH&&uH(t),function(){var n,u,A;function p(){return n||(n=process.binding(\"fs\"),u=process.binding(\"constants\")),n}if(typeof zf==\"string\")if(zf=null,$d){if(A=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),I=0;return(E[0]=+E[0])&&(I+=E[0]*1e4),(E[1]=+E[1])&&(I+=E[1]*100),(E[2]=+E[2])&&(I+=E[2]),I}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),zf=process.stdin.fd,BC=process.stdin._handle;else try{zf=p().open(\"CONIN$\",u.O_RDWR,parseInt(\"0666\",8)),BC=new jde(zf,!0)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else{try{Xc=Yn.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof Xc!=\"number\")try{Xc=p().open(\"CONOUT$\",u.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{zf=Yn.openSync(\"/dev/tty\",\"r\"),BC=process.stdin._handle}catch{}}else try{zf=Yn.openSync(\"/dev/tty\",\"r\"),BC=new jde(zf,!1)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else try{Xc=Yn.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,E,I,v;yk=\"\";function x(C){return C===Gde?!0:BC.setRawMode(C)!==0?!1:(Gde=C,!0)}if(Wde||!BC||typeof Xc!=\"number\"&&(t.display||!A)){e=a();return}if(t.display&&(Yn.writeSync(Xc,t.display),t.display=\"\"),!t.displayOnly){if(!x(!A)){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&&(u=new RegExp(\"[^\"+t.limit+\"]\",\"g\"+(t.caseSensitive?\"\":\"i\")));;){E=0;try{E=Yn.readSync(zf,p,0,h)}catch(C){if(C.code!==\"EOF\"){x(!1),e+=a();return}}if(E>0?(I=p.toString(t.encoding,0,E),yk+=I):(I=`\n`,yk+=String.fromCharCode(0)),I&&typeof(v=(I.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(I=v,n=!0),I&&(I=I.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),I&&u&&(I=I.replace(u,\"\")),I&&(A||(t.hideEchoBack?t.mask&&Yn.writeSync(Xc,new Array(I.length+1).join(t.mask)):Yn.writeSync(Xc,I)),e+=I),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Yn.writeSync(Xc,`\n`),x(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?\"\":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`\n`),t.encoding),t.displayOnly?\"\":hH=t.keepWhitespace||t.keyIn?e:e.trim()}function Kgt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function gH(t){return t.replace(/[\\x00-\\x7f]/g,function(e){return\"\\\\x\"+(\"00\"+e.charCodeAt().toString(16)).substr(-2)})}function Rs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]==\"boolean\"&&(r=t.shift(),r&&(e=Object.keys(cH),t.unshift(cH))),t.reduce(function(o,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 u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":u=u!=null?u+\"\":\"\",u&&n!==\"limitMessage\"&&(u=u.replace(/[\\r\\n]/g,\"\")),o[n]=u;break;case\"bufferSize\":!isNaN(u=parseInt(u,10))&&typeof u==\"number\"&&(o[n]=u);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":o[n]=!!u;break;case\"limit\":case\"trueValue\":case\"falseValue\":o[n]=Kgt(u,function(A){var p=typeof A;return p===\"string\"||p===\"number\"||p===\"function\"||A instanceof RegExp}).map(function(A){return typeof A==\"string\"?A.replace(/[\\r\\n]/g,\"\"):A});break;case\"print\":case\"phContent\":case\"preCheck\":o[n]=typeof u==\"function\"?u:void 0;break;case\"prompt\":case\"display\":o[n]=u??\"\";break}})),o},{})}function fH(t,e,r){return e.some(function(o){var a=typeof o;return a===\"string\"?r?t===o:t.toLowerCase()===o.toLowerCase():a===\"number\"?parseFloat(t)===o:a===\"function\"?o(t):o instanceof RegExp?o.test(t):!1})}function dH(t,e){var r=c0.normalize($d?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return t=c0.normalize(t),e?t.replace(/^~(?=\\/|\\\\|$)/,r):t.replace(new RegExp(\"^\"+gH(r)+\"(?=\\\\/|\\\\\\\\|$)\",$d?\"i\":\"\"),\"~\")}function vC(t,e){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",o=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(u,A,p,h,E,I){var v;return A||typeof(v=e(E))!=\"string\"?p:v?(h||\"\")+v+(I||\"\"):\"\"}return t.replace(o,n).replace(a,n)}function Vde(t,e,r){var o,a=[],n=-1,u=0,A=\"\",p;function h(E,I){return I.length>3?(E.push(I[0]+\"...\"+I[I.length-1]),p=!0):I.length&&(E=E.concat(I)),E}return o=t.reduce(function(E,I){return E.concat((I+\"\").split(\"\"))},[]).reduce(function(E,I){var v,x;return e||(I=I.toLowerCase()),v=/^\\d$/.test(I)?1:/^[A-Z]$/.test(I)?2:/^[a-z]$/.test(I)?3:0,r&&v===0?A+=I:(x=I.charCodeAt(0),v&&v===n&&x===u+1?a.push(I):(E=h(E,a),a=[I],n=v),u=x),E},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function Jde(t,e){return t.join(t.length>2?\", \":e?\" / \":\"/\")}function zde(t,e){var r,o,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\":o=e[e.hasOwnProperty(t+\"Src\")?t+\"Src\":t],e.keyIn?(a=Vde(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A===\"string\"||A===\"number\"}),r=Jde(o,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=e[e.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||t!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=hH;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),t===\"CWD\"?r=c0.basename(r):t===\"cwdHome\"&&(r=dH(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+t.replace(/^./,function(u){return u.toUpperCase()})+\"String\"]();break;default:typeof(n=(t.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=Zd[Zd.length-n]||\"\")}return r}function Xde(t){var e=/^(.)-(.)$/.exec(t),r=\"\",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o<a?1:-1,n=o;n!==a+u;n+=u)r+=String.fromCharCode(n);return r}function pH(t){var e=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,o=\"\",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||\"\",r[1]&&(a.push(o),o=\"\"),o+=n;return o&&a.push(o),a}function Zde(t,e){return e.trueValue.length&&fH(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&fH(t,e.falseValue,e.caseSensitive)?!1:t}function $de(t){var e,r,o,a,n,u,A;function p(E){return zde(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=vC(t.display+\"\",p);;){if(e=AH(t),r=!1,o=\"\",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(e))?(n=Zd[0]||\"\",a[1]?r=!0:e=n,h(n+`\n`),r||(t.displayOnly=!0,AH(t),t.displayOnly=!1)):e&&e!==Zd[Zd.length-1]&&(Zd=[e])),!r&&t.cd&&e)switch(u=pH(e),u[0].toLowerCase()){case\"cd\":if(u[1])try{process.chdir(dH(u[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(A=t.preCheck(e,t),e=A.res,A.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||fH(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(o=vC(t.limitMessage,p))}h((o?o+`\n`:\"\")+vC(t.displaySrc+\"\",p))}return Zde(e,t)}Yr._DBG_set_useExt=function(t){Wde=t};Yr._DBG_set_checkOptions=function(t){uH=t};Yr._DBG_set_checkMethod=function(t){D2=t};Yr._DBG_clearHistory=function(){hH=\"\",Zd=[]};Yr.setDefaultOptions=function(t){return cH=Rs(!0,t),Rs(!0)};Yr.question=function(t,e){return $de(Rs(Rs(!0,e),{display:t}))};Yr.prompt=function(t){var e=Rs(!0,t);return e.display=e.prompt,$de(e)};Yr.keyIn=function(t,e){var r=Rs(Rs(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(o){var a=typeof o;return a===\"string\"||a===\"number\"}).map(function(o){return vC(o+\"\",Xde)}),r.limit=gH(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(o){r[o]=r[o].reduce(function(a,n){var u=typeof n;return u===\"string\"||u===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=vC(r.display+\"\",function(o){return zde(o,r)}),Zde(AH(r),r)};Yr.questionEMail=function(t,e){return t==null&&(t=\"Input e-mail address: \"),Yr.question(t,Rs({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}))};Yr.questionNewPassword=function(t,e){var r,o,a,n=Rs({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(x){return x===\"charlist\"?r.text:x===\"length\"?o+\"...\"+a:null}}),u,A,p,h,E,I,v;for(e=e||{},u=vC(e.charlist?e.charlist+\"\":\"$<!-~>\",Xde),(isNaN(o=parseInt(e.min,10))||typeof o!=\"number\")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+gH(u)+\"]{\"+o+\",\"+a+\"}$\"),r=Vde([u],n.caseSensitive,!0),r.text=Jde(r.values,r.suppressed),A=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;!v;)n.limit=h,n.limitMessage=E,I=Yr.question(t,n),n.limit=[I,\"\"],n.limitMessage=p,v=Yr.question(A,n);return I};function eme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o==\"number\"}return Yr.question(t,Rs({limitMessage:\"Input valid number, please.\"},e,{limit:a,cd:!1})),o}Yr.questionInt=function(t,e){return eme(t,e,function(r){return parseInt(r,10)})};Yr.questionFloat=function(t,e){return eme(t,e,parseFloat)};Yr.questionPath=function(t,e){var r,o=\"\",a=Rs({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=dH(n,!0),o=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(I,v){var x=c0.resolve(I+=v+c0.sep);if(!Yn.existsSync(x))Yn.mkdirSync(x);else if(!Yn.statSync(x).isDirectory())throw new Error(\"Non directory already exists: \"+x);return I},\"\")}try{if(u=Yn.existsSync(n),r=u?Yn.realpathSync(n):c0.resolve(n),!e.hasOwnProperty(\"exists\")&&!u||typeof e.exists==\"boolean\"&&e.exists!==u)return o=(u?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(c0.dirname(r)),Yn.closeSync(Yn.openSync(r,\"w\"))),r=Yn.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Yn.statSync(r),e.isFile&&!A.isFile())return o=\"Not file: \"+r,!1;if(e.isDirectory&&!A.isDirectory())return o=\"Not directory: \"+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o=\"Size \"+A.size+\" is out of range: \"+r,!1}if(typeof e.validate==\"function\"&&(p=e.validate(r))!==!0)return typeof p==\"string\"&&(o=p),!1}catch(E){return o=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?o:n!==\"min\"&&n!==\"max\"?null:e.hasOwnProperty(n)?e[n]+\"\":\"\"}});return e=e||{},t==null&&(t='Input path (you can \"cd\" and \"pwd\"): '),Yr.question(t,a),r};function tme(t,e){var r={},o={};return typeof t==\"object\"?(Object.keys(t).forEach(function(a){typeof t[a]==\"function\"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=pH(a),n=r.args[0]||\"\",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty(\"_\")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=pH(a),r.hRes=typeof t==\"function\"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}Yr.promptCL=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=tme(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,Yr.prompt(r),o.args};Yr.promptLoop=function(t,e){for(var r=Rs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(Yr.prompt(r)););};Yr.promptCLLoop=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=tme(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;Yr.prompt(r),!o.hRes;);};Yr.promptSimShell=function(t){return Yr.prompt(Rs({hideEchoBack:!1,history:!0},t,{prompt:function(){return $d?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function rme(t,e,r){var o;return t==null&&(t=\"Are you sure? \"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),o=Yr.keyIn(t,Rs(e,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof o==\"boolean\"?o:\"\"}Yr.keyInYN=function(t,e){return rme(t,e)};Yr.keyInYNStrict=function(t,e){return rme(t,e,\"yn\")};Yr.keyInPause=function(t,e){t==null&&(t=\"Continue...\"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s+$/,\"\")+\" (Hit any key)\"),Yr.keyIn(t,Rs({limit:null},e,{hideEchoBack:!0,mask:\"\"}))};Yr.keyInSelect=function(t,e,r){var o=Rs({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={},u=49,A=`\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(u);a+=E,n[E]=h,A+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,A+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),o.limit=a,A+=`\n`,e==null&&(e=\"Choose one from list: \"),(e+=\"\")&&((!r||r.guide!==!1)&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),A+=e),n[Yr.keyIn(A,o).toLowerCase()]};Yr.getRawInput=function(){return yk};function S2(t,e){var r;return e.length&&(r={},r[t]=e[0]),Yr.setDefaultOptions(r)[t]}Yr.setPrint=function(){return S2(\"print\",arguments)};Yr.setPrompt=function(){return S2(\"prompt\",arguments)};Yr.setEncoding=function(){return S2(\"encoding\",arguments)};Yr.setMask=function(){return S2(\"mask\",arguments)};Yr.setBufferSize=function(){return S2(\"bufferSize\",arguments)}});var mH=_((t7t,hl)=>{(function(){var t={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,P,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:P,get:function(z,X){return X===this.text.length||X>this.text.length?\"end_of_file\":this.text.substring(X,X+z)},put:function(z,X){return X===\"end_of_file\"?(this.text+=z,!0):X===\"past_end_of_file\"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z===\"end_of_stream\")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var Z=n(this.text[Math.floor(z/2)],0);return z%2===0?Z&255:Z/256>>>0},put_byte:function(z,X){var Z=X===\"end_of_stream\"?this.text.length:Math.floor(X/2);if(this.text.length<Z)return null;var ie=this.text.length===Z?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ie=ie/256>>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===Z?this.text+=u(ie):this.text=this.text.substring(0,Z)+u(ie)+this.text.substring(Z+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,P){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,P){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,P,y){var F=ve(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(X,Z){var ie=new Buffer(X);return F.readSync(z,ie,0,X,Z),ie.toString()},put:function(X,Z){var ie=Buffer.from(X);if(Z===\"end_of_file\")F.writeSync(z,ie);else{if(Z===\"past_end_of_file\")return null;F.writeSync(z,ie,0,ie.length,Z)}return!0},get_byte:function(X){return null},put_byte:function(X,Z){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,P){for(var y,F=nme();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,P){return process.stdout.write(w),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(w,P){return w.indexOf(P)}:e=function(w,P){for(var y=w.length,F=0;F<y;F++)if(P===w[F])return F;return-1};var r=function(w,P){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=P(y,w[z]);return y}},o;Array.prototype.map?o=function(w,P){return w.map(P)}:o=function(w,P){for(var y=[],F=w.length,z=0;z<F;z++)y.push(P(w[z]));return y};var a;Array.prototype.filter?a=function(w,P){return w.filter(P)}:a=function(w,P){for(var y=[],F=w.length,z=0;z<F;z++)P(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,P){return w.codePointAt(P)}:n=function(w,P){return w.charCodeAt(P)};var u;String.fromCodePoint?u=function(){return String.fromCodePoint.apply(null,arguments)}:u=function(){return String.fromCharCode.apply(null,arguments)};var A=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 I(w){var P=[],y=!1;return w.replace(h,function(F,z,X,Z,ie,Pe,Ne,ot,dt,jt,$t,bt,an,Qr,mr,br,Wr){switch(!0){case dt!==void 0:return P.push(parseInt(dt,16)),\"\";case jt!==void 0:return P.push(parseInt(jt,8)),\"\";case $t!==void 0:case bt!==void 0:case an!==void 0:case Qr!==void 0:case mr!==void 0:return P.push(n(F.substr(1),0)),\"\";case Wr!==void 0:return P.push(n(Wr,0)),\"\";case br!==void 0:y=!0;default:return P.push(E[F]),\"\"}}),y?null:P}function v(w,P){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function(Z,ie){return u(parseInt(ie,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function(Z,ie){return u(parseInt(ie,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),X=w.charAt(F+1);if(z===P&&X===P)F++,y+=P;else if(z===\"\\\\\")if([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"'\",'\"',\"\\\\\",\"a\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\"].indexOf(X)!==-1)switch(F+=1,X){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 x(w){for(var P=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":P+=\"\\\\'\";break;case\"\\\\\":P+=\"\\\\\\\\\";break;case\"\\b\":P+=\"\\\\b\";break;case\"\\f\":P+=\"\\\\f\";break;case`\n`:P+=\"\\\\n\";break;case\"\\r\":P+=\"\\\\r\";break;case\"\t\":P+=\"\\\\t\";break;case\"\\v\":P+=\"\\\\v\";break;default:P+=w.charAt(y);break}return P}function C(w){var P=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(P,16);case\"0b\":return parseInt(P,2);case\"0o\":return parseInt(P,8);case\"0'\":return I(P)[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 L(w,P){return w.get_flag(\"char_conversion\").id===\"on\"?P.replace(/./g,function(y){return w.get_char_conversion(y)}):P}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 P,y=0,F=0,z=0,X=[],Z=!1;if(w){var ie=this.tokens[w-1];y=ie.len,P=L(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else P=this.text;if(/^\\s*$/.test(P))return null;for(;P!==\"\";){var Pe=[],Ne=!1;if(/^\\n/.exec(P)!==null){F++,z=0,y++,P=P.replace(/\\n/,\"\"),Z=!0;continue}for(var ot in R)if(R.hasOwnProperty(ot)){var dt=R[ot].exec(P);dt&&Pe.push({value:dt[0],name:ot,matches:dt})}if(!Pe.length)return this.set_last_tokens([{value:P,matches:[],name:\"lexical\",line:F,start:z}]);var ie=r(Pe,function(Qr,mr){return Qr.value.length>=mr.value.length?Qr:mr});switch(ie.start=z,ie.line=F,P=P.replace(ie.value,\"\"),z+=ie.value.length,y+=ie.value.length,ie.name){case\"atom\":ie.raw=ie.value,ie.value.charAt(0)===\"'\"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),\"'\"),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\"));break;case\"number\":ie.float=ie.value.substring(0,2)!==\"0x\"&&ie.value.match(/[.eE]/)!==null&&ie.value!==\"0'.\",ie.value=C(ie.value),ie.blank=Ne;break;case\"string\":var jt=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),jt),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\");break;case\"whitespace\":var $t=X[X.length-1];$t&&($t.space=!0),Ne=!0;continue;case\"r_bracket\":X.length>0&&X[X.length-1].name===\"l_bracket\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"{}\",ie.raw=\"{}\",ie.space=!1);break;case\"r_brace\":X.length>0&&X[X.length-1].name===\"l_brace\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"[]\",ie.raw=\"[]\",ie.space=!1);break}ie.len=y,X.push(ie),Ne=!1}var bt=this.set_last_tokens(X);return bt.length===0?null:bt};function J(w,P,y,F,z){if(!P[y])return{type:A,value:b.error.syntax(P[y-1],\"expression expected\",!0)};var X;if(F===\"0\"){var Z=P[y];switch(Z.name){case\"number\":return{type:p,len:y+1,value:new b.type.Num(Z.value,Z.float)};case\"variable\":return{type:p,len:y+1,value:new b.type.Var(Z.value)};case\"string\":var ie;switch(w.get_flag(\"double_quotes\").id){case\"atom\":ie=new H(Z.value,[]);break;case\"codes\":ie=new H(\"[]\",[]);for(var Pe=Z.value.length-1;Pe>=0;Pe--)ie=new H(\".\",[new b.type.Num(n(Z.value,Pe),!1),ie]);break;case\"chars\":ie=new H(\"[]\",[]);for(var Pe=Z.value.length-1;Pe>=0;Pe--)ie=new H(\".\",[new b.type.Term(Z.value.charAt(Pe),[]),ie]);break}return{type:p,len:y+1,value:ie};case\"l_paren\":var bt=J(w,P,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:P[bt.len]&&P[bt.len].name===\"r_paren\"?(bt.len++,bt):{type:A,derived:!0,value:b.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],\") or operator expected\",!P[bt.len])};case\"l_bracket\":var bt=J(w,P,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:P[bt.len]&&P[bt.len].name===\"r_bracket\"?(bt.len++,bt.value=new H(\"{}\",[bt.value]),bt):{type:A,derived:!0,value:b.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],\"} or operator expected\",!P[bt.len])}}var Ne=te(w,P,y,z);return Ne.type===p||Ne.derived||(Ne=ae(w,P,y),Ne.type===p||Ne.derived)?Ne:{type:A,derived:!1,value:b.error.syntax(P[y],\"unexpected token\")}}var ot=w.__get_max_priority(),dt=w.__get_next_priority(F),jt=y;if(P[y].name===\"atom\"&&P[y+1]&&(P[y].space||P[y+1].name!==\"l_paren\")){var Z=P[y++],$t=w.__lookup_operator_classes(F,Z.value);if($t&&$t.indexOf(\"fy\")>-1){var bt=J(w,P,y,F,z);if(bt.type!==A)return Z.value===\"-\"&&!Z.space&&b.type.is_number(bt.value)?{value:new b.type.Num(-bt.value.value,bt.value.is_float),len:bt.len,type:p}:{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}else if($t&&$t.indexOf(\"fx\")>-1){var bt=J(w,P,y,dt,z);if(bt.type!==A)return{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}}y=jt;var bt=J(w,P,y,dt,z);if(bt.type===p){y=bt.len;var Z=P[y];if(P[y]&&(P[y].name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)||P[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var an=dt,Qr=F,$t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"xf\")>-1)return{value:new b.type.Term(Z.value,[bt.value]),len:++bt.len,type:p};if($t.indexOf(\"xfx\")>-1){var mr=J(w,P,y+1,an,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if($t.indexOf(\"xfy\")>-1){var mr=J(w,P,y+1,Qr,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if(bt.type!==A)for(;;){y=bt.len;var Z=P[y];if(Z&&Z.name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)){var $t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"yf\")>-1)bt={value:new b.type.Term(Z.value,[bt.value]),len:++y,type:p};else if($t.indexOf(\"yfx\")>-1){var mr=J(w,P,++y,an,z);if(mr.type===A)return mr.derived=!0,mr;y=mr.len,bt={value:new b.type.Term(Z.value,[bt.value,mr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:b.error.syntax(P[bt.len-1],\"operator expected\")};return bt}return bt}function te(w,P,y,F){if(!P[y]||P[y].name===\"atom\"&&P[y].raw===\".\"&&!F&&(P[y].space||!P[y+1]||P[y+1].name!==\"l_paren\"))return{type:A,derived:!1,value:b.error.syntax(P[y-1],\"unfounded token\")};var z=P[y],X=[];if(P[y].name===\"atom\"&&P[y].raw!==\",\"){if(y++,P[y-1].space)return{type:p,len:y,value:new b.type.Term(z.value,X)};if(P[y]&&P[y].name===\"l_paren\"){if(P[y+1]&&P[y+1].name===\"r_paren\")return{type:A,derived:!0,value:b.error.syntax(P[y+1],\"argument expected\")};var Z=J(w,P,++y,\"999\",!0);if(Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],\"argument expected\",!P[y])};for(X.push(Z.value),y=Z.len;P[y]&&P[y].name===\"atom\"&&P[y].value===\",\";){if(Z=J(w,P,y+1,\"999\",!0),Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],\"argument expected\",!P[y+1])};X.push(Z.value),y=Z.len}if(P[y]&&P[y].name===\"r_paren\")y++;else return{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],\", or ) expected\",!P[y])}}return{type:p,len:y,value:new b.type.Term(z.value,X)}}return{type:A,derived:!1,value:b.error.syntax(P[y],\"term expected\")}}function ae(w,P,y){if(!P[y])return{type:A,derived:!1,value:b.error.syntax(P[y-1],\"[ expected\")};if(P[y]&&P[y].name===\"l_brace\"){var F=J(w,P,++y,\"999\",!0),z=[F.value],X=void 0;if(F.type===A)return P[y]&&P[y].name===\"r_brace\"?{type:p,len:y+1,value:new b.type.Term(\"[]\",[])}:{type:A,derived:!0,value:b.error.syntax(P[y],\"] expected\")};for(y=F.len;P[y]&&P[y].name===\"atom\"&&P[y].value===\",\";){if(F=J(w,P,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],\"argument expected\",!P[y+1])};z.push(F.value),y=F.len}var Z=!1;if(P[y]&&P[y].name===\"bar\"){if(Z=!0,F=J(w,P,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],\"argument expected\",!P[y+1])};X=F.value,y=F.len}return P[y]&&P[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],Z?\"] expected\":\", or | or ] expected\",!P[y])}}return{type:A,derived:!1,value:b.error.syntax(P[y],\"list expected\")}}function fe(w,P,y){var F=P[y].line,z=J(w,P,y,w.__get_max_priority(),!1),X=null,Z;if(z.type!==A)if(y=z.len,P[y]&&P[y].name===\"atom\"&&P[y].raw===\".\")if(y++,b.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(X=new b.type.Rule(z.value.args[0],we(z.value.args[1])),Z={value:X,len:y,type:p}):z.value.indicator===\"-->/2\"?(X=he(new b.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=we(X.body),Z={value:X,len:y,type:b.type.is_rule(X)?p:A}):(X=new b.type.Rule(z.value,null),Z={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&w.throw_warning(b.warning.singleton(ie,X.head.indicator,F))}return Z}else return{type:A,value:b.error.syntax(P[y],\"callable expected\")};else return{type:A,value:b.error.syntax(P[y]?P[y]:P[y-1],\". or operator expected\")};return z}function ce(w,P,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={},X;F.new_text(P);var Z=0,ie=F.get_tokens(Z);do{if(ie===null||!ie[Z])break;var Pe=fe(w,ie,Z);if(Pe.type===A)return new H(\"throw\",[Pe.value]);if(Pe.value.body===null&&Pe.value.head.indicator===\"?-/1\"){var Ne=new Je(w.session);Ne.add_goal(Pe.value.head.args[0]),Ne.answer(function(dt){b.type.is_error(dt)?w.throw_warning(dt.args[0]):(dt===!1||dt===null)&&w.throw_warning(b.warning.failed_goal(Pe.value.head.args[0],Pe.len))}),Z=Pe.len;var ot=!0}else if(Pe.value.body===null&&Pe.value.head.indicator===\":-/1\"){var ot=w.run_directive(Pe.value.head.args[0]);Z=Pe.len,Pe.value.head.args[0].indicator===\"char_conversion/2\"&&(ie=F.get_tokens(Z),Z=0)}else{X=Pe.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(jt){return jt.dynamic}),z[X]=!0);var ot=w.add_rule(Pe.value,y);Z=Pe.len}if(!ot)return ot}while(!0);return!0}function me(w,P){var y=new U(w);y.new_text(P);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=J(w,z,0,w.__get_max_priority(),!1);if(X.type!==A){var Z=X.len,ie=Z;if(z[Z]&&z[Z].name===\"atom\"&&z[Z].raw===\".\")w.add_goal(we(X.value));else{var Pe=z[Z];return new H(\"throw\",[b.error.syntax(Pe||z[Z-1],\". or operator expected\",!Pe)])}F=X.len+1}else return new H(\"throw\",[X.value])}while(!0);return!0}function he(w,P){w=w.rename(P);var y=P.next_free_variable(),F=Be(w.body,y,P);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new H(w.head.id,w.head.args),w)}function Be(w,P,y){var F;if(b.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:P,error:!1};if(b.type.is_term(w)&&w.indicator===\",/2\"){var z=Be(w.args[0],P,y);if(z.error)return z;var X=Be(w.args[1],z.variable,y);return X.error?X:{value:new H(\",\",[z.value,X.value]),variable:X.variable,error:!1}}else{if(b.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:P,error:!1};if(b.type.is_empty_list(w))return{value:new H(\"true\",[]),variable:P,error:!1};if(b.type.is_list(w)){F=y.next_free_variable();for(var Z=w,ie;Z.indicator===\"./2\";)ie=Z,Z=Z.args[1];return b.type.is_variable(Z)?{value:b.error.instantiation(\"DCG\"),variable:P,error:!0}:b.type.is_empty_list(Z)?(ie.args[1]=F,{value:new H(\"=\",[P,w]),variable:F,error:!1}):{value:b.error.type(\"list\",w,\"DCG\"),variable:P,error:!0}}else return b.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([P,F]),w=new H(w.id,w.args),{value:w,variable:F,error:!1}):{value:b.error.type(\"callable\",w,\"DCG\"),variable:P,error:!0}}}function we(w){return b.type.is_variable(w)?new H(\"call\",[w]):b.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new H(w.id,[we(w.args[0]),we(w.args[1])]):w}function g(w,P){for(var y=P||new b.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new b.type.Term(\".\",[w[F],y]);return y}function Ee(w,P){for(var y=w.length-1;y>=0;y--)w[y]===P&&w.splice(y,1)}function Se(w){for(var P={},y=[],F=0;F<w.length;F++)w[F]in P||(y.push(w[F]),P[w[F]]=!0);return y}function le(w,P,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(P);break}}}function ne(w){return function(P,y,F){var z=F.args[0],X=F.args.slice(1,w);if(b.type.is_variable(z))P.throw_error(b.error.instantiation(P.level));else if(!b.type.is_callable(z))P.throw_error(b.error.type(\"callable\",z,P.level));else{var Z=new H(z.id,z.args.concat(X));P.prepend([new xe(y.goal.replace(Z),y.substitution,y)])}}}function ee(w){for(var P=w.length-1;P>=0;P--)if(w.charAt(P)===\"/\")return new H(\"/\",[new H(w.substring(0,P)),new Fe(parseInt(w.substring(P+1)),!1)])}function Ie(w){this.id=w}function Fe(w,P){this.is_float=P!==void 0?P:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var At=0;function H(w,P,y){this.ref=y||++At,this.id=w,this.args=P||[],this.indicator=w+\"/\"+this.args.length}var at=0;function Re(w,P,y,F,z,X){this.id=at++,this.stream=w,this.mode=P,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:\"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 ke(w){w=w||{},this.links=w}function xe(w,P,y){P=P||new ke,y=y||null,this.goal=w,this.substitution=P,this.parent=y}function He(w,P,y){this.head=w,this.body=P,this.dynamic=y||!1}function Te(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new Je(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof hl<\"u\"&&hl.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(P){return P.substitution},this.format_error=function(P){return P.goal},this.flag={bounded:b.flag.bounded.value,max_integer:b.flag.max_integer.value,min_integer:b.flag.min_integer.value,integer_rounding_function:b.flag.integer_rounding_function.value,char_conversion:b.flag.char_conversion.value,debug:b.flag.debug.value,max_arity:b.flag.max_arity.value,unknown:b.flag.unknown.value,double_quotes:b.flag.double_quotes.value,occurs_check:b.flag.occurs_check.value,dialect:b.flag.dialect.value,version_data:b.flag.version_data.value,nodejs:b.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 Je(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 qe(w,P,y){this.id=w,this.rules=P,this.exports=y,b.module[w]=this}qe.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},Ie.prototype.unify=function(w,P){if(P&&e(w.variables(),this.id)!==-1&&!b.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Fe.prototype.unify=function(w,P){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},H.prototype.unify=function(w,P){if(b.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F<this.args.length;F++){var z=b.unify(this.args[F].apply(y),w.args[F].apply(y),P);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Re.prototype.unify=function(w,P){return b.type.is_stream(w)&&this.id===w.id?new ke:null},Ie.prototype.toString=function(w){return this.id},Fe.prototype.toString=function(w){return this.is_float&&e(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},H.prototype.toString=function(w,P,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,P=P===void 0?1200:P,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&b.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[X]+(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 Z=\"[\"+this.args[0].toString(w),ie=this.args[1];ie.indicator===\"./2\";)Z+=\", \"+ie.args[0].toString(w),ie=ie.args[1];return ie.indicator!==\"[]/0\"&&(Z+=\"|\"+ie.toString(w)),Z+=\"]\",Z;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var Pe=this.id,Ne=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Ne===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(Pe)&&Pe!==\"{}\"&&Pe!==\"[]\"&&(Pe=\"'\"+x(Pe)+\"'\"),Pe+(this.args.length?\"(\"+o(this.args,function($t){return $t.toString(w)}).join(\", \")+\")\":\"\");var ot=Ne.priority>P.priority||Ne.priority===P.priority&&(Ne.class===\"xfy\"&&this.indicator!==P.indicator||Ne.class===\"yfx\"&&this.indicator!==P.indicator||this.indicator===P.indicator&&Ne.class===\"yfx\"&&y===\"right\"||this.indicator===P.indicator&&Ne.class===\"xfy\"&&y===\"left\");Ne.indicator=this.indicator;var dt=ot?\"(\":\"\",jt=ot?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Ne.class)!==-1?dt+Pe+\" \"+this.args[0].toString(w,Ne)+jt:[\"yf\",\"xf\"].indexOf(Ne.class)!==-1?dt+this.args[0].toString(w,Ne)+\" \"+Pe+jt:dt+this.args[0].toString(w,Ne,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Ne,\"right\")+jt}},Re.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},ke.prototype.toString=function(w){var P=\"{\";for(var y in this.links)!this.links.hasOwnProperty(y)||(P!==\"{\"&&(P+=\", \"),P+=y+\"/\"+this.links[y].toString(w));return P+=\"}\",P},xe.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},He.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},Te.prototype.toString=function(w){for(var P=\"\",y=0;y<this.modules.length;y++)P+=\":- use_module(library(\"+this.modules[y]+`)).\n`;P+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)P+=this.rules[key][y].toString(w),P+=`\n`;return P},Ie.prototype.clone=function(){return new Ie(this.id)},Fe.prototype.clone=function(){return new Fe(this.value,this.is_float)},H.prototype.clone=function(){return new H(this.id,o(this.args,function(w){return w.clone()}))},Re.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},ke.prototype.clone=function(){var w={};for(var P in this.links)!this.links.hasOwnProperty(P)||(w[P]=this.links[P].clone());return new ke(w)},xe.prototype.clone=function(){return new xe(this.goal.clone(),this.substitution.clone(),this.parent)},He.prototype.clone=function(){return new He(this.head.clone(),this.body!==null?this.body.clone():null)},Ie.prototype.equals=function(w){return b.type.is_variable(w)&&this.id===w.id},Fe.prototype.equals=function(w){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},H.prototype.equals=function(w){if(!b.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var P=0;P<this.args.length;P++)if(!this.args[P].equals(w.args[P]))return!1;return!0},Re.prototype.equals=function(w){return b.type.is_stream(w)&&this.id===w.id},ke.prototype.equals=function(w){var P;if(!b.type.is_substitution(w))return!1;for(P in this.links)if(!!this.links.hasOwnProperty(P)&&(!w.links[P]||!this.links[P].equals(w.links[P])))return!1;for(P in w.links)if(!!w.links.hasOwnProperty(P)&&!this.links[P])return!1;return!0},xe.prototype.equals=function(w){return b.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},He.prototype.equals=function(w){return b.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},Ie.prototype.rename=function(w){return w.get_free_variable(this)},Fe.prototype.rename=function(w){return this},H.prototype.rename=function(w){return new H(this.id,o(this.args,function(P){return P.rename(w)}))},Re.prototype.rename=function(w){return this},He.prototype.rename=function(w){return new He(this.head.rename(w),this.body!==null?this.body.rename(w):null)},Ie.prototype.variables=function(){return[this.id]},Fe.prototype.variables=function(){return[]},H.prototype.variables=function(){return[].concat.apply([],o(this.args,function(w){return w.variables()}))},Re.prototype.variables=function(){return[]},He.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},Ie.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},Fe.prototype.apply=function(w){return this},H.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var P=[],y=this;y.indicator===\"./2\";)P.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=P.length-1;z>=0;z--)F=new H(\".\",[P[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(w)}),this.ref)},Re.prototype.apply=function(w){return this},He.prototype.apply=function(w){return new He(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.prototype.apply=function(w){var P,y={};for(P in this.links)!this.links.hasOwnProperty(P)||(y[P]=this.links[P].apply(w));return new ke(y)},H.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},H.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new H(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new H(\",\",[w,this.args[1]]):w},H.prototype.search=function(w){if(b.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var P=0;P<this.args.length;P++)if(b.type.is_term(this.args[P])&&this.args[P].search(w))return!0;return!1},Te.prototype.get_current_input=function(){return this.current_input},Je.prototype.get_current_input=function(){return this.session.get_current_input()},Te.prototype.get_current_output=function(){return this.current_output},Je.prototype.get_current_output=function(){return this.session.get_current_output()},Te.prototype.set_current_input=function(w){this.current_input=w},Je.prototype.set_current_input=function(w){return this.session.set_current_input(w)},Te.prototype.set_current_output=function(w){this.current_input=w},Je.prototype.set_current_output=function(w){return this.session.set_current_output(w)},Te.prototype.get_stream_by_alias=function(w){return this.streams[w]},Je.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},Te.prototype.file_system_open=function(w,P,y){return this.file_system.open(w,P,y)},Je.prototype.file_system_open=function(w,P,y){return this.session.file_system_open(w,P,y)},Te.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},Je.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},Te.prototype.parse=function(w){return this.thread.parse(w)},Je.prototype.parse=function(w){var P=new U(this);P.new_text(w);var y=P.get_tokens();if(y===null)return!1;var F=J(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},Te.prototype.get_flag=function(w){return this.flag[w]},Je.prototype.get_flag=function(w){return this.session.get_flag(w)},Te.prototype.add_rule=function(w,P){return P=P||{},P.from=P.from?P.from:\"$tau-js\",this.src_predicates[w.head.indicator]=P.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},Je.prototype.add_rule=function(w,P){return this.session.add_rule(w,P)},Te.prototype.run_directive=function(w){this.thread.run_directive(w)},Je.prototype.run_directive=function(w){return b.type.is_directive(w)?(b.directive[w.indicator](this,w),!0):!1},Te.prototype.__get_max_priority=function(){return\"1200\"},Je.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},Te.prototype.__get_next_priority=function(w){var P=0;w=parseInt(w);for(var y in this.__operators)if(!!this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>P&&F<w&&(P=F)}return P.toString()},Je.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},Te.prototype.__lookup_operator_classes=function(w,P){return this.__operators.hasOwnProperty(w)&&this.__operators[w][P]instanceof Array&&this.__operators[w][P]||!1},Je.prototype.__lookup_operator_classes=function(w,P){return this.session.__lookup_operator_classes(w,P)},Te.prototype.lookup_operator=function(w,P){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(P===0||this.__operators[y][w][F].length===P+1)return{priority:y,class:this.__operators[y][w][F]}}return null},Je.prototype.lookup_operator=function(w,P){return this.session.lookup_operator(w,P)},Te.prototype.throw_warning=function(w){this.thread.throw_warning(w)},Je.prototype.throw_warning=function(w){this.warnings.push(w)},Te.prototype.get_warnings=function(){return this.thread.get_warnings()},Je.prototype.get_warnings=function(){return this.warnings},Te.prototype.add_goal=function(w,P){this.thread.add_goal(w,P)},Je.prototype.add_goal=function(w,P,y){y=y||null,P===!0&&(this.points=[]);for(var F=w.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new Ie(F[X]);this.points.push(new xe(w,new ke(z),y))},Te.prototype.consult=function(w,P){return this.thread.consult(w,P)},Je.prototype.consult=function(w,P){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),X=z.getAttribute(\"type\");X!==null&&X.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,P)},Te.prototype.query=function(w){return this.thread.query(w)},Je.prototype.query=function(w){return this.points=[],this.debugger_points=[],me(this,w)},Te.prototype.head_point=function(){return this.thread.head_point()},Je.prototype.head_point=function(){return this.points[this.points.length-1]},Te.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},Je.prototype.get_free_variable=function(w){var P=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(P=this.head_point().substitution.domain());e(P,b.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new Ie(b.format_variable(this.session.rename));this.session.renamed_variables[w.id]=b.format_variable(this.session.rename)}return new Ie(this.session.renamed_variables[w.id])},Te.prototype.next_free_variable=function(){return this.thread.next_free_variable()},Je.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,b.format_variable(this.session.rename))!==-1;)this.session.rename++;return new Ie(b.format_variable(this.session.rename))},Te.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},Je.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Te.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},Je.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Te.prototype.prepend=function(w){return this.thread.prepend(w)},Je.prototype.prepend=function(w){for(var P=w.length-1;P>=0;P--)this.points.push(w[P])},Te.prototype.success=function(w,P){return this.thread.success(w,P)},Je.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new xe(w.goal.replace(null),w.substitution,y)])},Te.prototype.throw_error=function(w){return this.thread.throw_error(w)},Je.prototype.throw_error=function(w){this.prepend([new xe(new H(\"throw\",[w]),new ke,null,null)])},Te.prototype.step_rule=function(w,P){return this.thread.step_rule(w,P)},Je.prototype.step_rule=function(w,P){var y=P.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 X=b.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return b.module[F[z]].rules[y]}return null},Te.prototype.step=function(){return this.thread.step()},Je.prototype.step=function(){if(this.points.length!==0){var w=!1,P=this.points.pop();if(this.debugger&&this.debugger_states.push(P),b.type.is_term(P.goal)){var y=P.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=P;X.parent!==null&&X.parent.goal.search(y);)X=X.parent;if(this.level=X.parent===null?\"top_level/0\":X.parent.goal.select().indicator,b.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&b.type.is_builtin(y))this.__call_indicator=y.indicator,w=b.predicate[y.indicator](this,P,y);else{var Z=this.step_rule(F,y);if(Z===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(b.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(Z instanceof Function)w=Z(this,P,y);else{for(var ie in Z)if(!!Z.hasOwnProperty(ie)){var Pe=Z[ie];this.session.renamed_variables={},Pe=Pe.rename(this);var Ne=this.get_flag(\"occurs_check\").indicator===\"true/0\",ot=new xe,dt=b.unify(y,Pe.head,Ne);dt!==null&&(ot.goal=P.goal.replace(Pe.body),ot.goal!==null&&(ot.goal=ot.goal.apply(dt)),ot.substitution=P.substitution.apply(dt),ot.parent=P,z.push(ot))}this.prepend(z)}}}}else b.type.is_variable(P.goal)?this.throw_error(b.error.instantiation(this.level)):this.throw_error(b.error.type(\"callable\",P.goal,this.level));return w}},Te.prototype.answer=function(w){return this.thread.answer(w)},Je.prototype.answer=function(w){w=w||function(P){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},Te.prototype.answers=function(w,P,y){return this.thread.answers(w,P,y)},Je.prototype.answers=function(w,P,y){var F=P||1e3,z=this;if(P<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,P-1,y)},1):y&&y()})},Te.prototype.again=function(w){return this.thread.again(w)},Je.prototype.again=function(w){for(var P,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&&!b.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):b.type.is_error(this.head_point().goal)?(P=this.session.format_error(this.points.pop()),this.points=[],z(P)):(this.debugger&&this.debugger_states.push(this.head_point()),P=this.session.format_success(this.points.pop()),z(P))}},Te.prototype.unfold=function(w){if(w.body===null)return!1;var P=w.head,y=w.body,F=y.select(),z=new Je(this),X=[];z.add_goal(F),z.step();for(var Z=z.points.length-1;Z>=0;Z--){var ie=z.points[Z],Pe=P.apply(ie.substitution),Ne=y.replace(ie.goal);Ne!==null&&(Ne=Ne.apply(ie.substitution)),X.push(new He(Pe,Ne))}var ot=this.rules[P.indicator],dt=e(ot,w);return X.length>0&&dt!==-1?(ot.splice.apply(ot,[dt,1].concat(X)),!0):!1},Je.prototype.unfold=function(w){return this.session.unfold(w)},Ie.prototype.interpret=function(w){return b.error.instantiation(w.level)},Fe.prototype.interpret=function(w){return this},H.prototype.interpret=function(w){return b.type.is_unitary_list(this)?this.args[0].interpret(w):b.operate(w,this)},Ie.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},Fe.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},H.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 P=0;P<this.args.length;P++){var y=b.compare(this.args[P],w.args[P]);if(y!==0)return y}return 0},ke.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},ke.prototype.filter=function(w){var P={};for(var y in this.links)if(!!this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(P[y]=F)}return new ke(P)},ke.prototype.exclude=function(w){var P={};for(var y in this.links)!this.links.hasOwnProperty(y)||e(w,y)===-1&&(P[y]=this.links[y]);return new ke(P)},ke.prototype.add=function(w,P){this.links[w]=P},ke.prototype.domain=function(w){var P=w===!0?function(z){return z}:function(z){return new Ie(z)},y=[];for(var F in this.links)y.push(P(F));return y},Ie.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},Fe.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},H.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+o(this.args,function(w){return w.compile()})+\"])\"},He.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},Te.prototype.compile=function(){var w,P=[],y;for(var F in this.rules)if(!!this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());w+=y.join(),w+=\"]\",P.push(w)}return\"{\"+P.join()+\"};\"},Ie.prototype.toJavaScript=function(){},Fe.prototype.toJavaScript=function(){return this.value},H.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(b.type.is_list(this)){for(var w=[],P=this,y;P.indicator===\"./2\";){if(y=P.args[0].toJavaScript(),y===void 0)return;w.push(y),P=P.args[1]}if(P.indicator===\"[]/0\")return w}},He.prototype.singleton_variables=function(){var w=this.head.variables(),P={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)P[w[F]]===void 0&&(P[w[F]]=0),P[w[F]]++;for(var z in P)z!==\"_\"&&P[z]===1&&y.push(z);return y};var b={__env:typeof hl<\"u\"&&hl.exports?global:window,module:{},version:t,parser:{tokenizer:U,expression:J},utils:{str_indicator:ee,codePointAt:n,fromCodePoint:u},statistics:{getCountTerms:function(){return At}},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 H(w?\"true\":\"false\",[])},number:function(w){return new Fe(w,w%1!==0)},string:function(w){return new H(w,[])},list:function(w){for(var P=[],y,F=0;F<w.length;F++){if(y=b.fromJavaScript.apply(w[F]),y===void 0)return;P.push(y)}return g(P)},variable:function(w){return new Ie(\"_\")},any:function(w){}},apply:function(w){for(var P in b.fromJavaScript.test)if(P!==\"any\"&&b.fromJavaScript.test[P](w))return b.fromJavaScript.conversion[P](w);return b.fromJavaScript.conversion.any(w)}},type:{Var:Ie,Num:Fe,Term:H,Rule:He,State:xe,Stream:Re,Module:qe,Thread:Je,Session:Te,Substitution:ke,order:[Ie,Fe,H,Re],compare:function(w,P){var y=e(b.type.order,w.constructor),F=e(b.type.order,P.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===Fe){if(w.is_float&&P.is_float)return 0;if(w.is_float)return-1;if(P.is_float)return 1}return 0},is_substitution:function(w){return w instanceof ke},is_state:function(w){return w instanceof xe},is_rule:function(w){return w instanceof He},is_variable:function(w){return w instanceof Ie},is_stream:function(w){return w instanceof Re},is_anonymous_var:function(w){return w instanceof Ie&&w.id===\"_\"},is_callable:function(w){return w instanceof H},is_number:function(w){return w instanceof Fe},is_integer:function(w){return w instanceof Fe&&!w.is_float},is_float:function(w){return w instanceof Fe&&w.is_float},is_term:function(w){return w instanceof H},is_atom:function(w){return w instanceof H&&w.args.length===0},is_ground:function(w){if(w instanceof Ie)return!1;if(w instanceof H){for(var P=0;P<w.args.length;P++)if(!b.type.is_ground(w.args[P]))return!1}return!0},is_atomic:function(w){return w instanceof H&&w.args.length===0||w instanceof Fe},is_compound:function(w){return w instanceof H&&w.args.length>0},is_list:function(w){return w instanceof H&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof H&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof H&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof Ie||w instanceof H&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof H&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof H&&w.indicator===\"./2\"&&w.args[1]instanceof H&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof H&&(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 Fe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Fe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof H&&b.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof H&&b.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof H&&b.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof H&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof H&&w.indicator===\"//2\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&w.args[1]instanceof Fe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof H&&w.args.length===0&&b.flag[w.id]!==void 0},is_value_flag:function(w,P){if(!b.type.is_flag(w))return!1;for(var y in b.flag[w.id].allowed)if(!!b.flag[w.id].allowed.hasOwnProperty(y)&&b.flag[w.id].allowed[y].equals(P))return!0;return!1},is_io_mode:function(w){return b.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return b.type.is_term(w)&&(w.indicator===\"alias/1\"&&b.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&b.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 b.type.is_integer(w)&&w.value>=0||b.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return b.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(b.type.is_variable(w.args[0])||b.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(b.type.is_variable(w.args[0])||b.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\"&&(b.type.is_variable(w.args[0])||b.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\"&&(b.type.is_variable(w.args[0])||b.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 b.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return b.type.is_term(w)&&(w.indicator===\"quoted/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return b.type.is_term(w)&&w.indicator===\"force/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return b.type.is_flag(w)&&b.flag[w.id].changeable},is_module:function(w){return w instanceof H&&w.indicator===\"library/1\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&b.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,P){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,P){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,P){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,P){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,P){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,P){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,P){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,P){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,P){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,P){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,P){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,P){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,P,y){return Math.atan2(w,P)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,P){return w>0?Math.log(w):b.error.evaluation(\"undefined\",P.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,P,y){return w+P}},\"-/2\":{type_args:null,type_result:null,fn:function(w,P,y){return w-P}},\"*/2\":{type_args:null,type_result:null,fn:function(w,P,y){return w*P}},\"//2\":{type_args:null,type_result:!0,fn:function(w,P,y){return P?w/P:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?parseInt(w/P):b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,P,y){return Math.pow(w,P)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,P,y){return Math.pow(w,P)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w<<P}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w>>P}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w&P}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w|P}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w^P}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?w%P:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?w-parseInt(w/P)*P:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,P,y){return Math.max(w,P)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,P,y){return Math.min(w,P)}}}},directive:{\"dynamic/1\":function(w,P){var y=P.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(b.error.type(\"predicate_indicator\",y,P.indicator));else if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type(\"atom\",y.args[0],P.indicator));else if(!b.type.is_integer(y.args[1]))w.throw_error(b.error.type(\"integer\",y.args[1],P.indicator));else{var F=P.args[0].args[0].id+\"/\"+P.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,P){var y=P.args[0];b.type.is_variable(y)?w.throw_error(b.error.instantiation(P.indicator)):!b.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(b.error.type(\"predicate_indicator\",y,P.indicator)):b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1])?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_atom(y.args[0])?b.type.is_integer(y.args[1])?w.session.multifile_predicates[P.args[0].args[0].id+\"/\"+P.args[0].args[1].value]=!0:w.throw_error(b.error.type(\"integer\",y.args[1],P.indicator)):w.throw_error(b.error.type(\"atom\",y.args[0],P.indicator))},\"set_prolog_flag/2\":function(w,P){var y=P.args[0],F=P.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_atom(y)?b.type.is_flag(y)?b.type.is_value_flag(y,F)?b.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(b.error.permission(\"modify\",\"flag\",y)):w.throw_error(b.error.domain(\"flag_value\",new H(\"+\",[y,F]),P.indicator)):w.throw_error(b.error.domain(\"prolog_flag\",y,P.indicator)):w.throw_error(b.error.type(\"atom\",y,P.indicator))},\"use_module/1\":function(w,P){var y=P.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_term(y))w.throw_error(b.error.type(\"term\",y,P.indicator));else if(b.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,P){var y=P.args[0],F=P.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_character(y)?b.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(b.error.type(\"character\",F,P.indicator)):w.throw_error(b.error.type(\"character\",y,P.indicator))},\"op/3\":function(w,P){var y=P.args[0],F=P.args[1],z=P.args[2];if(b.type.is_variable(y)||b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_integer(y))w.throw_error(b.error.type(\"integer\",y,P.indicator));else if(!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,P.indicator));else if(!b.type.is_atom(z))w.throw_error(b.error.type(\"atom\",z,P.indicator));else if(y.value<0||y.value>1200)w.throw_error(b.error.domain(\"operator_priority\",y,P.indicator));else if(z.id===\",\")w.throw_error(b.error.permission(\"modify\",\"operator\",z,P.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(b.error.permission(\"modify\",\"operator\",z,P.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(b.error.domain(\"operator_specifier\",F,P.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var Z in w.session.__operators)if(!!w.session.__operators.hasOwnProperty(Z)){var ie=w.session.__operators[Z][z.id];ie&&(e(ie,\"fx\")!==-1&&(X.prefix={priority:Z,type:\"fx\"}),e(ie,\"fy\")!==-1&&(X.prefix={priority:Z,type:\"fy\"}),e(ie,\"xf\")!==-1&&(X.postfix={priority:Z,type:\"xf\"}),e(ie,\"yf\")!==-1&&(X.postfix={priority:Z,type:\"yf\"}),e(ie,\"xfx\")!==-1&&(X.infix={priority:Z,type:\"xfx\"}),e(ie,\"xfy\")!==-1&&(X.infix={priority:Z,type:\"xfy\"}),e(ie,\"yfx\")!==-1&&(X.infix={priority:Z,type:\"yfx\"}))}var Pe;switch(F.id){case\"fy\":case\"fx\":Pe=\"prefix\";break;case\"yf\":case\"xf\":Pe=\"postfix\";break;default:Pe=\"infix\";break}if(((X.prefix&&Pe===\"prefix\"||X.postfix&&Pe===\"postfix\"||X.infix&&Pe===\"infix\")&&X[Pe].type!==F.id||X.infix&&Pe===\"postfix\"||X.postfix&&Pe===\"infix\")&&y.value!==0)w.throw_error(b.error.permission(\"create\",\"operator\",z,P.indicator));else return X[Pe]&&(Ee(w.session.__operators[X[Pe].priority][z.id],F.id),w.session.__operators[X[Pe].priority][z.id].length===0&&delete w.session.__operators[X[Pe].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,P,y){b.directive[\"op/3\"](w,y)&&w.success(P)},\"current_op/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=[];for(var ie in w.session.__operators)for(var Pe in w.session.__operators[ie])for(var Ne=0;Ne<w.session.__operators[ie][Pe].length;Ne++)Z.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[new Fe(ie,!1),F]),new H(\",\",[new H(\"=\",[new H(w.session.__operators[ie][Pe][Ne],[]),z]),new H(\"=\",[new H(Pe,[]),X])])])),P.substitution,P));w.prepend(Z)},\";/2\":function(w,P,y){if(b.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Ne){return Ne.substitution},w.session.format_error=function(Ne){return Ne.goal},w.points=[new xe(y.args[0].args[0],P.substitution,P)];var Z=function(Ne){w.points=F,w.session.format_success=z,w.session.format_error=X,Ne===!1?w.prepend([new xe(P.goal.replace(y.args[1]),P.substitution,P)]):b.type.is_error(Ne)?w.throw_error(Ne.args[0]):Ne===null?(w.prepend([P]),w.__calls.shift()(null)):w.prepend([new xe(P.goal.replace(y.args[0].args[1]).apply(Ne),P.substitution.apply(Ne),P)])};w.__calls.unshift(Z)}else{var ie=new xe(P.goal.replace(y.args[0]),P.substitution,P),Pe=new xe(P.goal.replace(y.args[1]),P.substitution,P);w.prepend([ie,Pe])}},\"!/0\":function(w,P,y){var F,z,X=[];for(F=P,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var Z=F.goal.select();if(Z&&Z.id===\"call\"&&Z.search(y)){F=z;break}}for(var ie=w.points.length-1;ie>=0;ie--){for(var Pe=w.points[ie],Ne=Pe.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&X.push(Pe)}w.points=X.reverse(),w.success(P)},\"\\\\+/1\":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(w.level)):b.type.is_callable(F)?w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])]),new H(\"fail\",[])])),P.substitution,P),new xe(P.goal.replace(null),P.substitution,P)]):w.throw_error(b.error.type(\"callable\",F,w.level))},\"->/2\":function(w,P,y){var F=P.goal.replace(new H(\",\",[y.args[0],new H(\",\",[new H(\"!\"),y.args[1]])]));w.prepend([new xe(F,P.substitution,P)])},\"fail/0\":function(w,P,y){},\"false/0\":function(w,P,y){},\"true/0\":function(w,P,y){w.success(P)},\"call/1\":ne(1),\"call/2\":ne(2),\"call/3\":ne(3),\"call/4\":ne(4),\"call/5\":ne(5),\"call/6\":ne(6),\"call/7\":ne(7),\"call/8\":ne(8),\"once/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])])),P.substitution,P)])},\"forall/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"\\\\+\",[new H(\",\",[new H(\"call\",[F]),new H(\"\\\\+\",[new H(\"call\",[z])])])])),P.substitution,P)])},\"repeat/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(null),P.substitution,P),P])},\"throw/1\":function(w,P,y){b.type.is_variable(y.args[0])?w.throw_error(b.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,P,y){var F=w.points;w.points=[],w.prepend([new xe(y.args[0],P.substitution,P)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(ie){return ie.substitution},w.session.format_error=function(ie){return ie.goal};var Z=function(ie){var Pe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,b.type.is_error(ie)){for(var Ne=[],ot=w.points.length-1;ot>=0;ot--){for(var $t=w.points[ot],dt=$t.parent;dt!==null&&dt!==P.parent;)dt=dt.parent;dt===null&&dt!==P.parent&&Ne.push($t)}w.points=Ne;var jt=w.get_flag(\"occurs_check\").indicator===\"true/0\",$t=new xe,bt=b.unify(ie.args[0],y.args[1],jt);bt!==null?($t.substitution=P.substitution.apply(bt),$t.goal=P.goal.replace(y.args[2]).apply(bt),$t.parent=P,w.prepend([$t])):w.throw_error(ie.args[0])}else if(ie!==!1){for(var an=ie===null?[]:[new xe(P.goal.apply(ie).replace(null),P.substitution.apply(ie),P)],Qr=[],ot=Pe.length-1;ot>=0;ot--){Qr.push(Pe[ot]);var mr=Pe[ot].goal!==null?Pe[ot].goal.select():null;if(b.type.is_term(mr)&&mr.indicator===\"!/0\")break}var br=o(Qr,function(Wr){return Wr.goal===null&&(Wr.goal=new H(\"true\",[])),Wr=new xe(P.goal.replace(new H(\"catch\",[Wr.goal,y.args[1],y.args[2]])),P.substitution.apply(Wr.substitution),Wr.parent),Wr.exclude=y.args[0].variables(),Wr}).reverse();w.prepend(br),w.prepend(an),ie===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift(Z)},\"=/2\":function(w,P,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new xe,X=b.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=P.goal.apply(X).replace(null),z.substitution=P.substitution.apply(X),z.parent=P,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,P,y){var F=new xe,z=b.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=P.goal.apply(z).replace(null),F.substitution=P.substitution.apply(z),F.parent=P,w.prepend([F]))},\"\\\\=/2\":function(w,P,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=b.unify(y.args[0],y.args[1],F);z===null&&w.success(P)},\"subsumes_term/2\":function(w,P,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=b.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(P)},\"findall/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(z))w.throw_error(b.error.type(\"callable\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=w.next_free_variable(),ie=new H(\",\",[z,new H(\"=\",[Z,F])]),Pe=w.points,Ne=w.session.limit,ot=w.session.format_success;w.session.format_success=function($t){return $t.substitution},w.add_goal(ie,!0,P);var dt=[],jt=function($t){if($t!==!1&&$t!==null&&!b.type.is_error($t))w.__calls.unshift(jt),dt.push($t.links[Z.id]),w.session.limit=w.current_limit;else if(w.points=Pe,w.session.limit=Ne,w.session.format_success=ot,b.type.is_error($t))w.throw_error($t.args[0]);else if(w.current_limit>0){for(var bt=new H(\"[]\"),an=dt.length-1;an>=0;an--)bt=new H(\".\",[dt[an],bt]);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,bt])),P.substitution,P)])}};w.__calls.unshift(jt)}},\"bagof/3\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type(\"callable\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),Pe;X.indicator===\"^/2\"?(Pe=X.args[0].variables(),X=X.args[1]):Pe=[],Pe=Pe.concat(z.variables());for(var Ne=X.variables().filter(function(br){return e(Pe,br)===-1}),ot=new H(\"[]\"),dt=Ne.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Ne[dt]),ot]);var jt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(jt,!0,P);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ns=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Pi=0;Pi<Qr.length;Pi++){br=Qr[Pi].answers;for(var Ls=new H(\"[]\"),so=br.length-1;so>=0;so--)Ls=new H(\".\",[br[so],Ls]);io.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Pi].variables]),new H(\"=\",[Z,Ls])])),P.substitution,P))}w.prepend(io)}};w.__calls.unshift(mr)}},\"setof/3\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type(\"callable\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),Pe;X.indicator===\"^/2\"?(Pe=X.args[0].variables(),X=X.args[1]):Pe=[],Pe=Pe.concat(z.variables());for(var Ne=X.variables().filter(function(br){return e(Pe,br)===-1}),ot=new H(\"[]\"),dt=Ne.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Ne[dt]),ot]);var jt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(jt,!0,P);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ns=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Pi=0;Pi<Qr.length;Pi++){br=Qr[Pi].answers.sort(b.compare);for(var Ls=new H(\"[]\"),so=br.length-1;so>=0;so--)Ls=new H(\".\",[br[so],Ls]);io.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Pi].variables]),new H(\"=\",[Z,Ls])])),P.substitution,P))}w.prepend(io)}};w.__calls.unshift(mr)}},\"functor/3\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(z)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(\"functor/3\"));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!b.type.is_variable(X)&&!b.type.is_atomic(X))w.throw_error(b.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(b.type.is_integer(X)&&b.type.is_integer(Z)&&Z.value!==0)w.throw_error(b.error.type(\"atom\",y.args[1],\"functor/3\"));else if(b.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],Pe=0;Pe<Z.value;Pe++)ie.push(w.next_free_variable());var Ne=b.type.is_integer(X)?X:new H(X.id,ie);w.prepend([new xe(P.goal.replace(new H(\"=\",[z,Ne])),P.substitution,P)])}}else{var ot=b.type.is_integer(z)?z:new H(z.id,[]),dt=b.type.is_integer(z)?new Fe(0,!1):new Fe(z.args.length,!1),jt=new H(\",\",[new H(\"=\",[ot,X]),new H(\"=\",[dt,Z])]);w.prepend([new xe(P.goal.replace(jt),P.substitution,P)])}},\"arg/3\":function(w,P,y){if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!b.type.is_compound(y.args[1]))w.throw_error(b.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 H(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new xe(P.goal.replace(z),P.substitution,P)])}}},\"=../2\":function(w,P,y){var F;if(b.type.is_variable(y.args[0])&&(b.type.is_variable(y.args[1])||b.type.is_non_empty_list(y.args[1])&&b.type.is_variable(y.args[1].args[0])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_fully_list(y.args[1]))w.throw_error(b.error.type(\"list\",y.args[1],y.indicator));else if(b.type.is_variable(y.args[0])){if(!b.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)X.push(F.args[0]),F=F.args[1];b.type.is_variable(y.args[0])&&b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):X.length===0&&b.type.is_compound(y.args[1].args[0])?w.throw_error(b.error.type(\"atomic\",y.args[1].args[0],y.indicator)):X.length>0&&(b.type.is_compound(y.args[1].args[0])||b.type.is_number(y.args[1].args[0]))?w.throw_error(b.error.type(\"atom\",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new xe(P.goal.replace(new H(\"=\",[y.args[1].args[0],y.args[0]],P)),P.substitution,P)]):w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(y.args[1].args[0].id,X),y.args[0]])),P.substitution,P)])}}else{if(b.type.is_atomic(y.args[0]))F=new H(\".\",[y.args[0],new H(\"[]\")]);else{F=new H(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(\".\",[y.args[0].args[z],F]);F=new H(\".\",[new H(y.args[0].id),F])}w.prepend([new xe(P.goal.replace(new H(\"=\",[F,y.args[1]])),P.substitution,P)])}},\"copy_term/2\":function(w,P,y){var F=y.args[0].rename(w);w.prepend([new xe(P.goal.replace(new H(\"=\",[F,y.args[1]])),P.substitution,P.parent)])},\"term_variables/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(!b.type.is_fully_list(z))w.throw_error(b.error.type(\"list\",z,y.indicator));else{var X=g(o(Se(F.variables()),function(Z){return new Ie(Z)}));w.prepend([new xe(P.goal.replace(new H(\"=\",[z,X])),P.substitution,P)])}},\"clause/2\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_callable(y.args[1]))w.throw_error(b.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 X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new H(\"true\"));var Z=new H(\",\",[new H(\"=\",[X.head,y.args[0]]),new H(\"=\",[X.body,y.args[1]])]);F.push(new xe(P.goal.replace(Z),P.substitution,P))}w.prepend(F)}else w.throw_error(b.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,P,y){var F=y.args[0];if(!b.type.is_variable(F)&&(!b.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(b.error.type(\"predicate_indicator\",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[0])&&!b.type.is_atom(F.args[0]))w.throw_error(b.error.type(\"atom\",F.args[0],y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[1])&&!b.type.is_integer(F.args[1]))w.throw_error(b.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(!!w.session.rules.hasOwnProperty(X)){var Z=X.lastIndexOf(\"/\"),ie=X.substr(0,Z),Pe=parseInt(X.substr(Z+1,X.length-(Z+1))),Ne=new H(\"/\",[new H(ie),new Fe(Pe,!1)]),ot=new H(\"=\",[Ne,F]);z.push(new xe(P.goal.replace(ot),P.substitution,P))}w.prepend(z)}},\"asserta/1\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.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 He(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(P)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(b.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.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 He(F,z,!0)),w.success(P)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(b.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.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 H(\"true\")),typeof P.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],Z=0;Z<w.session.rules[F.indicator].length;Z++){w.session.renamed_variables={};var ie=w.session.rules[F.indicator][Z],Pe=ie.rename(w);Pe.body===null&&(Pe.body=new H(\"true\",[]));var Ne=w.get_flag(\"occurs_check\").indicator===\"true/0\",ot=b.unify(new H(\",\",[F,z]),new H(\",\",[Pe.head,Pe.body]),Ne);if(ot!==null){var dt=new xe(P.goal.replace(new H(\",\",[new H(\"retract\",[new H(\":-\",[F,z])]),new H(\",\",[new H(\"=\",[F,Pe.head]),new H(\"=\",[z,Pe.body])])])),P.substitution,P);dt.retract=ie,X.push(dt)}}w.prepend(X)}}else w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else le(w,P,F.indicator,P.retract)}},\"retractall/1\":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_callable(F)?w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"retract\",[new b.type.Term(\":-\",[F,new Ie(\"_\")])]),new H(\"fail\",[])])),P.substitution,P),new xe(P.goal.replace(null),P.substitution,P)]):w.throw_error(b.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,P,y){if(b.type.is_variable(y.args[0])||b.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(b.type.is_variable(y.args[0].args[0])||b.type.is_variable(y.args[0].args[1])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(b.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!b.type.is_atom(y.args[0].args[0]))w.throw_error(b.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!b.type.is_integer(y.args[0].args[1]))w.throw_error(b.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(b.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(b.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(P)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type(\"atom\",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_integer(y.args[1]))w.throw_error(b.error.type(\"integer\",y.args[1],y.indicator));else if(b.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new Fe(y.args[0].id.length,!1);w.prepend([new xe(P.goal.replace(new H(\"=\",[F,y.args[1]])),P.substitution,P)])}},\"atom_concat/3\":function(w,P,y){var F,z,X=y.args[0],Z=y.args[1],ie=y.args[2];if(b.type.is_variable(ie)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type(\"atom\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_atom(Z))w.throw_error(b.error.type(\"atom\",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_atom(ie))w.throw_error(b.error.type(\"atom\",ie,y.indicator));else{var Pe=b.type.is_variable(X),Ne=b.type.is_variable(Z);if(!Pe&&!Ne)z=new H(\"=\",[ie,new H(X.id+Z.id)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]);else if(Pe&&!Ne)F=ie.id.substr(0,ie.id.length-Z.id.length),F+Z.id===ie.id&&(z=new H(\"=\",[X,new H(F)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]));else if(Ne&&!Pe)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H(\"=\",[Z,new H(F)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]));else{for(var ot=[],dt=0;dt<=ie.id.length;dt++){var jt=new H(ie.id.substr(0,dt)),$t=new H(ie.id.substr(dt));z=new H(\",\",[new H(\"=\",[jt,X]),new H(\"=\",[$t,Z])]),ot.push(new xe(P.goal.replace(z),P.substitution,P))}w.prepend(ot)}}},\"sub_atom/5\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2],ie=y.args[3],Pe=y.args[4];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type(\"integer\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type(\"integer\",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_integer(ie))w.throw_error(b.error.type(\"integer\",ie,y.indicator));else if(b.type.is_integer(X)&&X.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",X,y.indicator));else if(b.type.is_integer(Z)&&Z.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",Z,y.indicator));else if(b.type.is_integer(ie)&&ie.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",ie,y.indicator));else{var Ne=[],ot=[],dt=[];if(b.type.is_variable(X))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(X.value);if(b.type.is_variable(Z))for(F=0;F<=z.id.length;F++)ot.push(F);else ot.push(Z.value);if(b.type.is_variable(ie))for(F=0;F<=z.id.length;F++)dt.push(F);else dt.push(ie.value);var jt=[];for(var $t in Ne)if(!!Ne.hasOwnProperty($t)){F=Ne[$t];for(var bt in ot)if(!!ot.hasOwnProperty(bt)){var an=ot[bt],Qr=z.id.length-F-an;if(e(dt,Qr)!==-1&&F+an+Qr===z.id.length){var mr=z.id.substr(F,an);if(z.id===z.id.substr(0,F)+mr+z.id.substr(F+an,Qr)){var br=new H(\"=\",[new H(mr),Pe]),Wr=new H(\"=\",[X,new Fe(F)]),Kn=new H(\"=\",[Z,new Fe(an)]),Ns=new H(\"=\",[ie,new Fe(Qr)]),Ti=new H(\",\",[new H(\",\",[new H(\",\",[Wr,Kn]),Ns]),br]);jt.push(new xe(P.goal.replace(Ti),P.substitution,P))}}}}w.prepend(jt)}},\"atom_chars/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,Pe=b.type.is_variable(F),Ne=\"\";ie.indicator===\"./2\";){if(b.type.is_character(ie.args[0]))Ne+=ie.args[0].id;else if(b.type.is_variable(ie.args[0])&&Pe){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&Pe?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type(\"list\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new H(F.id.charAt(Z)),X]);w.prepend([new xe(P.goal.replace(new H(\"=\",[z,X])),P.substitution,P)])}},\"atom_codes/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,Pe=b.type.is_variable(F),Ne=\"\";ie.indicator===\"./2\";){if(b.type.is_character_code(ie.args[0]))Ne+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0])&&Pe){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.representation(\"character_code\",y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&Pe?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type(\"list\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new Fe(n(F.id,Z),!1),X]);w.prepend([new xe(P.goal.replace(new H(\"=\",[z,X])),P.substitution,P)])}},\"char_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_character(F))w.throw_error(b.error.type(\"character\",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",z,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character_code(z))w.throw_error(b.error.representation(\"character_code\",y.indicator));else if(b.type.is_variable(z)){var X=new Fe(n(F.id,0),!1);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,z])),P.substitution,P)])}else{var Z=new H(u(z.value));w.prepend([new xe(P.goal.replace(new H(\"=\",[Z,F])),P.substitution,P)])}},\"number_chars/2\":function(w,P,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type(\"number\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,Pe=!0;for(F=\"\";ie.indicator===\"./2\";){if(b.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(b.type.is_variable(ie.args[0]))Pe=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Pe=Pe&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type(\"list\",X,y.indicator));return}if(!Pe&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(Pe)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!b.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,ot])),P.substitution,P)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),jt=F.length-1;jt>=0;jt--)dt=new H(\".\",[new H(F.charAt(jt)),dt]);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,dt])),P.substitution,P)])}}},\"number_codes/2\":function(w,P,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type(\"number\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,Pe=!0;for(F=\"\";ie.indicator===\"./2\";){if(b.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0]))Pe=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character_code\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Pe=Pe&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type(\"list\",X,y.indicator));return}if(!Pe&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(Pe)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!b.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,ot])),P.substitution,P)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),jt=F.length-1;jt>=0;jt--)dt=new H(\".\",[new Fe(n(F,jt),!1),dt]);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,dt])),P.substitution,P)])}}},\"upcase_atom/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type(\"atom\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,new H(F.id.toUpperCase(),[])])),P.substitution,P)]):w.throw_error(b.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type(\"atom\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,new H(F.id.toLowerCase(),[])])),P.substitution,P)]):w.throw_error(b.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"atomic_list_concat\",[F,new H(\"\",[]),z])),P.substitution,P)])},\"atomic_list_concat/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z)||b.type.is_variable(F)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_list(F))w.throw_error(b.error.type(\"list\",F,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type(\"atom\",X,y.indicator));else if(b.type.is_variable(X)){for(var ie=\"\",Pe=F;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(!b.type.is_atom(Pe.args[0])&&!b.type.is_number(Pe.args[0])){w.throw_error(b.error.type(\"atomic\",Pe.args[0],y.indicator));return}ie!==\"\"&&(ie+=z.id),b.type.is_atom(Pe.args[0])?ie+=Pe.args[0].id:ie+=\"\"+Pe.args[0].value,Pe=Pe.args[1]}ie=new H(ie,[]),b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_term(Pe)||Pe.indicator!==\"[]/0\"?w.throw_error(b.error.type(\"list\",F,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[ie,X])),P.substitution,P)])}else{var Z=g(o(X.id.split(z.id),function(Ne){return new H(Ne,[])}));w.prepend([new xe(P.goal.replace(new H(\"=\",[Z,F])),P.substitution,P)])}},\"@=</2\":function(w,P,y){b.compare(y.args[0],y.args[1])<=0&&w.success(P)},\"==/2\":function(w,P,y){b.compare(y.args[0],y.args[1])===0&&w.success(P)},\"\\\\==/2\":function(w,P,y){b.compare(y.args[0],y.args[1])!==0&&w.success(P)},\"@</2\":function(w,P,y){b.compare(y.args[0],y.args[1])<0&&w.success(P)},\"@>/2\":function(w,P,y){b.compare(y.args[0],y.args[1])>0&&w.success(P)},\"@>=/2\":function(w,P,y){b.compare(y.args[0],y.args[1])>=0&&w.success(P)},\"compare/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(b.type.domain(\"order\",F,y.indicator));else{var Z=b.compare(z,X);Z=Z===0?\"=\":Z===-1?\"<\":\">\",w.prepend([new xe(P.goal.replace(new H(\"=\",[F,new H(Z,[])])),P.substitution,P)])}},\"is/2\":function(w,P,y){var F=y.args[1].interpret(w);b.type.is_number(F)?w.prepend([new xe(P.goal.replace(new H(\"=\",[y.args[0],F],w.level)),P.substitution,P)]):w.throw_error(F)},\"between/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_integer(F))w.throw_error(b.error.type(\"integer\",F,y.indicator));else if(!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type(\"integer\",X,y.indicator));else if(b.type.is_variable(X)){var Z=[new xe(P.goal.replace(new H(\"=\",[X,F])),P.substitution,P)];F.value<z.value&&Z.push(new xe(P.goal.replace(new H(\"between\",[new Fe(F.value+1,!1),z,X])),P.substitution,P)),w.prepend(Z)}else F.value<=X.value&&z.value>=X.value&&w.success(P)},\"succ/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)&&b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_integer(F)?w.throw_error(b.error.type(\"integer\",F,y.indicator)):!b.type.is_variable(z)&&!b.type.is_integer(z)?w.throw_error(b.error.type(\"integer\",z,y.indicator)):!b.type.is_variable(F)&&F.value<0?w.throw_error(b.error.domain(\"not_less_than_zero\",F,y.indicator)):!b.type.is_variable(z)&&z.value<0?w.throw_error(b.error.domain(\"not_less_than_zero\",z,y.indicator)):(b.type.is_variable(z)||z.value>0)&&(b.type.is_variable(F)?w.prepend([new xe(P.goal.replace(new H(\"=\",[F,new Fe(z.value-1,!1)])),P.substitution,P)]):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,new Fe(F.value+1,!1)])),P.substitution,P)]))},\"=:=/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F===0&&w.success(P)},\"=\\\\=/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F!==0&&w.success(P)},\"</2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F<0&&w.success(P)},\"=</2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F<=0&&w.success(P)},\">/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>0&&w.success(P)},\">=/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>=0&&w.success(P)},\"var/1\":function(w,P,y){b.type.is_variable(y.args[0])&&w.success(P)},\"atom/1\":function(w,P,y){b.type.is_atom(y.args[0])&&w.success(P)},\"atomic/1\":function(w,P,y){b.type.is_atomic(y.args[0])&&w.success(P)},\"compound/1\":function(w,P,y){b.type.is_compound(y.args[0])&&w.success(P)},\"integer/1\":function(w,P,y){b.type.is_integer(y.args[0])&&w.success(P)},\"float/1\":function(w,P,y){b.type.is_float(y.args[0])&&w.success(P)},\"number/1\":function(w,P,y){b.type.is_number(y.args[0])&&w.success(P)},\"nonvar/1\":function(w,P,y){b.type.is_variable(y.args[0])||w.success(P)},\"ground/1\":function(w,P,y){y.variables().length===0&&w.success(P)},\"acyclic_term/1\":function(w,P,y){for(var F=P.substitution.apply(P.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(P.substitution.links[z[X]]!==void 0&&!P.substitution.links[z[X]].equals(F.links[z[X]]))return;w.success(P)},\"callable/1\":function(w,P,y){b.type.is_callable(y.args[0])&&w.success(P)},\"is_list/1\":function(w,P,y){for(var F=y.args[0];b.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];b.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(P)},\"current_input/1\":function(w,P,y){var F=y.args[0];!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream\",F,y.indicator)):(b.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new xe(P.goal.replace(new H(\"=\",[F,w.get_current_input()])),P.substitution,P)]))},\"current_output/1\":function(w,P,y){var F=y.args[0];!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):(b.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new xe(P.goal.replace(new H(\"=\",[F,w.get_current_output()])),P.substitution,P)]))},\"set_input/1\":function(w,P,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):b.type.is_stream(z)?z.output===!0?w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(P)):w.throw_error(b.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,P,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):b.type.is_stream(z)?z.input===!0?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(P)):w.throw_error(b.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];w.prepend([new xe(P.goal.replace(new H(\"open\",[F,z,X,new H(\"[]\",[])])),P.substitution,P)])},\"open/4\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=y.args[3];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_atom(z))w.throw_error(b.error.type(\"atom\",z,y.indicator));else if(!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else if(!b.type.is_variable(X))w.throw_error(b.error.type(\"variable\",X,y.indicator));else if(!b.type.is_atom(F)&&!b.type.is_streamable(F))w.throw_error(b.error.domain(\"source_sink\",F,y.indicator));else if(!b.type.is_io_mode(z))w.throw_error(b.error.domain(\"io_mode\",z,y.indicator));else{for(var ie={},Pe=Z,Ne;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_stream_option(Ne)){w.throw_error(b.error.domain(\"stream_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id,Pe=Pe.args[1]}if(Pe.indicator!==\"[]/0\"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",Z,y.indicator));return}else{var ot=ie.alias;if(ot&&w.get_stream_by_alias(ot)){w.throw_error(b.error.permission(\"open\",\"source_sink\",new H(\"alias\",[new H(ot,[])]),y.indicator));return}ie.type||(ie.type=\"text\");var dt;if(b.type.is_atom(F)?dt=w.file_system_open(F.id,ie.type,z.id):dt=F.stream(ie.type,z.id),dt===!1){w.throw_error(b.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(dt===null){w.throw_error(b.error.existence(\"source_sink\",F,y.indicator));return}var jt=new Re(dt,z.id,ie.alias,ie.type,ie.reposition===\"true\",ie.eof_action);ot?w.session.streams[ot]=jt:w.session.streams[jt.id]=jt,w.prepend([new xe(P.goal.replace(new H(\"=\",[X,jt])),P.substitution,P)])}}},\"close/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\"close\",[F,new H(\"[]\",[])])),P.substitution,P)])},\"close/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(z))w.throw_error(b.error.type(\"list\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else{for(var Z={},ie=z,Pe;b.type.is_term(ie)&&ie.indicator===\"./2\";){if(Pe=ie.args[0],b.type.is_variable(Pe)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_close_option(Pe)){w.throw_error(b.error.domain(\"close_option\",Pe,y.indicator));return}Z[Pe.id]=Pe.args[0].id===\"true\",ie=ie.args[1]}if(ie.indicator!==\"[]/0\"){b.type.is_variable(ie)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",z,y.indicator));return}else{if(X===w.session.standard_input||X===w.session.standard_output){w.success(P);return}else X===w.session.current_input?w.session.current_input=w.session.standard_input:X===w.session.current_output&&(w.session.current_output=w.session.current_output);X.alias!==null?delete w.session.streams[X.alias]:delete w.session.streams[X.id],X.output&&X.stream.flush();var Ne=X.stream.close();X.stream=null,(Z.force===!0||Ne===!0)&&w.success(P)}}},\"flush_output/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"flush_output\",[new Ie(\"S\")])])),P.substitution,P)])},\"flush_output/1\":function(w,P,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(z)||z.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(b.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(P))},\"stream_property/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_variable(F)&&(!b.type.is_stream(X)||X.stream===null))w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_stream_property(z))w.throw_error(b.error.domain(\"stream_property\",z,y.indicator));else{var Z=[],ie=[];if(!b.type.is_variable(F))Z.push(X);else for(var Pe in w.session.streams)Z.push(w.session.streams[Pe]);for(var Ne=0;Ne<Z.length;Ne++){var ot=[];Z[Ne].filename&&ot.push(new H(\"file_name\",[new H(Z[Ne].file_name,[])])),ot.push(new H(\"mode\",[new H(Z[Ne].mode,[])])),ot.push(new H(Z[Ne].input?\"input\":\"output\",[])),Z[Ne].alias&&ot.push(new H(\"alias\",[new H(Z[Ne].alias,[])])),ot.push(new H(\"position\",[typeof Z[Ne].position==\"number\"?new Fe(Z[Ne].position,!1):new H(Z[Ne].position,[])])),ot.push(new H(\"end_of_stream\",[new H(Z[Ne].position===\"end_of_stream\"?\"at\":Z[Ne].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),ot.push(new H(\"eof_action\",[new H(Z[Ne].eof_action,[])])),ot.push(new H(\"reposition\",[new H(Z[Ne].reposition?\"true\":\"false\",[])])),ot.push(new H(\"type\",[new H(Z[Ne].type,[])]));for(var dt=0;dt<ot.length;dt++)ie.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[b.type.is_variable(F)?F:X,Z[Ne]]),new H(\"=\",[z,ot[dt]])])),P.substitution,P))}w.prepend(ie)}},\"at_end_of_stream/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\",\",[new H(\"stream_property\",[new Ie(\"S\"),new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])])),P.substitution,P)])},\"at_end_of_stream/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"stream_property\",[F,new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])),P.substitution,P)])},\"set_stream_position/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):b.type.is_stream_position(z)?X.reposition===!1?w.throw_error(b.error.permission(\"reposition\",\"stream\",F,y.indicator)):(b.type.is_integer(z)?X.position=z.value:X.position=z.id,w.success(P)):w.throw_error(b.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_char\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"get_char/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character(z))w.throw_error(b.error.type(\"in_character\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}X.position++}w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Z,[]),z])),P.substitution,P)])}},\"get_code/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_code\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"get_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",char,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}Z=n(Z,0),X.position++}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"peek_char/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_char\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"peek_char/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character(z))w.throw_error(b.error.type(\"in_character\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Z,[]),z])),P.substitution,P)])}},\"peek_code/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_code\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"peek_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",char,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}Z=n(Z,0)}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"put_char/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"put_char/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_character(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(P)):w.throw_error(b.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_code\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"put_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(z)?b.type.is_character_code(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put_char(u(z.value),X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(P)):w.throw_error(b.error.representation(\"character_code\",y.indicator)):w.throw_error(b.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),new H(`\n`,[])])])),P.substitution,P)])},\"nl/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\"put_char\",[F,new H(`\n`,[])])),P.substitution,P)])},\"get_byte/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_byte\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"get_byte/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_byte(z))w.throw_error(b.error.type(\"in_byte\",char,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(b.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(b.error.representation(\"byte\",y.indicator));return}X.position++}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"peek_byte/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_byte\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"peek_byte/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_byte(z))w.throw_error(b.error.type(\"in_byte\",char,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(b.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(b.error.representation(\"byte\",y.indicator));return}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"put_byte/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_byte\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"put_byte/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_byte(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"text\"?w.throw_error(b.error.permission(\"output\",\"text_stream\",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(P)):w.throw_error(b.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,new H(\"[]\",[])])])),P.substitution,P)])},\"read/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"read_term\",[F,z,new H(\"[]\",[])])),P.substitution,P)])},\"read_term/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,z])])),P.substitution,P)])},\"read_term/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},Pe=X,Ne;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_read_option(Ne)){w.throw_error(b.error.domain(\"read_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0],Pe=Pe.args[1]}if(Pe.indicator!==\"[]/0\"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",X,y.indicator));return}else{for(var ot,dt,jt,$t=\"\",bt=[],an=null;an===null||an.name!==\"atom\"||an.value!==\".\"||jt.type===A&&b.flatten_error(new H(\"throw\",[jt.value])).found===\"token_not_found\";){if(ot=Z.stream.get(1,Z.position),ot===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}if(ot===\"end_of_file\"||ot===\"past_end_of_file\"){jt?w.throw_error(b.error.syntax(bt[jt.len-1],\". or expression expected\",!1)):w.throw_error(b.error.syntax(null,\"token not found\",!0));return}Z.position++,$t+=ot,dt=new U(w),dt.new_text($t),bt=dt.get_tokens(),an=bt!==null&&bt.length>0?bt[bt.length-1]:null,bt!==null&&(jt=J(w,bt,0,w.__get_max_priority(),!1))}if(jt.type===p&&jt.len===bt.length-1&&an.value===\".\"){jt=jt.value.rename(w);var Qr=new H(\"=\",[z,jt]);if(ie.variables){var mr=g(o(Se(jt.variables()),function(br){return new Ie(br)}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variables,mr])])}if(ie.variable_names){var mr=g(o(Se(jt.variables()),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H(\"=\",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variable_names,mr])])}if(ie.singletons){var mr=g(o(new He(jt,null).singleton_variables(),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H(\"=\",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.singletons,mr])])}w.prepend([new xe(P.goal.replace(Qr),P.substitution,P)])}else jt.type===p?w.throw_error(b.error.syntax(bt[jt.len],\"unexpected token\",!1)):w.throw_error(jt.value)}}},\"write/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"write/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"false\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),P.substitution,P)])},\"writeq/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"writeq\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"writeq/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),P.substitution,P)])},\"write_canonical/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_canonical\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"write_canonical/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"true\")]),new H(\".\",[new H(\"numbervars\",[new H(\"false\")]),new H(\"[]\",[])])])])])),P.substitution,P)])},\"write_term/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_term\",[new Ie(\"S\"),F,z])])),P.substitution,P)])},\"write_term/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(Z.input)w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(b.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},Pe=X,Ne;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_write_option(Ne)){w.throw_error(b.error.domain(\"write_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id===\"true\",Pe=Pe.args[1]}if(Pe.indicator!==\"[]/0\"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",X,y.indicator));return}else{ie.session=w.session;var ot=z.toString(ie);Z.stream.put(ot,Z.position),typeof Z.position==\"number\"&&(Z.position+=ot.length),w.success(P)}}},\"halt/0\":function(w,P,y){w.points=[]},\"halt/1\":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(F)?w.points=[]:w.throw_error(b.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_flag(F))w.throw_error(b.error.domain(\"prolog_flag\",F,y.indicator));else{var X=[];for(var Z in b.flag)if(!!b.flag.hasOwnProperty(Z)){var ie=new H(\",\",[new H(\"=\",[new H(Z),F]),new H(\"=\",[w.get_flag(Z),z])]);X.push(new xe(P.goal.replace(ie),P.substitution,P))}w.prepend(X)}},\"set_prolog_flag/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?b.type.is_flag(F)?b.type.is_value_flag(F,z)?b.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(P)):w.throw_error(b.error.permission(\"modify\",\"flag\",F)):w.throw_error(b.error.domain(\"flag_value\",new H(\"+\",[F,z]),y.indicator)):w.throw_error(b.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(b.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new H(\"true\"),new H(\"false\")],value:new H(\"true\"),changeable:!1},max_integer:{allowed:[new Fe(Number.MAX_SAFE_INTEGER)],value:new Fe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Fe(Number.MIN_SAFE_INTEGER)],value:new Fe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H(\"down\"),new H(\"toward_zero\")],value:new H(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"on\"),changeable:!0},debug:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"off\"),changeable:!0},max_arity:{allowed:[new H(\"unbounded\")],value:new H(\"unbounded\"),changeable:!1},unknown:{allowed:[new H(\"error\"),new H(\"fail\"),new H(\"warning\")],value:new H(\"error\"),changeable:!0},double_quotes:{allowed:[new H(\"chars\"),new H(\"codes\"),new H(\"atom\")],value:new H(\"codes\"),changeable:!0},occurs_check:{allowed:[new H(\"false\"),new H(\"true\")],value:new H(\"false\"),changeable:!0},dialect:{allowed:[new H(\"tau\")],value:new H(\"tau\"),changeable:!1},version_data:{allowed:[new H(\"tau\",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)])],value:new H(\"tau\",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H(\"yes\"),new H(\"no\")],value:new H(typeof hl<\"u\"&&hl.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,P,y){y=y===void 0?!1:y;for(var F=[{left:w,right:P}],z={};F.length!==0;){var X=F.pop();if(w=X.left,P=X.right,b.type.is_term(w)&&b.type.is_term(P)){if(w.indicator!==P.indicator)return null;for(var Z=0;Z<w.args.length;Z++)F.push({left:w.args[Z],right:P.args[Z]})}else if(b.type.is_number(w)&&b.type.is_number(P)){if(w.value!==P.value||w.is_float!==P.is_float)return null}else if(b.type.is_variable(w)){if(b.type.is_variable(P)&&w.id===P.id)continue;if(y===!0&&P.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var ie=new ke;ie.add(w.id,P);for(var Z=0;Z<F.length;Z++)F[Z].left=F[Z].left.apply(ie),F[Z].right=F[Z].right.apply(ie);for(var Z in z)z[Z]=z[Z].apply(ie);z[w.id]=P}}else if(b.type.is_variable(P))F.push({left:P,right:w});else if(w.unify!==void 0){if(!w.unify(P))return null}else return null}return new ke(z)},compare:function(w,P){var y=b.type.compare(w,P);return y!==0?y:w.compare(P)},arithmetic_compare:function(w,P,y){var F=P.interpret(w);if(b.type.is_number(F)){var z=y.interpret(w);return b.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,P){if(b.type.is_operator(P)){for(var y=b.type.is_operator(P),F=[],z,X=!1,Z=0;Z<P.args.length;Z++){if(z=P.args[Z].interpret(w),b.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return b.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(w),z=b.arithmetic.evaluation[P.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,b.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?b.error.evaluation(\"overflow\",w.__call_indicator):X===!1&&w.get_flag(\"bounded\").id===\"true\"&&(z>w.get_flag(\"max_integer\").value||z<w.get_flag(\"min_integer\").value)?b.error.evaluation(\"int_overflow\",w.__call_indicator):new Fe(z,X)}else return b.error.type(\"evaluable\",P.indicator,w.__call_indicator)},error:{existence:function(w,P,y){return typeof P==\"string\"&&(P=ee(P)),new H(\"error\",[new H(\"existence_error\",[new H(w),P]),ee(y)])},type:function(w,P,y){return new H(\"error\",[new H(\"type_error\",[new H(w),P]),ee(y)])},instantiation:function(w){return new H(\"error\",[new H(\"instantiation_error\"),ee(w)])},domain:function(w,P,y){return new H(\"error\",[new H(\"domain_error\",[new H(w),P]),ee(y)])},representation:function(w,P){return new H(\"error\",[new H(\"representation_error\",[new H(w)]),ee(P)])},permission:function(w,P,y,F){return new H(\"error\",[new H(\"permission_error\",[new H(w),new H(P),y]),ee(F)])},evaluation:function(w,P){return new H(\"error\",[new H(\"evaluation_error\",[new H(w)]),ee(P)])},syntax:function(w,P,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 H(\"token_not_found\"):new H(\"found\",[new H(w.value.toString())]),X=new H(\".\",[new H(\"line\",[new Fe(w.line+1)]),new H(\".\",[new H(\"column\",[new Fe(F+1)]),new H(\".\",[z,new H(\"[]\",[])])])]);return new H(\"error\",[new H(\"syntax_error\",[new H(P)]),X])},syntax_by_predicate:function(w,P){return new H(\"error\",[new H(\"syntax_error\",[new H(w)]),ee(P)])}},warning:{singleton:function(w,P,y){for(var F=new H(\"[]\"),z=w.length-1;z>=0;z--)F=new H(\".\",[new Ie(w[z]),F]);return new H(\"warning\",[new H(\"singleton_variables\",[F,ee(P)]),new H(\".\",[new H(\"line\",[new Fe(y,!1)]),new H(\"[]\")])])},failed_goal:function(w,P){return new H(\"warning\",[new H(\"failed_goal\",[w]),new H(\".\",[new H(\"line\",[new Fe(P,!1)]),new H(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,P,F){P instanceof Te&&(P=P.thread);var F=F||{};if(F.session=P?P.session:void 0,b.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,X=\"\";if(b.type.is_substitution(w)){var Z=w.domain(!0);w=w.filter(function(Ne,ot){return!b.type.is_variable(ot)||Z.indexOf(ot.id)!==-1&&Ne!==ot.id})}for(var ie in w.links)!w.links.hasOwnProperty(ie)||(z++,X!==\"\"&&(X+=\", \"),X+=ie.toString(F)+\" = \"+w.links[ie].toString(F));var Pe=typeof P>\"u\"||P.points.length>0?\" ;\":\".\";return z===0?\"true\"+Pe:X+Pe},flatten_error:function(w){if(!b.type.is_error(w))return null;w=w.args[0];var P={};return P.type=w.args[0].id,P.thrown=P.type===\"syntax_error\"?null:w.args[1].id,P.expected=null,P.found=null,P.representation=null,P.existence=null,P.existence_type=null,P.line=null,P.column=null,P.permission_operation=null,P.permission_type=null,P.evaluation_type=null,P.type===\"type_error\"||P.type===\"domain_error\"?(P.expected=w.args[0].args[0].id,P.found=w.args[0].args[1].toString()):P.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(P.expected=w.args[0].args[0].id,P.found=w.args[1].args[1].args[1].args[0],P.found=P.found.id===\"token_not_found\"?P.found.id:P.found.args[0].id,P.line=w.args[1].args[0].args[0].value,P.column=w.args[1].args[1].args[0].args[0].value):P.thrown=w.args[1].id:P.type===\"permission_error\"?(P.found=w.args[0].args[2].toString(),P.permission_operation=w.args[0].args[0].id,P.permission_type=w.args[0].args[1].id):P.type===\"evaluation_error\"?P.evaluation_type=w.args[0].args[0].id:P.type===\"representation_error\"?P.representation=w.args[0].args[0].id:P.type===\"existence_error\"&&(P.existence=w.args[0].args[1].toString(),P.existence_type=w.args[0].args[0].id),P},create:function(w){return new b.type.Session(w)}};typeof hl<\"u\"?hl.exports=b:window.pl=b})()});function ime(t,e,r){t.prepend(r.map(o=>new Ta.default.type.State(e.goal.replace(o),e.substitution,e)))}function yH(t){let e=ome.get(t.session);if(e==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return e}function ame(t,e){ome.set(t,e),t.consult(`:- use_module(library(${zgt.id})).`)}var EH,Ta,sme,u0,Vgt,Jgt,ome,zgt,lme=Et(()=>{Ye();EH=$e(d2()),Ta=$e(mH()),sme=$e(ve(\"vm\")),{is_atom:u0,is_variable:Vgt,is_instantiated_list:Jgt}=Ta.default.type;ome=new WeakMap;zgt=new Ta.default.type.Module(\"constraints\",{[\"project_workspaces_by_descriptor/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let u=W.parseIdent(o.id),A=W.makeDescriptor(u,a.id),h=yH(t).tryWorkspaceByDescriptor(A);Vgt(n)&&h!==null&&ime(t,e,[new Ta.default.type.Term(\"=\",[n,new Ta.default.type.Term(String(h.relativeCwd))])]),u0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},[\"workspace_field/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let A=yH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,EH.default)(A.manifest.raw,a.id);typeof p>\"u\"||ime(t,e,[new Ta.default.type.Term(\"=\",[n,new Ta.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},[\"workspace_field_test/3\"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Ta.default.type.State(e.goal.replace(new Ta.default.type.Term(\"workspace_field_test\",[o,a,n,new Ta.default.type.Term(\"[]\",[])])),e.substitution,e)])},[\"workspace_field_test/4\"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!u0(o)||!u0(a)||!u0(n)||!Jgt(u)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let p=yH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,EH.default)(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[v,x]of u.toJavaScript().entries())E[`$${v}`]=x;sme.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 b2={};Vt(b2,{Constraints:()=>P2,DependencyType:()=>fme});function to(t){if(t instanceof DC.default.type.Num)return t.value;if(t instanceof DC.default.type.Term)switch(t.indicator){case\"throw/1\":return to(t.args[0]);case\"error/1\":return to(t.args[0]);case\"error/2\":if(t.args[0]instanceof DC.default.type.Term&&t.args[0].indicator===\"syntax_error/1\")return Object.assign(to(t.args[0]),...to(t.args[1]));{let e=to(t.args[0]);return e.message+=` (in ${to(t.args[1])})`,e}case\"syntax_error/1\":return new zt(43,`Syntax error: ${to(t.args[0])}`);case\"existence_error/2\":return new zt(44,`Existence error: ${to(t.args[0])} ${to(t.args[1])} not found`);case\"instantiation_error/0\":return new zt(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:to(t.args[0])};case\"column/1\":return{column:to(t.args[0])};case\"found/1\":return{found:to(t.args[0])};case\"./2\":return[to(t.args[0])].concat(to(t.args[1]));case\"//2\":return`${to(t.args[0])}/${to(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function ume(t){let e;try{e=to(t)}catch(r){throw typeof r==\"string\"?new zt(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 em(t){return t.id===\"null\"?null:`${t.toJavaScript()}`}function Xgt(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 A0(t){return typeof t==\"string\"?`'${t}'`:\"[]\"}var Ame,DC,fme,cme,CH,P2,x2=Et(()=>{Ye();Ye();St();Ame=$e(qde()),DC=$e(mH());v2();lme();(0,Ame.default)(DC.default);fme=(o=>(o.Dependencies=\"dependencies\",o.DevDependencies=\"devDependencies\",o.PeerDependencies=\"peerDependencies\",o))(fme||{}),cme=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];CH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=DC.default.create(o),ame(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 ume(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new zt(79,\"Resolution limit exceeded\");if(!o)break;if(o.id===\"throw\")throw ume(o);yield o}}};P2=class{constructor(e){this.source=\"\";this.project=e;let r=e.configuration.get(\"constraintsPath\");oe.existsSync(r)&&(this.source=oe.readFileSync(r,\"utf8\"))}static async find(e){return new P2(e)}getProjectDatabase(){let e=\"\";for(let r of cme)e+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${A0(o)}).\n`,e+=`workspace_ident(${A0(o)}, ${A0(W.stringifyIdent(r.anchoredLocator))}).\n`,e+=`workspace_version(${A0(o)}, ${A0(r.manifest.version)}).\n`;for(let a of cme)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${A0(o)}, ${A0(W.stringifyIdent(n))}, ${A0(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 CH(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(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=B2([A,W.stringifyIdent(n)]),h=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=B2(n),p=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.DependencyIdent),u=em(o.links.DependencyRange),A=em(o.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=W.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return _e.sortMap(r,[({dependencyRange:o})=>o!==null?\"0\":\"1\",({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({dependencyIdent:o})=>W.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.FieldPath),u=Xgt(o.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return _e.sortMap(r,[({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!==\"_\"&&(a[n]=em(u));yield a}}}});var wme=_(Ik=>{\"use strict\";Object.defineProperty(Ik,\"__esModule\",{value:!0});function G2(t){let e=[...t.caches],r=e.shift();return r===void 0?Cme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>G2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>G2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>G2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>G2({caches:e}).clear())}}}function Cme(){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()}}}Ik.createFallbackableCache=G2;Ik.createNullCache=Cme});var Bme=_((QWt,Ime)=>{Ime.exports=wme()});var vme=_(TH=>{\"use strict\";Object.defineProperty(TH,\"__esModule\",{value:!0});function ddt(t={serializable:!0}){let e={};return{get(r,o,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 u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}TH.createInMemoryCache=ddt});var Sme=_((RWt,Dme)=>{Dme.exports=vme()});var bme=_(Zc=>{\"use strict\";Object.defineProperty(Zc,\"__esModule\",{value:!0});function mdt(t,e,r){let o={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers(){return t===NH.WithinHeaders?o:{}},queryParameters(){return t===NH.WithinQueryParameters?o:{}}}}function ydt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function Pme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return Pme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Edt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function Cdt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function wdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Idt=\"4.14.2\",Bdt=t=>()=>t.transporter.requester.destroy(),NH={WithinQueryParameters:0,WithinHeaders:1};Zc.AuthMode=NH;Zc.addMethods=Cdt;Zc.createAuth=mdt;Zc.createRetryablePromise=ydt;Zc.createWaitablePromise=Pme;Zc.destroy=Bdt;Zc.encode=wdt;Zc.shuffle=Edt;Zc.version=Idt});var Y2=_((NWt,xme)=>{xme.exports=bme()});var kme=_(LH=>{\"use strict\";Object.defineProperty(LH,\"__esModule\",{value:!0});var vdt={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};LH.MethodEnum=vdt});var W2=_((OWt,Qme)=>{Qme.exports=kme()});var Wme=_(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});var Rme=W2();function OH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var K2={Read:1,Write:2,Any:3},xC={Up:1,Down:2,Timeouted:3},Tme=2*60*1e3;function UH(t,e=xC.Up){return{...t,status:e,lastUpdate:Date.now()}}function Nme(t){return t.status===xC.Up||Date.now()-t.lastUpdate>Tme}function Lme(t){return t.status===xC.Timeouted&&Date.now()-t.lastUpdate<=Tme}function _H(t){return typeof t==\"string\"?{protocol:\"https\",url:t,accept:K2.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||K2.Any}}function Ddt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(UH(r))))).then(r=>{let o=r.filter(A=>Nme(A)),a=r.filter(A=>Lme(A)),n=[...o,...a],u=n.length>0?n.map(A=>_H(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Sdt=({isTimedOut:t,status:e})=>!t&&~~e===0,Pdt=t=>{let e=t.status;return t.isTimedOut||Sdt(t)||~~(e/100)!==2&&~~(e/100)!==4},bdt=({status:t})=>~~(t/100)===2,xdt=(t,e)=>Pdt(t)?e.onRetry(t):bdt(t)?e.onSuccess(t):e.onFail(t);function Fme(t,e,r,o){let a=[],n=Hme(r,o),u=qme(t,o),A=r.method,p=r.method!==Rme.MethodEnum.Get?{}:{...r.data,...o.data},h={\"x-algolia-agent\":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},E=0,I=(v,x)=>{let C=v.pop();if(C===void 0)throw Yme(MH(a));let R={data:n,headers:u,method:A,url:Ume(C,r.path,h),connectTimeout:x(E,t.timeouts.connect),responseTimeout:x(E,o.timeout)},L=J=>{let te={request:R,response:J,host:C,triesLeft:v.length};return a.push(te),te},U={onSuccess:J=>Ome(J),onRetry(J){let te=L(J);return J.isTimedOut&&E++,Promise.all([t.logger.info(\"Retryable failure\",HH(te)),t.hostsCache.set(C,UH(C,J.isTimedOut?xC.Timeouted:xC.Down))]).then(()=>I(v,x))},onFail(J){throw L(J),Mme(J,MH(a))}};return t.requester.send(R).then(J=>xdt(J,U))};return Ddt(t.hostsCache,e).then(v=>I([...v.statelessHosts].reverse(),v.getTimeout))}function kdt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:E}=t,I={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:E,queryParameters:h,hosts:p.map(v=>_H(v)),read(v,x){let C=OH(x,I.timeouts.read),R=()=>Fme(I,I.hosts.filter(J=>(J.accept&K2.Read)!==0),v,C);if((C.cacheable!==void 0?C.cacheable:v.cacheable)!==!0)return R();let U={request:v,mappedRequestOptions:C,transporter:{queryParameters:I.queryParameters,headers:I.headers}};return I.responsesCache.get(U,()=>I.requestsCache.get(U,()=>I.requestsCache.set(U,R()).then(J=>Promise.all([I.requestsCache.delete(U),J]),J=>Promise.all([I.requestsCache.delete(U),Promise.reject(J)])).then(([J,te])=>te)),{miss:J=>I.responsesCache.set(U,J)})},write(v,x){return Fme(I,I.hosts.filter(C=>(C.accept&K2.Write)!==0),v,OH(x,I.timeouts.write))}};return I}function Qdt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function Ome(t){try{return JSON.parse(t.content)}catch(e){throw Gme(e.message,t)}}function Mme({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return jme(o,e,r)}function Fdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function Ume(t,e,r){let o=_me(r),a=`${t.protocol}://${t.url}/${e.charAt(0)===\"/\"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function _me(t){let e=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(t).map(r=>Fdt(\"%s=%s\",r,e(t[r])?JSON.stringify(t[r]):t[r])).join(\"&\")}function Hme(t,e){if(t.method===Rme.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 qme(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function MH(t){return t.map(e=>HH(e))}function HH(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 jme(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}function Gme(t,e){return{name:\"DeserializationError\",message:t,response:e}}function Yme(t){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:t}}Fi.CallEnum=K2;Fi.HostStatusEnum=xC;Fi.createApiError=jme;Fi.createDeserializationError=Gme;Fi.createMappedRequestOptions=OH;Fi.createRetryError=Yme;Fi.createStatefulHost=UH;Fi.createStatelessHost=_H;Fi.createTransporter=kdt;Fi.createUserAgent=Qdt;Fi.deserializeFailure=Mme;Fi.deserializeSuccess=Ome;Fi.isStatefulHostTimeouted=Lme;Fi.isStatefulHostUp=Nme;Fi.serializeData=Hme;Fi.serializeHeaders=qme;Fi.serializeQueryParameters=_me;Fi.serializeUrl=Ume;Fi.stackFrameWithoutCredentials=HH;Fi.stackTraceWithoutCredentials=MH});var V2=_((UWt,Kme)=>{Kme.exports=Wme()});var Vme=_(m0=>{\"use strict\";Object.defineProperty(m0,\"__esModule\",{value:!0});var kC=Y2(),Rdt=V2(),J2=W2(),Tdt=t=>{let e=t.region||\"us\",r=kC.createAuth(kC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Rdt.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 kC.addMethods({appId:a,transporter:o},t.methods)},Ndt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:\"2/abtests\",data:e},r),Ldt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Delete,path:kC.encode(\"2/abtests/%s\",e)},r),Odt=t=>(e,r)=>t.transporter.read({method:J2.MethodEnum.Get,path:kC.encode(\"2/abtests/%s\",e)},r),Mdt=t=>e=>t.transporter.read({method:J2.MethodEnum.Get,path:\"2/abtests\"},e),Udt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:kC.encode(\"2/abtests/%s/stop\",e)},r);m0.addABTest=Ndt;m0.createAnalyticsClient=Tdt;m0.deleteABTest=Ldt;m0.getABTest=Odt;m0.getABTests=Mdt;m0.stopABTest=Udt});var zme=_((HWt,Jme)=>{Jme.exports=Vme()});var Zme=_(z2=>{\"use strict\";Object.defineProperty(z2,\"__esModule\",{value:!0});var qH=Y2(),_dt=V2(),Xme=W2(),Hdt=t=>{let e=t.region||\"us\",r=qH.createAuth(qH.AuthMode.WithinHeaders,t.appId,t.apiKey),o=_dt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return qH.addMethods({appId:t.appId,transporter:o},t.methods)},qdt=t=>e=>t.transporter.read({method:Xme.MethodEnum.Get,path:\"1/strategies/personalization\"},e),jdt=t=>(e,r)=>t.transporter.write({method:Xme.MethodEnum.Post,path:\"1/strategies/personalization\",data:e},r);z2.createPersonalizationClient=Hdt;z2.getPersonalizationStrategy=qdt;z2.setPersonalizationStrategy=jdt});var eye=_((jWt,$me)=>{$me.exports=Zme()});var hye=_(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Gt=Y2(),Na=V2(),Ir=W2(),Gdt=ve(\"crypto\");function Bk(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var Ydt=t=>{let e=t.appId,r=Gt.createAuth(t.authMode!==void 0?t.authMode:Gt.AuthMode.WithinHeaders,e,t.apiKey),o=Na.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:Na.CallEnum.Read},{url:`${e}.algolia.net`,accept:Na.CallEnum.Write}].concat(Gt.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:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return Gt.addMethods(a,t.methods)};function tye(){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 rye(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function nye(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var Wdt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>Gt.createRetryablePromise(h=>X2(t)(A.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/keys\",data:n},a),u)},Kdt=t=>(e,r,o)=>{let a=Na.createMappedRequestOptions(o);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},Vdt=t=>(e,r,o)=>t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},o),Jdt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(o,a)=>QC(t)(o.taskID,a)),vk=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},o),a)},zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Rules]}),Xdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Settings]}),Zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Synonyms]}),$dt=t=>(e,r)=>e.method===Ir.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),emt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>X2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/keys/%s\",e)},r),o)},tmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},rmt=()=>(t,e)=>{let r=Na.serializeQueryParameters(e),o=Gdt.createHmac(\"sha256\",t).update(r).digest(\"hex\");return Buffer.from(o+r).toString(\"base64\")},X2=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/keys/%s\",e)},r),iye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/task/%s\",e.toString())},r),nmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},e),imt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/logs\"},e),smt=()=>t=>{let e=Buffer.from(t,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,o=e.match(r);if(o===null)throw nye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},omt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/top\"},e),amt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/clusters/mapping/%s\",e)},r),lmt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},o)},Z2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return Gt.addMethods(o,r.methods)},cmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/keys\"},e),umt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters\"},e),Amt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/indexes\"},e),fmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping\"},e),pmt=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},o),a)},hmt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>Z2(t)(u,{methods:{waitTask:Zi}}).waitTask(a.taskID[u],n)));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:e}},r),o)},gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:e}},r),dmt=t=>(e,r)=>{let o=e.map(a=>({...a,params:Na.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:o},cacheable:!0},r)},mmt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return Z2(t)(o.indexName,{methods:{searchForFacetValues:Aye}}).searchForFacetValues(a,n,{...r,...u})})),ymt=t=>(e,r)=>{let o=Na.createMappedRequestOptions(r);return o.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Delete,path:\"1/clusters/mapping\"},o)},Emt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Cmt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>X2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/keys/%s/restore\",e)},r),o)},wmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Imt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},o),Bmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:e}},r),vmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:e},r),(o,a)=>QC(t)(o.taskID,a)),Dmt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(o).filter(I=>A.indexOf(I)!==-1).every(I=>E[I]===o[I]),h=(E,I)=>Gt.createRetryablePromise(v=>X2(t)(e,I).then(x=>p(x)?Promise.resolve():v()));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/keys/%s\",e),data:u},n),h)},QC=t=>(e,r)=>Gt.createRetryablePromise(o=>iye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),sye=t=>(e,r)=>{let o=(a,n)=>Zi(t)(a.taskID,n);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),o)},Smt=t=>e=>Bk({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/browse\",t.indexName),data:r},e)}),Pmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return fye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},bmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return pye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Dk=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(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(u):sye(t)(h.map(I=>({action:r,body:I})),n).then(I=>(u.objectIDs=u.objectIDs.concat(I.objectIDs),u.taskIDs.push(I.taskID),E++,A(E)))};return Gt.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(E=>Zi(t)(E,h))))},xmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/clear\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),kmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Qmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Fmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(o,a)=>Zi(t)(o.taskID,a)),Rmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Tmt=t=>(e,r)=>Gt.createWaitablePromise(oye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),oye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return Dk(t)(o,nm.DeleteObject,r)},Nmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Lmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Omt=t=>e=>aye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),Mmt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),Umt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>uye(t)(o||\"\",{...n,page:u}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw rye();return A()});return A()},_mt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/%s\",t.indexName,e)},r),Hmt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},qmt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},jmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},r),aye=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e),Gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r),lye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r),Ymt=t=>(e,r)=>Gt.createWaitablePromise(cye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),cye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?nm.PartialUpdateObject:nm.PartialUpdateObjectNoCreate;return Dk(t)(e,n,a)},Wmt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(C,R,L,U)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",C),data:{operation:L,destination:R}},U),(J,te)=>Zi(t)(J.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=jH({appId:t.appId,transporter:t.transporter,indexName:h}),I=[],v=A(t.indexName,h,\"copy\",{...u,scope:[\"settings\",\"synonyms\",\"rules\"]});I.push(v);let x=(o?v.wait(u):v).then(()=>{let C=E(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return I.push(C),o?C.wait(u):C}).then(()=>{let C=A(h,t.indexName,\"move\",u);return I.push(C),o?C.wait(u):C}).then(()=>Promise.all(I)).then(([C,R,L])=>({objectIDs:R.objectIDs,taskIDs:[C.taskID,...R.taskIDs,L.taskID]}));return Gt.createWaitablePromise(x,(C,R)=>Promise.all(I.map(L=>L.wait(R))))},Kmt=t=>(e,r)=>GH(t)(e,{...r,clearExistingRules:!0}),Vmt=t=>(e,r)=>YH(t)(e,{...r,clearExistingSynonyms:!0}),Jmt=t=>(e,r)=>Gt.createWaitablePromise(jH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),jH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?nm.AddObject:nm.UpdateObject;if(n===nm.UpdateObject){for(let u of e)if(u.objectID===void 0)return Gt.createWaitablePromise(Promise.reject(tye()))}return Dk(t)(e,n,a)},zmt=t=>(e,r)=>GH(t)([e],r),GH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=Na.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/batch\",t.indexName),data:e},u),(A,p)=>Zi(t)(A.taskID,p))},Xmt=t=>(e,r)=>YH(t)([e],r),YH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=Na.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},A),(p,h)=>Zi(t)(p.taskID,h))},uye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r),Aye=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),fye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r),pye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r),Zmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:e},n),(u,A)=>Zi(t)(u.taskID,A))},Zi=t=>(e,r)=>Gt.createRetryablePromise(o=>lye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),$mt={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},nm={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},Sk={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},eyt={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},tyt={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=$mt;Ft.BatchActionEnum=nm;Ft.ScopeEnum=Sk;Ft.StrategyEnum=eyt;Ft.SynonymEnum=tyt;Ft.addApiKey=Wdt;Ft.assignUserID=Kdt;Ft.assignUserIDs=Vdt;Ft.batch=sye;Ft.browseObjects=Smt;Ft.browseRules=Pmt;Ft.browseSynonyms=bmt;Ft.chunkedBatch=Dk;Ft.clearDictionaryEntries=Jdt;Ft.clearObjects=xmt;Ft.clearRules=kmt;Ft.clearSynonyms=Qmt;Ft.copyIndex=vk;Ft.copyRules=zdt;Ft.copySettings=Xdt;Ft.copySynonyms=Zdt;Ft.createBrowsablePromise=Bk;Ft.createMissingObjectIDError=tye;Ft.createObjectNotFoundError=rye;Ft.createSearchClient=Ydt;Ft.createValidUntilNotFoundError=nye;Ft.customRequest=$dt;Ft.deleteApiKey=emt;Ft.deleteBy=Fmt;Ft.deleteDictionaryEntries=tmt;Ft.deleteIndex=Rmt;Ft.deleteObject=Tmt;Ft.deleteObjects=oye;Ft.deleteRule=Nmt;Ft.deleteSynonym=Lmt;Ft.exists=Omt;Ft.findAnswers=Mmt;Ft.findObject=Umt;Ft.generateSecuredApiKey=rmt;Ft.getApiKey=X2;Ft.getAppTask=iye;Ft.getDictionarySettings=nmt;Ft.getLogs=imt;Ft.getObject=_mt;Ft.getObjectPosition=Hmt;Ft.getObjects=qmt;Ft.getRule=jmt;Ft.getSecuredApiKeyRemainingValidity=smt;Ft.getSettings=aye;Ft.getSynonym=Gmt;Ft.getTask=lye;Ft.getTopUserIDs=omt;Ft.getUserID=amt;Ft.hasPendingMappings=lmt;Ft.initIndex=Z2;Ft.listApiKeys=cmt;Ft.listClusters=umt;Ft.listIndices=Amt;Ft.listUserIDs=fmt;Ft.moveIndex=pmt;Ft.multipleBatch=hmt;Ft.multipleGetObjects=gmt;Ft.multipleQueries=dmt;Ft.multipleSearchForFacetValues=mmt;Ft.partialUpdateObject=Ymt;Ft.partialUpdateObjects=cye;Ft.removeUserID=ymt;Ft.replaceAllObjects=Wmt;Ft.replaceAllRules=Kmt;Ft.replaceAllSynonyms=Vmt;Ft.replaceDictionaryEntries=Emt;Ft.restoreApiKey=Cmt;Ft.saveDictionaryEntries=wmt;Ft.saveObject=Jmt;Ft.saveObjects=jH;Ft.saveRule=zmt;Ft.saveRules=GH;Ft.saveSynonym=Xmt;Ft.saveSynonyms=YH;Ft.search=uye;Ft.searchDictionaryEntries=Imt;Ft.searchForFacetValues=Aye;Ft.searchRules=fye;Ft.searchSynonyms=pye;Ft.searchUserIDs=Bmt;Ft.setDictionarySettings=vmt;Ft.setSettings=Zmt;Ft.updateApiKey=Dmt;Ft.waitAppTask=QC;Ft.waitTask=Zi});var dye=_((YWt,gye)=>{gye.exports=hye()});var mye=_(Pk=>{\"use strict\";Object.defineProperty(Pk,\"__esModule\",{value:!0});function ryt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var nyt={Debug:1,Info:2,Error:3};Pk.LogLevelEnum=nyt;Pk.createNullLogger=ryt});var Eye=_((KWt,yye)=>{yye.exports=mye()});var Bye=_(WH=>{\"use strict\";Object.defineProperty(WH,\"__esModule\",{value:!0});var Cye=ve(\"http\"),wye=ve(\"https\"),iyt=ve(\"url\"),Iye={keepAlive:!0},syt=new Cye.Agent(Iye),oyt=new wye.Agent(Iye);function ayt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||syt,n=r||t||oyt;return{send(u){return new Promise(A=>{let p=iyt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...o,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},I=(p.protocol===\"https:\"?wye:Cye).request(E,R=>{let L=[];R.on(\"data\",U=>{L=L.concat(U)}),R.on(\"end\",()=>{clearTimeout(x),clearTimeout(C),A({status:R.statusCode||0,content:Buffer.concat(L).toString(),isTimedOut:!1})})}),v=(R,L)=>setTimeout(()=>{I.abort(),A({status:0,content:L,isTimedOut:!0})},R*1e3),x=v(u.connectTimeout,\"Connection timeout\"),C;I.on(\"error\",R=>{clearTimeout(x),clearTimeout(C),A({status:0,content:R.message,isTimedOut:!1})}),I.once(\"response\",()=>{clearTimeout(x),C=v(u.responseTimeout,\"Socket timeout\")}),u.data!==void 0&&I.write(u.data),I.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}WH.createNodeHttpRequester=ayt});var Dye=_((JWt,vye)=>{vye.exports=Bye()});var xye=_((zWt,bye)=>{\"use strict\";var Sye=Bme(),lyt=Sme(),FC=zme(),VH=Y2(),KH=eye(),Ut=dye(),cyt=Eye(),uyt=Dye(),Ayt=V2();function Pye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:uyt.createNodeHttpRequester(),logger:cyt.createNullLogger(),responsesCache:Sye.createNullCache(),requestsCache:Sye.createNullCache(),hostsCache:lyt.createInMemoryCache(),userAgent:Ayt.createUserAgent(VH.version).add({segment:\"Node.js\",version:process.versions.node})},a={...o,...r},n=()=>u=>KH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:KH.getPersonalizationStrategy,setPersonalizationStrategy:KH.setPersonalizationStrategy}});return Ut.createSearchClient({...a,methods:{search:Ut.multipleQueries,searchForFacetValues:Ut.multipleSearchForFacetValues,multipleBatch:Ut.multipleBatch,multipleGetObjects:Ut.multipleGetObjects,multipleQueries:Ut.multipleQueries,copyIndex:Ut.copyIndex,copySettings:Ut.copySettings,copyRules:Ut.copyRules,copySynonyms:Ut.copySynonyms,moveIndex:Ut.moveIndex,listIndices:Ut.listIndices,getLogs:Ut.getLogs,listClusters:Ut.listClusters,multipleSearchForFacetValues:Ut.multipleSearchForFacetValues,getApiKey:Ut.getApiKey,addApiKey:Ut.addApiKey,listApiKeys:Ut.listApiKeys,updateApiKey:Ut.updateApiKey,deleteApiKey:Ut.deleteApiKey,restoreApiKey:Ut.restoreApiKey,assignUserID:Ut.assignUserID,assignUserIDs:Ut.assignUserIDs,getUserID:Ut.getUserID,searchUserIDs:Ut.searchUserIDs,listUserIDs:Ut.listUserIDs,getTopUserIDs:Ut.getTopUserIDs,removeUserID:Ut.removeUserID,hasPendingMappings:Ut.hasPendingMappings,generateSecuredApiKey:Ut.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Ut.getSecuredApiKeyRemainingValidity,destroy:VH.destroy,clearDictionaryEntries:Ut.clearDictionaryEntries,deleteDictionaryEntries:Ut.deleteDictionaryEntries,getDictionarySettings:Ut.getDictionarySettings,getAppTask:Ut.getAppTask,replaceDictionaryEntries:Ut.replaceDictionaryEntries,saveDictionaryEntries:Ut.saveDictionaryEntries,searchDictionaryEntries:Ut.searchDictionaryEntries,setDictionarySettings:Ut.setDictionarySettings,waitAppTask:Ut.waitAppTask,customRequest:Ut.customRequest,initIndex:u=>A=>Ut.initIndex(u)(A,{methods:{batch:Ut.batch,delete:Ut.deleteIndex,findAnswers:Ut.findAnswers,getObject:Ut.getObject,getObjects:Ut.getObjects,saveObject:Ut.saveObject,saveObjects:Ut.saveObjects,search:Ut.search,searchForFacetValues:Ut.searchForFacetValues,waitTask:Ut.waitTask,setSettings:Ut.setSettings,getSettings:Ut.getSettings,partialUpdateObject:Ut.partialUpdateObject,partialUpdateObjects:Ut.partialUpdateObjects,deleteObject:Ut.deleteObject,deleteObjects:Ut.deleteObjects,deleteBy:Ut.deleteBy,clearObjects:Ut.clearObjects,browseObjects:Ut.browseObjects,getObjectPosition:Ut.getObjectPosition,findObject:Ut.findObject,exists:Ut.exists,saveSynonym:Ut.saveSynonym,saveSynonyms:Ut.saveSynonyms,getSynonym:Ut.getSynonym,searchSynonyms:Ut.searchSynonyms,browseSynonyms:Ut.browseSynonyms,deleteSynonym:Ut.deleteSynonym,clearSynonyms:Ut.clearSynonyms,replaceAllObjects:Ut.replaceAllObjects,replaceAllSynonyms:Ut.replaceAllSynonyms,searchRules:Ut.searchRules,getRule:Ut.getRule,deleteRule:Ut.deleteRule,saveRule:Ut.saveRule,saveRules:Ut.saveRules,replaceAllRules:Ut.replaceAllRules,browseRules:Ut.browseRules,clearRules:Ut.clearRules}}),initAnalytics:()=>u=>FC.createAnalyticsClient({...o,...u,methods:{addABTest:FC.addABTest,getABTest:FC.getABTest,getABTests:FC.getABTests,stopABTest:FC.stopABTest,deleteABTest:FC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(u))}})}Pye.version=VH.version;bye.exports=Pye});var zH=_((XWt,JH)=>{var kye=xye();JH.exports=kye;JH.exports.default=kye});var $H=_(($Wt,Rye)=>{\"use strict\";var Fye=Object.getOwnPropertySymbols,pyt=Object.prototype.hasOwnProperty,hyt=Object.prototype.propertyIsEnumerable;function gyt(t){if(t==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function dyt(){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 o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.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}}Rye.exports=dyt()?Object.assign:function(t,e){for(var r,o=gyt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var u in r)pyt.call(r,u)&&(o[u]=r[u]);if(Fye){a=Fye(r);for(var A=0;A<a.length;A++)hyt.call(r,a[A])&&(o[a[A]]=r[a[A]])}}return o}});var Yye=_(Nn=>{\"use strict\";var i6=$H(),$c=typeof Symbol==\"function\"&&Symbol.for,$2=$c?Symbol.for(\"react.element\"):60103,myt=$c?Symbol.for(\"react.portal\"):60106,yyt=$c?Symbol.for(\"react.fragment\"):60107,Eyt=$c?Symbol.for(\"react.strict_mode\"):60108,Cyt=$c?Symbol.for(\"react.profiler\"):60114,wyt=$c?Symbol.for(\"react.provider\"):60109,Iyt=$c?Symbol.for(\"react.context\"):60110,Byt=$c?Symbol.for(\"react.forward_ref\"):60112,vyt=$c?Symbol.for(\"react.suspense\"):60113,Dyt=$c?Symbol.for(\"react.memo\"):60115,Syt=$c?Symbol.for(\"react.lazy\"):60116,Tye=typeof Symbol==\"function\"&&Symbol.iterator;function eB(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 Nye={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Lye={};function RC(t,e,r){this.props=t,this.context=e,this.refs=Lye,this.updater=r||Nye}RC.prototype.isReactComponent={};RC.prototype.setState=function(t,e){if(typeof t!=\"object\"&&typeof t!=\"function\"&&t!=null)throw Error(eB(85));this.updater.enqueueSetState(this,t,e,\"setState\")};RC.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")};function Oye(){}Oye.prototype=RC.prototype;function s6(t,e,r){this.props=t,this.context=e,this.refs=Lye,this.updater=r||Nye}var o6=s6.prototype=new Oye;o6.constructor=s6;i6(o6,RC.prototype);o6.isPureReactComponent=!0;var a6={current:null},Mye=Object.prototype.hasOwnProperty,Uye={key:!0,ref:!0,__self:!0,__source:!0};function _ye(t,e,r){var o,a={},n=null,u=null;if(e!=null)for(o in e.ref!==void 0&&(u=e.ref),e.key!==void 0&&(n=\"\"+e.key),e)Mye.call(e,o)&&!Uye.hasOwnProperty(o)&&(a[o]=e[o]);var A=arguments.length-2;if(A===1)a.children=r;else if(1<A){for(var p=Array(A),h=0;h<A;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(o in A=t.defaultProps,A)a[o]===void 0&&(a[o]=A[o]);return{$$typeof:$2,type:t,key:n,ref:u,props:a,_owner:a6.current}}function Pyt(t,e){return{$$typeof:$2,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function l6(t){return typeof t==\"object\"&&t!==null&&t.$$typeof===$2}function byt(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+t).replace(/[=:]/g,function(r){return e[r]})}var Hye=/\\/+/g,bk=[];function qye(t,e,r,o){if(bk.length){var a=bk.pop();return a.result=t,a.keyPrefix=e,a.func=r,a.context=o,a.count=0,a}return{result:t,keyPrefix:e,func:r,context:o,count:0}}function jye(t){t.result=null,t.keyPrefix=null,t.func=null,t.context=null,t.count=0,10>bk.length&&bk.push(t)}function t6(t,e,r,o){var a=typeof t;(a===\"undefined\"||a===\"boolean\")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case\"string\":case\"number\":n=!0;break;case\"object\":switch(t.$$typeof){case $2:case myt:n=!0}}if(n)return r(o,t,e===\"\"?\".\"+e6(t,0):e),1;if(n=0,e=e===\"\"?\".\":e+\":\",Array.isArray(t))for(var u=0;u<t.length;u++){a=t[u];var A=e+e6(a,u);n+=t6(a,A,r,o)}else if(t===null||typeof t!=\"object\"?A=null:(A=Tye&&t[Tye]||t[\"@@iterator\"],A=typeof A==\"function\"?A:null),typeof A==\"function\")for(t=A.call(t),u=0;!(a=t.next()).done;)a=a.value,A=e+e6(a,u++),n+=t6(a,A,r,o);else if(a===\"object\")throw r=\"\"+t,Error(eB(31,r===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":r,\"\"));return n}function r6(t,e,r){return t==null?0:t6(t,\"\",e,r)}function e6(t,e){return typeof t==\"object\"&&t!==null&&t.key!=null?byt(t.key):e.toString(36)}function xyt(t,e){t.func.call(t.context,e,t.count++)}function kyt(t,e,r){var o=t.result,a=t.keyPrefix;t=t.func.call(t.context,e,t.count++),Array.isArray(t)?n6(t,o,r,function(n){return n}):t!=null&&(l6(t)&&(t=Pyt(t,a+(!t.key||e&&e.key===t.key?\"\":(\"\"+t.key).replace(Hye,\"$&/\")+\"/\")+r)),o.push(t))}function n6(t,e,r,o,a){var n=\"\";r!=null&&(n=(\"\"+r).replace(Hye,\"$&/\")+\"/\"),e=qye(e,n,o,a),r6(t,kyt,e),jye(e)}var Gye={current:null};function Xf(){var t=Gye.current;if(t===null)throw Error(eB(321));return t}var Qyt={ReactCurrentDispatcher:Gye,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:a6,IsSomeRendererActing:{current:!1},assign:i6};Nn.Children={map:function(t,e,r){if(t==null)return t;var o=[];return n6(t,o,null,e,r),o},forEach:function(t,e,r){if(t==null)return t;e=qye(null,null,e,r),r6(t,xyt,e),jye(e)},count:function(t){return r6(t,function(){return null},null)},toArray:function(t){var e=[];return n6(t,e,null,function(r){return r}),e},only:function(t){if(!l6(t))throw Error(eB(143));return t}};Nn.Component=RC;Nn.Fragment=yyt;Nn.Profiler=Cyt;Nn.PureComponent=s6;Nn.StrictMode=Eyt;Nn.Suspense=vyt;Nn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Qyt;Nn.cloneElement=function(t,e,r){if(t==null)throw Error(eB(267,t));var o=i6({},t.props),a=t.key,n=t.ref,u=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,u=a6.current),e.key!==void 0&&(a=\"\"+e.key),t.type&&t.type.defaultProps)var A=t.type.defaultProps;for(p in e)Mye.call(e,p)&&!Uye.hasOwnProperty(p)&&(o[p]=e[p]===void 0&&A!==void 0?A[p]:e[p])}var p=arguments.length-2;if(p===1)o.children=r;else if(1<p){A=Array(p);for(var h=0;h<p;h++)A[h]=arguments[h+2];o.children=A}return{$$typeof:$2,type:t.type,key:a,ref:n,props:o,_owner:u}};Nn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:Iyt,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:wyt,_context:t},t.Consumer=t};Nn.createElement=_ye;Nn.createFactory=function(t){var e=_ye.bind(null,t);return e.type=t,e};Nn.createRef=function(){return{current:null}};Nn.forwardRef=function(t){return{$$typeof:Byt,render:t}};Nn.isValidElement=l6;Nn.lazy=function(t){return{$$typeof:Syt,_ctor:t,_status:-1,_result:null}};Nn.memo=function(t,e){return{$$typeof:Dyt,type:t,compare:e===void 0?null:e}};Nn.useCallback=function(t,e){return Xf().useCallback(t,e)};Nn.useContext=function(t,e){return Xf().useContext(t,e)};Nn.useDebugValue=function(){};Nn.useEffect=function(t,e){return Xf().useEffect(t,e)};Nn.useImperativeHandle=function(t,e,r){return Xf().useImperativeHandle(t,e,r)};Nn.useLayoutEffect=function(t,e){return Xf().useLayoutEffect(t,e)};Nn.useMemo=function(t,e){return Xf().useMemo(t,e)};Nn.useReducer=function(t,e,r){return Xf().useReducer(t,e,r)};Nn.useRef=function(t){return Xf().useRef(t)};Nn.useState=function(t){return Xf().useState(t)};Nn.version=\"16.13.1\"});var on=_((tKt,Wye)=>{\"use strict\";Wye.exports=Yye()});var u6=_((rKt,c6)=>{\"use strict\";var An=c6.exports;c6.exports.default=An;var Ln=\"\\x1B[\",tB=\"\\x1B]\",TC=\"\\x07\",xk=\";\",Kye=process.env.TERM_PROGRAM===\"Apple_Terminal\";An.cursorTo=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof e!=\"number\"?Ln+(t+1)+\"G\":Ln+(e+1)+\";\"+(t+1)+\"H\"};An.cursorMove=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return t<0?r+=Ln+-t+\"D\":t>0&&(r+=Ln+t+\"C\"),e<0?r+=Ln+-e+\"A\":e>0&&(r+=Ln+e+\"B\"),r};An.cursorUp=(t=1)=>Ln+t+\"A\";An.cursorDown=(t=1)=>Ln+t+\"B\";An.cursorForward=(t=1)=>Ln+t+\"C\";An.cursorBackward=(t=1)=>Ln+t+\"D\";An.cursorLeft=Ln+\"G\";An.cursorSavePosition=Kye?\"\\x1B7\":Ln+\"s\";An.cursorRestorePosition=Kye?\"\\x1B8\":Ln+\"u\";An.cursorGetPosition=Ln+\"6n\";An.cursorNextLine=Ln+\"E\";An.cursorPrevLine=Ln+\"F\";An.cursorHide=Ln+\"?25l\";An.cursorShow=Ln+\"?25h\";An.eraseLines=t=>{let e=\"\";for(let r=0;r<t;r++)e+=An.eraseLine+(r<t-1?An.cursorUp():\"\");return t&&(e+=An.cursorLeft),e};An.eraseEndLine=Ln+\"K\";An.eraseStartLine=Ln+\"1K\";An.eraseLine=Ln+\"2K\";An.eraseDown=Ln+\"J\";An.eraseUp=Ln+\"1J\";An.eraseScreen=Ln+\"2J\";An.scrollUp=Ln+\"S\";An.scrollDown=Ln+\"T\";An.clearScreen=\"\\x1Bc\";An.clearTerminal=process.platform===\"win32\"?`${An.eraseScreen}${Ln}0f`:`${An.eraseScreen}${Ln}3J${Ln}H`;An.beep=TC;An.link=(t,e)=>[tB,\"8\",xk,xk,e,TC,t,tB,\"8\",xk,xk,TC].join(\"\");An.image=(t,e={})=>{let r=`${tB}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\")+TC};An.iTerm={setCwd:(t=process.cwd())=>`${tB}50;CurrentDir=${t}${TC}`,annotation:(t,e={})=>{let r=`${tB}1337;`,o=typeof e.x<\"u\",a=typeof e.y<\"u\";if((o||a)&&!(o&&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+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join(\"|\"):r+=t,r+TC}}});var Jye=_((nKt,A6)=>{\"use strict\";var Vye=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};A6.exports=Vye;A6.exports.default=Vye});var Xye=_((iKt,Qk)=>{\"use strict\";var Fyt=Jye(),kk=new WeakMap,zye=(t,e={})=>{if(typeof t!=\"function\")throw new TypeError(\"Expected a function\");let r,o=0,a=t.displayName||t.name||\"<anonymous>\",n=function(...u){if(kk.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return Fyt(n,t),kk.set(n,o),n};Qk.exports=zye;Qk.exports.default=zye;Qk.exports.callCount=t=>{if(!kk.has(t))throw new Error(`The given function \\`${t.name}\\` is not wrapped by the \\`onetime\\` package`);return kk.get(t)}});var Zye=_((sKt,Fk)=>{Fk.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&Fk.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&Fk.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var h6=_((oKt,OC)=>{var Ei=global.process,im=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\"};im(Ei)?($ye=ve(\"assert\"),NC=Zye(),eEe=/^win/i.test(Ei.platform),rB=ve(\"events\"),typeof rB!=\"function\"&&(rB=rB.EventEmitter),Ei.__signal_exit_emitter__?Ts=Ei.__signal_exit_emitter__:(Ts=Ei.__signal_exit_emitter__=new rB,Ts.count=0,Ts.emitted={}),Ts.infinite||(Ts.setMaxListeners(1/0),Ts.infinite=!0),OC.exports=function(t,e){if(!im(global.process))return function(){};$ye.equal(typeof t,\"function\",\"a callback must be provided for exit handler\"),LC===!1&&f6();var r=\"exit\";e&&e.alwaysLast&&(r=\"afterexit\");var o=function(){Ts.removeListener(r,t),Ts.listeners(\"exit\").length===0&&Ts.listeners(\"afterexit\").length===0&&Rk()};return Ts.on(r,t),o},Rk=function(){!LC||!im(global.process)||(LC=!1,NC.forEach(function(e){try{Ei.removeListener(e,Tk[e])}catch{}}),Ei.emit=Nk,Ei.reallyExit=p6,Ts.count-=1)},OC.exports.unload=Rk,sm=function(e,r,o){Ts.emitted[e]||(Ts.emitted[e]=!0,Ts.emit(e,r,o))},Tk={},NC.forEach(function(t){Tk[t]=function(){if(!!im(global.process)){var r=Ei.listeners(t);r.length===Ts.count&&(Rk(),sm(\"exit\",null,t),sm(\"afterexit\",null,t),eEe&&t===\"SIGHUP\"&&(t=\"SIGINT\"),Ei.kill(Ei.pid,t))}}}),OC.exports.signals=function(){return NC},LC=!1,f6=function(){LC||!im(global.process)||(LC=!0,Ts.count+=1,NC=NC.filter(function(e){try{return Ei.on(e,Tk[e]),!0}catch{return!1}}),Ei.emit=rEe,Ei.reallyExit=tEe)},OC.exports.load=f6,p6=Ei.reallyExit,tEe=function(e){!im(global.process)||(Ei.exitCode=e||0,sm(\"exit\",Ei.exitCode,null),sm(\"afterexit\",Ei.exitCode,null),p6.call(Ei,Ei.exitCode))},Nk=Ei.emit,rEe=function(e,r){if(e===\"exit\"&&im(global.process)){r!==void 0&&(Ei.exitCode=r);var o=Nk.apply(this,arguments);return sm(\"exit\",Ei.exitCode,null),sm(\"afterexit\",Ei.exitCode,null),o}else return Nk.apply(this,arguments)}):OC.exports=function(){return function(){}};var $ye,NC,eEe,rB,Ts,Rk,sm,Tk,LC,f6,p6,tEe,Nk,rEe});var iEe=_((aKt,nEe)=>{\"use strict\";var Ryt=Xye(),Tyt=h6();nEe.exports=Ryt(()=>{Tyt(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var g6=_(MC=>{\"use strict\";var Nyt=iEe(),Lk=!1;MC.show=(t=process.stderr)=>{!t.isTTY||(Lk=!1,t.write(\"\\x1B[?25h\"))};MC.hide=(t=process.stderr)=>{!t.isTTY||(Nyt(),Lk=!0,t.write(\"\\x1B[?25l\"))};MC.toggle=(t,e)=>{t!==void 0&&(Lk=t),Lk?MC.show(e):MC.hide(e)}});var lEe=_(nB=>{\"use strict\";var aEe=nB&&nB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,\"__esModule\",{value:!0});var sEe=aEe(u6()),oEe=aEe(g6()),Lyt=(t,{showCursor:e=!1}={})=>{let r=0,o=\"\",a=!1,n=u=>{!e&&!a&&(oEe.default.hide(),a=!0);let A=u+`\n`;A!==o&&(o=A,t.write(sEe.default.eraseLines(r)+A),r=A.split(`\n`).length)};return n.clear=()=>{t.write(sEe.default.eraseLines(r)),o=\"\",r=0},n.done=()=>{o=\"\",r=0,e||(oEe.default.show(),a=!1)},n};nB.default={create:Lyt}});var cEe=_((uKt,Oyt)=>{Oyt.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 fEe=_(gl=>{\"use strict\";var AEe=cEe(),pA=process.env;Object.defineProperty(gl,\"_vendors\",{value:AEe.map(function(t){return t.constant})});gl.name=null;gl.isPR=null;AEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return uEe(o)});if(gl[t.constant]=r,r)switch(gl.name=t.name,typeof t.pr){case\"string\":gl.isPR=!!pA[t.pr];break;case\"object\":\"env\"in t.pr?gl.isPR=t.pr.env in pA&&pA[t.pr.env]!==t.pr.ne:\"any\"in t.pr?gl.isPR=t.pr.any.some(function(o){return!!pA[o]}):gl.isPR=uEe(t.pr);break;default:gl.isPR=null}});gl.isCI=!!(pA.CI||pA.CONTINUOUS_INTEGRATION||pA.BUILD_NUMBER||pA.RUN_ID||gl.name);function uEe(t){return typeof t==\"string\"?!!pA[t]:Object.keys(t).every(function(e){return pA[e]===t[e]})}});var hEe=_((fKt,pEe)=>{\"use strict\";pEe.exports=fEe().isCI});var dEe=_((pKt,gEe)=>{\"use strict\";var Myt=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};gEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u==\"string\"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of Myt(t.constructor.prototype)){if(n===\"constructor\"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value==\"function\"&&(t[n]=t[n].bind(t))}return t}});var BEe=_(kn=>{\"use strict\";Object.defineProperty(kn,\"__esModule\",{value:!0});var _C,oB,Hk,qk,I6;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(UC=null,d6=null,m6=function(){if(UC!==null)try{var t=kn.unstable_now();UC(!0,t),UC=null}catch(e){throw setTimeout(m6,0),e}},mEe=Date.now(),kn.unstable_now=function(){return Date.now()-mEe},_C=function(t){UC!==null?setTimeout(_C,0,t):(UC=t,setTimeout(m6,0))},oB=function(t,e){d6=setTimeout(t,e)},Hk=function(){clearTimeout(d6)},qk=function(){return!1},I6=kn.unstable_forceFrameRate=function(){}):(Ok=window.performance,y6=window.Date,yEe=window.setTimeout,EEe=window.clearTimeout,typeof console<\"u\"&&(CEe=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://fb.me/react-polyfills\"),typeof CEe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")),typeof Ok==\"object\"&&typeof Ok.now==\"function\"?kn.unstable_now=function(){return Ok.now()}:(wEe=y6.now(),kn.unstable_now=function(){return y6.now()-wEe}),iB=!1,sB=null,Mk=-1,E6=5,C6=0,qk=function(){return kn.unstable_now()>=C6},I6=function(){},kn.unstable_forceFrameRate=function(t){0>t||125<t?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):E6=0<t?Math.floor(1e3/t):5},w6=new MessageChannel,Uk=w6.port2,w6.port1.onmessage=function(){if(sB!==null){var t=kn.unstable_now();C6=t+E6;try{sB(!0,t)?Uk.postMessage(null):(iB=!1,sB=null)}catch(e){throw Uk.postMessage(null),e}}else iB=!1},_C=function(t){sB=t,iB||(iB=!0,Uk.postMessage(null))},oB=function(t,e){Mk=yEe(function(){t(kn.unstable_now())},e)},Hk=function(){EEe(Mk),Mk=-1});var UC,d6,m6,mEe,Ok,y6,yEe,EEe,CEe,wEe,iB,sB,Mk,E6,C6,w6,Uk;function B6(t,e){var r=t.length;t.push(e);e:for(;;){var o=Math.floor((r-1)/2),a=t[o];if(a!==void 0&&0<_k(a,e))t[o]=e,t[r]=a,r=o;else break e}}function nc(t){return t=t[0],t===void 0?null:t}function jk(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var o=0,a=t.length;o<a;){var n=2*(o+1)-1,u=t[n],A=n+1,p=t[A];if(u!==void 0&&0>_k(u,r))p!==void 0&&0>_k(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>_k(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function _k(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var eu=[],y0=[],Uyt=1,na=null,Lo=3,Gk=!1,om=!1,aB=!1;function Yk(t){for(var e=nc(y0);e!==null;){if(e.callback===null)jk(y0);else if(e.startTime<=t)jk(y0),e.sortIndex=e.expirationTime,B6(eu,e);else break;e=nc(y0)}}function v6(t){if(aB=!1,Yk(t),!om)if(nc(eu)!==null)om=!0,_C(D6);else{var e=nc(y0);e!==null&&oB(v6,e.startTime-t)}}function D6(t,e){om=!1,aB&&(aB=!1,Hk()),Gk=!0;var r=Lo;try{for(Yk(e),na=nc(eu);na!==null&&(!(na.expirationTime>e)||t&&!qk());){var o=na.callback;if(o!==null){na.callback=null,Lo=na.priorityLevel;var a=o(na.expirationTime<=e);e=kn.unstable_now(),typeof a==\"function\"?na.callback=a:na===nc(eu)&&jk(eu),Yk(e)}else jk(eu);na=nc(eu)}if(na!==null)var n=!0;else{var u=nc(y0);u!==null&&oB(v6,u.startTime-e),n=!1}return n}finally{na=null,Lo=r,Gk=!1}}function IEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var _yt=I6;kn.unstable_ImmediatePriority=1;kn.unstable_UserBlockingPriority=2;kn.unstable_NormalPriority=3;kn.unstable_IdlePriority=5;kn.unstable_LowPriority=4;kn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Lo;Lo=t;try{return e()}finally{Lo=r}};kn.unstable_next=function(t){switch(Lo){case 1:case 2:case 3:var e=3;break;default:e=Lo}var r=Lo;Lo=e;try{return t()}finally{Lo=r}};kn.unstable_scheduleCallback=function(t,e,r){var o=kn.unstable_now();if(typeof r==\"object\"&&r!==null){var a=r.delay;a=typeof a==\"number\"&&0<a?o+a:o,r=typeof r.timeout==\"number\"?r.timeout:IEe(t)}else r=IEe(t),a=o;return r=a+r,t={id:Uyt++,callback:e,priorityLevel:t,startTime:a,expirationTime:r,sortIndex:-1},a>o?(t.sortIndex=a,B6(y0,t),nc(eu)===null&&t===nc(y0)&&(aB?Hk():aB=!0,oB(v6,a-o))):(t.sortIndex=r,B6(eu,t),om||Gk||(om=!0,_C(D6))),t};kn.unstable_cancelCallback=function(t){t.callback=null};kn.unstable_wrapCallback=function(t){var e=Lo;return function(){var r=Lo;Lo=e;try{return t.apply(this,arguments)}finally{Lo=r}}};kn.unstable_getCurrentPriorityLevel=function(){return Lo};kn.unstable_shouldYield=function(){var t=kn.unstable_now();Yk(t);var e=nc(eu);return e!==na&&na!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime<na.expirationTime||qk()};kn.unstable_requestPaint=_yt;kn.unstable_continueExecution=function(){om||Gk||(om=!0,_C(D6))};kn.unstable_pauseExecution=function(){};kn.unstable_getFirstCallbackNode=function(){return nc(eu)};kn.unstable_Profiling=null});var S6=_((gKt,vEe)=>{\"use strict\";vEe.exports=BEe()});var DEe=_((dKt,lB)=>{lB.exports=function t(e){\"use strict\";var r=$H(),o=on(),a=S6();function n(S){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+S,T=1;T<arguments.length;T++)D+=\"&args[]=\"+encodeURIComponent(arguments[T]);return\"Minified React error #\"+S+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var u=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;u.hasOwnProperty(\"ReactCurrentDispatcher\")||(u.ReactCurrentDispatcher={current:null}),u.hasOwnProperty(\"ReactCurrentBatchConfig\")||(u.ReactCurrentBatchConfig={suspense:null});var A=typeof Symbol==\"function\"&&Symbol.for,p=A?Symbol.for(\"react.element\"):60103,h=A?Symbol.for(\"react.portal\"):60106,E=A?Symbol.for(\"react.fragment\"):60107,I=A?Symbol.for(\"react.strict_mode\"):60108,v=A?Symbol.for(\"react.profiler\"):60114,x=A?Symbol.for(\"react.provider\"):60109,C=A?Symbol.for(\"react.context\"):60110,R=A?Symbol.for(\"react.concurrent_mode\"):60111,L=A?Symbol.for(\"react.forward_ref\"):60112,U=A?Symbol.for(\"react.suspense\"):60113,J=A?Symbol.for(\"react.suspense_list\"):60120,te=A?Symbol.for(\"react.memo\"):60115,ae=A?Symbol.for(\"react.lazy\"):60116;A&&Symbol.for(\"react.fundamental\"),A&&Symbol.for(\"react.responder\"),A&&Symbol.for(\"react.scope\");var fe=typeof Symbol==\"function\"&&Symbol.iterator;function ce(S){return S===null||typeof S!=\"object\"?null:(S=fe&&S[fe]||S[\"@@iterator\"],typeof S==\"function\"?S:null)}function me(S){if(S._status===-1){S._status=0;var D=S._ctor;D=D(),S._result=D,D.then(function(T){S._status===0&&(T=T.default,S._status=1,S._result=T)},function(T){S._status===0&&(S._status=2,S._result=T)})}}function he(S){if(S==null)return null;if(typeof S==\"function\")return S.displayName||S.name||null;if(typeof S==\"string\")return S;switch(S){case E:return\"Fragment\";case h:return\"Portal\";case v:return\"Profiler\";case I:return\"StrictMode\";case U:return\"Suspense\";case J:return\"SuspenseList\"}if(typeof S==\"object\")switch(S.$$typeof){case C:return\"Context.Consumer\";case x:return\"Context.Provider\";case L:var D=S.render;return D=D.displayName||D.name||\"\",S.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case te:return he(S.type);case ae:if(S=S._status===1?S._result:null)return he(S)}return null}function Be(S){var D=S,T=S;if(S.alternate)for(;D.return;)D=D.return;else{S=D;do D=S,(D.effectTag&1026)!==0&&(T=D.return),S=D.return;while(S)}return D.tag===3?T:null}function we(S){if(Be(S)!==S)throw Error(n(188))}function g(S){var D=S.alternate;if(!D){if(D=Be(S),D===null)throw Error(n(188));return D!==S?null:S}for(var T=S,q=D;;){var Y=T.return;if(Y===null)break;var Ae=Y.alternate;if(Ae===null){if(q=Y.return,q!==null){T=q;continue}break}if(Y.child===Ae.child){for(Ae=Y.child;Ae;){if(Ae===T)return we(Y),S;if(Ae===q)return we(Y),D;Ae=Ae.sibling}throw Error(n(188))}if(T.return!==q.return)T=Y,q=Ae;else{for(var De=!1,vt=Y.child;vt;){if(vt===T){De=!0,T=Y,q=Ae;break}if(vt===q){De=!0,q=Y,T=Ae;break}vt=vt.sibling}if(!De){for(vt=Ae.child;vt;){if(vt===T){De=!0,T=Ae,q=Y;break}if(vt===q){De=!0,q=Ae,T=Y;break}vt=vt.sibling}if(!De)throw Error(n(189))}}if(T.alternate!==q)throw Error(n(190))}if(T.tag!==3)throw Error(n(188));return T.stateNode.current===T?S:D}function Ee(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function Se(S){if(S=g(S),!S)return null;for(var D=S;;){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===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}var le=e.getPublicInstance,ne=e.getRootHostContext,ee=e.getChildHostContext,Ie=e.prepareForCommit,Fe=e.resetAfterCommit,At=e.createInstance,H=e.appendInitialChild,at=e.finalizeInitialChildren,Re=e.prepareUpdate,ke=e.shouldSetTextContent,xe=e.shouldDeprioritizeSubtree,He=e.createTextInstance,Te=e.setTimeout,Je=e.clearTimeout,qe=e.noTimeout,b=e.isPrimaryRenderer,w=e.supportsMutation,P=e.supportsPersistence,y=e.supportsHydration,F=e.appendChild,z=e.appendChildToContainer,X=e.commitTextUpdate,Z=e.commitMount,ie=e.commitUpdate,Pe=e.insertBefore,Ne=e.insertInContainerBefore,ot=e.removeChild,dt=e.removeChildFromContainer,jt=e.resetTextContent,$t=e.hideInstance,bt=e.hideTextInstance,an=e.unhideInstance,Qr=e.unhideTextInstance,mr=e.cloneInstance,br=e.createContainerChildSet,Wr=e.appendChildToContainerChildSet,Kn=e.finalizeContainerChildren,Ns=e.replaceContainerChildren,Ti=e.cloneHiddenInstance,ps=e.cloneHiddenTextInstance,io=e.canHydrateInstance,Pi=e.canHydrateTextInstance,Ls=e.isSuspenseInstancePending,so=e.isSuspenseInstanceFallback,cc=e.getNextHydratableSibling,cu=e.getFirstHydratableChild,lp=e.hydrateInstance,cp=e.hydrateTextInstance,Os=e.getNextHydratableInstanceAfterSuspenseInstance,Dn=e.commitHydratedContainer,oo=e.commitHydratedSuspenseInstance,Ms=/^(.*)[\\\\\\/]/;function ml(S){var D=\"\";do{e:switch(S.tag){case 3:case 4:case 6:case 7:case 10:case 9:var T=\"\";break e;default:var q=S._debugOwner,Y=S._debugSource,Ae=he(S.type);T=null,q&&(T=he(q.type)),q=Ae,Ae=\"\",Y?Ae=\" (at \"+Y.fileName.replace(Ms,\"\")+\":\"+Y.lineNumber+\")\":T&&(Ae=\" (created by \"+T+\")\"),T=`\n    in `+(q||\"Unknown\")+Ae}D+=T,S=S.return}while(S);return D}var yl=[],ao=-1;function Vn(S){0>ao||(S.current=yl[ao],yl[ao]=null,ao--)}function On(S,D){ao++,yl[ao]=S.current,S.current=D}var Ni={},Mn={current:Ni},_i={current:!1},tr=Ni;function Oe(S,D){var T=S.type.contextTypes;if(!T)return Ni;var q=S.stateNode;if(q&&q.__reactInternalMemoizedUnmaskedChildContext===D)return q.__reactInternalMemoizedMaskedChildContext;var Y={},Ae;for(Ae in T)Y[Ae]=D[Ae];return q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=D,S.__reactInternalMemoizedMaskedChildContext=Y),Y}function ii(S){return S=S.childContextTypes,S!=null}function Ma(S){Vn(_i,S),Vn(Mn,S)}function hr(S){Vn(_i,S),Vn(Mn,S)}function uc(S,D,T){if(Mn.current!==Ni)throw Error(n(168));On(Mn,D,S),On(_i,T,S)}function uu(S,D,T){var q=S.stateNode;if(S=D.childContextTypes,typeof q.getChildContext!=\"function\")return T;q=q.getChildContext();for(var Y in q)if(!(Y in S))throw Error(n(108,he(D)||\"Unknown\",Y));return r({},T,{},q)}function Ac(S){var D=S.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Ni,tr=Mn.current,On(Mn,D,S),On(_i,_i.current,S),!0}function El(S,D,T){var q=S.stateNode;if(!q)throw Error(n(169));T?(D=uu(S,D,tr),q.__reactInternalMemoizedMergedChildContext=D,Vn(_i,S),Vn(Mn,S),On(Mn,D,S)):Vn(_i,S),On(_i,T,S)}var DA=a.unstable_runWithPriority,Au=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Rt=a.unstable_shouldYield,fc=a.unstable_requestPaint,Hi=a.unstable_now,fu=a.unstable_getCurrentPriorityLevel,Yt=a.unstable_ImmediatePriority,Cl=a.unstable_UserBlockingPriority,SA=a.unstable_NormalPriority,up=a.unstable_LowPriority,pc=a.unstable_IdlePriority,PA={},Qn=fc!==void 0?fc:function(){},hi=null,hc=null,bA=!1,sa=Hi(),Li=1e4>sa?Hi:function(){return Hi()-sa};function _o(){switch(fu()){case Yt:return 99;case Cl:return 98;case SA:return 97;case up:return 96;case pc:return 95;default:throw Error(n(332))}}function Ze(S){switch(S){case 99:return Yt;case 98:return Cl;case 97:return SA;case 96:return up;case 95:return pc;default:throw Error(n(332))}}function lo(S,D){return S=Ze(S),DA(S,D)}function gc(S,D,T){return S=Ze(S),Au(S,D,T)}function pu(S){return hi===null?(hi=[S],hc=Au(Yt,hu)):hi.push(S),PA}function qi(){if(hc!==null){var S=hc;hc=null,Ce(S)}hu()}function hu(){if(!bA&&hi!==null){bA=!0;var S=0;try{var D=hi;lo(99,function(){for(;S<D.length;S++){var T=D[S];do T=T(!0);while(T!==null)}}),hi=null}catch(T){throw hi!==null&&(hi=hi.slice(S+1)),Au(Yt,qi),T}finally{bA=!1}}}var xA=3;function Ua(S,D,T){return T/=10,1073741821-(((1073741821-S+D/10)/T|0)+1)*T}function dc(S,D){return S===D&&(S!==0||1/S===1/D)||S!==S&&D!==D}var hs=typeof Object.is==\"function\"?Object.is:dc,_t=Object.prototype.hasOwnProperty;function Fn(S,D){if(hs(S,D))return!0;if(typeof S!=\"object\"||S===null||typeof D!=\"object\"||D===null)return!1;var T=Object.keys(S),q=Object.keys(D);if(T.length!==q.length)return!1;for(q=0;q<T.length;q++)if(!_t.call(D,T[q])||!hs(S[T[q]],D[T[q]]))return!1;return!0}function Ci(S,D){if(S&&S.defaultProps){D=r({},D),S=S.defaultProps;for(var T in S)D[T]===void 0&&(D[T]=S[T])}return D}var oa={current:null},co=null,Us=null,aa=null;function la(){aa=Us=co=null}function Ho(S,D){var T=S.type._context;b?(On(oa,T._currentValue,S),T._currentValue=D):(On(oa,T._currentValue2,S),T._currentValue2=D)}function wi(S){var D=oa.current;Vn(oa,S),S=S.type._context,b?S._currentValue=D:S._currentValue2=D}function gs(S,D){for(;S!==null;){var T=S.alternate;if(S.childExpirationTime<D)S.childExpirationTime=D,T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D);else if(T!==null&&T.childExpirationTime<D)T.childExpirationTime=D;else break;S=S.return}}function ds(S,D){co=S,aa=Us=null,S=S.dependencies,S!==null&&S.firstContext!==null&&(S.expirationTime>=D&&(jo=!0),S.firstContext=null)}function ms(S,D){if(aa!==S&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(aa=S,D=1073741823),D={context:S,observedBits:D,next:null},Us===null){if(co===null)throw Error(n(308));Us=D,co.dependencies={expirationTime:0,firstContext:D,responders:null}}else Us=Us.next=D;return b?S._currentValue:S._currentValue2}var _s=!1;function Un(S){return{baseState:S,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Sn(S){return{baseState:S.baseState,firstUpdate:S.firstUpdate,lastUpdate:S.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ys(S,D){return{expirationTime:S,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function We(S,D){S.lastUpdate===null?S.firstUpdate=S.lastUpdate=D:(S.lastUpdate.next=D,S.lastUpdate=D)}function tt(S,D){var T=S.alternate;if(T===null){var q=S.updateQueue,Y=null;q===null&&(q=S.updateQueue=Un(S.memoizedState))}else q=S.updateQueue,Y=T.updateQueue,q===null?Y===null?(q=S.updateQueue=Un(S.memoizedState),Y=T.updateQueue=Un(T.memoizedState)):q=S.updateQueue=Sn(Y):Y===null&&(Y=T.updateQueue=Sn(q));Y===null||q===Y?We(q,D):q.lastUpdate===null||Y.lastUpdate===null?(We(q,D),We(Y,D)):(We(q,D),Y.lastUpdate=D)}function It(S,D){var T=S.updateQueue;T=T===null?S.updateQueue=Un(S.memoizedState):nr(S,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=D:(T.lastCapturedUpdate.next=D,T.lastCapturedUpdate=D)}function nr(S,D){var T=S.alternate;return T!==null&&D===T.updateQueue&&(D=S.updateQueue=Sn(D)),D}function $(S,D,T,q,Y,Ae){switch(T.tag){case 1:return S=T.payload,typeof S==\"function\"?S.call(Ae,q,Y):S;case 3:S.effectTag=S.effectTag&-4097|64;case 0:if(S=T.payload,Y=typeof S==\"function\"?S.call(Ae,q,Y):S,Y==null)break;return r({},q,Y);case 2:_s=!0}return q}function ye(S,D,T,q,Y){_s=!1,D=nr(S,D);for(var Ae=D.baseState,De=null,vt=0,wt=D.firstUpdate,xt=Ae;wt!==null;){var _r=wt.expirationTime;_r<Y?(De===null&&(De=wt,Ae=xt),vt<_r&&(vt=_r)):(Pw(_r,wt.suspenseConfig),xt=$(S,D,wt,xt,T,q),wt.callback!==null&&(S.effectTag|=32,wt.nextEffect=null,D.lastEffect===null?D.firstEffect=D.lastEffect=wt:(D.lastEffect.nextEffect=wt,D.lastEffect=wt))),wt=wt.next}for(_r=null,wt=D.firstCapturedUpdate;wt!==null;){var is=wt.expirationTime;is<Y?(_r===null&&(_r=wt,De===null&&(Ae=xt)),vt<is&&(vt=is)):(xt=$(S,D,wt,xt,T,q),wt.callback!==null&&(S.effectTag|=32,wt.nextEffect=null,D.lastCapturedEffect===null?D.firstCapturedEffect=D.lastCapturedEffect=wt:(D.lastCapturedEffect.nextEffect=wt,D.lastCapturedEffect=wt))),wt=wt.next}De===null&&(D.lastUpdate=null),_r===null?D.lastCapturedUpdate=null:S.effectTag|=32,De===null&&_r===null&&(Ae=xt),D.baseState=Ae,D.firstUpdate=De,D.firstCapturedUpdate=_r,Hm(vt),S.expirationTime=vt,S.memoizedState=xt}function Le(S,D,T){D.firstCapturedUpdate!==null&&(D.lastUpdate!==null&&(D.lastUpdate.next=D.firstCapturedUpdate,D.lastUpdate=D.lastCapturedUpdate),D.firstCapturedUpdate=D.lastCapturedUpdate=null),pt(D.firstEffect,T),D.firstEffect=D.lastEffect=null,pt(D.firstCapturedEffect,T),D.firstCapturedEffect=D.lastCapturedEffect=null}function pt(S,D){for(;S!==null;){var T=S.callback;if(T!==null){S.callback=null;var q=D;if(typeof T!=\"function\")throw Error(n(191,T));T.call(q)}S=S.nextEffect}}var ht=u.ReactCurrentBatchConfig,Tt=new o.Component().refs;function er(S,D,T,q){D=S.memoizedState,T=T(q,D),T=T==null?D:r({},D,T),S.memoizedState=T,q=S.updateQueue,q!==null&&S.expirationTime===0&&(q.baseState=T)}var $r={isMounted:function(S){return(S=S._reactInternalFiber)?Be(S)===S:!1},enqueueSetState:function(S,D,T){S=S._reactInternalFiber;var q=ga(),Y=ht.suspense;q=qA(q,S,Y),Y=ys(q,Y),Y.payload=D,T!=null&&(Y.callback=T),tt(S,Y),Pc(S,q)},enqueueReplaceState:function(S,D,T){S=S._reactInternalFiber;var q=ga(),Y=ht.suspense;q=qA(q,S,Y),Y=ys(q,Y),Y.tag=1,Y.payload=D,T!=null&&(Y.callback=T),tt(S,Y),Pc(S,q)},enqueueForceUpdate:function(S,D){S=S._reactInternalFiber;var T=ga(),q=ht.suspense;T=qA(T,S,q),q=ys(T,q),q.tag=2,D!=null&&(q.callback=D),tt(S,q),Pc(S,T)}};function ji(S,D,T,q,Y,Ae,De){return S=S.stateNode,typeof S.shouldComponentUpdate==\"function\"?S.shouldComponentUpdate(q,Ae,De):D.prototype&&D.prototype.isPureReactComponent?!Fn(T,q)||!Fn(Y,Ae):!0}function es(S,D,T){var q=!1,Y=Ni,Ae=D.contextType;return typeof Ae==\"object\"&&Ae!==null?Ae=ms(Ae):(Y=ii(D)?tr:Mn.current,q=D.contextTypes,Ae=(q=q!=null)?Oe(S,Y):Ni),D=new D(T,Ae),S.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=$r,S.stateNode=D,D._reactInternalFiber=S,q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=Y,S.__reactInternalMemoizedMaskedChildContext=Ae),D}function bi(S,D,T,q){S=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(T,q),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(T,q),D.state!==S&&$r.enqueueReplaceState(D,D.state,null)}function qo(S,D,T,q){var Y=S.stateNode;Y.props=T,Y.state=S.memoizedState,Y.refs=Tt;var Ae=D.contextType;typeof Ae==\"object\"&&Ae!==null?Y.context=ms(Ae):(Ae=ii(D)?tr:Mn.current,Y.context=Oe(S,Ae)),Ae=S.updateQueue,Ae!==null&&(ye(S,Ae,T,Y,q),Y.state=S.memoizedState),Ae=D.getDerivedStateFromProps,typeof Ae==\"function\"&&(er(S,D,Ae,T),Y.state=S.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof Y.getSnapshotBeforeUpdate==\"function\"||typeof Y.UNSAFE_componentWillMount!=\"function\"&&typeof Y.componentWillMount!=\"function\"||(D=Y.state,typeof Y.componentWillMount==\"function\"&&Y.componentWillMount(),typeof Y.UNSAFE_componentWillMount==\"function\"&&Y.UNSAFE_componentWillMount(),D!==Y.state&&$r.enqueueReplaceState(Y,Y.state,null),Ae=S.updateQueue,Ae!==null&&(ye(S,Ae,T,Y,q),Y.state=S.memoizedState)),typeof Y.componentDidMount==\"function\"&&(S.effectTag|=4)}var kA=Array.isArray;function QA(S,D,T){if(S=T.ref,S!==null&&typeof S!=\"function\"&&typeof S!=\"object\"){if(T._owner){if(T=T._owner,T){if(T.tag!==1)throw Error(n(309));var q=T.stateNode}if(!q)throw Error(n(147,S));var Y=\"\"+S;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===Y?D.ref:(D=function(Ae){var De=q.refs;De===Tt&&(De=q.refs={}),Ae===null?delete De[Y]:De[Y]=Ae},D._stringRef=Y,D)}if(typeof S!=\"string\")throw Error(n(284));if(!T._owner)throw Error(n(290,S))}return S}function Ap(S,D){if(S.type!==\"textarea\")throw Error(n(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D,\"\"))}function ig(S){function D(rt,Ve){if(S){var ft=rt.lastEffect;ft!==null?(ft.nextEffect=Ve,rt.lastEffect=Ve):rt.firstEffect=rt.lastEffect=Ve,Ve.nextEffect=null,Ve.effectTag=8}}function T(rt,Ve){if(!S)return null;for(;Ve!==null;)D(rt,Ve),Ve=Ve.sibling;return null}function q(rt,Ve){for(rt=new Map;Ve!==null;)Ve.key!==null?rt.set(Ve.key,Ve):rt.set(Ve.index,Ve),Ve=Ve.sibling;return rt}function Y(rt,Ve,ft){return rt=WA(rt,Ve,ft),rt.index=0,rt.sibling=null,rt}function Ae(rt,Ve,ft){return rt.index=ft,S?(ft=rt.alternate,ft!==null?(ft=ft.index,ft<Ve?(rt.effectTag=2,Ve):ft):(rt.effectTag=2,Ve)):Ve}function De(rt){return S&&rt.alternate===null&&(rt.effectTag=2),rt}function vt(rt,Ve,ft,Wt){return Ve===null||Ve.tag!==6?(Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,Ve):(Ve=Y(Ve,ft,Wt),Ve.return=rt,Ve)}function wt(rt,Ve,ft,Wt){return Ve!==null&&Ve.elementType===ft.type?(Wt=Y(Ve,ft.props,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,Wt):(Wt=qm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,Wt)}function xt(rt,Ve,ft,Wt){return Ve===null||Ve.tag!==4||Ve.stateNode.containerInfo!==ft.containerInfo||Ve.stateNode.implementation!==ft.implementation?(Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,Ve):(Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,Ve)}function _r(rt,Ve,ft,Wt,vr){return Ve===null||Ve.tag!==7?(Ve=bu(ft,rt.mode,Wt,vr),Ve.return=rt,Ve):(Ve=Y(Ve,ft,Wt),Ve.return=rt,Ve)}function is(rt,Ve,ft){if(typeof Ve==\"string\"||typeof Ve==\"number\")return Ve=Fw(\"\"+Ve,rt.mode,ft),Ve.return=rt,Ve;if(typeof Ve==\"object\"&&Ve!==null){switch(Ve.$$typeof){case p:return ft=qm(Ve.type,Ve.key,Ve.props,null,rt.mode,ft),ft.ref=QA(rt,null,Ve),ft.return=rt,ft;case h:return Ve=Rw(Ve,rt.mode,ft),Ve.return=rt,Ve}if(kA(Ve)||ce(Ve))return Ve=bu(Ve,rt.mode,ft,null),Ve.return=rt,Ve;Ap(rt,Ve)}return null}function di(rt,Ve,ft,Wt){var vr=Ve!==null?Ve.key:null;if(typeof ft==\"string\"||typeof ft==\"number\")return vr!==null?null:vt(rt,Ve,\"\"+ft,Wt);if(typeof ft==\"object\"&&ft!==null){switch(ft.$$typeof){case p:return ft.key===vr?ft.type===E?_r(rt,Ve,ft.props.children,Wt,vr):wt(rt,Ve,ft,Wt):null;case h:return ft.key===vr?xt(rt,Ve,ft,Wt):null}if(kA(ft)||ce(ft))return vr!==null?null:_r(rt,Ve,ft,Wt,null);Ap(rt,ft)}return null}function po(rt,Ve,ft,Wt,vr){if(typeof Wt==\"string\"||typeof Wt==\"number\")return rt=rt.get(ft)||null,vt(Ve,rt,\"\"+Wt,vr);if(typeof Wt==\"object\"&&Wt!==null){switch(Wt.$$typeof){case p:return rt=rt.get(Wt.key===null?ft:Wt.key)||null,Wt.type===E?_r(Ve,rt,Wt.props.children,vr,Wt.key):wt(Ve,rt,Wt,vr);case h:return rt=rt.get(Wt.key===null?ft:Wt.key)||null,xt(Ve,rt,Wt,vr)}if(kA(Wt)||ce(Wt))return rt=rt.get(ft)||null,_r(Ve,rt,Wt,vr,null);Ap(Ve,Wt)}return null}function VA(rt,Ve,ft,Wt){for(var vr=null,Pn=null,Fr=Ve,bn=Ve=0,ai=null;Fr!==null&&bn<ft.length;bn++){Fr.index>bn?(ai=Fr,Fr=null):ai=Fr.sibling;var tn=di(rt,Fr,ft[bn],Wt);if(tn===null){Fr===null&&(Fr=ai);break}S&&Fr&&tn.alternate===null&&D(rt,Fr),Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn,Fr=ai}if(bn===ft.length)return T(rt,Fr),vr;if(Fr===null){for(;bn<ft.length;bn++)Fr=is(rt,ft[bn],Wt),Fr!==null&&(Ve=Ae(Fr,Ve,bn),Pn===null?vr=Fr:Pn.sibling=Fr,Pn=Fr);return vr}for(Fr=q(rt,Fr);bn<ft.length;bn++)ai=po(Fr,rt,bn,ft[bn],Wt),ai!==null&&(S&&ai.alternate!==null&&Fr.delete(ai.key===null?bn:ai.key),Ve=Ae(ai,Ve,bn),Pn===null?vr=ai:Pn.sibling=ai,Pn=ai);return S&&Fr.forEach(function(ho){return D(rt,ho)}),vr}function Yo(rt,Ve,ft,Wt){var vr=ce(ft);if(typeof vr!=\"function\")throw Error(n(150));if(ft=vr.call(ft),ft==null)throw Error(n(151));for(var Pn=vr=null,Fr=Ve,bn=Ve=0,ai=null,tn=ft.next();Fr!==null&&!tn.done;bn++,tn=ft.next()){Fr.index>bn?(ai=Fr,Fr=null):ai=Fr.sibling;var ho=di(rt,Fr,tn.value,Wt);if(ho===null){Fr===null&&(Fr=ai);break}S&&Fr&&ho.alternate===null&&D(rt,Fr),Ve=Ae(ho,Ve,bn),Pn===null?vr=ho:Pn.sibling=ho,Pn=ho,Fr=ai}if(tn.done)return T(rt,Fr),vr;if(Fr===null){for(;!tn.done;bn++,tn=ft.next())tn=is(rt,tn.value,Wt),tn!==null&&(Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn);return vr}for(Fr=q(rt,Fr);!tn.done;bn++,tn=ft.next())tn=po(Fr,rt,bn,tn.value,Wt),tn!==null&&(S&&tn.alternate!==null&&Fr.delete(tn.key===null?bn:tn.key),Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn);return S&&Fr.forEach(function(vF){return D(rt,vF)}),vr}return function(rt,Ve,ft,Wt){var vr=typeof ft==\"object\"&&ft!==null&&ft.type===E&&ft.key===null;vr&&(ft=ft.props.children);var Pn=typeof ft==\"object\"&&ft!==null;if(Pn)switch(ft.$$typeof){case p:e:{for(Pn=ft.key,vr=Ve;vr!==null;){if(vr.key===Pn)if(vr.tag===7?ft.type===E:vr.elementType===ft.type){T(rt,vr.sibling),Ve=Y(vr,ft.type===E?ft.props.children:ft.props,Wt),Ve.ref=QA(rt,vr,ft),Ve.return=rt,rt=Ve;break e}else{T(rt,vr);break}else D(rt,vr);vr=vr.sibling}ft.type===E?(Ve=bu(ft.props.children,rt.mode,Wt,ft.key),Ve.return=rt,rt=Ve):(Wt=qm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,rt=Wt)}return De(rt);case h:e:{for(vr=ft.key;Ve!==null;){if(Ve.key===vr)if(Ve.tag===4&&Ve.stateNode.containerInfo===ft.containerInfo&&Ve.stateNode.implementation===ft.implementation){T(rt,Ve.sibling),Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,rt=Ve;break e}else{T(rt,Ve);break}else D(rt,Ve);Ve=Ve.sibling}Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve}return De(rt)}if(typeof ft==\"string\"||typeof ft==\"number\")return ft=\"\"+ft,Ve!==null&&Ve.tag===6?(T(rt,Ve.sibling),Ve=Y(Ve,ft,Wt),Ve.return=rt,rt=Ve):(T(rt,Ve),Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve),De(rt);if(kA(ft))return VA(rt,Ve,ft,Wt);if(ce(ft))return Yo(rt,Ve,ft,Wt);if(Pn&&Ap(rt,ft),typeof ft>\"u\"&&!vr)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||\"Component\"))}return T(rt,Ve)}}var gu=ig(!0),sg=ig(!1),du={},uo={current:du},FA={current:du},mc={current:du};function ca(S){if(S===du)throw Error(n(174));return S}function og(S,D){On(mc,D,S),On(FA,S,S),On(uo,du,S),D=ne(D),Vn(uo,S),On(uo,D,S)}function yc(S){Vn(uo,S),Vn(FA,S),Vn(mc,S)}function Pm(S){var D=ca(mc.current),T=ca(uo.current);D=ee(T,S.type,D),T!==D&&(On(FA,S,S),On(uo,D,S))}function ag(S){FA.current===S&&(Vn(uo,S),Vn(FA,S))}var $n={current:0};function fp(S){for(var D=S;D!==null;){if(D.tag===13){var T=D.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||Ls(T)||so(T)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break;for(;D.sibling===null;){if(D.return===null||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function lg(S,D){return{responder:S,props:D}}var RA=u.ReactCurrentDispatcher,Hs=u.ReactCurrentBatchConfig,mu=0,Ha=null,Gi=null,ua=null,yu=null,Es=null,Ec=null,Cc=0,G=null,Dt=0,wl=!1,xi=null,wc=0;function ct(){throw Error(n(321))}function Eu(S,D){if(D===null)return!1;for(var T=0;T<D.length&&T<S.length;T++)if(!hs(S[T],D[T]))return!1;return!0}function cg(S,D,T,q,Y,Ae){if(mu=Ae,Ha=D,ua=S!==null?S.memoizedState:null,RA.current=ua===null?Ew:km,D=T(q,Y),wl){do wl=!1,wc+=1,ua=S!==null?S.memoizedState:null,Ec=yu,G=Es=Gi=null,RA.current=km,D=T(q,Y);while(wl);xi=null,wc=0}if(RA.current=wu,S=Ha,S.memoizedState=yu,S.expirationTime=Cc,S.updateQueue=G,S.effectTag|=Dt,S=Gi!==null&&Gi.next!==null,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,S)throw Error(n(300));return D}function yw(){RA.current=wu,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,wl=!1,xi=null,wc=0}function TA(){var S={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return Es===null?yu=Es=S:Es=Es.next=S,Es}function pp(){if(Ec!==null)Es=Ec,Ec=Es.next,Gi=ua,ua=Gi!==null?Gi.next:null;else{if(ua===null)throw Error(n(310));Gi=ua;var S={memoizedState:Gi.memoizedState,baseState:Gi.baseState,queue:Gi.queue,baseUpdate:Gi.baseUpdate,next:null};Es=Es===null?yu=S:Es.next=S,ua=Gi.next}return Es}function Br(S,D){return typeof D==\"function\"?D(S):D}function Cs(S){var D=pp(),T=D.queue;if(T===null)throw Error(n(311));if(T.lastRenderedReducer=S,0<wc){var q=T.dispatch;if(xi!==null){var Y=xi.get(T);if(Y!==void 0){xi.delete(T);var Ae=D.memoizedState;do Ae=S(Ae,Y.action),Y=Y.next;while(Y!==null);return hs(Ae,D.memoizedState)||(jo=!0),D.memoizedState=Ae,D.baseUpdate===T.last&&(D.baseState=Ae),T.lastRenderedState=Ae,[Ae,q]}}return[D.memoizedState,q]}q=T.last;var De=D.baseUpdate;if(Ae=D.baseState,De!==null?(q!==null&&(q.next=null),q=De.next):q=q!==null?q.next:null,q!==null){var vt=Y=null,wt=q,xt=!1;do{var _r=wt.expirationTime;_r<mu?(xt||(xt=!0,vt=De,Y=Ae),_r>Cc&&(Cc=_r,Hm(Cc))):(Pw(_r,wt.suspenseConfig),Ae=wt.eagerReducer===S?wt.eagerState:S(Ae,wt.action)),De=wt,wt=wt.next}while(wt!==null&&wt!==q);xt||(vt=De,Y=Ae),hs(Ae,D.memoizedState)||(jo=!0),D.memoizedState=Ae,D.baseUpdate=vt,D.baseState=Y,T.lastRenderedState=Ae}return[D.memoizedState,T.dispatch]}function ug(S){var D=TA();return typeof S==\"function\"&&(S=S()),D.memoizedState=D.baseState=S,S=D.queue={last:null,dispatch:null,lastRenderedReducer:Br,lastRenderedState:S},S=S.dispatch=gg.bind(null,Ha,S),[D.memoizedState,S]}function Ag(S){return Cs(Br,S)}function fg(S,D,T,q){return S={tag:S,create:D,destroy:T,deps:q,next:null},G===null?(G={lastEffect:null},G.lastEffect=S.next=S):(D=G.lastEffect,D===null?G.lastEffect=S.next=S:(T=D.next,D.next=S,S.next=T,G.lastEffect=S)),S}function hp(S,D,T,q){var Y=TA();Dt|=S,Y.memoizedState=fg(D,T,void 0,q===void 0?null:q)}function Ic(S,D,T,q){var Y=pp();q=q===void 0?null:q;var Ae=void 0;if(Gi!==null){var De=Gi.memoizedState;if(Ae=De.destroy,q!==null&&Eu(q,De.deps)){fg(0,T,Ae,q);return}}Dt|=S,Y.memoizedState=fg(D,T,Ae,q)}function Ct(S,D){return hp(516,192,S,D)}function bm(S,D){return Ic(516,192,S,D)}function pg(S,D){if(typeof D==\"function\")return S=S(),D(S),function(){D(null)};if(D!=null)return S=S(),D.current=S,function(){D.current=null}}function hg(){}function Cu(S,D){return TA().memoizedState=[S,D===void 0?null:D],S}function xm(S,D){var T=pp();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&Eu(D,q[1])?q[0]:(T.memoizedState=[S,D],S)}function gg(S,D,T){if(!(25>wc))throw Error(n(301));var q=S.alternate;if(S===Ha||q!==null&&q===Ha)if(wl=!0,S={expirationTime:mu,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},xi===null&&(xi=new Map),T=xi.get(D),T===void 0)xi.set(D,S);else{for(D=T;D.next!==null;)D=D.next;D.next=S}else{var Y=ga(),Ae=ht.suspense;Y=qA(Y,S,Ae),Ae={expirationTime:Y,suspenseConfig:Ae,action:T,eagerReducer:null,eagerState:null,next:null};var De=D.last;if(De===null)Ae.next=Ae;else{var vt=De.next;vt!==null&&(Ae.next=vt),De.next=Ae}if(D.last=Ae,S.expirationTime===0&&(q===null||q.expirationTime===0)&&(q=D.lastRenderedReducer,q!==null))try{var wt=D.lastRenderedState,xt=q(wt,T);if(Ae.eagerReducer=q,Ae.eagerState=xt,hs(xt,wt))return}catch{}finally{}Pc(S,Y)}}var wu={readContext:ms,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useResponder:ct,useDeferredValue:ct,useTransition:ct},Ew={readContext:ms,useCallback:Cu,useContext:ms,useEffect:Ct,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,hp(4,36,pg.bind(null,D,S),T)},useLayoutEffect:function(S,D){return hp(4,36,S,D)},useMemo:function(S,D){var T=TA();return D=D===void 0?null:D,S=S(),T.memoizedState=[S,D],S},useReducer:function(S,D,T){var q=TA();return D=T!==void 0?T(D):D,q.memoizedState=q.baseState=D,S=q.queue={last:null,dispatch:null,lastRenderedReducer:S,lastRenderedState:D},S=S.dispatch=gg.bind(null,Ha,S),[q.memoizedState,S]},useRef:function(S){var D=TA();return S={current:S},D.memoizedState=S},useState:ug,useDebugValue:hg,useResponder:lg,useDeferredValue:function(S,D){var T=ug(S),q=T[0],Y=T[1];return Ct(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(S)}finally{Hs.suspense=Ae}})},[S,D]),q},useTransition:function(S){var D=ug(!1),T=D[0],q=D[1];return[Cu(function(Y){q(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=S===void 0?null:S;try{q(!1),Y()}finally{Hs.suspense=Ae}})},[S,T]),T]}},km={readContext:ms,useCallback:xm,useContext:ms,useEffect:bm,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,Ic(4,36,pg.bind(null,D,S),T)},useLayoutEffect:function(S,D){return Ic(4,36,S,D)},useMemo:function(S,D){var T=pp();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&Eu(D,q[1])?q[0]:(S=S(),T.memoizedState=[S,D],S)},useReducer:Cs,useRef:function(){return pp().memoizedState},useState:Ag,useDebugValue:hg,useResponder:lg,useDeferredValue:function(S,D){var T=Ag(S),q=T[0],Y=T[1];return bm(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(S)}finally{Hs.suspense=Ae}})},[S,D]),q},useTransition:function(S){var D=Ag(!1),T=D[0],q=D[1];return[xm(function(Y){q(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=S===void 0?null:S;try{q(!1),Y()}finally{Hs.suspense=Ae}})},[S,T]),T]}},Aa=null,Bc=null,Il=!1;function Iu(S,D){var T=Dl(5,null,null,0);T.elementType=\"DELETED\",T.type=\"DELETED\",T.stateNode=D,T.return=S,T.effectTag=8,S.lastEffect!==null?(S.lastEffect.nextEffect=T,S.lastEffect=T):S.firstEffect=S.lastEffect=T}function dg(S,D){switch(S.tag){case 5:return D=io(D,S.type,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 6:return D=Pi(D,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function NA(S){if(Il){var D=Bc;if(D){var T=D;if(!dg(S,D)){if(D=cc(T),!D||!dg(S,D)){S.effectTag=S.effectTag&-1025|2,Il=!1,Aa=S;return}Iu(Aa,T)}Aa=S,Bc=cu(D)}else S.effectTag=S.effectTag&-1025|2,Il=!1,Aa=S}}function gp(S){for(S=S.return;S!==null&&S.tag!==5&&S.tag!==3&&S.tag!==13;)S=S.return;Aa=S}function qa(S){if(!y||S!==Aa)return!1;if(!Il)return gp(S),Il=!0,!1;var D=S.type;if(S.tag!==5||D!==\"head\"&&D!==\"body\"&&!ke(D,S.memoizedProps))for(D=Bc;D;)Iu(S,D),D=cc(D);if(gp(S),S.tag===13){if(!y)throw Error(n(316));if(S=S.memoizedState,S=S!==null?S.dehydrated:null,!S)throw Error(n(317));Bc=Os(S)}else Bc=Aa?cc(S.stateNode):null;return!0}function mg(){y&&(Bc=Aa=null,Il=!1)}var dp=u.ReactCurrentOwner,jo=!1;function ws(S,D,T,q){D.child=S===null?sg(D,null,T,q):gu(D,S.child,T,q)}function Ii(S,D,T,q,Y){T=T.render;var Ae=D.ref;return ds(D,Y),q=cg(S,D,T,q,Ae,Y),S!==null&&!jo?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=Y&&(S.expirationTime=0),si(S,D,Y)):(D.effectTag|=1,ws(S,D,q,Y),D.child)}function Qm(S,D,T,q,Y,Ae){if(S===null){var De=T.type;return typeof De==\"function\"&&!Qw(De)&&De.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(D.tag=15,D.type=De,Fm(S,D,De,q,Y,Ae)):(S=qm(T.type,null,q,null,D.mode,Ae),S.ref=D.ref,S.return=D,D.child=S)}return De=S.child,Y<Ae&&(Y=De.memoizedProps,T=T.compare,T=T!==null?T:Fn,T(Y,q)&&S.ref===D.ref)?si(S,D,Ae):(D.effectTag|=1,S=WA(De,q,Ae),S.ref=D.ref,S.return=D,D.child=S)}function Fm(S,D,T,q,Y,Ae){return S!==null&&Fn(S.memoizedProps,q)&&S.ref===D.ref&&(jo=!1,Y<Ae)?si(S,D,Ae):LA(S,D,T,q,Ae)}function Go(S,D){var T=D.ref;(S===null&&T!==null||S!==null&&S.ref!==T)&&(D.effectTag|=128)}function LA(S,D,T,q,Y){var Ae=ii(T)?tr:Mn.current;return Ae=Oe(D,Ae),ds(D,Y),T=cg(S,D,T,q,Ae,Y),S!==null&&!jo?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=Y&&(S.expirationTime=0),si(S,D,Y)):(D.effectTag|=1,ws(S,D,T,Y),D.child)}function mp(S,D,T,q,Y){if(ii(T)){var Ae=!0;Ac(D)}else Ae=!1;if(ds(D,Y),D.stateNode===null)S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),es(D,T,q,Y),qo(D,T,q,Y),q=!0;else if(S===null){var De=D.stateNode,vt=D.memoizedProps;De.props=vt;var wt=De.context,xt=T.contextType;typeof xt==\"object\"&&xt!==null?xt=ms(xt):(xt=ii(T)?tr:Mn.current,xt=Oe(D,xt));var _r=T.getDerivedStateFromProps,is=typeof _r==\"function\"||typeof De.getSnapshotBeforeUpdate==\"function\";is||typeof De.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof De.componentWillReceiveProps!=\"function\"||(vt!==q||wt!==xt)&&bi(D,De,q,xt),_s=!1;var di=D.memoizedState;wt=De.state=di;var po=D.updateQueue;po!==null&&(ye(D,po,q,De,Y),wt=D.memoizedState),vt!==q||di!==wt||_i.current||_s?(typeof _r==\"function\"&&(er(D,T,_r,q),wt=D.memoizedState),(vt=_s||ji(D,T,vt,q,di,wt,xt))?(is||typeof De.UNSAFE_componentWillMount!=\"function\"&&typeof De.componentWillMount!=\"function\"||(typeof De.componentWillMount==\"function\"&&De.componentWillMount(),typeof De.UNSAFE_componentWillMount==\"function\"&&De.UNSAFE_componentWillMount()),typeof De.componentDidMount==\"function\"&&(D.effectTag|=4)):(typeof De.componentDidMount==\"function\"&&(D.effectTag|=4),D.memoizedProps=q,D.memoizedState=wt),De.props=q,De.state=wt,De.context=xt,q=vt):(typeof De.componentDidMount==\"function\"&&(D.effectTag|=4),q=!1)}else De=D.stateNode,vt=D.memoizedProps,De.props=D.type===D.elementType?vt:Ci(D.type,vt),wt=De.context,xt=T.contextType,typeof xt==\"object\"&&xt!==null?xt=ms(xt):(xt=ii(T)?tr:Mn.current,xt=Oe(D,xt)),_r=T.getDerivedStateFromProps,(is=typeof _r==\"function\"||typeof De.getSnapshotBeforeUpdate==\"function\")||typeof De.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof De.componentWillReceiveProps!=\"function\"||(vt!==q||wt!==xt)&&bi(D,De,q,xt),_s=!1,wt=D.memoizedState,di=De.state=wt,po=D.updateQueue,po!==null&&(ye(D,po,q,De,Y),di=D.memoizedState),vt!==q||wt!==di||_i.current||_s?(typeof _r==\"function\"&&(er(D,T,_r,q),di=D.memoizedState),(_r=_s||ji(D,T,vt,q,wt,di,xt))?(is||typeof De.UNSAFE_componentWillUpdate!=\"function\"&&typeof De.componentWillUpdate!=\"function\"||(typeof De.componentWillUpdate==\"function\"&&De.componentWillUpdate(q,di,xt),typeof De.UNSAFE_componentWillUpdate==\"function\"&&De.UNSAFE_componentWillUpdate(q,di,xt)),typeof De.componentDidUpdate==\"function\"&&(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate==\"function\"&&(D.effectTag|=256)):(typeof De.componentDidUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=256),D.memoizedProps=q,D.memoizedState=di),De.props=q,De.state=di,De.context=xt,q=_r):(typeof De.componentDidUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=256),q=!1);return yp(S,D,T,q,Ae,Y)}function yp(S,D,T,q,Y,Ae){Go(S,D);var De=(D.effectTag&64)!==0;if(!q&&!De)return Y&&El(D,T,!1),si(S,D,Ae);q=D.stateNode,dp.current=D;var vt=De&&typeof T.getDerivedStateFromError!=\"function\"?null:q.render();return D.effectTag|=1,S!==null&&De?(D.child=gu(D,S.child,null,Ae),D.child=gu(D,null,vt,Ae)):ws(S,D,vt,Ae),D.memoizedState=q.state,Y&&El(D,T,!0),D.child}function yg(S){var D=S.stateNode;D.pendingContext?uc(S,D.pendingContext,D.pendingContext!==D.context):D.context&&uc(S,D.context,!1),og(S,D.containerInfo)}var fa={dehydrated:null,retryTime:0};function ln(S,D,T){var q=D.mode,Y=D.pendingProps,Ae=$n.current,De=!1,vt;if((vt=(D.effectTag&64)!==0)||(vt=(Ae&2)!==0&&(S===null||S.memoizedState!==null)),vt?(De=!0,D.effectTag&=-65):S!==null&&S.memoizedState===null||Y.fallback===void 0||Y.unstable_avoidThisFallback===!0||(Ae|=1),On($n,Ae&1,D),S===null){if(Y.fallback!==void 0&&NA(D),De){if(De=Y.fallback,Y=bu(null,q,0,null),Y.return=D,(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,Y.child=S;S!==null;)S.return=Y,S=S.sibling;return T=bu(De,q,T,null),T.return=D,Y.sibling=T,D.memoizedState=fa,D.child=Y,T}return q=Y.children,D.memoizedState=null,D.child=sg(D,null,q,T)}if(S.memoizedState!==null){if(S=S.child,q=S.sibling,De){if(Y=Y.fallback,T=WA(S,S.pendingProps,0),T.return=D,(D.mode&2)===0&&(De=D.memoizedState!==null?D.child.child:D.child,De!==S.child))for(T.child=De;De!==null;)De.return=T,De=De.sibling;return q=WA(q,Y,q.expirationTime),q.return=D,T.sibling=q,T.childExpirationTime=0,D.memoizedState=fa,D.child=T,q}return T=gu(D,S.child,Y.children,T),D.memoizedState=null,D.child=T}if(S=S.child,De){if(De=Y.fallback,Y=bu(null,q,0,null),Y.return=D,Y.child=S,S!==null&&(S.return=Y),(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,Y.child=S;S!==null;)S.return=Y,S=S.sibling;return T=bu(De,q,T,null),T.return=D,Y.sibling=T,T.effectTag|=2,Y.childExpirationTime=0,D.memoizedState=fa,D.child=Y,T}return D.memoizedState=null,D.child=gu(D,S,Y.children,T)}function Ao(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D),gs(S.return,D)}function OA(S,D,T,q,Y,Ae){var De=S.memoizedState;De===null?S.memoizedState={isBackwards:D,rendering:null,last:q,tail:T,tailExpiration:0,tailMode:Y,lastEffect:Ae}:(De.isBackwards=D,De.rendering=null,De.last=q,De.tail=T,De.tailExpiration=0,De.tailMode=Y,De.lastEffect=Ae)}function ja(S,D,T){var q=D.pendingProps,Y=q.revealOrder,Ae=q.tail;if(ws(S,D,q.children,T),q=$n.current,(q&2)!==0)q=q&1|2,D.effectTag|=64;else{if(S!==null&&(S.effectTag&64)!==0)e:for(S=D.child;S!==null;){if(S.tag===13)S.memoizedState!==null&&Ao(S,T);else if(S.tag===19)Ao(S,T);else if(S.child!==null){S.child.return=S,S=S.child;continue}if(S===D)break e;for(;S.sibling===null;){if(S.return===null||S.return===D)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}q&=1}if(On($n,q,D),(D.mode&2)===0)D.memoizedState=null;else switch(Y){case\"forwards\":for(T=D.child,Y=null;T!==null;)S=T.alternate,S!==null&&fp(S)===null&&(Y=T),T=T.sibling;T=Y,T===null?(Y=D.child,D.child=null):(Y=T.sibling,T.sibling=null),OA(D,!1,Y,T,Ae,D.lastEffect);break;case\"backwards\":for(T=null,Y=D.child,D.child=null;Y!==null;){if(S=Y.alternate,S!==null&&fp(S)===null){D.child=Y;break}S=Y.sibling,Y.sibling=T,T=Y,Y=S}OA(D,!0,T,null,Ae,D.lastEffect);break;case\"together\":OA(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function si(S,D,T){S!==null&&(D.dependencies=S.dependencies);var q=D.expirationTime;if(q!==0&&Hm(q),D.childExpirationTime<T)return null;if(S!==null&&D.child!==S.child)throw Error(n(153));if(D.child!==null){for(S=D.child,T=WA(S,S.pendingProps,S.expirationTime),D.child=T,T.return=D;S.sibling!==null;)S=S.sibling,T=T.sibling=WA(S,S.pendingProps,S.expirationTime),T.return=D;T.sibling=null}return D.child}function pa(S){S.effectTag|=4}var vc,Bl,ts,Gr;if(w)vc=function(S,D){for(var T=D.child;T!==null;){if(T.tag===5||T.tag===6)H(S,T.stateNode);else if(T.tag!==4&&T.child!==null){T.child.return=T,T=T.child;continue}if(T===D)break;for(;T.sibling===null;){if(T.return===null||T.return===D)return;T=T.return}T.sibling.return=T.return,T=T.sibling}},Bl=function(){},ts=function(S,D,T,q,Y){if(S=S.memoizedProps,S!==q){var Ae=D.stateNode,De=ca(uo.current);T=Re(Ae,T,S,q,Y,De),(D.updateQueue=T)&&pa(D)}},Gr=function(S,D,T,q){T!==q&&pa(D)};else if(P){vc=function(S,D,T,q){for(var Y=D.child;Y!==null;){if(Y.tag===5){var Ae=Y.stateNode;T&&q&&(Ae=Ti(Ae,Y.type,Y.memoizedProps,Y)),H(S,Ae)}else if(Y.tag===6)Ae=Y.stateNode,T&&q&&(Ae=ps(Ae,Y.memoizedProps,Y)),H(S,Ae);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(Ae=Y.memoizedState!==null)){var De=Y.child;if(De!==null&&(De.child!==null&&(De.child.return=De,vc(S,De,!0,Ae)),Ae=De.sibling,Ae!==null)){Ae.return=Y,Y=Ae;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};var Ep=function(S,D,T,q){for(var Y=D.child;Y!==null;){if(Y.tag===5){var Ae=Y.stateNode;T&&q&&(Ae=Ti(Ae,Y.type,Y.memoizedProps,Y)),Wr(S,Ae)}else if(Y.tag===6)Ae=Y.stateNode,T&&q&&(Ae=ps(Ae,Y.memoizedProps,Y)),Wr(S,Ae);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(Ae=Y.memoizedState!==null)){var De=Y.child;if(De!==null&&(De.child!==null&&(De.child.return=De,Ep(S,De,!0,Ae)),Ae=De.sibling,Ae!==null)){Ae.return=Y,Y=Ae;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};Bl=function(S){var D=S.stateNode;if(S.firstEffect!==null){var T=D.containerInfo,q=br(T);Ep(q,S,!1,!1),D.pendingChildren=q,pa(S),Kn(T,q)}},ts=function(S,D,T,q,Y){var Ae=S.stateNode,De=S.memoizedProps;if((S=D.firstEffect===null)&&De===q)D.stateNode=Ae;else{var vt=D.stateNode,wt=ca(uo.current),xt=null;De!==q&&(xt=Re(vt,T,De,q,Y,wt)),S&&xt===null?D.stateNode=Ae:(Ae=mr(Ae,xt,T,De,q,D,S,vt),at(Ae,T,q,Y,wt)&&pa(D),D.stateNode=Ae,S?pa(D):vc(Ae,D,!1,!1))}},Gr=function(S,D,T,q){T!==q&&(S=ca(mc.current),T=ca(uo.current),D.stateNode=He(q,S,T,D),pa(D))}}else Bl=function(){},ts=function(){},Gr=function(){};function Dc(S,D){switch(S.tailMode){case\"hidden\":D=S.tail;for(var T=null;D!==null;)D.alternate!==null&&(T=D),D=D.sibling;T===null?S.tail=null:T.sibling=null;break;case\"collapsed\":T=S.tail;for(var q=null;T!==null;)T.alternate!==null&&(q=T),T=T.sibling;q===null?D||S.tail===null?S.tail=null:S.tail.sibling=null:q.sibling=null}}function Cw(S){switch(S.tag){case 1:ii(S.type)&&Ma(S);var D=S.effectTag;return D&4096?(S.effectTag=D&-4097|64,S):null;case 3:if(yc(S),hr(S),D=S.effectTag,(D&64)!==0)throw Error(n(285));return S.effectTag=D&-4097|64,S;case 5:return ag(S),null;case 13:return Vn($n,S),D=S.effectTag,D&4096?(S.effectTag=D&-4097|64,S):null;case 19:return Vn($n,S),null;case 4:return yc(S),null;case 10:return wi(S),null;default:return null}}function Eg(S,D){return{value:S,source:D,stack:ml(D)}}var Cg=typeof WeakSet==\"function\"?WeakSet:Set;function Ga(S,D){var T=D.source,q=D.stack;q===null&&T!==null&&(q=ml(T)),T!==null&&he(T.type),D=D.value,S!==null&&S.tag===1&&he(S.type);try{console.error(D)}catch(Y){setTimeout(function(){throw Y})}}function Rm(S,D){try{D.props=S.memoizedProps,D.state=S.memoizedState,D.componentWillUnmount()}catch(T){YA(S,T)}}function wg(S){var D=S.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(T){YA(S,T)}else D.current=null}function Qt(S,D){switch(D.tag){case 0:case 11:case 15:N(2,0,D);break;case 1:if(D.effectTag&256&&S!==null){var T=S.memoizedProps,q=S.memoizedState;S=D.stateNode,D=S.getSnapshotBeforeUpdate(D.elementType===D.type?T:Ci(D.type,T),q),S.__reactInternalSnapshotBeforeUpdate=D}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}function N(S,D,T){if(T=T.updateQueue,T=T!==null?T.lastEffect:null,T!==null){var q=T=T.next;do{if((q.tag&S)!==0){var Y=q.destroy;q.destroy=void 0,Y!==void 0&&Y()}(q.tag&D)!==0&&(Y=q.create,q.destroy=Y()),q=q.next}while(q!==T)}}function K(S,D,T){switch(typeof kw==\"function\"&&kw(D),D.tag){case 0:case 11:case 14:case 15:if(S=D.updateQueue,S!==null&&(S=S.lastEffect,S!==null)){var q=S.next;lo(97<T?97:T,function(){var Y=q;do{var Ae=Y.destroy;if(Ae!==void 0){var De=D;try{Ae()}catch(vt){YA(De,vt)}}Y=Y.next}while(Y!==q)})}break;case 1:wg(D),T=D.stateNode,typeof T.componentWillUnmount==\"function\"&&Rm(D,T);break;case 5:wg(D);break;case 4:w?Cr(S,D,T):P&&ze(D)}}function re(S,D,T){for(var q=D;;)if(K(S,q,T),q.child===null||w&&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 pe(S){var D=S.alternate;S.return=null,S.child=null,S.memoizedState=null,S.updateQueue=null,S.dependencies=null,S.alternate=null,S.firstEffect=null,S.lastEffect=null,S.pendingProps=null,S.memoizedProps=null,D!==null&&pe(D)}function ze(S){if(P){S=S.stateNode.containerInfo;var D=br(S);Ns(S,D)}}function mt(S){return S.tag===5||S.tag===3||S.tag===4}function fr(S){if(w){e:{for(var D=S.return;D!==null;){if(mt(D)){var T=D;break e}D=D.return}throw Error(n(160))}switch(D=T.stateNode,T.tag){case 5:var q=!1;break;case 3:D=D.containerInfo,q=!0;break;case 4:D=D.containerInfo,q=!0;break;default:throw Error(n(161))}T.effectTag&16&&(jt(D),T.effectTag&=-17);e:t:for(T=S;;){for(;T.sibling===null;){if(T.return===null||mt(T.return)){T=null;break e}T=T.return}for(T.sibling.return=T.return,T=T.sibling;T.tag!==5&&T.tag!==6&&T.tag!==18;){if(T.effectTag&2||T.child===null||T.tag===4)continue t;T.child.return=T,T=T.child}if(!(T.effectTag&2)){T=T.stateNode;break e}}for(var Y=S;;){var Ae=Y.tag===5||Y.tag===6;if(Ae)Ae=Ae?Y.stateNode:Y.stateNode.instance,T?q?Ne(D,Ae,T):Pe(D,Ae,T):q?z(D,Ae):F(D,Ae);else if(Y.tag!==4&&Y.child!==null){Y.child.return=Y,Y=Y.child;continue}if(Y===S)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===S)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}}}function Cr(S,D,T){for(var q=D,Y=!1,Ae,De;;){if(!Y){Y=q.return;e:for(;;){if(Y===null)throw Error(n(160));switch(Ae=Y.stateNode,Y.tag){case 5:De=!1;break e;case 3:Ae=Ae.containerInfo,De=!0;break e;case 4:Ae=Ae.containerInfo,De=!0;break e}Y=Y.return}Y=!0}if(q.tag===5||q.tag===6)re(S,q,T),De?dt(Ae,q.stateNode):ot(Ae,q.stateNode);else if(q.tag===4){if(q.child!==null){Ae=q.stateNode.containerInfo,De=!0,q.child.return=q,q=q.child;continue}}else if(K(S,q,T),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&&(Y=!1)}q.sibling.return=q.return,q=q.sibling}}function yn(S,D){if(w)switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);break;case 1:break;case 5:var T=D.stateNode;if(T!=null){var q=D.memoizedProps;S=S!==null?S.memoizedProps:q;var Y=D.type,Ae=D.updateQueue;D.updateQueue=null,Ae!==null&&ie(T,Ae,Y,S,q,D)}break;case 6:if(D.stateNode===null)throw Error(n(162));T=D.memoizedProps,X(D.stateNode,S!==null?S.memoizedProps:T,T);break;case 3:y&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,Dn(D.containerInfo)));break;case 12:break;case 13:oi(D),Oi(D);break;case 19:Oi(D);break;case 17:break;case 20:break;case 21:break;default:throw Error(n(163))}else{switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);return;case 12:return;case 13:oi(D),Oi(D);return;case 19:Oi(D);return;case 3:y&&(T=D.stateNode,T.hydrate&&(T.hydrate=!1,Dn(T.containerInfo)))}e:if(P)switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,Ns(D.containerInfo,D.pendingChildren);break e;default:throw Error(n(163))}}}function oi(S){var D=S;if(S.memoizedState===null)var T=!1;else T=!0,D=S.child,Bw=Li();if(w&&D!==null){e:if(S=D,w)for(D=S;;){if(D.tag===5){var q=D.stateNode;T?$t(q):an(D.stateNode,D.memoizedProps)}else if(D.tag===6)q=D.stateNode,T?bt(q):Qr(q,D.memoizedProps);else if(D.tag===13&&D.memoizedState!==null&&D.memoizedState.dehydrated===null){q=D.child.sibling,q.return=D,D=q;continue}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break e;for(;D.sibling===null;){if(D.return===null||D.return===S)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}}}function Oi(S){var D=S.updateQueue;if(D!==null){S.updateQueue=null;var T=S.stateNode;T===null&&(T=S.stateNode=new Cg),D.forEach(function(q){var Y=yF.bind(null,S,q);T.has(q)||(T.add(q),q.then(Y,Y))})}}var Ig=typeof WeakMap==\"function\"?WeakMap:Map;function Gv(S,D,T){T=ys(T,null),T.tag=3,T.payload={element:null};var q=D.value;return T.callback=function(){vu||(vu=!0,Mm=q),Ga(S,D)},T}function Yv(S,D,T){T=ys(T,null),T.tag=3;var q=S.type.getDerivedStateFromError;if(typeof q==\"function\"){var Y=D.value;T.payload=function(){return Ga(S,D),q(Y)}}var Ae=S.stateNode;return Ae!==null&&typeof Ae.componentDidCatch==\"function\"&&(T.callback=function(){typeof q!=\"function\"&&(Du===null?Du=new Set([this]):Du.add(this),Ga(S,D));var De=D.stack;this.componentDidCatch(D.value,{componentStack:De!==null?De:\"\"})}),T}var ww=Math.ceil,Cp=u.ReactCurrentDispatcher,Iw=u.ReactCurrentOwner,En=0,Tm=8,rs=16,qs=32,Bu=0,Nm=1,Bi=2,ha=3,vl=4,Sc=5,yr=En,gi=null,Or=null,ns=0,Yi=Bu,Lm=null,Ya=1073741823,MA=1073741823,Om=null,wp=0,UA=!1,Bw=0,vw=500,sr=null,vu=!1,Mm=null,Du=null,Ip=!1,Bg=null,_A=90,HA=null,vg=0,Dw=null,Um=0;function ga(){return(yr&(rs|qs))!==En?1073741821-(Li()/10|0):Um!==0?Um:Um=1073741821-(Li()/10|0)}function qA(S,D,T){if(D=D.mode,(D&2)===0)return 1073741823;var q=_o();if((D&4)===0)return q===99?1073741823:1073741822;if((yr&rs)!==En)return ns;if(T!==null)S=Ua(S,T.timeoutMs|0||5e3,250);else switch(q){case 99:S=1073741823;break;case 98:S=Ua(S,150,100);break;case 97:case 96:S=Ua(S,5e3,250);break;case 95:S=2;break;default:throw Error(n(326))}return gi!==null&&S===ns&&--S,S}function Pc(S,D){if(50<vg)throw vg=0,Dw=null,Error(n(185));if(S=Dg(S,D),S!==null){var T=_o();D===1073741823?(yr&Tm)!==En&&(yr&(rs|qs))===En?Sw(S):(fo(S),yr===En&&qi()):fo(S),(yr&4)===En||T!==98&&T!==99||(HA===null?HA=new Map([[S,D]]):(T=HA.get(S),(T===void 0||T>D)&&HA.set(S,D)))}}function Dg(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D);var q=S.return,Y=null;if(q===null&&S.tag===3)Y=S.stateNode;else for(;q!==null;){if(T=q.alternate,q.childExpirationTime<D&&(q.childExpirationTime=D),T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D),q.return===null&&q.tag===3){Y=q.stateNode;break}q=q.return}return Y!==null&&(gi===Y&&(Hm(D),Yi===vl&&KA(Y,ns)),eD(Y,D)),Y}function _m(S){var D=S.lastExpiredTime;return D!==0||(D=S.firstPendingTime,!$v(S,D))?D:(D=S.lastPingedTime,S=S.nextKnownPendingLevel,D>S?D:S)}function fo(S){if(S.lastExpiredTime!==0)S.callbackExpirationTime=1073741823,S.callbackPriority=99,S.callbackNode=pu(Sw.bind(null,S));else{var D=_m(S),T=S.callbackNode;if(D===0)T!==null&&(S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90);else{var q=ga();if(D===1073741823?q=99:D===1||D===2?q=95:(q=10*(1073741821-D)-10*(1073741821-q),q=0>=q?99:250>=q?98:5250>=q?97:95),T!==null){var Y=S.callbackPriority;if(S.callbackExpirationTime===D&&Y>=q)return;T!==PA&&Ce(T)}S.callbackExpirationTime=D,S.callbackPriority=q,D=D===1073741823?pu(Sw.bind(null,S)):gc(q,Wv.bind(null,S),{timeout:10*(1073741821-D)-Li()}),S.callbackNode=D}}}function Wv(S,D){if(Um=0,D)return D=ga(),jm(S,D),fo(S),null;var T=_m(S);if(T!==0){if(D=S.callbackNode,(yr&(rs|qs))!==En)throw Error(n(327));if(Bp(),S===gi&&T===ns||Su(S,T),Or!==null){var q=yr;yr|=rs;var Y=GA(S);do try{pF();break}catch(vt){jA(S,vt)}while(1);if(la(),yr=q,Cp.current=Y,Yi===Nm)throw D=Lm,Su(S,T),KA(S,T),fo(S),D;if(Or===null)switch(Y=S.finishedWork=S.current.alternate,S.finishedExpirationTime=T,q=Yi,gi=null,q){case Bu:case Nm:throw Error(n(345));case Bi:jm(S,2<T?2:T);break;case ha:if(KA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=bw(Y)),Ya===1073741823&&(Y=Bw+vw-Li(),10<Y)){if(UA){var Ae=S.lastPingedTime;if(Ae===0||Ae>=T){S.lastPingedTime=T,Su(S,T);break}}if(Ae=_m(S),Ae!==0&&Ae!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}S.timeoutHandle=Te(Pu.bind(null,S),Y);break}Pu(S);break;case vl:if(KA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=bw(Y)),UA&&(Y=S.lastPingedTime,Y===0||Y>=T)){S.lastPingedTime=T,Su(S,T);break}if(Y=_m(S),Y!==0&&Y!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}if(MA!==1073741823?q=10*(1073741821-MA)-Li():Ya===1073741823?q=0:(q=10*(1073741821-Ya)-5e3,Y=Li(),T=10*(1073741821-T)-Y,q=Y-q,0>q&&(q=0),q=(120>q?120:480>q?480:1080>q?1080:1920>q?1920:3e3>q?3e3:4320>q?4320:1960*ww(q/1960))-q,T<q&&(q=T)),10<q){S.timeoutHandle=Te(Pu.bind(null,S),q);break}Pu(S);break;case Sc:if(Ya!==1073741823&&Om!==null){Ae=Ya;var De=Om;if(q=De.busyMinDurationMs|0,0>=q?q=0:(Y=De.busyDelayMs|0,Ae=Li()-(10*(1073741821-Ae)-(De.timeoutMs|0||5e3)),q=Ae<=Y?0:Y+q-Ae),10<q){KA(S,T),S.timeoutHandle=Te(Pu.bind(null,S),q);break}}Pu(S);break;default:throw Error(n(329))}if(fo(S),S.callbackNode===D)return Wv.bind(null,S)}}return null}function Sw(S){var D=S.lastExpiredTime;if(D=D!==0?D:1073741823,S.finishedExpirationTime===D)Pu(S);else{if((yr&(rs|qs))!==En)throw Error(n(327));if(Bp(),S===gi&&D===ns||Su(S,D),Or!==null){var T=yr;yr|=rs;var q=GA(S);do try{fF();break}catch(Y){jA(S,Y)}while(1);if(la(),yr=T,Cp.current=q,Yi===Nm)throw T=Lm,Su(S,D),KA(S,D),fo(S),T;if(Or!==null)throw Error(n(261));S.finishedWork=S.current.alternate,S.finishedExpirationTime=D,gi=null,Pu(S),fo(S)}}return null}function Kv(S,D){jm(S,D),fo(S),(yr&(rs|qs))===En&&qi()}function AF(){if(HA!==null){var S=HA;HA=null,S.forEach(function(D,T){jm(T,D),fo(T)}),qi()}}function Vv(S,D){if((yr&(rs|qs))!==En)throw Error(n(187));var T=yr;yr|=1;try{return lo(99,S.bind(null,D))}finally{yr=T,qi()}}function Su(S,D){S.finishedWork=null,S.finishedExpirationTime=0;var T=S.timeoutHandle;if(T!==qe&&(S.timeoutHandle=qe,Je(T)),Or!==null)for(T=Or.return;T!==null;){var q=T;switch(q.tag){case 1:var Y=q.type.childContextTypes;Y!=null&&Ma(q);break;case 3:yc(q),hr(q);break;case 5:ag(q);break;case 4:yc(q);break;case 13:Vn($n,q);break;case 19:Vn($n,q);break;case 10:wi(q)}T=T.return}gi=S,Or=WA(S.current,null,D),ns=D,Yi=Bu,Lm=null,MA=Ya=1073741823,Om=null,wp=0,UA=!1}function jA(S,D){do{try{if(la(),yw(),Or===null||Or.return===null)return Yi=Nm,Lm=D,null;e:{var T=S,q=Or.return,Y=Or,Ae=D;if(D=ns,Y.effectTag|=2048,Y.firstEffect=Y.lastEffect=null,Ae!==null&&typeof Ae==\"object\"&&typeof Ae.then==\"function\"){var De=Ae,vt=($n.current&1)!==0,wt=q;do{var xt;if(xt=wt.tag===13){var _r=wt.memoizedState;if(_r!==null)xt=_r.dehydrated!==null;else{var is=wt.memoizedProps;xt=is.fallback===void 0?!1:is.unstable_avoidThisFallback!==!0?!0:!vt}}if(xt){var di=wt.updateQueue;if(di===null){var po=new Set;po.add(De),wt.updateQueue=po}else di.add(De);if((wt.mode&2)===0){if(wt.effectTag|=64,Y.effectTag&=-2981,Y.tag===1)if(Y.alternate===null)Y.tag=17;else{var VA=ys(1073741823,null);VA.tag=2,tt(Y,VA)}Y.expirationTime=1073741823;break e}Ae=void 0,Y=D;var Yo=T.pingCache;if(Yo===null?(Yo=T.pingCache=new Ig,Ae=new Set,Yo.set(De,Ae)):(Ae=Yo.get(De),Ae===void 0&&(Ae=new Set,Yo.set(De,Ae))),!Ae.has(Y)){Ae.add(Y);var rt=mF.bind(null,T,De,Y);De.then(rt,rt)}wt.effectTag|=4096,wt.expirationTime=D;break e}wt=wt.return}while(wt!==null);Ae=Error((he(Y.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.`+ml(Y))}Yi!==Sc&&(Yi=Bi),Ae=Eg(Ae,Y),wt=q;do{switch(wt.tag){case 3:De=Ae,wt.effectTag|=4096,wt.expirationTime=D;var Ve=Gv(wt,De,D);It(wt,Ve);break e;case 1:De=Ae;var ft=wt.type,Wt=wt.stateNode;if((wt.effectTag&64)===0&&(typeof ft.getDerivedStateFromError==\"function\"||Wt!==null&&typeof Wt.componentDidCatch==\"function\"&&(Du===null||!Du.has(Wt)))){wt.effectTag|=4096,wt.expirationTime=D;var vr=Yv(wt,De,D);It(wt,vr);break e}}wt=wt.return}while(wt!==null)}Or=zv(Or)}catch(Pn){D=Pn;continue}break}while(1)}function GA(){var S=Cp.current;return Cp.current=wu,S===null?wu:S}function Pw(S,D){S<Ya&&2<S&&(Ya=S),D!==null&&S<MA&&2<S&&(MA=S,Om=D)}function Hm(S){S>wp&&(wp=S)}function fF(){for(;Or!==null;)Or=Jv(Or)}function pF(){for(;Or!==null&&!Rt();)Or=Jv(Or)}function Jv(S){var D=Zv(S.alternate,S,ns);return S.memoizedProps=S.pendingProps,D===null&&(D=zv(S)),Iw.current=null,D}function zv(S){Or=S;do{var D=Or.alternate;if(S=Or.return,(Or.effectTag&2048)===0){e:{var T=D;D=Or;var q=ns,Y=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:ii(D.type)&&Ma(D);break;case 3:yc(D),hr(D),Y=D.stateNode,Y.pendingContext&&(Y.context=Y.pendingContext,Y.pendingContext=null),(T===null||T.child===null)&&qa(D)&&pa(D),Bl(D);break;case 5:ag(D);var Ae=ca(mc.current);if(q=D.type,T!==null&&D.stateNode!=null)ts(T,D,q,Y,Ae),T.ref!==D.ref&&(D.effectTag|=128);else if(Y){if(T=ca(uo.current),qa(D)){if(Y=D,!y)throw Error(n(175));T=lp(Y.stateNode,Y.type,Y.memoizedProps,Ae,T,Y),Y.updateQueue=T,T=T!==null,T&&pa(D)}else{var De=At(q,Y,Ae,T,D);vc(De,D,!1,!1),D.stateNode=De,at(De,q,Y,Ae,T)&&pa(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(T&&D.stateNode!=null)Gr(T,D,T.memoizedProps,Y);else{if(typeof Y!=\"string\"&&D.stateNode===null)throw Error(n(166));if(T=ca(mc.current),Ae=ca(uo.current),qa(D)){if(T=D,!y)throw Error(n(176));(T=cp(T.stateNode,T.memoizedProps,T))&&pa(D)}else D.stateNode=He(Y,T,Ae,D)}break;case 11:break;case 13:if(Vn($n,D),Y=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=q;break e}Y=Y!==null,Ae=!1,T===null?D.memoizedProps.fallback!==void 0&&qa(D):(q=T.memoizedState,Ae=q!==null,Y||q===null||(q=T.child.sibling,q!==null&&(De=D.firstEffect,De!==null?(D.firstEffect=q,q.nextEffect=De):(D.firstEffect=D.lastEffect=q,q.nextEffect=null),q.effectTag=8))),Y&&!Ae&&(D.mode&2)!==0&&(T===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||($n.current&1)!==0?Yi===Bu&&(Yi=ha):((Yi===Bu||Yi===ha)&&(Yi=vl),wp!==0&&gi!==null&&(KA(gi,ns),eD(gi,wp)))),P&&Y&&(D.effectTag|=4),w&&(Y||Ae)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:yc(D),Bl(D);break;case 10:wi(D);break;case 9:break;case 14:break;case 17:ii(D.type)&&Ma(D);break;case 19:if(Vn($n,D),Y=D.memoizedState,Y===null)break;if(Ae=(D.effectTag&64)!==0,De=Y.rendering,De===null){if(Ae)Dc(Y,!1);else if(Yi!==Bu||T!==null&&(T.effectTag&64)!==0)for(T=D.child;T!==null;){if(De=fp(T),De!==null){for(D.effectTag|=64,Dc(Y,!1),T=De.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Y.lastEffect===null&&(D.firstEffect=null),D.lastEffect=Y.lastEffect,T=q,Y=D.child;Y!==null;)Ae=Y,q=T,Ae.effectTag&=2,Ae.nextEffect=null,Ae.firstEffect=null,Ae.lastEffect=null,De=Ae.alternate,De===null?(Ae.childExpirationTime=0,Ae.expirationTime=q,Ae.child=null,Ae.memoizedProps=null,Ae.memoizedState=null,Ae.updateQueue=null,Ae.dependencies=null):(Ae.childExpirationTime=De.childExpirationTime,Ae.expirationTime=De.expirationTime,Ae.child=De.child,Ae.memoizedProps=De.memoizedProps,Ae.memoizedState=De.memoizedState,Ae.updateQueue=De.updateQueue,q=De.dependencies,Ae.dependencies=q===null?null:{expirationTime:q.expirationTime,firstContext:q.firstContext,responders:q.responders}),Y=Y.sibling;On($n,$n.current&1|2,D),D=D.child;break e}T=T.sibling}}else{if(!Ae)if(T=fp(De),T!==null){if(D.effectTag|=64,Ae=!0,T=T.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Dc(Y,!0),Y.tail===null&&Y.tailMode===\"hidden\"&&!De.alternate){D=D.lastEffect=Y.lastEffect,D!==null&&(D.nextEffect=null);break}}else Li()>Y.tailExpiration&&1<q&&(D.effectTag|=64,Ae=!0,Dc(Y,!1),D.expirationTime=D.childExpirationTime=q-1);Y.isBackwards?(De.sibling=D.child,D.child=De):(T=Y.last,T!==null?T.sibling=De:D.child=De,Y.last=De)}if(Y.tail!==null){Y.tailExpiration===0&&(Y.tailExpiration=Li()+500),T=Y.tail,Y.rendering=T,Y.tail=T.sibling,Y.lastEffect=D.lastEffect,T.sibling=null,Y=$n.current,Y=Ae?Y&1|2:Y&1,On($n,Y,D),D=T;break e}break;case 20:break;case 21:break;default:throw Error(n(156,D.tag))}D=null}if(T=Or,ns===1||T.childExpirationTime!==1){for(Y=0,Ae=T.child;Ae!==null;)q=Ae.expirationTime,De=Ae.childExpirationTime,q>Y&&(Y=q),De>Y&&(Y=De),Ae=Ae.sibling;T.childExpirationTime=Y}if(D!==null)return D;S!==null&&(S.effectTag&2048)===0&&(S.firstEffect===null&&(S.firstEffect=Or.firstEffect),Or.lastEffect!==null&&(S.lastEffect!==null&&(S.lastEffect.nextEffect=Or.firstEffect),S.lastEffect=Or.lastEffect),1<Or.effectTag&&(S.lastEffect!==null?S.lastEffect.nextEffect=Or:S.firstEffect=Or,S.lastEffect=Or))}else{if(D=Cw(Or,ns),D!==null)return D.effectTag&=2047,D;S!==null&&(S.firstEffect=S.lastEffect=null,S.effectTag|=2048)}if(D=Or.sibling,D!==null)return D;Or=S}while(Or!==null);return Yi===Bu&&(Yi=Sc),null}function bw(S){var D=S.expirationTime;return S=S.childExpirationTime,D>S?D:S}function Pu(S){var D=_o();return lo(99,hF.bind(null,S,D)),null}function hF(S,D){do Bp();while(Bg!==null);if((yr&(rs|qs))!==En)throw Error(n(327));var T=S.finishedWork,q=S.finishedExpirationTime;if(T===null)return null;if(S.finishedWork=null,S.finishedExpirationTime=0,T===S.current)throw Error(n(177));S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90,S.nextKnownPendingLevel=0;var Y=bw(T);if(S.firstPendingTime=Y,q<=S.lastSuspendedTime?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:q<=S.firstSuspendedTime&&(S.firstSuspendedTime=q-1),q<=S.lastPingedTime&&(S.lastPingedTime=0),q<=S.lastExpiredTime&&(S.lastExpiredTime=0),S===gi&&(Or=gi=null,ns=0),1<T.effectTag?T.lastEffect!==null?(T.lastEffect.nextEffect=T,Y=T.firstEffect):Y=T:Y=T.firstEffect,Y!==null){var Ae=yr;yr|=qs,Iw.current=null,Ie(S.containerInfo),sr=Y;do try{gF()}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=Y;do try{for(var De=S,vt=D;sr!==null;){var wt=sr.effectTag;if(wt&16&&w&&jt(sr.stateNode),wt&128){var xt=sr.alternate;if(xt!==null){var _r=xt.ref;_r!==null&&(typeof _r==\"function\"?_r(null):_r.current=null)}}switch(wt&1038){case 2:fr(sr),sr.effectTag&=-3;break;case 6:fr(sr),sr.effectTag&=-3,yn(sr.alternate,sr);break;case 1024:sr.effectTag&=-1025;break;case 1028:sr.effectTag&=-1025,yn(sr.alternate,sr);break;case 4:yn(sr.alternate,sr);break;case 8:var is=De,di=sr,po=vt;w?Cr(is,di,po):re(is,di,po),pe(di)}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);Fe(S.containerInfo),S.current=T,sr=Y;do try{for(wt=q;sr!==null;){var VA=sr.effectTag;if(VA&36){var Yo=sr.alternate;switch(xt=sr,_r=wt,xt.tag){case 0:case 11:case 15:N(16,32,xt);break;case 1:var rt=xt.stateNode;if(xt.effectTag&4)if(Yo===null)rt.componentDidMount();else{var Ve=xt.elementType===xt.type?Yo.memoizedProps:Ci(xt.type,Yo.memoizedProps);rt.componentDidUpdate(Ve,Yo.memoizedState,rt.__reactInternalSnapshotBeforeUpdate)}var ft=xt.updateQueue;ft!==null&&Le(xt,ft,rt,_r);break;case 3:var Wt=xt.updateQueue;if(Wt!==null){if(De=null,xt.child!==null)switch(xt.child.tag){case 5:De=le(xt.child.stateNode);break;case 1:De=xt.child.stateNode}Le(xt,Wt,De,_r)}break;case 5:var vr=xt.stateNode;Yo===null&&xt.effectTag&4&&Z(vr,xt.type,xt.memoizedProps,xt);break;case 6:break;case 4:break;case 12:break;case 13:if(y&&xt.memoizedState===null){var Pn=xt.alternate;if(Pn!==null){var Fr=Pn.memoizedState;if(Fr!==null){var bn=Fr.dehydrated;bn!==null&&oo(bn)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(n(163))}}if(VA&128){xt=void 0;var ai=sr.ref;if(ai!==null){var tn=sr.stateNode;switch(sr.tag){case 5:xt=le(tn);break;default:xt=tn}typeof ai==\"function\"?ai(xt):ai.current=xt}}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=null,Qn(),yr=Ae}else S.current=T;if(Ip)Ip=!1,Bg=S,_A=D;else for(sr=Y;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr=D;if(D=S.firstPendingTime,D===0&&(Du=null),D===1073741823?S===Dw?vg++:(vg=0,Dw=S):vg=0,typeof xw==\"function\"&&xw(T.stateNode,q),fo(S),vu)throw vu=!1,S=Mm,Mm=null,S;return(yr&Tm)!==En||qi(),null}function gF(){for(;sr!==null;){var S=sr.effectTag;(S&256)!==0&&Qt(sr.alternate,sr),(S&512)===0||Ip||(Ip=!0,gc(97,function(){return Bp(),null})),sr=sr.nextEffect}}function Bp(){if(_A!==90){var S=97<_A?97:_A;return _A=90,lo(S,dF)}}function dF(){if(Bg===null)return!1;var S=Bg;if(Bg=null,(yr&(rs|qs))!==En)throw Error(n(331));var D=yr;for(yr|=qs,S=S.current.firstEffect;S!==null;){try{var T=S;if((T.effectTag&512)!==0)switch(T.tag){case 0:case 11:case 15:N(128,0,T),N(0,64,T)}}catch(q){if(S===null)throw Error(n(330));YA(S,q)}T=S.nextEffect,S.nextEffect=null,S=T}return yr=D,qi(),!0}function Xv(S,D,T){D=Eg(T,D),D=Gv(S,D,1073741823),tt(S,D),S=Dg(S,1073741823),S!==null&&fo(S)}function YA(S,D){if(S.tag===3)Xv(S,S,D);else for(var T=S.return;T!==null;){if(T.tag===3){Xv(T,S,D);break}else if(T.tag===1){var q=T.stateNode;if(typeof T.type.getDerivedStateFromError==\"function\"||typeof q.componentDidCatch==\"function\"&&(Du===null||!Du.has(q))){S=Eg(D,S),S=Yv(T,S,1073741823),tt(T,S),T=Dg(T,1073741823),T!==null&&fo(T);break}}T=T.return}}function mF(S,D,T){var q=S.pingCache;q!==null&&q.delete(D),gi===S&&ns===T?Yi===vl||Yi===ha&&Ya===1073741823&&Li()-Bw<vw?Su(S,ns):UA=!0:$v(S,T)&&(D=S.lastPingedTime,D!==0&&D<T||(S.lastPingedTime=T,S.finishedExpirationTime===T&&(S.finishedExpirationTime=0,S.finishedWork=null),fo(S)))}function yF(S,D){var T=S.stateNode;T!==null&&T.delete(D),D=0,D===0&&(D=ga(),D=qA(D,S,null)),S=Dg(S,D),S!==null&&fo(S)}var Zv;Zv=function(S,D,T){var q=D.expirationTime;if(S!==null){var Y=D.pendingProps;if(S.memoizedProps!==Y||_i.current)jo=!0;else{if(q<T){switch(jo=!1,D.tag){case 3:yg(D),mg();break;case 5:if(Pm(D),D.mode&4&&T!==1&&xe(D.type,Y))return D.expirationTime=D.childExpirationTime=1,null;break;case 1:ii(D.type)&&Ac(D);break;case 4:og(D,D.stateNode.containerInfo);break;case 10:Ho(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return q=D.child.childExpirationTime,q!==0&&q>=T?ln(S,D,T):(On($n,$n.current&1,D),D=si(S,D,T),D!==null?D.sibling:null);On($n,$n.current&1,D);break;case 19:if(q=D.childExpirationTime>=T,(S.effectTag&64)!==0){if(q)return ja(S,D,T);D.effectTag|=64}if(Y=D.memoizedState,Y!==null&&(Y.rendering=null,Y.tail=null),On($n,$n.current,D),!q)return null}return si(S,D,T)}jo=!1}}else jo=!1;switch(D.expirationTime=0,D.tag){case 2:if(q=D.type,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,Y=Oe(D,Mn.current),ds(D,T),Y=cg(null,D,q,S,Y,T),D.effectTag|=1,typeof Y==\"object\"&&Y!==null&&typeof Y.render==\"function\"&&Y.$$typeof===void 0){if(D.tag=1,yw(),ii(q)){var Ae=!0;Ac(D)}else Ae=!1;D.memoizedState=Y.state!==null&&Y.state!==void 0?Y.state:null;var De=q.getDerivedStateFromProps;typeof De==\"function\"&&er(D,q,De,S),Y.updater=$r,D.stateNode=Y,Y._reactInternalFiber=D,qo(D,q,S,T),D=yp(null,D,q,!0,Ae,T)}else D.tag=0,ws(null,D,Y,T),D=D.child;return D;case 16:if(Y=D.elementType,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,me(Y),Y._status!==1)throw Y._result;switch(Y=Y._result,D.type=Y,Ae=D.tag=wF(Y),S=Ci(Y,S),Ae){case 0:D=LA(null,D,Y,S,T);break;case 1:D=mp(null,D,Y,S,T);break;case 11:D=Ii(null,D,Y,S,T);break;case 14:D=Qm(null,D,Y,Ci(Y.type,S),q,T);break;default:throw Error(n(306,Y,\"\"))}return D;case 0:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),LA(S,D,q,Y,T);case 1:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),mp(S,D,q,Y,T);case 3:if(yg(D),q=D.updateQueue,q===null)throw Error(n(282));if(Y=D.memoizedState,Y=Y!==null?Y.element:null,ye(D,q,D.pendingProps,null,T),q=D.memoizedState.element,q===Y)mg(),D=si(S,D,T);else{if((Y=D.stateNode.hydrate)&&(y?(Bc=cu(D.stateNode.containerInfo),Aa=D,Y=Il=!0):Y=!1),Y)for(T=sg(D,null,q,T),D.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else ws(S,D,q,T),mg();D=D.child}return D;case 5:return Pm(D),S===null&&NA(D),q=D.type,Y=D.pendingProps,Ae=S!==null?S.memoizedProps:null,De=Y.children,ke(q,Y)?De=null:Ae!==null&&ke(q,Ae)&&(D.effectTag|=16),Go(S,D),D.mode&4&&T!==1&&xe(q,Y)?(D.expirationTime=D.childExpirationTime=1,D=null):(ws(S,D,De,T),D=D.child),D;case 6:return S===null&&NA(D),null;case 13:return ln(S,D,T);case 4:return og(D,D.stateNode.containerInfo),q=D.pendingProps,S===null?D.child=gu(D,null,q,T):ws(S,D,q,T),D.child;case 11:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),Ii(S,D,q,Y,T);case 7:return ws(S,D,D.pendingProps,T),D.child;case 8:return ws(S,D,D.pendingProps.children,T),D.child;case 12:return ws(S,D,D.pendingProps.children,T),D.child;case 10:e:{if(q=D.type._context,Y=D.pendingProps,De=D.memoizedProps,Ae=Y.value,Ho(D,Ae),De!==null){var vt=De.value;if(Ae=hs(vt,Ae)?0:(typeof q._calculateChangedBits==\"function\"?q._calculateChangedBits(vt,Ae):1073741823)|0,Ae===0){if(De.children===Y.children&&!_i.current){D=si(S,D,T);break e}}else for(vt=D.child,vt!==null&&(vt.return=D);vt!==null;){var wt=vt.dependencies;if(wt!==null){De=vt.child;for(var xt=wt.firstContext;xt!==null;){if(xt.context===q&&(xt.observedBits&Ae)!==0){vt.tag===1&&(xt=ys(T,null),xt.tag=2,tt(vt,xt)),vt.expirationTime<T&&(vt.expirationTime=T),xt=vt.alternate,xt!==null&&xt.expirationTime<T&&(xt.expirationTime=T),gs(vt.return,T),wt.expirationTime<T&&(wt.expirationTime=T);break}xt=xt.next}}else De=vt.tag===10&&vt.type===D.type?null:vt.child;if(De!==null)De.return=vt;else for(De=vt;De!==null;){if(De===D){De=null;break}if(vt=De.sibling,vt!==null){vt.return=De.return,De=vt;break}De=De.return}vt=De}}ws(S,D,Y.children,T),D=D.child}return D;case 9:return Y=D.type,Ae=D.pendingProps,q=Ae.children,ds(D,T),Y=ms(Y,Ae.unstable_observedBits),q=q(Y),D.effectTag|=1,ws(S,D,q,T),D.child;case 14:return Y=D.type,Ae=Ci(Y,D.pendingProps),Ae=Ci(Y.type,Ae),Qm(S,D,Y,Ae,q,T);case 15:return Fm(S,D,D.type,D.pendingProps,q,T);case 17:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),D.tag=1,ii(q)?(S=!0,Ac(D)):S=!1,ds(D,T),es(D,q,Y,T),qo(D,q,Y,T),yp(null,D,q,!0,S,T);case 19:return ja(S,D,T)}throw Error(n(156,D.tag))};var xw=null,kw=null;function EF(S){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var T=D.inject(S);xw=function(q){try{D.onCommitFiberRoot(T,q,void 0,(q.current.effectTag&64)===64)}catch{}},kw=function(q){try{D.onCommitFiberUnmount(T,q)}catch{}}}catch{}return!0}function CF(S,D,T,q){this.tag=S,this.key=T,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=q,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Dl(S,D,T,q){return new CF(S,D,T,q)}function Qw(S){return S=S.prototype,!(!S||!S.isReactComponent)}function wF(S){if(typeof S==\"function\")return Qw(S)?1:0;if(S!=null){if(S=S.$$typeof,S===L)return 11;if(S===te)return 14}return 2}function WA(S,D){var T=S.alternate;return T===null?(T=Dl(S.tag,D,S.key,S.mode),T.elementType=S.elementType,T.type=S.type,T.stateNode=S.stateNode,T.alternate=S,S.alternate=T):(T.pendingProps=D,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=S.childExpirationTime,T.expirationTime=S.expirationTime,T.child=S.child,T.memoizedProps=S.memoizedProps,T.memoizedState=S.memoizedState,T.updateQueue=S.updateQueue,D=S.dependencies,T.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},T.sibling=S.sibling,T.index=S.index,T.ref=S.ref,T}function qm(S,D,T,q,Y,Ae){var De=2;if(q=S,typeof S==\"function\")Qw(S)&&(De=1);else if(typeof S==\"string\")De=5;else e:switch(S){case E:return bu(T.children,Y,Ae,D);case R:De=8,Y|=7;break;case I:De=8,Y|=1;break;case v:return S=Dl(12,T,D,Y|8),S.elementType=v,S.type=v,S.expirationTime=Ae,S;case U:return S=Dl(13,T,D,Y),S.type=U,S.elementType=U,S.expirationTime=Ae,S;case J:return S=Dl(19,T,D,Y),S.elementType=J,S.expirationTime=Ae,S;default:if(typeof S==\"object\"&&S!==null)switch(S.$$typeof){case x:De=10;break e;case C:De=9;break e;case L:De=11;break e;case te:De=14;break e;case ae:De=16,q=null;break e}throw Error(n(130,S==null?S:typeof S,\"\"))}return D=Dl(De,T,D,Y),D.elementType=S,D.type=q,D.expirationTime=Ae,D}function bu(S,D,T,q){return S=Dl(7,S,q,D),S.expirationTime=T,S}function Fw(S,D,T){return S=Dl(6,S,null,D),S.expirationTime=T,S}function Rw(S,D,T){return D=Dl(4,S.children!==null?S.children:[],S.key,D),D.expirationTime=T,D.stateNode={containerInfo:S.containerInfo,pendingChildren:null,implementation:S.implementation},D}function IF(S,D,T){this.tag=D,this.current=null,this.containerInfo=S,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=qe,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function $v(S,D){var T=S.firstSuspendedTime;return S=S.lastSuspendedTime,T!==0&&T>=D&&S<=D}function KA(S,D){var T=S.firstSuspendedTime,q=S.lastSuspendedTime;T<D&&(S.firstSuspendedTime=D),(q>D||T===0)&&(S.lastSuspendedTime=D),D<=S.lastPingedTime&&(S.lastPingedTime=0),D<=S.lastExpiredTime&&(S.lastExpiredTime=0)}function eD(S,D){D>S.firstPendingTime&&(S.firstPendingTime=D);var T=S.firstSuspendedTime;T!==0&&(D>=T?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:D>=S.lastSuspendedTime&&(S.lastSuspendedTime=D+1),D>S.nextKnownPendingLevel&&(S.nextKnownPendingLevel=D))}function jm(S,D){var T=S.lastExpiredTime;(T===0||T>D)&&(S.lastExpiredTime=D)}function tD(S){var D=S._reactInternalFiber;if(D===void 0)throw typeof S.render==\"function\"?Error(n(188)):Error(n(268,Object.keys(S)));return S=Ee(D),S===null?null:S.stateNode}function rD(S,D){S=S.memoizedState,S!==null&&S.dehydrated!==null&&S.retryTime<D&&(S.retryTime=D)}function Gm(S,D){rD(S,D),(S=S.alternate)&&rD(S,D)}var nD={createContainer:function(S,D,T){return S=new IF(S,D,T),D=Dl(3,null,null,D===2?7:D===1?3:0),S.current=D,D.stateNode=S},updateContainer:function(S,D,T,q){var Y=D.current,Ae=ga(),De=ht.suspense;Ae=qA(Ae,Y,De);e:if(T){T=T._reactInternalFiber;t:{if(Be(T)!==T||T.tag!==1)throw Error(n(170));var vt=T;do{switch(vt.tag){case 3:vt=vt.stateNode.context;break t;case 1:if(ii(vt.type)){vt=vt.stateNode.__reactInternalMemoizedMergedChildContext;break t}}vt=vt.return}while(vt!==null);throw Error(n(171))}if(T.tag===1){var wt=T.type;if(ii(wt)){T=uu(T,wt,vt);break e}}T=vt}else T=Ni;return D.context===null?D.context=T:D.pendingContext=T,D=ys(Ae,De),D.payload={element:S},q=q===void 0?null:q,q!==null&&(D.callback=q),tt(Y,D),Pc(Y,Ae),Ae},batchedEventUpdates:function(S,D){var T=yr;yr|=2;try{return S(D)}finally{yr=T,yr===En&&qi()}},batchedUpdates:function(S,D){var T=yr;yr|=1;try{return S(D)}finally{yr=T,yr===En&&qi()}},unbatchedUpdates:function(S,D){var T=yr;yr&=-2,yr|=Tm;try{return S(D)}finally{yr=T,yr===En&&qi()}},deferredUpdates:function(S){return lo(97,S)},syncUpdates:function(S,D,T,q){return lo(99,S.bind(null,D,T,q))},discreteUpdates:function(S,D,T,q){var Y=yr;yr|=4;try{return lo(98,S.bind(null,D,T,q))}finally{yr=Y,yr===En&&qi()}},flushDiscreteUpdates:function(){(yr&(1|rs|qs))===En&&(AF(),Bp())},flushControlled:function(S){var D=yr;yr|=1;try{lo(99,S)}finally{yr=D,yr===En&&qi()}},flushSync:Vv,flushPassiveEffects:Bp,IsThisRendererActing:{current:!1},getPublicRootInstance:function(S){if(S=S.current,!S.child)return null;switch(S.child.tag){case 5:return le(S.child.stateNode);default:return S.child.stateNode}},attemptSynchronousHydration:function(S){switch(S.tag){case 3:var D=S.stateNode;D.hydrate&&Kv(D,D.firstPendingTime);break;case 13:Vv(function(){return Pc(S,1073741823)}),D=Ua(ga(),150,100),Gm(S,D)}},attemptUserBlockingHydration:function(S){if(S.tag===13){var D=Ua(ga(),150,100);Pc(S,D),Gm(S,D)}},attemptContinuousHydration:function(S){if(S.tag===13){ga();var D=xA++;Pc(S,D),Gm(S,D)}},attemptHydrationAtCurrentPriority:function(S){if(S.tag===13){var D=ga();D=qA(D,S,null),Pc(S,D),Gm(S,D)}},findHostInstance:tD,findHostInstanceWithWarning:function(S){return tD(S)},findHostInstanceWithNoPortals:function(S){return S=Se(S),S===null?null:S.tag===20?S.stateNode.instance:S.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(S){var D=S.findFiberByHostInstance;return EF(r({},S,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:u.ReactCurrentDispatcher,findHostInstanceByFiber:function(T){return T=Ee(T),T===null?null:T.stateNode},findFiberByHostInstance:function(T){return D?D(T):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};lB.exports=nD.default||nD;var BF=lB.exports;return lB.exports=t,BF}});var PEe=_((mKt,SEe)=>{\"use strict\";SEe.exports=DEe()});var xEe=_((yKt,bEe)=>{\"use strict\";var Hyt={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};bEe.exports=Hyt});var REe=_((EKt,FEe)=>{\"use strict\";var qyt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},Wk=function(){function t(e,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),e}}();function P6(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function b6(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var tu=xEe(),jyt=function(){function t(e,r,o,a,n,u){b6(this,t),this.left=e,this.right=r,this.top=o,this.bottom=a,this.width=n,this.height=u}return Wk(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}(),kEe=function(){Wk(t,null,[{key:\"fromJS\",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){b6(this,t),this.width=e,this.height=r}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),t}(),QEe=function(){function t(e,r){b6(this,t),this.unit=e,this.value=r}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case tu.UNIT_POINT:return String(this.value);case tu.UNIT_PERCENT:return this.value+\"%\";case tu.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),t}();FEe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var E=arguments.length,I=Array(E),v=0;v<E;v++)I[v]=arguments[v];return p.call.apply(p,[this,h].concat(I))}}for(var o=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var A,p=o[n],h=(A={},P6(A,tu.UNIT_POINT,e.Node.prototype[p]),P6(A,tu.UNIT_PERCENT,e.Node.prototype[p+\"Percent\"]),P6(A,tu.UNIT_AUTO,e.Node.prototype[p+\"Auto\"]),A);r(e.Node.prototype,p,function(E){for(var I=arguments.length,v=Array(I>1?I-1:0),x=1;x<I;x++)v[x-1]=arguments[x];var C=v.pop(),R=void 0,L=void 0;if(C===\"auto\")R=tu.UNIT_AUTO,L=void 0;else if(C instanceof QEe)R=C.unit,L=C.valueOf();else if(R=typeof C==\"string\"&&C.endsWith(\"%\")?tu.UNIT_PERCENT:tu.UNIT_POINT,L=parseFloat(C),!Number.isNaN(C)&&Number.isNaN(L))throw new Error(\"Invalid value \"+C+\" for \"+p);if(!h[R])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+C+\"'\");if(L!==void 0){var U;return(U=h[R]).call.apply(U,[this].concat(v,[L]))}else{var J;return(J=h[R]).call.apply(J,[this].concat(v))}})},n=0;n<o.length;n++)a();return r(e.Config.prototype,\"free\",function(){e.Config.destroy(this)}),r(e.Node,\"create\",function(u,A){return A?e.Node.createWithConfig(A):e.Node.createDefault()}),r(e.Node.prototype,\"free\",function(){e.Node.destroy(this)}),r(e.Node.prototype,\"freeRecursive\",function(){for(var u=0,A=this.getChildCount();u<A;++u)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,\"setMeasureFunc\",function(u,A){return A?u.call(this,function(){return kEe.fromJS(A.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,\"calculateLayout\",function(u){var A=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]:tu.DIRECTION_LTR;return u.call(this,A,p,h)}),qyt({Config:e.Config,Node:e.Node,Layout:t(\"Layout\",jyt),Size:t(\"Size\",kEe),Value:t(\"Value\",QEe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tu)}});var TEe=_((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 ve==\"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 o=nodeFS.readFileSync(e);return r?o:o.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,o){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):o()},a.onerror=o,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 o=enlargeMemory();if(!o)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 o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},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,o,a,n){var u=getCFunc(e),A=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[o[h]];E?(p===0&&(p=Runtime.stackSave()),A[h]=E(a[h])):A[h]=a[h]}var I=u.apply(null,A);if(r===\"string\"&&(I=Pointer_stringify(I)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return I};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,o){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,o){var a,n;typeof t==\"number\"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e==\"string\"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o<p;o+=4)HEAP32[o>>2]=0;for(p=A+n;o<p;)HEAP8[o++>>0]=0;return A}if(u===\"i8\")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,E,I,v;h<n;){var x=t[h];if(typeof x==\"function\"&&(x=Runtime.getFunctionIndex(x)),E=u||e[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(A+h,x,E),v!==E&&(I=Runtime.getNativeTypeSize(E),v=E),h+=I}return A}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,o,a=0;o=HEAPU8[t+a>>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n=\"\";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;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 o,a,n,u,A,p,h=\"\";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var E=o-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,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u<t.length;++u){var A=t.charCodeAt(u);if(A>=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&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 o=t.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=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),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,\"i32\")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}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 o=demangle(r);return r===o?r:r+\" [\"+o+\"]\"})}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 o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),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 o=t[r];o>255&&(o&=255),e.push(String.fromCharCode(o))}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 o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o<t.length;++o)HEAP8[e++>>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+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,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,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,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(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,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/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 u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},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(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,\"*\")}}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,o,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=o;var n;typeof o<\"u\"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=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,I=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=I:(I=I+.5,Browser.mainLoop.remainingBlockers=(8*E+I)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),u<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(u<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),!(u<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,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(x){Runtime.warnOnce(\"Blob constructor present but fails: \"+x+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var I=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,\"Image \"+u+\" could not be decoded\");var C=document.createElement(\"canvas\");C.width=v.width,C.height=v.height;var R=C.getContext(\"2d\");R.drawImage(v,0,0),Module.preloadedImages[u]=C,Browser.URLObject.revokeObjectURL(I),A&&A(n)},v.onerror=function(C){console.log(\"Image \"+I+\" could not be decoded\"),p&&p()},v.src=I},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,u,A,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[u]=R,A&&A(n))}function I(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return I()}var x=Browser.URLObject.createObjectURL(v),C=new Audio;C.addEventListener(\"canplaythrough\",function(){E(C)},!1),C.onerror=function(L){if(h)return;console.log(\"warning: browser could not fully decode audio \"+u+\", trying slower base64 approach\");function U(J){for(var te=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",ae=\"=\",fe=\"\",ce=0,me=0,he=0;he<J.length;he++)for(ce=ce<<8|J[he],me+=8;me>=6;){var Be=ce>>me-6&63;me-=6,fe+=te[Be]}return me==2?(fe+=te[(ce&3)<<4],fe+=ae+ae):me==4&&(fe+=te[(ce&15)<<2],fe+=ae),fe}C.src=\"data:audio/x-\"+u.substr(-3)+\";base64,\"+U(n),E(C)},C.src=x,Browser.safeSetTimeout(function(){E(C)},1e4)}else return I()},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 o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.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&&o.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),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 o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}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\");o.parentNode.insertBefore(n,o),n.appendChild(o),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(o,a,n){return Browser.requestFullscreen(o,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,o=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 u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type===\"touchstart\")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type===\"touchend\"||t.type===\"touchmove\"){var E=Browser.touches[u.identifier];E||(E=h),Browser.lastTouches[u.identifier]=E,Browser.touches[u.identifier]=h}return}var I=t.pageX-(a+e.left),v=t.pageY-(n+e.top);I=I*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=I-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=I,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?\"\":\"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 o=Module.canvas;Browser.updateCanvasDimensions(o,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 o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a<Module.forcedAspectRatio?o=Math.round(a*Module.forcedAspectRatio):a=Math.round(o/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/o,screen.height/a);o=Math.round(o*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=o&&(t.width=o),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\"&&(o!=e||a!=r?(t.style.setProperty(\"width\",o+\"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(o){return(typeof FS>\"u\"||!(o instanceof FS.ErrnoError))&&abort(o),-o.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,I,v,x){if(h==1){var C=I&896;(C==128||C==256||C==384)&&(p=\"X const\")}var R;return x?R=E.replace(\"X\",p).replace(\"Y\",v):R=p.replace(\"X\",E).replace(\"Y\",v),R.replace(/([*&]) (?=[*&])/g,\"$1\")}function o(p,h,E,I,v){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(I?\" with flag \"+I:\"\")+\" in \"+v)}function a(p,h,E,I,v,x,C,R){x===void 0&&(x=\"X\"),R===void 0&&(R=1);var L=E(p);if(L)return L;var U=I(p),J=U.placeholderFlag,te=e[J];C&&te&&(x=r(C[2],C[0],x,te[0],\"?\",!0));var ae;J==0&&(ae=\"Unbound\"),J>=10&&(ae=\"Corrupt\"),R>20&&(ae=\"Deeply nested\"),ae&&o(ae,p,x,J,v||\"?\");var fe=U.paramList[0],ce=a(fe,h,E,I,v,x,te,R+1),me,he={flags:te[0],id:p,name:\"\",paramList:[ce]},Be=[],we=\"?\";switch(U.placeholderFlag){case 1:me=ce.spec;break;case 2:if((ce.flags&15360)==1024&&ce.spec.ptrSize==1){he.flags=7168;break}case 3:case 6:case 5:me=ce.spec,ce.flags&15360;break;case 8:we=\"\"+U.paramList[1],he.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Ee=U.paramList[1];g<Ee.length;g++){var Se=Ee[g],le=a(Se,h,E,I,v,x,te,R+1);Be.push(le.name),he.paramList.push(le)}we=Be.join(\", \");break;default:break}if(he.name=r(te[2],te[0],ce.name,ce.flags,we),me){for(var ne=0,ee=Object.keys(me);ne<ee.length;ne++){var Ie=ee[ne];he[Ie]=he[Ie]||me[Ie]}he.flags|=me.flags}return n(h,he)}function n(p,h){var E=h.flags,I=E&896,v=E&15360;return!h.name&&v==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)&&(v=64),v==2048&&(I==512||I==640?v=4096:I&&(v=3072)),p(v,h)}var u=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}(),A={Type:u,getComplexType:a,makeType:n,structureList:e};return t.output=A,t.output||A}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),o={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,o)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),o=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[o]=_nbind.makeJSCaller(r),o}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}o.prototype=e.prototype,t.prototype=new o}function __nbind_register_class(t,e,r,o,a,n,u){var A=_nbind.readAsciiString(u),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:A},I=_nbind.makeType(_nbind.constructType,E);I.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),I.destroy=_nbind.makeMethodCaller(I.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:I.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(I.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),I.upcastList=Array.prototype.slice.call(HEAPU32.subarray(o/4,o/4+a))),Module[I.name]=I.makeBound(p),_nbind.BindClass.list.push(I)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,o,a){return a?o:o.toLowerCase()})}function __nbind_register_function(t,e,r,o,a,n,u,A,p,h){var E=_nbind.getType(t),I=_nbind.readPolicyList(e),v=_nbind.readTypeIdList(r,o),x;if(u==5)x=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(v.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(v.slice(1))}];else{var C=_nbind.readAsciiString(A),R=(E.name&&E.name+\".\")+C;(u==3||u==4)&&(C=_removeAccessorPrefix(C)),x=[{boundID:t,direct:n,name:C,ptr:a,title:R,typeList:v}]}for(var L=0,U=x;L<U.length;L++){var J=U[L];J.signatureType=u,J.policyTbl=I,J.num=p,J.flags=h,E.addMethod(J)}}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 o={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,o)}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(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===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(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,I){var v=___syscall146.buffers[E];assert(v),I===0||I===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(I)});for(var u=0;u<a;u++){for(var A=HEAP32[o+u*8>>2],p=HEAP32[o+(u*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[A+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 o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){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],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_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 o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,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\"},o=t.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+o];if(!a)throw new Error(\"dynCall_\"+o+\" not found for \"+e+\"(\"+t.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){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,o)):(r.arity=o,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 o=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 o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.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,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_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,o){return function(a){return pushCString(a,o)}},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(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},e.prototype.makeWireWrite=function(r,o){return o&&o.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(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=u,I=A,v=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,v=HEAPU32[x/4],I=HEAPU32[x/4+1]}var C={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:I};v&&(R.__nbindShared=v,_nbind.mark(h));for(var L=0,U=Object.keys(R);L<U.length;L++){var J=U[L];C.value=R[J],Object.defineProperty(h,J,C)}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 o=t.call(this,r)||this;return o.wireRead=function(a){return _nbind.popValue(a,o.ptrType)},o.wireWrite=function(a){return pushPointer(a,o.ptrType,!0)},o.pendingSuperCount=0,o.ready=!1,o.methodTbl={},r.paramList?(o.classType=r.paramList[0].classType,o.proto=o.classType.proto):o.classType=o,o}return e.prototype.makeBound=function(r){var o=_nbind.makeBound(r,this);return this.proto=o,this.ptrType.proto=o,o},e.prototype.addMethod=function(r){var o=this.methodTbl[r.name]||[];o.push(r),this.methodTbl[r.name]=o},e.prototype.registerMethods=function(r,o){for(var a,n=0,u=Object.keys(r.methodTbl);n<u.length;n++)for(var A=u[n],p=r.methodTbl[A],h=0,E=p;h<E.length;h++){var I=E[h],v=void 0,x=void 0;if(v=this.proto.prototype,!(o&&I.signatureType!=1))switch(I.signatureType){case 1:v=this.proto;case 5:x=_nbind.makeCaller(I),_nbind.addMethod(v,I.name,x,I.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,I);break;case 3:Object.defineProperty(v,I.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,I),set:a});break;case 2:x=_nbind.makeMethodCaller(r.ptrType,I),_nbind.addMethod(v,I.name,x,I.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,o,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,u,A=0,p=r.superIdList||[];A<p.length;A++){var h=p[A],E=_nbind.getType(h);n++<o||o<0?u=-1:u=0,this.registerSuperMethods(E,u,a)}this.registerMethods(r,o<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 o=function(){this.constructor=r};o.prototype=this.superList[0].proto.prototype,r.prototype=new o}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,o){if(r==this)return o;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],o));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 o=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)o=_nbind.callUpcast(a.upcastList[0],o),a=a.superList[0];else if(o=a.upcastStep(n,o),!o)throw new Error(\"Type mismatch\");return o}_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 o=t.call(this,r)||this;o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=(o.flags&896)==256&&r.flags&2,u=a?pushPointer:pushMutablePointer,A=n?_nbind.popValue:popPointer;return o.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?u(E,o):0}:function(E){return u(E,o)}},o.wireRead=function(p){return A(p,o)},o.wireWrite=function(p){return u(p,o)},o}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],o=HEAPU32[t/4+1];return o?new e.proto(_nbind.ptrMarker,e.flags,o,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 o=t.call(this,r)||this;o.readResources=[_nbind.resources.pool],o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return o.wireRead=function(u){return popShared(u,o)},o.wireWrite=function(u){return n(u,o)},o}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(o){return typeof o!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(o).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 o=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*o);HEAPU32[a/4]=r;var n=e.memberType.heap,u=(a+4)/o,A=e.memberType.wireWrite,p=0;if(A)for(;p<r;)n[u++]=A(t[p++]);else for(;p<r;)n[u++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],o=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,u=0;if(n)for(;u<r;)o[u++]=n(a[t++]);else for(;u<r;)o[u++]=a[t++];return o}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return popArray(a,o)},o.wireWrite=function(a){return pushArray(a,o)},o.readResources=[_nbind.resources.pool],o.writeResources=[_nbind.resources.pool],o.memberType=r.paramList[0],r.paramList[1]&&(o.size=r.paramList[1]),o}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),o=_nbind.Pool.lalloc(4+r+1);return HEAPU32[o/4]=r,Module.stringToUTF8Array(t,HEAPU8,o+4,r+1),o}_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,o){return function(a){return pushString(a,o)}},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,o){return r||o.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,o){return r||!!o.needsWireRead(e)},!1)}function makeWireRead(t,e,r,o){var a=t.length;return r.makeWireRead?r.makeWireRead(o,t,a):r.wireRead?(t[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+o+\"))\"):o}function makeWireWrite(t,e,r,o){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(o,e,t,n):a=r.wireWrite,a?typeof a==\"string\"?a:(t[n]=a,\"(convertParamList[\"+n+\"](\"+o+\"))\"):o}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\"),o=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),u=o.needsWireWrite(null);if(!u&&!n)switch(e){case 0:return function(A,p){return _nbind.externalList[p].data()};case 1:return function(A,p,h){return _nbind.externalList[p].data(h)};case 2:return function(A,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(A,p,h,E,I){return _nbind.externalList[p].data(h,E,I)};default:break}return buildJSCallerFunction(o,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,o=e.typeList.slice(0);o.splice(1,0,\"uint32_t\",e.boundID);var a=_nbind.getTypes(o,e.title),n=a[0],u=a.slice(3),A=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(u,e.policyTbl),h=e.ptr,E=e.num,I=_nbind.getDynCall(a,e.title),v=~e.flags&1;function x(){throw new Error(\"Calling a non-const method on a const object\")}if(!A&&!p)switch(r){case 0:return function(){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t))};case 1:return function(C){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C)};case 2:return function(C,R){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C,R)};case 3:return function(C,R,L){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C,R,L)};default:break}return buildCallerFunction(I,t,h,E,e.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,u,v,x)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),o=r[0],a=r.slice(1),n=o.needsWireRead(t.policyTbl),u=anyNeedsWireWrite(a,t.policyTbl),A=t.direct,p=t.ptr;if(t.direct&&!n&&!u){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(A)};case 1:return function(x){return h(A,x)};case 2:return function(x,C){return h(A,x,C)};case 3:return function(x,C,R){return h(A,x,C,R)};default:break}p=0}var E;if(p){var I=t.typeList.slice(0);I.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(I,t.title),E=\"ptr,num\"}else p=A,E=\"ptr\";var v=_nbind.getDynCall(r,t.title);return buildCallerFunction(v,null,p,t.num,t.policyTbl,u,E,o,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function o(){return r[arguments.length].apply(this,arguments)}return o.addMethod=function(a,n){r[n]=a},o.addMethod(t,e),o}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var o=this;this.makeOpen=function(){return Object.keys(o.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(o.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,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];this.openTbl[a]=!0}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];delete this.openTbl[a]}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,o=0,a=t;o<a.length;o++)for(var n=a[o],u=0,A=n.readResources||[];u<A.length;u++){var p=A[u];r.add(p)}for(var h=0,E=e;h<E.length;h++)for(var n=E[h],I=0,v=n.writeResources||[];I<v.length;I++){var p=v[I];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,o){var a=t.call(this,r)||this;return a.ptr=o,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,o=r.byteLength||r.length;if(!o&&o!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(o),u=a/4;return HEAPU32[u++]=o,HEAPU32[u++]=n,HEAPU32[u++]=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,o){return function(a){return pushBuffer(a,o)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var o=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(o instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(o instanceof a){var u=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).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,o){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,o)},Module.requestFullscreen=function t(e,r,o){Browser.requestFullscreen(e,r,o)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,o){Browser.setCanvasSize(e,r,o)},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,o,a){return Browser.createContext(e,r,o,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,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}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(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;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,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}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(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;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,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}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,o){try{Module.dynCall_viid(t,e,r,o)}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(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,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 o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),I=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,x=e.ABORT|0,C=e.STACKTOP|0,R=e.STACK_MAX|0,L=e.cttz_i8|0,U=e.___dso_handle|0,J=0,te=0,ae=0,fe=0,ce=t.NaN,me=t.Infinity,he=0,Be=0,we=0,g=0,Ee=0,Se=0,le=t.Math.floor,ne=t.Math.abs,ee=t.Math.sqrt,Ie=t.Math.pow,Fe=t.Math.cos,At=t.Math.sin,H=t.Math.tan,at=t.Math.acos,Re=t.Math.asin,ke=t.Math.atan,xe=t.Math.atan2,He=t.Math.exp,Te=t.Math.log,Je=t.Math.ceil,qe=t.Math.imul,b=t.Math.min,w=t.Math.max,P=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,Z=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,Pe=e.invoke_viiiii,Ne=e.invoke_vif,ot=e.invoke_vid,dt=e.invoke_fiff,jt=e.invoke_vi,$t=e.invoke_vii,bt=e.invoke_ii,an=e.invoke_viddi,Qr=e.invoke_vidd,mr=e.invoke_iiii,br=e.invoke_diii,Wr=e.invoke_di,Kn=e.invoke_iid,Ns=e.invoke_iii,Ti=e.invoke_viiddi,ps=e.invoke_viiiiii,io=e.invoke_dii,Pi=e.invoke_i,Ls=e.invoke_iiiiii,so=e.invoke_viiid,cc=e.invoke_viififi,cu=e.invoke_viii,lp=e.invoke_v,cp=e.invoke_viid,Os=e.invoke_idd,Dn=e.invoke_viiii,oo=e._emscripten_asm_const_iiiii,Ms=e._emscripten_asm_const_iiidddddd,ml=e._emscripten_asm_const_iiiid,yl=e.__nbind_reference_external,ao=e._emscripten_asm_const_iiiiiiii,Vn=e._removeAccessorPrefix,On=e._typeModule,Ni=e.__nbind_register_pool,Mn=e.__decorate,_i=e._llvm_stackrestore,tr=e.___cxa_atexit,Oe=e.__extends,ii=e.__nbind_get_value_object,Ma=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,hr=e._emscripten_set_main_loop_timing,uc=e.__nbind_register_primitive,uu=e.__nbind_register_type,Ac=e._emscripten_memcpy_big,El=e.__nbind_register_function,DA=e.___setErrNo,Au=e.__nbind_register_class,Ce=e.__nbind_finish,Rt=e._abort,fc=e._nbind_value,Hi=e._llvm_stacksave,fu=e.___syscall54,Yt=e._defineHidden,Cl=e._emscripten_set_main_loop,SA=e._emscripten_get_now,up=e.__nbind_register_callback_signature,pc=e._emscripten_asm_const_iiiiii,PA=e.__nbind_free_external,Qn=e._emscripten_asm_const_iiii,hi=e._emscripten_asm_const_iiididi,hc=e.___syscall6,bA=e._atexit,sa=e.___syscall140,Li=e.___syscall146,_o=y(0);let Ze=y(0);function lo(s){s=s|0;var l=0;return l=C,C=C+s|0,C=C+15&-16,l|0}function gc(){return C|0}function pu(s){s=s|0,C=s}function qi(s,l){s=s|0,l=l|0,C=s,R=l}function hu(s,l){s=s|0,l=l|0,J||(J=s,te=l)}function xA(s){s=s|0,Se=s}function Ua(){return Se|0}function dc(){var s=0,l=0;Dr(8104,8,400)|0,Dr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,tr(17,8104,U|0)|0}function hs(s){s=s|0,pt(s+948|0)}function _t(s){return s=y(s),((Du(s)|0)&2147483647)>>>0>2139095040|0}function Fn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function Ci(s){s=s|0;var l=0;return l=pD(1e3)|0,oa(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Dr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function oa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Eg(s,5,3197,f)),C=d}function co(){return Ci(956)|0}function Us(s){s=s|0;var l=0;return l=Kt(1e3)|0,aa(l,s),oa(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function aa(s,l){s=s|0,l=l|0;var c=0;Dr(s|0,l|0,948)|0,Rm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function la(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Ho(c+948|0,s)|0,n[l>>2]=0),c=wi(s)|0,c|0){l=0;do n[(gs(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),ds(c),hD(s),n[2276]=(n[2276]|0)+-1}function Ho(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0;f=n[s>>2]|0,k=s+4|0,c=n[k>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(Mw(d|0,f|0,s|0)|0,c=n[k>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[k>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function wi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function gs(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function ds(s){s=s|0;var l=0,c=0,f=0,d=0;f=C,C=C+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,Ip(l,d,d,s+8|0),Bg(s,l),_A(l)),C=f}function ms(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;M=wi(s)|0;do if(M|0){if((n[(gs(s,0)|0)+944>>2]|0)==(s|0)){if(!(Ho(s+948|0,l)|0))break;Dr(l+400|0,8504,540)|0,n[l+944>>2]=0,Le(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,k=s+948|0,Q=(B|0)==0,c=0,m=0;do f=n[(n[k>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?Le(s):(d=Us(f)|0,n[(n[k>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,Q||TR[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(M|0));if(c>>>0<M>>>0){Q=s+948|0,k=s+952|0,B=c,c=n[k>>2]|0;do m=(n[Q>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(Mw(m|0,f|0,d|0)|0,c=n[k>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[k>>2]=c),B=B+1|0;while((B|0)!=(M|0))}}while(0)}function _s(s){s=s|0;var l=0,c=0,f=0,d=0;Un(s,(wi(s)|0)==0,2491),Un(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),ds(l),l=s+976|0,c=n[l>>2]|0,Dr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Un(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Ao(s,5,3197,f)),C=d}function Sn(){return n[2276]|0}function ys(){var s=0;return s=pD(20)|0,We((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function We(s,l){s=s|0,l=l|0;var c=0,f=0;f=C,C=C+16|0,c=f,s||(n[c>>2]=l,Ao(0,5,3197,c)),C=f}function tt(s){s=s|0,hD(s),n[2277]=(n[2277]|0)+-1}function It(s,l){s=s|0,l=l|0;var c=0;l?(Un(s,(wi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function nr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Un(s,(n[l+944>>2]|0)==0,2709),Un(s,(n[s+964>>2]|0)==0,2763),$(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],ye(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,Le(s),C=f}function $(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;if(c=wi(s)|0,c|0&&(n[(gs(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=Us(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=s,m||TR[f&15](B,k,s,l),l=l+1|0;while((l|0)!=(c|0))}}function ye(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0;et=C,C=C+64|0,j=et+52|0,k=et+48|0,se=et+28|0,Ge=et+24|0,Me=et+20|0,Qe=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}HA(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=N(s)|0,d>>>0<f>>>0&&zr(s),O=n[s>>2]|0,M=(n[B>>2]|0)-O|0,m=M>>1,Ip(Qe,M>>2>>>0<d>>>1>>>0?m>>>0<f>>>0?f:m:d,l-O>>2,s+8|0),O=Qe+8|0,f=n[O>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,Q=f;do if((f|0)==(M|0)){if(M=Qe+4|0,f=n[M>>2]|0,Xe=n[Qe>>2]|0,d=Xe,f>>>0<=Xe>>>0){f=B-d>>1,f=(f|0)==0?1:f,Ip(se,f,f>>>2,n[Qe+16>>2]|0),n[Ge>>2]=n[M>>2],n[Me>>2]=n[O>>2],n[k>>2]=n[Ge>>2],n[j>>2]=n[Me>>2],Dw(se,k,j),f=n[Qe>>2]|0,n[Qe>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Xe=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Xe,f=se+8|0,Xe=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Xe,f=se+12|0,Xe=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Xe,_A(se),f=n[O>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,k=f+(B<<2)|0,d=Q-m|0,m=d>>2,m&&(Mw(k|0,f|0,d|0)|0,f=n[M>>2]|0),Xe=k+(m<<2)|0,n[O>>2]=Xe,n[M>>2]=f+(B<<2),f=Xe}while(0);n[f>>2]=n[c>>2],n[O>>2]=(n[O>>2]|0)+4,l=vg(s,Qe,l)|0,_A(Qe)}while(0);return C=et,l|0}function Le(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(ce),s=n[s+944>>2]|0}while((s|0)!=0)}function pt(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ht(s){return s=s|0,n[s+944>>2]|0}function Tt(s){s=s|0,Un(s,(n[s+964>>2]|0)!=0,2832),Le(s)}function er(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function $r(s,l){s=s|0,l=l|0,QUe(s,l,400)|0&&(Dr(s|0,l|0,400)|0,Le(s))}function ji(s){s=s|0;var l=Ze;return l=y(h[s+44>>2]),s=_t(l)|0,y(s?y(0):l)}function es(s){s=s|0;var l=Ze;return l=y(h[s+48>>2]),_t(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function bi(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function qo(s){return s=s|0,n[s+980>>2]|0}function kA(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function QA(s){return s=s|0,n[s+4>>2]|0}function Ap(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function ig(s){return s=s|0,n[s+8>>2]|0}function gu(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function sg(s){return s=s|0,n[s+12>>2]|0}function du(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function uo(s){return s=s|0,n[s+16>>2]|0}function FA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function mc(s){return s=s|0,n[s+20>>2]|0}function ca(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function og(s){return s=s|0,n[s+24>>2]|0}function yc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function Pm(s){return s=s|0,n[s+28>>2]|0}function ag(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function $n(s){return s=s|0,n[s+32>>2]|0}function fp(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function lg(s){return s=s|0,n[s+36>>2]|0}function RA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Hs(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function mu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Ha(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Gi(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function ua(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function yu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Es(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Ec(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Cc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function G(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function wl(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(ce),n[c>>2]=3,Le(s))}function xi(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function wc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function ct(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Eu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function cg(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function yw(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function TA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function pp(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(ce),n[l>>2]=3,Le(s))}function Br(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cs(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function ug(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function Ag(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(ce),n[l>>2]=3,Le(s))}function fg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function hp(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ic(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ct(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function bm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function pg(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function hg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function xm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function gg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function wu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ew(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function km(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Aa(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Bc(s){return s=s|0,y(h[s+396>>2])}function Il(s){return s=s|0,y(h[s+400>>2])}function Iu(s){return s=s|0,y(h[s+404>>2])}function dg(s){return s=s|0,y(h[s+408>>2])}function NA(s){return s=s|0,y(h[s+412>>2])}function gp(s){return s=s|0,y(h[s+416>>2])}function qa(s){return s=s|0,y(h[s+420>>2])}function mg(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function dp(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function jo(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function ws(s,l){s=s|0,l=l|0;var c=0,f=Ze;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))<y(999999974e-13)):s=1:s=0,s|0}function Ii(s,l){s=y(s),l=y(l);var c=0;return _t(s)|0?c=_t(l)|0:c=y(ne(y(s-l)))<y(999999974e-13),c|0}function Qm(s,l){s=s|0,l=l|0,Fm(s,l)}function Fm(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c+4|0,n[f>>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,Ma(f|0,s|0,l|0,0),Ao(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),e3e(f),C=c}function Go(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=Ze;s=y(s*l),d=y(bR(s,y(1)));do if(Ii(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ii(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ii(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function LA(s,l,c,f,d,m,B,k,Q,M,O,j,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,k=y(k),Q=y(Q),M=y(M),O=y(O),j=y(j),se=se|0;var Ge=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze;return Q<y(0)|M<y(0)?se=0:((se|0)!=0&&(Me=y(h[se+4>>2]),Me!=y(0))?(et=y(Go(l,Me,0,0)),Xe=y(Go(f,Me,0,0)),Qe=y(Go(m,Me,0,0)),Me=y(Go(k,Me,0,0))):(Qe=m,et=l,Me=k,Xe=f),(d|0)==(s|0)?Ge=Ii(Qe,et)|0:Ge=0,(B|0)==(c|0)?se=Ii(Me,Xe)|0:se=0,!Ge&&(lt=y(l-O),!(mp(s,lt,Q)|0))&&!(yp(s,lt,d,Q)|0)?Ge=yg(s,lt,d,m,Q)|0:Ge=1,!se&&(Ue=y(f-j),!(mp(c,Ue,M)|0))&&!(yp(c,Ue,B,M)|0)?se=yg(c,Ue,B,k,M)|0:se=1,se=Ge&se),se|0}function mp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ii(l,c)|0:s=0,s|0}function yp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ii(l,f)|0:s=0,s|0}function yg(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ii(l,d)|0:s=0,s|0}function fa(s,l,c,f,d,m,B,k,Q,M,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0,O=O|0;var j=0,se=0,Ge=0,Me=0,Qe=Ze,et=Ze,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=Ze,go=Ze,mo=Ze,yo=0,ya=0;ir=C,C=C+160|0,Xt=ir+152|0,or=ir+120|0,Mr=ir+104|0,Ue=ir+72|0,Me=ir+56|0,Lt=ir+8|0,lt=ir,je=(n[2279]|0)+1|0,n[2279]=je,Sr=s+984|0,(o[Sr>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[s+516>>2]|0)==(f|0)?Nr=0:Xe=4,(Xe|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Nr=1);e:do if(n[s+964>>2]|0)if(Qe=y(ln(s,2,B)),et=y(ln(s,0,B)),j=s+916|0,mo=y(h[j>>2]),go=y(h[s+920>>2]),xn=y(h[s+932>>2]),LA(d,l,m,c,n[s+924>>2]|0,mo,n[s+928>>2]|0,go,xn,y(h[s+936>>2]),Qe,et,O)|0)Xe=22;else if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,xn=y(h[j>>2]),go=y(h[s+524+(se*24|0)+4>>2]),mo=y(h[s+524+(se*24|0)+16>>2]),LA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,xn,n[s+524+(se*24|0)+12>>2]|0,go,mo,y(h[s+524+(se*24|0)+20>>2]),Qe,et,O)|0){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}else{if(Q){if(j=s+916|0,!(Ii(y(h[j>>2]),l)|0)){Xe=21;break}if(!(Ii(y(h[s+920>>2]),c)|0)){Xe=21;break}if((n[s+924>>2]|0)!=(d|0)){Xe=21;break}j=(n[s+928>>2]|0)==(m|0)?j:0,Xe=22;break}if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,Ii(y(h[j>>2]),l)|0&&Ii(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}}while(0);do if((Xe|0)==21)o[11697]|0?(j=0,Xe=28):(j=0,Xe=31);else if((Xe|0)==22){if(se=(o[11697]|0)!=0,!((j|0)!=0&(Nr^1)))if(se){Xe=28;break}else{Xe=31;break}Me=j+16|0,n[s+908>>2]=n[Me>>2],Ge=j+20|0,n[s+912>>2]=n[Ge>>2],(o[11698]|0)==0|se^1||(n[lt>>2]=OA(je)|0,n[lt+4>>2]=je,Ao(s,4,2972,lt),se=n[s+972>>2]|0,se|0&&tf[se&127](s),d=ja(d,Q)|0,m=ja(m,Q)|0,ya=+y(h[Me>>2]),yo=+y(h[Ge>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+c,E[Lt+24>>3]=ya,E[Lt+32>>3]=yo,n[Lt+40>>2]=M,Ao(s,4,2989,Lt))}while(0);return(Xe|0)==28&&(se=OA(je)|0,n[Me>>2]=se,n[Me+4>>2]=je,n[Me+8>>2]=Nr?3047:11699,Ao(s,4,3038,Me),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Lt=ja(d,Q)|0,Xe=ja(m,Q)|0,n[Ue>>2]=Lt,n[Ue+4>>2]=Xe,E[Ue+8>>3]=+l,E[Ue+16>>3]=+c,n[Ue+24>>2]=M,Ao(s,4,3049,Ue),Xe=31),(Xe|0)==31&&(si(s,l,c,f,d,m,B,k,Q,O),o[11697]|0&&(se=n[2279]|0,Lt=OA(se)|0,n[Mr>>2]=Lt,n[Mr+4>>2]=se,n[Mr+8>>2]=Nr?3047:11699,Ao(s,4,3083,Mr),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Lt=ja(d,Q)|0,Mr=ja(m,Q)|0,yo=+y(h[s+908>>2]),ya=+y(h[s+912>>2]),n[or>>2]=Lt,n[or+4>>2]=Mr,E[or+8>>3]=yo,E[or+16>>3]=ya,n[or+24>>2]=M,Ao(s,4,3092,or)),n[s+516>>2]=f,j||(se=s+520|0,j=n[se>>2]|0,(j|0)==16&&(o[11697]|0&&Ao(s,4,3124,Xt),n[se>>2]=0,j=0),Q?j=s+916|0:(n[se>>2]=j+1,j=s+524+(j*24|0)|0),h[j>>2]=l,h[j+4>>2]=c,n[j+8>>2]=d,n[j+12>>2]=m,n[j+16>>2]=n[s+908>>2],n[j+20>>2]=n[s+912>>2],j=0)),Q&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Sr>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],C=ir,Nr|(j|0)==0|0}function ln(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(K(s,l,c)),y(f+y(re(s,l,c)))}function Ao(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=C,C=C+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,Cg(f,s,l,c,d),C=m}function OA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function ja(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,C=d,s|0}function si(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0;var O=0,j=0,se=0,Ge=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze,je=Ze,Lt=0,Mr=0,or=0,Xt=Ze,Sr=Ze,Nr=0,ir=Ze,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Np=0,Lp=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=Ze,_p=Ze,Tu=Ze,Nu=Ze,kc=Ze,js=0,za=0,Wo=0,kl=0,nf=0,sf=Ze,Lu=Ze,of=Ze,af=Ze,Gs=Ze,vs=Ze,Ql=0,Rn=Ze,lf=Ze,Eo=Ze,Qc=Ze,Co=Ze,Fc=Ze,cf=0,uf=0,Rc=Ze,Ys=Ze,Fl=0,Af=0,ff=0,pf=0,xr=Ze,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0,Jt=Ze,hf=0,li=0;Rl=C,C=C+16|0,js=Rl+12|0,za=Rl+8|0,Wo=Rl+4|0,kl=Rl,Un(s,(d|0)==0|(_t(l)|0)^1,3326),Un(s,(m|0)==0|(_t(c)|0)^1,3406),Ds=mt(s,f)|0,n[s+496>>2]=Ds,Rr=fr(2,Ds)|0,ur=fr(0,Ds)|0,h[s+440>>2]=y(K(s,Rr,B)),h[s+444>>2]=y(re(s,Rr,B)),h[s+428>>2]=y(K(s,ur,B)),h[s+436>>2]=y(re(s,ur,B)),h[s+464>>2]=y(Cr(s,Rr)),h[s+468>>2]=y(yn(s,Rr)),h[s+452>>2]=y(Cr(s,ur)),h[s+460>>2]=y(yn(s,ur)),h[s+488>>2]=y(oi(s,Rr,B)),h[s+492>>2]=y(Oi(s,Rr,B)),h[s+476>>2]=y(oi(s,ur,B)),h[s+484>>2]=y(Oi(s,ur,B));do if(n[s+964>>2]|0)Ig(s,l,c,d,m,B,k);else{if(wo=s+948|0,Ws=(n[s+952>>2]|0)-(n[wo>>2]|0)>>2,!Ws){Gv(s,l,c,d,m,B,k);break}if(!Q&&Yv(s,l,c,d,m,B,k)|0)break;$(s),xl=s+508|0,o[xl>>0]=0,Rr=fr(n[s+4>>2]|0,Ds)|0,ur=ww(Rr,Ds)|0,Jn=pe(Rr)|0,Mp=n[s+8>>2]|0,Af=s+28|0,xc=(n[Af>>2]|0)!=0,Co=Jn?B:k,Rc=Jn?k:B,Up=y(Cp(s,Rr,B)),_p=y(Iw(s,Rr,B)),Me=y(Cp(s,ur,B)),Fc=y(En(s,Rr,B)),Ys=y(En(s,ur,B)),or=Jn?d:m,Fl=Jn?m:d,xr=Jn?Fc:Ys,lt=Jn?Ys:Fc,Qc=y(ln(s,2,B)),Xe=y(ln(s,0,B)),Qe=y(y(Gr(s+364|0,B))-xr),et=y(y(Gr(s+380|0,B))-xr),Ue=y(y(Gr(s+372|0,k))-lt),je=y(y(Gr(s+388|0,k))-lt),Tu=Jn?Qe:Ue,Nu=Jn?et:je,Qc=y(l-Qc),l=y(Qc-xr),_t(l)|0?xr=l:xr=y(_n(y(Tg(l,et)),Qe)),lf=y(c-Xe),l=y(lf-lt),_t(l)|0?Eo=l:Eo=y(_n(y(Tg(l,je)),Ue)),Qe=Jn?xr:Eo,Rn=Jn?Eo:xr;e:do if((or|0)==1)for(f=0,j=0;;){if(O=gs(s,j)|0,!f)y(rs(O))>y(0)&&y(qs(O))>y(0)?f=O:f=0;else if(Tm(O)|0){Ge=0;break e}if(j=j+1|0,j>>>0>=Ws>>>0){Ge=f;break}}else Ge=0;while(0);Lt=Ge+500|0,Mr=Ge+504|0,f=0,O=0,l=y(0),se=0;do{if(j=n[(n[wo>>2]|0)+(se<<2)>>2]|0,(n[j+36>>2]|0)==1)Bu(j),o[j+985>>0]=1,o[j+984>>0]=0;else{Bl(j),Q&&Ep(j,mt(j,Ds)|0,Qe,Rn,xr);do if((n[j+24>>2]|0)!=1)if((j|0)==(Ge|0)){n[Lt>>2]=n[2278],h[Mr>>2]=y(0);break}else{Nm(s,j,xr,d,Eo,xr,Eo,m,Ds,M);break}else O|0&&(n[O+960>>2]=j),n[j+960>>2]=0,O=j,f=(f|0)==0?j:f;while(0);vs=y(h[j+504>>2]),l=y(l+y(vs+y(ln(j,Rr,xr))))}se=se+1|0}while((se|0)!=(Ws|0));for(mo=l>Qe,Ql=xc&((or|0)==2&mo)?1:or,xn=(Fl|0)==1,ya=xn&(Q^1),Fp=(Ql|0)==1,Rp=(Ql|0)==2,bl=976+(Rr<<2)|0,Tp=(Fl|2|0)==2,Op=xn&(xc^1),Fu=1040+(ur<<2)|0,Ru=1040+(Rr<<2)|0,Np=976+(ur<<2)|0,Lp=(Fl|0)!=1,mo=xc&((or|0)!=0&mo),go=s+976|0,xn=xn^1,l=Qe,Nr=0,yo=0,vs=y(0),kc=y(0);;){e:do if(Nr>>>0<Ws>>>0)for(Mr=n[wo>>2]|0,se=0,je=y(0),Ue=y(0),et=y(0),Qe=y(0),j=0,O=0,Ge=Nr;;){if(Lt=n[Mr+(Ge<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=yo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(ln(Lt,Rr,xr)),Xr=n[bl>>2]|0,c=y(Gr(Lt+380+(Xr<<3)|0,Co)),lt=y(h[Lt+504>>2]),c=y(Tg(c,lt)),c=y(_n(y(Gr(Lt+364+(Xr<<3)|0,Co)),c)),xc&(se|0)!=0&y(Xe+y(Ue+c))>l){m=se,Xe=je,or=Ge;break e}Xe=y(Xe+c),c=y(Ue+Xe),Xe=y(je+Xe),Tm(Lt)|0&&(et=y(et+y(rs(Lt))),Qe=y(Qe-y(lt*y(qs(Lt))))),O|0&&(n[O+960>>2]=Lt),n[Lt+960>>2]=0,se=se+1|0,O=Lt,j=(j|0)==0?Lt:j}else Xe=je,c=Ue;if(Ge=Ge+1|0,Ge>>>0<Ws>>>0)je=Xe,Ue=c;else{m=se,or=Ge;break}}else m=0,Xe=y(0),et=y(0),Qe=y(0),j=0,or=Nr;while(0);Xr=et>y(0)&et<y(1),Xt=Xr?y(1):et,Xr=Qe>y(0)&Qe<y(1),je=Xr?y(1):Qe;do if(Fp)Xr=51;else if(Xe<Tu&((_t(Tu)|0)^1))l=Tu,Xr=51;else if(Xe>Nu&((_t(Nu)|0)^1))l=Nu,Xr=51;else if(o[(n[go>>2]|0)+3>>0]|0)Xr=51;else{if(Xt!=y(0)&&y(rs(s))!=y(0)){Xr=53;break}l=Xe,Xr=53}while(0);if((Xr|0)==51&&(Xr=0,_t(l)|0?Xr=53:(Sr=y(l-Xe),ir=l)),(Xr|0)==53&&(Xr=0,Xe<y(0)?(Sr=y(-Xe),ir=l):(Sr=y(0),ir=l)),!ya&&(nf=(j|0)==0,!nf)){se=n[bl>>2]|0,Ge=Sr<y(0),lt=y(Sr/je),Lt=Sr>y(0),Ue=y(Sr/Xt),et=y(0),Xe=y(0),l=y(0),O=j;do c=y(Gr(O+380+(se<<3)|0,Co)),Qe=y(Gr(O+364+(se<<3)|0,Co)),Qe=y(Tg(c,y(_n(Qe,y(h[O+504>>2]))))),Ge?(c=y(Qe*y(qs(O))),c!=y(-0)&&(Jt=y(Qe-y(lt*c)),sf=y(Bi(O,Rr,Jt,ir,xr)),Jt!=sf)&&(et=y(et-y(sf-Qe)),l=y(l+c))):Lt&&(Lu=y(rs(O)),Lu!=y(0))&&(Jt=y(Qe+y(Ue*Lu)),of=y(Bi(O,Rr,Jt,ir,xr)),Jt!=of)&&(et=y(et-y(of-Qe)),Xe=y(Xe-Lu)),O=n[O+960>>2]|0;while((O|0)!=0);if(l=y(je+l),Qe=y(Sr+et),nf)l=y(0);else{lt=y(Xt+Xe),Ge=n[bl>>2]|0,Lt=Qe<y(0),Mr=l==y(0),Ue=y(Qe/l),se=Qe>y(0),lt=y(Qe/lt),l=y(0);do{Jt=y(Gr(j+380+(Ge<<3)|0,Co)),et=y(Gr(j+364+(Ge<<3)|0,Co)),et=y(Tg(Jt,y(_n(et,y(h[j+504>>2]))))),Lt?(Jt=y(et*y(qs(j))),Qe=y(-Jt),Jt!=y(-0)?(Jt=y(Ue*Qe),Qe=y(Bi(j,Rr,y(et+(Mr?Qe:Jt)),ir,xr))):Qe=et):se&&(af=y(rs(j)),af!=y(0))?Qe=y(Bi(j,Rr,y(et+y(lt*af)),ir,xr)):Qe=et,l=y(l-y(Qe-et)),Xe=y(ln(j,Rr,xr)),c=y(ln(j,ur,xr)),Qe=y(Qe+Xe),h[za>>2]=Qe,n[kl>>2]=1,et=y(h[j+396>>2]);e:do if(_t(et)|0){O=_t(Rn)|0;do if(!O){if(mo|(ts(j,ur,Rn)|0|xn)||(ha(s,j)|0)!=4||(n[(vl(j,ur)|0)+4>>2]|0)==3||(n[(Sc(j,ur)|0)+4>>2]|0)==3)break;h[js>>2]=Rn,n[Wo>>2]=1;break e}while(0);if(ts(j,ur,Rn)|0){O=n[j+992+(n[Np>>2]<<2)>>2]|0,Jt=y(c+y(Gr(O,Rn))),h[js>>2]=Jt,O=Lp&(n[O+4>>2]|0)==2,n[Wo>>2]=((_t(Jt)|0|O)^1)&1;break}else{h[js>>2]=Rn,n[Wo>>2]=O?0:2;break}}else Jt=y(Qe-Xe),Xt=y(Jt/et),Jt=y(et*Jt),n[Wo>>2]=1,h[js>>2]=y(c+(Jn?Xt:Jt));while(0);yr(j,Rr,ir,xr,kl,za),yr(j,ur,Rn,xr,Wo,js);do if(!(ts(j,ur,Rn)|0)&&(ha(s,j)|0)==4){if((n[(vl(j,ur)|0)+4>>2]|0)==3){O=0;break}O=(n[(Sc(j,ur)|0)+4>>2]|0)!=3}else O=0;while(0);Jt=y(h[za>>2]),Xt=y(h[js>>2]),hf=n[kl>>2]|0,li=n[Wo>>2]|0,fa(j,Jn?Jt:Xt,Jn?Xt:Jt,Ds,Jn?hf:li,Jn?li:hf,xr,Eo,Q&(O^1),3488,M)|0,o[xl>>0]=o[xl>>0]|o[j+508>>0],j=n[j+960>>2]|0}while((j|0)!=0)}}else l=y(0);if(l=y(Sr+l),li=l<y(0)&1,o[xl>>0]=li|u[xl>>0],Rp&l>y(0)?(O=n[bl>>2]|0,(n[s+364+(O<<3)+4>>2]|0)!=0&&(Gs=y(Gr(s+364+(O<<3)|0,Co)),Gs>=y(0))?Qe=y(_n(y(0),y(Gs-y(ir-l)))):Qe=y(0)):Qe=l,Lt=Nr>>>0<or>>>0,Lt){Ge=n[wo>>2]|0,se=Nr,O=0;do j=n[Ge+(se<<2)>>2]|0,n[j+24>>2]|0||(O=((n[(vl(j,Rr)|0)+4>>2]|0)==3&1)+O|0,O=O+((n[(Sc(j,Rr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(or|0));O?(Xe=y(0),c=y(0)):Xr=101}else Xr=101;e:do if((Xr|0)==101)switch(Xr=0,Mp|0){case 1:{O=0,Xe=y(Qe*y(.5)),c=y(0);break e}case 2:{O=0,Xe=Qe,c=y(0);break e}case 3:{if(m>>>0<=1){O=0,Xe=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),O=0,Xe=y(0),c=y(y(_n(Qe,y(0)))/c);break e}case 5:{c=y(Qe/y((m+1|0)>>>0)),O=0,Xe=c;break e}case 4:{c=y(Qe/y(m>>>0)),O=0,Xe=y(c*y(.5));break e}default:{O=0,Xe=y(0),c=y(0);break e}}while(0);if(l=y(Up+Xe),Lt){et=y(Qe/y(O|0)),se=n[wo>>2]|0,j=Nr,Qe=y(0);do{O=n[se+(j<<2)>>2]|0;e:do if((n[O+36>>2]|0)!=1){switch(n[O+24>>2]|0){case 1:{if(gi(O,Rr)|0){if(!Q)break e;Jt=y(Or(O,Rr,ir)),Jt=y(Jt+y(Cr(s,Rr))),Jt=y(Jt+y(K(O,Rr,xr))),h[O+400+(n[Ru>>2]<<2)>>2]=Jt;break e}break}case 0:if(li=(n[(vl(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,Q&&(li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(l+y(h[li>>2]))),li=(n[(Sc(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,ya){Jt=y(c+y(ln(O,Rr,xr))),Qe=Rn,l=y(l+y(Jt+y(h[O+504>>2])));break e}else{l=y(l+y(c+y(ns(O,Rr,xr)))),Qe=y(_n(Qe,y(ns(O,ur,xr))));break e}default:}Q&&(Jt=y(Xe+y(Cr(s,Rr))),li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2])))}while(0);j=j+1|0}while((j|0)!=(or|0))}else Qe=y(0);if(c=y(_p+l),Tp?Xe=y(y(Bi(s,ur,y(Ys+Qe),Rc,B))-Ys):Xe=Rn,et=y(y(Bi(s,ur,y(Ys+(Op?Rn:Qe)),Rc,B))-Ys),Lt&Q){j=Nr;do{se=n[(n[wo>>2]|0)+(j<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(gi(se,ur)|0){if(Jt=y(Or(se,ur,Rn)),Jt=y(Jt+y(Cr(s,ur))),Jt=y(Jt+y(K(se,ur,xr))),O=n[Fu>>2]|0,h[se+400+(O<<2)>>2]=Jt,!(_t(Jt)|0))break}else O=n[Fu>>2]|0;Jt=y(Cr(s,ur)),h[se+400+(O<<2)>>2]=y(Jt+y(K(se,ur,xr)));break}O=ha(s,se)|0;do if((O|0)==4){if((n[(vl(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if((n[(Sc(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if(ts(se,ur,Rn)|0){l=Me;break}hf=n[se+908+(n[bl>>2]<<2)>>2]|0,n[js>>2]=hf,l=y(h[se+396>>2]),li=_t(l)|0,Qe=(n[v>>2]=hf,y(h[v>>2])),li?l=et:(Sr=y(ln(se,ur,xr)),Jt=y(Qe/l),l=y(l*Qe),l=y(Sr+(Jn?Jt:l))),h[za>>2]=l,h[js>>2]=y(y(ln(se,Rr,xr))+Qe),n[Wo>>2]=1,n[kl>>2]=1,yr(se,Rr,ir,xr,Wo,js),yr(se,ur,Rn,xr,kl,za),l=y(h[js>>2]),Sr=y(h[za>>2]),Jt=Jn?l:Sr,l=Jn?Sr:l,li=((_t(Jt)|0)^1)&1,fa(se,Jt,l,Ds,li,((_t(l)|0)^1)&1,xr,Eo,1,3493,M)|0,l=Me}else Xr=139;while(0);e:do if((Xr|0)==139){Xr=0,l=y(Xe-y(ns(se,ur,xr)));do if((n[(vl(se,ur)|0)+4>>2]|0)==3){if((n[(Sc(se,ur)|0)+4>>2]|0)!=3)break;l=y(Me+y(_n(y(0),y(l*y(.5)))));break e}while(0);if((n[(Sc(se,ur)|0)+4>>2]|0)==3){l=Me;break}if((n[(vl(se,ur)|0)+4>>2]|0)==3){l=y(Me+y(_n(y(0),l)));break}switch(O|0){case 1:{l=Me;break e}case 2:{l=y(Me+y(l*y(.5)));break e}default:{l=y(Me+l);break e}}}while(0);Jt=y(vs+l),li=se+400+(n[Fu>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2]))}while(0);j=j+1|0}while((j|0)!=(or|0))}if(vs=y(vs+et),kc=y(_n(kc,c)),m=yo+1|0,or>>>0>=Ws>>>0)break;l=ir,Nr=or,yo=m}do if(Q){if(O=m>>>0>1,!O&&!(Yi(s)|0))break;if(!(_t(Rn)|0)){l=y(Rn-vs);e:do switch(n[s+12>>2]|0){case 3:{Me=y(Me+l),Ue=y(0);break}case 2:{Me=y(Me+y(l*y(.5))),Ue=y(0);break}case 4:{Rn>vs?Ue=y(l/y(m>>>0)):Ue=y(0);break}case 7:if(Rn>vs){Me=y(Me+y(l/y(m<<1>>>0))),Ue=y(l/y(m>>>0)),Ue=O?Ue:y(0);break e}else{Me=y(Me+y(l*y(.5))),Ue=y(0);break e}case 6:{Ue=y(l/y(yo>>>0)),Ue=Rn>vs&O?Ue:y(0);break}default:Ue=y(0)}while(0);if(m|0)for(Lt=1040+(ur<<2)|0,Mr=976+(ur<<2)|0,Ge=0,j=0;;){e:do if(j>>>0<Ws>>>0)for(Qe=y(0),et=y(0),l=y(0),se=j;;){O=n[(n[wo>>2]|0)+(se<<2)>>2]|0;do if((n[O+36>>2]|0)!=1&&(n[O+24>>2]|0)==0){if((n[O+940>>2]|0)!=(Ge|0))break e;if(Lm(O,ur)|0&&(Jt=y(h[O+908+(n[Mr>>2]<<2)>>2]),l=y(_n(l,y(Jt+y(ln(O,ur,xr)))))),(ha(s,O)|0)!=5)break;Gs=y(Ya(O)),Gs=y(Gs+y(K(O,0,xr))),Jt=y(h[O+912>>2]),Jt=y(y(Jt+y(ln(O,0,xr)))-Gs),Gs=y(_n(et,Gs)),Jt=y(_n(Qe,Jt)),Qe=Jt,et=Gs,l=y(_n(l,y(Gs+Jt)))}while(0);if(O=se+1|0,O>>>0<Ws>>>0)se=O;else{se=O;break}}else et=y(0),l=y(0),se=j;while(0);if(lt=y(Ue+l),c=Me,Me=y(Me+lt),j>>>0<se>>>0){Xe=y(c+et),O=j;do{j=n[(n[wo>>2]|0)+(O<<2)>>2]|0;e:do if((n[j+36>>2]|0)!=1&&(n[j+24>>2]|0)==0)switch(ha(s,j)|0){case 1:{Jt=y(c+y(K(j,ur,xr))),h[j+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 3:{Jt=y(y(Me-y(re(j,ur,xr)))-y(h[j+908+(n[Mr>>2]<<2)>>2])),h[j+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 2:{Jt=y(c+y(y(lt-y(h[j+908+(n[Mr>>2]<<2)>>2]))*y(.5))),h[j+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 4:{if(Jt=y(c+y(K(j,ur,xr))),h[j+400+(n[Lt>>2]<<2)>>2]=Jt,ts(j,ur,Rn)|0||(Jn?(Qe=y(h[j+908>>2]),l=y(Qe+y(ln(j,Rr,xr))),et=lt):(et=y(h[j+912>>2]),et=y(et+y(ln(j,ur,xr))),l=lt,Qe=y(h[j+908>>2])),Ii(l,Qe)|0&&Ii(et,y(h[j+912>>2]))|0))break e;fa(j,l,et,Ds,1,1,xr,Eo,1,3501,M)|0;break e}case 5:{h[j+404>>2]=y(y(Xe-y(Ya(j)))+y(Or(j,0,Rn)));break e}default:break e}while(0);O=O+1|0}while((O|0)!=(se|0))}if(Ge=Ge+1|0,(Ge|0)==(m|0))break;j=se}}}while(0);if(h[s+908>>2]=y(Bi(s,2,Qc,B,B)),h[s+912>>2]=y(Bi(s,0,lf,k,B)),(Ql|0)!=0&&(cf=n[s+32>>2]|0,uf=(Ql|0)==2,!(uf&(cf|0)!=2))?uf&(cf|0)==2&&(l=y(Fc+ir),l=y(_n(y(Tg(l,y(MA(s,Rr,kc,Co)))),Fc)),Xr=198):(l=y(Bi(s,Rr,kc,Co,B)),Xr=198),(Xr|0)==198&&(h[s+908+(n[976+(Rr<<2)>>2]<<2)>>2]=l),(Fl|0)!=0&&(ff=n[s+32>>2]|0,pf=(Fl|0)==2,!(pf&(ff|0)!=2))?pf&(ff|0)==2&&(l=y(Ys+Rn),l=y(_n(y(Tg(l,y(MA(s,ur,y(Ys+vs),Rc)))),Ys)),Xr=204):(l=y(Bi(s,ur,y(Ys+vs),Rc,B)),Xr=204),(Xr|0)==204&&(h[s+908+(n[976+(ur<<2)>>2]<<2)>>2]=l),Q){if((n[Af>>2]|0)==2){j=976+(ur<<2)|0,se=1040+(ur<<2)|0,O=0;do Ge=gs(s,O)|0,n[Ge+24>>2]|0||(hf=n[j>>2]|0,Jt=y(h[s+908+(hf<<2)>>2]),li=Ge+400+(n[se>>2]<<2)|0,Jt=y(Jt-y(h[li>>2])),h[li>>2]=y(Jt-y(h[Ge+908+(hf<<2)>>2]))),O=O+1|0;while((O|0)!=(Ws|0))}if(f|0){O=Jn?Ql:d;do Om(s,f,xr,O,Eo,Ds,M),f=n[f+960>>2]|0;while((f|0)!=0)}if(O=(Rr|2|0)==3,j=(ur|2|0)==3,O|j){f=0;do se=n[(n[wo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(O&&wp(s,se,Rr),j&&wp(s,se,ur)),f=f+1|0;while((f|0)!=(Ws|0))}}}while(0);C=Rl}function pa(s,l){s=s|0,l=y(l);var c=0;oa(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function vc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=Ze,m=Ze,B=0,k=0,Q=0;n[2278]=(n[2278]|0)+1,Bl(s),ts(s,2,l)|0?(d=y(Gr(n[s+992>>2]|0,l)),Q=1,d=y(d+y(ln(s,2,l)))):(d=y(Gr(s+380|0,l)),d>=y(0)?Q=2:(Q=((_t(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(Gr(n[s+996>>2]|0,c)),k=1,m=y(m+y(ln(s,0,l)))):(m=y(Gr(s+388|0,c)),m>=y(0)?k=2:(k=((_t(c)|0)^1)&1,m=c)),B=s+976|0,fa(s,d,m,f,Q,k,l,c,1,3189,n[B>>2]|0)|0&&(Ep(s,n[s+496>>2]|0,l,c,l),Dc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&Qm(s,7)}function Bl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;k=C,C=C+32|0,B=k+24|0,m=k+16|0,f=k+8|0,d=k,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(Q=l,M=n[Q+4>>2]|0,O=f,n[O>>2]=n[Q>>2],n[O+4>>2]=M,O=s+364+(c<<3)|0,M=n[O+4>>2]|0,Q=d,n[Q>>2]=n[O>>2],n[Q+4>>2]=M,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],ws(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);C=k}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])<y(0)?s=0:f=5;break}case 2:{y(h[s>>2])<y(0)?s=0:s=(_t(c)|0)^1;break}default:f=5}return(f|0)==5&&(s=1),s|0}function Gr(s,l){switch(s=s|0,l=y(l),n[s+4>>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(ce)}return y(l)}function Ep(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=Ze;l=n[s+944>>2]|0?l:1,m=fr(n[s+4>>2]|0,l)|0,l=ww(m,l)|0,c=y(Mm(s,m,c)),f=y(Mm(s,l,f)),B=y(c+y(K(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(re(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(K(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(re(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function Dc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=Ze,k=Ze,Q=0,M=0,O=Ze,j=0,se=Ze,Ge=Ze,Me=Ze,Qe=Ze;if(l!=y(0)&&(d=s+400|0,Qe=y(h[d>>2]),m=s+404|0,Me=y(h[m>>2]),j=s+416|0,Ge=y(h[j>>2]),M=s+420|0,B=y(h[M>>2]),se=y(Qe+c),O=y(Me+f),f=y(se+Ge),k=y(O+B),Q=(n[s+988>>2]|0)==1,h[d>>2]=y(Go(Qe,l,0,Q)),h[m>>2]=y(Go(Me,l,0,Q)),c=y(bR(y(Ge*l),y(1))),Ii(c,y(0))|0?m=0:m=(Ii(c,y(1))|0)^1,c=y(bR(y(B*l),y(1))),Ii(c,y(0))|0?d=0:d=(Ii(c,y(1))|0)^1,Qe=y(Go(f,l,Q&m,Q&(m^1))),h[j>>2]=y(Qe-y(Go(se,l,0,Q))),Qe=y(Go(k,l,Q&d,Q&(d^1))),h[M>>2]=y(Qe-y(Go(O,l,0,Q))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Dc(gs(s,d)|0,l,se,O),d=d+1|0;while((d|0)!=(m|0))}}function Cw(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=i7(n[489]|0,f,d)|0;break}default:s=zUe(f,d)|0}return s|0}function Eg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=C,C=C+16|0,m=d,n[m>>2]=f,Cg(s,0,l,c,m),C=d}function Cg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,D7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Rt();else return}function Ga(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Rm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(wg(s,f),Qt(s,n[l>>2]|0,n[c>>2]|0,f))}function wg(s,l){s=s|0,l=l|0;var c=0;if((N(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function Qt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N(s){return s=s|0,1073741823}function K(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Fn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function re(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Fn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function pe(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(Gr(s,l)),y(l)}function mt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function fr(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function Cr(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function yn(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(Gr(s+236|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(Gr(s+244|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Ig(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze,j=Ze,se=Ze,Ge=0,Me=0,Qe=0;Qe=C,C=C+16|0,Ge=Qe,Me=s+964|0,Un(s,(n[Me>>2]|0)!=0,3519),k=y(En(s,2,l)),Q=y(En(s,0,l)),M=y(ln(s,2,l)),O=y(ln(s,0,l)),_t(l)|0?j=l:j=y(_n(y(0),y(y(l-M)-k))),_t(c)|0?se=c:se=y(_n(y(0),y(y(c-O)-Q))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Bi(s,2,y(l-M),m,m)),l=y(Bi(s,0,y(c-O),B,m))):(S7[n[Me>>2]&1](Ge,s,j,f,se,d),j=y(k+y(h[Ge>>2])),se=y(l-M),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?j:se,m,m)),se=y(Q+y(h[Ge+4>>2])),l=y(c-O),l=y(Bi(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,C=Qe}function Gv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze;M=y(En(s,2,m)),k=y(En(s,0,m)),O=y(ln(s,2,m)),Q=y(ln(s,0,m)),l=y(l-O),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?M:l,m,m)),c=y(c-Q),h[s+912>>2]=y(Bi(s,0,(d|2|0)==2?k:c,B,m))}function Yv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=0,Q=Ze,M=Ze;return k=(f|0)==2,!(l<=y(0)&k)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(Q=y(ln(s,0,m)),M=y(ln(s,2,m)),k=l<y(0)&k|(_t(l)|0),l=y(l-M),h[s+908>>2]=y(Bi(s,2,k?y(0):l,m,m)),l=y(c-Q),k=c<y(0)&(d|0)==2|(_t(c)|0),h[s+912>>2]=y(Bi(s,0,k?y(0):l,B,m)),s=1),s|0}function ww(s,l){return s=s|0,l=l|0,UA(s)|0?s=fr(2,l)|0:s=0,s|0}function Cp(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(oi(s,l,c)),y(c+y(Cr(s,l)))}function Iw(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Oi(s,l,c)),y(c+y(yn(s,l)))}function En(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(Cp(s,l,c)),y(f+y(Iw(s,l,c)))}function Tm(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(qs(s))!=y(0),s|0}function rs(s){s=s|0;var l=Ze;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),_t(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((_t(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function qs(s){s=s|0;var l=Ze,c=0,f=Ze;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),_t(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f<y(0)&((_t(f)|0)^1))){l=y(-f);break}l=c<<24>>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Bu(s){s=s|0;var l=0,c=0;if(Xm(s+400|0,0,540)|0,o[s+985>>0]=1,$(s),c=wi(s)|0,c|0){l=s+948|0,s=0;do Bu(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Nm(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),k=k|0,Q=Q|0,M=M|0;var O=0,j=Ze,se=0,Ge=0,Me=Ze,Qe=Ze,et=0,Xe=Ze,lt=0,Ue=Ze,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0,go=0;xn=C,C=C+16|0,Mr=xn+12|0,or=xn+8|0,Xt=xn+4|0,Sr=xn,ir=fr(n[s+4>>2]|0,Q)|0,je=pe(ir)|0,j=y(Gr(Bw(l)|0,je?m:B)),Lt=ts(l,2,m)|0,Nr=ts(l,0,B)|0;do if(!(_t(j)|0)&&!(_t(je?c:d)|0)){if(O=l+504|0,!(_t(y(h[O>>2]))|0)&&(!(vw(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[O>>2]=y(_n(j,y(En(l,ir,m))))}else se=7;while(0);do if((se|0)==7){if(lt=je^1,!(lt|Lt^1)){B=y(Gr(n[l+992>>2]|0,m)),h[l+504>>2]=y(_n(B,y(En(l,2,m))));break}if(!(je|Nr^1)){B=y(Gr(n[l+996>>2]|0,B)),h[l+504>>2]=y(_n(B,y(En(l,0,m))));break}h[Mr>>2]=y(ce),h[or>>2]=y(ce),n[Xt>>2]=0,n[Sr>>2]=0,Xe=y(ln(l,2,m)),Ue=y(ln(l,0,m)),Lt?(Me=y(Xe+y(Gr(n[l+992>>2]|0,m))),h[Mr>>2]=Me,n[Xt>>2]=1,Ge=1):(Ge=0,Me=y(ce)),Nr?(j=y(Ue+y(Gr(n[l+996>>2]|0,B))),h[or>>2]=j,n[Sr>>2]=1,O=1):(O=0,j=y(ce)),se=n[s+32>>2]|0,je&(se|0)==2?se=2:_t(Me)|0&&!(_t(c)|0)&&(h[Mr>>2]=c,n[Xt>>2]=2,Ge=2,Me=c),!((se|0)==2&lt)&&_t(j)|0&&!(_t(d)|0)&&(h[or>>2]=d,n[Sr>>2]=2,O=2,j=d),Qe=y(h[l+396>>2]),et=_t(Qe)|0;do if(et)se=Ge;else{if((Ge|0)==1&lt){h[or>>2]=y(y(Me-Xe)/Qe),n[Sr>>2]=1,O=1,se=1;break}je&(O|0)==1?(h[Mr>>2]=y(Qe*y(j-Ue)),n[Xt>>2]=1,O=1,se=1):se=Ge}while(0);go=_t(c)|0,Ge=(ha(s,l)|0)!=4,!(je|Lt|((f|0)!=1|go)|(Ge|(se|0)==1))&&(h[Mr>>2]=c,n[Xt>>2]=1,!et)&&(h[or>>2]=y(y(c-Xe)/Qe),n[Sr>>2]=1,O=1),!(Nr|lt|((k|0)!=1|(_t(d)|0))|(Ge|(O|0)==1))&&(h[or>>2]=d,n[Sr>>2]=1,!et)&&(h[Mr>>2]=y(Qe*y(d-Ue)),n[Xt>>2]=1),yr(l,2,m,m,Xt,Mr),yr(l,0,B,m,Sr,or),c=y(h[Mr>>2]),d=y(h[or>>2]),fa(l,c,d,Q,n[Xt>>2]|0,n[Sr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(ir<<2)>>2]<<2)>>2]),h[l+504>>2]=y(_n(B,y(En(l,ir,m))))}while(0);n[l+500>>2]=n[2278],C=xn}function Bi(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(MA(s,l,c,f)),y(_n(f,y(En(s,l,d))))}function ha(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&UA(n[s+4>>2]|0)|0&&(l=1),l|0}function vl(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Sc(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function yr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(Gr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(ln(s,l,f))),n[d>>2]|0){case 2:case 1:{d=_t(c)|0,f=y(h[m>>2]),h[m>>2]=d|f<c?f:c;break}case 0:{_t(c)|0||(n[d>>2]=2,h[m>>2]=c);break}default:}}function gi(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Or(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(K(s,l,c))),y(f+y(re(s,l,c)))}function Yi(s){s=s|0;var l=0,c=0,f=0;e:do if(UA(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=wi(s)|0,!c)l=0;else for(l=0;;){if(f=gs(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Lm(s,l){s=s|0,l=l|0;var c=Ze;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((_t(c)|0)^1)|0}function Ya(s){s=s|0;var l=Ze,c=0,f=0,d=0,m=0,B=0,k=0,Q=Ze;if(c=n[s+968>>2]|0,c)Q=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(w7[c&0](s,Q,l)),Un(s,(_t(l)|0)^1,3573);else{m=wi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=gs(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(k=(ha(s,f)|0)==5,k){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ya(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function MA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=Ze,m=0;return UA(l)|0?(l=1,m=3):pe(l)|0?(l=0,m=3):(f=y(ce),d=y(ce)),(m|0)==3&&(d=y(Gr(s+364+(l<<3)|0,f)),f=y(Gr(s+380+(l<<3)|0,f))),m=f<c&(f>=y(0)&((_t(f)|0)^1)),c=m?f:c,m=d>=y(0)&((_t(d)|0)^1)&c<d,y(m?d:c)}function Om(s,l,c,f,d,m,B){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,B=B|0;var k=Ze,Q=Ze,M=0,O=0,j=Ze,se=Ze,Ge=Ze,Me=0,Qe=0,et=0,Xe=0,lt=Ze,Ue=0;et=fr(n[s+4>>2]|0,m)|0,Me=ww(et,m)|0,Qe=pe(et)|0,j=y(ln(l,2,c)),se=y(ln(l,0,c)),ts(l,2,c)|0?k=y(j+y(Gr(n[l+992>>2]|0,c))):gi(l,2)|0&&sr(l,2)|0?(k=y(h[s+908>>2]),Q=y(Cr(s,2)),Q=y(k-y(Q+y(yn(s,2)))),k=y(Or(l,2,c)),k=y(Bi(l,2,y(Q-y(k+y(vu(l,2,c)))),c,c))):k=y(ce),ts(l,0,d)|0?Q=y(se+y(Gr(n[l+996>>2]|0,d))):gi(l,0)|0&&sr(l,0)|0?(Q=y(h[s+912>>2]),lt=y(Cr(s,0)),lt=y(Q-y(lt+y(yn(s,0)))),Q=y(Or(l,0,d)),Q=y(Bi(l,0,y(lt-y(Q+y(vu(l,0,d)))),d,c))):Q=y(ce),M=_t(k)|0,O=_t(Q)|0;do if(M^O&&(Ge=y(h[l+396>>2]),!(_t(Ge)|0)))if(M){k=y(j+y(y(Q-se)*Ge));break}else{lt=y(se+y(y(k-j)/Ge)),Q=O?lt:Q;break}while(0);O=_t(k)|0,M=_t(Q)|0,O|M&&(Ue=(O^1)&1,f=c>y(0)&((f|0)!=0&O),k=Qe?k:f?c:k,fa(l,k,Q,m,Qe?Ue:f?2:Ue,O&(M^1)&1,k,Q,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(ln(l,2,c))),Q=y(h[l+912>>2]),Q=y(Q+y(ln(l,0,c)))),fa(l,k,Q,m,1,1,k,Q,1,3635,B)|0,sr(l,et)|0&&!(gi(l,et)|0)?(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,et))),lt=y(lt-y(re(l,et,c))),lt=y(lt-y(vu(l,et,Qe?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt):Xe=21;do if((Xe|0)==21){if(!(gi(l,et)|0)&&(n[s+8>>2]|0)==1){Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt;break}!(gi(l,et)|0)&&(n[s+8>>2]|0)==2&&(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt)}while(0);sr(l,Me)|0&&!(gi(l,Me)|0)?(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,Me))),lt=y(lt-y(re(l,Me,c))),lt=y(lt-y(vu(l,Me,Qe?d:c))),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt):Xe=30;do if((Xe|0)==30&&!(gi(l,Me)|0)){if((ha(s,l)|0)==2){Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt;break}Ue=(ha(s,l)|0)==3,Ue^(n[s+28>>2]|0)==2&&(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt)}while(0)}function wp(s,l,c){s=s|0,l=l|0,c=c|0;var f=Ze,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function UA(s){return s=s|0,(s|1|0)==1|0}function Bw(s){s=s|0;var l=Ze;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((_t(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function vw(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function sr(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function vu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function Mm(s,l,c){return s=s|0,l=l|0,c=y(c),gi(s,l)|0?c=y(Or(s,l,c)):c=y(-y(vu(s,l,c))),y(c)}function Du(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Ip(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function Bg(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _A(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function HA(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;if(B=s+4|0,k=n[B>>2]|0,d=k-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0<c>>>0){f=k;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0<c>>>0)}m|0&&Mw(k+(0-m<<2)|0,l|0,d|0)|0}function vg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return k=l+4|0,Q=n[k>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=Q+(0-(m>>2)<<2)|0,n[k>>2]=f,(m|0)>0&&Dr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Dr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[k>>2],Q|0}function Dw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Um(){dc()}function ga(){var s=0;return s=Kt(4)|0,qA(s),s|0}function qA(s){s=s|0,n[s>>2]=ys()|0}function Pc(s){s=s|0,s|0&&(Dg(s),gt(s))}function Dg(s){s=s|0,tt(n[s>>2]|0)}function _m(s,l,c){s=s|0,l=l|0,c=c|0,Ga(n[s>>2]|0,l,c)}function fo(s,l){s=s|0,l=y(l),pa(n[s>>2]|0,l)}function Wv(s,l){return s=s|0,l=l|0,vw(n[s>>2]|0,l)|0}function Sw(){var s=0;return s=Kt(8)|0,Kv(s,0),s|0}function Kv(s,l){s=s|0,l=l|0,l?l=Ci(n[l>>2]|0)|0:l=co()|0,n[s>>2]=l,n[s+4>>2]=0,bi(l,s)}function AF(s){s=s|0;var l=0;return l=Kt(8)|0,Kv(l,s),l|0}function Vv(s){s=s|0,s|0&&(Su(s),gt(s))}function Su(s){s=s|0;var l=0;la(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(jA(s),gt(s))}function jA(s){s=s|0,GA(s)}function GA(s){s=s|0,s=n[s>>2]|0,s|0&&PA(s|0)}function Pw(s){return s=s|0,qo(s)|0}function Hm(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(jA(l),gt(l)),_s(n[s>>2]|0)}function fF(s,l){s=s|0,l=l|0,$r(n[s>>2]|0,n[l>>2]|0)}function pF(s,l){s=s|0,l=l|0,ca(n[s>>2]|0,l)}function Jv(s,l,c){s=s|0,l=l|0,c=+c,yu(n[s>>2]|0,l,y(c))}function zv(s,l,c){s=s|0,l=l|0,c=+c,Es(n[s>>2]|0,l,y(c))}function bw(s,l){s=s|0,l=l|0,gu(n[s>>2]|0,l)}function Pu(s,l){s=s|0,l=l|0,du(n[s>>2]|0,l)}function hF(s,l){s=s|0,l=l|0,FA(n[s>>2]|0,l)}function gF(s,l){s=s|0,l=l|0,kA(n[s>>2]|0,l)}function Bp(s,l){s=s|0,l=l|0,yc(n[s>>2]|0,l)}function dF(s,l){s=s|0,l=l|0,Ap(n[s>>2]|0,l)}function Xv(s,l,c){s=s|0,l=l|0,c=+c,Cc(n[s>>2]|0,l,y(c))}function YA(s,l,c){s=s|0,l=l|0,c=+c,G(n[s>>2]|0,l,y(c))}function mF(s,l){s=s|0,l=l|0,wl(n[s>>2]|0,l)}function yF(s,l){s=s|0,l=l|0,ag(n[s>>2]|0,l)}function Zv(s,l){s=s|0,l=l|0,fp(n[s>>2]|0,l)}function xw(s,l){s=s|0,l=+l,RA(n[s>>2]|0,y(l))}function kw(s,l){s=s|0,l=+l,Ha(n[s>>2]|0,y(l))}function EF(s,l){s=s|0,l=+l,Gi(n[s>>2]|0,y(l))}function CF(s,l){s=s|0,l=+l,Hs(n[s>>2]|0,y(l))}function Dl(s,l){s=s|0,l=+l,mu(n[s>>2]|0,y(l))}function Qw(s,l){s=s|0,l=+l,yw(n[s>>2]|0,y(l))}function wF(s,l){s=s|0,l=+l,TA(n[s>>2]|0,y(l))}function WA(s){s=s|0,pp(n[s>>2]|0)}function qm(s,l){s=s|0,l=+l,Cs(n[s>>2]|0,y(l))}function bu(s,l){s=s|0,l=+l,ug(n[s>>2]|0,y(l))}function Fw(s){s=s|0,Ag(n[s>>2]|0)}function Rw(s,l){s=s|0,l=+l,hp(n[s>>2]|0,y(l))}function IF(s,l){s=s|0,l=+l,Ic(n[s>>2]|0,y(l))}function $v(s,l){s=s|0,l=+l,bm(n[s>>2]|0,y(l))}function KA(s,l){s=s|0,l=+l,pg(n[s>>2]|0,y(l))}function eD(s,l){s=s|0,l=+l,Cu(n[s>>2]|0,y(l))}function jm(s,l){s=s|0,l=+l,xm(n[s>>2]|0,y(l))}function tD(s,l){s=s|0,l=+l,wu(n[s>>2]|0,y(l))}function rD(s,l){s=s|0,l=+l,Ew(n[s>>2]|0,y(l))}function Gm(s,l){s=s|0,l=+l,Aa(n[s>>2]|0,y(l))}function nD(s,l,c){s=s|0,l=l|0,c=+c,Eu(n[s>>2]|0,l,y(c))}function BF(s,l,c){s=s|0,l=l|0,c=+c,xi(n[s>>2]|0,l,y(c))}function S(s,l,c){s=s|0,l=l|0,c=+c,wc(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,og(n[s>>2]|0)|0}function T(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ec(d,n[l>>2]|0,c),q(s,d),C=f}function q(s,l){s=s|0,l=l|0,Y(s,n[l+4>>2]|0,+y(h[l>>2]))}function Y(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,E[s+8>>3]=c}function Ae(s){return s=s|0,sg(n[s>>2]|0)|0}function De(s){return s=s|0,uo(n[s>>2]|0)|0}function vt(s){return s=s|0,mc(n[s>>2]|0)|0}function wt(s){return s=s|0,QA(n[s>>2]|0)|0}function xt(s){return s=s|0,Pm(n[s>>2]|0)|0}function _r(s){return s=s|0,ig(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Dt(d,n[l>>2]|0,c),q(s,d),C=f}function di(s){return s=s|0,$n(n[s>>2]|0)|0}function po(s){return s=s|0,lg(n[s>>2]|0)|0}function VA(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,ua(f,n[l>>2]|0),q(s,f),C=c}function Yo(s){return s=s|0,+ +y(ji(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(es(n[s>>2]|0))}function Ve(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Br(f,n[l>>2]|0),q(s,f),C=c}function ft(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,fg(f,n[l>>2]|0),q(s,f),C=c}function Wt(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Ct(f,n[l>>2]|0),q(s,f),C=c}function vr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,hg(f,n[l>>2]|0),q(s,f),C=c}function Pn(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,gg(f,n[l>>2]|0),q(s,f),C=c}function Fr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,km(f,n[l>>2]|0),q(s,f),C=c}function bn(s){return s=s|0,+ +y(Bc(n[s>>2]|0))}function ai(s,l){return s=s|0,l=l|0,+ +y(cg(n[s>>2]|0,l))}function tn(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,ct(d,n[l>>2]|0,c),q(s,d),C=f}function ho(s,l,c){s=s|0,l=l|0,c=c|0,nr(n[s>>2]|0,n[l>>2]|0,c)}function vF(s,l){s=s|0,l=l|0,ms(n[s>>2]|0,n[l>>2]|0)}function eve(s){return s=s|0,wi(n[s>>2]|0)|0}function tve(s){return s=s|0,s=ht(n[s>>2]|0)|0,s?s=Pw(s)|0:s=0,s|0}function rve(s,l){return s=s|0,l=l|0,s=gs(n[s>>2]|0,l)|0,s?s=Pw(s)|0:s=0,s|0}function nve(s,l){s=s|0,l=l|0;var c=0,f=0;f=Kt(4)|0,zG(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(jA(l),gt(l)),It(n[s>>2]|0,1)}function zG(s,l){s=s|0,l=l|0,gve(s,l)}function ive(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,sve(k,qo(l)|0,+c,f,+d,m),h[s>>2]=y(+E[k>>3]),h[s+4>>2]=y(+E[k+8>>3]),C=B}function sve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,k=0,Q=0,M=0,O=0;B=C,C=C+32|0,O=B+8|0,M=B+20|0,Q=B,k=B+16|0,E[O>>3]=c,n[M>>2]=f,E[Q>>3]=d,n[k>>2]=m,ove(s,n[l+4>>2]|0,O,M,Q,k),C=B}function ove(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,Ka(k),l=da(l)|0,ave(s,l,+E[c>>3],n[f>>2]|0,+E[d>>3],n[m>>2]|0),Va(k),C=B}function da(s){return s=s|0,n[s>>2]|0}function ave(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Sl(lve()|0)|0,c=+JA(c),f=DF(f)|0,d=+JA(d),cve(s,hi(0,B|0,l|0,+c,f|0,+d,DF(m)|0)|0)}function lve(){var s=0;return o[7608]|0||(pve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Sl(s){return s=s|0,n[s+8>>2]|0}function JA(s){return s=+s,+ +SF(s)}function DF(s){return s=s|0,ZG(s)|0}function cve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=l,f&1?(uve(c,0),ii(f|0,c|0)|0,Ave(s,c),fve(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),C=d}function uve(s,l){s=s|0,l=l|0,XG(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function Ave(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function fve(s){s=s|0,o[s+24>>0]=0}function XG(s,l){s=s|0,l=l|0,n[s>>2]=l}function ZG(s){return s=s|0,s|0}function SF(s){return s=+s,+s}function pve(s){s=s|0,Pl(s,hve()|0,4)}function hve(){return 1064}function Pl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=up(l|0,c+1|0)|0}function gve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,yl(l|0)}function dve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(jA(l),gt(l)),It(n[s>>2]|0,0)}function mve(s){s=s|0,Tt(n[s>>2]|0)}function yve(s){return s=s|0,er(n[s>>2]|0)|0}function Eve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,vc(n[s>>2]|0,y(l),y(c),f)}function Cve(s){return s=s|0,+ +y(Il(n[s>>2]|0))}function wve(s){return s=s|0,+ +y(dg(n[s>>2]|0))}function Ive(s){return s=s|0,+ +y(Iu(n[s>>2]|0))}function Bve(s){return s=s|0,+ +y(NA(n[s>>2]|0))}function vve(s){return s=s|0,+ +y(gp(n[s>>2]|0))}function Dve(s){return s=s|0,+ +y(qa(n[s>>2]|0))}function Sve(s,l){s=s|0,l=l|0,E[s>>3]=+y(Il(n[l>>2]|0)),E[s+8>>3]=+y(dg(n[l>>2]|0)),E[s+16>>3]=+y(Iu(n[l>>2]|0)),E[s+24>>3]=+y(NA(n[l>>2]|0)),E[s+32>>3]=+y(gp(n[l>>2]|0)),E[s+40>>3]=+y(qa(n[l>>2]|0))}function Pve(s,l){return s=s|0,l=l|0,+ +y(mg(n[s>>2]|0,l))}function bve(s,l){return s=s|0,l=l|0,+ +y(dp(n[s>>2]|0,l))}function xve(s,l){return s=s|0,l=l|0,+ +y(jo(n[s>>2]|0,l))}function kve(){return Sn()|0}function Qve(){Fve(),Rve(),Tve(),Nve(),Lve(),Ove()}function Fve(){LNe(11713,4938,1)}function Rve(){tNe(10448)}function Tve(){LTe(10408)}function Nve(){sTe(10324)}function Lve(){pFe(10096)}function Ove(){Mve(9132)}function Mve(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Np=0,Lp=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=0,_p=0,Tu=0,Nu=0,kc=0,js=0,za=0,Wo=0,kl=0,nf=0,sf=0,Lu=0,of=0,af=0,Gs=0,vs=0,Ql=0,Rn=0,lf=0,Eo=0,Qc=0,Co=0,Fc=0,cf=0,uf=0,Rc=0,Ys=0,Fl=0,Af=0,ff=0,pf=0,xr=0,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0;l=C,C=C+672|0,c=l+656|0,Rl=l+648|0,ur=l+640|0,Rr=l+632|0,Ws=l+624|0,wo=l+616|0,Ds=l+608|0,Jn=l+600|0,xr=l+592|0,pf=l+584|0,ff=l+576|0,Af=l+568|0,Fl=l+560|0,Ys=l+552|0,Rc=l+544|0,uf=l+536|0,cf=l+528|0,Fc=l+520|0,Co=l+512|0,Qc=l+504|0,Eo=l+496|0,lf=l+488|0,Rn=l+480|0,Ql=l+472|0,vs=l+464|0,Gs=l+456|0,af=l+448|0,of=l+440|0,Lu=l+432|0,sf=l+424|0,nf=l+416|0,kl=l+408|0,Wo=l+400|0,za=l+392|0,js=l+384|0,kc=l+376|0,Nu=l+368|0,Tu=l+360|0,_p=l+352|0,Up=l+344|0,xc=l+336|0,Mp=l+328|0,xl=l+320|0,Xr=l+312|0,Op=l+304|0,Lp=l+296|0,Np=l+288|0,Ru=l+280|0,Fu=l+272|0,Tp=l+264|0,bl=l+256|0,Rp=l+248|0,Fp=l+240|0,ya=l+232|0,yo=l+224|0,mo=l+216|0,go=l+208|0,xn=l+200|0,ir=l+192|0,Nr=l+184|0,Sr=l+176|0,Xt=l+168|0,or=l+160|0,Mr=l+152|0,Lt=l+144|0,je=l+136|0,Ue=l+128|0,lt=l+120|0,Xe=l+112|0,et=l+104|0,Qe=l+96|0,Me=l+88|0,Ge=l+80|0,se=l+72|0,j=l+64|0,O=l+56|0,M=l+48|0,Q=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,Uve(s,3646),_ve(s,3651,2)|0,Hve(s,3665,2)|0,qve(s,3682,18)|0,n[Rl>>2]=19,n[Rl+4>>2]=0,n[c>>2]=n[Rl>>2],n[c+4>>2]=n[Rl+4>>2],Tw(s,3690,c)|0,n[ur>>2]=1,n[ur+4>>2]=0,n[c>>2]=n[ur>>2],n[c+4>>2]=n[ur+4>>2],jve(s,3696,c)|0,n[Rr>>2]=2,n[Rr+4>>2]=0,n[c>>2]=n[Rr>>2],n[c+4>>2]=n[Rr+4>>2],xu(s,3706,c)|0,n[Ws>>2]=1,n[Ws+4>>2]=0,n[c>>2]=n[Ws>>2],n[c+4>>2]=n[Ws+4>>2],Sg(s,3722,c)|0,n[wo>>2]=2,n[wo+4>>2]=0,n[c>>2]=n[wo>>2],n[c+4>>2]=n[wo+4>>2],Sg(s,3734,c)|0,n[Ds>>2]=3,n[Ds+4>>2]=0,n[c>>2]=n[Ds>>2],n[c+4>>2]=n[Ds+4>>2],xu(s,3753,c)|0,n[Jn>>2]=4,n[Jn+4>>2]=0,n[c>>2]=n[Jn>>2],n[c+4>>2]=n[Jn+4>>2],xu(s,3769,c)|0,n[xr>>2]=5,n[xr+4>>2]=0,n[c>>2]=n[xr>>2],n[c+4>>2]=n[xr+4>>2],xu(s,3783,c)|0,n[pf>>2]=6,n[pf+4>>2]=0,n[c>>2]=n[pf>>2],n[c+4>>2]=n[pf+4>>2],xu(s,3796,c)|0,n[ff>>2]=7,n[ff+4>>2]=0,n[c>>2]=n[ff>>2],n[c+4>>2]=n[ff+4>>2],xu(s,3813,c)|0,n[Af>>2]=8,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],xu(s,3825,c)|0,n[Fl>>2]=3,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],Sg(s,3843,c)|0,n[Ys>>2]=4,n[Ys+4>>2]=0,n[c>>2]=n[Ys>>2],n[c+4>>2]=n[Ys+4>>2],Sg(s,3853,c)|0,n[Rc>>2]=9,n[Rc+4>>2]=0,n[c>>2]=n[Rc>>2],n[c+4>>2]=n[Rc+4>>2],xu(s,3870,c)|0,n[uf>>2]=10,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],xu(s,3884,c)|0,n[cf>>2]=11,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],xu(s,3896,c)|0,n[Fc>>2]=1,n[Fc+4>>2]=0,n[c>>2]=n[Fc>>2],n[c+4>>2]=n[Fc+4>>2],Is(s,3907,c)|0,n[Co>>2]=2,n[Co+4>>2]=0,n[c>>2]=n[Co>>2],n[c+4>>2]=n[Co+4>>2],Is(s,3915,c)|0,n[Qc>>2]=3,n[Qc+4>>2]=0,n[c>>2]=n[Qc>>2],n[c+4>>2]=n[Qc+4>>2],Is(s,3928,c)|0,n[Eo>>2]=4,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Is(s,3948,c)|0,n[lf>>2]=5,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],Is(s,3960,c)|0,n[Rn>>2]=6,n[Rn+4>>2]=0,n[c>>2]=n[Rn>>2],n[c+4>>2]=n[Rn+4>>2],Is(s,3974,c)|0,n[Ql>>2]=7,n[Ql+4>>2]=0,n[c>>2]=n[Ql>>2],n[c+4>>2]=n[Ql+4>>2],Is(s,3983,c)|0,n[vs>>2]=20,n[vs+4>>2]=0,n[c>>2]=n[vs>>2],n[c+4>>2]=n[vs+4>>2],Tw(s,3999,c)|0,n[Gs>>2]=8,n[Gs+4>>2]=0,n[c>>2]=n[Gs>>2],n[c+4>>2]=n[Gs+4>>2],Is(s,4012,c)|0,n[af>>2]=9,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],Is(s,4022,c)|0,n[of>>2]=21,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Tw(s,4039,c)|0,n[Lu>>2]=10,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],Is(s,4053,c)|0,n[sf>>2]=11,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Is(s,4065,c)|0,n[nf>>2]=12,n[nf+4>>2]=0,n[c>>2]=n[nf>>2],n[c+4>>2]=n[nf+4>>2],Is(s,4084,c)|0,n[kl>>2]=13,n[kl+4>>2]=0,n[c>>2]=n[kl>>2],n[c+4>>2]=n[kl+4>>2],Is(s,4097,c)|0,n[Wo>>2]=14,n[Wo+4>>2]=0,n[c>>2]=n[Wo>>2],n[c+4>>2]=n[Wo+4>>2],Is(s,4117,c)|0,n[za>>2]=15,n[za+4>>2]=0,n[c>>2]=n[za>>2],n[c+4>>2]=n[za+4>>2],Is(s,4129,c)|0,n[js>>2]=16,n[js+4>>2]=0,n[c>>2]=n[js>>2],n[c+4>>2]=n[js+4>>2],Is(s,4148,c)|0,n[kc>>2]=17,n[kc+4>>2]=0,n[c>>2]=n[kc>>2],n[c+4>>2]=n[kc+4>>2],Is(s,4161,c)|0,n[Nu>>2]=18,n[Nu+4>>2]=0,n[c>>2]=n[Nu>>2],n[c+4>>2]=n[Nu+4>>2],Is(s,4181,c)|0,n[Tu>>2]=5,n[Tu+4>>2]=0,n[c>>2]=n[Tu>>2],n[c+4>>2]=n[Tu+4>>2],Sg(s,4196,c)|0,n[_p>>2]=6,n[_p+4>>2]=0,n[c>>2]=n[_p>>2],n[c+4>>2]=n[_p+4>>2],Sg(s,4206,c)|0,n[Up>>2]=7,n[Up+4>>2]=0,n[c>>2]=n[Up>>2],n[c+4>>2]=n[Up+4>>2],Sg(s,4217,c)|0,n[xc>>2]=3,n[xc+4>>2]=0,n[c>>2]=n[xc>>2],n[c+4>>2]=n[xc+4>>2],zA(s,4235,c)|0,n[Mp>>2]=1,n[Mp+4>>2]=0,n[c>>2]=n[Mp>>2],n[c+4>>2]=n[Mp+4>>2],PF(s,4251,c)|0,n[xl>>2]=4,n[xl+4>>2]=0,n[c>>2]=n[xl>>2],n[c+4>>2]=n[xl+4>>2],zA(s,4263,c)|0,n[Xr>>2]=5,n[Xr+4>>2]=0,n[c>>2]=n[Xr>>2],n[c+4>>2]=n[Xr+4>>2],zA(s,4279,c)|0,n[Op>>2]=6,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],zA(s,4293,c)|0,n[Lp>>2]=7,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],zA(s,4306,c)|0,n[Np>>2]=8,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],zA(s,4323,c)|0,n[Ru>>2]=9,n[Ru+4>>2]=0,n[c>>2]=n[Ru>>2],n[c+4>>2]=n[Ru+4>>2],zA(s,4335,c)|0,n[Fu>>2]=2,n[Fu+4>>2]=0,n[c>>2]=n[Fu>>2],n[c+4>>2]=n[Fu+4>>2],PF(s,4353,c)|0,n[Tp>>2]=12,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],Pg(s,4363,c)|0,n[bl>>2]=1,n[bl+4>>2]=0,n[c>>2]=n[bl>>2],n[c+4>>2]=n[bl+4>>2],XA(s,4376,c)|0,n[Rp>>2]=2,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],XA(s,4388,c)|0,n[Fp>>2]=13,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],Pg(s,4402,c)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[c>>2]=n[ya>>2],n[c+4>>2]=n[ya+4>>2],Pg(s,4411,c)|0,n[yo>>2]=15,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Pg(s,4421,c)|0,n[mo>>2]=16,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Pg(s,4433,c)|0,n[go>>2]=17,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],Pg(s,4446,c)|0,n[xn>>2]=18,n[xn+4>>2]=0,n[c>>2]=n[xn>>2],n[c+4>>2]=n[xn+4>>2],Pg(s,4458,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],XA(s,4471,c)|0,n[Nr>>2]=1,n[Nr+4>>2]=0,n[c>>2]=n[Nr>>2],n[c+4>>2]=n[Nr+4>>2],iD(s,4486,c)|0,n[Sr>>2]=10,n[Sr+4>>2]=0,n[c>>2]=n[Sr>>2],n[c+4>>2]=n[Sr+4>>2],zA(s,4496,c)|0,n[Xt>>2]=11,n[Xt+4>>2]=0,n[c>>2]=n[Xt>>2],n[c+4>>2]=n[Xt+4>>2],zA(s,4508,c)|0,n[or>>2]=3,n[or+4>>2]=0,n[c>>2]=n[or>>2],n[c+4>>2]=n[or+4>>2],PF(s,4519,c)|0,n[Mr>>2]=4,n[Mr+4>>2]=0,n[c>>2]=n[Mr>>2],n[c+4>>2]=n[Mr+4>>2],Gve(s,4530,c)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[c>>2]=n[Lt>>2],n[c+4>>2]=n[Lt+4>>2],Yve(s,4542,c)|0,n[je>>2]=12,n[je+4>>2]=0,n[c>>2]=n[je>>2],n[c+4>>2]=n[je+4>>2],Wve(s,4554,c)|0,n[Ue>>2]=13,n[Ue+4>>2]=0,n[c>>2]=n[Ue>>2],n[c+4>>2]=n[Ue+4>>2],Kve(s,4568,c)|0,n[lt>>2]=2,n[lt+4>>2]=0,n[c>>2]=n[lt>>2],n[c+4>>2]=n[lt+4>>2],Vve(s,4578,c)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[c>>2]=n[Xe>>2],n[c+4>>2]=n[Xe+4>>2],Jve(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],Tw(s,4602,c)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[c>>2]=n[Qe>>2],n[c+4>>2]=n[Qe+4>>2],Tw(s,4619,c)|0,n[Me>>2]=14,n[Me+4>>2]=0,n[c>>2]=n[Me>>2],n[c+4>>2]=n[Me+4>>2],zve(s,4629,c)|0,n[Ge>>2]=1,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],Xve(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],XA(s,4653,c)|0,n[j>>2]=5,n[j+4>>2]=0,n[c>>2]=n[j>>2],n[c+4>>2]=n[j+4>>2],XA(s,4669,c)|0,n[O>>2]=6,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],XA(s,4686,c)|0,n[M>>2]=7,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],XA(s,4701,c)|0,n[Q>>2]=8,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],XA(s,4719,c)|0,n[k>>2]=9,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],XA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],Zve(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],iD(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],iD(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],iD(s,4808,c)|0,C=l}function Uve(s,l){s=s|0,l=l|0;var c=0;c=iFe()|0,n[s>>2]=c,sFe(c,l),xp(n[s>>2]|0)}function _ve(s,l,c){return s=s|0,l=l|0,c=c|0,GQe(s,pn(l)|0,c,0),s|0}function Hve(s,l,c){return s=s|0,l=l|0,c=c|0,bQe(s,pn(l)|0,c,0),s|0}function qve(s,l,c){return s=s|0,l=l|0,c=c|0,hQe(s,pn(l)|0,c,0),s|0}function Tw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Zke(s,l,d),C=f,s|0}function jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rke(s,l,d),C=f,s|0}function xu(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mke(s,l,d),C=f,s|0}function Sg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tke(s,l,d),C=f,s|0}function Is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Uxe(s,l,d),C=f,s|0}function zA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Bxe(s,l,d),C=f,s|0}function PF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],axe(s,l,d),C=f,s|0}function Pg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rbe(s,l,d),C=f,s|0}function XA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mbe(s,l,d),C=f,s|0}function iD(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tbe(s,l,d),C=f,s|0}function Gve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UPe(s,l,d),C=f,s|0}function Yve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],BPe(s,l,d),C=f,s|0}function Wve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lPe(s,l,d),C=f,s|0}function Kve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KSe(s,l,d),C=f,s|0}function Vve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kSe(s,l,d),C=f,s|0}function Jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pSe(s,l,d),C=f,s|0}function zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XDe(s,l,d),C=f,s|0}function Xve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RDe(s,l,d),C=f,s|0}function Zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$ve(s,l,d),C=f,s|0}function $ve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],eDe(s,c,d,1),C=f}function pn(s){return s=s|0,s|0}function eDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=bF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=tDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,rDe(m,f)|0,f),C=d}function bF(){var s=0,l=0;if(o[7616]|0||(t5(9136),tr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t5(9136)}return 9136}function tDe(s){return s=s|0,0}function rDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=bF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],e5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sDe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function hn(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0;B=C,C=C+32|0,se=B+24|0,j=B+20|0,Q=B+16|0,O=B+12|0,M=B+8|0,k=B+4|0,Ge=B,n[j>>2]=l,n[Q>>2]=c,n[O>>2]=f,n[M>>2]=d,n[k>>2]=m,m=s+28|0,n[Ge>>2]=n[m>>2],n[se>>2]=n[Ge>>2],nDe(s+24|0,se,j,O,M,Q,k)|0,n[m>>2]=n[n[m>>2]>>2],C=B}function nDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=iDe(l)|0,l=Kt(24)|0,$G(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function iDe(s){return s=s|0,n[s>>2]|0}function $G(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gr(s,l){return s=s|0,l=l|0,l|s|0}function e5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oDe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,aDe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],e5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lDe(s,k),cDe(k),C=M;return}}function oDe(s){return s=s|0,357913941}function aDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function t5(s){s=s|0,fDe(s)}function uDe(s){s=s|0,ADe(s+24|0)}function Tr(s){return s=s|0,n[s>>2]|0}function ADe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,pDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Kr(){return 9228}function pDe(){return 1140}function hDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=gDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=dDe(l,f)|0,C=c,l|0}function Vr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gDe(s){return s=s|0,(n[(bF()|0)+24>>2]|0)+(s*12|0)|0}function dDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=mDe(f)|0,C=d,f|0}function mDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(r5()|0)|0,f?(kF(l,f),QF(c,l),yDe(s,c),s=FF(l)|0):s=EDe(s)|0,C=d,s|0}function r5(){var s=0;return o[7632]|0||(xDe(9184),tr(25,9184,U|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function xF(s){return s=s|0,n[s+36>>2]|0}function kF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function QF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function yDe(s,l){s=s|0,l=l|0,BDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function FF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function EDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;Q=C,C=C+16|0,c=Q+4|0,f=Q,d=Wa(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[s>>2],k=k+4|0,s=s+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[f>>2]=0,n[c>>2]=n[f>>2],n5(k,B,c),n[d>>2]=k,C=Q,m|0}function n5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function CDe(s){s=s|0,zm(s),gt(s)}function wDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function IDe(s){s=s|0,gt(s)}function BDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=vDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function vDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var k=0,Q=0;return k=C,C=C+16|0,Q=k,Ka(Q),s=da(s)|0,B=DDe(s,+E[l>>3],+E[c>>3],+E[f>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Va(Q),C=k,B|0}function DDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var k=0;return k=Sl(SDe()|0)|0,l=+JA(l),c=+JA(c),f=+JA(f),d=+JA(d),m=+JA(m),Ms(0,k|0,s|0,+l,+c,+f,+d,+m,+ +JA(B))|0}function SDe(){var s=0;return o[7624]|0||(PDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function PDe(s){s=s|0,Pl(s,bDe()|0,6)}function bDe(){return 1112}function xDe(s){s=s|0,vp(s)}function kDe(s){s=s|0,i5(s+24|0),s5(s+16|0)}function i5(s){s=s|0,FDe(s)}function s5(s){s=s|0,QDe(s)}function QDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function FDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function vp(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function RDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],TDe(s,c,d,0),C=f}function TDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=RF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=NDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,LDe(m,f)|0,f),C=d}function RF(){var s=0,l=0;if(o[7640]|0||(a5(9232),tr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a5(9232)}return 9232}function NDe(s){return s=s|0,0}function LDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=RF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ODe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ODe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=MDe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,UDe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_De(s,k),HDe(k),C=M;return}}function MDe(s){return s=s|0,357913941}function UDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _De(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function HDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function a5(s){s=s|0,GDe(s)}function qDe(s){s=s|0,jDe(s+24|0)}function jDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function GDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,YDe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function YDe(){return 1144}function WDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,B=m+8|0,k=m,Q=KDe(s)|0,s=n[Q+4>>2]|0,n[k>>2]=n[Q>>2],n[k+4>>2]=s,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],VDe(l,B,c,f,d),C=m}function KDe(s){return s=s|0,(n[(RF()|0)+24>>2]|0)+(s*12|0)|0}function VDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0,M=0;M=C,C=C+16|0,B=M+2|0,k=M+1|0,Q=M,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),ku(B,c),c=+Qu(B,c),ku(k,f),f=+Qu(k,f),ZA(Q,d),Q=$A(Q,d)|0,I7[m&1](s,c,f,Q),C=M}function ku(s,l){s=s|0,l=+l}function Qu(s,l){return s=s|0,l=+l,+ +zDe(l)}function ZA(s,l){s=s|0,l=l|0}function $A(s,l){return s=s|0,l=l|0,JDe(l)|0}function JDe(s){return s=s|0,s|0}function zDe(s){return s=+s,+s}function XDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],ZDe(s,c,d,1),C=f}function ZDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=TF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=$De(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,eSe(m,f)|0,f),C=d}function TF(){var s=0,l=0;if(o[7648]|0||(c5(9268),tr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c5(9268)}return 9268}function $De(s){return s=s|0,0}function eSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=TF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],l5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(tSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function l5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function tSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=rSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,nSe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],l5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,iSe(s,k),sSe(k),C=M;return}}function rSe(s){return s=s|0,357913941}function nSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function iSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function sSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function c5(s){s=s|0,lSe(s)}function oSe(s){s=s|0,aSe(s+24|0)}function aSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function lSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,cSe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cSe(){return 1160}function uSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=ASe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=fSe(l,f)|0,C=c,l|0}function ASe(s){return s=s|0,(n[(TF()|0)+24>>2]|0)+(s*12|0)|0}function fSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),u5(Lg[c&31](s)|0)|0}function u5(s){return s=s|0,s&1|0}function pSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],hSe(s,c,d,0),C=f}function hSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=NF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=gSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,dSe(m,f)|0,f),C=d}function NF(){var s=0,l=0;if(o[7656]|0||(f5(9304),tr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f5(9304)}return 9304}function gSe(s){return s=s|0,0}function dSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=NF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(mSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function A5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function mSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ySe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,ESe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,CSe(s,k),wSe(k),C=M;return}}function ySe(s){return s=s|0,357913941}function ESe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function CSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function f5(s){s=s|0,vSe(s)}function ISe(s){s=s|0,BSe(s+24|0)}function BSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function vSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,DSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DSe(){return 1164}function SSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=PSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bSe(l,d,c),C=f}function PSe(s){return s=s|0,(n[(NF()|0)+24>>2]|0)+(s*12|0)|0}function bSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Dp(d,c),c=Sp(d,c)|0,rf[f&31](s,c),Pp(d),C=m}function Dp(s,l){s=s|0,l=l|0,xSe(s,l)}function Sp(s,l){return s=s|0,l=l|0,s|0}function Pp(s){s=s|0,jA(s)}function xSe(s,l){s=s|0,l=l|0,LF(s,l)}function LF(s,l){s=s|0,l=l|0,n[s>>2]=l}function kSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],QSe(s,c,d,0),C=f}function QSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=OF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=FSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,RSe(m,f)|0,f),C=d}function OF(){var s=0,l=0;if(o[7664]|0||(h5(9340),tr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));h5(9340)}return 9340}function FSe(s){return s=s|0,0}function RSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=OF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],p5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(TSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function p5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function TSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=NSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,LSe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],p5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,OSe(s,k),MSe(k),C=M;return}}function NSe(s){return s=s|0,357913941}function LSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function OSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function MSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function h5(s){s=s|0,HSe(s)}function USe(s){s=s|0,_Se(s+24|0)}function _Se(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function HSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,qSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qSe(){return 1180}function jSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=GSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=YSe(l,d,c)|0,C=f,c|0}function GSe(s){return s=s|0,(n[(OF()|0)+24>>2]|0)+(s*12|0)|0}function YSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),bg(d,c),d=xg(d,c)|0,d=sD(RR[f&15](s,d)|0)|0,C=m,d|0}function bg(s,l){s=s|0,l=l|0}function xg(s,l){return s=s|0,l=l|0,WSe(l)|0}function sD(s){return s=s|0,s|0}function WSe(s){return s=s|0,s|0}function KSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],VSe(s,c,d,0),C=f}function VSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=MF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=JSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,zSe(m,f)|0,f),C=d}function MF(){var s=0,l=0;if(o[7672]|0||(d5(9376),tr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));d5(9376)}return 9376}function JSe(s){return s=s|0,0}function zSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=MF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],g5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(XSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function g5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function XSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ZSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,$Se(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],g5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,ePe(s,k),tPe(k),C=M;return}}function ZSe(s){return s=s|0,357913941}function $Se(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function ePe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function tPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function d5(s){s=s|0,iPe(s)}function rPe(s){s=s|0,nPe(s+24|0)}function nPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function iPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,m5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function m5(){return 1196}function sPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=oPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=aPe(l,f)|0,C=c,l|0}function oPe(s){return s=s|0,(n[(MF()|0)+24>>2]|0)+(s*12|0)|0}function aPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),sD(Lg[c&31](s)|0)|0}function lPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],cPe(s,c,d,1),C=f}function cPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=UF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=uPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,APe(m,f)|0,f),C=d}function UF(){var s=0,l=0;if(o[7680]|0||(E5(9412),tr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E5(9412)}return 9412}function uPe(s){return s=s|0,0}function APe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=UF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],y5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(fPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function y5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function fPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=pPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,hPe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],y5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,gPe(s,k),dPe(k),C=M;return}}function pPe(s){return s=s|0,357913941}function hPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function gPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function dPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function E5(s){s=s|0,EPe(s)}function mPe(s){s=s|0,yPe(s+24|0)}function yPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function EPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,C5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function C5(){return 1200}function CPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=wPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=IPe(l,f)|0,C=c,l|0}function wPe(s){return s=s|0,(n[(UF()|0)+24>>2]|0)+(s*12|0)|0}function IPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),oD(Lg[c&31](s)|0)|0}function oD(s){return s=s|0,s|0}function BPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],vPe(s,c,d,0),C=f}function vPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=DPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,SPe(m,f)|0,f),C=d}function _F(){var s=0,l=0;if(o[7688]|0||(I5(9448),tr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));I5(9448)}return 9448}function DPe(s){return s=s|0,0}function SPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=_F()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],w5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(PPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function w5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function PPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=bPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,xPe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],w5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,kPe(s,k),QPe(k),C=M;return}}function bPe(s){return s=s|0,357913941}function xPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function kPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function QPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function I5(s){s=s|0,TPe(s)}function FPe(s){s=s|0,RPe(s+24|0)}function RPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function TPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,B5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function B5(){return 1204}function NPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=LPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],OPe(l,d,c),C=f}function LPe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function OPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),HF(d,c),d=qF(d,c)|0,rf[f&31](s,d),C=m}function HF(s,l){s=s|0,l=l|0}function qF(s,l){return s=s|0,l=l|0,MPe(l)|0}function MPe(s){return s=s|0,s|0}function UPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],_Pe(s,c,d,0),C=f}function _Pe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=jF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=HPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,qPe(m,f)|0,f),C=d}function jF(){var s=0,l=0;if(o[7696]|0||(D5(9484),tr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D5(9484)}return 9484}function HPe(s){return s=s|0,0}function qPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=jF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function v5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=GPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,YPe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,WPe(s,k),KPe(k),C=M;return}}function GPe(s){return s=s|0,357913941}function YPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function WPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function KPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function D5(s){s=s|0,zPe(s)}function VPe(s){s=s|0,JPe(s+24|0)}function JPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function zPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,XPe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function XPe(){return 1212}function ZPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=$Pe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],ebe(l,m,c,f),C=d}function $Pe(s){return s=s|0,(n[(jF()|0)+24>>2]|0)+(s*12|0)|0}function ebe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),HF(m,c),m=qF(m,c)|0,bg(B,f),B=xg(B,f)|0,Hw[d&15](s,m,B),C=k}function tbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],rbe(s,c,d,1),C=f}function rbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=GF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ibe(m,f)|0,f),C=d}function GF(){var s=0,l=0;if(o[7704]|0||(P5(9520),tr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));P5(9520)}return 9520}function nbe(s){return s=s|0,0}function ibe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=GF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],S5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function S5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=obe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,abe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],S5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lbe(s,k),cbe(k),C=M;return}}function obe(s){return s=s|0,357913941}function abe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function P5(s){s=s|0,fbe(s)}function ube(s){s=s|0,Abe(s+24|0)}function Abe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,pbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pbe(){return 1224}function hbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;return d=C,C=C+16|0,m=d+8|0,B=d,k=gbe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+dbe(l,m,c),C=d,+f}function gbe(s){return s=s|0,(n[(GF()|0)+24>>2]|0)+(s*12|0)|0}function dbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,B=+SF(+v7[f&7](s,d)),C=m,+B}function mbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],ybe(s,c,d,1),C=f}function ybe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Ebe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Cbe(m,f)|0,f),C=d}function YF(){var s=0,l=0;if(o[7712]|0||(x5(9556),tr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));x5(9556)}return 9556}function Ebe(s){return s=s|0,0}function Cbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=YF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],b5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function b5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ibe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Bbe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],b5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,vbe(s,k),Dbe(k),C=M;return}}function Ibe(s){return s=s|0,357913941}function Bbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function x5(s){s=s|0,bbe(s)}function Sbe(s){s=s|0,Pbe(s+24|0)}function Pbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,xbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xbe(){return 1232}function kbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Qbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+Fbe(l,d),C=f,+c}function Qbe(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function Fbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +SF(+B7[c&15](s))}function Rbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],Tbe(s,c,d,1),C=f}function Tbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Lbe(m,f)|0,f),C=d}function WF(){var s=0,l=0;if(o[7720]|0||(Q5(9592),tr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Q5(9592)}return 9592}function Nbe(s){return s=s|0,0}function Lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=WF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],k5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Obe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function k5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Obe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mbe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Ube(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],k5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_be(s,k),Hbe(k),C=M;return}}function Mbe(s){return s=s|0,357913941}function Ube(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _be(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function Q5(s){s=s|0,Gbe(s)}function qbe(s){s=s|0,jbe(s+24|0)}function jbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Gbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,Ybe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Ybe(){return 1276}function Wbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Kbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Vbe(l,f)|0,C=c,l|0}function Kbe(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function Vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=F5(f)|0,C=d,f|0}function F5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(R5()|0)|0,f?(kF(l,f),QF(c,l),Jbe(s,c),s=FF(l)|0):s=zbe(s)|0,C=d,s|0}function R5(){var s=0;return o[7736]|0||(oxe(9640),tr(25,9640,U|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function Jbe(s,l){s=s|0,l=l|0,exe(l,s,s+8|0)|0}function zbe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(16)|0,n[k>>2]=n[s>>2],n[k+4>>2]=n[s+4>>2],n[k+8>>2]=n[s+8>>2],n[k+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(s,m,d),n[f>>2]=s,C=c,l|0}function KF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function Xbe(s){s=s|0,zm(s),gt(s)}function Zbe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function $be(s){s=s|0,gt(s)}function exe(s,l,c){return s=s|0,l=l|0,c=c|0,l=txe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function txe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=C,C=C+16|0,d=f,Ka(d),s=da(s)|0,c=rxe(s,n[l>>2]|0,+E[c>>3])|0,Va(d),C=f,c|0}function rxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Sl(nxe()|0)|0,l=DF(l)|0,ml(0,f|0,s|0,l|0,+ +JA(c))|0}function nxe(){var s=0;return o[7728]|0||(ixe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function ixe(s){s=s|0,Pl(s,sxe()|0,2)}function sxe(){return 1264}function oxe(s){s=s|0,vp(s)}function axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],lxe(s,c,d,1),C=f}function lxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=VF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=cxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,uxe(m,f)|0,f),C=d}function VF(){var s=0,l=0;if(o[7744]|0||(N5(9684),tr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));N5(9684)}return 9684}function cxe(s){return s=s|0,0}function uxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=VF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Axe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function T5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=fxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,pxe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,hxe(s,k),gxe(k),C=M;return}}function fxe(s){return s=s|0,357913941}function pxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function hxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function gxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function N5(s){s=s|0,yxe(s)}function dxe(s){s=s|0,mxe(s+24|0)}function mxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function yxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,Exe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Exe(){return 1280}function Cxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=wxe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Ixe(l,d,c)|0,C=f,c|0}function wxe(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s*12|0)|0}function Ixe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=C,C=C+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(m,c),m=$A(m,c)|0,Hw[f&15](d,s,m),m=F5(d)|0,C=B,m|0}function Bxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],vxe(s,c,d,1),C=f}function vxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=JF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Dxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Sxe(m,f)|0,f),C=d}function JF(){var s=0,l=0;if(o[7752]|0||(O5(9720),tr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O5(9720)}return 9720}function Dxe(s){return s=s|0,0}function Sxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=JF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],L5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Pxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function L5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Pxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=bxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,xxe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],L5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,kxe(s,k),Qxe(k),C=M;return}}function bxe(s){return s=s|0,357913941}function xxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function kxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Qxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function O5(s){s=s|0,Txe(s)}function Fxe(s){s=s|0,Rxe(s+24|0)}function Rxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Txe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Nxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Nxe(){return 1288}function Lxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Oxe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Mxe(l,f)|0,C=c,l|0}function Oxe(s){return s=s|0,(n[(JF()|0)+24>>2]|0)+(s*12|0)|0}function Mxe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),ZG(Lg[c&31](s)|0)|0}function Uxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],_xe(s,c,d,0),C=f}function _xe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Hxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,qxe(m,f)|0,f),C=d}function zF(){var s=0,l=0;if(o[7760]|0||(U5(9756),tr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));U5(9756)}return 9756}function Hxe(s){return s=s|0,0}function qxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=zF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],M5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function M5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Gxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Yxe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],M5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Wxe(s,k),Kxe(k),C=M;return}}function Gxe(s){return s=s|0,357913941}function Yxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Wxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Kxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function U5(s){s=s|0,zxe(s)}function Vxe(s){s=s|0,Jxe(s+24|0)}function Jxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function zxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Xxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Xxe(){return 1292}function Zxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=$xe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eke(l,d,c),C=f}function $xe(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function eke(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ku(d,c),c=+Qu(d,c),C7[f&31](s,c),C=m}function tke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],rke(s,c,d,0),C=f}function rke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=XF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ike(m,f)|0,f),C=d}function XF(){var s=0,l=0;if(o[7768]|0||(H5(9792),tr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));H5(9792)}return 9792}function nke(s){return s=s|0,0}function ike(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=XF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ske(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function _5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ske(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oke(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,ake(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],_5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lke(s,k),cke(k),C=M;return}}function oke(s){return s=s|0,357913941}function ake(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function H5(s){s=s|0,fke(s)}function uke(s){s=s|0,Ake(s+24|0)}function Ake(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,pke()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pke(){return 1300}function hke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=gke(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],dke(l,m,c,f),C=d}function gke(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s*12|0)|0}function dke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,ku(B,f),f=+Qu(B,f),b7[d&15](s,m,f),C=k}function mke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],yke(s,c,d,0),C=f}function yke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=ZF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Eke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Cke(m,f)|0,f),C=d}function ZF(){var s=0,l=0;if(o[7776]|0||(j5(9828),tr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));j5(9828)}return 9828}function Eke(s){return s=s|0,0}function Cke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=ZF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],q5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function q5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ike(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Bke(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],q5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,vke(s,k),Dke(k),C=M;return}}function Ike(s){return s=s|0,357913941}function Bke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function j5(s){s=s|0,bke(s)}function Ske(s){s=s|0,Pke(s+24|0)}function Pke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,xke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xke(){return 1312}function kke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Qke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Fke(l,d,c),C=f}function Qke(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function Fke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,rf[f&31](s,d),C=m}function Rke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],Tke(s,c,d,0),C=f}function Tke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=$F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Lke(m,f)|0,f),C=d}function $F(){var s=0,l=0;if(o[7784]|0||(Y5(9864),tr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Y5(9864)}return 9864}function Nke(s){return s=s|0,0}function Lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=$F()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],G5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Oke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function G5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Oke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mke(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Uke(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],G5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_ke(s,k),Hke(k),C=M;return}}function Mke(s){return s=s|0,357913941}function Uke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _ke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function Y5(s){s=s|0,Gke(s)}function qke(s){s=s|0,jke(s+24|0)}function jke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Gke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Yke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Yke(){return 1320}function Wke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Kke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Vke(l,d,c),C=f}function Kke(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s*12|0)|0}function Vke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Jke(d,c),d=zke(d,c)|0,rf[f&31](s,d),C=m}function Jke(s,l){s=s|0,l=l|0}function zke(s,l){return s=s|0,l=l|0,Xke(l)|0}function Xke(s){return s=s|0,s|0}function Zke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],$ke(s,c,d,0),C=f}function $ke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=eR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=eQe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,tQe(m,f)|0,f),C=d}function eR(){var s=0,l=0;if(o[7792]|0||(K5(9900),tr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K5(9900)}return 9900}function eQe(s){return s=s|0,0}function tQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=eR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],W5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(rQe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function W5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function rQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=nQe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,iQe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],W5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,sQe(s,k),oQe(k),C=M;return}}function nQe(s){return s=s|0,357913941}function iQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function sQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function oQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function K5(s){s=s|0,cQe(s)}function aQe(s){s=s|0,lQe(s+24|0)}function lQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function cQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,22,l,uQe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function uQe(){return 1344}function AQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=C,C=C+16|0,f=c+8|0,d=c,m=fQe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],pQe(l,f),C=c}function fQe(s){return s=s|0,(n[(eR()|0)+24>>2]|0)+(s*12|0)|0}function pQe(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),tf[c&127](s)}function hQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=tR()|0,s=gQe(c)|0,hn(m,l,d,s,dQe(c,f)|0,f)}function tR(){var s=0,l=0;if(o[7800]|0||(J5(9936),tr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));J5(9936)}return 9936}function gQe(s){return s=s|0,s|0}function dQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=tR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(V5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(mQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function V5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function mQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=yQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,EQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,V5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,CQe(s,d),wQe(d),C=k;return}}function yQe(s){return s=s|0,536870911}function EQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function CQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function J5(s){s=s|0,vQe(s)}function IQe(s){s=s|0,BQe(s+24|0)}function BQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function vQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,23,l,B5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DQe(s,l){s=s|0,l=l|0,PQe(n[(SQe(s)|0)>>2]|0,l)}function SQe(s){return s=s|0,(n[(tR()|0)+24>>2]|0)+(s<<3)|0}function PQe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,HF(f,l),l=qF(f,l)|0,tf[s&127](l),C=c}function bQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=rR()|0,s=xQe(c)|0,hn(m,l,d,s,kQe(c,f)|0,f)}function rR(){var s=0,l=0;if(o[7808]|0||(X5(9972),tr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X5(9972)}return 9972}function xQe(s){return s=s|0,s|0}function kQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=rR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(z5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(QQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function z5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function QQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=FQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,RQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,z5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,TQe(s,d),NQe(d),C=k;return}}function FQe(s){return s=s|0,536870911}function RQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function TQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function NQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function X5(s){s=s|0,MQe(s)}function LQe(s){s=s|0,OQe(s+24|0)}function OQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function MQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,9,l,UQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function UQe(){return 1348}function _Qe(s,l){return s=s|0,l=l|0,qQe(n[(HQe(s)|0)>>2]|0,l)|0}function HQe(s){return s=s|0,(n[(rR()|0)+24>>2]|0)+(s<<3)|0}function qQe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Z5(f,l),l=$5(f,l)|0,l=sD(Lg[s&31](l)|0)|0,C=c,l|0}function Z5(s,l){s=s|0,l=l|0}function $5(s,l){return s=s|0,l=l|0,jQe(l)|0}function jQe(s){return s=s|0,s|0}function GQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=nR()|0,s=YQe(c)|0,hn(m,l,d,s,WQe(c,f)|0,f)}function nR(){var s=0,l=0;if(o[7816]|0||(t9(10008),tr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t9(10008)}return 10008}function YQe(s){return s=s|0,s|0}function WQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=nR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(e9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(KQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function e9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function KQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=VQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,JQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,e9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,zQe(s,d),XQe(d),C=k;return}}function VQe(s){return s=s|0,536870911}function JQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function zQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function XQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function t9(s){s=s|0,eFe(s)}function ZQe(s){s=s|0,$Qe(s+24|0)}function $Qe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function eFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,15,l,m5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function tFe(s){return s=s|0,nFe(n[(rFe(s)|0)>>2]|0)|0}function rFe(s){return s=s|0,(n[(nR()|0)+24>>2]|0)+(s<<3)|0}function nFe(s){return s=s|0,sD(CD[s&7]()|0)|0}function iFe(){var s=0;return o[7832]|0||(fFe(10052),tr(25,10052,U|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function sFe(s,l){s=s|0,l=l|0,n[s>>2]=oFe()|0,n[s+4>>2]=aFe()|0,n[s+12>>2]=l,n[s+8>>2]=lFe()|0,n[s+32>>2]=2}function oFe(){return 11709}function aFe(){return 1188}function lFe(){return aD()|0}function cFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(uFe(c),gt(c)):l|0&&(Su(l),gt(l))}function bp(s,l){return s=s|0,l=l|0,l&s|0}function uFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function aD(){var s=0;return o[7824]|0||(n[2511]=AFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function AFe(){return 0}function fFe(s){s=s|0,vp(s)}function pFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=C,C=C+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,hFe(s,4827),gFe(s,4834,3)|0,dFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],mFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],yFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],EFe(s,4891,c)|0,C=l}function hFe(s,l){s=s|0,l=l|0;var c=0;c=XRe()|0,n[s>>2]=c,ZRe(c,l),xp(n[s>>2]|0)}function gFe(s,l,c){return s=s|0,l=l|0,c=c|0,NRe(s,pn(l)|0,c,0),s|0}function dFe(s,l,c){return s=s|0,l=l|0,c=c|0,CRe(s,pn(l)|0,c,0),s|0}function mFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tRe(s,l,d),C=f,s|0}function yFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LFe(s,l,d),C=f,s|0}function EFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],CFe(s,l,d),C=f,s|0}function CFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],wFe(s,c,d,1),C=f}function wFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=iR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=IFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,BFe(m,f)|0,f),C=d}function iR(){var s=0,l=0;if(o[7840]|0||(n9(10100),tr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));n9(10100)}return 10100}function IFe(s){return s=s|0,0}function BFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=iR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],r9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(vFe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function r9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function vFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=DFe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,SFe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],r9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,PFe(s,k),bFe(k),C=M;return}}function DFe(s){return s=s|0,357913941}function SFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function PFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function bFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function n9(s){s=s|0,QFe(s)}function xFe(s){s=s|0,kFe(s+24|0)}function kFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function QFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,FFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function FFe(){return 1364}function RFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=TFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=NFe(l,d,c)|0,C=f,c|0}function TFe(s){return s=s|0,(n[(iR()|0)+24>>2]|0)+(s*12|0)|0}function NFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,d=u5(RR[f&15](s,d)|0)|0,C=m,d|0}function LFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],OFe(s,c,d,0),C=f}function OFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=sR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=MFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,UFe(m,f)|0,f),C=d}function sR(){var s=0,l=0;if(o[7848]|0||(s9(10136),tr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));s9(10136)}return 10136}function MFe(s){return s=s|0,0}function UFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=sR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],i9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(_Fe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function i9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function _Fe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=HFe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,qFe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],i9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,jFe(s,k),GFe(k),C=M;return}}function HFe(s){return s=s|0,357913941}function qFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function jFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function GFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function s9(s){s=s|0,KFe(s)}function YFe(s){s=s|0,WFe(s+24|0)}function WFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function KFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,9,l,VFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VFe(){return 1372}function JFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=zFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XFe(l,d,c),C=f}function zFe(s){return s=s|0,(n[(sR()|0)+24>>2]|0)+(s*12|0)|0}function XFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=Ze;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZFe(d,c),B=y($Fe(d,c)),E7[f&1](s,B),C=m}function ZFe(s,l){s=s|0,l=+l}function $Fe(s,l){return s=s|0,l=+l,y(eRe(l))}function eRe(s){return s=+s,y(s)}function tRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],rRe(s,c,d,0),C=f}function rRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=oR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nRe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,iRe(m,f)|0,f),C=d}function oR(){var s=0,l=0;if(o[7856]|0||(a9(10172),tr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a9(10172)}return 10172}function nRe(s){return s=s|0,0}function iRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=oR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sRe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oRe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,aRe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lRe(s,k),cRe(k),C=M;return}}function oRe(s){return s=s|0,357913941}function aRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function a9(s){s=s|0,fRe(s)}function uRe(s){s=s|0,ARe(s+24|0)}function ARe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,pRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pRe(){return 1380}function hRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=gRe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],dRe(l,m,c,f),C=d}function gRe(s){return s=s|0,(n[(oR()|0)+24>>2]|0)+(s*12|0)|0}function dRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,mRe(B,f),B=yRe(B,f)|0,Hw[d&15](s,m,B),C=k}function mRe(s,l){s=s|0,l=l|0}function yRe(s,l){return s=s|0,l=l|0,ERe(l)|0}function ERe(s){return s=s|0,(s|0)!=0|0}function CRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=aR()|0,s=wRe(c)|0,hn(m,l,d,s,IRe(c,f)|0,f)}function aR(){var s=0,l=0;if(o[7864]|0||(c9(10208),tr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c9(10208)}return 10208}function wRe(s){return s=s|0,s|0}function IRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=aR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(l9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(BRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function l9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function BRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=vRe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,DRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,l9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,SRe(s,d),PRe(d),C=k;return}}function vRe(s){return s=s|0,536870911}function DRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function SRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function PRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function c9(s){s=s|0,kRe(s)}function bRe(s){s=s|0,xRe(s+24|0)}function xRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function kRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,24,l,QRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function QRe(){return 1392}function FRe(s,l){s=s|0,l=l|0,TRe(n[(RRe(s)|0)>>2]|0,l)}function RRe(s){return s=s|0,(n[(aR()|0)+24>>2]|0)+(s<<3)|0}function TRe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Z5(f,l),l=$5(f,l)|0,tf[s&127](l),C=c}function NRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=lR()|0,s=LRe(c)|0,hn(m,l,d,s,ORe(c,f)|0,f)}function lR(){var s=0,l=0;if(o[7872]|0||(A9(10244),tr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));A9(10244)}return 10244}function LRe(s){return s=s|0,s|0}function ORe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=lR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(u9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(MRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function u9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function MRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=URe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,_Re(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,u9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,HRe(s,d),qRe(d),C=k;return}}function URe(s){return s=s|0,536870911}function _Re(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function HRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function qRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function A9(s){s=s|0,YRe(s)}function jRe(s){s=s|0,GRe(s+24|0)}function GRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function YRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,16,l,WRe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function WRe(){return 1400}function KRe(s){return s=s|0,JRe(n[(VRe(s)|0)>>2]|0)|0}function VRe(s){return s=s|0,(n[(lR()|0)+24>>2]|0)+(s<<3)|0}function JRe(s){return s=s|0,zRe(CD[s&7]()|0)|0}function zRe(s){return s=s|0,s|0}function XRe(){var s=0;return o[7880]|0||(iTe(10280),tr(25,10280,U|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function ZRe(s,l){s=s|0,l=l|0,n[s>>2]=$Re()|0,n[s+4>>2]=eTe()|0,n[s+12>>2]=l,n[s+8>>2]=tTe()|0,n[s+32>>2]=4}function $Re(){return 11711}function eTe(){return 1356}function tTe(){return aD()|0}function rTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(nTe(c),gt(c)):l|0&&(Dg(l),gt(l))}function nTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function iTe(s){s=s|0,vp(s)}function sTe(s){s=s|0,oTe(s,4920),aTe(s)|0,lTe(s)|0}function oTe(s,l){s=s|0,l=l|0;var c=0;c=R5()|0,n[s>>2]=c,xTe(c,l),xp(n[s>>2]|0)}function aTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,ETe()|0),s|0}function lTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,cTe()|0),s|0}function cTe(){var s=0;return o[7888]|0||(f9(10328),tr(53,10328,U|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),Tr(10328)|0||f9(10328),10328}function kg(s,l){s=s|0,l=l|0,hn(s,0,l,0,0,0)}function f9(s){s=s|0,fTe(s),Qg(s,10)}function uTe(s){s=s|0,ATe(s+24|0)}function ATe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function fTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,dTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pTe(s,l,c){s=s|0,l=l|0,c=+c,hTe(s,l,c)}function Qg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function hTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,m=f+8|0,k=f+13|0,d=f,B=f+12|0,ZA(k,l),n[m>>2]=$A(k,l)|0,ku(B,c),E[d>>3]=+Qu(B,c),gTe(s,m,d),C=f}function gTe(s,l,c){s=s|0,l=l|0,c=c|0,Y(s+8|0,n[l>>2]|0,+E[c>>3]),o[s+24>>0]=1}function dTe(){return 1404}function mTe(s,l){return s=s|0,l=+l,yTe(s,l)|0}function yTe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,m=f+4|0,B=f+8|0,k=f,d=Wa(8)|0,c=d,Q=Kt(16)|0,ZA(m,s),s=$A(m,s)|0,ku(B,l),Y(Q,s,+Qu(B,l)),B=c+4|0,n[B>>2]=Q,s=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],KF(s,B,m),n[d>>2]=s,C=f,c|0}function ETe(){var s=0;return o[7896]|0||(p9(10364),tr(54,10364,U|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),Tr(10364)|0||p9(10364),10364}function p9(s){s=s|0,ITe(s),Qg(s,55)}function CTe(s){s=s|0,wTe(s+24|0)}function wTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function ITe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,4,l,STe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BTe(s){s=s|0,vTe(s)}function vTe(s){s=s|0,DTe(s)}function DTe(s){s=s|0,h9(s+8|0),o[s+24>>0]=1}function h9(s){s=s|0,n[s>>2]=0,E[s+8>>3]=0}function STe(){return 1424}function PTe(){return bTe()|0}function bTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,h9(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(f,m,d),n[c>>2]=f,C=l,s|0}function xTe(s,l){s=s|0,l=l|0,n[s>>2]=kTe()|0,n[s+4>>2]=QTe()|0,n[s+12>>2]=l,n[s+8>>2]=FTe()|0,n[s+32>>2]=5}function kTe(){return 11710}function QTe(){return 1416}function FTe(){return lD()|0}function RTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(TTe(c),gt(c)):l|0&&gt(l)}function TTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function lD(){var s=0;return o[7904]|0||(n[2600]=NTe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function NTe(){return n[357]|0}function LTe(s){s=s|0,OTe(s,4926),MTe(s)|0}function OTe(s,l){s=s|0,l=l|0;var c=0;c=r5()|0,n[s>>2]=c,JTe(c,l),xp(n[s>>2]|0)}function MTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,UTe()|0),s|0}function UTe(){var s=0;return o[7912]|0||(g9(10412),tr(56,10412,U|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),Tr(10412)|0||g9(10412),10412}function g9(s){s=s|0,qTe(s),Qg(s,57)}function _Te(s){s=s|0,HTe(s+24|0)}function HTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function qTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,5,l,WTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jTe(s){s=s|0,GTe(s)}function GTe(s){s=s|0,YTe(s)}function YTe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function WTe(){return 1432}function KTe(){return VTe()|0}function VTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0;B=C,C=C+16|0,s=B+4|0,l=B,c=Wa(8)|0,f=c,d=Kt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=f+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],n5(k,m,s),n[c>>2]=k,C=B,f|0}function JTe(s,l){s=s|0,l=l|0,n[s>>2]=zTe()|0,n[s+4>>2]=XTe()|0,n[s+12>>2]=l,n[s+8>>2]=ZTe()|0,n[s+32>>2]=6}function zTe(){return 11704}function XTe(){return 1436}function ZTe(){return lD()|0}function $Te(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(eNe(c),gt(c)):l|0&&gt(l)}function eNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function tNe(s){s=s|0,rNe(s,4933),nNe(s)|0,iNe(s)|0}function rNe(s,l){s=s|0,l=l|0;var c=0;c=bNe()|0,n[s>>2]=c,xNe(c,l),xp(n[s>>2]|0)}function nNe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,yNe()|0),s|0}function iNe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,sNe()|0),s|0}function sNe(){var s=0;return o[7920]|0||(d9(10452),tr(58,10452,U|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),Tr(10452)|0||d9(10452),10452}function d9(s){s=s|0,lNe(s),Qg(s,1)}function oNe(s){s=s|0,aNe(s+24|0)}function aNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function lNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,fNe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cNe(s,l,c){s=s|0,l=+l,c=+c,uNe(s,l,c)}function uNe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,m=f+8|0,k=f+17|0,d=f,B=f+16|0,ku(k,l),E[m>>3]=+Qu(k,l),ku(B,c),E[d>>3]=+Qu(B,c),ANe(s,m,d),C=f}function ANe(s,l,c){s=s|0,l=l|0,c=c|0,m9(s+8|0,+E[l>>3],+E[c>>3]),o[s+24>>0]=1}function m9(s,l,c){s=s|0,l=+l,c=+c,E[s>>3]=l,E[s+8>>3]=c}function fNe(){return 1472}function pNe(s,l){return s=+s,l=+l,hNe(s,l)|0}function hNe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,B=f+4|0,k=f+8|0,Q=f,d=Wa(8)|0,c=d,m=Kt(16)|0,ku(B,s),s=+Qu(B,s),ku(k,l),m9(m,s,+Qu(k,l)),k=c+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[Q>>2]=0,n[B>>2]=n[Q>>2],y9(m,k,B),n[d>>2]=m,C=f,c|0}function y9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function gNe(s){s=s|0,zm(s),gt(s)}function dNe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function mNe(s){s=s|0,gt(s)}function yNe(){var s=0;return o[7928]|0||(E9(10488),tr(59,10488,U|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),Tr(10488)|0||E9(10488),10488}function E9(s){s=s|0,wNe(s),Qg(s,60)}function ENe(s){s=s|0,CNe(s+24|0)}function CNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function wNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,6,l,DNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function INe(s){s=s|0,BNe(s)}function BNe(s){s=s|0,vNe(s)}function vNe(s){s=s|0,C9(s+8|0),o[s+24>>0]=1}function C9(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function DNe(){return 1492}function SNe(){return PNe()|0}function PNe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,C9(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],y9(f,m,d),n[c>>2]=f,C=l,s|0}function bNe(){var s=0;return o[7936]|0||(NNe(10524),tr(25,10524,U|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function xNe(s,l){s=s|0,l=l|0,n[s>>2]=kNe()|0,n[s+4>>2]=QNe()|0,n[s+12>>2]=l,n[s+8>>2]=FNe()|0,n[s+32>>2]=7}function kNe(){return 11700}function QNe(){return 1484}function FNe(){return lD()|0}function RNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(TNe(c),gt(c)):l|0&&gt(l)}function TNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function NNe(s){s=s|0,vp(s)}function LNe(s,l,c){s=s|0,l=l|0,c=c|0,s=pn(l)|0,l=ONe(c)|0,c=MNe(c,0)|0,hLe(s,l,c,cR()|0,0)}function ONe(s){return s=s|0,s|0}function MNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=cR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(I9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(YNe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function cR(){var s=0,l=0;if(o[7944]|0||(w9(10568),tr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));w9(10568)}return 10568}function w9(s){s=s|0,HNe(s)}function UNe(s){s=s|0,_Ne(s+24|0)}function _Ne(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function HNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,17,l,C5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qNe(s){return s=s|0,GNe(n[(jNe(s)|0)>>2]|0)|0}function jNe(s){return s=s|0,(n[(cR()|0)+24>>2]|0)+(s<<3)|0}function GNe(s){return s=s|0,oD(CD[s&7]()|0)|0}function I9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function YNe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=WNe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,KNe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,I9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,VNe(s,d),JNe(d),C=k;return}}function WNe(s){return s=s|0,536870911}function KNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function VNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function JNe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function zNe(){XNe()}function XNe(){ZNe(10604)}function ZNe(s){s=s|0,$Ne(s,4955)}function $Ne(s,l){s=s|0,l=l|0;var c=0;c=eLe()|0,n[s>>2]=c,tLe(c,l),xp(n[s>>2]|0)}function eLe(){var s=0;return o[7952]|0||(uLe(10612),tr(25,10612,U|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function tLe(s,l){s=s|0,l=l|0,n[s>>2]=sLe()|0,n[s+4>>2]=oLe()|0,n[s+12>>2]=l,n[s+8>>2]=aLe()|0,n[s+32>>2]=8}function xp(s){s=s|0;var l=0,c=0;l=C,C=C+16|0,c=l,Ym()|0,n[c>>2]=s,rLe(10608,c),C=l}function Ym(){return o[11714]|0||(n[2652]=0,tr(62,10608,U|0)|0,o[11714]=1),10608}function rLe(s,l){s=s|0,l=l|0;var c=0;c=Kt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function nLe(s){s=s|0,iLe(s)}function iLe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function sLe(){return 11715}function oLe(){return 1496}function aLe(){return aD()|0}function lLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(cLe(c),gt(c)):l|0&&gt(l)}function cLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function uLe(s){s=s|0,vp(s)}function ALe(s,l){s=s|0,l=l|0;var c=0,f=0;Ym()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(n7(uR(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;fLe(f,l)}while(0)}function uR(s){return s=s|0,n[s+12>>2]|0}function fLe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(jA(c),gt(c)),c=Kt(4)|0,zG(c,l),n[s>>2]=c}function AR(){return o[11716]|0||(n[2664]=0,tr(63,10656,U|0)|0,o[11716]=1),10656}function B9(){var s=0;return o[11717]|0?s=n[2665]|0:(pLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function pLe(){o[11740]|0||(o[11718]=gr(gr(8,0)|0,0)|0,o[11719]=gr(gr(0,0)|0,0)|0,o[11720]=gr(gr(0,16)|0,0)|0,o[11721]=gr(gr(8,0)|0,0)|0,o[11722]=gr(gr(0,0)|0,0)|0,o[11723]=gr(gr(8,0)|0,0)|0,o[11724]=gr(gr(0,0)|0,0)|0,o[11725]=gr(gr(8,0)|0,0)|0,o[11726]=gr(gr(0,0)|0,0)|0,o[11727]=gr(gr(8,0)|0,0)|0,o[11728]=gr(gr(0,0)|0,0)|0,o[11729]=gr(gr(0,0)|0,32)|0,o[11730]=gr(gr(0,0)|0,32)|0,o[11740]=1)}function v9(){return 1572}function hLe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0;m=C,C=C+32|0,O=m+16|0,M=m+12|0,Q=m+8|0,k=m+4|0,B=m,n[O>>2]=s,n[M>>2]=l,n[Q>>2]=c,n[k>>2]=f,n[B>>2]=d,AR()|0,gLe(10656,O,M,Q,k,B),C=m}function gLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,$G(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function D9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0;if(lt=C,C=C+32|0,Me=lt+20|0,Qe=lt+8|0,et=lt+4|0,Xe=lt,l=n[l>>2]|0,l|0){Ge=Me+4|0,Q=Me+8|0,M=Qe+4|0,O=Qe+8|0,j=Qe+8|0,se=Me+8|0;do{if(B=l+4|0,k=fR(B)|0,k|0){if(d=Nw(k)|0,n[Me>>2]=0,n[Ge>>2]=0,n[Q>>2]=0,f=(Lw(k)|0)+1|0,dLe(Me,f),f|0)for(;f=f+-1|0,bc(Qe,n[d>>2]|0),m=n[Ge>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[Ge>>2]=(n[Ge>>2]|0)+4):pR(Me,Qe),f;)d=d+4|0;f=Ow(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[O>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?mLe(Qe,f):(n[d>>2]=n[f>>2],n[M>>2]=(n[M>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[M>>2]|0,m=n[j>>2]|0}while(0);n[et>>2]=cD(B)|0,n[Xe>>2]=Tr(k)|0,yLe(c,s,et,Xe,Me,Qe),hR(Qe),ef(Me)}l=n[l>>2]|0}while((l|0)!=0)}C=lt}function fR(s){return s=s|0,n[s+12>>2]|0}function Nw(s){return s=s|0,n[s+12>>2]|0}function Lw(s){return s=s|0,n[s+16>>2]|0}function dLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0<l>>>0&&(R9(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),T9(s,c),N9(c)),C=d}function pR(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=F9(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,R9(c,M>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,T9(s,c),N9(c),C=B;return}}function Ow(s){return s=s|0,n[s+8>>2]|0}function mLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=Q9(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,OLe(c,M>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,MLe(s,c),ULe(c),C=B;return}}function cD(s){return s=s|0,n[s>>2]|0}function yLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,ELe(s,l,c,f,d,m)}function hR(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ef(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ELe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0;B=C,C=C+48|0,O=B+40|0,k=B+32|0,j=B+24|0,Q=B+12|0,M=B,Ka(k),s=da(s)|0,n[j>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,gR(Q,d),CLe(M,m),n[O>>2]=n[j>>2],wLe(s,O,c,f,Q,M),hR(M),ef(Q),Va(k),C=B}function gR(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(NLe(s,f),LLe(s,n[l>>2]|0,n[c>>2]|0,f))}function CLe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(RLe(s,f),TLe(s,n[l>>2]|0,n[c>>2]|0,f))}function wLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0;B=C,C=C+32|0,O=B+28|0,j=B+24|0,k=B+12|0,Q=B,M=Sl(ILe()|0)|0,n[j>>2]=n[l>>2],n[O>>2]=n[j>>2],l=Fg(O)|0,c=S9(c)|0,f=dR(f)|0,n[k>>2]=n[d>>2],O=d+4|0,n[k+4>>2]=n[O>>2],j=d+8|0,n[k+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[d>>2]=0,d=mR(k)|0,n[Q>>2]=n[m>>2],O=m+4|0,n[Q+4>>2]=n[O>>2],j=m+8|0,n[Q+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[m>>2]=0,ao(0,M|0,s|0,l|0,c|0,f|0,d|0,BLe(Q)|0)|0,hR(Q),ef(k),C=B}function ILe(){var s=0;return o[7968]|0||(QLe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function Fg(s){return s=s|0,b9(s)|0}function S9(s){return s=s|0,P9(s)|0}function dR(s){return s=s|0,oD(s)|0}function mR(s){return s=s|0,DLe(s)|0}function BLe(s){return s=s|0,vLe(s)|0}function vLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=P9(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function P9(s){return s=s|0,s|0}function DLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=b9((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function b9(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(x9()|0)|0,f?(kF(l,f),QF(c,l),aUe(s,c),s=FF(l)|0):s=SLe(s)|0,C=d,s|0}function x9(){var s=0;return o[7960]|0||(kLe(10664),tr(25,10664,U|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function SLe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,n[k>>2]=n[s>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k9(s,m,d),n[f>>2]=s,C=c,l|0}function k9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function PLe(s){s=s|0,zm(s),gt(s)}function bLe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function xLe(s){s=s|0,gt(s)}function kLe(s){s=s|0,vp(s)}function QLe(s){s=s|0,Pl(s,FLe()|0,5)}function FLe(){return 1676}function RLe(s,l){s=s|0,l=l|0;var c=0;if((Q9(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function TLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function Q9(s){return s=s|0,1073741823}function NLe(s,l){s=s|0,l=l|0;var c=0;if((F9(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function LLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function F9(s){return s=s|0,1073741823}function OLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function MLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ULe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function R9(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function T9(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function N9(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function _Le(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0;if(Qe=C,C=C+32|0,O=Qe+20|0,j=Qe+12|0,M=Qe+16|0,se=Qe+4|0,Ge=Qe,Me=Qe+8|0,k=B9()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(Q=n[k+8>>2]|0,k=n[k+4>>2]|0;bc(O,B),HLe(s,O,k,Q),m=m+4|0,B=n[m>>2]|0,B;)Q=Q+1|0,k=k+1|0;if(m=v9()|0,B=n[m>>2]|0,B|0)do bc(O,B),n[j>>2]=n[m+4>>2],qLe(l,O,j),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(Ym()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bc(O,n[(Wm(l)|0)>>2]|0),n[j>>2]=uR(l)|0,jLe(c,O,j),m=n[m>>2]|0;while((m|0)!=0);if(bc(M,0),m=AR()|0,n[O>>2]=n[M>>2],D9(O,m,d),m=n[(Ym()|0)>>2]|0,m|0){s=O+4|0,l=O+8|0,c=O+8|0;do{if(Q=n[m+4>>2]|0,bc(j,n[(Wm(Q)|0)>>2]|0),GLe(se,L9(Q)|0),B=n[se>>2]|0,B|0){n[O>>2]=0,n[s>>2]=0,n[l>>2]=0;do bc(Ge,n[(Wm(n[B+4>>2]|0)|0)>>2]|0),k=n[s>>2]|0,k>>>0<(n[c>>2]|0)>>>0?(n[k>>2]=n[Ge>>2],n[s>>2]=(n[s>>2]|0)+4):pR(O,Ge),B=n[B>>2]|0;while((B|0)!=0);YLe(f,j,O),ef(O)}n[Me>>2]=n[j>>2],M=O9(Q)|0,n[O>>2]=n[Me>>2],D9(O,M,d),s5(se),m=n[m>>2]|0}while((m|0)!=0)}C=Qe}function HLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,nOe(s,l,c,f)}function qLe(s,l,c){s=s|0,l=l|0,c=c|0,rOe(s,l,c)}function Wm(s){return s=s|0,s|0}function jLe(s,l,c){s=s|0,l=l|0,c=c|0,ZLe(s,l,c)}function L9(s){return s=s|0,s+16|0}function GLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(m=C,C=C+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=XLe(c)|0,f|0){if(f=Kt(12)|0,B=(M9(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Kt(12)|0,Q=(M9(d)|0)+4|0,k=n[Q+4>>2]|0,B=s+4|0,n[B>>2]=n[Q>>2],n[B+4>>2]=k,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}C=m}function YLe(s,l,c){s=s|0,l=l|0,c=c|0,WLe(s,l,c)}function O9(s){return s=s|0,s+24|0}function WLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+24|0,d=f+16|0,k=f+12|0,m=f,Ka(d),s=da(s)|0,n[k>>2]=n[l>>2],gR(m,c),n[B>>2]=n[k>>2],KLe(s,B,m),ef(m),Va(d),C=f}function KLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+16|0,k=f+12|0,d=f,m=Sl(VLe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],k=c+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[c>>2]=0,oo(0,m|0,s|0,l|0,mR(d)|0)|0,ef(d),C=f}function VLe(){var s=0;return o[7976]|0||(JLe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function JLe(s){s=s|0,Pl(s,zLe()|0,2)}function zLe(){return 1732}function XLe(s){return s=s|0,n[s>>2]|0}function M9(s){return s=s|0,n[s>>2]|0}function ZLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U9(s,m,c),Va(d),C=f}function U9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+4|0,B=f,d=Sl($Le()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Fg(m)|0,oo(0,d|0,s|0,l|0,S9(c)|0)|0,C=f}function $Le(){var s=0;return o[7984]|0||(eOe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function eOe(s){s=s|0,Pl(s,tOe()|0,2)}function tOe(){return 1744}function rOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U9(s,m,c),Va(d),C=f}function nOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),s=da(s)|0,n[k>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[k>>2],iOe(s,B,c,f),Va(m),C=d}function iOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,B=d+4|0,k=d,m=Sl(sOe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,c=Km(c)|0,pc(0,m|0,s|0,l|0,c|0,Km(f)|0)|0,C=d}function sOe(){var s=0;return o[7992]|0||(aOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Km(s){return s=s|0,oOe(s)|0}function oOe(s){return s=s|0,s&255|0}function aOe(s){s=s|0,Pl(s,lOe()|0,3)}function lOe(){return 1756}function cOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;switch(se=C,C=C+32|0,k=se+8|0,Q=se+4|0,M=se+20|0,O=se,LF(s,0),f=oUe(l)|0,n[k>>2]=0,j=k+4|0,n[j>>2]=0,n[k+8>>2]=0,f<<24>>24){case 0:{o[M>>0]=0,uOe(Q,c,M),uD(s,Q)|0,GA(Q);break}case 8:{j=BR(l)|0,o[M>>0]=8,bc(O,n[j+4>>2]|0),AOe(Q,c,M,O,j+8|0),uD(s,Q)|0,GA(Q);break}case 9:{if(m=BR(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,bc(Q,n[d>>2]|0),f=n[j>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[Q>>2],n[j>>2]=(n[j>>2]|0)+4):pR(k,Q),l;)d=d+4|0;o[M>>0]=9,bc(O,n[m+8>>2]|0),fOe(Q,c,M,O,k),uD(s,Q)|0,GA(Q);break}default:j=BR(l)|0,o[M>>0]=f,bc(O,n[j+4>>2]|0),pOe(Q,c,M,O),uD(s,Q)|0,GA(Q)}ef(k),C=se}function uOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ka(d),l=da(l)|0,SOe(s,l,o[c>>0]|0),Va(d),C=f}function uD(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&PA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function AOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+32|0,k=m+16|0,B=m+8|0,Q=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],d=n[d>>2]|0,n[k>>2]=n[Q>>2],IOe(s,l,c,k,d),Va(B),C=m}function fOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+24|0,B=m+16|0,M=m+12|0,k=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[M>>2]=n[f>>2],gR(k,d),n[Q>>2]=n[M>>2],yOe(s,l,c,Q,k),ef(k),Va(B),C=m}function pOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),l=da(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],n[B>>2]=n[k>>2],hOe(s,l,c,B),Va(m),C=d}function hOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+4|0,k=d,B=Sl(gOe()|0)|0,c=Km(c)|0,n[k>>2]=n[f>>2],n[m>>2]=n[k>>2],AD(s,oo(0,B|0,l|0,c|0,Fg(m)|0)|0),C=d}function gOe(){var s=0;return o[8e3]|0||(dOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function AD(s,l){s=s|0,l=l|0,LF(s,l)}function dOe(s){s=s|0,Pl(s,mOe()|0,2)}function mOe(){return 1772}function yOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+16|0,M=m+12|0,B=m,k=Sl(EOe()|0)|0,c=Km(c)|0,n[M>>2]=n[f>>2],n[Q>>2]=n[M>>2],f=Fg(Q)|0,n[B>>2]=n[d>>2],Q=d+4|0,n[B+4>>2]=n[Q>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[Q>>2]=0,n[d>>2]=0,AD(s,pc(0,k|0,l|0,c|0,f|0,mR(B)|0)|0),ef(B),C=m}function EOe(){var s=0;return o[8008]|0||(COe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function COe(s){s=s|0,Pl(s,wOe()|0,3)}function wOe(){return 1784}function IOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,k=m+4|0,Q=m,B=Sl(BOe()|0)|0,c=Km(c)|0,n[Q>>2]=n[f>>2],n[k>>2]=n[Q>>2],f=Fg(k)|0,AD(s,pc(0,B|0,l|0,c|0,f|0,dR(d)|0)|0),C=m}function BOe(){var s=0;return o[8016]|0||(vOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function vOe(s){s=s|0,Pl(s,DOe()|0,3)}function DOe(){return 1800}function SOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Sl(POe()|0)|0,AD(s,Qn(0,f|0,l|0,Km(c)|0)|0)}function POe(){var s=0;return o[8024]|0||(bOe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function bOe(s){s=s|0,Pl(s,xOe()|0,1)}function xOe(){return 1816}function kOe(){QOe(),FOe(),ROe()}function QOe(){n[2702]=p7(65536)|0}function FOe(){$Oe(10856)}function ROe(){TOe(10816)}function TOe(s){s=s|0,NOe(s,5044),LOe(s)|0}function NOe(s,l){s=s|0,l=l|0;var c=0;c=x9()|0,n[s>>2]=c,KOe(c,l),xp(n[s>>2]|0)}function LOe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,OOe()|0),s|0}function OOe(){var s=0;return o[8032]|0||(_9(10820),tr(64,10820,U|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),Tr(10820)|0||_9(10820),10820}function _9(s){s=s|0,_Oe(s),Qg(s,25)}function MOe(s){s=s|0,UOe(s+24|0)}function UOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function _Oe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,18,l,GOe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function HOe(s,l){s=s|0,l=l|0,qOe(s,l)}function qOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=C,C=C+16|0,f=c,d=c+4|0,bg(d,l),n[f>>2]=xg(d,l)|0,jOe(s,f),C=c}function jOe(s,l){s=s|0,l=l|0,H9(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function H9(s,l){s=s|0,l=l|0,n[s>>2]=l}function GOe(){return 1824}function YOe(s){return s=s|0,WOe(s)|0}function WOe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,bg(d,s),H9(k,xg(d,s)|0),m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k9(s,m,d),n[f>>2]=s,C=c,l|0}function Wa(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=p7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function KOe(s,l){s=s|0,l=l|0,n[s>>2]=VOe()|0,n[s+4>>2]=JOe()|0,n[s+12>>2]=l,n[s+8>>2]=zOe()|0,n[s+32>>2]=9}function VOe(){return 11744}function JOe(){return 1832}function zOe(){return lD()|0}function XOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(ZOe(c),gt(c)):l|0&&gt(l)}function ZOe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function $Oe(s){s=s|0,eMe(s,5052),tMe(s)|0,rMe(s,5058,26)|0,nMe(s,5069,1)|0,iMe(s,5077,10)|0,sMe(s,5087,19)|0,oMe(s,5094,27)|0}function eMe(s,l){s=s|0,l=l|0;var c=0;c=Z4e()|0,n[s>>2]=c,$4e(c,l),xp(n[s>>2]|0)}function tMe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,M4e()|0),s|0}function rMe(s,l,c){return s=s|0,l=l|0,c=c|0,C4e(s,pn(l)|0,c,0),s|0}function nMe(s,l,c){return s=s|0,l=l|0,c=c|0,s4e(s,pn(l)|0,c,0),s|0}function iMe(s,l,c){return s=s|0,l=l|0,c=c|0,OMe(s,pn(l)|0,c,0),s|0}function sMe(s,l,c){return s=s|0,l=l|0,c=c|0,IMe(s,pn(l)|0,c,0),s|0}function q9(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}gt(c)}n[2701]=s}function oMe(s,l,c){return s=s|0,l=l|0,c=c|0,aMe(s,pn(l)|0,c,0),s|0}function aMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=yR()|0,s=lMe(c)|0,hn(m,l,d,s,cMe(c,f)|0,f)}function yR(){var s=0,l=0;if(o[8040]|0||(G9(10860),tr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));G9(10860)}return 10860}function lMe(s){return s=s|0,s|0}function cMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=yR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(j9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(uMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function j9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function uMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=AMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,fMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,j9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,pMe(s,d),hMe(d),C=k;return}}function AMe(s){return s=s|0,536870911}function fMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function pMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function G9(s){s=s|0,mMe(s)}function gMe(s){s=s|0,dMe(s+24|0)}function dMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function mMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,yMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yMe(){return 1840}function EMe(s,l,c){s=s|0,l=l|0,c=c|0,wMe(n[(CMe(s)|0)>>2]|0,l,c)}function CMe(s){return s=s|0,(n[(yR()|0)+24>>2]|0)+(s<<3)|0}function wMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+1|0,d=f,bg(m,l),l=xg(m,l)|0,bg(d,c),c=xg(d,c)|0,rf[s&31](l,c),C=f}function IMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=ER()|0,s=BMe(c)|0,hn(m,l,d,s,vMe(c,f)|0,f)}function ER(){var s=0,l=0;if(o[8048]|0||(W9(10896),tr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W9(10896)}return 10896}function BMe(s){return s=s|0,s|0}function vMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=ER()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(Y9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(DMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function Y9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function DMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=SMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,PMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,Y9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,bMe(s,d),xMe(d),C=k;return}}function SMe(s){return s=s|0,536870911}function PMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function bMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function xMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function W9(s){s=s|0,FMe(s)}function kMe(s){s=s|0,QMe(s+24|0)}function QMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function FMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,RMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function RMe(){return 1852}function TMe(s,l){return s=s|0,l=l|0,LMe(n[(NMe(s)|0)>>2]|0,l)|0}function NMe(s){return s=s|0,(n[(ER()|0)+24>>2]|0)+(s<<3)|0}function LMe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,bg(f,l),l=xg(f,l)|0,l=oD(Lg[s&31](l)|0)|0,C=c,l|0}function OMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=CR()|0,s=MMe(c)|0,hn(m,l,d,s,UMe(c,f)|0,f)}function CR(){var s=0,l=0;if(o[8056]|0||(V9(10932),tr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V9(10932)}return 10932}function MMe(s){return s=s|0,s|0}function UMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=CR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(K9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(_Me(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function K9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function _Me(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=HMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,qMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,K9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,jMe(s,d),GMe(d),C=k;return}}function HMe(s){return s=s|0,536870911}function qMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function jMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function GMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function V9(s){s=s|0,KMe(s)}function YMe(s){s=s|0,WMe(s+24|0)}function WMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function KMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,7,l,VMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VMe(){return 1860}function JMe(s,l,c){return s=s|0,l=l|0,c=c|0,XMe(n[(zMe(s)|0)>>2]|0,l,c)|0}function zMe(s){return s=s|0,(n[(CR()|0)+24>>2]|0)+(s<<3)|0}function XMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+32|0,B=f+12|0,m=f+8|0,k=f,Q=f+16|0,d=f+4|0,ZMe(Q,l),$Me(k,Q,l),Dp(d,c),c=Sp(d,c)|0,n[B>>2]=n[k>>2],Hw[s&15](m,B,c),c=e4e(m)|0,GA(m),Pp(d),C=f,c|0}function ZMe(s,l){s=s|0,l=l|0}function $Me(s,l,c){s=s|0,l=l|0,c=c|0,t4e(s,c)}function e4e(s){return s=s|0,da(s)|0}function t4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+16|0,c=d,f=l,f&1?(r4e(c,0),ii(f|0,c|0)|0,n4e(s,c),i4e(c)):n[s>>2]=n[l>>2],C=d}function r4e(s,l){s=s|0,l=l|0,XG(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function n4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function i4e(s){s=s|0,o[s+8>>0]=0}function s4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=wR()|0,s=o4e(c)|0,hn(m,l,d,s,a4e(c,f)|0,f)}function wR(){var s=0,l=0;if(o[8064]|0||(z9(10968),tr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));z9(10968)}return 10968}function o4e(s){return s=s|0,s|0}function a4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=wR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(J9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(l4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function J9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function l4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=c4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,u4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,J9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,A4e(s,d),f4e(d),C=k;return}}function c4e(s){return s=s|0,536870911}function u4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function A4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function f4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function z9(s){s=s|0,g4e(s)}function p4e(s){s=s|0,h4e(s+24|0)}function h4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function g4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,1,l,d4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function d4e(){return 1872}function m4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,E4e(n[(y4e(s)|0)>>2]|0,l,c,f,d,m)}function y4e(s){return s=s|0,(n[(wR()|0)+24>>2]|0)+(s<<3)|0}function E4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0;B=C,C=C+32|0,k=B+16|0,Q=B+12|0,M=B+8|0,O=B+4|0,j=B,Dp(k,l),l=Sp(k,l)|0,Dp(Q,c),c=Sp(Q,c)|0,Dp(M,f),f=Sp(M,f)|0,Dp(O,d),d=Sp(O,d)|0,Dp(j,m),m=Sp(j,m)|0,y7[s&1](l,c,f,d,m),Pp(j),Pp(O),Pp(M),Pp(Q),Pp(k),C=B}function C4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=IR()|0,s=w4e(c)|0,hn(m,l,d,s,I4e(c,f)|0,f)}function IR(){var s=0,l=0;if(o[8072]|0||(Z9(11004),tr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Tr(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Z9(11004)}return 11004}function w4e(s){return s=s|0,s|0}function I4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=IR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(X9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(B4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function X9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function B4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=v4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,D4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,X9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S4e(s,d),P4e(d),C=k;return}}function v4e(s){return s=s|0,536870911}function D4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function S4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function P4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function Z9(s){s=s|0,k4e(s)}function b4e(s){s=s|0,x4e(s+24|0)}function x4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function k4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,12,l,Q4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Q4e(){return 1896}function F4e(s,l,c){s=s|0,l=l|0,c=c|0,T4e(n[(R4e(s)|0)>>2]|0,l,c)}function R4e(s){return s=s|0,(n[(IR()|0)+24>>2]|0)+(s<<3)|0}function T4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+4|0,d=f,N4e(m,l),l=L4e(m,l)|0,Dp(d,c),c=Sp(d,c)|0,rf[s&31](l,c),Pp(d),C=f}function N4e(s,l){s=s|0,l=l|0}function L4e(s,l){return s=s|0,l=l|0,O4e(l)|0}function O4e(s){return s=s|0,s|0}function M4e(){var s=0;return o[8080]|0||($9(11040),tr(70,11040,U|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),Tr(11040)|0||$9(11040),11040}function $9(s){s=s|0,H4e(s),Qg(s,71)}function U4e(s){s=s|0,_4e(s+24|0)}function _4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function H4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,7,l,Y4e()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function q4e(s){s=s|0,j4e(s)}function j4e(s){s=s|0,G4e(s)}function G4e(s){s=s|0,o[s+8>>0]=1}function Y4e(){return 1936}function W4e(){return K4e()|0}function K4e(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,m=s+4|0,n[m>>2]=Kt(1)|0,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],V4e(f,m,d),n[c>>2]=f,C=l,s|0}function V4e(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function J4e(s){s=s|0,zm(s),gt(s)}function z4e(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function X4e(s){s=s|0,gt(s)}function Z4e(){var s=0;return o[8088]|0||(sUe(11076),tr(25,11076,U|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function $4e(s,l){s=s|0,l=l|0,n[s>>2]=eUe()|0,n[s+4>>2]=tUe()|0,n[s+12>>2]=l,n[s+8>>2]=rUe()|0,n[s+32>>2]=10}function eUe(){return 11745}function tUe(){return 1940}function rUe(){return aD()|0}function nUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(iUe(c),gt(c)):l|0&&gt(l)}function iUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function sUe(s){s=s|0,vp(s)}function bc(s,l){s=s|0,l=l|0,n[s>>2]=l}function BR(s){return s=s|0,n[s>>2]|0}function oUe(s){return s=s|0,o[n[s>>2]>>0]|0}function aUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,n[f>>2]=n[s>>2],lUe(l,f)|0,C=c}function lUe(s,l){s=s|0,l=l|0;var c=0;return c=cUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function cUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Ka(f),s=da(s)|0,l=uUe(s,n[l>>2]|0)|0,Va(f),C=c,l|0}function Ka(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function uUe(s,l){s=s|0,l=l|0;var c=0;return c=Sl(AUe()|0)|0,Qn(0,c|0,s|0,dR(l)|0)|0}function Va(s){s=s|0,q9(n[s>>2]|0,n[s+4>>2]|0)}function AUe(){var s=0;return o[8096]|0||(fUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function fUe(s){s=s|0,Pl(s,pUe()|0,1)}function pUe(){return 1948}function hUe(){gUe()}function gUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0;if(Me=C,C=C+16|0,O=Me+4|0,j=Me,Ni(65536,10804,n[2702]|0,10812),c=B9()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;uc(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=v9()|0,l=n[s>>2]|0,l|0)do uu(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);uu(dUe()|0,5167),M=Ym()|0,s=n[M>>2]|0;e:do if(s|0){do mUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[M>>2]|0,s|0){Q=M;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(yUe(d)|0);)if(n[j>>2]=Q,n[O>>2]=n[j>>2],EUe(M,O)|0,!s)break e;if(CUe(d),Q=n[Q>>2]|0,l=e7(d)|0,m=Hi()|0,B=C,C=C+((1*(l<<2)|0)+15&-16)|0,k=C,C=C+((1*(l<<2)|0)+15&-16)|0,l=n[(L9(d)|0)>>2]|0,l|0)for(c=B,f=k;n[c>>2]=n[(Wm(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Qe=Wm(d)|0,l=wUe(d)|0,c=e7(d)|0,f=IUe(d)|0,Au(Qe|0,l|0,B|0,k|0,c|0,f|0,uR(d)|0),_i(m|0)}while((s|0)!=0)}}while(0);if(s=n[(AR()|0)>>2]|0,s|0)do Qe=s+4|0,M=fR(Qe)|0,d=Ow(M)|0,m=Nw(M)|0,B=(Lw(M)|0)+1|0,k=fD(M)|0,Q=t7(Qe)|0,M=Tr(M)|0,O=cD(Qe)|0,j=vR(Qe)|0,El(0,d|0,m|0,B|0,k|0,Q|0,M|0,O|0,j|0,DR(Qe)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(Ym()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(Wm(l)|0)>>2]|0,Ge=n[(O9(l)|0)>>2]|0,Ge|0)){c=Ge;do{l=c+4|0,f=fR(l)|0;r:do if(f|0)switch(Tr(f)|0){case 0:break t;case 4:case 3:case 2:{k=Ow(f)|0,Q=Nw(f)|0,M=(Lw(f)|0)+1|0,O=fD(f)|0,j=Tr(f)|0,Qe=cD(l)|0,El(se|0,k|0,Q|0,M|0,O|0,0,j|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 1:{B=Ow(f)|0,k=Nw(f)|0,Q=(Lw(f)|0)+1|0,M=fD(f)|0,O=t7(l)|0,j=Tr(f)|0,Qe=cD(l)|0,El(se|0,B|0,k|0,Q|0,M|0,O|0,j|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 5:{M=Ow(f)|0,O=Nw(f)|0,j=(Lw(f)|0)+1|0,Qe=fD(f)|0,El(se|0,M|0,O|0,j|0,Qe|0,BUe(f)|0,Tr(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Rt()}while(0);Ce(),C=Me}function dUe(){return 11703}function mUe(s){s=s|0,o[s+40>>0]=0}function yUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function EUe(s,l){return s=s|0,l=l|0,l=vUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],gt(s),n[l>>2]|0}function CUe(s){s=s|0,o[s+40>>0]=1}function e7(s){return s=s|0,n[s+20>>2]|0}function wUe(s){return s=s|0,n[s+8>>2]|0}function IUe(s){return s=s|0,n[s+32>>2]|0}function fD(s){return s=s|0,n[s+4>>2]|0}function t7(s){return s=s|0,n[s+4>>2]|0}function vR(s){return s=s|0,n[s+8>>2]|0}function DR(s){return s=s|0,n[s+16>>2]|0}function BUe(s){return s=s|0,n[s+20>>2]|0}function vUe(s){return s=s|0,n[s>>2]|0}function pD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0;Lt=C,C=C+16|0,se=Lt;do if(s>>>0<245){if(M=s>>>0<11?16:s+11&-8,s=M>>>3,j=n[2783]|0,c=j>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=j&~(1<<l):(n[m+12>>2]=s,n[c>>2]=m),je=l<<3,n[f+4>>2]=je|3,je=f+je+4|0,n[je>>2]=n[je>>2]|1,je=d,C=Lt,je|0;if(O=n[2785]|0,M>>>0>O>>>0){if(c|0)return l=2<<s,l=c<<s&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=j&~(1<<f),n[2783]=s):(n[c+12>>2]=l,n[s>>2]=c,s=j),m=(f<<3)-M|0,n[d+4>>2]=M|3,f=d+M|0,n[f+4>>2]=m|1,n[f+m>>2]=m,O|0&&(d=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,je=B,C=Lt,je|0;if(k=n[2784]|0,k){if(c=(k&0-k)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,Q=c>>>2&4,c=c>>>Q,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|Q|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-M|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)Q=s,m=c;else{do B=(n[f+4>>2]&-8)-M|0,Q=B>>>0<c>>>0,c=Q?B:c,s=Q?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);Q=s,m=c}if(B=Q+M|0,Q>>>0<B>>>0){d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[Q+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[Q+28>>2]|0,s=11436+(l<<2)|0,(Q|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[Q+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[Q+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(je=m+M|0,n[Q+4>>2]=je|3,je=Q+je+4|0,n[je>>2]=n[je>>2]|1):(n[Q+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,O|0&&(f=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,j&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=j|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),je=Q+8|0,C=Lt,je|0}else j=M}else j=M}else j=M}else if(s>>>0<=4294967231)if(s=s+11|0,M=s&-8,Q=n[2784]|0,Q){f=0-M|0,s=s>>>8,s?M>>>0>16777215?k=31:(j=(s+1048320|0)>>>16&8,Ue=s<<j,O=(Ue+520192|0)>>>16&4,Ue=Ue<<O,k=(Ue+245760|0)>>>16&2,k=14-(O|j|k)+(Ue<<k>>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,c=n[11436+(k<<2)>>2]|0;e:do if(!c)c=0,s=0,Ue=57;else for(s=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-M|0,d>>>0<f>>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,Ue=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,Ue=57;break}else B=B<<((d^1)&1)}while(0);if((Ue|0)==57){if((c|0)==0&(s|0)==0){if(s=2<<k,s=Q&(s|0-s),!s){j=M;break}j=(s&0-s)+-1|0,B=j>>>12&16,j=j>>>B,m=j>>>5&8,j=j>>>m,k=j>>>2&4,j=j>>>k,O=j>>>1&2,j=j>>>O,c=j>>>1&1,s=0,c=n[11436+((m|B|k|O|c)+(j>>>c)<<2)>>2]|0}c?(d=c,Ue=61):(k=s,B=f)}if((Ue|0)==61)for(;;)if(Ue=0,c=(n[d+4>>2]&-8)-M|0,j=c>>>0<f>>>0,c=j?c:f,s=j?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,Ue=61;else{k=s,B=c;break}if((k|0)!=0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return je=0,C=Lt,je|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else je=n[k+8>>2]|0,n[je+12>>2]=l,n[l+8>>2]=je;while(0);do if(d){if(s=n[k+28>>2]|0,c=11436+(s<<2)|0,(k|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=Q&~(1<<s),n[2784]=f;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){f=Q;break}n[l+24>>2]=d,s=n[k+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[k+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=Q}else f=Q;while(0);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(Ue=(l+1048320|0)>>>16&8,je=l<<Ue,lt=(je+520192|0)>>>16&4,je=je<<lt,l=(je+245760|0)>>>16&2,l=14-(lt|Ue|l)+(je<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<l,!(f&s)){n[2784]=f|s,n[c>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){Ue=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=96;break}}if((Ue|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((Ue|0)==97){Ue=c+8|0,je=n[Ue>>2]|0,n[je+12>>2]=m,n[Ue>>2]=m,n[m+8>>2]=je,n[m+12>>2]=c,n[m+24>>2]=0;break}}else je=B+M|0,n[k+4>>2]=je|3,je=k+je+4|0,n[je>>2]=n[je>>2]|1;while(0);return je=k+8|0,C=Lt,je|0}else j=M}else j=M;else j=-1;while(0);if(c=n[2785]|0,c>>>0>=j>>>0)return l=c-j|0,s=n[2788]|0,l>>>0>15?(je=s+j|0,n[2788]=je,n[2785]=l,n[je+4>>2]=l|1,n[je+l>>2]=l,n[s+4>>2]=j|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,je=s+c+4|0,n[je>>2]=n[je>>2]|1),je=s+8|0,C=Lt,je|0;if(B=n[2786]|0,B>>>0>j>>>0)return lt=B-j|0,n[2786]=lt,je=n[2789]|0,Ue=je+j|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[je+4>>2]=j|3,je=je+8|0,C=Lt,je|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),k=j+48|0,Q=j+47|0,m=s+Q|0,d=0-s|0,M=m&d,M>>>0<=j>>>0||(s=n[2893]|0,s|0&&(O=n[2891]|0,se=O+M|0,se>>>0<=O>>>0|se>>>0>s>>>0)))return je=0,C=Lt,je|0;e:do if(n[2894]&4)l=0,Ue=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Qe=f+4|0,(s+(n[Qe>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{Ue=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=Qp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Qe>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,Ue=135;break e}}else f=s,Ue=126;else l=0}else Ue=118;while(0);do if((Ue|0)==118)if(c=Qp(0)|0,(c|0)!=-1&&(l=c,Ge=n[2902]|0,Me=Ge+-1|0,l=((Me&l|0)==0?0:(Me+l&0-Ge)-l|0)+M|0,Ge=n[2891]|0,Me=l+Ge|0,l>>>0>j>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Me>>>0<=Ge>>>0|Me>>>0>Qe>>>0){l=0;break}if(s=Qp(l|0)|0,(s|0)==(c|0)){B=l,m=c,Ue=135;break e}else f=s,Ue=126}else l=0;while(0);do if((Ue|0)==126){if(c=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,Ue=135;break e}if(s=n[2903]|0,s=Q-l+s&0-s,s>>>0>=2147483647){B=l,m=f,Ue=135;break e}if((Qp(s|0)|0)==-1){Qp(c|0)|0,l=0;break}else{B=s+l|0,m=f,Ue=135;break e}}while(0);n[2894]=n[2894]|4,Ue=133}while(0);if((Ue|0)==133&&M>>>0<2147483647&&(lt=Qp(M|0)|0,Qe=Qp(0)|0,et=Qe-lt|0,Xe=et>>>0>(j+40|0)>>>0,!((lt|0)==-1|Xe^1|lt>>>0<Qe>>>0&((lt|0)!=-1&(Qe|0)!=-1)^1))&&(B=Xe?et:l,m=lt,Ue=135),(Ue|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),Q=n[2789]|0;do if(Q){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){Ue=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((Ue|0)==145&&(n[l+12>>2]&8|0)==0&&Q>>>0<m>>>0&Q>>>0>=s>>>0){n[c>>2]=f+B,je=Q+8|0,je=(je&7|0)==0?0:0-je&7,Ue=Q+je|0,je=(n[2786]|0)+(B-je)|0,n[2789]=Ue,n[2786]=je,n[Ue+4>>2]=je|1,n[Ue+je+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){Ue=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((Ue|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,O=l+4|0,n[O>>2]=(n[O>>2]|0)+B,O=m+8|0,O=m+((O&7|0)==0?0:0-O&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,M=O+j|0,k=l-O-j|0,n[O+4>>2]=j|3;do if((l|0)!=(Q|0)){if((l|0)==(n[2788]|0)){je=(n[2785]|0)+k|0,n[2785]=je,n[2788]=M,n[M+4>>2]=je|1,n[M+je>>2]=je;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<<f);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else je=n[l+8>>2]|0,n[je+12>>2]=s,n[s+8>>2]=je;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<<c);break e}while(0);if(n[s+24>>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}Ue=(l+1048320|0)>>>16&8,je=l<<Ue,lt=(je+520192|0)>>>16&4,je=je<<lt,l=(je+245760|0)>>>16&2,l=14-(lt|Ue|l)+(je<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[M+28>>2]=l,s=M+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<<l,!(s&c)){n[2784]=s|c,n[f>>2]=M,n[M+24>>2]=f,n[M+12>>2]=M,n[M+8>>2]=M;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){Ue=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=193;break}}if((Ue|0)==193){n[f>>2]=M,n[M+24>>2]=c,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((Ue|0)==194){Ue=c+8|0,je=n[Ue>>2]|0,n[je+12>>2]=M,n[Ue>>2]=M,n[M+8>>2]=je,n[M+12>>2]=c,n[M+24>>2]=0;break}}else je=(n[2786]|0)+k|0,n[2786]=je,n[2789]=M,n[M+4>>2]=je|1;while(0);return je=O+8|0,C=Lt,je|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=Q>>>0&&(je=s+(n[l+4>>2]|0)|0,je>>>0>Q>>>0));)l=n[l+8>>2]|0;d=je+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=Q+16|0,s=s>>>0<d>>>0?Q:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,Ue=m+c|0,c=B+-40-c|0,n[2789]=Ue,n[2786]=c,n[Ue+4>>2]=c|1,n[Ue+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>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=s+24|0;do Ue=l,l=l+4|0,n[l>>2]=7;while((Ue+8|0)>>>0<je>>>0);if((s|0)!=(Q|0)){if(m=s-Q|0,n[c>>2]=n[c>>2]&-2,n[Q+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=Q,n[l+12>>2]=Q,n[Q+8>>2]=l,n[Q+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(Ue=(l+1048320|0)>>>16&8,je=l<<Ue,lt=(je+520192|0)>>>16&4,je=je<<lt,c=(je+245760|0)>>>16&2,c=14-(lt|Ue|c)+(je<<c>>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[Q+28>>2]=c,n[Q+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<<c,!(l&s)){n[2784]=l|s,n[f>>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){Ue=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=215;break}}if((Ue|0)==215){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((Ue|0)==216){Ue=c+8|0,je=n[Ue>>2]|0,n[je+12>>2]=Q,n[Ue>>2]=Q,n[Q+8>>2]=je,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}}else{je=n[2787]|0,(je|0)==0|m>>>0<je>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do je=11172+(l<<1<<2)|0,n[je+12>>2]=je,n[je+8>>2]=je,l=l+1|0;while((l|0)!=32);je=m+8|0,je=(je&7|0)==0?0:0-je&7,Ue=m+je|0,je=B+-40-je|0,n[2789]=Ue,n[2786]=je,n[Ue+4>>2]=je|1,n[Ue+je+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>j>>>0)return lt=l-j|0,n[2786]=lt,je=n[2789]|0,Ue=je+j|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[je+4>>2]=j|3,je=je+8|0,C=Lt,je|0}return n[(Vm()|0)>>2]=12,je=0,C=Lt,je|0}function hD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,Q=c+l|0;do if(s&1)k=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(s=Q+4|0,l=n[s>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<<c),k=B,l=m;break}else{n[s+12>>2]=l,n[l+8>>2]=s,k=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=s,n[s+8>>2]=k;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){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]=s,!s){k=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(0);if(!(B>>>0>=Q>>>0)&&(s=Q+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(Q|0)==(n[2789]|0)){if(Q=(n[2786]|0)+l|0,n[2786]=Q,n[2789]=k,n[k+4>>2]=Q|1,(k|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((Q|0)==(s|0)){Q=(n[2785]|0)+l|0,n[2785]=Q,n[2788]=B,n[k+4>>2]=Q|1,n[B+Q>>2]=Q;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[Q+8>>2]|0,s=n[Q+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<<c);break}else{n[l+12>>2]=s,n[s+8>>2]=l;break}else{m=n[Q+24>>2]|0,s=n[Q+12>>2]|0;do if((s|0)==(Q|0)){if(c=Q+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[Q+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[Q+28>>2]|0,l=11436+(s<<2)|0,(Q|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<<s);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=Q+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<<s,l&s?(l=c+8|0,s=n[l>>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=k,n[s+12>>2]=k,n[k+8>>2]=s,n[k+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,Q=s<<B,m=(Q+520192|0)>>>16&4,Q=Q<<m,s=(Q+245760|0)>>>16&2,s=14-(m|B|s)+(Q<<s>>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[k+28>>2]=s,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,c=1<<s;do if(l&c){for(l=d<<((s|0)==31?0:25-(s>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((s|0)==73){B=c+8|0,Q=n[B>>2]|0,n[Q+12>>2]=k,n[B>>2]=k,n[k+8>>2]=Q,n[k+12>>2]=c,n[k+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;while(0);if(Q=(n[2791]|0)+-1|0,n[2791]=Q,!Q)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function DUe(){return 11628}function SUe(s){s=s|0;var l=0,c=0;return l=C,C=C+16|0,c=l,n[c>>2]=xUe(n[s+60>>2]|0)|0,s=gD(hc(6,c|0)|0)|0,C=l,s|0}function r7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0;j=C,C=C+48|0,M=j+16|0,m=j,d=j+32|0,k=s+28|0,f=n[k>>2]|0,n[d>>2]=f,Q=s+20|0,f=(n[Q>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=gD(Li(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,Ge=n[d+4>>2]|0,se=m>>>0>Ge>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,Ge=m-(se?Ge:0)|0,n[d>>2]=(n[d>>2]|0)+Ge,se=d+4|0,n[se>>2]=(n[se>>2]|0)-Ge,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=gD(Li(146,M|0)|0)|0,(f|0)==(m|0)){O=3;break e}n[s+16>>2]=0,n[k>>2]=0,n[Q>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else O=3;while(0);return(O|0)==3&&(Ge=n[s+44>>2]|0,n[s+16>>2]=Ge+(n[s+48>>2]|0),n[k>>2]=Ge,n[Q>>2]=Ge),C=j,c|0}function PUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=C,C=C+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(gD(sa(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,C=d,s|0}function gD(s){return s=s|0,s>>>0>4294963200&&(n[(Vm()|0)>>2]=0-s,s=-1),s|0}function Vm(){return(bUe()|0)+64|0}function bUe(){return SR()|0}function SR(){return 2084}function xUe(s){return s=s|0,s|0}function kUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=C,C=C+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,fu(54,f|0)|0)&&(o[s+75>>0]=-1),f=r7(s,l,c)|0,C=d,f|0}function n7(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function QUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function i7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0;Qe=C,C=C+224|0,O=Qe+120|0,j=Qe+80|0,Ge=Qe,Me=Qe+136|0,f=j,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[O>>2]=n[c>>2],(PR(0,l,O,Ge,j)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=FUe(s)|0:se=0,c=n[s>>2]|0,M=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=PR(s,l,O,Ge,j)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Me,B=s+28|0,n[B>>2]=Me,k=s+20|0,n[k>>2]=Me,n[f>>2]=80,Q=s+16|0,n[Q>>2]=Me+80,c=PR(s,l,O,Ge,j)|0,m&&(ED[n[s+36>>2]&7](s,0,0)|0,c=(n[k>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[Q>>2]=0,n[B>>2]=0,n[k>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|M,se|0&&RUe(s),c=(f&32|0)==0?c:-1),C=Qe,c|0}function PR(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0;ir=C,C=C+64|0,or=ir+16|0,Xt=ir,Lt=ir+24|0,Sr=ir+8|0,Nr=ir+20|0,n[or>>2]=l,lt=(s|0)!=0,Ue=Lt+40|0,je=Ue,Lt=Lt+39|0,Mr=Sr+4|0,B=0,m=0,O=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Vm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}et=k+1|0,n[or>>2]=et,B=o[et>>0]|0,k=et}t:do if((Xe|0)==9)for(;;){if(Xe=0,(o[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[or>>2]=k,(o[k>>0]|0)==37)Xe=9;else break}while(0);if(B=B-l|0,lt&&ss(s,l,B),B|0){l=k;continue}Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10?(et=(o[k+2>>0]|0)==36,Qe=et?B:-1,O=et?1:O,Q=et?k+3|0:Q):Qe=-1,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,j=B;;){if(B=1<<k,!(B&75913)){B=j;break t}if(M=B|M,Q=Q+1|0,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;j=B}else M=0;while(0);if(B<<24>>24==42){if(k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10&&(o[Q+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[k>>0]|0)+-48<<3)>>2]|0,O=1,Q=Q+3|0;else{if(O|0){m=-1;break}lt?(O=(n[c>>2]|0)+(4-1)&~(4-1),B=n[O>>2]|0,n[c>>2]=O+4,O=0,Q=k):(B=0,O=0,Q=k)}n[or>>2]=Q,et=(B|0)<0,B=et?0-B|0:B,M=et?M|8192:M}else{if(B=s7(or)|0,(B|0)<0){m=-1;break}Q=n[or>>2]|0}do if((o[Q>>0]|0)==46){if((o[Q+1>>0]|0)!=42){n[or>>2]=Q+1,k=s7(or)|0,Q=n[or>>2]|0;break}if(j=Q+2|0,k=(o[j>>0]|0)+-48|0,k>>>0<10&&(o[Q+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[f+((o[j>>0]|0)+-48<<3)>>2]|0,Q=Q+4|0,n[or>>2]=Q;break}if(O|0){m=-1;break e}lt?(et=(n[c>>2]|0)+(4-1)&~(4-1),k=n[et>>2]|0,n[c>>2]=et+4):k=0,n[or>>2]=j,Q=j}else k=-1;while(0);for(Me=0;;){if(((o[Q>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=Q+1|0,n[or>>2]=et,j=o[(o[Q>>0]|0)+-65+(5178+(Me*58|0))>>0]|0,se=j&255,(se+-1|0)>>>0<8)Me=se,Q=et;else break}if(!(j<<24>>24)){m=-1;break}Ge=(Qe|0)>-1;do if(j<<24>>24==19)if(Ge){m=-1;break e}else Xe=49;else{if(Ge){n[d+(Qe<<2)>>2]=se,Ge=f+(Qe<<3)|0,Qe=n[Ge+4>>2]|0,Xe=Xt,n[Xe>>2]=n[Ge>>2],n[Xe+4>>2]=Qe,Xe=49;break}if(!lt){m=0;break e}o7(Xt,se,c)}while(0);if((Xe|0)==49&&(Xe=0,!lt)){B=0,l=et;continue}Q=o[Q>>0]|0,Q=(Me|0)!=0&(Q&15|0)==3?Q&-33:Q,Ge=M&-65537,Qe=(M&8192|0)==0?M:Ge;t:do switch(Q|0){case 110:switch((Me&255)<<24>>24){case 0:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Xt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Xt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{Q=120,k=k>>>0>8?k:8,l=Qe|8,Xe=61;break}case 88:case 120:{l=Qe,Xe=61;break}case 111:{Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,se=NUe(l,Q,Ue)|0,Ge=je-se|0,M=0,j=5642,k=(Qe&8|0)==0|(k|0)>(Ge|0)?k:Ge+1|0,Ge=Qe,Xe=67;break}case 105:case 100:if(Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,(Q|0)<0){l=dD(0,0,l|0,Q|0)|0,Q=Se,M=Xt,n[M>>2]=l,n[M+4>>2]=Q,M=1,j=5642,Xe=66;break t}else{M=(Qe&2049|0)!=0&1,j=(Qe&2048|0)==0?(Qe&1|0)==0?5642:5644:5643,Xe=66;break t}case 117:{Q=Xt,M=0,j=5642,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,Xe=66;break}case 99:{o[Lt>>0]=n[Xt>>2],l=Lt,M=0,j=5642,se=Ue,Q=1,k=Ge;break}case 109:{Q=LUe(n[(Vm()|0)>>2]|0)|0,Xe=71;break}case 115:{Q=n[Xt>>2]|0,Q=Q|0?Q:5652,Xe=71;break}case 67:{n[Sr>>2]=n[Xt>>2],n[Mr>>2]=0,n[Xt>>2]=Sr,se=-1,Q=Sr,Xe=75;break}case 83:{l=n[Xt>>2]|0,k?(se=k,Q=l,Xe=75):(Bs(s,32,B,0,Qe),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=MUe(s,+E[Xt>>3],B,k,Qe,Q)|0,l=et;continue e}default:M=0,j=5642,se=Ue,Q=k,k=Qe}while(0);t:do if((Xe|0)==61)Qe=Xt,Me=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,se=TUe(Me,Qe,Ue,Q&32)|0,j=(l&8|0)==0|(Me|0)==0&(Qe|0)==0,M=j?0:2,j=j?5642:5642+(Q>>4)|0,Ge=l,l=Me,Q=Qe,Xe=67;else if((Xe|0)==66)se=Jm(l,Q,Ue)|0,Ge=Qe,Xe=67;else if((Xe|0)==71)Xe=0,Qe=OUe(Q,0,k)|0,Me=(Qe|0)==0,l=Q,M=0,j=5642,se=Me?Q+k|0:Qe,Q=Me?k:Qe-Q|0,k=Ge;else if((Xe|0)==75){for(Xe=0,j=Q,l=0,k=0;M=n[j>>2]|0,!(!M||(k=a7(Nr,M)|0,(k|0)<0|k>>>0>(se-l|0)>>>0));)if(l=k+l|0,se>>>0>l>>>0)j=j+4|0;else break;if((k|0)<0){m=-1;break e}if(Bs(s,32,B,l,Qe),!l)l=0,Xe=84;else for(M=0;;){if(k=n[Q>>2]|0,!k){Xe=84;break t}if(k=a7(Nr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(ss(s,Nr,k),M>>>0>=l>>>0){Xe=84;break}else Q=Q+4|0}}while(0);if((Xe|0)==67)Xe=0,Q=(l|0)!=0|(Q|0)!=0,Qe=(k|0)!=0|Q,Q=((Q^1)&1)+(je-se)|0,l=Qe?se:Ue,se=Ue,Q=Qe?(k|0)>(Q|0)?k:Q:k,k=(k|0)>-1?Ge&-65537:Ge;else if((Xe|0)==84){Xe=0,Bs(s,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Me=se-l|0,Ge=(Q|0)<(Me|0)?Me:Q,Qe=Ge+M|0,B=(B|0)<(Qe|0)?Qe:B,Bs(s,32,B,Qe,k),ss(s,j,M),Bs(s,48,B,Qe,k^65536),Bs(s,48,Ge,Me,0),ss(s,l,Me),Bs(s,32,B,Qe,k^8192),l=et}e:do if((Xe|0)==87&&!s)if(!O)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(o7(f+(m<<3)|0,l,c),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(0);return C=ir,m|0}function FUe(s){return s=s|0,0}function RUe(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||KUe(l,c,s)|0}function s7(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function o7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}default:break e}while(0);while(0)}function TUe(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=mD(s|0,l|0,4)|0,l=Se;while(!((s|0)==0&(l|0)==0));return c|0}function NUe(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=mD(s|0,l|0,3)|0,l=Se;while(!((s|0)==0&(l|0)==0));return c|0}function Jm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=QR(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=kR(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=Se;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function LUe(s){return s=s|0,jUe(s,n[(qUe()|0)+188>>2]|0)|0}function OUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=qe(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Bs(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=C,C=C+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,Xm(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}C=B}function a7(s,l){return s=s|0,l=l|0,s?s=_Ue(s,l,0)|0:s=0,s|0}function MUe(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0;xn=C,C=C+560|0,Q=xn+8|0,et=xn,ir=xn+524|0,Nr=ir,M=xn+512|0,n[et>>2]=0,Sr=M+12|0,l7(l)|0,(Se|0)<0?(l=-l,or=1,Mr=5659):(or=(d&2049|0)!=0&1,Mr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),l7(l)|0,Xt=Se&2146435072;do if(Xt>>>0<2146435072|(Xt|0)==2146435072&0<0){if(Ge=+UUe(l,et)*2,B=Ge!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),lt=m|32,(lt|0)==97){Me=m&32,se=(Me|0)==0?Mr:Mr+9|0,j=or|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=Ge;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-Ge-l));break}else{l=Ge+l-l;break}}while(0);k=n[et>>2]|0,B=(k|0)<0?0-k|0:k,B=Jm(B,((B|0)<0)<<31>>31,Sr)|0,(B|0)==(Sr|0)&&(B=M+11|0,o[B>>0]=48),o[B+-1>>0]=(k>>31&2)+43,O=B+-2|0,o[O>>0]=m+15,M=(f|0)<1,Q=(d&8|0)==0,B=ir;do Xt=~~l,k=B+1|0,o[B>>0]=u[5694+Xt>>0]|Me,l=(l-+(Xt|0))*16,(k-Nr|0)==1&&!(Q&(M&l==0))?(o[k>>0]=46,B=B+2|0):B=k;while(l!=0);Xt=B-Nr|0,Nr=Sr-O|0,Sr=(f|0)!=0&(Xt+-2|0)<(f|0)?f+2|0:Xt,B=Nr+j+Sr|0,Bs(s,32,c,B,d),ss(s,se,j),Bs(s,48,c,B,d^65536),ss(s,ir,Xt),Bs(s,48,Sr-Xt|0,0,0),ss(s,O,Nr),Bs(s,32,c,B,d^8192);break}k=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=Ge*268435456):(l=Ge,B=n[et>>2]|0),Xt=(B|0)<0?Q:Q+288|0,Q=Xt;do je=~~l>>>0,n[Q>>2]=je,Q=Q+4|0,l=(l-+(je>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=Xt,j=Q;;){if(O=(B|0)<29?B:29,B=j+-4|0,B>>>0>=M>>>0){Q=0;do Ue=h7(n[B>>2]|0,0,O|0)|0,Ue=xR(Ue|0,Se|0,Q|0,0)|0,je=Se,Xe=QR(Ue|0,je|0,1e9,0)|0,n[B>>2]=Xe,Q=kR(Ue|0,je|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);Q&&(M=M+-4|0,n[M>>2]=Q)}for(Q=j;!(Q>>>0<=M>>>0);)if(B=Q+-4|0,!(n[B>>2]|0))Q=B;else break;if(B=(n[et>>2]|0)-O|0,n[et>>2]=B,(B|0)>0)j=Q;else break}else M=Xt;if((B|0)<0){f=((k+25|0)/9|0)+1|0,Qe=(lt|0)==102;do{if(Me=0-B|0,Me=(Me|0)<9?Me:9,M>>>0<Q>>>0){O=(1<<Me)+-1|0,j=1e9>>>Me,se=0,B=M;do je=n[B>>2]|0,n[B>>2]=(je>>>Me)+se,se=qe(je&O,j)|0,B=B+4|0;while(B>>>0<Q>>>0);B=(n[M>>2]|0)==0?M+4|0:M,se?(n[Q>>2]=se,M=B,B=Q+4|0):(M=B,B=Q)}else M=(n[M>>2]|0)==0?M+4|0:M,B=Q;Q=Qe?Xt:M,Q=(B-Q>>2|0)>(f|0)?Q+(f<<2)|0:B,B=(n[et>>2]|0)+Me|0,n[et>>2]=B}while((B|0)<0);B=M,f=Q}else B=M,f=Q;if(je=Xt,B>>>0<f>>>0){if(Q=(je-B>>2)*9|0,O=n[B>>2]|0,O>>>0>=10){M=10;do M=M*10|0,Q=Q+1|0;while(O>>>0>=M>>>0)}}else Q=0;if(Qe=(lt|0)==103,Xe=(k|0)!=0,M=k-((lt|0)!=102?Q:0)+((Xe&Qe)<<31>>31)|0,(M|0)<(((f-je>>2)*9|0)+-9|0)){if(M=M+9216|0,Me=Xt+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){O=10;do O=O*10|0,M=M+1|0;while((M|0)!=9)}else O=10;if(j=n[Me>>2]|0,se=(j>>>0)%(O>>>0)|0,M=(Me+4|0)==(f|0),M&(se|0)==0)M=Me;else if(Ge=(((j>>>0)/(O>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,Ue=(O|0)/2|0,l=se>>>0<Ue>>>0?.5:M&(se|0)==(Ue|0)?1:1.5,or&&(Ue=(o[Mr>>0]|0)==45,l=Ue?-l:l,Ge=Ue?-Ge:Ge),M=j-se|0,n[Me>>2]=M,Ge+l!=Ge){if(Ue=M+O|0,n[Me>>2]=Ue,Ue>>>0>999999999)for(Q=Me;M=Q+-4|0,n[Q>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),Ue=(n[M>>2]|0)+1|0,n[M>>2]=Ue,Ue>>>0>999999999;)Q=M;else M=Me;if(Q=(je-B>>2)*9|0,j=n[B>>2]|0,j>>>0>=10){O=10;do O=O*10|0,Q=Q+1|0;while(j>>>0>=O>>>0)}}else M=Me;M=M+4|0,M=f>>>0>M>>>0?M:f,Ue=B}else M=f,Ue=B;for(lt=M;;){if(lt>>>0<=Ue>>>0){et=0;break}if(B=lt+-4|0,!(n[B>>2]|0))lt=B;else{et=1;break}}f=0-Q|0;do if(Qe)if(B=((Xe^1)&1)+k|0,(B|0)>(Q|0)&(Q|0)>-5?(O=m+-1|0,k=B+-1-Q|0):(O=m+-2|0,k=B+-1|0),B=d&8,B)Me=B;else{if(et&&(Lt=n[lt+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((lt-je>>2)*9|0)+-9|0,(O|32|0)==102){Me=B-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}else{Me=B+Q-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}}else O=m,Me=d&8;while(0);if(Qe=k|Me,j=(Qe|0)!=0&1,se=(O|32|0)==102,se)Xe=0,B=(Q|0)>0?Q:0;else{if(B=(Q|0)<0?f:Q,B=Jm(B,((B|0)<0)<<31>>31,Sr)|0,M=Sr,(M-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((M-B|0)<2);o[B+-1>>0]=(Q>>31&2)+43,B=B+-2|0,o[B>>0]=O,Xe=B,B=M-B|0}if(B=or+1+k+j+B|0,Bs(s,32,c,B,d),ss(s,Mr,or),Bs(s,48,c,B,d^65536),se){O=Ue>>>0>Xt>>>0?Xt:Ue,Me=ir+9|0,j=Me,se=ir+8|0,M=O;do{if(Q=Jm(n[M>>2]|0,0,Me)|0,(M|0)==(O|0))(Q|0)==(Me|0)&&(o[se>>0]=48,Q=se);else if(Q>>>0>ir>>>0){Xm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}ss(s,Q,j-Q|0),M=M+4|0}while(M>>>0<=Xt>>>0);if(Qe|0&&ss(s,5710,1),M>>>0<lt>>>0&(k|0)>0)for(;;){if(Q=Jm(n[M>>2]|0,0,Me)|0,Q>>>0>ir>>>0){Xm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}if(ss(s,Q,(k|0)<9?k:9),M=M+4|0,Q=k+-9|0,M>>>0<lt>>>0&(k|0)>9)k=Q;else{k=Q;break}}Bs(s,48,k+9|0,9,0)}else{if(Qe=et?lt:Ue+4|0,(k|0)>-1){et=ir+9|0,Me=(Me|0)==0,f=et,j=0-Nr|0,se=ir+8|0,O=Ue;do{Q=Jm(n[O>>2]|0,0,et)|0,(Q|0)==(et|0)&&(o[se>>0]=48,Q=se);do if((O|0)==(Ue|0)){if(M=Q+1|0,ss(s,Q,1),Me&(k|0)<1){Q=M;break}ss(s,5710,1),Q=M}else{if(Q>>>0<=ir>>>0)break;Xm(ir|0,48,Q+j|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}while(0);Nr=f-Q|0,ss(s,Q,(k|0)>(Nr|0)?Nr:k),k=k-Nr|0,O=O+4|0}while(O>>>0<Qe>>>0&(k|0)>-1)}Bs(s,48,k+18|0,18,0),ss(s,Xe,Sr-Xe|0)}Bs(s,32,c,B,d^8192)}else ir=(m&32|0)!=0,B=or+3|0,Bs(s,32,c,B,d&-65537),ss(s,Mr,or),ss(s,l!=l|!1?ir?5686:5690:ir?5678:5682,3),Bs(s,32,c,B,d^8192);while(0);return C=xn,((B|0)<(c|0)?c:B)|0}function l7(s){s=+s;var l=0;return E[v>>3]=s,l=n[v>>2]|0,Se=n[v+4>>2]|0,l|0}function UUe(s,l){return s=+s,l=l|0,+ +c7(s,l)}function c7(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(E[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=mD(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+c7(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+E[v>>3]}return+s}function _Ue(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(HUe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(Vm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(Vm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function HUe(){return SR()|0}function qUe(){return SR()|0}function jUe(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return GUe(c,n[l+20>>2]|0)|0}function GUe(s,l){return s=s|0,l=l|0,YUe(s,l)|0}function YUe(s,l){return s=s|0,l=l|0,l?l=WUe(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function WUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Rg(n[s+8>>2]|0,se)|0,f=Rg(n[s+12>>2]|0,se)|0,d=Rg(n[s+16>>2]|0,se)|0;e:do if(m>>>0<l>>>2>>>0&&(j=l-(m<<2)|0,f>>>0<j>>>0&d>>>0<j>>>0)&&((d|f)&3|0)==0){for(j=f>>>2,O=d>>>2,M=0;;){if(k=m>>>1,Q=M+k|0,B=Q<<1,d=B+j|0,f=Rg(n[s+(d<<2)>>2]|0,se)|0,d=Rg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0<l>>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=n7(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else M=f?M:Q,m=f?k:m-k|0}f=B+O|0,d=Rg(n[s+(f<<2)>>2]|0,se)|0,f=Rg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0<l>>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Rg(s,l){s=s|0,l=l|0;var c=0;return c=m7(s|0)|0,((l|0)==0?s:c)|0}function KUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=c+16|0,d=n[f>>2]|0,d?m=5:VUe(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(k=c+20|0,B=n[k>>2]|0,f=B,(d-B|0)>>>0<l>>>0){f=ED[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=ED[n[c+36>>2]&7](c,s,B)|0,f>>>0<B>>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[k>>2]|0}else m=0,d=s;while(0);Dr(f|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,f=m+l|0}while(0);return f|0}function VUe(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function _n(s,l){s=y(s),l=y(l);var c=0,f=0;c=u7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=u7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s<l?l:s;break}}else s=l;while(0);return y(s)}function u7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Tg(s,l){s=y(s),l=y(l);var c=0,f=0;c=A7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=A7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s<l?s:l;break}}else s=l;while(0);return y(s)}function A7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function bR(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;m=(h[v>>2]=s,n[v>>2]|0),k=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=k>>>23&255,Q=m&-2147483648,d=k<<1;e:do if((d|0)!=0&&!((c|0)==255|((JUe(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}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=f-k|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-k|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|Q,y(h[v>>2]))}else M=3;while(0);return(M|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function JUe(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function zUe(s,l){return s=s|0,l=l|0,i7(n[582]|0,s,l)|0}function zr(s){s=s|0,Rt()}function zm(s){s=s|0}function XUe(s,l){return s=s|0,l=l|0,0}function ZUe(s){return s=s|0,(f7(s+4|0)|0)==-1?(tf[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function f7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function kp(s){s=s|0,ZUe(s)|0&&$Ue(s)}function $Ue(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(f7(l)|0)!=-1||tf[n[(n[s>>2]|0)+16>>2]&127](s)}function Kt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=pD(l)|0,!(s|0);){if(s=t3e()|0,!s){s=0;break}P7[s&0]()}return s|0}function p7(s){return s=s|0,Kt(s)|0}function gt(s){s=s|0,hD(s)}function e3e(s){s=s|0,(o[s+11>>0]|0)<0&&gt(n[s>>2]|0)}function t3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function r3e(){}function dD(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,Se=f,s-c>>>0|0|0}function xR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,Se=l+f+(c>>>0<s>>>0|0)>>>0,c|0|0}function Xm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function h7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Se=l<<c|(s&(1<<c)-1<<32-c)>>>32-c,s<<c):(Se=s<<c-32,0)}function mD(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Se=l>>>c,s>>>c|(l&(1<<c)-1)<<32-c):(Se=0,l>>>c-32|0)}function Dr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return Ac(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function g7(s){s=s|0;var l=0;return l=o[L+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[L+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[L+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[L+(s>>>24)>>0]|0)+24|0))}function d7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0;if(O=s,Q=l,M=Q,B=c,se=f,k=se,!M)return m=(d|0)!=0,k?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,Se=se,d|0):(se=0,d=0,Se=se,d|0):(m&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(O>>>0)/(B>>>0)>>>0,Se=se,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(P(k|0)|0)-(P(M|0)|0)|0,m>>>0<=31){j=m+1|0,k=31-m|0,l=m-31>>31,B=j,s=O>>>(j>>>0)&l|M<<k,l=M>>>(j>>>0)&l,m=0,k=O<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,se=0,d=0,Se=se,d|0):(se=0,d=0,Se=se,d|0)}if(m=B-1|0,m&B|0){k=(P(B|0)|0)+33-(P(M|0)|0)|0,Me=64-k|0,j=32-k|0,Q=j>>31,Ge=k-32|0,l=Ge>>31,B=k,s=j-1>>31&M>>>(Ge>>>0)|(M<<j|O>>>(k>>>0))&l,l=l&M>>>(k>>>0),m=O<<Me&Q,k=(M<<Me|O>>>(Ge>>>0))&Q|O<<j&k-33>>31;break}return d|0&&(n[d>>2]=m&O,n[d+4>>2]=0),(B|0)==1?(Ge=Q|l&0,Me=s|0|0,Se=Ge,Me|0):(Me=g7(B|0)|0,Ge=M>>>(Me>>>0)|0,Me=M<<32-Me|O>>>(Me>>>0)|0,Se=Ge,Me|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ge=0,Me=(M>>>0)/(B>>>0)>>>0,Se=Ge,Me|0;if(!O)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ge=0,Me=(M>>>0)/(k>>>0)>>>0,Se=Ge,Me|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&M|l&0),Ge=0,Me=M>>>((g7(k|0)|0)>>>0),Se=Ge,Me|0;if(m=(P(k|0)|0)-(P(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,s=M<<k|O>>>(l>>>0),l=M>>>(l>>>0),m=0,k=O<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,Ge=0,Me=0,Se=Ge,Me|0):(Ge=0,Me=0,Se=Ge,Me|0)}while(0);if(!B)M=k,Q=0,k=0;else{j=c|0|0,O=se|f&0,M=xR(j|0,O|0,-1,-1)|0,c=Se,Q=k,k=0;do f=Q,Q=m>>>31|Q<<1,m=k|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,dD(M|0,c|0,f|0,se|0)|0,Me=Se,Ge=Me>>31|((Me|0)<0?-1:0)<<1,k=Ge&1,s=dD(f|0,se|0,Ge&j|0,(((Me|0)<0?-1:0)>>31|((Me|0)<0?-1:0)<<1)&O|0)|0,l=Se,B=B-1|0;while((B|0)!=0);M=Q,Q=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),Ge=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|Q,Me=(m<<1|0>>>31)&-2|k,Se=Ge,Me|0}function kR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,d7(s,l,c,f,0)|0}function Qp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[I>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,DA(12),-1):(n[I>>2]=s,(s|0)>(Z()|0)&&(X()|0)==0?(n[I>>2]=l,DA(12),-1):l|0)}function Mw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Dr(s,l,c)|0;return s|0}function QR(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=C,C=C+16|0,d=m|0,d7(s,l,c,f,d)|0,C=m,Se=n[d+4>>2]|0,n[d>>2]|0|0}function m7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function n3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,y7[s&1](l|0,c|0,f|0,d|0,m|0)}function i3e(s,l,c){s=s|0,l=l|0,c=y(c),E7[s&1](l|0,y(c))}function s3e(s,l,c){s=s|0,l=l|0,c=+c,C7[s&31](l|0,+c)}function o3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(w7[s&0](l|0,y(c),y(f)))}function a3e(s,l){s=s|0,l=l|0,tf[s&127](l|0)}function l3e(s,l,c){s=s|0,l=l|0,c=c|0,rf[s&31](l|0,c|0)}function c3e(s,l){return s=s|0,l=l|0,Lg[s&31](l|0)|0}function u3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,I7[s&1](l|0,+c,+f,d|0)}function A3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,Y3e[s&1](l|0,+c,+f)}function f3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,ED[s&7](l|0,c|0,f|0)|0}function p3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+W3e[s&1](l|0,c|0,f|0)}function h3e(s,l){return s=s|0,l=l|0,+B7[s&15](l|0)}function g3e(s,l,c){return s=s|0,l=l|0,c=+c,K3e[s&1](l|0,+c)|0}function d3e(s,l,c){return s=s|0,l=l|0,c=c|0,RR[s&15](l|0,c|0)|0}function m3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,V3e[s&1](l|0,c|0,+f,+d,m|0)}function y3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,J3e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function E3e(s,l,c){return s=s|0,l=l|0,c=c|0,+v7[s&7](l|0,c|0)}function C3e(s){return s=s|0,CD[s&7]()|0}function w3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,D7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function I3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,z3e[s&1](l|0,c|0,f|0,+d)}function B3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,S7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function v3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,Hw[s&15](l|0,c|0,f|0)}function D3e(s){s=s|0,P7[s&0]()}function S3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,b7[s&15](l|0,c|0,+f)}function P3e(s,l,c){return s=s|0,l=+l,c=+c,X3e[s&1](+l,+c)|0}function b3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,TR[s&15](l|0,c|0,f|0,d|0)}function x3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function k3e(s,l){s=s|0,l=y(l),F(1)}function ma(s,l){s=s|0,l=+l,F(2)}function Q3e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),Ze}function Er(s){s=s|0,F(4)}function Uw(s,l){s=s|0,l=l|0,F(5)}function Ja(s){return s=s|0,F(6),0}function F3e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function R3e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function T3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function N3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function Ng(s){return s=s|0,F(11),0}function L3e(s,l){return s=s|0,l=+l,F(12),0}function _w(s,l){return s=s|0,l=l|0,F(13),0}function O3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function M3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function FR(s,l){return s=s|0,l=l|0,F(16),0}function U3e(){return F(17),0}function _3e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function H3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function q3e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function yD(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function j3e(){F(22)}function Zm(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function G3e(s,l){return s=+s,l=+l,F(24),0}function $m(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var y7=[x3e,_Le],E7=[k3e,fo],C7=[ma,xw,kw,EF,CF,Dl,Qw,wF,qm,bu,Rw,IF,$v,KA,eD,jm,tD,rD,Gm,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma],w7=[Q3e],tf=[Er,zm,CDe,wDe,IDe,Xbe,Zbe,$be,gNe,dNe,mNe,PLe,bLe,xLe,J4e,z4e,X4e,hs,Vv,Hm,WA,Fw,dve,mve,uDe,kDe,qDe,oSe,ISe,USe,rPe,mPe,FPe,VPe,ube,Sbe,qbe,dxe,Fxe,Vxe,uke,Ske,qke,aQe,IQe,LQe,ZQe,Pc,xFe,YFe,uRe,bRe,jRe,uTe,CTe,BTe,_Te,jTe,oNe,ENe,INe,UNe,nLe,i5,MOe,gMe,kMe,YMe,p4e,b4e,U4e,q4e,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er],rf=[Uw,fF,pF,bw,Pu,hF,gF,Bp,dF,mF,yF,Zv,VA,Ve,ft,Wt,vr,Pn,Fr,vF,nve,Sve,AQe,DQe,FRe,HOe,ALe,q9,Uw,Uw,Uw,Uw],Lg=[Ja,SUe,AF,D,Ae,De,vt,wt,xt,_r,di,po,eve,tve,yve,tFe,KRe,qNe,YOe,Wa,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja],I7=[F3e,Eve],Y3e=[R3e,cNe],ED=[T3e,r7,PUe,kUe,jSe,Cxe,RFe,JMe],W3e=[N3e,hbe],B7=[Ng,Yo,rt,bn,Cve,wve,Ive,Bve,vve,Dve,Ng,Ng,Ng,Ng,Ng,Ng],K3e=[L3e,mTe],RR=[_w,XUe,rve,hDe,uSe,sPe,CPe,Wbe,Lxe,_Qe,Wv,TMe,_w,_w,_w,_w],V3e=[O3e,WDe],J3e=[M3e,m4e],v7=[FR,ai,Pve,bve,xve,kbe,FR,FR],CD=[U3e,kve,Sw,ga,PTe,KTe,SNe,W4e],D7=[_3e,Cw],z3e=[H3e,hke],S7=[q3e,ive],Hw=[yD,T,is,tn,ho,SSe,NPe,kke,Wke,_m,cOe,EMe,F4e,yD,yD,yD],P7=[j3e],b7=[Zm,Jv,zv,Xv,YA,nD,BF,S,Zxe,JFe,pTe,Zm,Zm,Zm,Zm,Zm],X3e=[G3e,pNe],TR=[$m,ZPe,cFe,hRe,rTe,RTe,$Te,RNe,lLe,XOe,nUe,$m,$m,$m,$m,$m];return{_llvm_bswap_i32:m7,dynCall_idd:P3e,dynCall_i:C3e,_i64Subtract:dD,___udivdi3:kR,dynCall_vif:i3e,setThrew:hu,dynCall_viii:v3e,_bitshift64Lshr:mD,_bitshift64Shl:h7,dynCall_vi:a3e,dynCall_viiddi:m3e,dynCall_diii:p3e,dynCall_iii:d3e,_memset:Xm,_sbrk:Qp,_memcpy:Dr,__GLOBAL__sub_I_Yoga_cpp:Um,dynCall_vii:l3e,___uremdi3:QR,dynCall_vid:s3e,stackAlloc:lo,_nbind_init:hUe,getTempRet0:Ua,dynCall_di:h3e,dynCall_iid:g3e,setTempRet0:xA,_i64Add:xR,dynCall_fiff:o3e,dynCall_iiii:f3e,_emscripten_get_global_libc:DUe,dynCall_viid:S3e,dynCall_viiid:I3e,dynCall_viififi:B3e,dynCall_ii:c3e,__GLOBAL__sub_I_Binding_cc:kOe,dynCall_viiii:b3e,dynCall_iiiiii:w3e,stackSave:gc,dynCall_viiiii:n3e,__GLOBAL__sub_I_nbind_cc:Qve,dynCall_vidd:A3e,_free:hD,runPostSets:r3e,dynCall_viiiiii:y3e,establishStackSpace:qi,_memmove:Mw,stackRestore:pu,_malloc:pD,__GLOBAL__sub_I_common_cc:zNe,dynCall_viddi:u3e,dynCall_dii:E3e,dynCall_v:D3e}}(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 o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];o();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),\"i8\",ALLOC_NORMAL)),o();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var u=Module._main(r,a,0);exit(u,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var A=p;p&&typeof p==\"object\"&&p.stack&&(A=[p,p.stack]),Module.printErr(\"exception thrown: \"+A),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(o){r=o(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 am=_((wKt,NEe)=>{\"use strict\";var Gyt=REe(),Yyt=TEe(),x6=!1,k6=null;Yyt({},function(t,e){if(!x6){if(x6=!0,t)throw t;k6=e}});if(!x6)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");NEe.exports=Gyt(k6.bind,k6.lib)});var F6=_((IKt,Q6)=>{\"use strict\";var LEe=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);Q6.exports=LEe;Q6.exports.default=LEe});var MEe=_((BKt,OEe)=>{\"use strict\";OEe.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 Kk=_((vKt,R6)=>{\"use strict\";var Wyt=OS(),Kyt=F6(),Vyt=MEe(),UEe=t=>{if(typeof t!=\"string\"||t.length===0||(t=Wyt(t),t.length===0))return 0;t=t.replace(Vyt(),\"  \");let e=0;for(let r=0;r<t.length;r++){let o=t.codePointAt(r);o<=31||o>=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=Kyt(o)?2:1)}return e};R6.exports=UEe;R6.exports.default=UEe});var N6=_((DKt,T6)=>{\"use strict\";var Jyt=Kk(),_Ee=t=>{let e=0;for(let r of t.split(`\n`))e=Math.max(e,Jyt(r));return e};T6.exports=_Ee;T6.exports.default=_Ee});var HEe=_(cB=>{\"use strict\";var zyt=cB&&cB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cB,\"__esModule\",{value:!0});var Xyt=zyt(N6()),L6={};cB.default=t=>{if(t.length===0)return{width:0,height:0};if(L6[t])return L6[t];let e=Xyt.default(t),r=t.split(`\n`).length;return L6[t]={width:e,height:r},{width:e,height:r}}});var qEe=_(uB=>{\"use strict\";var Zyt=uB&&uB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uB,\"__esModule\",{value:!0});var dn=Zyt(am()),$yt=(t,e)=>{\"position\"in e&&t.setPositionType(e.position===\"absolute\"?dn.default.POSITION_TYPE_ABSOLUTE:dn.default.POSITION_TYPE_RELATIVE)},eEt=(t,e)=>{\"marginLeft\"in e&&t.setMargin(dn.default.EDGE_START,e.marginLeft||0),\"marginRight\"in e&&t.setMargin(dn.default.EDGE_END,e.marginRight||0),\"marginTop\"in e&&t.setMargin(dn.default.EDGE_TOP,e.marginTop||0),\"marginBottom\"in e&&t.setMargin(dn.default.EDGE_BOTTOM,e.marginBottom||0)},tEt=(t,e)=>{\"paddingLeft\"in e&&t.setPadding(dn.default.EDGE_LEFT,e.paddingLeft||0),\"paddingRight\"in e&&t.setPadding(dn.default.EDGE_RIGHT,e.paddingRight||0),\"paddingTop\"in e&&t.setPadding(dn.default.EDGE_TOP,e.paddingTop||0),\"paddingBottom\"in e&&t.setPadding(dn.default.EDGE_BOTTOM,e.paddingBottom||0)},rEt=(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(dn.default.FLEX_DIRECTION_ROW),e.flexDirection===\"row-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection===\"column\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN),e.flexDirection===\"column-reverse\"&&t.setFlexDirection(dn.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(dn.default.ALIGN_STRETCH),e.alignItems===\"flex-start\"&&t.setAlignItems(dn.default.ALIGN_FLEX_START),e.alignItems===\"center\"&&t.setAlignItems(dn.default.ALIGN_CENTER),e.alignItems===\"flex-end\"&&t.setAlignItems(dn.default.ALIGN_FLEX_END)),\"alignSelf\"in e&&((e.alignSelf===\"auto\"||!e.alignSelf)&&t.setAlignSelf(dn.default.ALIGN_AUTO),e.alignSelf===\"flex-start\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_START),e.alignSelf===\"center\"&&t.setAlignSelf(dn.default.ALIGN_CENTER),e.alignSelf===\"flex-end\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_END)),\"justifyContent\"in e&&((e.justifyContent===\"flex-start\"||!e.justifyContent)&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_START),e.justifyContent===\"center\"&&t.setJustifyContent(dn.default.JUSTIFY_CENTER),e.justifyContent===\"flex-end\"&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_END),e.justifyContent===\"space-between\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent===\"space-around\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_AROUND))},nEt=(t,e)=>{var r,o;\"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((o=e.minHeight)!==null&&o!==void 0?o:0))},iEt=(t,e)=>{\"display\"in e&&t.setDisplay(e.display===\"flex\"?dn.default.DISPLAY_FLEX:dn.default.DISPLAY_NONE)},sEt=(t,e)=>{if(\"borderStyle\"in e){let r=typeof e.borderStyle==\"string\"?1:0;t.setBorder(dn.default.EDGE_TOP,r),t.setBorder(dn.default.EDGE_BOTTOM,r),t.setBorder(dn.default.EDGE_LEFT,r),t.setBorder(dn.default.EDGE_RIGHT,r)}};uB.default=(t,e={})=>{$yt(t,e),eEt(t,e),tEt(t,e),rEt(t,e),nEt(t,e),iEt(t,e),sEt(t,e)}});var YEe=_((bKt,GEe)=>{\"use strict\";var AB=Kk(),oEt=OS(),aEt=DI(),M6=new Set([\"\\x1B\",\"\\x9B\"]),lEt=39,jEe=t=>`${M6.values().next().value}[${t}m`,cEt=t=>t.split(\" \").map(e=>AB(e)),O6=(t,e,r)=>{let o=[...e],a=!1,n=AB(oEt(t[t.length-1]));for(let[u,A]of o.entries()){let p=AB(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),M6.has(A))a=!0;else if(a&&A===\"m\"){a=!1;continue}a||(n+=p,n===r&&u<o.length-1&&(t.push(\"\"),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},uEt=t=>{let e=t.split(\" \"),r=e.length;for(;r>0&&!(AB(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(\" \")+e.slice(r).join(\"\")},AEt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()===\"\")return\"\";let o=\"\",a=\"\",n,u=cEt(t),A=[\"\"];for(let[p,h]of t.split(\" \").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let E=AB(A[A.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(\"\"),E=0),(E>0||r.trim===!1)&&(A[A.length-1]+=\" \",E++)),r.hard&&u[p]>e){let I=e-E,v=1+Math.floor((u[p]-I-1)/e);Math.floor((u[p]-1)/e)<v&&A.push(\"\"),O6(A,h,e);continue}if(E+u[p]>e&&E>0&&u[p]>0){if(r.wordWrap===!1&&E<e){O6(A,h,e);continue}A.push(\"\")}if(E+u[p]>e&&r.wordWrap===!1){O6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(uEt)),o=A.join(`\n`);for(let[p,h]of[...o].entries()){if(a+=h,M6.has(h)){let I=parseFloat(/\\d[^m]*/.exec(o.slice(p,p+4)));n=I===lEt?null:I}let E=aEt.codes.get(Number(n));n&&E&&(o[p+1]===`\n`?a+=jEe(E):h===`\n`&&(a+=jEe(n)))}return a};GEe.exports=(t,e,r)=>String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(o=>AEt(o,e,r)).join(`\n`)});var VEe=_((xKt,KEe)=>{\"use strict\";var WEe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",fEt=t=>t&&t.exact?new RegExp(`^${WEe}$`):new RegExp(WEe,\"g\");KEe.exports=fEt});var U6=_((kKt,ZEe)=>{\"use strict\";var pEt=F6(),hEt=VEe(),JEe=DI(),XEe=[\"\\x1B\",\"\\x9B\"],Vk=t=>`${XEe[0]}[${t}m`,zEe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let u=JEe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(Vk(e?u:n))}else if(e){o.push(Vk(0));break}else o.push(Vk(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=Vk(JEe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join(\"\")};ZEe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r==\"number\"?r:o.length;let n=!1,u,A=0,p=\"\";for(let[h,E]of o.entries()){let I=!1;if(XEe.includes(E)){let v=/\\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,A<r&&(n=!0,u!==void 0&&a.push(u))}else n&&E===\"m\"&&(n=!1,I=!0);if(!n&&!I&&++A,!hEt({exact:!0}).test(E)&&pEt(E.codePointAt())&&++A,A>e&&A<=r)p+=E;else if(A===e&&!n&&u!==void 0)p=zEe(a);else if(A>=r){p+=zEe(a,!0,u);break}}return p}});var eCe=_((QKt,$Ee)=>{\"use strict\";var E0=U6(),gEt=Kk();function Jk(t,e,r){if(t.charAt(e)===\" \")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===\" \")return e+o}else if(t.charAt(e-o)===\" \")return e-o;return e}$Ee.exports=(t,e,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u=\"\\u2026\",A=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 u;let p=gEt(t);if(p<=e)return t;if(o===\"start\"){if(n){let h=Jk(t,p-e+1,!0);return u+E0(t,h,p).trim()}return a===!0&&(u+=\" \",A=2),u+E0(t,p-e+A,p)}if(o===\"middle\"){a===!0&&(u=\" \"+u+\" \",A=3);let h=Math.floor(e/2);if(n){let E=Jk(t,h),I=Jk(t,p-(e-h)+1,!0);return E0(t,0,E)+u+E0(t,I,p).trim()}return E0(t,0,h)+u+E0(t,p-(e-h)+A,p)}if(o===\"end\"){if(n){let h=Jk(t,e-1);return E0(t,0,h)+u}return a===!0&&(u=\" \"+u,A=2),E0(t,0,e-A)+u}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${o}`)}});var H6=_(fB=>{\"use strict\";var tCe=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,\"__esModule\",{value:!0});var dEt=tCe(YEe()),mEt=tCe(eCe()),_6={};fB.default=(t,e,r)=>{let o=t+String(e)+String(r);if(_6[o])return _6[o];let a=t;if(r===\"wrap\"&&(a=dEt.default(t,e,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=mEt.default(t,e,{position:n})}return _6[o]=a,a}});var j6=_(q6=>{\"use strict\";Object.defineProperty(q6,\"__esModule\",{value:!0});var rCe=t=>{let e=\"\";if(t.childNodes.length>0)for(let r of t.childNodes){let o=\"\";r.nodeName===\"#text\"?o=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(o=rCe(r)),o.length>0&&typeof r.internal_transform==\"function\"&&(o=r.internal_transform(o))),e+=o}return e};q6.default=rCe});var G6=_(pi=>{\"use strict\";var pB=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 yEt=pB(am()),nCe=pB(HEe()),EEt=pB(qEe()),CEt=pB(H6()),wEt=pB(j6());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:yEt.default.Node.create()};return t===\"ink-text\"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(IEt.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\")&&zk(t)};pi.insertBeforeNode=(t,e,r)=>{var o,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&&((o=t.yogaNode)===null||o===void 0||o.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\")&&zk(t)};pi.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.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\")&&zk(t)};pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&EEt.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 IEt=function(t,e){var r,o;let a=t.nodeName===\"#text\"?t.nodeValue:wEt.default(t),n=nCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:\"wrap\",A=CEt.default(a,e,u);return nCe.default(A)},iCe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:iCe(t.parentNode)},zk=t=>{let e=iCe(t);e?.markDirty()};pi.setTextNodeValue=(t,e)=>{typeof e!=\"string\"&&(e=String(e)),t.nodeValue=e,zk(t)}});var cCe=_(hB=>{\"use strict\";var lCe=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,\"__esModule\",{value:!0});var sCe=S6(),BEt=lCe(PEe()),oCe=lCe(am()),Oo=G6(),aCe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};hB.default=BEt.default({schedulePassiveEffects:sCe.unstable_scheduleCallback,cancelPassiveEffects:sCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},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,o=e===\"ink-text\"||e===\"ink-virtual-text\";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=t===\"ink-text\"&&o.isInsideText?\"ink-virtual-text\":t,n=Oo.createNode(a);for(let[u,A]of Object.entries(e))u!==\"children\"&&(u===\"style\"?Oo.setStyle(n,A):u===\"internal_transform\"?n.internal_transform=A:u===\"internal_static\"?n.internal_static=!0:Oo.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${t}\" must be rendered inside <Text> component`);return Oo.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{Oo.setTextNodeValue(t,\"\")},unhideTextInstance:(t,e)=>{Oo.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(oCe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(oCe.default.DISPLAY_FLEX)},appendInitialChild:Oo.appendChildNode,appendChild:Oo.appendChildNode,insertBefore:Oo.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:Oo.appendChildNode,insertInContainerBefore:Oo.insertBeforeNode,removeChildFromContainer:(t,e)=>{Oo.removeChildNode(t,e),aCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A===\"style\"&&typeof o.style==\"object\"&&typeof r.style==\"object\"){let h=o.style,E=r.style,I=Object.keys(h);for(let v of I){if(v===\"borderStyle\"||v===\"borderColor\"){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==E[v]){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!==\"children\"&&(r===\"style\"?Oo.setStyle(t,o):r===\"internal_transform\"?t.internal_transform=o:r===\"internal_static\"?t.internal_static=!0:Oo.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{Oo.setTextNodeValue(t,r)},removeChild:(t,e)=>{Oo.removeChildNode(t,e),aCe(e.yogaNode)}})});var ACe=_((LKt,uCe)=>{\"use strict\";uCe.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 o=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var fCe=_(gB=>{\"use strict\";var vEt=gB&&gB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gB,\"__esModule\",{value:!0});var Xk=vEt(am());gB.default=t=>t.getComputedWidth()-t.getComputedPadding(Xk.default.EDGE_LEFT)-t.getComputedPadding(Xk.default.EDGE_RIGHT)-t.getComputedBorder(Xk.default.EDGE_LEFT)-t.getComputedBorder(Xk.default.EDGE_RIGHT)});var pCe=_((MKt,DEt)=>{DEt.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 gCe=_((UKt,Y6)=>{\"use strict\";var hCe=pCe();Y6.exports=hCe;Y6.exports.default=hCe});var mCe=_((_Kt,dCe)=>{\"use strict\";var SEt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},PEt=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};dCe.exports={stringReplaceAll:SEt,stringEncaseCRLFWithFirstIndex:PEt}});var ICe=_((HKt,wCe)=>{\"use strict\";var bEt=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,yCe=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,xEt=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,kEt=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,QEt=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function CCe(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)):QEt.get(t)||t}function FEt(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(xEt))r.push(a[2].replace(kEt,(A,p,h)=>p?CCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function REt(t){yCe.lastIndex=0;let e=[],r;for(;(r=yCe.exec(t))!==null;){let o=r[1];if(r[2]){let a=FEt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function ECe(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 o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}wCe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(bEt,(n,u,A,p,h,E)=>{if(u)a.push(CCe(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:ECe(t,r)(I)),r.push({inverse:A,styles:REt(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(ECe(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.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 o.join(\"\")}});var rQ=_((qKt,bCe)=>{\"use strict\";var dB=DI(),{stdout:K6,stderr:V6}=dN(),{stringReplaceAll:TEt,stringEncaseCRLFWithFirstIndex:NEt}=mCe(),{isArray:Zk}=Array,vCe=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],HC=Object.create(null),LEt=(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=K6?K6.level:0;t.level=e.level===void 0?r:e.level},J6=class{constructor(e){return DCe(e)}},DCe=t=>{let e={};return LEt(e,t),e.template=(...r)=>PCe(e.template,...r),Object.setPrototypeOf(e,$k.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=J6,e.template};function $k(t){return DCe(t)}for(let[t,e]of Object.entries(dB))HC[t]={get(){let r=eQ(this,z6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};HC.visible={get(){let t=eQ(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var SCe=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of SCe)HC[t]={get(){let{level:e}=this;return function(...r){let o=z6(dB.color[vCe[e]][t](...r),dB.color.close,this._styler);return eQ(this,o,this._isEmpty)}}};for(let t of SCe){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);HC[e]={get(){let{level:r}=this;return function(...o){let a=z6(dB.bgColor[vCe[r]][t](...o),dB.bgColor.close,this._styler);return eQ(this,a,this._isEmpty)}}}}var OEt=Object.defineProperties(()=>{},{...HC,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),z6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},eQ=(t,e,r)=>{let o=(...a)=>Zk(a[0])&&Zk(a[0].raw)?BCe(o,PCe(o,...a)):BCe(o,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(o,OEt),o._generator=t,o._styler=e,o._isEmpty=r,o},BCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=TEt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=NEt(e,a,o,n)),o+e+a},W6,PCe=(t,...e)=>{let[r]=e;if(!Zk(r)||!Zk(r.raw))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return W6===void 0&&(W6=ICe()),W6(t,a.join(\"\"))};Object.defineProperties($k.prototype,HC);var tQ=$k();tQ.supportsColor=K6;tQ.stderr=$k({level:V6?V6.level:0});tQ.stderr.supportsColor=V6;bCe.exports=tQ});var X6=_(yB=>{\"use strict\";var MEt=yB&&yB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yB,\"__esModule\",{value:!0});var mB=MEt(rQ()),UEt=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,_Et=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,nQ=(t,e)=>e===\"foreground\"?t:\"bg\"+t[0].toUpperCase()+t.slice(1);yB.default=(t,e,r)=>{if(!e)return t;if(e in mB.default){let a=nQ(e,r);return mB.default[a](t)}if(e.startsWith(\"#\")){let a=nQ(\"hex\",r);return mB.default[a](e)(t)}if(e.startsWith(\"ansi\")){let a=_Et.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]);return mB.default[n](u)(t)}if(e.startsWith(\"rgb\")||e.startsWith(\"hsl\")||e.startsWith(\"hsv\")||e.startsWith(\"hwb\")){let a=UEt.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return mB.default[n](u,A,p)(t)}return t}});var kCe=_(EB=>{\"use strict\";var xCe=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,\"__esModule\",{value:!0});var HEt=xCe(gCe()),Z6=xCe(X6());EB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=HEt.default[r.style.borderStyle],p=Z6.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,\"foreground\"),h=(Z6.default(A.vertical,u,\"foreground\")+`\n`).repeat(n-2),E=Z6.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,\"foreground\");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,E,{transformers:[]})}}});var FCe=_(CB=>{\"use strict\";var lm=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,\"__esModule\",{value:!0});var qEt=lm(am()),jEt=lm(N6()),GEt=lm(ACe()),YEt=lm(H6()),WEt=lm(fCe()),KEt=lm(j6()),VEt=lm(kCe()),JEt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=`\n`.repeat(n)+GEt.default(e,a)}return e},QCe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===qEt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),I=u;if(typeof t.internal_transform==\"function\"&&(I=[t.internal_transform,...u]),t.nodeName===\"ink-text\"){let v=KEt.default(t);if(v.length>0){let x=jEt.default(v),C=WEt.default(p);if(x>C){let R=(o=t.style.textWrap)!==null&&o!==void 0?o:\"wrap\";v=YEt.default(v,C,R)}v=JEt(t,v),e.write(h,E,v,{transformers:I})}return}if(t.nodeName===\"ink-box\"&&VEt.default(h,E,t,e),t.nodeName===\"ink-root\"||t.nodeName===\"ink-box\")for(let v of t.childNodes)QCe(v,e,{offsetX:h,offsetY:E,transformers:I,skipStaticElements:A})}};CB.default=QCe});var TCe=_((WKt,RCe)=>{\"use strict\";RCe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[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.onlyFirst?void 0:\"g\")}});var LCe=_((KKt,$6)=>{\"use strict\";var zEt=TCe(),NCe=t=>typeof t==\"string\"?t.replace(zEt(),\"\"):t;$6.exports=NCe;$6.exports.default=NCe});var UCe=_((VKt,MCe)=>{\"use strict\";var OCe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\";MCe.exports=t=>t&&t.exact?new RegExp(`^${OCe}$`):new RegExp(OCe,\"g\")});var HCe=_((JKt,eq)=>{\"use strict\";var XEt=LCe(),ZEt=UCe(),_Ce=t=>XEt(t).replace(ZEt(),\" \").length;eq.exports=_Ce;eq.exports.default=_Ce});var GCe=_(wB=>{\"use strict\";var jCe=wB&&wB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wB,\"__esModule\",{value:!0});var qCe=jCe(U6()),$Et=jCe(HCe()),tq=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;o<this.height;o++)e.push(\" \".repeat(this.width));for(let o of this.writes){let{x:a,y:n,text:u,transformers:A}=o,p=u.split(`\n`),h=0;for(let E of p){let I=e[n+h];if(!I)continue;let v=$Et.default(E);for(let x of A)E=x(E);e[n+h]=qCe.default(I,0,a)+E+qCe.default(I,a+v),h++}}return{output:e.map(o=>o.trimRight()).join(`\n`),height:e.length}}};wB.default=tq});var KCe=_(IB=>{\"use strict\";var rq=IB&&IB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(IB,\"__esModule\",{value:!0});var eCt=rq(am()),YCe=rq(FCe()),WCe=rq(GCe());IB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,eCt.default.DIRECTION_LTR);let o=new WCe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});YCe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new WCe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),YCe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var XCe=_((ZKt,zCe)=>{\"use strict\";var VCe=ve(\"stream\"),JCe=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],nq={},tCt=t=>{let e=new VCe.PassThrough,r=new VCe.PassThrough;e.write=a=>t(\"stdout\",a),r.write=a=>t(\"stderr\",a);let o=new console.Console(e,r);for(let a of JCe)nq[a]=console[a],console[a]=o[a];return()=>{for(let a of JCe)console[a]=nq[a];nq={}}};zCe.exports=tCt});var sq=_(iq=>{\"use strict\";Object.defineProperty(iq,\"__esModule\",{value:!0});iq.default=new WeakMap});var aq=_(oq=>{\"use strict\";Object.defineProperty(oq,\"__esModule\",{value:!0});var rCt=on(),ZCe=rCt.createContext({exit:()=>{}});ZCe.displayName=\"InternalAppContext\";oq.default=ZCe});var cq=_(lq=>{\"use strict\";Object.defineProperty(lq,\"__esModule\",{value:!0});var nCt=on(),$Ce=nCt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});$Ce.displayName=\"InternalStdinContext\";lq.default=$Ce});var Aq=_(uq=>{\"use strict\";Object.defineProperty(uq,\"__esModule\",{value:!0});var iCt=on(),ewe=iCt.createContext({stdout:void 0,write:()=>{}});ewe.displayName=\"InternalStdoutContext\";uq.default=ewe});var pq=_(fq=>{\"use strict\";Object.defineProperty(fq,\"__esModule\",{value:!0});var sCt=on(),twe=sCt.createContext({stderr:void 0,write:()=>{}});twe.displayName=\"InternalStderrContext\";fq.default=twe});var iQ=_(hq=>{\"use strict\";Object.defineProperty(hq,\"__esModule\",{value:!0});var oCt=on(),rwe=oCt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});rwe.displayName=\"InternalFocusContext\";hq.default=rwe});var iwe=_((sVt,nwe)=>{\"use strict\";var aCt=/[|\\\\{}()[\\]^$+*?.-]/g;nwe.exports=t=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return t.replace(aCt,\"\\\\$&\")}});var lwe=_((oVt,awe)=>{\"use strict\";var lCt=iwe(),cCt=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",owe=[].concat(ve(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(t=>new RegExp(`(?:\\\\((?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));owe.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var BB=class{constructor(e){e={ignoredPackages:[],...e},\"internals\"in e||(e.internals=BB.nodeInternals()),\"cwd\"in e||(e.cwd=cCt),this._cwd=e.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(e.internals,uCt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...owe]}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 o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(u)))return;let A=/^\\s*at /.test(u);o?u=u.trimEnd().replace(/^(\\s+)at /,\"$1\"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,\"\"),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u}\n`).join(\"\")}captureString(e,r=this.captureString){typeof e==\"function\"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e==\"function\"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};swe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(ACt);if(!r)return null;let o=r[1]===\"new\",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],I=r[9],v=r[10]===\"native\",x=r[11]===\")\",C,R={};if(E&&(R.line=Number(E)),I&&(R.column=Number(I)),x&&h){let L=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")L++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(L--,L===-1&&h.charAt(U-1)===\" \")){let J=h.slice(0,U-1);h=h.slice(U+1),a+=` (${J}`;break}}if(a){let L=a.match(fCt);L&&(a=L[1],C=L[2])}return swe(R,h,this._cwd),o&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=A,R.evalColumn=p,R.evalFile=u&&u.replace(/\\\\/g,\"/\")),v&&(R.native=!0),a&&(R.function=a),C&&a!==C&&(R.method=C),R}};function swe(t,e,r){e&&(e=e.replace(/\\\\/g,\"/\"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function uCt(t){if(t.length===0)return[];let e=t.map(r=>lCt(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${e.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var ACt=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),fCt=/^(.*?) \\[as (.*?)\\]$/;awe.exports=BB});var uwe=_((aVt,cwe)=>{\"use strict\";cwe.exports=(t,e)=>t.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(e||2)))});var fwe=_((lVt,Awe)=>{\"use strict\";var pCt=uwe(),hCt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};Awe.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=pCt(t).split(/\\r?\\n/),!(e>t.length))return r={around:3,...r},hCt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var sQ=_(ru=>{\"use strict\";var gCt=ru&&ru.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),dCt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),mCt=ru&&ru.__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)&&gCt(e,t,r);return dCt(e,t),e},yCt=ru&&ru.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,o=Object.getOwnPropertySymbols(t);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(t,o[a])&&(r[o[a]]=t[o[a]]);return r};Object.defineProperty(ru,\"__esModule\",{value:!0});var pwe=mCt(on()),gq=pwe.forwardRef((t,e)=>{var{children:r}=t,o=yCt(t,[\"children\"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return pwe.default.createElement(\"ink-box\",{ref:e,style:a},r)});gq.displayName=\"Box\";gq.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};ru.default=gq});var yq=_(vB=>{\"use strict\";var dq=vB&&vB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vB,\"__esModule\",{value:!0});var ECt=dq(on()),qC=dq(rQ()),hwe=dq(X6()),mq=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let E=I=>(r&&(I=qC.default.dim(I)),t&&(I=hwe.default(I,t,\"foreground\")),e&&(I=hwe.default(I,e,\"background\")),o&&(I=qC.default.bold(I)),a&&(I=qC.default.italic(I)),n&&(I=qC.default.underline(I)),u&&(I=qC.default.strikethrough(I)),A&&(I=qC.default.inverse(I)),I);return ECt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};mq.displayName=\"Text\";mq.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};vB.default=mq});var ywe=_(nu=>{\"use strict\";var CCt=nu&&nu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),wCt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ICt=nu&&nu.__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)&&CCt(e,t,r);return wCt(e,t),e},DB=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,\"__esModule\",{value:!0});var gwe=ICt(ve(\"fs\")),fs=DB(on()),dwe=DB(lwe()),BCt=DB(fwe()),Zf=DB(sQ()),hA=DB(yq()),mwe=new dwe.default({cwd:process.cwd(),internals:dwe.default.nodeInternals()}),vCt=({error:t})=>{let e=t.stack?t.stack.split(`\n`).slice(1):void 0,r=e?mwe.parseLine(e[0]):void 0,o,a=0;if(r?.file&&r?.line&&gwe.existsSync(r.file)){let n=gwe.readFileSync(r.file,\"utf8\");if(o=BCt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return fs.default.createElement(Zf.default,{flexDirection:\"column\",padding:1},fs.default.createElement(Zf.default,null,fs.default.createElement(hA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),fs.default.createElement(hA.default,null,\" \",t.message)),r&&fs.default.createElement(Zf.default,{marginTop:1},fs.default.createElement(hA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&o&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:\"column\"},o.map(({line:n,value:u})=>fs.default.createElement(Zf.default,{key:n},fs.default.createElement(Zf.default,{width:a+1},fs.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,\" \"),\":\")),fs.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+u)))),t.stack&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:\"column\"},t.stack.split(`\n`).slice(1).map(n=>{let u=mwe.parseLine(n);return u?fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},u.function),fs.default.createElement(hA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",u.file,\":\",u.line,\":\",u.column,\")\")):fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};nu.default=vCt});var Cwe=_(iu=>{\"use strict\";var DCt=iu&&iu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),SCt=iu&&iu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),PCt=iu&&iu.__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)&&DCt(e,t,r);return SCt(e,t),e},um=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,\"__esModule\",{value:!0});var cm=PCt(on()),Ewe=um(g6()),bCt=um(aq()),xCt=um(cq()),kCt=um(Aq()),QCt=um(pq()),FCt=um(iQ()),RCt=um(ywe()),TCt=\"\t\",NCt=\"\\x1B[Z\",LCt=\"\\x1B\",oQ=class extends cm.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===LCt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===TCt&&this.focusNext(),e===NCt&&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.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o<e.focusables.length;o++)if(e.focusables[o].isActive)return e.focusables[o].id},this.findPreviousFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return cm.default.createElement(bCt.default.Provider,{value:{exit:this.handleExit}},cm.default.createElement(xCt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},cm.default.createElement(kCt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},cm.default.createElement(QCt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},cm.default.createElement(FCt.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}},this.state.error?cm.default.createElement(RCt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){Ewe.default.hide(this.props.stdout)}componentWillUnmount(){Ewe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};iu.default=oQ;oQ.displayName=\"InternalApp\"});var Bwe=_(su=>{\"use strict\";var OCt=su&&su.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),MCt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UCt=su&&su.__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)&&OCt(e,t,r);return MCt(e,t),e},ou=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,\"__esModule\",{value:!0});var _Ct=ou(on()),wwe=lM(),HCt=ou(lEe()),qCt=ou(u6()),jCt=ou(hEe()),GCt=ou(dEe()),Eq=ou(cCe()),YCt=ou(KCe()),WCt=ou(h6()),KCt=ou(XCe()),VCt=UCt(G6()),JCt=ou(sq()),zCt=ou(Cwe()),jC=process.env.CI===\"false\"?!1:jCt.default,Iwe=()=>{},Cq=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=YCt.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(jC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(qCt.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},GCt.default(this),this.options=e,this.rootNode=VCt.createNode(\"ink-root\"),this.rootNode.onRender=e.debug?this.onRender:wwe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=HCt.default.create(e.stdout),this.throttledLog=e.debug?this.log:wwe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=Eq.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=WCt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),jC||(e.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{e.stdout.off(\"resize\",this.onRender)})}render(e){let r=_Ct.default.createElement(zCt.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);Eq.default.updateContainer(r,this.container,null,Iwe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(jC){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(jC){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(),jC?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,Eq.default.updateContainer(null,this.container,null,Iwe),JCt.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(){!jC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=KCt.default((e,r)=>{e===\"stdout\"&&this.writeToStdout(r),e===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};su.default=Cq});var Dwe=_(SB=>{\"use strict\";var vwe=SB&&SB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SB,\"__esModule\",{value:!0});var XCt=vwe(Bwe()),aQ=vwe(sq()),ZCt=ve(\"stream\"),$Ct=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},ewt(e)),o=twt(r.stdout,()=>new XCt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>aQ.default.delete(r.stdout),clear:o.clear}};SB.default=$Ct;var ewt=(t={})=>t instanceof ZCt.Stream?{stdout:t,stdin:process.stdin}:t,twt=(t,e)=>{let r;return aQ.default.has(t)?r=aQ.default.get(t):(r=e(),aQ.default.set(t,r)),r}});var Pwe=_($f=>{\"use strict\";var rwt=$f&&$f.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),nwt=$f&&$f.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),iwt=$f&&$f.__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)&&rwt(e,t,r);return nwt(e,t),e};Object.defineProperty($f,\"__esModule\",{value:!0});var PB=iwt(on()),Swe=t=>{let{items:e,children:r,style:o}=t,[a,n]=PB.useState(0),u=PB.useMemo(()=>e.slice(a),[e,a]);PB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,E)=>r(h,a+E)),p=PB.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},o),[o]);return PB.default.createElement(\"ink-box\",{internal_static:!0,style:p},A)};Swe.displayName=\"Static\";$f.default=Swe});var xwe=_(bB=>{\"use strict\";var swt=bB&&bB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bB,\"__esModule\",{value:!0});var owt=swt(on()),bwe=({children:t,transform:e})=>t==null?null:owt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:e},t);bwe.displayName=\"Transform\";bB.default=bwe});var Qwe=_(xB=>{\"use strict\";var awt=xB&&xB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xB,\"__esModule\",{value:!0});var lwt=awt(on()),kwe=({count:t=1})=>lwt.default.createElement(\"ink-text\",null,`\n`.repeat(t));kwe.displayName=\"Newline\";xB.default=kwe});var Twe=_(kB=>{\"use strict\";var Fwe=kB&&kB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kB,\"__esModule\",{value:!0});var cwt=Fwe(on()),uwt=Fwe(sQ()),Rwe=()=>cwt.default.createElement(uwt.default,{flexGrow:1});Rwe.displayName=\"Spacer\";kB.default=Rwe});var lQ=_(QB=>{\"use strict\";var Awt=QB&&QB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QB,\"__esModule\",{value:!0});var fwt=on(),pwt=Awt(cq()),hwt=()=>fwt.useContext(pwt.default);QB.default=hwt});var Lwe=_(FB=>{\"use strict\";var gwt=FB&&FB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(FB,\"__esModule\",{value:!0});var Nwe=on(),dwt=gwt(lQ()),mwt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=dwt.default();Nwe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),Nwe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A===\"\\x1B[A\",downArrow:A===\"\\x1B[B\",leftArrow:A===\"\\x1B[D\",rightArrow:A===\"\\x1B[C\",pageDown:A===\"\\x1B[6~\",pageUp:A===\"\\x1B[5~\",return:A===\"\\r\",escape:A===\"\\x1B\",ctrl:!1,shift:!1,tab:A===\"\t\"||A===\"\\x1B[Z\",backspace:A===\"\\b\",delete:A===\"\\x7F\"||A===\"\\x1B[3~\",meta:!1};A<=\"\u001a\"&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+\"a\".charCodeAt(0)-1),p.ctrl=!0),A.startsWith(\"\\x1B\")&&(A=A.slice(1),p.meta=!0);let h=A>=\"A\"&&A<=\"Z\",E=A>=\"\\u0410\"&&A<=\"\\u042F\";A.length===1&&(h||E)&&(p.shift=!0),p.tab&&A===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=\"\"),(!(A===\"c\"&&p.ctrl)||!a)&&t(A,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[e.isActive,r,a,t])};FB.default=mwt});var Owe=_(RB=>{\"use strict\";var ywt=RB&&RB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RB,\"__esModule\",{value:!0});var Ewt=on(),Cwt=ywt(aq()),wwt=()=>Ewt.useContext(Cwt.default);RB.default=wwt});var Mwe=_(TB=>{\"use strict\";var Iwt=TB&&TB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TB,\"__esModule\",{value:!0});var Bwt=on(),vwt=Iwt(Aq()),Dwt=()=>Bwt.useContext(vwt.default);TB.default=Dwt});var Uwe=_(NB=>{\"use strict\";var Swt=NB&&NB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(NB,\"__esModule\",{value:!0});var Pwt=on(),bwt=Swt(pq()),xwt=()=>Pwt.useContext(bwt.default);NB.default=xwt});var Hwe=_(OB=>{\"use strict\";var _we=OB&&OB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(OB,\"__esModule\",{value:!0});var LB=on(),kwt=_we(iQ()),Qwt=_we(lQ()),Fwt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=Qwt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=LB.useContext(kwt.default),h=LB.useMemo(()=>Math.random().toString().slice(2,7),[]);return LB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),LB.useEffect(()=>{t?A(h):p(h)},[t,h]),LB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};OB.default=Fwt});var qwe=_(MB=>{\"use strict\";var Rwt=MB&&MB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(MB,\"__esModule\",{value:!0});var Twt=on(),Nwt=Rwt(iQ()),Lwt=()=>{let t=Twt.useContext(Nwt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};MB.default=Lwt});var jwe=_(wq=>{\"use strict\";Object.defineProperty(wq,\"__esModule\",{value:!0});wq.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var ic=_(ro=>{\"use strict\";Object.defineProperty(ro,\"__esModule\",{value:!0});var Owt=Dwe();Object.defineProperty(ro,\"render\",{enumerable:!0,get:function(){return Owt.default}});var Mwt=sQ();Object.defineProperty(ro,\"Box\",{enumerable:!0,get:function(){return Mwt.default}});var Uwt=yq();Object.defineProperty(ro,\"Text\",{enumerable:!0,get:function(){return Uwt.default}});var _wt=Pwe();Object.defineProperty(ro,\"Static\",{enumerable:!0,get:function(){return _wt.default}});var Hwt=xwe();Object.defineProperty(ro,\"Transform\",{enumerable:!0,get:function(){return Hwt.default}});var qwt=Qwe();Object.defineProperty(ro,\"Newline\",{enumerable:!0,get:function(){return qwt.default}});var jwt=Twe();Object.defineProperty(ro,\"Spacer\",{enumerable:!0,get:function(){return jwt.default}});var Gwt=Lwe();Object.defineProperty(ro,\"useInput\",{enumerable:!0,get:function(){return Gwt.default}});var Ywt=Owe();Object.defineProperty(ro,\"useApp\",{enumerable:!0,get:function(){return Ywt.default}});var Wwt=lQ();Object.defineProperty(ro,\"useStdin\",{enumerable:!0,get:function(){return Wwt.default}});var Kwt=Mwe();Object.defineProperty(ro,\"useStdout\",{enumerable:!0,get:function(){return Kwt.default}});var Vwt=Uwe();Object.defineProperty(ro,\"useStderr\",{enumerable:!0,get:function(){return Vwt.default}});var Jwt=Hwe();Object.defineProperty(ro,\"useFocus\",{enumerable:!0,get:function(){return Jwt.default}});var zwt=qwe();Object.defineProperty(ro,\"useFocusManager\",{enumerable:!0,get:function(){return zwt.default}});var Xwt=jwe();Object.defineProperty(ro,\"measureElement\",{enumerable:!0,get:function(){return Xwt.default}})});var Bq={};Vt(Bq,{Gem:()=>Iq});var Gwe,Am,Iq,cQ=Et(()=>{Gwe=$e(ic()),Am=$e(on()),Iq=(0,Am.memo)(({active:t})=>{let e=(0,Am.useMemo)(()=>t?\"\\u25C9\":\"\\u25EF\",[t]),r=(0,Am.useMemo)(()=>t?\"green\":\"yellow\",[t]);return Am.default.createElement(Gwe.Text,{color:r},e)})});var Wwe={};Vt(Wwe,{useKeypress:()=>fm});function fm({active:t},e,r){let{stdin:o}=(0,Ywe.useStdin)(),a=(0,uQ.useCallback)((n,u)=>e(n,u),r);(0,uQ.useEffect)(()=>{if(!(!t||!o))return o.on(\"keypress\",a),()=>{o.off(\"keypress\",a)}},[t,a,o])}var Ywe,uQ,UB=Et(()=>{Ywe=$e(ic()),uQ=$e(on())});var Vwe={};Vt(Vwe,{FocusRequest:()=>Kwe,useFocusRequest:()=>vq});var Kwe,vq,Dq=Et(()=>{UB();Kwe=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(Kwe||{}),vq=function({active:t},e,r){fm({active:t},(o,a)=>{a.name===\"tab\"&&(a.shift?e(\"before\"):e(\"after\"))},r)}});var Jwe={};Vt(Jwe,{useListInput:()=>_B});var _B,AQ=Et(()=>{UB();_B=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){fm({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let E=h-1;if(u){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(u){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,u])}});var fQ={};Vt(fQ,{ScrollableItems:()=>Zwt});var C0,La,Zwt,pQ=Et(()=>{C0=$e(ic()),La=$e(on());Dq();AQ();Zwt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=L=>{if(L.key===null)throw new Error(\"Expected all children to have a key\");return L.key},p=La.default.Children.map(e,L=>A(L)),h=p[0],[E,I]=(0,La.useState)(h),v=p.indexOf(E);(0,La.useEffect)(()=>{p.includes(E)||I(h)},[e]),(0,La.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),vq({active:t&&!!n},L=>{n?.(L)},[n]),_B(E,p,{active:t,minus:\"up\",plus:\"down\",set:I,loop:a});let x=v-r,C=v+r;C>p.length&&(x-=C-p.length,C=p.length),x<0&&(C+=-x,x=0),C>=p.length&&(C=p.length-1);let R=[];for(let L=x;L<=C;++L){let U=p[L],J=t&&U===E;R.push(La.default.createElement(C0.Box,{key:U,height:o},La.default.createElement(C0.Box,{marginLeft:1,marginRight:1},La.default.createElement(C0.Text,null,J?La.default.createElement(C0.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),La.default.createElement(C0.Box,null,La.default.cloneElement(e[L],{active:J}))))}return La.default.createElement(C0.Box,{flexDirection:\"column\",width:\"100%\"},R)}});var zwe,ep,Xwe,Sq,Zwe,Pq=Et(()=>{zwe=$e(ic()),ep=$e(on()),Xwe=ve(\"readline\"),Sq=ep.default.createContext(null),Zwe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,zwe.useStdin)();(0,ep.useEffect)(()=>{r&&r(!0),e&&(0,Xwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,ep.useState)(new Map),n=(0,ep.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return ep.default.createElement(Sq.Provider,{value:n,children:t})}});var bq={};Vt(bq,{useMinistore:()=>$wt});function $wt(t,e){let r=(0,hQ.useContext)(Sq);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof t>\"u\")return r.getAll();let o=(0,hQ.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>\"u\"&&(a=e),[a,o]}var hQ,xq=Et(()=>{hQ=$e(on());Pq()});var dQ={};Vt(dQ,{renderForm:()=>eIt});async function eIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,gQ.useApp)();fm({active:!0},(E,I)=>{I.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,gQ.render)(kq.default.createElement(Zwe,null,kq.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var gQ,kq,mQ=Et(()=>{gQ=$e(ic()),kq=$e(on());Pq();UB()});var rIe=_(HB=>{\"use strict\";Object.defineProperty(HB,\"__esModule\",{value:!0});HB.UncontrolledTextInput=void 0;var eIe=on(),Qq=on(),$we=ic(),pm=rQ(),tIe=({value:t,placeholder:e=\"\",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},E]=Qq.useState({cursorOffset:(t||\"\").length,cursorWidth:0});Qq.useEffect(()=>{E(R=>{if(!r||!n)return R;let L=t||\"\";return R.cursorOffset>L.length-1?{cursorOffset:L.length,cursorWidth:0}:R})},[t,r,n]);let I=a?h:0,v=o?o.repeat(t.length):t,x=v,C=e?pm.grey(e):void 0;if(n&&r){C=e.length>0?pm.inverse(e[0])+pm.grey(e.slice(1)):pm.inverse(\" \"),x=v.length>0?\"\":pm.inverse(\" \");let R=0;for(let L of v)R>=p-I&&R<=p?x+=pm.inverse(L):x+=L,R++;v.length>0&&p===v.length&&(x+=pm.inverse(\" \"))}return $we.useInput((R,L)=>{if(L.upArrow||L.downArrow||L.ctrl&&R===\"c\"||L.tab||L.shift&&L.tab)return;if(L.return){A&&A(t);return}let U=p,J=t,te=0;L.leftArrow?n&&U--:L.rightArrow?n&&U++:L.backspace||L.delete?p>0&&(J=t.slice(0,p-1)+t.slice(p,t.length),U--):(J=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}),J!==t&&u(J)},{isActive:r}),eIe.createElement($we.Text,null,e?v.length>0?x:C:x)};HB.default=tIe;HB.UncontrolledTextInput=t=>{let[e,r]=Qq.useState(\"\");return eIe.createElement(tIe,Object.assign({},t,{value:e,onChange:r}))}});var sIe={};Vt(sIe,{Pad:()=>Fq});var nIe,iIe,Fq,Rq=Et(()=>{nIe=$e(ic()),iIe=$e(on()),Fq=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${\"-\".repeat(t-1)}`:\" \";return iIe.default.createElement(nIe.Text,{dimColor:!e},r)}});var oIe={};Vt(oIe,{ItemOptions:()=>tIt});var jB,I0,tIt,aIe=Et(()=>{jB=$e(ic()),I0=$e(on());AQ();cQ();Rq();tIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!=\"\");return _B(o,u,{active:t,minus:\"left\",plus:\"right\",set:a}),I0.default.createElement(I0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===A,I=n[h]-1||0,v=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),x=Math.max(0,I-v.length-2);return p?I0.default.createElement(jB.Box,{key:p,width:I,marginLeft:1},I0.default.createElement(jB.Text,{wrap:\"truncate\"},I0.default.createElement(Iq,{active:E}),\" \",p),e?I0.default.createElement(Fq,{active:t,length:x}):null):I0.default.createElement(jB.Box,{key:`spacer-${h}`,width:I,marginLeft:1})}))}});var BIe=_((zJt,IIe)=>{var qq;IIe.exports=()=>(typeof qq>\"u\"&&(qq=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),qq)});var GIe=_((wzt,jIe)=>{var Xq=Symbol(\"arg flag\"),Oa=class extends Error{constructor(e,r){super(e),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,Oa.prototype)}};function sv(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:o=!1}={}){if(!t)throw new Oa(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},u={};for(let A of Object.keys(t)){if(!A)throw new Oa(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(A[0]!==\"-\")throw new Oa(`argument key must start with '-' but found: '${A}'`,\"ARG_CONFIG_NONOPT_KEY\");if(A.length===1)throw new Oa(`argument key must have a name; singular '-' keys are not allowed: ${A}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof t[A]==\"string\"){n[A]=t[A];continue}let p=t[A],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(I,v,x=[])=>(x.push(E(I,v,x[x.length-1])),x),h=E===Boolean||E[Xq]===!0}else if(typeof p==\"function\")h=p===Boolean||p[Xq]===!0;else throw new Oa(`type missing or not a function or valid array type: ${A}`,\"ARG_CONFIG_VAD_TYPE\");if(A[1]!==\"-\"&&A.length>2)throw new Oa(`short argument keys (with a single hyphen) must have only one character: ${A}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");u[A]=[p,h]}for(let A=0,p=e.length;A<p;A++){let h=e[A];if(o&&a._.length>0){a._=a._.concat(e.slice(A));break}if(h===\"--\"){a._=a._.concat(e.slice(A+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(I=>`-${I}`);for(let I=0;I<E.length;I++){let v=E[I],[x,C]=v[1]===\"-\"?v.split(/=(.*)/,2):[v,void 0],R=x;for(;R in n;)R=n[R];if(!(R in u))if(r){a._.push(v);continue}else throw new Oa(`unknown or unexpected option: ${x}`,\"ARG_UNKNOWN_OPTION\");let[L,U]=u[R];if(!U&&I+1<E.length)throw new Oa(`option requires argument (but was followed by another short argument): ${x}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[R]=L(!0,R,a[R]);else if(C===void 0){if(e.length<A+2||e[A+1].length>1&&e[A+1][0]===\"-\"&&!(e[A+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(L===Number||typeof BigInt<\"u\"&&L===BigInt))){let J=x===R?\"\":` (alias for ${R})`;throw new Oa(`option requires argument: ${x}${J}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[R]=L(e[A+1],R,a[R]),++A}else a[R]=L(C,R,a[R])}}else a._.push(h)}return a}sv.flag=t=>(t[Xq]=!0,t);sv.COUNT=sv.flag((t,e,r)=>(r||0)+1);sv.ArgError=Oa;jIe.exports=sv});var ZIe=_((Jzt,XIe)=>{var tj;XIe.exports=()=>(typeof tj>\"u\"&&(tj=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),tj)});var n1e=_((aj,lj)=>{(function(t){aj&&typeof aj==\"object\"&&typeof lj<\"u\"?lj.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 a1e=_((KXt,o1e)=>{\"use strict\";cj.ifExists=ZIt;var YC=ve(\"util\"),sc=ve(\"path\"),i1e=n1e(),JIt=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,zIt={createPwshFile:!0,createCmdFile:i1e(),fs:ve(\"fs\")},XIt=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function s1e(t){let e={...zIt,...t},r=e.fs;return e.fs_={chmod:r.chmod?YC.promisify(r.chmod):async()=>{},mkdir:YC.promisify(r.mkdir),readFile:YC.promisify(r.readFile),stat:YC.promisify(r.stat),unlink:YC.promisify(r.unlink),writeFile:YC.promisify(r.writeFile)},e}async function cj(t,e,r){let o=s1e(r);await o.fs_.stat(t),await e1t(t,e,o)}function ZIt(t,e,r){return cj(t,e,r).catch(()=>{})}function $It(t,e){return e.fs_.unlink(t).catch(()=>{})}async function e1t(t,e,r){let o=await s1t(t,r);return await t1t(e,r),r1t(t,e,o,r)}function t1t(t,e){return e.fs_.mkdir(sc.dirname(t),{recursive:!0})}function r1t(t,e,r,o){let a=s1e(o),n=[{generator:l1t,extension:\"\"}];return a.createCmdFile&&n.push({generator:a1t,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:c1t,extension:\".ps1\"}),Promise.all(n.map(u=>o1t(t,e+u.extension,r,u.generator,a)))}function n1t(t,e){return $It(t,e)}function i1t(t,e){return u1t(t,e)}async function s1t(t,e){let a=(await e.fs_.readFile(t,\"utf8\")).trim().split(/\\r*\\n/)[0].match(JIt);if(!a){let n=sc.extname(t).toLowerCase();return{program:XIt.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function o1t(t,e,r,o,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",u=[r.additionalArgs,n].filter(A=>A).join(\" \");return a=Object.assign({},a,{prog:r.program,args:u}),await n1t(e,a),await a.fs_.writeFile(e,o(t,e,a),\"utf8\"),i1t(e,a)}function a1t(t,e,r){let a=sc.relative(sc.dirname(e),t).split(\"/\").join(\"\\\\\"),n=sc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,u,A=r.prog,p=r.args||\"\",h=uj(r.nodePath).win32;A?(u=`\"%~dp0\\\\${A}.exe\"`,a=n):(A=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",I=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return u?I+=`@IF EXIST ${u} (\\r\n  ${u} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${A} ${p} ${a} ${E}%*\\r\n)\\r\n`:I+=`@${A} ${p} ${a} ${E}%*\\r\n`,I}function l1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;o=o.split(\"\\\\\").join(\"/\");let u=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,A=r.args||\"\",p=uj(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,o=u):(a=u,A=\"\",o=\"\");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`,I=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${I}if [ -x ${n} ]; then\n  exec ${n} ${A} ${o} ${h}\"$@\"\nelse\n  exec ${a} ${A} ${o} ${h}\"$@\"\nfi\n`:E+=`${I}${a} ${A} ${o} ${h}\"$@\"\nexit $?\n`,E}function c1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,u;o=o.split(\"\\\\\").join(\"/\");let A=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,p=r.args||\"\",h=uj(r.nodePath),E=h.win32,I=h.posix;n?(u=`\"$basedir/${r.prog}$exe\"`,o=A):(n=A,p=\"\",o=\"\");let v=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",x=`#!/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&&(x+=` else {\n  $env:NODE_PATH=\"${I}\"\n}`),u?x+=`\n$ret=0\nif (Test-Path ${u}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${u} ${p} ${o} ${v}$args\n  } else {\n    & ${u} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${o} ${v}$args\n  } else {\n    & ${n} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:x+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${o} ${v}$args\n} else {\n  & ${n} ${p} ${o} ${v}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,x}function u1t(t,e){return e.fs_.chmod(t,493)}function uj(t){if(!t)return{win32:\"\",posix:\"\"};let e=typeof t==\"string\"?t.split(sc.delimiter):Array.from(t),r={};for(let o=0;o<e.length;o++){let a=e[o].split(\"/\").join(\"\\\\\"),n=i1e()?e[o].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(u,A)=>`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}o1e.exports=cj});var vj=_((h$t,b1e)=>{b1e.exports=ve(\"stream\")});var F1e=_((g$t,Q1e)=>{\"use strict\";function x1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function O1t(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?x1e(Object(r),!0).forEach(function(o){M1t(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):x1e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function M1t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function U1t(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function k1e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function _1t(t,e,r){return e&&k1e(t.prototype,e),r&&k1e(t,r),t}var H1t=ve(\"buffer\"),xQ=H1t.Buffer,q1t=ve(\"util\"),Dj=q1t.inspect,j1t=Dj&&Dj.custom||\"inspect\";function G1t(t,e,r){xQ.prototype.copy.call(t,e,r)}Q1e.exports=function(){function t(){U1t(this,t),this.head=null,this.tail=null,this.length=0}return _1t(t,[{key:\"push\",value:function(r){var o={data:r,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:\"unshift\",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++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 o=this.head,a=\"\"+o.data;o=o.next;)a+=r+o.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return xQ.alloc(0);for(var o=xQ.allocUnsafe(r>>>0),a=this.head,n=0;a;)G1t(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:\"consume\",value:function(r,o){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=o?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var o=this.head,a=1,n=o.data;for(r-=n.length;o=o.next;){var u=o.data,A=r>u.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var o=xQ.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:j1t,value:function(r,o){return Dj(this,O1t({},o,{depth:0,customInspect:!1}))}}]),t}()});var Pj=_((d$t,T1e)=>{\"use strict\";function Y1t(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Sj,this,t)):process.nextTick(Sj,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(kQ,r):(r._writableState.errorEmitted=!0,process.nextTick(R1e,r,n)):process.nextTick(R1e,r,n):e?(process.nextTick(kQ,r),e(n)):process.nextTick(kQ,r)}),this)}function R1e(t,e){Sj(t,e),kQ(t)}function kQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function W1t(){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 Sj(t,e){t.emit(\"error\",e)}function K1t(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit(\"error\",e)}T1e.exports={destroy:Y1t,undestroy:W1t,errorOrDestroy:K1t}});var Q0=_((m$t,O1e)=>{\"use strict\";var L1e={};function ac(t,e,r){r||(r=Error);function o(n,u,A){return typeof e==\"string\"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,L1e[t]=a}function N1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),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 V1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function J1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function z1t(t,e,r){return typeof r!=\"number\"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ac(\"ERR_INVALID_OPT_VALUE\",function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'},TypeError);ac(\"ERR_INVALID_ARG_TYPE\",function(t,e,r){let o;typeof e==\"string\"&&V1t(e,\"not \")?(o=\"must not be\",e=e.replace(/^not /,\"\")):o=\"must be\";let a;if(J1t(t,\" argument\"))a=`The ${t} ${o} ${N1e(e,\"type\")}`;else{let n=z1t(t,\".\")?\"property\":\"argument\";a=`The \"${t}\" ${n} ${o} ${N1e(e,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);ac(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");ac(\"ERR_METHOD_NOT_IMPLEMENTED\",function(t){return\"The \"+t+\" method is not implemented\"});ac(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");ac(\"ERR_STREAM_DESTROYED\",function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"});ac(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");ac(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");ac(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");ac(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);ac(\"ERR_UNKNOWN_ENCODING\",function(t){return\"Unknown encoding: \"+t},TypeError);ac(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");O1e.exports.codes=L1e});var bj=_((y$t,M1e)=>{\"use strict\";var X1t=Q0().codes.ERR_INVALID_OPT_VALUE;function Z1t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function $1t(t,e,r,o){var a=Z1t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:\"highWaterMark\";throw new X1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}M1e.exports={getHighWaterMark:$1t}});var U1e=_((E$t,xj)=>{typeof Object.create==\"function\"?xj.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:xj.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var F0=_((C$t,Qj)=>{try{if(kj=ve(\"util\"),typeof kj.inherits!=\"function\")throw\"\";Qj.exports=kj.inherits}catch{Qj.exports=U1e()}var kj});var H1e=_((w$t,_1e)=>{_1e.exports=ve(\"util\").deprecate});var Tj=_((I$t,K1e)=>{\"use strict\";K1e.exports=Ri;function j1e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){S2t(e,t)}}var zC;Ri.WritableState=mv;var e2t={deprecate:H1e()},G1e=vj(),FQ=ve(\"buffer\").Buffer,t2t=global.Uint8Array||function(){};function r2t(t){return FQ.from(t)}function n2t(t){return FQ.isBuffer(t)||t instanceof t2t}var Rj=Pj(),i2t=bj(),s2t=i2t.getHighWaterMark,R0=Q0().codes,o2t=R0.ERR_INVALID_ARG_TYPE,a2t=R0.ERR_METHOD_NOT_IMPLEMENTED,l2t=R0.ERR_MULTIPLE_CALLBACK,c2t=R0.ERR_STREAM_CANNOT_PIPE,u2t=R0.ERR_STREAM_DESTROYED,A2t=R0.ERR_STREAM_NULL_VALUES,f2t=R0.ERR_STREAM_WRITE_AFTER_END,p2t=R0.ERR_UNKNOWN_ENCODING,XC=Rj.errorOrDestroy;F0()(Ri,G1e);function h2t(){}function mv(t,e,r){zC=zC||Cm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof zC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=s2t(this,t,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){w2t(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 j1e(this)}mv.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(mv.prototype,\"buffer\",{get:e2t.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var QQ;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?(QQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ri,Symbol.hasInstance,{value:function(e){return QQ.call(this,e)?!0:this!==Ri?!1:e&&e._writableState instanceof mv}})):QQ=function(e){return e instanceof this};function Ri(t){zC=zC||Cm();var e=this instanceof zC;if(!e&&!QQ.call(Ri,this))return new Ri(t);this._writableState=new mv(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)),G1e.call(this)}Ri.prototype.pipe=function(){XC(this,new c2t)};function g2t(t,e){var r=new f2t;XC(t,r),process.nextTick(e,r)}function d2t(t,e,r,o){var a;return r===null?a=new A2t:typeof r!=\"string\"&&!e.objectMode&&(a=new o2t(\"chunk\",[\"string\",\"Buffer\"],r)),a?(XC(t,a),process.nextTick(o,a),!1):!0}Ri.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&n2t(t);return n&&!FQ.isBuffer(t)&&(t=r2t(t)),typeof e==\"function\"&&(r=e,e=null),n?e=\"buffer\":e||(e=o.defaultEncoding),typeof r!=\"function\"&&(r=h2t),o.ending?g2t(this,r):(n||d2t(this,o,t,r))&&(o.pendingcb++,a=y2t(this,o,n,t,e,r)),a};Ri.prototype.cork=function(){this._writableState.corked++};Ri.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Y1e(this,t))};Ri.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 p2t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Ri.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function m2t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e==\"string\"&&(e=FQ.from(e,r)),e}Object.defineProperty(Ri.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function y2t(t,e,r,o,a,n){if(!r){var u=m2t(e,o,a);o!==u&&(r=!0,a=\"buffer\",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:o,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else Fj(t,e,!1,A,o,a,n);return p}function Fj(t,e,r,o,a,n,u){e.writelen=o,e.writecb=u,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new u2t(\"write\")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function E2t(t,e,r,o,a){--e.pendingcb,r?(process.nextTick(a,o),process.nextTick(dv,t,e),t._writableState.errorEmitted=!0,XC(t,o)):(a(o),t._writableState.errorEmitted=!0,XC(t,o),dv(t,e))}function C2t(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function w2t(t,e){var r=t._writableState,o=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new l2t;if(C2t(r),e)E2t(t,r,o,e,a);else{var n=W1e(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&Y1e(t,r),o?process.nextTick(q1e,t,r,n,a):q1e(t,r,n,a)}}function q1e(t,e,r,o){r||I2t(t,e),e.pendingcb--,o(),dv(t,e)}function I2t(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}function Y1e(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var o=e.bufferedRequestCount,a=new Array(o),n=e.corkedRequestsFree;n.entry=r;for(var u=0,A=!0;r;)a[u]=r,r.isBuf||(A=!1),r=r.next,u+=1;a.allBuffers=A,Fj(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 j1e(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,I=e.objectMode?1:p.length;if(Fj(t,e,!1,I,p,h,E),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Ri.prototype._write=function(t,e,r){r(new a2t(\"_write()\"))};Ri.prototype._writev=null;Ri.prototype.end=function(t,e,r){var o=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),o.corked&&(o.corked=1,this.uncork()),o.ending||D2t(this,o,r),this};Object.defineProperty(Ri.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function W1e(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function B2t(t,e){t._final(function(r){e.pendingcb--,r&&XC(t,r),e.prefinished=!0,t.emit(\"prefinish\"),dv(t,e)})}function v2t(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final==\"function\"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(B2t,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}function dv(t,e){var r=W1e(e);if(r&&(v2t(t,e),e.pendingcb===0&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var o=t._readableState;(!o||o.autoDestroy&&o.endEmitted)&&t.destroy()}return r}function D2t(t,e,r){e.ending=!0,dv(t,e),r&&(e.finished?process.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}function S2t(t,e,r){var o=t.entry;for(t.entry=null;o;){var a=o.callback;e.pendingcb--,a(r),o=o.next}e.corkedRequestsFree.next=t}Object.defineProperty(Ri.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){!this._writableState||(this._writableState.destroyed=e)}});Ri.prototype.destroy=Rj.destroy;Ri.prototype._undestroy=Rj.undestroy;Ri.prototype._destroy=function(t,e){e(t)}});var Cm=_((B$t,J1e)=>{\"use strict\";var P2t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};J1e.exports=EA;var V1e=Oj(),Lj=Tj();F0()(EA,V1e);for(Nj=P2t(Lj.prototype),RQ=0;RQ<Nj.length;RQ++)TQ=Nj[RQ],EA.prototype[TQ]||(EA.prototype[TQ]=Lj.prototype[TQ]);var Nj,TQ,RQ;function EA(t){if(!(this instanceof EA))return new EA(t);V1e.call(this,t),Lj.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\",b2t)))}Object.defineProperty(EA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(EA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(EA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function b2t(){this._writableState.ended||process.nextTick(x2t,this)}function x2t(t){t.end()}Object.defineProperty(EA.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 Z1e=_((Mj,X1e)=>{var NQ=ve(\"buffer\"),ip=NQ.Buffer;function z1e(t,e){for(var r in t)e[r]=t[r]}ip.from&&ip.alloc&&ip.allocUnsafe&&ip.allocUnsafeSlow?X1e.exports=NQ:(z1e(NQ,Mj),Mj.Buffer=ZC);function ZC(t,e,r){return ip(t,e,r)}z1e(ip,ZC);ZC.from=function(t,e,r){if(typeof t==\"number\")throw new TypeError(\"Argument must not be a number\");return ip(t,e,r)};ZC.alloc=function(t,e,r){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");var o=ip(t);return e!==void 0?typeof r==\"string\"?o.fill(e,r):o.fill(e):o.fill(0),o};ZC.allocUnsafe=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return ip(t)};ZC.allocUnsafeSlow=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return NQ.SlowBuffer(t)}});var Hj=_(e2e=>{\"use strict\";var _j=Z1e().Buffer,$1e=_j.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 k2t(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 Q2t(t){var e=k2t(t);if(typeof e!=\"string\"&&(_j.isEncoding===$1e||!$1e(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}e2e.StringDecoder=yv;function yv(t){this.encoding=Q2t(t);var e;switch(this.encoding){case\"utf16le\":this.text=O2t,this.end=M2t,e=4;break;case\"utf8\":this.fillLast=T2t,e=4;break;case\"base64\":this.text=U2t,this.end=_2t,e=3;break;default:this.write=H2t,this.end=q2t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=_j.allocUnsafe(e)}yv.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||\"\"};yv.prototype.end=L2t;yv.prototype.text=N2t;yv.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 Uj(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function F2t(t,e,r){var o=e.length-1;if(o<r)return 0;var a=Uj(e[o]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--o<r||a===-2?0:(a=Uj(e[o]),a>=0?(a>0&&(t.lastNeed=a-2),a):--o<r||a===-2?0:(a=Uj(e[o]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function R2t(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 T2t(t){var e=this.lastTotal-this.lastNeed,r=R2t(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 N2t(t,e){var r=F2t(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString(\"utf8\",e,o)}function L2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\\uFFFD\":e}function O2t(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=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 M2t(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 U2t(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 _2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function H2t(t){return t.toString(this.encoding)}function q2t(t){return t&&t.length?this.write(t):\"\"}});var LQ=_((D$t,n2e)=>{\"use strict\";var t2e=Q0().codes.ERR_STREAM_PREMATURE_CLOSE;function j2t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];t.apply(this,o)}}}function G2t(){}function Y2t(t){return t.setHeader&&typeof t.abort==\"function\"}function r2e(t,e,r){if(typeof e==\"function\")return r2e(t,null,e);e||(e={}),r=j2t(r||G2t);var o=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||A()},u=t._writableState&&t._writableState.finished,A=function(){a=!1,u=!0,o||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){o=!1,p=!0,a||r.call(t)},E=function(C){r.call(t,C)},I=function(){var C;if(o&&!p)return(!t._readableState||!t._readableState.ended)&&(C=new t2e),r.call(t,C);if(a&&!u)return(!t._writableState||!t._writableState.ended)&&(C=new t2e),r.call(t,C)},v=function(){t.req.on(\"finish\",A)};return Y2t(t)?(t.on(\"complete\",A),t.on(\"abort\",I),t.req?v():t.on(\"request\",v)):a&&!t._writableState&&(t.on(\"end\",n),t.on(\"close\",n)),t.on(\"end\",h),t.on(\"finish\",A),e.error!==!1&&t.on(\"error\",E),t.on(\"close\",I),function(){t.removeListener(\"complete\",A),t.removeListener(\"abort\",I),t.removeListener(\"request\",v),t.req&&t.req.removeListener(\"finish\",A),t.removeListener(\"end\",n),t.removeListener(\"close\",n),t.removeListener(\"finish\",A),t.removeListener(\"end\",h),t.removeListener(\"error\",E),t.removeListener(\"close\",I)}}n2e.exports=r2e});var s2e=_((S$t,i2e)=>{\"use strict\";var OQ;function T0(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var W2t=LQ(),N0=Symbol(\"lastResolve\"),wm=Symbol(\"lastReject\"),Ev=Symbol(\"error\"),MQ=Symbol(\"ended\"),Im=Symbol(\"lastPromise\"),qj=Symbol(\"handlePromise\"),Bm=Symbol(\"stream\");function L0(t,e){return{value:t,done:e}}function K2t(t){var e=t[N0];if(e!==null){var r=t[Bm].read();r!==null&&(t[Im]=null,t[N0]=null,t[wm]=null,e(L0(r,!1)))}}function V2t(t){process.nextTick(K2t,t)}function J2t(t,e){return function(r,o){t.then(function(){if(e[MQ]){r(L0(void 0,!0));return}e[qj](r,o)},o)}}var z2t=Object.getPrototypeOf(function(){}),X2t=Object.setPrototypeOf((OQ={get stream(){return this[Bm]},next:function(){var e=this,r=this[Ev];if(r!==null)return Promise.reject(r);if(this[MQ])return Promise.resolve(L0(void 0,!0));if(this[Bm].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[Ev]?A(e[Ev]):u(L0(void 0,!0))})});var o=this[Im],a;if(o)a=new Promise(J2t(o,this));else{var n=this[Bm].read();if(n!==null)return Promise.resolve(L0(n,!1));a=new Promise(this[qj])}return this[Im]=a,a}},T0(OQ,Symbol.asyncIterator,function(){return this}),T0(OQ,\"return\",function(){var e=this;return new Promise(function(r,o){e[Bm].destroy(null,function(a){if(a){o(a);return}r(L0(void 0,!0))})})}),OQ),z2t),Z2t=function(e){var r,o=Object.create(X2t,(r={},T0(r,Bm,{value:e,writable:!0}),T0(r,N0,{value:null,writable:!0}),T0(r,wm,{value:null,writable:!0}),T0(r,Ev,{value:null,writable:!0}),T0(r,MQ,{value:e._readableState.endEmitted,writable:!0}),T0(r,qj,{value:function(n,u){var A=o[Bm].read();A?(o[Im]=null,o[N0]=null,o[wm]=null,n(L0(A,!1))):(o[N0]=n,o[wm]=u)},writable:!0}),r));return o[Im]=null,W2t(e,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=o[wm];n!==null&&(o[Im]=null,o[N0]=null,o[wm]=null,n(a)),o[Ev]=a;return}var u=o[N0];u!==null&&(o[Im]=null,o[N0]=null,o[wm]=null,u(L0(void 0,!0))),o[MQ]=!0}),e.on(\"readable\",V2t.bind(null,o)),o};i2e.exports=Z2t});var c2e=_((P$t,l2e)=>{\"use strict\";function o2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function $2t(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){o2e(n,o,a,u,A,\"next\",p)}function A(p){o2e(n,o,a,u,A,\"throw\",p)}u(void 0)})}}function a2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function eBt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?a2e(Object(r),!0).forEach(function(o){tBt(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):a2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function tBt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var rBt=Q0().codes.ERR_INVALID_ARG_TYPE;function nBt(t,e,r){var o;if(e&&typeof e.next==\"function\")o=e;else if(e&&e[Symbol.asyncIterator])o=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])o=e[Symbol.iterator]();else throw new rBt(\"iterable\",[\"Iterable\"],e);var a=new t(eBt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,u())};function u(){return A.apply(this,arguments)}function A(){return A=$2t(function*(){try{var p=yield o.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?u():n=!1}catch(I){a.destroy(I)}}),A.apply(this,arguments)}return a}l2e.exports=nBt});var Oj=_((x$t,E2e)=>{\"use strict\";E2e.exports=mn;var $C;mn.ReadableState=p2e;var b$t=ve(\"events\").EventEmitter,f2e=function(e,r){return e.listeners(r).length},wv=vj(),UQ=ve(\"buffer\").Buffer,iBt=global.Uint8Array||function(){};function sBt(t){return UQ.from(t)}function oBt(t){return UQ.isBuffer(t)||t instanceof iBt}var jj=ve(\"util\"),en;jj&&jj.debuglog?en=jj.debuglog(\"stream\"):en=function(){};var aBt=F1e(),zj=Pj(),lBt=bj(),cBt=lBt.getHighWaterMark,_Q=Q0().codes,uBt=_Q.ERR_INVALID_ARG_TYPE,ABt=_Q.ERR_STREAM_PUSH_AFTER_EOF,fBt=_Q.ERR_METHOD_NOT_IMPLEMENTED,pBt=_Q.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,ew,Gj,Yj;F0()(mn,wv);var Cv=zj.errorOrDestroy,Wj=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function hBt(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 p2e(t,e,r){$C=$C||Cm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof $C),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=cBt(this,t,\"readableHighWaterMark\",r),this.buffer=new aBt,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&&(ew||(ew=Hj().StringDecoder),this.decoder=new ew(t.encoding),this.encoding=t.encoding)}function mn(t){if($C=$C||Cm(),!(this instanceof mn))return new mn(t);var e=this instanceof $C;this._readableState=new p2e(t,this,e),this.readable=!0,t&&(typeof t.read==\"function\"&&(this._read=t.read),typeof t.destroy==\"function\"&&(this._destroy=t.destroy)),wv.call(this)}Object.defineProperty(mn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});mn.prototype.destroy=zj.destroy;mn.prototype._undestroy=zj.undestroy;mn.prototype._destroy=function(t,e){e(t)};mn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t==\"string\"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=UQ.from(t,e),e=\"\"),o=!0),h2e(this,t,e,!1,o)};mn.prototype.unshift=function(t){return h2e(this,t,null,!0,!1)};function h2e(t,e,r,o,a){en(\"readableAddChunk\",e);var n=t._readableState;if(e===null)n.reading=!1,mBt(t,n);else{var u;if(a||(u=gBt(n,e)),u)Cv(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(e)!==UQ.prototype&&(e=sBt(e)),o)n.endEmitted?Cv(t,new pBt):Kj(t,n,e,!0);else if(n.ended)Cv(t,new ABt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?Kj(t,n,e,!1):Jj(t,n)):Kj(t,n,e,!1)}else o||(n.reading=!1,Jj(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function Kj(t,e,r,o){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,o?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&HQ(t)),Jj(t,e)}function gBt(t,e){var r;return!oBt(e)&&typeof e!=\"string\"&&e!==void 0&&!t.objectMode&&(r=new uBt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r}mn.prototype.isPaused=function(){return this._readableState.flowing===!1};mn.prototype.setEncoding=function(t){ew||(ew=Hj().StringDecoder);var e=new ew(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,o=\"\";r!==null;)o+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),o!==\"\"&&this._readableState.buffer.push(o),this._readableState.length=o.length,this};var u2e=1073741824;function dBt(t){return t>=u2e?t=u2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function A2e(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=dBt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}mn.prototype.read=function(t){en(\"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 en(\"read: emitReadable\",e.length,e.ended),e.length===0&&e.ended?Vj(this):HQ(this),null;if(t=A2e(t,e),t===0&&e.ended)return e.length===0&&Vj(this),null;var o=e.needReadable;en(\"need readable\",o),(e.length===0||e.length-t<e.highWaterMark)&&(o=!0,en(\"length less than watermark\",o)),e.ended||e.reading?(o=!1,en(\"reading or ended\",o)):o&&(en(\"do read\"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=A2e(r,e)));var a;return t>0?a=m2e(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&&Vj(this)),a!==null&&this.emit(\"data\",a),a};function mBt(t,e){if(en(\"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?HQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,g2e(t)))}}function HQ(t){var e=t._readableState;en(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(en(\"emitReadable\",e.flowing),e.emittedReadable=!0,process.nextTick(g2e,t))}function g2e(t){var e=t._readableState;en(\"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,Xj(t)}function Jj(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(yBt,t,e))}function yBt(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(en(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}mn.prototype._read=function(t){Cv(this,new fBt(\"_read()\"))};mn.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,en(\"pipe count=%d opts=%j\",o.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?A:R;o.endEmitted?process.nextTick(n):r.once(\"end\",n),t.on(\"unpipe\",u);function u(L,U){en(\"onunpipe\"),L===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function A(){en(\"onend\"),t.end()}var p=EBt(r);t.on(\"drain\",p);var h=!1;function E(){en(\"cleanup\"),t.removeListener(\"close\",x),t.removeListener(\"finish\",C),t.removeListener(\"drain\",p),t.removeListener(\"error\",v),t.removeListener(\"unpipe\",u),r.removeListener(\"end\",A),r.removeListener(\"end\",R),r.removeListener(\"data\",I),h=!0,o.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on(\"data\",I);function I(L){en(\"ondata\");var U=t.write(L);en(\"dest.write\",U),U===!1&&((o.pipesCount===1&&o.pipes===t||o.pipesCount>1&&y2e(o.pipes,t)!==-1)&&!h&&(en(\"false write response, pause\",o.awaitDrain),o.awaitDrain++),r.pause())}function v(L){en(\"onerror\",L),R(),t.removeListener(\"error\",v),f2e(t,\"error\")===0&&Cv(t,L)}hBt(t,\"error\",v);function x(){t.removeListener(\"finish\",C),R()}t.once(\"close\",x);function C(){en(\"onfinish\"),t.removeListener(\"close\",x),R()}t.once(\"finish\",C);function R(){en(\"unpipe\"),r.unpipe(t)}return t.emit(\"pipe\",r),o.flowing||(en(\"pipe resume\"),r.resume()),t};function EBt(t){return function(){var r=t._readableState;en(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&f2e(t,\"data\")&&(r.flowing=!0,Xj(t))}}mn.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 o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)o[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var u=y2e(e.pipes,t);return u===-1?this:(e.pipes.splice(u,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)};mn.prototype.on=function(t,e){var r=wv.prototype.on.call(this,t,e),o=this._readableState;return t===\"data\"?(o.readableListening=this.listenerCount(\"readable\")>0,o.flowing!==!1&&this.resume()):t===\"readable\"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,en(\"on readable\",o.length,o.reading),o.length?HQ(this):o.reading||process.nextTick(CBt,this)),r};mn.prototype.addListener=mn.prototype.on;mn.prototype.removeListener=function(t,e){var r=wv.prototype.removeListener.call(this,t,e);return t===\"readable\"&&process.nextTick(d2e,this),r};mn.prototype.removeAllListeners=function(t){var e=wv.prototype.removeAllListeners.apply(this,arguments);return(t===\"readable\"||t===void 0)&&process.nextTick(d2e,this),e};function d2e(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 CBt(t){en(\"readable nexttick read 0\"),t.read(0)}mn.prototype.resume=function(){var t=this._readableState;return t.flowing||(en(\"resume\"),t.flowing=!t.readableListening,wBt(this,t)),t.paused=!1,this};function wBt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(IBt,t,e))}function IBt(t,e){en(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),Xj(t),e.flowing&&!e.reading&&t.read(0)}mn.prototype.pause=function(){return en(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&(en(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function Xj(t){var e=t._readableState;for(en(\"flow\",e.flowing);e.flowing&&t.read()!==null;);}mn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on(\"end\",function(){if(en(\"wrapped end\"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on(\"data\",function(u){if(en(\"wrapped data\"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]==\"function\"&&(this[a]=function(A){return function(){return t[A].apply(t,arguments)}}(a));for(var n=0;n<Wj.length;n++)t.on(Wj[n],this.emit.bind(this,Wj[n]));return this._read=function(u){en(\"wrapped _read\",u),o&&(o=!1,t.resume())},this};typeof Symbol==\"function\"&&(mn.prototype[Symbol.asyncIterator]=function(){return Gj===void 0&&(Gj=s2e()),Gj(this)});Object.defineProperty(mn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(mn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(mn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});mn._fromList=m2e;Object.defineProperty(mn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function m2e(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 Vj(t){var e=t._readableState;en(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(BBt,e,t))}function BBt(t,e){if(en(\"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\"&&(mn.from=function(t,e){return Yj===void 0&&(Yj=c2e()),Yj(mn,t,e)});function y2e(t,e){for(var r=0,o=t.length;r<o;r++)if(t[r]===e)return r;return-1}});var Zj=_((k$t,w2e)=>{\"use strict\";w2e.exports=sp;var qQ=Q0().codes,vBt=qQ.ERR_METHOD_NOT_IMPLEMENTED,DBt=qQ.ERR_MULTIPLE_CALLBACK,SBt=qQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,PBt=qQ.ERR_TRANSFORM_WITH_LENGTH_0,jQ=Cm();F0()(sp,jQ);function bBt(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit(\"error\",new DBt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function sp(t){if(!(this instanceof sp))return new sp(t);jQ.call(this,t),this._transformState={afterTransform:bBt.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\",xBt)}function xBt(){var t=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(e,r){C2e(t,e,r)}):C2e(this,null,null)}sp.prototype.push=function(t,e){return this._transformState.needTransform=!1,jQ.prototype.push.call(this,t,e)};sp.prototype._transform=function(t,e,r){r(new vBt(\"_transform()\"))};sp.prototype._write=function(t,e,r){var o=this._transformState;if(o.writecb=r,o.writechunk=t,o.writeencoding=e,!o.transforming){var a=this._readableState;(o.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};sp.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};sp.prototype._destroy=function(t,e){jQ.prototype._destroy.call(this,t,function(r){e(r)})};function C2e(t,e,r){if(e)return t.emit(\"error\",e);if(r!=null&&t.push(r),t._writableState.length)throw new PBt;if(t._transformState.transforming)throw new SBt;return t.push(null)}});var v2e=_((Q$t,B2e)=>{\"use strict\";B2e.exports=Iv;var I2e=Zj();F0()(Iv,I2e);function Iv(t){if(!(this instanceof Iv))return new Iv(t);I2e.call(this,t)}Iv.prototype._transform=function(t,e,r){r(null,t)}});var x2e=_((F$t,b2e)=>{\"use strict\";var $j;function kBt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var P2e=Q0().codes,QBt=P2e.ERR_MISSING_ARGS,FBt=P2e.ERR_STREAM_DESTROYED;function D2e(t){if(t)throw t}function RBt(t){return t.setHeader&&typeof t.abort==\"function\"}function TBt(t,e,r,o){o=kBt(o);var a=!1;t.on(\"close\",function(){a=!0}),$j===void 0&&($j=LQ()),$j(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,RBt(t))return t.abort();if(typeof t.destroy==\"function\")return t.destroy();o(u||new FBt(\"pipe\"))}}}function S2e(t){t()}function NBt(t,e){return t.pipe(e)}function LBt(t){return!t.length||typeof t[t.length-1]!=\"function\"?D2e:t.pop()}function OBt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=LBt(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new QBt(\"streams\");var a,n=e.map(function(u,A){var p=A<e.length-1,h=A>0;return TBt(u,p,h,function(E){a||(a=E),E&&n.forEach(S2e),!p&&(n.forEach(S2e),o(a))})});return e.reduce(NBt)}b2e.exports=OBt});var tw=_((lc,vv)=>{var Bv=ve(\"stream\");process.env.READABLE_STREAM===\"disable\"&&Bv?(vv.exports=Bv.Readable,Object.assign(vv.exports,Bv),vv.exports.Stream=Bv):(lc=vv.exports=Oj(),lc.Stream=Bv||lc,lc.Readable=lc,lc.Writable=Tj(),lc.Duplex=Cm(),lc.Transform=Zj(),lc.PassThrough=v2e(),lc.finished=LQ(),lc.pipeline=x2e())});var F2e=_((R$t,Q2e)=>{\"use strict\";var{Buffer:lu}=ve(\"buffer\"),k2e=Symbol.for(\"BufferList\");function ni(t){if(!(this instanceof ni))return new ni(t);ni._init.call(this,t)}ni._init=function(e){Object.defineProperty(this,k2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};ni.prototype._new=function(e){return new ni(e)};ni.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;o<this._bufs.length;o++){let a=r+this._bufs[o].length;if(e<a||o===this._bufs.length-1)return[o,e-r];r=a}};ni.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let o=0;o<e;o++)r+=this._bufs[o].length;return r};ni.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};ni.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)};ni.prototype.copy=function(e,r,o,a){if((typeof o!=\"number\"||o<0)&&(o=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||lu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,E=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:lu.concat(this._bufs,this.length);for(let I=0;I<this._bufs.length;I++)this._bufs[I].copy(e,h),h+=this._bufs[I].length;return e}if(p<=this._bufs[u[0]].length-E)return n?this._bufs[u[0]].copy(e,r,E,E+p):this._bufs[u[0]].slice(E,E+p);n||(e=lu.allocUnsafe(A));for(let I=u[0];I<this._bufs.length;I++){let v=this._bufs[I].length-E;if(p>v)this._bufs[I].copy(e,h,E),h+=v;else{this._bufs[I].copy(e,h,E,E+p),h+=v;break}p-=v,E&&(E=0)}return e.length>h?e.slice(0,h):e};ni.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 o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};ni.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};ni.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};ni.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};ni.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(lu.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(lu.from(e));return this};ni.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};ni.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=lu.from([t]):typeof t==\"string\"?t=lu.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=lu.from(t.buffer,t.byteOffset,t.byteLength):lu.isBuffer(t)||(t=lu.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 o=this._offset(e),a=o[0],n=o[1];for(;a<this._bufs.length;a++){let u=this._bufs[a];for(;n<u.length;)if(u.length-n>=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};ni.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?ni.prototype[r]=function(o,a){return this.slice(o,o+a)[r](0,a)}:ni.prototype[r]=function(o=0){return this.slice(o,o+t[r])[r](0)}})(e)})();ni.prototype._isBufferList=function(e){return e instanceof ni||ni.isBufferList(e)};ni.isBufferList=function(e){return e!=null&&e[k2e]};Q2e.exports=ni});var R2e=_((T$t,GQ)=>{\"use strict\";var eG=tw().Duplex,MBt=F0(),Dv=F2e();function Uo(t){if(!(this instanceof Uo))return new Uo(t);if(typeof t==\"function\"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on(\"pipe\",function(o){o.on(\"error\",e)}),this.on(\"unpipe\",function(o){o.removeListener(\"error\",e)}),t=null}Dv._init.call(this,t),eG.call(this)}MBt(Uo,eG);Object.assign(Uo.prototype,Dv.prototype);Uo.prototype._new=function(e){return new Uo(e)};Uo.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o==\"function\"&&o()};Uo.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)};Uo.prototype.end=function(e){eG.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Uo.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Uo.prototype._isBufferList=function(e){return e instanceof Uo||e instanceof Dv||Uo.isBufferList(e)};Uo.isBufferList=Dv.isBufferList;GQ.exports=Uo;GQ.exports.BufferListStream=Uo;GQ.exports.BufferList=Dv});var nG=_(nw=>{var UBt=Buffer.alloc,_Bt=\"0000000000000000000\",HBt=\"7777777777777777777\",T2e=\"0\".charCodeAt(0),N2e=Buffer.from(\"ustar\\0\",\"binary\"),qBt=Buffer.from(\"00\",\"binary\"),jBt=Buffer.from(\"ustar \",\"binary\"),GBt=Buffer.from(\" \\0\",\"binary\"),YBt=parseInt(\"7777\",8),Sv=257,rG=263,WBt=function(t,e,r){return typeof t!=\"number\"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},KBt=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},VBt=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},L2e=function(t,e,r,o){for(;r<o;r++)if(t[r]===e)return r;return o},O2e=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var o=156;o<512;o++)e+=t[o];return e},O0=function(t,e){return t=t.toString(8),t.length>e?HBt.slice(0,e)+\" \":_Bt.slice(0,e-t.length)+t+\" \"};function JBt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o<u;o++)n+=r[o]*Math.pow(256,o);return e?n:-1*n}var M0=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return JBt(t);for(;e<t.length&&t[e]===32;)e++;for(var o=WBt(L2e(t,32,e,t.length),t.length,t.length);e<o&&t[e]===0;)e++;return o===e?0:parseInt(t.slice(e,o).toString(),8)},rw=function(t,e,r,o){return t.slice(e,L2e(t,0,e,e+r)).toString(o)},tG=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};nw.decodeLongPath=function(t,e){return rw(t,0,t.length,e)};nw.encodePax=function(t){var e=\"\";t.name&&(e+=tG(\" path=\"+t.name+`\n`)),t.linkname&&(e+=tG(\" linkpath=\"+t.linkname+`\n`));var r=t.pax;if(r)for(var o in r)e+=tG(\" \"+o+\"=\"+r[o]+`\n`);return Buffer.from(e)};nw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var o=parseInt(t.slice(0,r).toString(),10);if(!o)return e;var a=t.slice(r+1,o-1).toString(),n=a.indexOf(\"=\");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(o)}return e};nw.encode=function(t){var e=UBt(512),r=t.name,o=\"\";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;o+=o?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(O0(t.mode&YBt,6),100),e.write(O0(t.uid,6),108),e.write(O0(t.gid,6),116),e.write(O0(t.size,11),124),e.write(O0(t.mtime.getTime()/1e3|0,11),136),e[156]=T2e+VBt(t.type),t.linkname&&e.write(t.linkname,157),N2e.copy(e,Sv),qBt.copy(e,rG),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(O0(t.devmajor||0,6),329),e.write(O0(t.devminor||0,6),337),o&&e.write(o,345),e.write(O0(O2e(e),6),148),e)};nw.decode=function(t,e,r){var o=t[156]===0?0:t[156]-T2e,a=rw(t,0,100,e),n=M0(t,100,8),u=M0(t,108,8),A=M0(t,116,8),p=M0(t,124,12),h=M0(t,136,12),E=KBt(o),I=t[157]===0?null:rw(t,157,100,e),v=rw(t,265,32),x=rw(t,297,32),C=M0(t,329,8),R=M0(t,337,8),L=O2e(t);if(L===8*32)return null;if(L!==M0(t,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(N2e.compare(t,Sv,Sv+6)===0)t[345]&&(a=rw(t,345,155,e)+\"/\"+a);else if(!(jBt.compare(t,Sv,Sv+6)===0&&GBt.compare(t,rG,rG+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return o===0&&a&&a[a.length-1]===\"/\"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:E,linkname:I,uname:v,gname:x,devmajor:C,devminor:R}}});var G2e=_((L$t,j2e)=>{var U2e=ve(\"util\"),zBt=R2e(),Pv=nG(),_2e=tw().Writable,H2e=tw().PassThrough,q2e=function(){},M2e=function(t){return t&=511,t&&512-t},XBt=function(t,e){var r=new YQ(t,e);return r.end(),r},ZBt=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},YQ=function(t,e){this._parent=t,this.offset=e,H2e.call(this,{autoDestroy:!1})};U2e.inherits(YQ,H2e);YQ.prototype.destroy=function(t){this._parent.destroy(t)};var op=function(t){if(!(this instanceof op))return new op(t);_2e.call(this,t),t=t||{},this._offset=0,this._buffer=zBt(),this._missing=0,this._partial=!1,this._onparse=q2e,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,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=M2e(e._header.size);v?e._parse(v,u):e._parse(512,I),e._locked||o()},u=function(){e._buffer.consume(M2e(e._header.size)),e._parse(512,I),o()},A=function(){var v=e._header.size;e._paxGlobal=Pv.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=Pv.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=Pv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},E=function(){var v=e._header.size;this._gnuLongLinkPath=Pv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},I=function(){var v=e._offset,x;try{x=e._header=Pv.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(C){e.emit(\"error\",C)}if(r.consume(512),!x){e._parse(512,I),o();return}if(x.type===\"gnu-long-path\"){e._parse(x.size,h),o();return}if(x.type===\"gnu-long-link-path\"){e._parse(x.size,E),o();return}if(x.type===\"pax-global-header\"){e._parse(x.size,A),o();return}if(x.type===\"pax-header\"){e._parse(x.size,p),o();return}if(e._gnuLongPath&&(x.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(x.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=x=ZBt(x,e._pax),e._pax=null),e._locked=!0,!x.size||x.type===\"directory\"){e._parse(512,I),e.emit(\"entry\",x,XBt(e,v),a);return}e._stream=new YQ(e,v),e.emit(\"entry\",x,e._stream,a),e._parse(x.size,n),o()};this._onheader=I,this._parse(512,I)};U2e.inherits(op,_2e);op.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};op.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};op.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=q2e,this._overflow?this._write(this._overflow,void 0,t):t()}};op.prototype._write=function(t,e,r){if(!this._destroyed){var o=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,o?o.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var u=null;t.length>n&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};op.prototype._final=function(t){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));t()};j2e.exports=op});var W2e=_((O$t,Y2e)=>{Y2e.exports=ve(\"fs\").constants||ve(\"constants\")});var X2e=_((M$t,z2e)=>{var iw=W2e(),K2e=LM(),KQ=F0(),$Bt=Buffer.alloc,V2e=tw().Readable,sw=tw().Writable,evt=ve(\"string_decoder\").StringDecoder,WQ=nG(),tvt=parseInt(\"755\",8),rvt=parseInt(\"644\",8),J2e=$Bt(1024),sG=function(){},iG=function(t,e){e&=511,e&&t.push(J2e.slice(0,512-e))};function nvt(t){switch(t&iw.S_IFMT){case iw.S_IFBLK:return\"block-device\";case iw.S_IFCHR:return\"character-device\";case iw.S_IFDIR:return\"directory\";case iw.S_IFIFO:return\"fifo\";case iw.S_IFLNK:return\"symlink\"}return\"file\"}var VQ=function(t){sw.call(this),this.written=0,this._to=t,this._destroyed=!1};KQ(VQ,sw);VQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};VQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var JQ=function(){sw.call(this),this.linkname=\"\",this._decoder=new evt(\"utf-8\"),this._destroyed=!1};KQ(JQ,sw);JQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};JQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var bv=function(){sw.call(this),this._destroyed=!1};KQ(bv,sw);bv.prototype._write=function(t,e,r){r(new Error(\"No body allowed for this entry\"))};bv.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var CA=function(t){if(!(this instanceof CA))return new CA(t);V2e.call(this,t),this._drain=sG,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};KQ(CA,V2e);CA.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=sG);var o=this;if((!t.size||t.type===\"symlink\")&&(t.size=0),t.type||(t.type=nvt(t.mode)),t.mode||(t.mode=t.type===\"directory\"?tvt:rvt),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 iG(o,t.size),a?process.nextTick(r):this._drain=r,new bv}if(t.type===\"symlink\"&&!t.linkname){var n=new JQ;return K2e(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!==\"file\"&&t.type!==\"contiguous-file\")return process.nextTick(r),new bv;var u=new VQ(this);return this._stream=u,K2e(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error(\"size mismatch\"));iG(o,t.size),o._finalizing&&o.finalize(),r()}),u}};CA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(J2e),this.push(null))};CA.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())};CA.prototype._encode=function(t){if(!t.pax){var e=WQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};CA.prototype._encodePax=function(t){var e=WQ.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(WQ.encode(r)),this.push(e),iG(this,e.length),r.size=t.size,r.type=t.type,this.push(WQ.encode(r))};CA.prototype._read=function(t){var e=this._drain;this._drain=sG,e()};z2e.exports=CA});var Z2e=_(oG=>{oG.extract=G2e();oG.pack=X2e()});var uBe=_((ier,cBe)=>{\"use strict\";var vm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]==\"string\"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=aBe(o.filter(a=>a!=null&&typeof a==\"object\")),this.__isFiggyPudding=!0}get(e){return fG(this,e,!0)}get[Symbol.toStringTag](){return\"FiggyPudding\"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):yvt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new vm(this.__specs,this.__opts,aBe(this.__providers).concat(e)),lBe)}};try{let t=ve(\"util\");vm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+\" \"+t.inspect(this.toJSON(),r)}}catch{}function dvt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:\"EBADKEY\"})}function fG(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))dvt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=oBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=oBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default==\"function\"?o.default(t):o.default:a}}function oBe(t,e){let r;return e.__isFiggyPudding?r=fG(e,t,!1):typeof e.get==\"function\"?r=e.get(t):r=e[t],r}var lBe={has(t,e){return e in t.__specs&&fG(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e==\"symbol\"||e.slice(0,2)===\"__\"||e in vm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e==\"symbol\"||e.slice(0,2)===\"__\")return t[e]=r,!0;throw new Error(\"figgyPudding options cannot be modified. Use .concat() instead.\")},deleteProperty(){throw new Error(\"figgyPudding options cannot be deleted. Use .concat() and shadow them instead.\")}};cBe.exports=mvt;function mvt(t,e){function r(...o){return new Proxy(new vm(t,e,o),lBe)}return r}function aBe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function yvt(t){return Object.keys(t).map(e=>[e,t[e]])}});var pBe=_((ser,BA)=>{\"use strict\";var kv=ve(\"crypto\"),Evt=uBe(),Cvt=ve(\"stream\").Transform,ABe=[\"sha256\",\"sha384\",\"sha512\"],wvt=/^[a-z0-9+/]+(?:=?=?)$/i,Ivt=/^([^-]+)-([^?]+)([?\\S*]*)$/,Bvt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)*$/,vvt=/^[\\x21-\\x7E]+$/,ia=Evt({algorithms:{default:[\"sha512\"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>Fvt},Promise:{default:()=>Promise},sep:{default:\" \"},single:{default:!1},size:{},strict:{default:!1}}),_0=class{get isHash(){return!0}constructor(e,r){r=ia(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?Bvt:Ivt);if(!a||o&&!ABe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split(\"?\"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}toString(e){if(e=ia(e),e.strict&&!(ABe.some(o=>o===this.algorithm)&&this.digest.match(wvt)&&(this.options||[]).every(o=>o.match(vvt))))return\"\";let r=this.options&&this.options.length?`?${this.options.join(\"?\")}`:\"\";return`${this.algorithm}-${this.digest}${r}`}},Dm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ia(e);let r=e.sep||\" \";return e.strict&&(r=r.replace(/\\S+/g,\" \")),Object.keys(this).map(o=>this[o].map(a=>_0.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ia(r);let o=typeof e==\"string\"?e:xv(e,r);return IA(`${this.toString(r)} ${o}`,r)}hexDigest(){return IA(this,{single:!0}).hexDigest()}match(e,r){r=ia(r);let o=IA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ia(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};BA.exports.parse=IA;function IA(t,e){if(e=ia(e),typeof t==\"string\")return pG(t,e);if(t.algorithm&&t.digest){let r=new Dm;return r[t.algorithm]=[t],pG(xv(r,e),e)}else return pG(xv(t,e),e)}function pG(t,e){return e.single?new _0(t,e):t.trim().split(/\\s+/).reduce((r,o)=>{let a=new _0(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new Dm)}BA.exports.stringify=xv;function xv(t,e){return e=ia(e),t.algorithm&&t.digest?_0.prototype.toString.call(t,e):typeof t==\"string\"?xv(IA(t,e),e):Dm.prototype.toString.call(t,e)}BA.exports.fromHex=Dvt;function Dvt(t,e,r){r=ia(r);let o=r.options&&r.options.length?`?${r.options.join(\"?\")}`:\"\";return IA(`${e}-${Buffer.from(t,\"hex\").toString(\"base64\")}${o}`,r)}BA.exports.fromData=Svt;function Svt(t,e){e=ia(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join(\"?\")}`:\"\";return r.reduce((a,n)=>{let u=kv.createHash(n).update(t).digest(\"base64\"),A=new _0(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new Dm)}BA.exports.fromStream=Pvt;function Pvt(t,e){e=ia(e);let r=e.Promise||Promise,o=hG(e);return new r((a,n)=>{t.pipe(o),t.on(\"error\",n),o.on(\"error\",n);let u;o.on(\"integrity\",A=>{u=A}),o.on(\"end\",()=>a(u)),o.on(\"data\",()=>{})})}BA.exports.checkData=bvt;function bvt(t,e,r){if(r=ia(r),e=IA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let o=e.pickAlgorithm(r),a=kv.createHash(o).update(t).digest(\"base64\"),n=IA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size==\"number\"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}.\n  Wanted: ${r.size}\n  Found: ${t.length}`);throw A.code=\"EBADSIZE\",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code=\"EINTEGRITY\",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}BA.exports.checkStream=xvt;function xvt(t,e,r){r=ia(r);let o=r.Promise||Promise,a=hG(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on(\"error\",u),a.on(\"error\",u);let A;a.on(\"verified\",p=>{A=p}),a.on(\"end\",()=>n(A)),a.on(\"data\",()=>{})})}BA.exports.integrityStream=hG;function hG(t){t=ia(t);let e=t.integrity&&IA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(kv.createHash),A=0,p=new Cvt({transform(h,E,I){A+=h.length,u.forEach(v=>v.update(h,E)),I(null,h,E)}}).on(\"end\",()=>{let h=t.options&&t.options.length?`?${t.options.join(\"?\")}`:\"\",E=IA(u.map((v,x)=>`${n[x]}-${v.digest(\"base64\")}${h}`).join(\" \"),t),I=r&&E.match(e,t);if(typeof t.size==\"number\"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}.\n  Wanted: ${t.size}\n  Found: ${A}`);v.code=\"EBADSIZE\",v.found=A,v.expected=t.size,v.sri=e,p.emit(\"error\",v)}else if(t.integrity&&!I){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${E}. (${A} bytes)`);v.code=\"EINTEGRITY\",v.found=E,v.expected=a,v.algorithm=o,v.sri=e,p.emit(\"error\",v)}else p.emit(\"size\",A),p.emit(\"integrity\",E),I&&p.emit(\"verified\",I)});return p}BA.exports.create=kvt;function kvt(t){t=ia(t);let e=t.algorithms,r=t.options.length?`?${t.options.join(\"?\")}`:\"\",o=e.map(kv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest(\"base64\"),h=new _0(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let E=h.algorithm;u[E]||(u[E]=[]),u[E].push(h)}return u},new Dm)}}}var Qvt=new Set(kv.getHashes()),fBe=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(t=>Qvt.has(t));function Fvt(t,e){return fBe.indexOf(t.toLowerCase())>=fBe.indexOf(e.toLowerCase())?t:e}});var qBe=_((lir,HBe)=>{var FDt=lL();function RDt(t){return FDt(t)?void 0:t}HBe.exports=RDt});var GBe=_((cir,jBe)=>{var TDt=Hb(),NDt=x8(),LDt=R8(),ODt=jd(),MDt=dd(),UDt=qBe(),_Dt=v_(),HDt=b8(),qDt=1,jDt=2,GDt=4,YDt=_Dt(function(t,e){var r={};if(t==null)return r;var o=!1;e=TDt(e,function(n){return n=ODt(n,t),o||(o=n.length>1),n}),MDt(t,HDt(t),r),o&&(r=NDt(r,qDt|jDt|GDt,UDt));for(var a=e.length;a--;)LDt(r,e[a]);return r});jBe.exports=YDt});St();Ye();St();var JBe=ve(\"child_process\"),zBe=$e(td());qt();var AC=new Map([]);var a2={};Vt(a2,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>rr,getCli:()=>$pe,getDynamicLibs:()=>Zpe,getPluginConfiguration:()=>pC,openWorkspace:()=>fC,pluginCommands:()=>AC,runExit:()=>nk});qt();var ut=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new it(\"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()}};Ye();St();qt();var rr=class extends it{constructor(e,r){let o=V.relative(e,r),a=V.join(e,Ot.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ye();St();nA();Nl();k1();qt();var RAt=$e(zn());Za();var Zpe=()=>new Map([[\"@yarnpkg/cli\",a2],[\"@yarnpkg/core\",o2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",rI],[\"@yarnpkg/shell\",T1],[\"clipanion\",hI],[\"semver\",RAt],[\"typanion\",Vo]]);Ye();async function fC(t,e){let{project:r,workspace:o}=await Pt.find(t,e);if(!o)throw new rr(r.cwd,e);return o}Ye();St();nA();Nl();k1();qt();var eSt=$e(zn());Za();var $8={};Vt($8,{AddCommand:()=>kh,BinCommand:()=>Qh,CacheCleanCommand:()=>Fh,ClipanionCommand:()=>Kd,ConfigCommand:()=>Lh,ConfigGetCommand:()=>Rh,ConfigSetCommand:()=>Th,ConfigUnsetCommand:()=>Nh,DedupeCommand:()=>Oh,EntryCommand:()=>mC,ExecCommand:()=>Mh,ExplainCommand:()=>Hh,ExplainPeerRequirementsCommand:()=>Uh,HelpCommand:()=>Vd,InfoCommand:()=>qh,LinkCommand:()=>Gh,NodeCommand:()=>Yh,PluginCheckCommand:()=>Wh,PluginImportCommand:()=>Jh,PluginImportSourcesCommand:()=>zh,PluginListCommand:()=>Kh,PluginRemoveCommand:()=>Xh,PluginRuntimeCommand:()=>Zh,RebuildCommand:()=>$h,RemoveCommand:()=>e0,RunCommand:()=>t0,RunIndexCommand:()=>Xd,SetResolutionCommand:()=>r0,SetVersionCommand:()=>_h,SetVersionSourcesCommand:()=>Vh,UnlinkCommand:()=>n0,UpCommand:()=>Jf,VersionCommand:()=>Jd,WhyCommand:()=>i0,WorkspaceCommand:()=>a0,WorkspacesListCommand:()=>o0,YarnCommand:()=>jh,dedupeUtils:()=>pk,default:()=>Sgt,suggestUtils:()=>zc});var kde=$e(td());Ye();Ye();Ye();qt();var _0e=$e(f2());Za();var zc={};Vt(zc,{Modifier:()=>B8,Strategy:()=>uk,Target:()=>p2,WorkspaceModifier:()=>N0e,applyModifier:()=>$ft,extractDescriptorFromPath:()=>v8,extractRangeModifier:()=>L0e,fetchDescriptorFrom:()=>D8,findProjectDescriptors:()=>U0e,getModifier:()=>h2,getSuggestedDescriptors:()=>g2,makeWorkspaceDescriptor:()=>M0e,toWorkspaceModifier:()=>O0e});Ye();Ye();St();var I8=$e(zn()),Xft=\"workspace:\",p2=(o=>(o.REGULAR=\"dependencies\",o.DEVELOPMENT=\"devDependencies\",o.PEER=\"peerDependencies\",o))(p2||{}),B8=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"\",o))(B8||{}),N0e=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"*\",o))(N0e||{}),uk=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(uk||{});function h2(t,e){return t.exact?\"\":t.caret?\"^\":t.tilde?\"~\":e.configuration.get(\"defaultSemverRangePrefix\")}var Zft=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function L0e(t,{project:e}){let r=t.match(Zft);return r?r[1]:e.configuration.get(\"defaultSemverRangePrefix\")}function $ft(t,e){let{protocol:r,source:o,params:a,selector:n}=W.parseRange(t.range);return I8.default.valid(n)&&(n=`${e}${t.range}`),W.makeDescriptor(t,W.makeRange({protocol:r,source:o,params:a,selector:n}))}function O0e(t){switch(t){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${t}\"`)}}function M0e(t,e){return W.makeDescriptor(t.anchoredDescriptor,`${Xft}${O0e(e)}`)}async function U0e(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r===\"peerDependencies\"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r===\"devDependencies\"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function v8(t,{cwd:e,workspace:r}){return await ept(async o=>{V.isAbsolute(t)||(t=V.relative(r.cwd,V.resolve(e,t)),t.match(/^\\.{0,2}\\//)||(t=`./${t}`));let{project:a}=r,n=await D8(W.makeIdent(null,\"archive\"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let u=new Qi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},E=A.bindDescriptor(n,r.anchoredLocator,h),I=W.convertDescriptorToLocator(E),v=await p.fetch(I,h),x=await Ot.find(v.prefixPath,{baseFs:v.packageFs});if(!x.name)throw new Error(\"Target path doesn't have a name\");return W.makeDescriptor(x.name,t)})}async function g2(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,E]=t.range!==\"unknown\"?n||kr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,\"latest\"]:[\"unknown\",t.range]:[\"unknown\",\"latest\"];if(h!==\"unknown\")return{suggestions:[{descriptor:t,name:`Use ${W.prettyDescriptor(e.configuration,t)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let I=typeof r<\"u\"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],x=[],C=async R=>{try{await R()}catch(L){x.push(L)}};for(let R of A){if(v.length>=p)break;switch(R){case\"keep\":await C(async()=>{I&&v.push({descriptor:I,name:`Keep ${W.prettyDescriptor(e.configuration,I)}`,reason:\"(no changes)\"})});break;case\"reuse\":await C(async()=>{for(let{descriptor:L,locators:U}of(await U0e(t,{project:e,target:a})).values()){if(U.length===1&&U[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes(\"keep\"))continue;let J=`(originally used by ${W.prettyLocator(e.configuration,U[0])}`;J+=U.length>1?` and ${U.length-1} other${U.length>2?\"s\":\"\"})`:\")\",v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:J})}});break;case\"cache\":await C(async()=>{for(let L of e.storedDescriptors.values())L.identHash===t.identHash&&v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await C(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let L=e.tryWorkspaceByIdent(t);if(L===null)return;let U=M0e(L,u);v.push({descriptor:U,name:`Attach ${W.prettyDescriptor(e.configuration,U)}`,reason:`(local workspace at ${de.pretty(e.configuration,L.relativeCwd,de.Type.PATH)})`})});break;case\"latest\":{let L=e.configuration.get(\"enableNetwork\"),U=e.configuration.get(\"enableOfflineMode\");await C(async()=>{if(a===\"peerDependencies\")v.push({descriptor:W.makeDescriptor(t,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!L&&!U)v.push({descriptor:null,name:\"Resolve from latest\",reason:de.pretty(e.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let J=await D8(t,E,{project:e,cache:o,workspace:r,modifier:u});J&&v.push({descriptor:J,name:`Use ${W.prettyDescriptor(e.configuration,J)}`,reason:`(resolved from ${U?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:v.slice(0,p),rejections:x.slice(0,p)}}async function D8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(W.makeDescriptor(t,e)),p=new Qi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),I={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...I,resolver:E,fetchOptions:I},x=E.bindDescriptor(A,a.anchoredLocator,v),C=await E.getCandidates(x,{},v);if(C.length===0)return null;let R=C[0],{protocol:L,source:U,params:J,selector:te}=W.parseRange(W.convertToManifestRange(R.reference));if(L===r.configuration.get(\"defaultProtocol\")&&(L=null),I8.default.valid(te)){let ae=te;if(typeof u<\"u\")te=u+te;else if(n!==!1){let me=typeof n==\"string\"?n:A.range;te=L0e(me,{project:r})+te}let fe=W.makeDescriptor(R,W.makeRange({protocol:L,source:U,params:J,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(fe),{},v)).length!==1&&(te=ae)}return W.makeDescriptor(R,W.makeRange({protocol:L,source:U,params:J,selector:te}))}async function ept(t){return await oe.mktempPromise(async e=>{let r=Ke.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Lr(e,{configuration:r,check:!1,immutable:!1}))})}var kh=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:Ks(pl)});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.packages=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=A||r.get(\"preferReuse\"),h=h2(this,o),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(U=>typeof U<\"u\"),I=A?1/0:1,v=await Promise.all(this.packages.map(async U=>{let J=U.match(/^\\.{0,2}\\//)?await v8(U,{cwd:this.context.cwd,workspace:a}):W.tryParseDescriptor(U),te=U.match(/^(https?:|git@github)/);if(te)throw new it(`It seems you are trying to add a package using a ${de.pretty(r,`${te[0]}...`,de.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${de.pretty(r,\"yarn add\",de.Type.CODE)} ${de.pretty(r,W.makeDescriptor(W.makeIdent(null,\"my-package\"),`${te[0]}...`),de.Type.DESCRIPTOR)}`);if(!J)throw new it(`The ${de.pretty(r,U,de.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ae=tpt(a,J,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ae.map(async ce=>{let me=await g2(J,{project:o,workspace:a,cache:n,fixed:u,target:ce,modifier:h,strategies:E,maxResults:I});return{request:J,suggestedDescriptors:me,target:ce}}))})).then(U=>U.flat()),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async U=>{for(let{request:J,suggestedDescriptors:{suggestions:te,rejections:ae}}of v)if(te.filter(ce=>ce.descriptor!==null).length===0){let[ce]=ae;if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");o.configuration.get(\"enableNetwork\")?U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range`):U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),U.reportSeparator(),U.reportExceptionOnce(ce)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[],L=[];for(let{suggestedDescriptors:{suggestions:U},target:J}of v){let te,ae=U.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,_0e.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:U.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=a.manifest[J].get(te.identHash);(typeof me>\"u\"||me.descriptorHash!==te.descriptorHash)&&(a.manifest[J].set(te.identHash,te),this.optional&&(J===\"dependencies\"?a.manifest.ensureDependencyMeta({...te,range:\"unknown\"}).optional=!0:J===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...te,range:\"unknown\"}).optional=!0)),typeof me>\"u\"?R.push([a,J,te,E]):L.push([a,J,me,te]))}return await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyAddition,R),await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyReplacement,L),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};kh.paths=[[\"add\"]],kh.usage=nt.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\"]]});function tpt(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest[\"dependencies\"].has(e.identHash),A=t.manifest[\"devDependencies\"].has(e.identHash),p=t.manifest[\"peerDependencies\"].has(e.identHash);if((r||o)&&u)throw new it(`Package \"${W.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&&!o&&p)throw new it(`Package \"${W.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&&A)throw new it(`Package \"${W.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&&!o&&p)throw new it(`Package \"${W.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 it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:A?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}Ye();Ye();qt();var Qh=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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await un.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new it(`Couldn't find a binary named \"${this.name}\" for package \"${W.prettyLocator(r,a)}\"`);let[,p]=A;return this.context.stdout.write(`${p}\n`),0}return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await un.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((E,I)=>Math.max(E,I.length),0);for(let[E,[I,v]]of A)u.reportJson({name:E,source:W.stringifyIdent(I),path:v});if(this.verbose)for(let[E,[I]]of A)u.reportInfo(null,`${E.padEnd(h,\" \")}   ${W.prettyLocator(r,I)}`);else for(let E of A.keys())u.reportInfo(null,E)})).exitCode()}};Qh.paths=[[\"bin\"]],Qh.usage=nt.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\"]]});Ye();St();qt();var Fh=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Lr.find(r);return(await Nt.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await oe.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await oe.removePromise(o.cwd)})).exitCode()}};Fh.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]],Fh.usage=nt.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\"]]});Ye();qt();var q0e=$e(d2()),S8=ve(\"util\"),Rh=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(o)>\"u\")throw new it(`Couldn't find a configuration settings named \"${o}\"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=_e.convertMapsToIndexableObjects(u),p=a?(0,q0e.default)(A,a):A,h=await Nt.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();S8.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,S8.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};Rh.paths=[[\"config\",\"get\"]],Rh.usage=nt.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\"]]});Ye();qt();var Fge=$e(k8()),Rge=$e(d2()),Tge=$e(Q8()),F8=ve(\"util\"),Th=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"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 it(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new it(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let A=this.json?JSON.parse(this.value):this.value;await(this.home?C=>Ke.updateHomeConfiguration(C):C=>Ke.updateConfiguration(o(),C))(C=>{if(n){let R=(0,Fge.default)(C);return(0,Tge.default)(R,this.name,A),R}else return{...C,[a]:A}});let E=(await Ke.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),I=_e.convertMapsToIndexableObjects(E),v=n?(0,Rge.default)(I,n):I;return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async C=>{F8.inspect.styles.name=\"cyan\",C.reportInfo(0,`Successfully set ${this.name} to ${(0,F8.inspect)(v,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};Th.paths=[[\"config\",\"set\"]],Th.usage=nt.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\"`]]});Ye();qt();var Yge=$e(k8()),Wge=$e(Mge()),Kge=$e(T8()),Nh=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"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 it(`Couldn't find a configuration settings named \"${a}\"`);let A=this.home?h=>Ke.updateHomeConfiguration(h):h=>Ke.updateConfiguration(o(),h);return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await A(I=>{if(!(0,Wge.default)(I,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,I;let v=n?(0,Yge.default)(I):{...I};return(0,Kge.default)(v,this.name),v}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Nh.paths=[[\"config\",\"unset\"]],Nh.usage=nt.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\"]]});Ye();St();qt();var fk=ve(\"util\"),Lh=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins,{strict:!1}),o=await LE({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(o!==null)return o;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async A=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)A.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);A.reportSeparator()}if(this.json)for(let p of a){let h=r.settings.get(p);typeof h>\"u\"&&A.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),I=r.sources.get(p)??\"<default>\",v=I&&I[0]!==\"<\"?ue.fromPortablePath(I):I;A.reportJson({key:p,effective:E,source:v,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let I of a){if(this.noDefaults&&!r.sources.has(I))continue;let v=r.settings.get(I),x=r.sources.get(I)??\"<default>\",C=r.getSpecial(I,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:\"Description\",value:de.tuple(de.Type.MARKDOWN,{text:v.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:de.tuple(x[0]===\"<\"?de.Type.CODE:de.Type.PATH,x)}};h[I]={value:de.tuple(de.Type.CODE,I),children:R};let L=(U,J)=>{for(let[te,ae]of J)if(ae instanceof Map){let fe={};U[te]={children:fe},L(fe,ae)}else U[te]={label:te,value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(ae,p))}};C instanceof Map?L(R,C):R.Value={label:\"Value\",value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(C,p))}}a.length!==1&&(n=void 0),$s.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let A=a[0],p=(0,fk.inspect)(r.getSpecial(A,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return u.exitCode()}};Lh.paths=[[\"config\"]],Lh.usage=nt.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\"]]});Ye();qt();Za();var pk={};Vt(pk,{Strategy:()=>m2,acceptedStrategies:()=>O0t,dedupe:()=>N8});Ye();Ye();var Vge=$e(Zo()),m2=(e=>(e.HIGHEST=\"highest\",e))(m2||{}),O0t=new Set(Object.values(m2)),M0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=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`);_e.getSetWithDefault(u,E.identHash).add(h)}let A=new Map(_e.mapAndFilter(t.storedDescriptors.values(),p=>W.isVirtualDescriptor(p)?_e.mapAndFilter.skip:[p.descriptorHash,_e.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.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 I=t.originalPackages.get(E);if(typeof I>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let v=r.getResolutionDependencies(p,a),x=Object.fromEntries(await _e.allSettledSafe(Object.entries(v).map(async([te,ae])=>{let fe=A.get(ae.descriptorHash);if(typeof fe>\"u\")throw new Error(`Assertion failed: The descriptor (${ae.descriptorHash}) should have been registered`);let ce=await fe.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&&!Vge.default.isMatch(W.stringifyIdent(p),e)||!r.shouldPersistResolution(I,a))return I;let C=u.get(p.identHash);if(typeof C>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(C.size===1)return I;let R=[...C].map(te=>{let ae=t.originalPackages.get(te);if(typeof ae>\"u\")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ae}),L=await r.getSatisfying(p,x,R,a),U=L.locators?.[0];if(typeof U>\"u\"||!L.sorted)return I;let J=t.originalPackages.get(U.locatorHash);if(typeof J>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return J}).then(async v=>{let x=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:I,updatedPackage:v,resolvedPackage:x})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function N8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new Qi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let I=M0t[e],v=await I(t,r,{resolver:A,resolveOptions:E,fetcher:p,fetchOptions:h}),x=Xs.progressViaCounter(v.length);await a.reportProgress(x);let C=0;await Promise.all(v.map(U=>U.then(J=>{if(J===null||J.currentPackage.locatorHash===J.updatedPackage.locatorHash)return;C++;let{descriptor:te,currentPackage:ae,updatedPackage:fe}=J;a.reportInfo(0,`${W.prettyDescriptor(n,te)} can be deduped from ${W.prettyLocator(n,ae)} to ${W.prettyLocator(n,fe)}`),a.reportJson({descriptor:W.stringifyDescriptor(te),currentResolution:W.stringifyLocator(ae),updatedResolution:W.stringifyLocator(fe)}),t.storedResolutions.set(te.descriptorHash,fe.locatorHash)}).finally(()=>x.tick())));let R;switch(C){case 0:R=\"No packages\";break;case 1:R=\"One package\";break;default:R=`${C} packages`}let L=de.pretty(n,e,de.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${L} strategy`),C})}var Oh=class extends ut{constructor(){super(...arguments);this.strategy=ge.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:Ks(m2)});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:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await N8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Oh.paths=[[\"dedupe\"]],Oh.usage=nt.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\"]]});Ye();qt();var Kd=class extends ut{async execute(){let{plugins:e}=await Ke.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=as.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(\" \").slice(1).join()===A.split(\" \").slice(1).join(),n=Jge()[\"@yarnpkg/builder\"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)}\n`)}};Kd.paths=[[\"--clipanion=definitions\"]];var Vd=class extends ut{async execute(){this.context.stdout.write(this.cli.usage(null))}};Vd.paths=[[\"help\"],[\"--help\"],[\"-h\"]];Ye();St();qt();var mC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!W.tryParseIdent(this.leadingArgument)){let r=V.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])}};Ye();var Jd=class extends ut{async execute(){this.context.stdout.write(`${rn||\"<unknown>\"}\n`)}};Jd.paths=[[\"-v\"],[\"--version\"]];Ye();Ye();qt();var Mh=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState(),await un.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};Mh.paths=[[\"exec\"]],Mh.usage=nt.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\"']]});Ye();qt();Za();var Uh=class extends ut{constructor(){super(...arguments);this.hash=ge.String({validator:oS(Cy(),[oI(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),await _0t(this.hash,o,{stdout:this.context.stdout})}};Uh.paths=[[\"explain\",\"peer-requirements\"]],Uh.usage=nt.Usage({description:\"explain a set of peer requirements\",details:`\n      A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants.\n\n      When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not.\n\n      When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set.\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 set of peer requirements for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all sets of peer requirements\",\"$0 explain peer-requirements\"]]});async function _0t(t,e,r){let o=e.peerWarnings.find(n=>n.hash===t);if(typeof o>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${t}\"`);return(await Nt.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async n=>{let u=de.mark(e.configuration);switch(o.type){case 2:{n.reportInfo(0,`We have a problem with ${de.pretty(e.configuration,o.requested,de.Type.IDENT)}, which is provided with version ${W.prettyReference(e.configuration,o.version)}.`),n.reportInfo(0,\"It is needed by the following direct dependencies of workspaces in your project:\"),n.reportSeparator();for(let h of o.requesters.values()){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}let A=[...o.links.values()].filter(h=>!o.requesters.has(h.locatorHash));if(A.length>0){n.reportSeparator(),n.reportInfo(0,`However, those packages themselves have more dependencies listing ${W.prettyIdent(e.configuration,o.requested)} as peer dependency:`),n.reportSeparator();for(let h of A){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}}let p=Array.from(o.links.values(),h=>{let E=e.storedPackages.get(h.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E.peerDependencies.get(o.requested.identHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return I.range});if(p.length>1){let h=kr.simplifyRanges(p);n.reportSeparator(),h===null?(n.reportInfo(0,\"Unfortunately, put together, we found no single range that can satisfy all those peer requirements.\"),n.reportInfo(0,`Your best option may be to try to upgrade some dependencies with ${de.pretty(e.configuration,\"yarn up\",de.Type.CODE)}, or silence the warning via ${de.pretty(e.configuration,\"logFilters\",de.Type.CODE)}.`)):n.reportInfo(0,`Put together, the final range we computed is ${de.pretty(e.configuration,h,de.Type.RANGE)}`)}}break;default:n.reportInfo(0,`The ${de.pretty(e.configuration,\"yarn explain peer-requirements\",de.Type.CODE)} command doesn't support this warning type yet.`);break}})).exitCode()}Ye();qt();Za();Ye();Ye();St();qt();var zge=$e(zn()),_h=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let A=r.sources.get(\"yarnPath\");if(!A)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(V.contains(p,A))return 0}let o=()=>{if(typeof rn>\"u\")throw new it(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:o(),version:rn??\"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 y2(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await y2(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://${V.resolve(ue.toPortablePath(this.version))}`,version:\"file\"};else if(kr.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(kr.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(kr.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await H0t(r,this.version));else throw new it(`Invalid version descriptor \"${this.version}\"`);return(await Nt.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${de.pretty(r,a.url,de.Type.PATH)}`),await oe.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${de.pretty(r,a.url,de.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await L8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};_h.paths=[[\"set\",\"version\"]],_h.usage=nt.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 function H0t(t,e){let o=(await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new it(`No matching release found for range ${de.pretty(t,e,de.Type.RANGE)}.`);return o[0]}async function y2(t,e){let r=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new it(`Tag ${de.pretty(t,e,de.Type.RANGE)} not found`);return r.latest[e]}async function L8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>\"u\"&&(n=await r()),n);if(e===null){let te=await u();await oe.mktempPromise(async ae=>{let fe=V.join(ae,\"yarn.cjs\");await oe.writeFilePromise(fe,te);let{stdout:ce}=await Ur.execvp(process.execPath,[ue.fromPortablePath(fe),\"--version\"],{cwd:ae,env:{...t.env,YARN_IGNORE_PATH:\"1\"}});if(e=ce.trim(),!zge.default.valid(e))throw new Error(`Invalid semver version. ${de.pretty(t,\"yarn --version\",de.Type.CODE)} returned:\n${e}`)})}let A=t.projectCwd??t.startingCwd,p=V.resolve(A,\".yarn/releases\"),h=V.resolve(p,`yarn-${e}.cjs`),E=V.relative(t.startingCwd,h),I=_e.isTaggedYarnVersion(e),v=t.get(\"yarnPath\"),x=!I,C=x||!!v||!!a;if(a===!1){if(x)throw new zt(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");C=!1}else!C&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${de.applyHyperlink(t,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${de.applyHyperlink(t,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),C=!0);if(C){let te=await u();o.reportInfo(0,`Saving the new release in ${de.pretty(t,E,\"magenta\")}`),await oe.removePromise(V.dirname(h)),await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.writeFilePromise(h,te,{mode:493}),await Ke.updateConfiguration(A,{yarnPath:V.relative(A,h)})}else await oe.removePromise(V.dirname(h)),await Ke.updateConfiguration(A,{yarnPath:Ke.deleteProperty});let R=await Ot.tryFind(A)||new Ot;R.packageManager=`yarn@${I?e:await y2(t,\"stable\")}`;let L={};R.exportTo(L);let U=V.join(A,Ot.fileName),J=`${JSON.stringify(L,null,R.indent)}\n`;return await oe.changeFilePromise(U,J,{automaticNewlines:!0}),{bundleVersion:e}}function Xge(t){return wr[AS(t)]}var q0t=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function j0t(t){let r=`https://repo.yarnpkg.com/${_e.isTaggedYarnVersion(rn)?rn:await y2(t,\"canary\")}/packages/gatsby/content/advanced/error-codes.md`,o=await nn.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(q0t),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=Xge(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 Hh=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:aI(Cy(),[oI(/^YN[0-9]{4}$/)])});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let o=Xge(this.code),a=de.pretty(r,o,de.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await j0t(r)).get(this.code),p=typeof A<\"u\"?de.jsonOrPretty(this.json,r,de.tuple(de.Type.MARKDOWN,{text:A,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${de.jsonOrPretty(this.json,r,de.tuple(de.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:o,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let o={children:_e.mapAndFilter(Object.entries(wr),([a,n])=>Number.isNaN(Number(a))?_e.mapAndFilter.skip:{label:Wu(Number(a)),value:de.tuple(de.Type.CODE,n)})};$s.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Hh.paths=[[\"explain\"]],Hh.usage=nt.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\"]]});Ye();St();qt();var Zge=$e(Zo()),qh=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a&&!this.all)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add(\"cache\"),this.dependents&&u.add(\"dependents\"),this.manifest&&u.add(\"manifest\");let A=(ae,{recursive:fe})=>{let ce=ae.anchoredLocator.locatorHash,me=new Map,he=[ce];for(;he.length>0;){let Be=he.shift();if(me.has(Be))continue;let we=o.storedPackages.get(Be);if(typeof we>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(me.set(Be,we),W.isVirtualLocator(we)&&he.push(W.devirtualizeLocator(we).locatorHash),!(!fe&&Be!==ce))for(let g of we.dependencies.values()){let Ee=o.storedResolutions.get(g.descriptorHash);if(typeof Ee>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");he.push(Ee)}}return me.values()},p=({recursive:ae})=>{let fe=new Map;for(let ce of o.workspaces)for(let me of A(ce,{recursive:ae}))fe.set(me.locatorHash,me);return fe.values()},h=({all:ae,recursive:fe})=>ae&&fe?o.storedPackages.values():ae?p({recursive:fe}):A(a,{recursive:fe}),E=({all:ae,recursive:fe})=>{let ce=h({all:ae,recursive:fe}),me=this.patterns.map(we=>{let g=W.parseLocator(we),Ee=Zge.default.makeRe(W.stringifyIdent(g)),Se=W.isVirtualLocator(g),le=Se?W.devirtualizeLocator(g):g;return ne=>{let ee=W.stringifyIdent(ne);if(!Ee.test(ee))return!1;if(g.reference===\"unknown\")return!0;let Ie=W.isVirtualLocator(ne),Fe=Ie?W.devirtualizeLocator(ne):ne;return!(Se&&Ie&&g.reference!==ne.reference||le.reference!==Fe.reference)}}),he=_e.sortMap([...ce],we=>W.stringifyLocator(we));return{selection:he.filter(we=>me.length===0||me.some(g=>g(we))),sortedLookup:he}},{selection:I,sortedLookup:v}=E({all:this.all,recursive:this.recursive});if(I.length===0)throw new it(\"No package matched your request\");let x=new Map;if(this.dependents)for(let ae of v)for(let fe of ae.dependencies.values()){let ce=o.storedResolutions.get(fe.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");_e.getArrayWithDefault(x,ce).push(ae)}let C=new Map;for(let ae of v){if(!W.isVirtualLocator(ae))continue;let fe=W.devirtualizeLocator(ae);_e.getArrayWithDefault(C,fe.locatorHash).push(ae)}let R={},L={children:R},U=r.makeFetcher(),J={project:o,fetcher:U,cache:n,checksums:o.storedChecksums,report:new Qi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ae,fe,ce)=>{if(!fe.has(\"manifest\"))return;let me=await U.fetch(ae,J),he;try{he=await Ot.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}ce(\"Manifest\",{License:de.tuple(de.Type.NO_HINT,he.license),Homepage:de.tuple(de.Type.URL,he.raw.homepage??null)})},async(ae,fe,ce)=>{if(!fe.has(\"cache\"))return;let me=o.storedChecksums.get(ae.locatorHash)??null,he=n.getLocatorPath(ae,me),Be;if(he!==null)try{Be=await oe.statPromise(he)}catch{}let we=typeof Be<\"u\"?[Be.size,de.Type.SIZE]:void 0;ce(\"Cache\",{Checksum:de.tuple(de.Type.NO_HINT,me),Path:de.tuple(de.Type.PATH,he),Size:we})}];for(let ae of I){let fe=W.isVirtualLocator(ae);if(!this.virtuals&&fe)continue;let ce={},me={value:[ae,de.Type.LOCATOR],children:ce};if(R[W.stringifyLocator(ae)]=me,this.nameOnly){delete me.children;continue}let he=C.get(ae.locatorHash);typeof he<\"u\"&&(ce.Instances={label:\"Instances\",value:de.tuple(de.Type.NUMBER,he.length)}),ce.Version={label:\"Version\",value:de.tuple(de.Type.NO_HINT,ae.version)};let Be=(g,Ee)=>{let Se={};if(ce[g]=Se,Array.isArray(Ee))Se.children=Ee.map(le=>({value:le}));else{let le={};Se.children=le;for(let[ne,ee]of Object.entries(Ee))typeof ee>\"u\"||(le[ne]={label:ne,value:ee})}};if(!fe){for(let g of te)await g(ae,u,Be);await r.triggerHook(g=>g.fetchPackageInfo,ae,u,Be)}ae.bin.size>0&&!fe&&Be(\"Exported Binaries\",[...ae.bin.keys()].map(g=>de.tuple(de.Type.PATH,g)));let we=x.get(ae.locatorHash);typeof we<\"u\"&&we.length>0&&Be(\"Dependents\",we.map(g=>de.tuple(de.Type.LOCATOR,g))),ae.dependencies.size>0&&!fe&&Be(\"Dependencies\",[...ae.dependencies.values()].map(g=>{let Ee=o.storedResolutions.get(g.descriptorHash),Se=typeof Ee<\"u\"?o.storedPackages.get(Ee)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:Se})})),ae.peerDependencies.size>0&&fe&&Be(\"Peer dependencies\",[...ae.peerDependencies.values()].map(g=>{let Ee=ae.dependencies.get(g.identHash),Se=typeof Ee<\"u\"?o.storedResolutions.get(Ee.descriptorHash)??null:null,le=Se!==null?o.storedPackages.get(Se)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:le})}))}$s.emitTree(L,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};qh.paths=[[\"info\"]],qh.usage=nt.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\"]]});Ye();St();Nl();var hk=$e(td());qt();var O8=$e(zn());Za();var G0t=[{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\"}],jh=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:Ks(pl)});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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await LE({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:!hk.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:!hk.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:!o},{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:!hk.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new it(`${de.pretty(r,\"--immutable\",de.Type.CODE)} and ${de.pretty(r,\"--immutable-cache\",de.Type.CODE)} cannot be used with ${de.pretty(r,\"--mode=update-lockfile\",de.Type.CODE)}`);let u=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U=!1;await K0t(r,u)&&(L.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await W0t(r,u)&&(L.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&L.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{if(Ke.telemetry?.isNew)Ke.telemetry.commitTips(),L.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),L.reportInfo(65,`Run ${de.pretty(r,\"yarn config set --home enableTelemetry 0\",de.Type.CODE)} to disable`),L.reportSeparator();else if(Ke.telemetry?.shouldShowTips){let U=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let J=null;if(rn!==null){let ae=O8.default.prerelease(rn)?\"canary\":\"stable\",fe=U.latest[ae];O8.default.gt(fe,rn)&&(J=[ae,fe])}if(J)Ke.telemetry.commitTips(),L.reportInfo(88,`${de.applyStyle(r,`A new ${J[0]} version of Yarn is available:`,de.Style.BOLD)} ${W.prettyReference(r,J[1])}!`),L.reportInfo(88,`Upgrade now by running ${de.pretty(r,`yarn set version ${J[1]}`,de.Type.CODE)}`),L.reportSeparator();else{let te=Ke.telemetry.selectTip(U.tips);te&&(L.reportInfo(89,de.pretty(r,te.message,de.Type.MARKDOWN_INLINE)),te.url&&L.reportInfo(89,`Learn more at ${te.url}`),L.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Pt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U={};for(let J of G0t)J.selector(E)&&typeof r.sources.get(J.name)>\"u\"&&(r.use(\"<compat>\",{[J.name]:J.value},p.cwd,{overwrite:!0}),U[J.name]=J.value);Object.keys(U).length>0&&(await Ke.updateConfiguration(p.cwd,U),L.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),L.reportSeparator())});if(R.hasErrors())return R.exitCode()}let I=await Lr.find(r,{immutable:A,check:this.checkCache});if(!h)throw new rr(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let v=r.get(\"enableHardenedMode\");v&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Nt.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 ${de.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??v)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??v;return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:I,report:R,immutable:u,checkResolutions:x,mode:this.mode})})).exitCode()}};jh.paths=[[\"install\"],nt.Default],jh.usage=nt.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\"]]});var Y0t=\"<<<<<<<\";async function W0t(t,e){if(!t.projectCwd)return!1;let r=V.join(t.projectCwd,dr.lockfile);if(!await oe.existsPromise(r)||!(await oe.readFilePromise(r,\"utf8\")).includes(Y0t))return!1;if(e)throw new zt(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await Ur.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0)throw new zt(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 A=>{let p=await Ur.execvp(\"git\",[\"show\",`${A}:./${dr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new zt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Ki(p.stdout)}catch{throw new zt(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(A=>!!A.__metadata);for(let A of n){if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=W.parseDescriptor(p,!0),E=t.normalizeDependency(h),I=W.stringifyDescriptor(E);I!==p&&(A[I]=A[p],delete A[p])}for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=A[p].checksum;typeof h==\"string\"&&h.includes(\"/\")||(A[p].checksum=`${A.__metadata.cacheKey}/${h}`)}}let u=Object.assign({},...n);u.__metadata.version=`${Math.min(...n.map(A=>parseInt(A.__metadata.version??0)))}`,u.__metadata.cacheKey=\"merged\";for(let[A,p]of Object.entries(u))typeof p==\"string\"&&delete u[A];return await oe.changeFilePromise(r,Ba(u),{automaticNewlines:!0}),!0}async function K0t(t,e){if(!t.projectCwd)return!1;let r=[],o=V.join(t.projectCwd,\".yarn/plugins/@yarnpkg\");return await Ke.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let u=n.filter(A=>{if(!A.path)return!0;let p=V.resolve(t.projectCwd,A.path),h=v1.has(A.spec)&&V.contains(o,p);return h&&r.push(p),!h});return u.length===0?Ke.deleteProperty:u.length===n.length?n:u}},{immutable:e})?(await Promise.all(r.map(async n=>{await oe.removePromise(n)})),!0):!1}Ye();St();qt();var Gh=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let p of this.destinations){let h=V.resolve(this.context.cwd,ue.toPortablePath(p)),E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await Pt.find(E,h);if(o.cwd===I.cwd)throw new it(`Invalid destination '${p}'; Can't link the project to itself`);if(!v)throw new rr(I.cwd,h);if(this.all){let x=!1;for(let C of I.workspaces)C.manifest.name&&(!C.manifest.private||this.private)&&(A.push(C),x=!0);if(!x)throw new it(`No workspace found to be linked in the target project: ${p}`)}else{if(!v.manifest.name)throw new it(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(v.manifest.private&&!this.private)throw new it(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);A.push(v)}}for(let p of A){let h=W.stringifyIdent(p.anchoredLocator),E=this.relative?V.relative(o.cwd,p.cwd):p.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Gh.paths=[[\"link\"]],Gh.usage=nt.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\"]]});qt();var Yh=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};Yh.paths=[[\"node\"]],Yh.usage=nt.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\"]]});Ye();qt();var Wh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Ke.findRcFiles(this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let u of o)if(!!u.data?.plugins)for(let A of u.data.plugins){if(!A.checksum||!A.spec.match(/^https?:/))continue;let p=await nn.get(A.spec,{configuration:r}),h=wn.makeHash(p);if(A.checksum===h)continue;let E=de.pretty(r,A.path,de.Type.PATH),I=de.pretty(r,A.spec,de.Type.URL),v=`${E} is different from the file provided by ${I}`;n.reportJson({...A,newChecksum:h}),n.reportError(0,v)}})).exitCode()}};Wh.paths=[[\"plugin\",\"check\"]],Wh.usage=nt.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\"]]});Ye();Ye();St();qt();var nde=ve(\"os\");Ye();St();qt();var $ge=ve(\"os\");Ye();Nl();qt();var V0t=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function zd(t,e){let r=await nn.get(V0t,{configuration:t}),o=Ki(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||kr.satisfiesWithPrereleases(e,n.range??\"<4.0.0-rc.1\")))}var Kh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await zd(r,rn);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=\" [experimental]\"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};Kh.paths=[[\"plugin\",\"list\"]],Kh.usage=nt.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\"]]});var J0t=/^[0-9]+$/,z0t=process.platform===\"win32\";function ede(t){return J0t.test(t)?`pull/${t}/head`:t}var X0t=({repository:t,branch:e},r)=>[[\"git\",\"init\",ue.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",t],[\"git\",\"fetch\",\"origin\",\"--depth=1\",ede(e)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],Z0t=({branch:t})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",ede(t),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],$0t=({plugins:t,noMinify:e},r,o)=>[[\"yarn\",\"build:cli\",...new Array().concat(...t.map(a=>[\"--plugin\",V.resolve(o,a)])),...e?[\"--no-minify\"]:[],\"|\"],[z0t?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",ue.fromPortablePath(r),\"|\"]],Vh=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,$ge.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{await M8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,\"Building a fresh bundle\"),u.reportSeparator();let A=await Ur.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=V.join(a,`packages/yarnpkg-cli/bundles/yarn-${A.stdout.trim()}.js`);oe.existsSync(p)||(await E2($0t(this,p,a),{configuration:r,context:this.context,target:a}),u.reportSeparator());let h=await oe.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await L8(r,null,async()=>h,{report:u});this.skipPlugins||await egt(this,E,{project:o,report:u,target:a})}})).exitCode()}};Vh.paths=[[\"set\",\"version\",\"from\",\"sources\"]],Vh.usage=nt.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 function E2(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]===\"|\";if(u&&n.pop(),u)await Ur.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${de.pretty(e,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await Ur.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function M8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&oe.existsSync(V.join(o,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await E2(Z0t(t),{configuration:e,context:t.context,target:o}),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 oe.removePromise(o),await oe.mkdirPromise(o,{recursive:!0}),await E2(X0t(t,o),{configuration:e,context:t.context,target:o}))}async function egt(t,e,{project:r,report:o,target:a}){let n=await zd(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await U8(A,t,{project:r,report:o,target:a})}Ye();Ye();St();qt();var tde=$e(zn()),rde=ve(\"vm\");var Jh=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Pt.find(r,this.context.cwd),u,A;if(this.name.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.name)){let p=V.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${de.pretty(r,p,de.Type.PATH)}`),u=V.relative(n.cwd,p),A=await oe.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new zt(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=W.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!tde.default.valid(h.reference))throw new zt(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=W.stringifyIdent(h),I=await zd(r,rn);if(!Object.hasOwn(I,E)){let v=`Couldn't find a plugin named ${W.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?v+=`A plugin named ${W.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${de.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",de.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${de.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",de.Type.URL)}).`,new zt(51,v)}u=E,p=I[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):rn!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${rn}/`))}a.reportInfo(0,`Downloading ${de.pretty(r,p,\"green\")}`),A=await nn.get(p,{configuration:r})}await _8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};Jh.paths=[[\"plugin\",\"import\"]],Jh.usage=nt.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 function _8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,rde.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,E=V.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${de.pretty(n,h,\"magenta\")}`),await oe.mkdirPromise(V.dirname(E),{recursive:!0}),await oe.writeFilePromise(E,e);let I={path:h,spec:t};r&&(I.checksum=wn.makeHash(e)),await Ke.addPlugin(o.cwd,[I])}var tgt=({pluginName:t,noMinify:e},r)=>[[\"yarn\",`build:${t}`,...e?[\"--no-minify\"]:[],\"|\"]],zh=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<\"u\"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,nde.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await Pt.find(r,this.context.cwd),A=W.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=W.stringifyIdent(A),h=await zd(r,rn);if(!Object.hasOwn(h,p))throw new zt(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 M8(this,{configuration:r,report:n,target:o}),await U8(E,this,{project:u,report:n,target:o})})).exitCode()}};zh.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]],zh.usage=nt.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 function U8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\\//,\"\"),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await E2(tgt({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=V.resolve(n,`packages/${u}/bundles/${t}.js`),h=await oe.readFilePromise(p);await _8(t,h,{project:o,report:a})}Ye();St();qt();var Xh=class extends ut{constructor(){super(...arguments);this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=W.parseIdent(u);if(!r.plugins.has(u))throw new it(`${W.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=V.resolve(o.cwd,p);oe.existsSync(h)&&(n.reportInfo(0,`Removing ${de.pretty(r,p,de.Type.PATH)}...`),await oe.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await Ke.updateConfiguration(o.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let I=E.filter(v=>v.path!==p);return I.length===0?Ke.deleteProperty:I.length===E.length?E:I}})})).exitCode()}};Xh.paths=[[\"plugin\",\"remove\"]],Xh.usage=nt.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\"]]});Ye();qt();var Zh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=\" [builtin]\"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};Zh.paths=[[\"plugin\",\"runtime\"]],Zh.usage=nt.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\"]]});Ye();Ye();qt();var $h=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=new Set;for(let A of this.idents)u.add(W.parseIdent(A).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new Qi}),u.size>0)for(let A of o.storedPackages.values())u.has(A.identHash)&&(o.storedBuildState.delete(A.locatorHash),o.skippedBuilds.delete(A.locatorHash));else o.storedBuildState.clear(),o.skippedBuilds.clear();return await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};$h.paths=[[\"rebuild\"]],$h.usage=nt.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\"]]});Ye();Ye();Ye();qt();var H8=$e(Zo());Za();var e0=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:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let C of this.patterns){let R=!1,L=W.parseIdent(C);for(let U of u){let J=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,H8.default)(J,C))U.manifest.peerDependenciesMeta.delete(te),h=!0,R=!0;for(let te of A){let ae=U.manifest.getForScope(te),fe=[...ae.values()].map(ce=>W.stringifyIdent(ce));for(let ce of(0,H8.default)(fe,W.stringifyIdent(L))){let{identHash:me}=W.parseIdent(ce),he=ae.get(me);if(typeof he>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[te].delete(me),E.push([U,te,he]),h=!0,R=!0}}}R||p.push(C)}let I=p.length>1?\"Patterns\":\"Pattern\",v=p.length>1?\"don't\":\"doesn't\",x=this.all?\"any\":\"this\";if(p.length>0)throw new it(`${I} ${de.prettyList(r,p,de.Type.CODE)} ${v} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,E),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};e0.paths=[[\"remove\"]],e0.usage=nt.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}'\"]]});Ye();Ye();qt();var ide=ve(\"util\"),Xd=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async u=>{let A=a.manifest.scripts,p=_e.sortMap(A.keys(),I=>I),h={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},E=p.reduce((I,v)=>Math.max(I,v.length),0);for(let[I,v]of A.entries())u.reportInfo(null,`${I.padEnd(E,\" \")}   ${(0,ide.inspect)(v,h)}`),u.reportJson({name:I,script:v})})).exitCode()}};Xd.paths=[[\"run\"]];Ye();Ye();qt();var t0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await un.hasPackageScript(u,this.scriptName,{project:o}))return await un.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await un.getPackageAccessibleBinaries(u,{project:o});if(A.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 un.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(o.workspaces.map(async I=>I.manifest.scripts.has(this.scriptName)?I:null))).filter(I=>I!==null);if(E.length===1)return await un.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 it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.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 it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new it(\"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,I]of AC)for(let v of I)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new it(`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 it(`Couldn't find a script named \"${this.scriptName}\".`)}}};t0.paths=[[\"run\"]],t0.usage=nt.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\"]]});Ye();Ye();qt();var r0=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new rr(o.cwd,this.context.cwd);let u=W.parseDescriptor(this.descriptor,!0),A=W.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};r0.paths=[[\"set\",\"resolution\"]],r0.usage=nt.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 1.5.0\"]]});Ye();St();qt();var sde=$e(Zo()),n0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of u.manifest.resolutions)h.startsWith(\"portal:\")&&A.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=V.resolve(this.context.cwd,ue.toPortablePath(p));if(_e.isPathLike(p)){let E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await Pt.find(E,h);if(!v)throw new rr(I.cwd,h);if(this.all){for(let x of I.workspaces)x.manifest.name&&A.add(W.stringifyIdent(x.anchoredLocator));if(A.size===0)throw new it(\"No workspace found to be unlinked in the target project\")}else{if(!v.manifest.name)throw new it(\"The target workspace doesn't have a name and thus cannot be unlinked\");A.add(W.stringifyIdent(v.anchoredLocator))}}else{let E=[...u.manifest.resolutions.map(({pattern:I})=>I.descriptor.fullName)];for(let I of(0,sde.default)(E,p))A.add(I)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:p})=>!A.has(p.descriptor.fullName)),await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};n0.paths=[[\"unlink\"]],n0.usage=nt.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}'\"]]});Ye();Ye();Ye();qt();var ode=$e(f2()),q8=$e(Zo());Za();var Jf=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:Ks(pl)});this.patterns=ge.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(E=>W.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(W.parseDescriptor(E).range!==\"unknown\")throw new it(\"Ranges aren't allowed when using --recursive\");for(let I of(0,q8.default)(A,E)){let v=W.parseIdent(I);p.add(v.identHash)}}let h=u.filter(E=>p.has(E.identHash));for(let E of h)o.storedDescriptors.delete(E.descriptorHash),o.storedResolutions.delete(E.descriptorHash);return await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=h2(this,o),h=A?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],I=[];for(let L of this.patterns){let U=!1,J=W.parseDescriptor(L),te=W.stringifyIdent(J);for(let ae of o.workspaces)for(let fe of[\"dependencies\",\"devDependencies\"]){let me=[...ae.manifest.getForScope(fe).values()].map(Be=>W.stringifyIdent(Be)),he=te===\"*\"?me:(0,q8.default)(me,te);for(let Be of he){let we=W.parseIdent(Be),g=ae.manifest[fe].get(we.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let Ee=W.makeDescriptor(we,J.range);E.push(Promise.resolve().then(async()=>[ae,fe,g,await g2(Ee,{project:o,workspace:ae,cache:n,target:fe,fixed:u,modifier:p,strategies:h})])),U=!0}}U||I.push(L)}if(I.length>1)throw new it(`Patterns ${de.prettyList(r,I,de.Type.CODE)} don't match any packages referenced by any workspace`);if(I.length>0)throw new it(`Pattern ${de.prettyList(r,I,de.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(E),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async L=>{for(let[,,U,{suggestions:J,rejections:te}]of v){let ae=J.filter(fe=>fe.descriptor!==null);if(ae.length===0){let[fe]=te;if(typeof fe>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let ce=this.cli.error(fe);o.configuration.get(\"enableNetwork\")?L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${ce}`):L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${ce}`)}else ae.length>1&&!A&&L.reportError(27,`${W.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[];for(let[L,U,,{suggestions:J}]of v){let te,ae=J.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,ode.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${W.prettyWorkspace(r,L)} \\u276F ${U}?`,choices:J.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=L.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)L.manifest[U].set(te.identHash,te),R.push([L,U,me,te]);else{let he=r.makeResolver(),Be={project:o,resolver:he},we=r.normalizeDependency(me),g=he.bindDescriptor(we,L.anchoredLocator,Be);o.forgetResolution(g)}}return await r.triggerMultipleHooks(L=>L.afterWorkspaceDependencyReplacement,R),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Jf.paths=[[\"up\"]],Jf.usage=nt.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'\"]]}),Jf.schema=[cI(\"recursive\",Gu.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})];Ye();Ye();Ye();qt();var i0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=W.parseIdent(this.package).identHash,u=this.recursive?ngt(o,n,{configuration:r,peers:this.peers}):rgt(o,n,{configuration:r,peers:this.peers});$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};i0.paths=[[\"why\"]],i0.usage=nt.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\"]]});function rgt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.storedPackages.values(),A=>W.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let E of A.dependencies.values()){if(!o&&A.peerDependencies.has(E.identHash))continue;let I=t.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(\"Assertion failed: The resolution should have been registered\");let v=t.storedPackages.get(I);if(!v)throw new Error(\"Assertion failed: The package should have been registered\");if(v.identHash!==e)continue;{let C=W.stringifyLocator(A);n[C]={value:[A,de.Type.LOCATOR],children:p}}let x=W.stringifyLocator(v);p[x]={value:[{descriptor:E,locator:v},de.Type.DEPENDENT]}}}return u}function ngt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.workspaces,v=>W.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let x=!1;v.identHash===e&&(x=!0);for(let C of v.dependencies.values()){if(!o&&v.peerDependencies.has(C.identHash))continue;let R=t.storedResolutions.get(C.descriptorHash);if(!R)throw new Error(\"Assertion failed: The resolution should have been registered\");let L=t.storedPackages.get(R);if(!L)throw new Error(\"Assertion failed: The package should have been registered\");A(L)&&(x=!0)}return x&&u.add(v.locatorHash),x};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},E={children:h},I=(v,x,C)=>{if(!u.has(v.locatorHash))return;let R=C!==null?de.tuple(de.Type.DEPENDENT,{locator:v,descriptor:C}):de.tuple(de.Type.LOCATOR,v),L={},U={value:R,children:L},J=W.stringifyLocator(v);if(x[J]=U,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(C!==null&&t.tryWorkspaceByLocator(v))))for(let te of v.dependencies.values()){if(!o&&v.peerDependencies.has(te.identHash))continue;let ae=t.storedResolutions.get(te.descriptorHash);if(!ae)throw new Error(\"Assertion failed: The resolution should have been registered\");let fe=t.storedPackages.get(ae);if(!fe)throw new Error(\"Assertion failed: The package should have been registered\");I(fe,L,te)}};for(let v of a)I(v.anchoredPackage,h,null);return E}Ye();var Z8={};Vt(Z8,{GitFetcher:()=>w2,GitResolver:()=>I2,default:()=>vgt,gitUtils:()=>ra});Ye();St();var ra={};Vt(ra,{TreeishProtocols:()=>C2,clone:()=>X8,fetchBase:()=>bde,fetchChangedFiles:()=>xde,fetchChangedWorkspaces:()=>Igt,fetchRoot:()=>Pde,isGitUrl:()=>CC,lsRemote:()=>Sde,normalizeLocator:()=>wgt,normalizeRepoUrl:()=>yC,resolveUrl:()=>z8,splitRepoUrl:()=>s0,validateRepoUrl:()=>J8});Ye();St();qt();var Bde=$e(Cde()),vde=$e(mU()),EC=$e(ve(\"querystring\")),K8=$e(zn());function W8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function wde(t){try{return new URL(t)}catch{return}}function Egt(t){let e=W8(t,\"@\",\"#\"),r=W8(t,\":\",\"#\");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),W8(t,\":\",\"#\")===-1&&t.indexOf(\"//\")===-1&&(t=`ssh://${t}`),t}function Ide(t){return wde(t)||wde(Egt(t))}function yC(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=Ide(t);r&&(t=r.href),t=t.replace(/^git\\+([^:]+):/,\"$1:\")}return t}function Dde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var Cgt=[/^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\\/(.+)?$/],C2=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(C2||{});function CC(t){return t?Cgt.some(e=>!!t.match(e)):!1}function s0(t){t=yC(t);let e=t.indexOf(\"#\");if(e===-1)return{repo:t,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=EC.default.parse(o);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(C2).find(p=>Object.hasOwn(a,p)),[u,A]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(C2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(\":\"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function wgt(t){return W.makeLocator(t,yC(t.reference))}function J8(t,{configuration:e}){let r=yC(t,{git:!0});if(!nn.getNetworkSettings(`https://${(0,Bde.default)(r).resource}`,{configuration:e}).enableNetwork)throw new zt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Sde(t,e){let r=J8(t,{configuration:e}),o=await V8(\"listing refs\",[\"ls-remote\",r],{cwd:e.startingCwd,env:Dde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function z8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=s0(t),u=await Sde(r,e),A=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return EC.default.stringify({...n,commit:E})}case\"head\":{let I=u.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof I>\"u\")throw new Error(`Unknown head (\"${E}\")`);return EC.default.stringify({...n,commit:I})}case\"tag\":{let I=u.get(`refs/tags/${E}`);if(typeof I>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return EC.default.stringify({...n,commit:I})}case\"semver\":{let I=kr.validRange(E);if(!I)throw new Error(`Invalid range (\"${E}\")`);let v=new Map([...u.entries()].filter(([C])=>C.startsWith(\"refs/tags/\")).map(([C,R])=>[K8.default.parse(C.slice(10)),R]).filter(C=>C[0]!==null)),x=K8.default.maxSatisfying([...v.keys()],I);if(x===null)throw new Error(`No matching range (\"${E}\")`);return EC.default.stringify({...n,commit:v.get(x)})}case null:{let I;if((I=p(\"commit\",E))!==null||(I=p(\"tag\",E))!==null||(I=p(\"head\",E))!==null)return I;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 A(h,E)}catch{return null}};return yC(`${r}#${A(o,a)}`)}async function X8(t,e){return await e.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=s0(t);if(o!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=J8(r,{configuration:e}),u=await oe.mktempPromise(),A={cwd:u,env:Dde()};return await V8(\"cloning the repository\",[\"clone\",\"-c core.autocrlf=false\",n,ue.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await V8(\"switching branch\",[\"checkout\",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function Pde(t){let e,r=t;do{if(e=r,await oe.existsPromise(V.join(e,\".git\")))return e;r=V.dirname(e)}while(r!==e);return null}async function bde(t,{baseRefs:e}){if(e.length===0)throw new it(\"Can't run this command with zero base refs specified.\");let r=[];for(let A of e){let{code:p}=await Ur.execvp(\"git\",[\"merge-base\",A,\"HEAD\"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new it(`No ancestor could be found between any of HEAD and ${e.join(\", \")}`);let{stdout:o}=await Ur.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Ur.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function xde(t,{base:e,project:r}){let o=_e.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await Ur.execvp(\"git\",[\"diff\",\"--name-only\",`${e}`],{cwd:t,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),{stdout:u}=await Ur.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:t,strict:!0}),A=u.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!V.relative(r.cwd,h).match(o)):p}async function Igt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let r=[V.resolve(e.cwd,dr.lockfile),V.resolve(e.cwd,e.configuration.get(\"cacheFolder\")),V.resolve(e.cwd,e.configuration.get(\"installStatePath\")),V.resolve(e.cwd,e.configuration.get(\"virtualFolder\"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await Pde(e.configuration.projectCwd);if(o==null)throw new it(\"This command can only be run on Git repositories\");let a=await bde(o,{baseRefs:typeof t==\"string\"?[t]:e.configuration.get(\"changesetBaseRefs\")}),n=await xde(o,{base:a.hash,project:e});return new Set(_e.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?_e.mapAndFilter.skip:r.some(p=>u.startsWith(p))?_e.mapAndFilter.skip:A}))}async function V8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Ur.execvp(\"git\",e,{...r,strict:!0})}catch(n){if(!(n instanceof Ur.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new zt(1,`Failed ${t}`,p=>{p.reportError(1,`  ${de.prettyField(o,{label:\"Repository URL\",value:de.tuple(de.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,E,I]=h;E=E.toLowerCase();let v=E===\"error\"?\"Error\":`${(0,vde.default)(E)} Error`;p.reportError(1,`  ${de.prettyField(o,{label:v,value:de.tuple(de.Type.NO_HINT,I)})}`)}u?.(p)})}}var w2=class{supports(e,r){return CC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,o);let n={...r,checksums:a},u=await this.downloadHosted(e,n);if(u!==null)return u;let[A,p,h]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:A,releaseFs:p,prefixPath:W.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await X8(e.reference,r.project.configuration),a=s0(e.reference),n=V.join(o,\"package.tgz\");await un.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await oe.readFilePromise(n);return await _e.releaseAfterUseAsync(async()=>await Xi.convertToZip(u,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1}))}};Ye();Ye();var I2=class{supportsDescriptor(e,r){return CC(e.range)}supportsLocator(e,r){return CC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await z8(e.range,o.project.configuration);return[W.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=s0(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=s0(A.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 Bgt={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:[w2],resolvers:[I2]};var vgt=Bgt;qt();var o0=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await ra.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let I=new Set,v=new Set;for(let x of Ot.hardDependencies)for(let[C,R]of h.getForScope(x)){let L=o.tryWorkspaceByDescriptor(R);L===null?o.workspacesByIdent.has(C)&&v.add(R):I.add(L)}E={workspaceDependencies:Array.from(I).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(x=>W.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?W.stringifyIdent(h.name):null,...E})}})).exitCode()}};o0.paths=[[\"workspaces\",\"list\"]],o0.usage=nt.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    \"});Ye();Ye();qt();var a0=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[W.stringifyIdent(p.anchoredLocator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new it(`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:A.cwd})}};a0.paths=[[\"workspace\"]],a0.usage=nt.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\"]]});var Dgt={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:kde.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:[Fh,Rh,Th,Nh,r0,Vh,_h,o0,Kd,Vd,mC,Jd,kh,Qh,Lh,Oh,Mh,Uh,Hh,qh,jh,Gh,n0,Yh,Wh,zh,Jh,Xh,Kh,Zh,$h,e0,Xd,t0,Jf,i0,a0]},Sgt=Dgt;var iH={};Vt(iH,{default:()=>bgt});Ye();var kt={optional:!0},eH=[[\"@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:kt,zenObservable:kt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{[\"supports-color\"]:kt}}],[\"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\"]:kt,[\"postcss-jsx\"]:kt,[\"postcss-less\"]:kt,[\"postcss-markdown\"]:kt,[\"postcss-scss\"]:kt}}],[\"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:kt}}],[\"snowpack@>=3.3.0\",{dependencies:{[\"node-gyp\"]:\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:kt}}],[\"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:kt,\"vue-template-compiler\":kt}}],[\"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:kt,\"utf-8-validate\":kt}}],[\"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\":kt,\"vuetify-loader\":kt}}],[\"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\":kt}}],[\"@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\":kt}}],[\"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\":kt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:kt}}],[\"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:kt,tinyliquid:kt,\"liquid-node\":kt,jade:kt,\"then-jade\":kt,dust:kt,\"dustjs-helpers\":kt,\"dustjs-linkedin\":kt,swig:kt,\"swig-templates\":kt,\"razor-tmpl\":kt,atpl:kt,liquor:kt,twig:kt,ejs:kt,eco:kt,jazz:kt,jqtpl:kt,hamljs:kt,hamlet:kt,whiskers:kt,\"haml-coffee\":kt,\"hogan.js\":kt,templayed:kt,handlebars:kt,underscore:kt,lodash:kt,pug:kt,\"then-pug\":kt,qejs:kt,walrus:kt,mustache:kt,just:kt,ect:kt,mote:kt,toffee:kt,dot:kt,\"bracket-template\":kt,ractive:kt,nunjucks:kt,htmling:kt,\"babel-core\":kt,plates:kt,\"react-dom\":kt,react:kt,\"arc-templates\":kt,vash:kt,slm:kt,marko:kt,teacup:kt,\"coffee-script\":kt,squirrelly:kt,twing:kt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt,vue:kt}}],[\"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:kt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:kt}}],[\"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\":kt,\"webpack-command\":kt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:kt,jimp:kt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":kt,\"eslint-import-resolver-typescript\":kt,\"eslint-import-resolver-webpack\":kt,\"@typescript-eslint/parser\":kt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":kt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":kt}}],[\"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:kt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:kt}}],[\"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\"]:kt}}],[\"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:kt}}],[\"@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:kt}}],[\"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:kt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":kt}}],[\"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\"}}]];var tH;function Qde(){return typeof tH>\"u\"&&(tH=ve(\"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()),tH}var rH;function Fde(){return typeof rH>\"u\"&&(rH=ve(\"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()),rH}var nH;function Rde(){return typeof nH>\"u\"&&(nH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),nH}var Tde=new Map([[W.makeIdent(null,\"fsevents\").identHash,Qde],[W.makeIdent(null,\"resolve\").identHash,Fde],[W.makeIdent(null,\"typescript\").identHash,Rde]]),Pgt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of eH)e(W.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{let r=\"compat/\";if(!e.startsWith(r))return;let o=W.parseIdent(e.slice(r.length)),a=Tde.get(o.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(t,e,r,o)=>typeof Tde.get(t.identHash)>\"u\"?t:W.makeDescriptor(t,W.makeRange({protocol:\"patch:\",source:W.stringifyDescriptor(t),selector:`optional!builtin<compat/${W.stringifyIdent(t)}>`,params:null}))}},bgt=Pgt;var wH={};Vt(wH,{ConstraintsCheckCommand:()=>h0,ConstraintsQueryCommand:()=>f0,ConstraintsSourceCommand:()=>p0,default:()=>tdt});Ye();Ye();v2();var IC=class{constructor(e){this.project=e}createEnvironment(){let e=new wC([\"cwd\",\"ident\"]),r=new wC([\"workspace\",\"type\",\"ident\"]),o=new wC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,u=new Map;for(let A of this.project.storedPackages.values()){let p=Array.from(A.peerDependencies.values(),h=>[W.stringifyIdent(h),h.range]);n.set(A.locatorHash,{workspace:null,ident:W.stringifyIdent(A),version:A.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional===!0))})}for(let A of this.project.storedPackages.values()){let p=n.get(A.locatorHash);p.dependencies=new Map(Array.from(A.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 I=n.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[W.stringifyIdent(h),I]})),p.dependencies.delete(p.ident)}for(let A of this.project.workspaces){let p=W.stringifyIdent(A.anchoredLocator),h=A.manifest.exportTo({}),E=n.get(A.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let I=(R,L,{caller:U=Ji.getCaller()}={})=>{let J=B2(R),te=_e.getMapWithDefault(a.manifestUpdates,A.cwd),ae=_e.getMapWithDefault(te,J),fe=_e.getSetWithDefault(ae,L);U!==null&&fe.add(U)},v=R=>I(R,void 0,{caller:Ji.getCaller()}),x=R=>{_e.getArrayWithDefault(a.reportedErrors,A.cwd).push(R)},C=e.insert({cwd:A.relativeCwd,ident:p,manifest:h,pkg:E,set:I,unset:v,error:x});u.set(A,C);for(let R of Ot.allDependencies)for(let L of A.manifest[R].values()){let U=W.stringifyIdent(L),J=()=>{I([R,U],void 0,{caller:Ji.getCaller()})},te=fe=>{I([R,U],fe,{caller:Ji.getCaller()})},ae=null;if(R!==\"peerDependencies\"&&(R!==\"dependencies\"||!A.manifest.devDependencies.has(L.identHash))){let fe=A.anchoredPackage.dependencies.get(L.identHash);if(fe){if(typeof fe>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let ce=this.project.storedResolutions.get(fe.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\");ae=me}}r.insert({workspace:C,ident:U,range:L.range,type:R,resolution:ae,update:te,delete:J,error:x})}}for(let A of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(A);if(!p)continue;let h=u.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(A.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:o,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)}},o=await this.project.loadUserConfig();return o?.constraints?(await o.constraints(r),e.result):null}};Ye();Ye();qt();var f0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=ge.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(\".\")||(u=`${u}.`),(await Nt.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let E=Array.from(Object.entries(h)),I=E.length,v=E.reduce((x,[C])=>Math.max(x,C.length),0);for(let x=0;x<I;x++){let[C,R]=E[x];p.reportInfo(null,`${$gt(x,I)}${C.padEnd(v,\" \")} = ${Zgt(R)}`)}p.reportJson(h)}})).exitCode()}};f0.paths=[[\"constraints\",\"query\"]],f0.usage=nt.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, _, _).'\"]]});function Zgt(t){return typeof t!=\"string\"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function $gt(t,e){let r=t===0,o=t===e-1;return r&&o?\"\":r?\"\\u250C \":o?\"\\u2514 \":\"\\u2502 \"}Ye();qt();var p0=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\"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};p0.paths=[[\"constraints\",\"source\"]],p0.usage=nt.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\"]]});Ye();Ye();qt();v2();var h0=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let a=await o.loadUserConfig(),n;if(a?.constraints)n=new IC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(x2(),b2));n=await h.find(o)}let u,A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:I,remainingErrors:v}=gk(o,E,{fix:this.fix}),x=[];for(let[C,R]of I){let L=C.manifest.indent;C.manifest=new Ot,C.manifest.indent=L,C.manifest.load(R),x.push(C.persistManifest())}if(await Promise.all(x),!(I.size>0&&h>1)){u=Hde(v,{configuration:r}),A=!1,p=!0;for(let[,C]of v)for(let R of C)R.fixable?A=!0:p=!1}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`;await Nt.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return u.children=_e.sortMap(u.children,h=>h.value[1]),$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};h0.paths=[[\"constraints\"]],h0.usage=nt.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\"]]});v2();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:[f0,p0,h0],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get(\"enableConstraintsChecks\"))return;let r=await t.loadUserConfig(),o;if(r?.constraints)o=new IC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(x2(),b2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=gk(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[u,A]of n)for(let p of A)e(84,`${de.pretty(t.configuration,u.anchoredLocator,de.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${de.pretty(t.configuration,\"yarn constraints\",de.Type.CODE)} for more details`)}}},tdt=edt;var IH={};Vt(IH,{CreateCommand:()=>tm,DlxCommand:()=>g0,default:()=>ndt});Ye();qt();var tm=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()}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let o=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=W.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?W.makeIdent(a.scope,`create-${a.name}`):W.makeIdent(null,`create-${a.name}`),u=W.stringifyIdent(n);return a.range!==\"unknown\"&&(u+=`@${a.range}`),this.cli.run([\"dlx\",...r,u,...this.args])}};tm.paths=[[\"create\"]];Ye();Ye();St();qt();var g0=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()}async execute(){return Ke.telemetry=null,await oe.mktempPromise(async r=>{let o=V.join(r,`dlx-${process.pid}`);await oe.mkdirPromise(o),await oe.writeFilePromise(V.join(o,\"package.json\"),`{}\n`),await oe.writeFilePromise(V.join(o,\"yarn.lock\"),\"\");let a=V.join(o,\".yarnrc.yml\"),n=await Ke.findProjectCwd(this.context.cwd),A={enableGlobalCache:!(await Ke.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Wu(68),level:de.LogLevel.Discard}]},p=n!==null?V.join(n,\".yarnrc.yml\"):null;p!==null&&oe.existsSync(p)?(await oe.copyFilePromise(p,a),await Ke.updateConfiguration(o,L=>{let U=_e.toMerged(L,A);return Array.isArray(L.plugins)&&(U.plugins=L.plugins.map(J=>{let te=typeof J==\"string\"?J:J.path,ae=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof J==\"string\"?ae:{path:ae,spec:J.spec}})),U})):await oe.writeJsonPromise(a,A);let h=this.packages??[this.command],E=W.parseDescriptor(this.command).name,I=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:o,quiet:this.quiet});if(I!==0)return I;this.quiet||this.context.stdout.write(`\n`);let v=await Ke.find(o,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,o);if(C===null)throw new rr(x.cwd,o);await x.restoreInstallState();let R=await un.getWorkspaceAccessibleBinaries(C);return R.has(E)===!1&&R.size===1&&typeof this.packages>\"u\"&&(E=Array.from(R)[0][0]),await un.executeWorkspaceAccessibleBinary(C,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};g0.paths=[[\"dlx\"]],g0.usage=nt.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!')\"`]]});var rdt={commands:[tm,g0]},ndt=rdt;var DH={};Vt(DH,{ExecFetcher:()=>Q2,ExecResolver:()=>F2,default:()=>odt,execUtils:()=>Ek});Ye();Ye();St();var fA=\"exec:\";var Ek={};Vt(Ek,{loadGeneratorFile:()=>k2,makeLocator:()=>vH,makeSpec:()=>pme,parseSpec:()=>BH});Ye();St();function BH(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function pme({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function vH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return W.makeLocator(t,pme({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function k2(t,e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(t,{protocol:e}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.join(u.prefixPath,a);return await A.readFilePromise(p,\"utf8\")}var Q2=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:fA});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await k2(e.reference,fA,r);return oe.mktempPromise(async a=>{let n=V.join(a,\"generator.js\");return await oe.writeFilePromise(n,o),oe.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!oe.existsSync(V.join(u,\"build\")))throw new Error(\"The script should have generated a build directory\");return await Xi.makeArchiveFromDirectory(V.join(u,\"build\"),{prefixPath:W.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(e,r,o,a){return await oe.mktempPromise(async n=>{let u=await un.makeScriptEnv({project:a.project,binFolder:n}),A=V.join(e,\"runtime.js\");return await oe.mktempPromise(async p=>{let h=V.join(p,\"buildfile.log\"),E=V.join(e,\"generator\"),I=V.join(e,\"build\");await oe.mkdirPromise(E),await oe.mkdirPromise(I);let v={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(I),locator:W.stringifyLocator(r)};await oe.writeFilePromise(A,`\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(v)},\n            },\n            enumerable: true,\n          });\n        `);let x=u.NODE_OPTIONS||\"\",C=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;x=x.replace(C,\" \").trim(),u.NODE_OPTIONS=x;let{stdout:R,stderr:L}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${W.stringifyLocator(r)})\n`,prefix:W.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Ur.pipevp(process.execPath,[\"--require\",ue.fromPortablePath(A),ue.fromPortablePath(o),W.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:R,stderr:L});if(U!==0)throw oe.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${de.pretty(a.project.configuration,h,de.Type.PATH)})`)})})}};Ye();Ye();var idt=2,F2=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,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=BH(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await k2(W.makeRange({protocol:fA,source:a,selector:a,params:{locator:W.stringifyLocator(n)}}),fA,o.fetchOptions),A=wn.makeHash(`${idt}`,u).slice(0,6);return[vH(e,{parentLocator:n,path:a,generatorHash:A,protocol:fA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 sdt={fetchers:[Q2],resolvers:[F2]},odt=sdt;var PH={};Vt(PH,{FileFetcher:()=>L2,FileResolver:()=>O2,TarballFileFetcher:()=>M2,TarballFileResolver:()=>U2,default:()=>cdt,fileUtils:()=>rm});Ye();St();var SC=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,R2=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,Ui=\"file:\";var rm={};Vt(rm,{fetchArchiveFromLocator:()=>N2,makeArchiveFromLocator:()=>Ck,makeBufferFromLocator:()=>SH,makeLocator:()=>PC,makeSpec:()=>hme,parseSpec:()=>T2});Ye();St();function T2(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function hme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function PC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return W.makeLocator(t,hme({parentLocator:e,path:r,hash:o,protocol:a}))}async function N2(t,e){let{parentLocator:r,path:o}=W.parseFileStyleRange(t.reference,{protocol:Ui}),a=V.isAbsolute(o)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=V.join(n.prefixPath,o);return await _e.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function Ck(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=W.parseFileStyleRange(t.reference,{protocol:e}),u=V.isAbsolute(n)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=V.join(A.prefixPath,n);return await _e.releaseAfterUseAsync(async()=>await Xi.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:W.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:o}),A.releaseFs)}async function SH(t,{protocol:e,fetchOptions:r}){return(await Ck(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var L2=class{supports(e,r){return!!e.reference.startsWith(Ui)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:Ui});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return Ck(e,{protocol:Ui,fetchOptions:r})}};Ye();Ye();var adt=2,O2=class{supportsDescriptor(e,r){return e.range.match(SC)?!0:!!e.range.startsWith(Ui)}supportsLocator(e,r){return!!e.reference.startsWith(Ui)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return SC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await SH(W.makeLocator(e,W.makeRange({protocol:Ui,source:a,selector:a,params:{locator:W.stringifyLocator(n)}})),{protocol:Ui,fetchOptions:o.fetchOptions}),A=wn.makeHash(`${adt}`,u).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:A,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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}}};Ye();var M2=class{supports(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await N2(e,r);return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();Ye();var U2=class{supportsDescriptor(e,r){return R2.test(e.range)?!!(e.range.startsWith(Ui)||SC.test(e.range)):!1}supportsLocator(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return SC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=PC(e,{parentLocator:n,path:a,hash:\"\",protocol:Ui}),A=await N2(u,o.fetchOptions),p=wn.makeHash(A).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:p,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 ldt={fetchers:[M2,L2],resolvers:[U2,O2]},cdt=ldt;var kH={};Vt(kH,{GithubFetcher:()=>_2,default:()=>Adt,githubUtils:()=>wk});Ye();St();var wk={};Vt(wk,{invalidGithubUrlMessage:()=>mme,isGithubUrl:()=>bH,parseGithubUrl:()=>xH});var gme=$e(ve(\"querystring\")),dme=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function bH(t){return t?dme.some(e=>!!t.match(e)):!1}function xH(t){let e;for(let A of dme)if(e=t.match(A),e)break;if(!e)throw new Error(mme(t));let[,r,o,a,n=\"master\"]=e,{commit:u}=gme.default.parse(n);return n=u||n.replace(/[^:]*:/,\"\"),{auth:r,username:o,reponame:a,treeish:n}}function mme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var _2=class{supports(e,r){return!!bH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await oe.mktempPromise(async a=>{let n=new gn(a);await Xi.extractArchiveTo(o,n,{stripComponents:1});let u=ra.splitRepoUrl(e.reference),A=V.join(a,\"package.tgz\");await un.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await oe.readFilePromise(A);return await Xi.convertToZip(p,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=xH(e.reference);return`https://${o?`${o}@`:\"\"}github.com/${a}/${n}/archive/${u}.tar.gz`}};var udt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new _2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},Adt=udt;var QH={};Vt(QH,{TarballHttpFetcher:()=>q2,TarballHttpResolver:()=>j2,default:()=>pdt});Ye();function H2(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 q2=class{supports(e,r){return H2(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(e.reference,{configuration:r.project.configuration});return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();var j2=class{supportsDescriptor(e,r){return H2(e.range)}supportsLocator(e,r){return H2(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[W.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 fdt={fetchers:[q2],resolvers:[j2]},pdt=fdt;var FH={};Vt(FH,{InitCommand:()=>d0,default:()=>gdt});Ye();Ye();St();qt();var d0=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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new it(\"Cannot use the --install flag from within a project subdirectory\");oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=V.join(this.context.cwd,dr.lockfile);oe.existsSync(a)||await oe.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push(\"-p\"),this.workspace&&u.push(\"-w\"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push(\"-y\"),await oe.mktempPromise(async A=>{let{code:p}=await Ur.pipevp(\"yarn\",[\"init\",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await un.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await Pt.find(r,this.context.cwd)).project}catch{o=null}oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ot.tryFind(this.context.cwd),n=a??new Ot,u=Object.fromEntries(r.get(\"initFields\").entries());n.load(u),n.name=n.name??W.makeIdent(r.get(\"initScope\"),this.name??V.basename(this.context.cwd)),n.packageManager=rn&&_e.isTaggedYarnVersion(rn)?`yarn@${rn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await oe.mkdirPromise(V.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let A={};n.exportTo(A);let p=V.join(this.context.cwd,Ot.fileName);await oe.changeFilePromise(p,`${JSON.stringify(A,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=V.join(this.context.cwd,\"README.md\");if(oe.existsSync(E)||(await oe.writeFilePromise(E,`# ${W.stringifyIdent(n.name)}\n`),h.push(E)),!o||o.cwd===this.context.cwd){let I=V.join(this.context.cwd,dr.lockfile);oe.existsSync(I)||(await oe.writeFilePromise(I,\"\"),h.push(I));let x=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# 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(fe=>`${fe}\n`).join(\"\"),C=V.join(this.context.cwd,\".gitignore\");oe.existsSync(C)||(await oe.writeFilePromise(C,x),h.push(C));let L=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(fe=>`${fe}\n`).join(\"\"),U=V.join(this.context.cwd,\".gitattributes\");oe.existsSync(U)||(await oe.writeFilePromise(U,L),h.push(U));let J={[\"*\"]:{endOfLine:\"lf\",insertFinalNewline:!0},[\"*.{js,json,yml}\"]:{charset:\"utf-8\",indentStyle:\"space\",indentSize:2}};_e.mergeIntoTarget(J,r.get(\"initEditorConfig\"));let te=`root = true\n`;for(let[fe,ce]of Object.entries(J)){te+=`\n[${fe}]\n`;for(let[me,he]of Object.entries(ce)){let Be=me.replace(/[A-Z]/g,we=>`_${we.toLowerCase()}`);te+=`${Be} = ${he}\n`}}let ae=V.join(this.context.cwd,\".editorconfig\");oe.existsSync(ae)||(await oe.writeFilePromise(ae,te),h.push(ae)),await this.cli.run([\"install\"],{quiet:!0}),oe.existsSync(V.join(this.context.cwd,\".git\"))||(await Ur.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};d0.paths=[[\"init\"]],d0.usage=nt.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\"]]});var hdt={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:[d0]},gdt=hdt;var Tq={};Vt(Tq,{SearchCommand:()=>w0,UpgradeInteractiveCommand:()=>B0,default:()=>nIt});Ye();var Eme=$e(ve(\"os\"));function bC({stdout:t}){if(Eme.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\")}qt();var Qye=$e(zH()),XH={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},fyt=(0,Qye.default)(XH.appId,XH.apiKey).initIndex(XH.indexName),ZH=async(t,e=0)=>await fyt.search(t,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:e,hitsPerPage:10});var qB=[\"regular\",\"dev\",\"peer\"],w0=class extends ut{async execute(){bC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(cQ(),Bq)),{ScrollableItems:r}=await Promise.resolve().then(()=>(pQ(),fQ)),{useKeypress:o}=await Promise.resolve().then(()=>(UB(),Wwe)),{useMinistore:a}=await Promise.resolve().then(()=>(xq(),bq)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{default:u}=await Promise.resolve().then(()=>$e(rIe())),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useEffect:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(A,{flexDirection:\"row\"},h.createElement(A,{flexDirection:\"column\",width:48},h.createElement(A,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(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),C=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),R=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),L=({hit:he,active:Be})=>{let[we,g]=a(he.name,null);o({active:Be},(le,ne)=>{if(ne.name!==\"space\")return;if(!we){g(qB[0]);return}let ee=qB.indexOf(we)+1;ee===qB.length?g(null):g(qB[ee])},[we,g]);let Ee=W.parseIdent(he.name),Se=W.prettyIdent(v,Ee);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},Se)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},he.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},he.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,he.humanDownloadsLast30Days)))},U=({name:he,active:Be})=>{let[we]=a(he,null),g=W.parseIdent(he);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0},\" - \",W.prettyIdent(v,g))),qB.map(Ee=>h.createElement(A,{key:Ee,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(e,{active:we===Ee}),\" \",h.createElement(p,{bold:!0},Ee)))))},J=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),ae=await n(({useSubmit:he})=>{let Be=a();he(Be);let we=Array.from(Be.keys()).filter(H=>Be.get(H)!==null),[g,Ee]=I(\"\"),[Se,le]=I(0),[ne,ee]=I([]),Ie=H=>{H.match(/\\t| /)||Ee(H)},Fe=async()=>{le(0);let H=await ZH(g);H.query===g&&ee(H.hits)},At=async()=>{let H=await ZH(g,Se+1);H.query===g&&H.page-1===Se&&(le(H.page),ee([...ne,...H.hits]))};return E(()=>{g?Fe():ee([])},[g]),h.createElement(A,{flexDirection:\"column\"},h.createElement(x,null),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:Ie,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(C,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(L,{key:H.name,hit:H,active:!1})),willReachEnd:At}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(R,null)),we.length?we.map(H=>h.createElement(U,{key:H,name:H,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(J,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>\"u\")return 1;let fe=Array.from(ae.keys()).filter(he=>ae.get(he)===\"regular\"),ce=Array.from(ae.keys()).filter(he=>ae.get(he)===\"dev\"),me=Array.from(ae.keys()).filter(he=>ae.get(he)===\"peer\");return fe.length&&await this.cli.run([\"add\",...fe]),ce.length&&await this.cli.run([\"add\",\"--dev\",...ce]),me&&await this.cli.run([\"add\",\"--peer\",...me]),0}};w0.paths=[[\"search\"]],w0.usage=nt.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\"]]});Ye();qt();E_();var cIe=$e(zn()),lIe=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/,uIe=(t,e)=>t.length>0?[t.slice(0,e)].concat(uIe(t.slice(e),e)):[],B0=class extends ut{async execute(){bC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(aIe(),oIe)),{Pad:r}=await Promise.resolve().then(()=>(Rq(),sIe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{useMinistore:a}=await Promise.resolve().then(()=>(xq(),bq)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:u,Text:A}=await Promise.resolve().then(()=>$e(ic())),{default:p,useEffect:h,useRef:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,this.context.cwd),R=await Lr.find(v);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState({restoreResolutions:!1});let L=this.context.stdout.rows-7,U=(Ee,Se)=>{let le=upe(Ee,Se),ne=\"\";for(let ee of le)ee.added?ne+=de.pretty(v,ee.value,\"green\"):ee.removed||(ne+=ee.value);return ne},J=(Ee,Se)=>{if(Ee===Se)return Se;let le=W.parseRange(Ee),ne=W.parseRange(Se),ee=le.selector.match(lIe),Ie=ne.selector.match(lIe);if(!ee||!Ie)return U(Ee,Se);let Fe=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],At=null,H=\"\";for(let at=1;at<Fe.length;++at)At!==null||ee[at]!==Ie[at]?(At===null&&(At=Fe[at-1]),H+=de.pretty(v,Ie[at],At)):H+=Ie[at];return H},te=async(Ee,Se,le)=>{let ne=await zc.fetchDescriptorFrom(Ee,le,{project:x,cache:R,preserveModifier:Se,workspace:C});return ne!==null?ne.range:Ee.range},ae=async Ee=>{let Se=cIe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[le,ne]=await Promise.all([te(Ee,Ee.range,Se).catch(()=>null),te(Ee,Ee.range,\"latest\").catch(()=>null)]),ee=[{value:null,label:Ee.range}];return le&&le!==Ee.range?ee.push({value:le,label:J(Ee.range,le)}):ee.push({value:null,label:\"\"}),ne&&ne!==le&&ne!==Ee.range?ee.push({value:ne,label:J(Ee.range,ne)}):ee.push({value:null,label:\"\"}),ee},fe=()=>p.createElement(u,{flexDirection:\"row\"},p.createElement(u,{flexDirection:\"column\",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\"))),p.createElement(u,{flexDirection:\"column\"},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),ce=()=>p.createElement(u,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),me=({active:Ee,descriptor:Se,suggestions:le})=>{let[ne,ee]=a(Se.descriptorHash,null),Ie=W.stringifyIdent(Se),Fe=Math.max(0,45-Ie.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},W.prettyIdent(v,Se)),p.createElement(r,{active:Ee,length:Fe})),p.createElement(e,{active:Ee,options:le,value:ne,skewer:!0,onChange:ee,sizes:[17,17,17]})))},he=({dependencies:Ee})=>{let[Se,le]=I(Ee.map(()=>null)),ne=E(!0),ee=async Ie=>{let Fe=await ae(Ie);return Fe.filter(At=>At.label!==\"\").length<=1?null:{descriptor:Ie,suggestions:Fe}};return h(()=>()=>{ne.current=!1},[]),h(()=>{let Ie=Math.trunc(L*1.75),Fe=Ee.slice(0,Ie),At=Ee.slice(Ie),H=uIe(At,L),at=Fe.map(ee).reduce(async(Re,ke)=>{await Re;let xe=await ke;xe!==null&&(!ne.current||le(He=>{let Te=He.findIndex(qe=>qe===null),Je=[...He];return Je[Te]=xe,Je}))},Promise.resolve());H.reduce((Re,ke)=>Promise.all(ke.map(xe=>Promise.resolve().then(()=>ee(xe)))).then(async xe=>{xe=xe.filter(He=>He!==null),await Re,ne.current&&le(He=>{let Te=He.findIndex(Je=>Je===null);return He.slice(0,Te).concat(xe).concat(He.slice(Te+xe.length))})}),at).then(()=>{ne.current&&le(Re=>Re.filter(ke=>ke!==null))})},[]),Se.length?p.createElement(o,{radius:L>>1,children:Se.map((Ie,Fe)=>Ie!==null?p.createElement(me,{key:Fe,active:!1,descriptor:Ie.descriptor,suggestions:Ie.suggestions}):p.createElement(A,{key:Fe},\"Loading...\"))}):p.createElement(A,null,\"No upgrades found\")},we=await n(({useSubmit:Ee})=>{Ee(a());let Se=new Map;for(let ne of x.workspaces)for(let ee of[\"dependencies\",\"devDependencies\"])for(let Ie of ne.manifest[ee].values())x.tryWorkspaceByDescriptor(Ie)===null&&(Ie.range.startsWith(\"link:\")||Se.set(Ie.descriptorHash,Ie));let le=_e.sortMap(Se.values(),ne=>W.stringifyDescriptor(ne));return p.createElement(u,{flexDirection:\"column\"},p.createElement(fe,null),p.createElement(ce,null),p.createElement(he,{dependencies:le}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof we>\"u\")return 1;let g=!1;for(let Ee of x.workspaces)for(let Se of[\"dependencies\",\"devDependencies\"]){let le=Ee.manifest[Se];for(let ne of le.values()){let ee=we.get(ne.descriptorHash);typeof ee<\"u\"&&ee!==null&&(le.set(ne.identHash,W.makeDescriptor(ne,ee)),g=!0)}}return g?await x.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};B0.paths=[[\"upgrade-interactive\"]],B0.usage=nt.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\"]]});var rIt={commands:[w0,B0]},nIt=rIt;var Nq={};Vt(Nq,{LinkFetcher:()=>GB,LinkResolver:()=>YB,PortalFetcher:()=>WB,PortalResolver:()=>KB,default:()=>sIt});Ye();St();var tp=\"portal:\",rp=\"link:\";var GB=class{supports(e,r){return!!e.reference.startsWith(rp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0}}};Ye();St();var YB=class{supportsDescriptor(e,r){return!!e.range.startsWith(rp)}supportsLocator(e,r){return!!e.reference.startsWith(rp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(rp.length);return[W.makeLocator(e,`${rp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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}}};Ye();St();var WB=class{supports(e,r){return!!e.reference.startsWith(tp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot}}};Ye();Ye();St();var KB=class{supportsDescriptor(e,r){return!!e.range.startsWith(tp)}supportsLocator(e,r){return!!e.reference.startsWith(tp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(tp.length);return[W.makeLocator(e,`${tp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 iIt={fetchers:[GB,WB],resolvers:[YB,KB]},sIt=iIt;var yj={};Vt(yj,{NodeModulesLinker:()=>lv,NodeModulesMode:()=>hj,PnpLooseLinker:()=>cv,default:()=>w1t});St();Ye();St();St();var Oq=(t,e)=>`${t}@${e}`,AIe=(t,e)=>{let r=e.indexOf(\"#\"),o=r>=0?e.substring(r+1):e;return Oq(t,o)};var hIe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=fIt(t,n),p=!1,h=0;do p=Mq(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let E=VB(A);if(Mq(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${VB(A)}`);let v=gIe(A);if(v)throw new Error(`${v}, after hoisting finished:\n${VB(A)}`)}return n.debugLevel>=2&&console.log(VB(A)),pIt(A)},oIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},aIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let E;for(let I of t)E=I.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},fIe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:C,hoistedTo:R}=e,L={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:new Map(C),hoistedTo:new Map(R)},U=L.dependencies.get(r);return U&&U.ident==L.ident&&L.dependencies.set(r,L),t.dependencies.set(L.name,L),L},lIt=(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 o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf(\"@\",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Lq=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Mq=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=hIt(u),p=lIt(u,A),h=t==u?new Map:a.fastLookupPossible?oIt(e):aIt(e),E,I=!1,v=!1,x=new Map(Array.from(p.entries()).map(([R,L])=>[R,L[0]])),C=new Map;do{let R=AIt(t,e,r,h,x,p,o,C,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(I=!0),E=!1;for(let[L,U]of p)U.length>1&&!u.dependencies.has(L)&&(x.delete(L),U.shift(),x.set(L,U[0]),E=!0)}while(E);for(let R of u.dependencies.values())if(!u.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let L=Mq(t,[...e,R],r,C,a);L.isGraphChanged&&(v=!0),L.anotherRoundNeeded&&(I=!0),r.delete(R.locator)}return{anotherRoundNeeded:I,isGraphChanged:v}},cIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},uIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let E,I=null,v=new Set;p&&(E=`${Array.from(e).map(L=>no(L)).join(\"\\u2192\")}`);let x=r[r.length-1],R=!(o.ident===x.ident);if(p&&!R&&(I=\"- self-reference\"),R&&(R=o.dependencyKind!==1,p&&!R&&(I=\"- workspace\")),R&&o.dependencyKind===2&&(R=!cIt(o),p&&!R&&(I=\"- external soft link with unhoisted dependencies\")),R&&(R=x.dependencyKind!==1||x.hoistedFrom.has(o.name)||e.size===1,p&&!R&&(I=x.reasons.get(o.name))),R&&(R=!t.peerNames.has(o.name),p&&!R&&(I=`- cannot shadow peer: ${no(t.originalDependencies.get(o.name).locator)} at ${E}`)),R){let L=!1,U=a.get(o.name);if(L=!U||U.ident===o.ident,p&&!L&&(I=`- filled by: ${no(U.locator)} at ${E}`),L)for(let J=r.length-1;J>=1;J--){let ae=r[J].dependencies.get(o.name);if(ae&&ae.ident!==o.ident){L=!1;let fe=A.get(x);fe||(fe=new Set,A.set(x,fe)),fe.add(o.name),p&&(I=`- filled by ${no(ae.locator)} at ${r.slice(0,J).map(ce=>no(ce.locator)).join(\"\\u2192\")}`);break}}R=L}if(R&&(R=n.get(o.name)===o.ident,p&&!R&&(I=`- filled by: ${no(u.get(o.name)[0])} at ${E}`)),R){let L=!0,U=new Set(o.peerNames);for(let J=r.length-1;J>=1;J--){let te=r[J];for(let ae of U){if(te.peerNames.has(ae)&&te.originalDependencies.has(ae))continue;let fe=te.dependencies.get(ae);fe&&t.dependencies.get(ae)!==fe&&(J===r.length-1?v.add(fe):(v=null,L=!1,p&&(I=`- peer dependency ${no(fe.locator)} from parent ${no(te.locator)} was not hoisted to ${E}`))),U.delete(ae)}if(!L)break}R=L}if(R&&!h)for(let L of o.hoistedDependencies.values()){let U=a.get(L.name)||t.dependencies.get(L.name);if(!U||L.ident!==U.ident){R=!1,p&&(I=`- previously hoisted dependency mismatch, needed: ${no(L.locator)}, available: ${no(U?.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:I}:{isHoistable:R?0:1,reason:I}},yQ=t=>`${t.name}@${t.locator}`,AIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],E=new Set,I=!1,v=!1,x=(U,J,te,ae,fe)=>{if(E.has(ae))return;let ce=[...J,yQ(ae)],me=[...te,yQ(ae)],he=new Map,Be=new Map;for(let le of Lq(ae)){let ne=uIt(h,r,[h,...U,ae],le,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(le,ne),ne.isHoistable===2)for(let ee of ne.dependsOn){let Ie=he.get(ee.name)||new Set;Ie.add(le.name),he.set(ee.name,Ie)}}let we=new Set,g=(le,ne,ee)=>{if(!we.has(le)){we.add(le),Be.set(le,{isHoistable:1,reason:ee});for(let Ie of he.get(le.name)||[])g(ae.dependencies.get(Ie),ne,p.debugLevel>=2?`- peer dependency ${no(le.locator)} from parent ${no(ae.locator)} was not hoisted`:\"\")}};for(let[le,ne]of Be)ne.isHoistable===1&&g(le,ne,ne.reason);let Ee=!1;for(let le of Be.keys())if(!we.has(le)){v=!0;let ne=u.get(ae);ne&&ne.has(le.name)&&(I=!0),Ee=!0,ae.dependencies.delete(le.name),ae.hoistedDependencies.set(le.name,le),ae.reasons.delete(le.name);let ee=h.dependencies.get(le.name);if(p.debugLevel>=2){let Ie=Array.from(J).concat([ae.locator]).map(At=>no(At)).join(\"\\u2192\"),Fe=h.hoistedFrom.get(le.name);Fe||(Fe=[],h.hoistedFrom.set(le.name,Fe)),Fe.push(Ie),ae.hoistedTo.set(le.name,Array.from(e).map(At=>no(At.locator)).join(\"\\u2192\"))}if(!ee)h.ident!==le.ident&&(h.dependencies.set(le.name,le),fe.add(le));else for(let Ie of le.references)ee.references.add(Ie)}if(ae.dependencyKind===2&&Ee&&(I=!0),p.check){let le=gIe(t);if(le)throw new Error(`${le}, after hoisting dependencies of ${[h,...U,ae].map(ne=>no(ne.locator)).join(\"\\u2192\")}:\n${VB(t)}`)}let Se=Lq(ae);for(let le of Se)if(we.has(le)){let ne=Be.get(le);if((a.get(le.name)===le.ident||!ae.reasons.has(le.name))&&ne.isHoistable!==0&&ae.reasons.set(le.name,ne.reason),!le.isHoistBorder&&me.indexOf(yQ(le))<0){E.add(ae);let Ie=fIe(ae,le);x([...U,ae],ce,me,Ie,R),E.delete(ae)}}},C,R=new Set(Lq(h)),L=Array.from(e).map(U=>yQ(U));do{C=R,R=new Set;for(let U of C){if(U.locator===h.locator||U.isHoistBorder)continue;let J=fIe(h,U);x([],Array.from(r),L,J,R)}}while(R.size>0);return{anotherRoundNeeded:I,isGraphChanged:v}},gIe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);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),I=()=>`${Array.from(o).concat([n]).map(v=>no(v.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==E||!v||v.ident!==h.ident)&&e.push(`${I()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),C=`${v?` hoisted from ${v.join(\", \")}`:\"\"}`,R=`${x?` hoisted to ${x}`:\"\"}`,L=`${I()}${C}`;E?E.ident!==h.ident&&e.push(`${L} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${L} - broken require promise: no required dependency ${h.name}${R} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(`\n`)},fIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Oq(r,a),ident:AIe(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},A=new Map([[t,u]]),p=(h,E)=>{let I=A.get(h),v=!!I;if(!I){let{name:x,identName:C,reference:R,peerNames:L,hoistPriority:U,dependencyKind:J}=h,te=e.hoistingLimits.get(E.locator);I={name:x,references:new Set([R]),locator:Oq(C,R),ident:AIe(C,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(L),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:J||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,I)}if(E.dependencies.set(h.name,I),E.originalDependencies.set(h.name,I),v){let x=new Set,C=R=>{if(!x.has(R)){x.add(R),R.decoupled=!1;for(let L of R.dependencies.values())R.peerNames.has(L.name)||C(L)}};C(I)}else for(let x of h.dependencies)p(x,I)};for(let h of t.dependencies)p(h,u);return u},Uq=t=>t.substring(0,t.indexOf(\"@\",1)),pIt=t=>{let e={name:t.name,identName:Uq(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:E,locator:I}=a;p={name:h,identName:Uq(I),references:E,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},hIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let E of A.dependencies.values()){let I=a(E);I.hoistPriority=Math.max(I.hoistPriority,E.hoistPriority),A.peerNames.has(E.name)?I.peerDependents.add(A.ident):n(A,E)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},no=t=>{if(!t)return\"none\";let e=t.indexOf(\"@\",1),r=t.substring(0,e);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let o=t.substring(e+1);if(o===\"workspace:.\")return\".\";if(o){let a=(o.indexOf(\"#\")>0?o.split(\"#\")[1]:o).replace(\"npm:\",\"\");return o.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`},pIe=5e4,VB=t=>{let e=0,r=(a,n,u=\"\")=>{if(e>pIe||n.has(a))return\"\";e++;let A=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<A.length;h++){let E=A[h];if(!a.peerNames.has(E.name)&&E!==a){let I=a.reasons.get(E.name),v=Uq(E.locator);p+=`${u}${h<A.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(v!==E.name?`a:${E.name}:`:\"\")+no(E.locator)+(I?` ${I}`:\"\")}\n`,p+=r(E,n,`${u}${h<A.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(t,new Set)+(e>pIe?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var JB=(o=>(o.WORKSPACES=\"workspaces\",o.DEPENDENCIES=\"dependencies\",o.NONE=\"none\",o))(JB||{}),dIe=\"node_modules\",v0=\"$wsroot$\";var zB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=dIt(t,e),u=null;if(a.length===0){let A=hIe(r,{hoistingLimits:o});u=yIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,Hq=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(V.delimiter).length,u=a.split(V.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},mIe=(t,e)=>{let r=W.isVirtualLocator(t)?W.devirtualizeLocator(t):t,o=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e;return W.areLocatorsEqual(r,o)},_q=(t,e,r,o)=>{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 V.contains(o,a)===null},gIt=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 o=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,x)=>{let C=gA(v);if(p.has(C))return;p.add(C);let R=t.getPackageInformation(v);if(R){let L=x?gA(x):\"\";if(gA(v)!==L&&R.linkType===\"SOFT\"&&!v.reference.startsWith(\"link:\")&&!_q(R,v,t,o)){let U=yIe(R,v,t);(!A.get(U)||v.reference.startsWith(\"workspace:\"))&&A.set(U,v)}for(let[U,J]of R.packageDependencies)J!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,J),v))}};for(let v of u)h(v,null);let E=o.split(V.sep);for(let v of A.values()){let x=t.getPackageInformation(v),R=ue.toPortablePath(x.packageLocation.slice(0,-1)).split(V.sep).slice(E.length),L=n;for(let U of R){let J=L.children.get(U);J||(J={children:new Map},L.children.set(U,J)),L=J}L.workspaceLocator=v}let I=(v,x)=>{if(v.workspaceLocator){let C=gA(x),R=a.get(C);R||(R=new Set,a.set(C,R)),R.add(v.workspaceLocator)}for(let C of v.children.values())I(C,v.workspaceLocator||x)};for(let v of n.children.values())I(v,n.workspaceLocator);return a},dIt=(t,e)=>{let r=[],o=!1,a=new Map,n=gIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=ue.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,I=(x,C)=>`${gA(C)}:${x}`,v=(x,C,R,L,U,J,te,ae)=>{let fe=I(x,R),ce=E.get(fe),me=!!ce;!me&&R.name===A.name&&R.reference===A.reference&&(ce=h,E.set(fe,h));let he=_q(C,R,t,p);if(!ce){let le=0;he?le=2:C.linkType===\"SOFT\"&&R.name.endsWith(v0)&&(le=1),ce={name:x,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:le===1?new Set:C.packagePeers,dependencyKind:le},E.set(fe,ce)}let Be;if(he?Be=2:U.linkType===\"SOFT\"?Be=1:Be=0,ce.hoistPriority=Math.max(ce.hoistPriority||0,Be),ae&&!he){let le=gA({name:L.identName,reference:L.reference}),ne=a.get(le)||new Set;a.set(le,ne),ne.add(ce.name)}let we=new Map(C.packageDependencies);if(e.project){let le=e.project.workspacesByCwd.get(ue.toPortablePath(C.packageLocation.slice(0,-1)));if(le){let ne=new Set([...Array.from(le.manifest.peerDependencies.values(),ee=>W.stringifyIdent(ee)),...Array.from(le.manifest.peerDependenciesMeta.keys())]);for(let ee of ne)we.has(ee)||(we.set(ee,J.get(ee)||null),ce.peerNames.add(ee))}}let g=gA({name:R.name.replace(v0,\"\"),reference:R.reference}),Ee=n.get(g);if(Ee)for(let le of Ee)we.set(`${le.name}${v0}`,le.reference);(C!==U||C.linkType!==\"SOFT\"||!he&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&L.dependencies.add(ce);let Se=R!==A&&C.linkType===\"SOFT\"&&!R.name.endsWith(v0)&&!he;if(!me&&!Se){let le=new Map;for(let[ne,ee]of we)if(ee!==null){let Ie=t.getLocator(ne,ee),Fe=t.getLocator(ne.replace(v0,\"\"),ee),At=t.getPackageInformation(Fe);if(At===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let H=_q(At,Ie,t,p);if(e.validateExternalSoftLinks&&e.project&&H){At.packageDependencies.size>0&&(o=!0);for(let[He,Te]of At.packageDependencies)if(Te!==null){let Je=W.parseLocator(Array.isArray(Te)?`${Te[0]}@${Te[1]}`:`${He}@${Te}`);if(gA(Je)!==gA(Ie)){let qe=we.get(He);if(qe){let b=W.parseLocator(Array.isArray(qe)?`${qe[0]}@${qe[1]}`:`${He}@${qe}`);mIe(b,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with parent dependency ${W.prettyLocator(e.project.configuration,b)}`})}else{let b=le.get(He);if(b){let w=b.target,P=W.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${He}@${w}`);mIe(P,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with dependency ${W.prettyLocator(e.project.configuration,P)} from sibling portal ${W.prettyIdent(e.project.configuration,W.parseIdent(b.portal.name))}`})}else le.set(He,{target:Je.reference,portal:Ie})}}}}let at=e.hoistingLimitsByCwd?.get(te),Re=H?te:V.relative(p,ue.toPortablePath(At.packageLocation))||Bt.dot,ke=e.hoistingLimitsByCwd?.get(Re);v(ne,At,Ie,ce,C,we,Re,at===\"dependencies\"||ke===\"dependencies\"||ke===\"workspaces\")}}};return v(A.name,u,A,h,u,u.packageDependencies,Bt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function yIe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(o||t.packageLocation)}function mIt(t,e,r){let o=e.getLocator(t.name.replace(v0,\"\"),t.reference),a=e.getPackageInformation(o);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:yIe(a,t,e)}}var yIt=(t,e,r)=>{let o=new Map,a=(E,I,v)=>{let{linkType:x,target:C}=mIt(E,t,r);return{locator:gA(E),nodePath:I,target:C,linkType:x,aliases:v}},n=E=>{let[I,v]=E.split(\"/\");return v?{scope:I,name:v}:{scope:null,name:I}},u=new Set,A=(E,I,v)=>{if(u.has(E))return;u.add(E);let x=Array.from(E.references).sort().join(\"#\");for(let C of E.dependencies){let R=Array.from(C.references).sort().join(\"#\");if(C.identName===E.identName.replace(v0,\"\")&&R===x)continue;let L=Array.from(C.references).sort(),U={name:C.identName,reference:L[0]},{name:J,scope:te}=n(C.name),ae=te?[te,J]:[J],fe=V.join(I,dIe),ce=V.join(fe,...ae),me=`${v}/${U.name}`,he=a(U,v,L.slice(1)),Be=!1;if(he.linkType===\"SOFT\"&&r.project){let we=r.project.workspacesByCwd.get(he.target.slice(0,-1));Be=!!(we&&!we.manifest.name)}if(!C.name.endsWith(v0)&&!Be){let we=o.get(ce);if(we){if(we.dirList)throw new Error(`Assertion failed: ${ce} cannot merge dir node with leaf node`);{let Se=W.parseLocator(we.locator),le=W.parseLocator(he.locator);if(we.linkType!==he.linkType)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different link types ${we.nodePath}/${W.stringifyLocator(Se)} and ${v}/${W.stringifyLocator(le)}`);if(Se.identHash!==le.identHash)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different idents ${we.nodePath}/${W.stringifyLocator(Se)} and ${v}/s${W.stringifyLocator(le)}`);he.aliases=[...he.aliases,...we.aliases,W.parseLocator(we.locator).reference]}}o.set(ce,he);let g=ce.split(\"/\"),Ee=g.indexOf(dIe);for(let Se=g.length-1;Ee>=0&&Se>Ee;Se--){let le=ue.toPortablePath(g.slice(0,Se).join(V.sep)),ne=g[Se],ee=o.get(le);if(!ee)o.set(le,{dirList:new Set([ne])});else if(ee.dirList){if(ee.dirList.has(ne))break;ee.dirList.add(ne)}}}A(C,he.linkType===\"SOFT\"?he.target:ce,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},\"\",[]),h=p.target;return o.set(h,p),A(e,h,\"\"),o};Ye();Ye();St();St();nA();Nl();var oj={};Vt(oj,{PnpInstaller:()=>mm,PnpLinker:()=>P0,UnplugCommand:()=>x0,default:()=>VIt,getPnpPath:()=>b0,jsInstallUtils:()=>yA,pnpUtils:()=>av,quotePathIfNeeded:()=>r1e});St();var t1e=ve(\"url\");Ye();Ye();St();St();var EIe={[\"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 EIt(t,e,r){let o=\"\";o+=\"[\";for(let a=0,n=t.length;a<n;++a)o+=EQ(String(a),t[a],e,r).replace(/^ +/g,\"\"),a+1<n&&(o+=\", \");return o+=\"]\",o}function CIt(t,e,r){let o=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,u=t.length;n<u;++n)a+=o+EQ(String(n),t[n],e,o).replace(/^ +/,\"\"),n+1<u&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function wIt(t,e,r){let o=Object.keys(t),a=\"\";a+=\"{\";for(let n=0,u=o.length,A=0;n<u;++n){let p=o[n],h=t[p];typeof h>\"u\"||(A!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=EQ(p,h,e,r).replace(/^ +/g,\"\"),A+=1)}return a+=\"}\",a}function IIt(t,e,r){let o=Object.keys(t),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let u=0;for(let A=0,p=o.length;A<p;++A){let h=o[A],E=t[h];typeof E>\"u\"||(u!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=EQ(h,E,e,a).replace(/^ +/g,\"\"),u+=1)}return u!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function EQ(t,e,r,o){let{next:a}=EIe[r],n=a[t]||a[\"*\"];return CIe(e,n,o)}function CIe(t,e,r){let{collapsed:o}=EIe[e];return Array.isArray(t)?o?EIt(t,e,r):CIt(t,e,r):typeof t==\"object\"&&t!==null?o?wIt(t,e,r):IIt(t,e,r):JSON.stringify(t)}function wIe(t){return CIe(t,\"TOP_LEVEL\",\"\")}function XB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function BIt(t){let e=new Map,r=XB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>\"u\"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function vIt(t){return XB(t.fallbackPool||[],([e])=>e)}function DIt(t){let e=[];for(let[r,o]of XB(t.packageRegistry,([a])=>a===null?\"0\":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:E}]of XB(o,([I])=>I===null?\"0\":`1${I}`)){let I=[];r!==null&&n!==null&&!A.has(r)&&I.push([r,n]);for(let[C,R]of XB(A.entries(),([L])=>L))I.push([C,R]);let v=p&&p.size>0?Array.from(p):void 0,x=E||void 0;a.push([n,{packageLocation:u,packageDependencies:I,packagePeers:v,linkType:h,discardFromLookup:x}])}}return e}function ZB(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,fallbackExclusionList:BIt(t),fallbackPool:vIt(t),packageRegistryData:DIt(t)}}var vIe=$e(BIe());function DIe(t,e){return[t?`${t}\n`:\"\",`/* eslint-disable */\n`,`\"use strict\";\n`,`\n`,e,`\n`,(0,vIe.default)()].join(\"\")}function SIt(t){return JSON.stringify(t,null,2)}function PIt(t){return`'${t.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function bIt(t){return[`const RAW_RUNTIME_STATE =\n`,`${PIt(wIe(t))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function xIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(dr.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function SIe(t){let e=ZB(t),r=bIt(e);return DIe(t.shebang,r)}function PIe(t){let e=ZB(t),r=xIt(),o=DIe(t.shebang,r);return{dataFile:SIt(e),loaderFile:o}}St();function jq(t,{basePath:e}){let r=ue.toPortablePath(e),o=V.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([I,v])=>[I,new Map(v.map(([x,C])=>{if(I===null!=(x===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let R=C.discardFromLookup??!1,L={name:I,reference:x},U=n.get(C.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=L)):n.set(C.packageLocation,{locator:L,discardFromLookup:R});let J=null;return[x,{packageDependencies:new Map(C.packageDependencies),packagePeers:new Set(C.packagePeers),linkType:C.linkType,discardFromLookup:R,get packageLocation(){return J||(J=V.join(o,C.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([I,v])=>[I,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}St();St();var np=ve(\"module\"),dm=ve(\"url\"),$q=ve(\"util\");var Mo=ve(\"url\");var QIe=$e(ve(\"assert\"));var Gq=Array.isArray,$B=JSON.stringify,ev=Object.getOwnPropertyNames,hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Yq=(t,e)=>RegExp.prototype.exec.call(t,e),Wq=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),D0=(t,...e)=>String.prototype.endsWith.apply(t,e),Kq=(t,...e)=>String.prototype.includes.apply(t,e),Vq=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),tv=(t,...e)=>String.prototype.indexOf.apply(t,e),bIe=(t,...e)=>String.prototype.replace.apply(t,e),S0=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),xIe=Map,kIe=JSON.parse;function rv(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var FIe=rv(\"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),Jq=rv(\"ERR_INVALID_MODULE_SPECIFIER\",(t,e,r=void 0)=>`Invalid module \"${t}\" ${e}${r?` imported from ${r}`:\"\"}`,TypeError),RIe=rv(\"ERR_INVALID_PACKAGE_TARGET\",(t,e,r,o=!1,a=void 0)=>{let n=typeof r==\"string\"&&!o&&r.length&&!dA(r,\"./\");return e===\".\"?((0,QIe.default)(o===!1),`Invalid \"exports\" main target ${$B(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${o?\"imports\":\"exports\"}\" target ${$B(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),nv=rv(\"ERR_INVALID_PACKAGE_CONFIG\",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:\"\"}${r?`. ${r}`:\"\"}`,Error),TIe=rv(\"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 wQ=ve(\"url\");function NIe(t,e){let r=Object.create(null);for(let o=0;o<e.length;o++){let a=e[o];hm(t,a)&&(r[a]=t[a])}return r}var CQ=new xIe;function kIt(t,e,r,o){let a=CQ.get(t);if(a!==void 0)return a;let n=o(t);if(n===void 0){let x={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return CQ.set(t,x),x}let u;try{u=kIe(n)}catch(x){throw new nv(t,(r?`\"${e}\" from `:\"\")+(0,wQ.fileURLToPath)(r||e),x.message)}let{imports:A,main:p,name:h,type:E}=NIe(u,[\"imports\",\"main\",\"name\",\"type\"]),I=hm(u,\"exports\")?u.exports:void 0;(typeof A!=\"object\"||A===null)&&(A=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let v={pjsonPath:t,exists:!0,main:p,name:h,type:E,exports:I,imports:A};return CQ.set(t,v),v}function LIe(t,e){let r=new URL(\"./package.json\",t);for(;;){let n=r.pathname;if(D0(n,\"node_modules/package.json\"))break;let u=kIt((0,wQ.fileURLToPath)(r),t,void 0,e);if(u.exists)return u;let A=r;if(r=new URL(\"../package.json\",r),r.pathname===A.pathname)break}let o=(0,wQ.fileURLToPath)(r),a={pjsonPath:o,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return CQ.set(o,a),a}function QIt(t,e,r){throw new FIe(t,e&&(0,Mo.fileURLToPath)(new URL(\".\",e)),(0,Mo.fileURLToPath)(r))}function FIt(t,e,r,o){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,Mo.fileURLToPath)(e)}`;throw new Jq(t,a,o&&(0,Mo.fileURLToPath)(o))}function iv(t,e,r,o,a){throw typeof e==\"object\"&&e!==null?e=$B(e,null,\"\"):e=`${e}`,new RIe((0,Mo.fileURLToPath)(new URL(\".\",r)),t,e,o,a&&(0,Mo.fileURLToPath)(a))}var OIe=/(^|\\\\|\\/)((\\.|%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,MIe=/\\*/g;function RIt(t,e,r,o,a,n,u,A){if(e!==\"\"&&!n&&t[t.length-1]!==\"/\"&&iv(r,t,o,u,a),!dA(t,\"./\")){if(u&&!dA(t,\"../\")&&!dA(t,\"/\")){let I=!1;try{new URL(t),I=!0}catch{}if(!I)return n?Wq(MIe,t,()=>e):t+e}iv(r,t,o,u,a)}Yq(OIe,S0(t,2))!==null&&iv(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,E=new URL(\".\",o).pathname;if(dA(h,E)||iv(r,t,o,u,a),e===\"\")return p;if(Yq(OIe,e)!==null){let I=n?bIe(r,\"*\",()=>e):r+e;FIt(I,o,u,a)}return n?new URL(Wq(MIe,p.href,()=>e)):new URL(e,p)}function TIt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function GC(t,e,r,o,a,n,u,A){if(typeof e==\"string\")return RIt(e,r,o,t,a,n,u,A);if(Gq(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let E=e[h],I;try{I=GC(t,E,r,o,a,n,u,A)}catch(v){if(p=v,v.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw v}if(I!==void 0){if(I===null){p=null;continue}return I}}if(p==null)return p;throw p}else if(typeof e==\"object\"&&e!==null){let p=ev(e);for(let h=0;h<p.length;h++){let E=p[h];if(TIt(E))throw new nv((0,Mo.fileURLToPath)(t),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||A.has(E)){let I=e[E],v=GC(t,I,r,o,a,n,u,A);if(v===void 0)continue;return v}}return}else if(e===null)return null;iv(o,e,t,u,a)}function _Ie(t,e){let r=tv(t,\"*\"),o=tv(e,\"*\"),a=r===-1?t.length:r+1,n=o===-1?e.length:o+1;return a>n?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function NIt(t,e,r){if(typeof t==\"string\"||Gq(t))return!0;if(typeof t!=\"object\"||t===null)return!1;let o=ev(t),a=!1,n=0;for(let u=0;u<o.length;u++){let A=o[u],p=A===\"\"||A[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new nv((0,Mo.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 zq(t,e,r){throw new TIe((0,Mo.fileURLToPath)(new URL(\".\",e)),t,r&&(0,Mo.fileURLToPath)(r))}var UIe=new Set;function LIt(t,e,r){let o=(0,Mo.fileURLToPath)(e);UIe.has(o+\"|\"+t)||(UIe.add(o+\"|\"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${t}\" in the \"exports\" field module resolution of the package at ${o}${r?` imported from ${(0,Mo.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function HIe({packageJSONUrl:t,packageSubpath:e,exports:r,base:o,conditions:a}){if(NIt(r,t,o)&&(r={\".\":r}),hm(r,e)&&!Kq(e,\"*\")&&!D0(e,\"/\")){let p=r[e],h=GC(t,p,\"\",e,o,!1,!1,a);return h==null&&zq(e,t,o),h}let n=\"\",u,A=ev(r);for(let p=0;p<A.length;p++){let h=A[p],E=tv(h,\"*\");if(E!==-1&&dA(e,S0(h,0,E))){D0(e,\"/\")&&LIt(e,t,o);let I=S0(h,E+1);e.length>=h.length&&D0(e,I)&&_Ie(n,h)===1&&Vq(h,\"*\")===E&&(n=h,u=S0(e,E,e.length-I.length))}}if(n){let p=r[n],h=GC(t,p,u,n,o,!0,!1,a);return h==null&&zq(e,t,o),h}zq(e,t,o)}function qIe({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t===\"#\"||dA(t,\"#/\")||D0(t,\"/\")){let u=\"is not a valid internal imports specifier name\";throw new Jq(t,u,(0,Mo.fileURLToPath)(e))}let a,n=LIe(e,o);if(n.exists){a=(0,Mo.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(hm(u,t)&&!Kq(t,\"*\")){let A=GC(a,u[t],\"\",t,e,!1,!0,r);if(A!=null)return A}else{let A=\"\",p,h=ev(u);for(let E=0;E<h.length;E++){let I=h[E],v=tv(I,\"*\");if(v!==-1&&dA(t,S0(I,0,v))){let x=S0(I,v+1);t.length>=I.length&&D0(t,x)&&_Ie(A,I)===1&&Vq(I,\"*\")===v&&(A=I,p=S0(t,v,t.length-x.length))}}if(A){let E=u[A],I=GC(a,E,p,A,e,!0,!0,r);if(I!=null)return I}}}QIt(t,a,e)}St();var OIt=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function $i(t,e,r={},o){o??=OIt.has(t)?\"MODULE_NOT_FOUND\":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function au(t){return ue.normalize(ue.fromPortablePath(t))}var WIe=$e(GIe());function KIe(t){return MIt(),Zq[t]}var Zq;function MIt(){Zq||(Zq={\"--conditions\":[],...YIe(UIt()),...YIe(process.execArgv)})}function YIe(t){return(0,WIe.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:t,permissive:!0})}function UIt(){let t=[],e=_It(process.env.NODE_OPTIONS||\"\",t);return t.length,e}function _It(t,e){let r=[],o=!1,a=!0;for(let n=0;n<t.length;++n){let u=t[n];if(u===\"\\\\\"&&o){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;u=t[++n]}else if(u===\" \"&&!o){a=!0;continue}else if(u==='\"'){o=!o;continue}a?(r.push(u),a=!1):r[r.length-1]+=u}return o&&e.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}St();var[mA,gm]=process.versions.node.split(\".\").map(t=>parseInt(t,10)),VIe=mA>19||mA===19&&gm>=2||mA===18&&gm>=13,Bzt=mA===20&&gm<6||mA===19&&gm>=3,vzt=mA>19||mA===19&&gm>=6,Dzt=mA>=21||mA===20&&gm>=10||mA===18&&gm>=19;function JIe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(e)))),VIe)process.send({\"watch:require\":t});else for(let e of t)process.send({\"watch:require\":e})}function ej(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,u=/\\/$/,A=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Re of[\"react-scripts\",\"gatsby\"]){let ke=t.packageRegistry.get(Re);if(ke)for(let xe of ke.keys()){if(xe===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Re,reference:xe})}}let{ignorePattern:I,packageRegistry:v,packageLocatorsByLocations:x}=t;function C(Re,ke){return{fn:Re,args:ke,error:null,result:null}}function R(Re){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,xe=(Je,qe)=>`\\x1B[${Je}m${qe}\\x1B[0m`,He=Re.error;console.error(He?xe(\"31;1\",`\\u2716 ${Re.error?.message.replace(/\\n.*/s,\"\")}`):xe(\"33;1\",\"\\u203C Resolution\")),Re.args.length>0&&console.error();for(let Je of Re.args)console.error(`  ${xe(\"37;1\",\"In \\u2190\")} ${(0,$q.inspect)(Je,{colors:ke,compact:!0})}`);Re.result&&(console.error(),console.error(`  ${xe(\"37;1\",\"Out \\u2192\")} ${(0,$q.inspect)(Re.result,{colors:ke,compact:!0})}`));let Te=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Te.length>0){console.error();for(let Je of Te)console.error(`  ${xe(\"38;5;244\",Je)}`)}console.error()}function L(Re,ke){if(e.allowDebug===!1)return ke;if(Number.isFinite(o)){if(o>=2)return(...xe)=>{let He=C(Re,xe);try{return He.result=ke(...xe)}catch(Te){throw He.error=Te}finally{R(He)}};if(o>=1)return(...xe)=>{try{return ke(...xe)}catch(He){let Te=C(Re,xe);throw Te.error=He,R(Te),He}}}return ke}function U(Re){let ke=g(Re);if(!ke)throw $i(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return ke}function J(Re){if(Re.name===null)return!0;for(let ke of t.dependencyTreeRoots)if(ke.name===Re.name&&ke.reference===Re.reference)return!0;return!1}let te=new Set([\"node\",\"require\",...KIe(\"--conditions\")]);function ae(Re,ke=te,xe){let He=le(V.join(Re,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(He===null)throw $i(\"INTERNAL\",`The locator that owns the \"${Re}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Te}=U(He),Je=V.join(Te,dr.manifest);if(!e.fakeFs.existsSync(Je))return null;let qe=JSON.parse(e.fakeFs.readFileSync(Je,\"utf8\"));if(qe.exports==null)return null;let b=V.contains(Te,Re);if(b===null)throw $i(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");b!==\".\"&&!A.test(b)&&(b=`./${b}`);try{let w=HIe({packageJSONUrl:(0,dm.pathToFileURL)(ue.fromPortablePath(Je)),packageSubpath:b,exports:qe.exports,base:xe?(0,dm.pathToFileURL)(ue.fromPortablePath(xe)):null,conditions:ke});return ue.toPortablePath((0,dm.fileURLToPath)(w))}catch(w){throw $i(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:au(Re),locator:He,pkgJson:qe,subpath:au(b),conditions:ke},w.code)}}function fe(Re,ke,{extensions:xe}){let He;try{ke.push(Re),He=e.fakeFs.statSync(Re)}catch{}if(He&&!He.isDirectory())return e.fakeFs.realpathSync(Re);if(He&&He.isDirectory()){let Te;try{Te=JSON.parse(e.fakeFs.readFileSync(V.join(Re,dr.manifest),\"utf8\"))}catch{}let Je;if(Te&&Te.main&&(Je=V.resolve(Re,Te.main)),Je&&Je!==Re){let qe=fe(Je,ke,{extensions:xe});if(qe!==null)return qe}}for(let Te=0,Je=xe.length;Te<Je;Te++){let qe=`${Re}${xe[Te]}`;if(ke.push(qe),e.fakeFs.existsSync(qe))return qe}if(He&&He.isDirectory())for(let Te=0,Je=xe.length;Te<Je;Te++){let qe=V.format({dir:Re,name:\"index\",ext:xe[Te]});if(ke.push(qe),e.fakeFs.existsSync(qe))return qe}return null}function ce(Re){let ke=new np.Module(Re,null);return ke.filename=Re,ke.paths=np.Module._nodeModulePaths(Re),ke}function me(Re,ke){return ke.endsWith(\"/\")&&(ke=V.join(ke,\"internal.js\")),np.Module._resolveFilename(ue.fromPortablePath(Re),ce(ue.fromPortablePath(ke)),!1,{plugnplay:!1})}function he(Re){if(I===null)return!1;let ke=V.contains(t.basePath,Re);return ke===null?!1:!!I.test(ke.replace(/\\/$/,\"\"))}let Be={std:3,resolveVirtual:1,getAllLocators:1},we=p;function g({name:Re,reference:ke}){let xe=v.get(Re);if(!xe)return null;let He=xe.get(ke);return He||null}function Ee({name:Re,reference:ke}){let xe=[];for(let[He,Te]of v)if(He!==null)for(let[Je,qe]of Te)Je===null||qe.packageDependencies.get(Re)!==ke||He===Re&&Je===ke||xe.push({name:He,reference:Je});return xe}function Se(Re,ke){let xe=new Map,He=new Set,Te=qe=>{let b=JSON.stringify(qe.name);if(He.has(b))return;He.add(b);let w=Ee(qe);for(let P of w)if(U(P).packagePeers.has(Re))Te(P);else{let F=xe.get(P.name);typeof F>\"u\"&&xe.set(P.name,F=new Set),F.add(P.reference)}};Te(ke);let Je=[];for(let qe of[...xe.keys()].sort())for(let b of[...xe.get(qe)].sort())Je.push({name:qe,reference:b});return Je}function le(Re,{resolveIgnored:ke=!1,includeDiscardFromLookup:xe=!1}={}){if(he(Re)&&!ke)return null;let He=V.relative(t.basePath,Re);He.match(n)||(He=`./${He}`),He.endsWith(\"/\")||(He=`${He}/`);do{let Te=x.get(He);if(typeof Te>\"u\"||Te.discardFromLookup&&!xe){He=He.substring(0,He.lastIndexOf(\"/\",He.length-2)+1);continue}return Te.locator}while(He!==\"\");return null}function ne(Re){try{return e.fakeFs.readFileSync(ue.toPortablePath(Re),\"utf8\")}catch(ke){if(ke.code===\"ENOENT\")return;throw ke}}function ee(Re,ke,{considerBuiltins:xe=!0}={}){if(Re.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Re===\"pnpapi\")return ue.toPortablePath(e.pnpapiResolution);if(xe&&(0,np.isBuiltin)(Re))return null;let He=au(Re),Te=ke&&au(ke);if(ke&&he(ke)&&(!V.isAbsolute(Re)||le(Re)===null)){let b=me(Re,ke);if(b===!1)throw $i(\"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: \"${He}\"\nRequired by: ${Te}\n`,{request:He,issuer:Te});return ue.toPortablePath(b)}let Je,qe=Re.match(a);if(qe){if(!ke)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:He,issuer:Te});let[,b,w]=qe,P=le(ke);if(!P){let Ne=me(Re,ke);if(Ne===!1)throw $i(\"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: \"${He}\"\nRequired by: ${Te}\n`,{request:He,issuer:Te});return ue.toPortablePath(Ne)}let F=U(P).packageDependencies.get(b),z=null;if(F==null&&P.name!==null){let Ne=t.fallbackExclusionList.get(P.name);if(!Ne||!Ne.has(P.reference)){for(let dt=0,jt=h.length;dt<jt;++dt){let bt=U(h[dt]).packageDependencies.get(b);if(bt!=null){r?z=bt:F=bt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let dt=t.fallbackPool.get(b);dt!=null&&(z=dt)}}}let X=null;if(F===null)if(J(P))X=$i(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${b} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b});else{let Ne=Se(b,P);Ne.every(ot=>J(ot))?X=$i(\"MISSING_PEER_DEPENDENCY\",`${P.name} tried to access ${b} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b,brokenAncestors:Ne}):X=$i(\"MISSING_PEER_DEPENDENCY\",`${P.name} tried to access ${b} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n\n${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b,brokenAncestors:Ne})}else F===void 0&&(!xe&&(0,np.isBuiltin)(Re)?J(P)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${b}. 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 ${b} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b}):X=$i(\"UNDECLARED_DEPENDENCY\",`${P.name} tried to access ${b}. 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 ${b} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b}):J(P)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${b}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b}):X=$i(\"UNDECLARED_DEPENDENCY\",`${P.name} tried to access ${b}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b}));if(F==null){if(z===null||X===null)throw X||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Ne=X.message.replace(/\\n.*/g,\"\");X.message=Ne,!E.has(Ne)&&o!==0&&(E.add(Ne),process.emitWarning(X))}let Z=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:b,reference:F},ie=U(Z);if(!ie.packageLocation)throw $i(\"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: ${Z.name}@${Z.reference}${Z.name!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n`,{request:He,issuer:Te,dependencyLocator:Object.assign({},Z)});let Pe=ie.packageLocation;w?Je=V.join(Pe,w):Je=Pe}else if(V.isAbsolute(Re))Je=V.normalize(Re);else{if(!ke)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:He,issuer:Te});let b=V.resolve(ke);ke.match(u)?Je=V.normalize(V.join(b,Re)):Je=V.normalize(V.join(V.dirname(b),Re))}return V.normalize(Je)}function Ie(Re,ke,xe=te,He){if(n.test(Re))return ke;let Te=ae(ke,xe,He);return Te?V.normalize(Te):ke}function Fe(Re,{extensions:ke=Object.keys(np.Module._extensions)}={}){let xe=[],He=fe(Re,xe,{extensions:ke});if(He)return V.normalize(He);{JIe(xe.map(qe=>ue.fromPortablePath(qe)));let Te=au(Re),Je=le(Re);if(Je){let{packageLocation:qe}=U(Je),b=!0;try{e.fakeFs.accessSync(qe)}catch(w){if(w?.code===\"ENOENT\")b=!1;else{let P=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${P}).\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(qe)}\n`,{unqualifiedPath:Te,extensions:ke})}}if(!b){let w=qe.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 $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(qe)}\n`,{unqualifiedPath:Te,extensions:ke})}}throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${Te}\n${xe.map(qe=>`Not found: ${au(qe)}\n`).join(\"\")}`,{unqualifiedPath:Te,extensions:ke})}}function At(Re,ke,xe){if(!ke)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let He=qIe({name:Re,base:(0,dm.pathToFileURL)(ue.fromPortablePath(ke)),conditions:xe.conditions??te,readFileSyncFn:ne});if(He instanceof URL)return Fe(ue.toPortablePath((0,dm.fileURLToPath)(He)),{extensions:xe.extensions});if(He.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return H(He,ke,xe)}function H(Re,ke,xe={}){try{if(Re.startsWith(\"#\"))return At(Re,ke,xe);let{considerBuiltins:He,extensions:Te,conditions:Je}=xe,qe=ee(Re,ke,{considerBuiltins:He});if(Re===\"pnpapi\")return qe;if(qe===null)return null;let b=()=>ke!==null?he(ke):!1,w=(!He||!(0,np.isBuiltin)(Re))&&!b()?Ie(Re,qe,Je,ke):qe;return Fe(w,{extensions:Te})}catch(He){throw Object.hasOwn(He,\"pnpCode\")&&Object.assign(He.data,{request:au(Re),issuer:ke&&au(ke)}),He}}function at(Re){let ke=V.normalize(Re),xe=mi.resolveVirtual(ke);return xe!==ke?xe:null}return{VERSIONS:Be,topLevel:we,getLocator:(Re,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Re,reference:ke},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Re=[];for(let[ke,xe]of v)for(let He of xe.keys())ke!==null&&He!==null&&Re.push({name:ke,reference:He});return Re},getPackageInformation:Re=>{let ke=g(Re);if(ke===null)return null;let xe=ue.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:xe}},findPackageLocator:Re=>le(ue.toPortablePath(Re)),resolveToUnqualified:L(\"resolveToUnqualified\",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=ee(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveUnqualified:L(\"resolveUnqualified\",(Re,ke)=>ue.fromPortablePath(Fe(ue.toPortablePath(Re),ke))),resolveRequest:L(\"resolveRequest\",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=H(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveVirtual:L(\"resolveVirtual\",Re=>{let ke=at(ue.toPortablePath(Re));return ke!==null?ue.fromPortablePath(ke):null})}}St();var zIe=(t,e,r)=>{let o=ZB(t),a=jq(o,{basePath:e}),n=ue.join(e,dr.pnpCjs);return ej(a,{fakeFs:r,pnpapiResolution:n})};var rj=$e(ZIe());qt();var yA={};Vt(yA,{checkManifestCompatibility:()=>$Ie,extractBuildRequest:()=>IQ,getExtractHint:()=>nj,hasBindingGyp:()=>ij});Ye();St();function $Ie(t){return W.isPackageCompatible(t,Ji.getArchitectureSet())}function IQ(t,e,r,{configuration:o}){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,`${W.prettyLocator(o,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,`${W.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!o.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${W.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`)}:$Ie(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${W.prettyLocator(o,t)} The ${Ji.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var qIt=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function nj(t){return t.packageFs.getExtractHint({relevantExtensions:qIt})}function ij(t){let e=V.join(t.prefixPath,\"binding.gyp\");return t.packageFs.existsSync(e)}var av={};Vt(av,{getUnpluggedPath:()=>ov});Ye();St();function ov(t,{configuration:e}){return V.resolve(e.get(\"pnpUnpluggedFolder\"),W.slugifyLocator(t))}var jIt=new Set([W.makeIdent(null,\"open\").identHash,W.makeIdent(null,\"opn\").identHash]),P0=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 o=b0(r.project).cjs;if(!oe.existsSync(o))throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})),n={name:W.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=b0(r.project).cjs;if(!oe.existsSync(o))return null;let n=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?W.makeLocator(W.parseIdent(n.name),n.reference):null}makeInstaller(e){return new mm(e)}isEnabled(e){return!(e.project.configuration.get(\"nodeLinker\")!==\"pnp\"||e.project.configuration.get(\"pnpMode\")!==this.mode)}},mm=class{constructor(e){this.opts=e;this.mode=\"strict\";this.asyncActions=new _e.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,o){let a=W.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=W.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,E=!p&&e.linkType!==\"SOFT\",I,v;if(h||E){let te=A?W.devirtualizeLocator(e):e;I=this.customData.store.get(te.locatorHash),typeof I>\"u\"&&(I=await GIt(r),e.linkType===\"HARD\"&&this.customData.store.set(te.locatorHash,I)),I.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(te,e.version)}let x=h?IQ(e,I,v,{configuration:this.opts.project.configuration}):null,C=E?await this.unplugPackageIfNeeded(e,I,r,v,o):r.packageFs;if(V.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=V.resolve(C.getRealPath(),r.prefixPath),L=sj(this.opts.project.cwd,R),U=new Map,J=new Set;if(A){for(let te of e.peerDependencies.values())U.set(W.stringifyIdent(te),null),J.add(W.stringifyIdent(te));if(!u){let te=W.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:sj(this.opts.project.cwd,mi.resolveVirtual(R)),locator:te})}}return _e.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:L,packageDependencies:U,packagePeers:J,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:x}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(W.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let e=b0(this.opts.project);if(this.isEsmEnabled()||await oe.removePromise(e.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await oe.removePromise(e.cjs),await oe.removePromise(e.data),await oe.removePromise(e.esmLoader),await oe.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:E,location:I}of this.virtualTemplates.values())_e.getMapWithDefault(this.packageRegistry,W.stringifyIdent(E)).set(E.reference,{packageLocation:I,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),o=this.opts.project.workspaces.map(({anchoredLocator:E})=>({name:W.stringifyIdent(E),reference:E.reference})),a=r!==\"none\",n=[],u=new Map,A=_e.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\");if(r===\"dependencies-only\")for(let E of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(E)&&n.push({name:W.stringifyIdent(E),reference:E.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,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=b0(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.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 o)await oe.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=SIe(e);await oe.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await oe.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=PIe(e);await oe.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await oe.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 oe.changeFilePromise(r.esmLoader,(0,rj.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await oe.removePromise(a);else for(let n of await oe.readdirPromise(a)){let u=V.resolve(a,n);this.unpluggedPaths.has(u)||await oe.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=V.join(a.cwd,\"node_modules\");if(o&&o.test(V.relative(this.opts.project.cwd,a.cwd))||!oe.existsSync(n))continue;let u=await oe.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(A.length===u.length)r.push(n);else for(let p of A)r.push(V.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<\"u\"?o.unplugged:jIt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(IQ(e,r,o,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,o){let a=ov(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Uu(a,{baseFs:r.packageFs,pathUtils:V}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=V.join(a,r.prefixPath,\".ready\");await oe.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await oe.mkdirPromise(a,{recursive:!0}),await oe.copyPromise(a,Bt.dot,{baseFs:r.packageFs,overwrite:!1}),await oe.writeFilePromise(n,\"\"))})),new gn(a))}getPackageInformation(e){let r=W.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${W.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${W.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=_e.getMapWithDefault(this.packageRegistry,\"@@disk\"),o=sj(this.opts.project.cwd,e);return _e.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function sj(t,e){let r=V.relative(t,e);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function GIt(t){let e=await Ot.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ot,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:nj(t),hasBindingGyp:ij(t)}}}Ye();Ye();qt();var e1e=$e(Zo());var x0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new it(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(x=>{let C=W.parseDescriptor(x),R=C.range!==\"unknown\"?C:W.makeDescriptor(C,\"*\");if(!kr.validRange(R.range))throw new it(`The range of the descriptor patterns must be a valid semver range (${W.prettyDescriptor(r,R)})`);return L=>{let U=W.stringifyIdent(L);return!e1e.default.isMatch(U,W.stringifyIdent(R))||L.version&&!kr.satisfiesWithPrereleases(L.version,R.range)?!1:(u.delete(x),!0)}}),p=()=>{let x=[];for(let C of o.storedPackages.values())!o.tryWorkspaceByLocator(C)&&!W.isVirtualLocator(C)&&A.some(R=>R(C))&&x.push(C);return x},h=x=>{let C=new Set,R=[],L=(U,J)=>{if(C.has(U.locatorHash))return;let te=!!o.tryWorkspaceByLocator(U);if(!(J>0&&!this.recursive&&te)&&(C.add(U.locatorHash),!o.tryWorkspaceByLocator(U)&&A.some(ae=>ae(U))&&R.push(U),!(J>0&&!this.recursive)))for(let ae of U.dependencies.values()){let fe=o.storedResolutions.get(ae.descriptorHash);if(!fe)throw new Error(\"Assertion failed: The resolution should have been registered\");let ce=o.storedPackages.get(fe);if(!ce)throw new Error(\"Assertion failed: The package should have been registered\");L(ce,J+1)}};for(let U of x)L(U.anchoredPackage,0);return R},E,I;if(this.all&&this.recursive?(E=p(),I=\"the project\"):this.all?(E=h(o.workspaces),I=\"any workspace\"):(E=h([a]),I=\"this workspace\"),u.size>1)throw new it(`Patterns ${de.prettyList(r,u,de.Type.CODE)} don't match any packages referenced by ${I}`);if(u.size>0)throw new it(`Pattern ${de.prettyList(r,u,de.Type.CODE)} doesn't match any packages referenced by ${I}`);E=_e.sortMap(E,x=>W.stringifyLocator(x));let v=await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let C of E){let R=C.version??\"unknown\",L=o.topLevelWorkspace.manifest.ensureDependencyMeta(W.makeDescriptor(C,R));L.unplugged=!0,x.reportInfo(0,`Will unpack ${W.prettyLocator(r,C)} to ${de.pretty(r,ov(C,{configuration:r}),de.Type.PATH)}`),x.reportJson({locator:W.stringifyLocator(C),version:R})}await o.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return v.hasErrors()?v.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};x0.paths=[[\"unplug\"]],x0.usage=nt.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 '*'\"]]});var b0=t=>({cjs:V.join(t.cwd,dr.pnpCjs),data:V.join(t.cwd,dr.pnpData),esmLoader:V.join(t.cwd,dr.pnpEsmLoader)}),r1e=t=>/\\s/.test(t)?JSON.stringify(t):t;async function YIt(t,e,r){let o=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(e.NODE_OPTIONS??\"\").replace(o,\" \").replace(a,\" \").trim();if(t.configuration.get(\"nodeLinker\")!==\"pnp\"){e.NODE_OPTIONS=n;return}let u=b0(t),A=`--require ${r1e(ue.fromPortablePath(u.cjs))}`;oe.existsSync(u.esmLoader)&&(A=`${A} --experimental-loader ${(0,t1e.pathToFileURL)(ue.fromPortablePath(u.esmLoader)).href}`),oe.existsSync(u.cjs)&&(e.NODE_OPTIONS=n?`${A} ${n}`:A)}async function WIt(t,e){let r=b0(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get(\"pnpUnpluggedFolder\"))}var KIt={hooks:{populateYarnPaths:WIt,setupScriptEnvironment:YIt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},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},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:[P0],commands:[x0]},VIt=KIt;var u1e=$e(a1e());qt();var pj=$e(ve(\"crypto\")),A1e=$e(ve(\"fs\")),f1e=1,Si=\"node_modules\",BQ=\".bin\",p1e=\".yarn-state.yml\",A1t=1e3,hj=(o=>(o.CLASSIC=\"classic\",o.HARDLINKS_LOCAL=\"hardlinks-local\",o.HARDLINKS_GLOBAL=\"hardlinks-global\",o))(hj||{}),lv=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 o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fj(r.project,{unrollAliases:!0}));if(a===null)throw new it(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(W.stringifyLocator(e));if(!n){let p=new it(`Couldn't find ${W.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 u=n.locations.sort((p,h)=>p.split(V.sep).length-h.split(V.sep).length),A=V.join(r.project.configuration.startingCwd,Si);return u.find(p=>V.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fj(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=vQ(V.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return W.parseLocator(A)}makeInstaller(e){return new Aj(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},Aj=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 o=V.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>\"u\"&&(a=await f1t(e,r),e.linkType===\"HARD\"&&this.customData.store.set(e.locatorHash,a)),!W.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,u=new Set;n.has(W.stringifyIdent(e))||n.set(W.stringifyIdent(e),e.reference);let A=e;if(W.isVirtualLocator(e)){A=W.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(W.stringifyIdent(E),null),u.add(W.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,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(A.locatorHash,h),{packageLocation:o,buildRequest:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(W.stringifyIdent(a),u)}}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 mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),r=await fj(this.opts.project),o=this.opts.project.configuration.get(\"nmMode\");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get(\"nmHoistingLimits\");try{x=_e.validateEnum(JB,v.manifest.installConfig?.hoistingLimits??x)}catch{let R=W.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${R}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(JB).join(\", \")}, using default: \"${x}\"`)}return[v.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get(\"nmSelfReferences\");return x=v.manifest.installConfig?.selfReferences??x,[v.relativeCwd,x]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:v,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let x=v.anchoredLocator;return{name:W.stringifyIdent(x),reference:x.reference}}),getPackageInformation:v=>{let x=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:W.makeLocator(W.parseIdent(v.name),v.reference),C=this.localStore.get(x.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return C.pnpNode},findPackageLocator:v=>{let x=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(v));if(x!==null){let C=x.anchoredLocator;return{name:W.stringifyIdent(C),reference:C.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:v=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=zB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:x}of p)this.opts.report.reportError(v,x);return}let E=Hq(A);await y1t(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let x=W.parseLocator(v),C=this.localStore.get(x.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return C.customPackageData.manifest}});let I=[];for(let[v,x]of E.entries()){if(m1e(v))continue;let C=W.parseLocator(v),R=this.localStore.get(C.locatorHash);if(typeof R>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let L=yA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});!L||I.push({buildLocations:x.locations,locator:C,buildRequest:L})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${de.pretty(this.opts.project.configuration,\"--preserve-symlinks\",de.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:I}}};async function f1t(t,e){let r=await Ot.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ot,o=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:yA.hasBindingGyp(e)}}}async function p1t(t,e,r,o,{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: ${f1e}\n`,n+=`  nmMode: ${o.value}\n`;let u=Array.from(e.keys()).sort(),A=W.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of u){let I=e.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let v of I.locations){let x=V.contains(t.cwd,v);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    - ${JSON.stringify(x)}\n`}if(I.aliases.length>0){n+=`  aliases:\n`;for(let v of I.aliases)n+=`    - ${JSON.stringify(v)}\n`}if(E===A&&r.size>0){n+=`  bin:\n`;for(let[v,x]of r){let C=V.contains(t.cwd,v);if(C===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    ${JSON.stringify(C)}:\n`;for(let[R,L]of x){let U=V.relative(V.join(v,Si),L);n+=`      ${JSON.stringify(R)}: ${JSON.stringify(U)}\n`}}}}let p=t.cwd,h=V.join(p,Si,p1e);a&&await oe.removePromise(h),await oe.changeFilePromise(h,n,{automaticNewlines:!0})}async function fj(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=V.join(r,Si,p1e),a;try{a=await oe.statPromise(o)}catch{}if(!a)return null;let n=Ki(await oe.readFilePromise(o,\"utf8\"));if(n.__metadata.version>f1e)return null;let u=n.__metadata.nmMode||\"classic\",A=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let I=E.locations.map(x=>V.join(r,x)),v=E.bin;if(v)for(let[x,C]of Object.entries(v)){let R=V.join(r,ue.toPortablePath(x)),L=_e.getMapWithDefault(p,R);for(let[U,J]of Object.entries(C))L.set(U,ue.toPortablePath([R,Si,J].join(V.sep)))}if(A.set(h,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:E.aliases||[]}),e&&E.aliases)for(let x of E.aliases){let{scope:C,name:R}=W.parseLocator(h),L=W.makeLocator(W.makeIdent(C,R),x),U=W.stringifyLocator(L);A.set(U,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:h1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var WC=async(t,e)=>{if(t.split(V.sep).indexOf(Si)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await oe.statPromise(t):await oe.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await oe.unlinkPromise(t);return}}let r=await oe.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=V.join(t,o.name);o.isDirectory()?(o.name!==Si||e&&e.innerLoop)&&await WC(a,{innerLoop:!0,contentsOnly:!1}):await oe.unlinkPromise(a)}e.contentsOnly||await oe.rmdirPromise(t)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},l1e=4,vQ=(t,{skipPrefix:e})=>{let r=V.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(V.sep).filter(p=>p!==\"\"),a=o.indexOf(Si),n=o.slice(0,a).join(V.sep),u=V.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},h1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of t.entries()){if(n.linkType===\"SOFT\"&&V.contains(e,n.target)!==null){let A=_e.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=vQ(u,{skipPrefix:e}),h=_e.getFactoryWithDefault(r,A,o);for(let E=0;E<p.length;++E){let I=p[E];if(I!==\".\"){let v=_e.getFactoryWithDefault(h.children,I,o);h.children.set(I,v),h=v}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},gj=async(t,e,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let o;try{o=await oe.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await oe.symlinkPromise(t,e,\"junction\");return}}await oe.symlinkPromise(V.relative(V.dirname(e),t),e)};async function g1e(t,e,r){let o=V.join(t,`${pj.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await oe.writeFilePromise(o,r);try{await oe.linkPromise(o,e)}catch{}}finally{await oe.unlinkPromise(o)}}async function h1t({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===d1e.FILE){if(n.value===\"hardlinks-global\"&&o&&r.digest){let A=V.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await oe.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-A1t))if(await wn.checksumFile(A,{baseFs:oe,algorithm:\"sha1\"})!==r.digest){let I=V.join(o,`${pj.default.randomBytes(16).toString(\"hex\")}.tmp`);await oe.renamePromise(A,I);let v=await a.readFilePromise(t);await oe.writeFilePromise(I,v);try{await oe.linkPromise(I,A),r.mtimeMs=new Date().getTime(),await oe.unlinkPromise(I)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await oe.linkPromise(A,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await g1e(o,A,h),r.mtimeMs=new Date().getTime();try{await oe.linkPromise(A,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 u=r.mode&511;u!==420&&await oe.chmodPromise(e,u)}}var d1e=(o=>(o.FILE=\"file\",o.DIRECTORY=\"directory\",o.SYMLINK=\"symlink\",o))(d1e||{}),g1t=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await oe.mkdirPromise(t,{recursive:!0});let A=async(E=Bt.dot)=>{let I=V.join(e,E),v=await r.readdirPromise(I,{withFileTypes:!0}),x=new Map;for(let C of v){let R=V.join(E,C.name),L,U=V.join(I,C.name);if(C.isFile()){if(L={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let J=await wn.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});L.digest=J}}else if(C.isDirectory())L={kind:\"directory\"};else if(C.isSymbolicLink())L={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(x.set(R,L),C.isDirectory()&&R!==Si){let J=await A(R);for(let[te,ae]of J)x.set(te,ae)}}return x},p;if(a.value===\"hardlinks-global\"&&o&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await oe.readFilePromise(E,\"utf8\"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[E,I]of p){let v=V.join(e,E),x=V.join(t,E);if(I.kind===\"directory\")await oe.mkdirPromise(x,{recursive:!0});else if(I.kind===\"file\"){let C=I.mtimeMs;await h1t({srcPath:v,dstPath:x,entry:I,nmMode:a,baseFs:r,globalHardlinksStore:o}),I.mtimeMs!==C&&(h=!0)}else I.kind===\"symlink\"&&await gj(V.resolve(V.dirname(x),I.symlinkTo),x,n)}if(a.value===\"hardlinks-global\"&&o&&h&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);await oe.removePromise(E),await g1e(o,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function d1t(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,E,I,v,x)=>{let C=!0,R=V.join(h,E),L=new Set;if(E===Si||E.startsWith(\"@\")){let J;try{J=oe.statSync(R)}catch{}C=!!J,J?J.mtimeMs>r?(A=!0,L=new Set(oe.readdirSync(R))):L=new Set(I.children.get(E).children.keys()):A=!0;let te=e.get(h);if(te){let ae=V.join(h,Si,BQ),fe;try{fe=oe.statSync(ae)}catch{}if(!fe)A=!0;else if(fe.mtimeMs>r){A=!0;let ce=new Set(oe.readdirSync(ae)),me=new Map;n.set(h,me);for(let[he,Be]of te)ce.has(he)&&me.set(he,Be)}else n.set(h,te)}}else C=x.has(E);let U=I.children.get(E);if(C){let{linkType:J,locator:te}=U,ae={children:new Map,linkType:J,locator:te};if(v.children.set(E,ae),te){let fe=_e.getSetWithDefault(u,te);fe.add(R),u.set(te,fe)}for(let fe of U.children.keys())p(R,fe,U,ae,L)}else U.locator&&o.storedBuildState.delete(W.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:I,locator:v}=E,x={children:new Map,linkType:I,locator:v};if(a.set(h,x),v){let C=_e.getSetWithDefault(u,E.locator);C.add(h),u.set(E.locator,C)}E.children.has(Si)&&p(h,Si,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function m1e(t){let e=W.parseDescriptor(t);return W.isVirtualDescriptor(e)&&(e=W.devirtualizeDescriptor(e)),e.range.startsWith(\"link:\")}async function m1t(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=m1e(A)?null:await o(A,p[0]),E=new Map;if(h)for(let[I,v]of h.bin){let x=V.join(p[0],v);v!==\"\"&&oe.existsSync(x)&&E.set(I,v)}a.set(A,E)}let n=new Map,u=(A,p,h)=>{let E=new Map,I=V.contains(r,A);if(h.locator&&I!==null){let v=a.get(h.locator);for(let[x,C]of v){let R=V.join(A,ue.toPortablePath(C));E.set(x,R)}for(let[x,C]of h.children){let R=V.join(A,x),L=u(R,R,C);L.size>0&&n.set(A,new Map([...n.get(A)||new Map,...L]))}}else for(let[v,x]of h.children){let C=u(V.join(A,v),p,x);for(let[R,L]of C)E.set(R,L)}return E};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var c1e=(t,e)=>{if(!t||!e)return t===e;let r=W.parseLocator(t);W.isVirtualLocator(r)&&(r=W.devirtualizeLocator(r));let o=W.parseLocator(e);return W.isVirtualLocator(o)&&(o=W.devirtualizeLocator(o)),W.areLocatorsEqual(r,o)};function dj(t){return V.join(t.get(\"globalFolder\"),\"store\")}async function y1t(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=V.join(o.cwd,Si),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:I}=d1t(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=h1e(e,{skipPrefix:o.cwd}),x=[],C=async({srcDir:Be,dstDir:we,linkType:g,globalHardlinksStore:Ee,nmMode:Se,windowsLinkType:le,packageChecksum:ne})=>{let ee=(async()=>{try{g===\"SOFT\"?(await oe.mkdirPromise(V.dirname(we),{recursive:!0}),await gj(V.resolve(Be),we,le)):await g1t(we,Be,{baseFs:r,globalHardlinksStore:Ee,nmMode:Se,windowsLinkType:le,packageChecksum:ne})}catch(Ie){throw Ie.message=`While persisting ${Be} -> ${we} ${Ie.message}`,Ie}finally{ae.tick()}})().then(()=>x.splice(x.indexOf(ee),1));x.push(ee),x.length>l1e&&await Promise.race(x)},R=async(Be,we,g)=>{let Ee=(async()=>{let Se=async(le,ne,ee)=>{try{ee.innerLoop||await oe.mkdirPromise(ne,{recursive:!0});let Ie=await oe.readdirPromise(le,{withFileTypes:!0});for(let Fe of Ie){if(!ee.innerLoop&&Fe.name===BQ)continue;let At=V.join(le,Fe.name),H=V.join(ne,Fe.name);Fe.isDirectory()?(Fe.name!==Si||ee&&ee.innerLoop)&&(await oe.mkdirPromise(H,{recursive:!0}),await Se(At,H,{...ee,innerLoop:!0})):me.value===\"hardlinks-local\"||me.value===\"hardlinks-global\"?await oe.linkPromise(At,H):await oe.copyFilePromise(At,H,A1e.default.constants.COPYFILE_FICLONE)}}catch(Ie){throw ee.innerLoop||(Ie.message=`While cloning ${le} -> ${ne} ${Ie.message}`),Ie}finally{ee.innerLoop||ae.tick()}};await Se(Be,we,g)})().then(()=>x.splice(x.indexOf(Ee),1));x.push(Ee),x.length>l1e&&await Promise.race(x)},L=async(Be,we,g)=>{if(g)for(let[Ee,Se]of we.children){let le=g.children.get(Ee);await L(V.join(Be,Ee),Se,le)}else{we.children.has(Si)&&await WC(V.join(Be,Si),{contentsOnly:!1});let Ee=V.basename(Be)===Si&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:Be===A,allowSymlink:Ee})}};for(let[Be,we]of p){let g=v.get(Be);for(let[Ee,Se]of we.children){if(Ee===\".\")continue;let le=g&&g.children.get(Ee),ne=V.join(Be,Ee);await L(ne,Se,le)}}let U=async(Be,we,g)=>{if(g){c1e(we.locator,g.locator)||await WC(Be,{contentsOnly:we.linkType===\"HARD\"});for(let[Ee,Se]of we.children){let le=g.children.get(Ee);await U(V.join(Be,Ee),Se,le)}}else{we.children.has(Si)&&await WC(V.join(Be,Si),{contentsOnly:!0});let Ee=V.basename(Be)===Si&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:we.linkType===\"HARD\",allowSymlink:Ee})}};for(let[Be,we]of v){let g=p.get(Be);for(let[Ee,Se]of we.children){if(Ee===\".\")continue;let le=g&&g.children.get(Ee);await U(V.join(Be,Ee),Se,le)}}let J=new Map,te=[];for(let[Be,we]of E)for(let g of we){let{locationRoot:Ee,segments:Se}=vQ(g,{skipPrefix:o.cwd}),le=v.get(Ee),ne=Ee;if(le){for(let ee of Se)if(ne=V.join(ne,ee),le=le.children.get(ee),!le)break;if(le){let ee=c1e(le.locator,Be),Ie=e.get(le.locator),Fe=Ie.target,At=ne,H=Ie.linkType;if(ee)J.has(Fe)||J.set(Fe,At);else if(Fe!==At){let at=W.parseLocator(le.locator);W.isVirtualLocator(at)&&(at=W.devirtualizeLocator(at)),te.push({srcDir:Fe,dstDir:At,linkType:H,realLocatorHash:at.locatorHash})}}}}for(let[Be,{locations:we}]of e.entries())for(let g of we){let{locationRoot:Ee,segments:Se}=vQ(g,{skipPrefix:o.cwd}),le=p.get(Ee),ne=v.get(Ee),ee=Ee,Ie=e.get(Be),Fe=W.parseLocator(Be);W.isVirtualLocator(Fe)&&(Fe=W.devirtualizeLocator(Fe));let At=Fe.locatorHash,H=Ie.target,at=g;if(H===at)continue;let Re=Ie.linkType;for(let ke of Se)ne=ne.children.get(ke);if(!le)te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});else for(let ke of Se)if(ee=V.join(ee,ke),le=le.children.get(ke),!le){te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});break}}let ae=Xs.progressViaCounter(te.length),fe=a.reportProgress(ae),ce=o.configuration.get(\"nmMode\"),me={value:ce},he=o.configuration.get(\"winLinkType\");try{let Be=me.value===\"hardlinks-global\"?`${dj(o.configuration)}/v1`:null;if(Be&&!await oe.existsPromise(Be)){await oe.mkdirpPromise(Be);for(let g=0;g<256;g++)await oe.mkdirPromise(V.join(Be,g.toString(16).padStart(2,\"0\")))}for(let g of te)(g.linkType===\"SOFT\"||!J.has(g.srcDir))&&(J.set(g.srcDir,g.dstDir),await C({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:he,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let g of te){let Ee=J.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==Ee&&await R(Ee,g.dstDir,{nmMode:me})}await Promise.all(x),await oe.mkdirPromise(A,{recursive:!0});let we=await m1t(e,v,o.cwd,{loadManifest:n});await E1t(h,we,o.cwd,he),await p1t(o,e,we,me,{installChangedByUser:I}),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{fe.stop()}}async function E1t(t,e,r,o){for(let a of t.keys()){if(V.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=V.join(a,Si,BQ);await oe.removePromise(n)}}for(let[a,n]of e){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=V.join(a,Si,BQ),A=t.get(a)||new Map;await oe.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await oe.removePromise(V.join(u,p)),process.platform===\"win32\"&&await oe.removePromise(V.join(u,`${p}.cmd`)));for(let[p,h]of n){let E=A.get(p),I=V.join(u,p);E!==h&&(process.platform===\"win32\"?await(0,u1e.default)(ue.fromPortablePath(h),ue.fromPortablePath(I),{createPwshFile:!1}):(await oe.removePromise(I),await gj(h,I,o),V.contains(r,await oe.realpathPromise(h))!==null&&await oe.chmodPromise(h,493)))}}}Ye();St();nA();var cv=class extends P0{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new mj(r)}},mj=class extends mm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let o=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),a=zIe(r,this.opts.project.cwd,o),{tree:n,errors:u}=zB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:I,text:v}of u)this.opts.report.reportError(I,v);return}let A=new Map;r.fallbackPool=A;let p=(I,v)=>{let x=W.parseLocator(v.locator),C=W.stringifyIdent(x);C===I?A.set(I,x.reference):A.set(I,[C,x.reference])},h=V.join(this.opts.project.cwd,dr.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 I of E.dirList){let v=V.join(h,I),x=n.get(v);if(typeof x>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in x)p(I,x);else for(let C of x.dirList){let R=V.join(v,C),L=n.get(R);if(typeof L>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in L)p(`${I}/${C}`,L);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var C1t={hooks:{cleanGlobalArtifacts:async t=>{let e=dj(t);await oe.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:[lv,cv]},w1t=C1t;var dG={};Vt(dG,{NpmHttpFetcher:()=>fv,NpmRemapResolver:()=>pv,NpmSemverFetcher:()=>dl,NpmSemverResolver:()=>hv,NpmTagResolver:()=>gv,default:()=>Lvt,npmConfigUtils:()=>Zn,npmHttpUtils:()=>Zr,npmPublishUtils:()=>ow});Ye();var D1e=$e(zn());var Wn=\"npm:\";var Zr={};Vt(Zr,{AuthType:()=>I1e,customPackageError:()=>ym,del:()=>R1t,get:()=>Em,getIdentUrl:()=>DQ,getPackageMetadata:()=>JC,handleInvalidAuthenticationError:()=>k0,post:()=>Q1t,put:()=>F1t});Ye();Ye();St();var wj=$e(f2()),C1e=$e(D_()),w1e=$e(zn());var Zn={};Vt(Zn,{RegistryType:()=>y1e,getAuditRegistry:()=>I1t,getAuthConfiguration:()=>Cj,getDefaultRegistry:()=>uv,getPublishRegistry:()=>B1t,getRegistryConfiguration:()=>E1e,getScopeConfiguration:()=>Ej,getScopeRegistry:()=>KC,normalizeRegistry:()=>oc});var y1e=(o=>(o.AUDIT_REGISTRY=\"npmAuditRegistry\",o.FETCH_REGISTRY=\"npmRegistryServer\",o.PUBLISH_REGISTRY=\"npmPublishRegistry\",o))(y1e||{});function oc(t){return t.replace(/\\/$/,\"\")}function I1t({configuration:t}){return uv({configuration:t,type:\"npmAuditRegistry\"})}function B1t(t,{configuration:e}){return t.publishConfig?.registry?oc(t.publishConfig.registry):t.name?KC(t.name.scope,{configuration:e,type:\"npmPublishRegistry\"}):uv({configuration:e,type:\"npmPublishRegistry\"})}function KC(t,{configuration:e,type:r=\"npmRegistryServer\"}){let o=Ej(t,{configuration:e});if(o===null)return uv({configuration:e,type:r});let a=o.get(r);return a===null?uv({configuration:e,type:r}):oc(a)}function uv({configuration:t,type:e=\"npmRegistryServer\"}){let r=t.get(e);return oc(r!==null?r:t.get(\"npmRegistryServer\"))}function E1e(t,{configuration:e}){let r=e.get(\"npmRegistries\"),o=oc(t),a=r.get(o);if(typeof a<\"u\")return a;let n=r.get(o.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}function Ej(t,{configuration:e}){if(t===null)return null;let o=e.get(\"npmScopes\").get(t);return o||null}function Cj(t,{configuration:e,ident:r}){let o=r&&Ej(r.scope,{configuration:e});return o?.get(\"npmAuthIdent\")||o?.get(\"npmAuthToken\")?o:E1e(t,{configuration:e})||e}var I1e=(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))(I1e||{});async function k0(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){if(PQ(t))throw new zt(41,\"Invalid OTP token\");if(t.originalError?.name===\"HTTPError\"&&t.originalError?.response.statusCode===401)throw new zt(41,`Invalid authentication (${typeof e!=\"string\"?`as ${await N1t(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function ym(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 ${de.applyHyperlink(e,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function DQ(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var B1e=new Map,v1t=new Map;async function D1t(t){return await _e.getFactoryWithDefault(B1e,t,async()=>{let e=null;try{e=await oe.readJsonPromise(t)}catch{}return e})}async function S1t(t,e,{configuration:r,cached:o,registry:a,headers:n,version:u,...A}){return await _e.getFactoryWithDefault(v1t,t,async()=>await Em(DQ(e),{...A,customErrorMessage:ym,configuration:r,registry:a,ident:e,headers:{...n,[\"If-None-Match\"]:o?.etag,[\"If-Modified-Since\"]:o?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(o===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...h,body:o.metadata}}let E=P1t(JSON.parse(h.body.toString())),I={metadata:E,etag:h.headers.etag,lastModified:h.headers[\"last-modified\"]};return B1e.set(t,Promise.resolve(I)),Promise.resolve().then(async()=>{let v=`${t}-${process.pid}.tmp`;await oe.mkdirPromise(V.dirname(v),{recursive:!0}),await oe.writeJsonPromise(v,I,{compact:!0}),await oe.renamePromise(v,t)}).catch(()=>{}),{...h,body:E}}}))}async function JC(t,{cache:e,project:r,registry:o,headers:a,version:n,...u}){let{configuration:A}=r;o=Av(A,{ident:t,registry:o});let p=x1t(A,o),h=V.join(p,`${W.slugifyIdent(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await D1t(h),E)){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(A.get(\"enableOfflineMode\")){let I=structuredClone(E.metadata),v=new Set;if(e){for(let C of Object.keys(I.versions)){let R=W.makeLocator(t,`npm:${C}`),L=e.getLocatorMirrorPath(R);(!L||!oe.existsSync(L))&&(delete I.versions[C],v.add(C))}let x=I[\"dist-tags\"].latest;if(v.has(x)){let C=Object.keys(E.metadata.versions).sort(w1e.default.compare),R=C.indexOf(x);for(;v.has(C[R])&&R>=0;)R-=1;R>=0?I[\"dist-tags\"].latest=C[R]:delete I[\"dist-tags\"].latest}}return I}}return await S1t(h,t,{...u,configuration:A,cached:E,registry:o,headers:a,version:n})}var v1e=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function P1t(t){return{\"dist-tags\":t[\"dist-tags\"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,C1e.default)(r,v1e)]))}}var b1t=wn.makeHash(...v1e).slice(0,6);function x1t(t,e){let r=k1t(t),o=new URL(e);return V.join(r,b1t,o.hostname)}function k1t(t){return V.join(t.get(\"globalFolder\"),\"metadata/npm\")}async function Em(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){n=Av(e,{ident:o,registry:n}),o&&o.scope&&typeof a>\"u\"&&(a=1);let A=await SQ(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await nn.get(t.charAt(0)===\"/\"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await k0(p,{registry:n,configuration:e,headers:r}),p}}async function Q1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await SQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.post(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!PQ(I)||p)throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Ij(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function F1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await SQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.put(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!PQ(I))throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Ij(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function R1t(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){u=Av(r,{ident:a,registry:u});let h=await SQ(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...VC(A)});try{return await nn.del(u+t,{configuration:r,headers:o,...p})}catch(E){if(!PQ(E)||A)throw await k0(E,{attemptedAs:e,registry:u,configuration:r,headers:o}),E;A=await Ij(E,{configuration:r});let I={...o,...VC(A)};try{return await nn.del(`${u}${t}`,{configuration:r,headers:I,...p})}catch(v){throw await k0(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}function Av(t,{ident:e,registry:r}){if(typeof r>\"u\"&&e)return KC(e.scope,{configuration:t});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return oc(r)}async function SQ(t,{authType:e=2,configuration:r,ident:o}){let a=Cj(t,{configuration:r,ident:o}),n=T1t(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get(\"npmAuthToken\"))return`Bearer ${a.get(\"npmAuthToken\")}`;if(a.get(\"npmAuthIdent\")){let A=a.get(\"npmAuthIdent\");return A.includes(\":\")?`Basic ${Buffer.from(A).toString(\"base64\")}`:`Basic ${A}`}if(n&&e!==1)throw new zt(33,\"No authentication configured for request\");return null}function T1t(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 N1t(t,e,{configuration:r}){if(typeof e>\"u\"||typeof e.authorization>\"u\")return\"an anonymous user\";try{return(await nn.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??\"an unknown user\"}catch{return\"an unknown user\"}}async function Ij(t,{configuration:e}){let r=t.originalError?.response.headers[\"npm-notice\"];if(r&&(await Nt.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,de.pretty(e,\"$1\",de.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&Ji.openUrl){let{openNow:u}=await(0,wj.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});u&&(await Ji.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:o}=await(0,wj.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),o}function PQ(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 VC(t){return{[\"npm-otp\"]:t}}var fv=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o,params:a}=W.parseRange(e.reference);return!(!D1e.default.valid(o)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=W.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await Em(o.__archiveUrl,{customErrorMessage:ym,configuration:r.project.configuration,ident:e});return await Xi.convertToZip(a,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();var pv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!W.tryParseDescriptor(e.range.slice(Wn.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error(\"Unreachable\")}};Ye();Ye();var S1e=$e(zn());var dl=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let o=new URL(e.reference);return!(!S1e.default.valid(o.pathname)||o.searchParams.has(\"__archiveUrl\"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await Em(dl.getLocatorUrl(e),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}catch{o=await Em(dl.getLocatorUrl(e).replace(/%2f/g,\"/\"),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=KC(e.scope,{configuration:o}),n=dl.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=kr.clean(e.reference.slice(Wn.length));if(r===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${DQ(e)}/-/${e.name}-${r}.tgz`}};Ye();Ye();Ye();var Bj=$e(zn());var bQ=W.makeIdent(null,\"node-gyp\"),L1t=/\\b(node-gyp|prebuild-install)\\b/,hv=class{supportsDescriptor(e,r){return e.range.startsWith(Wn)?!!kr.validRange(e.range.slice(Wn.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o}=W.parseRange(e.reference);return!!Bj.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=kr.validRange(e.range.slice(Wn.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);let n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project,version:Bj.default.valid(a.raw)?a.raw:void 0}),u=_e.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new kr.SemVer(h);if(a.test(E))return E}catch{}return _e.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=W.makeLocator(e,`${Wn}${h.raw}`),I=n.versions[h.raw].dist.tarball;return dl.isConventionalTarballUrl(E,I,{configuration:o.project.configuration})?E:W.bindLocator(E,{__archiveUrl:I})})}async getSatisfying(e,r,o,a){let n=kr.validRange(e.range.slice(Wn.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);return{locators:_e.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return _e.mapAndFilter.skip;let h=W.tryParseRange(p.reference,{requireProtocol:Wn});if(!h)return _e.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:_e.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=W.parseRange(e.reference),a=kr.clean(o);if(a===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await JC(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new zt(16,`Registry failed to return reference \"${a}\"`);let u=new Ot;if(u.load(n.versions[a]),!u.dependencies.has(bQ.identHash)&&!u.peerDependencies.has(bQ.identHash)){for(let A of u.scripts.values())if(A.match(L1t)){u.dependencies.set(bQ.identHash,W.makeDescriptor(bQ,\"latest\"));break}}return{...e,version:a,languageName:\"node\",linkType:\"HARD\",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ye();Ye();var P1e=$e(zn());var gv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!FE.test(e.range.slice(Wn.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Wn.length),n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new zt(15,'Registry returned invalid data - missing \"dist-tags\" field');let u=n[\"dist-tags\"];if(!Object.hasOwn(u,a))throw new zt(16,`Registry failed to return tag \"${a}\"`);let A=u[a],p=W.makeLocator(e,`${Wn}${A}`),h=n.versions[A].dist.tarball;return dl.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[W.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){let n=[];for(let u of o){if(u.identHash!==e.identHash)continue;let A=W.tryParseRange(u.reference,{requireProtocol:Wn});if(!(!A||!P1e.default.valid(A.selector))){if(A.params?.__archiveUrl){let p=W.makeRange({protocol:Wn,selector:A.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(W.makeDescriptor(e,p),r,a);if(u.reference!==h.reference)continue}n.push(u)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error(\"Unreachable\")}};var ow={};Vt(ow,{getGitHead:()=>Tvt,getPublishAccess:()=>dBe,getReadmeContent:()=>mBe,makePublishBody:()=>Rvt});Ye();Ye();St();var AG={};Vt(AG,{PackCommand:()=>U0,default:()=>gvt,packUtils:()=>wA});Ye();Ye();Ye();St();qt();var wA={};Vt(wA,{genPackList:()=>XQ,genPackStream:()=>uG,genPackageManifest:()=>iBe,hasPackScripts:()=>lG,prepareForPack:()=>cG});Ye();St();var aG=$e(Zo()),rBe=$e(Z2e()),nBe=ve(\"zlib\"),ivt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],svt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function lG(t){return!!(un.hasWorkspaceScript(t,\"prepack\")||un.hasWorkspaceScript(t,\"postpack\"))}async function cG(t,{report:e},r){await un.maybeExecuteWorkspaceLifecycleScript(t,\"prepack\",{report:e});try{let o=V.join(t.cwd,Ot.fileName);await oe.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:oe}),await r()}finally{await un.maybeExecuteWorkspaceLifecycleScript(t,\"postpack\",{report:e})}}async function uG(t,e){typeof e>\"u\"&&(e=await XQ(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(V.normalize(n));for(let n of t.manifest.bin.values())r.add(V.normalize(n));let o=rBe.default.pack();process.nextTick(async()=>{for(let n of e){let u=V.normalize(n),A=V.resolve(t.cwd,u),p=V.join(\"package\",u),h=await oe.lstatPromise(A),E={name:p,mtime:new Date(vi.SAFE_TIME*1e3)},I=r.has(u)?493:420,v,x,C=new Promise((L,U)=>{v=L,x=U}),R=L=>{L?x(L):v()};if(h.isFile()){let L;u===\"package.json\"?L=Buffer.from(JSON.stringify(await iBe(t),null,2)):L=await oe.readFilePromise(A),o.entry({...E,mode:I,type:\"file\"},L,R)}else h.isSymbolicLink()?o.entry({...E,mode:I,type:\"symlink\",linkname:await oe.readlinkPromise(A)},R):R(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(u)}`));await C}o.finalize()});let a=(0,nBe.createGzip)();return o.pipe(a),a}async function iBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function XQ(t){let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let I of svt)o.reject.push(I);for(let I of ivt)o.accept.push(I);o.reject.push(r.get(\"rcFilename\"));let a=I=>{if(I===null||!I.startsWith(`${t.cwd}/`))return;let v=V.relative(t.cwd,I),x=V.resolve(Bt.root,v);o.reject.push(x)};a(V.resolve(e.cwd,dr.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(I=>I.populateYarnPaths,e,I=>{a(I)});for(let I of e.workspaces){let v=V.relative(t.cwd,I.cwd);v!==\"\"&&!v.match(/^(\\.\\.)?\\//)&&o.reject.push(`/${v}`)}let n={accept:[],reject:[]},u=t.manifest.publishConfig?.main??t.manifest.main,A=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;u!=null&&n.accept.push(V.resolve(Bt.root,u)),A!=null&&n.accept.push(V.resolve(Bt.root,A)),typeof p==\"string\"&&n.accept.push(V.resolve(Bt.root,p));for(let I of h.values())n.accept.push(V.resolve(Bt.root,I));if(p instanceof Map)for(let[I,v]of p.entries())n.accept.push(V.resolve(Bt.root,I)),typeof v==\"string\"&&n.accept.push(V.resolve(Bt.root,v));let E=t.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let I of t.manifest.files)sBe(n.accept,I,{cwd:Bt.root})}return await ovt(t.cwd,{hasExplicitFileList:E,globalList:o,ignoreList:n})}async function ovt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new _u(t),u=[[Bt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!eBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(A),I=!1,v=!1;if(!e||A!==Bt.root)for(let R of E)I=I||R===\".gitignore\",v=v||R===\".npmignore\";let x=v?await $2e(n,A,\".npmignore\"):I?await $2e(n,A,\".gitignore\"):null,C=x!==null?[x].concat(p):p;eBe(A,{globalList:r,ignoreLists:p})&&(C=[...p,{accept:[],reject:[\"**/*\"]}]);for(let R of E)u.push([V.resolve(A,R),C])}else(h.isFile()||h.isSymbolicLink())&&a.push(V.relative(Bt.root,A))}return a.sort()}async function $2e(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(V.join(e,r),\"utf8\");for(let n of a.split(/\\n/g))sBe(o.reject,n,{cwd:e});return o}function avt(t,{cwd:e}){let r=t[0]===\"!\";return r&&(t=t.slice(1)),t.match(/\\.{0,1}\\//)&&(t=V.resolve(e,t)),r&&(t=`!${t}`),t}function sBe(t,e,{cwd:r}){let o=e.trim();o===\"\"||o[0]===\"#\"||t.push(avt(o,{cwd:r}))}function eBe(t,{globalList:e,ignoreLists:r}){let o=zQ(t,e.accept);if(o!==0)return o===2;let a=zQ(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=zQ(t,n.accept);if(u!==0)return u===2;let A=zQ(t,n.reject);if(A!==0)return A===1}return!1}function zQ(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a][0]!==\"!\"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a].slice(1)));return tBe(t,o)?2:tBe(t,r)?1:0}function tBe(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a].includes(\"/\")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a]));return!!(aG.default.isMatch(t,r,{dot:!0,nocase:!0})||aG.default.isMatch(t,o,{dot:!0,basename:!0,nocase:!0}))}var U0=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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await lG(a)&&(this.installIfNeeded?await o.install({cache:await Lr.find(r),report:new Qi}):await o.restoreInstallState());let n=this.out??this.filename,u=typeof n<\"u\"?V.resolve(this.context.cwd,lvt(n,{workspace:a})):V.resolve(a.cwd,\"package.tgz\");return(await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await cG(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await XQ(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await uG(a,h),I=oe.createWriteStream(u);E.pipe(I),await new Promise(v=>{I.on(\"finish\",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${de.pretty(r,u,de.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(u)}))})).exitCode()}};U0.paths=[[\"pack\"]],U0.usage=nt.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\"]]});function lvt(t,{workspace:e}){let r=t.replace(\"%s\",cvt(e)).replace(\"%v\",uvt(e));return ue.toPortablePath(r)}function cvt(t){return t.manifest.name!==null?W.slugifyIdent(t.manifest.name):\"package\"}function uvt(t){return t.manifest.version!==null?t.manifest.version:\"unknown\"}var Avt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],fvt=\"workspace:\",pvt=(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 o of Avt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=W.parseRange(a.range);if(u.protocol===fvt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new zt(21,`${W.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;W.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector===\"*\"?A=n.manifest.version??\"0.0.0\":u.selector===\"~\"||u.selector===\"^\"?A=`${u.selector}${n.manifest.version??\"0.0.0\"}`:A=u.selector;let p=o===\"dependencies\"?W.makeDescriptor(a,\"unknown\"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":o;e[h][W.stringifyIdent(a)]=A}}},hvt={hooks:{beforeWorkspacePacking:pvt},commands:[U0]},gvt=hvt;var hBe=ve(\"crypto\"),gBe=$e(pBe());async function Rvt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.manifest.name,A=t.manifest.version,p=W.stringifyIdent(u),h=(0,hBe.createHash)(\"sha1\").update(e).digest(\"hex\"),E=gBe.default.fromData(e).toString(),I=r??dBe(t,u),v=await mBe(t),x=await wA.genPackageManifest(t),C=`${p}-${A}.tgz`,R=new URL(`${oc(a)}/${p}/-/${C}`);return{_id:p,_attachments:{[C]:{content_type:\"application/octet-stream\",data:e.toString(\"base64\"),length:e.length}},name:p,access:I,[\"dist-tags\"]:{[o]:A},versions:{[A]:{...x,_id:`${p}@${A}`,name:p,version:A,gitHead:n,dist:{shasum:h,integrity:E,tarball:R.toString()}}},readme:v}}async function Tvt(t){try{let{stdout:e}=await Ur.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:t});return e.trim()===\"\"?void 0:e.trim()}catch{return}}function dBe(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 mBe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${W.stringifyIdent(r)}\n`;try{a=await oe.readFilePromise(e,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var gG={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}},yBe={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\"}},Nvt={configuration:{...gG,...yBe,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...gG,...yBe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:oc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...gG}}}},fetchers:[fv,dl],resolvers:[pv,hv,gv]},Lvt=Nvt;var DG={};Vt(DG,{NpmAuditCommand:()=>H0,NpmInfoCommand:()=>q0,NpmLoginCommand:()=>j0,NpmLogoutCommand:()=>G0,NpmPublishCommand:()=>Y0,NpmTagAddCommand:()=>K0,NpmTagListCommand:()=>W0,NpmTagRemoveCommand:()=>V0,NpmWhoamiCommand:()=>J0,default:()=>jvt,npmAuditTypes:()=>Rv,npmAuditUtils:()=>ZQ});Ye();Ye();qt();var wG=$e(Zo());Za();var Rv={};Vt(Rv,{Environment:()=>Qv,Severity:()=>Fv});var Qv=(o=>(o.All=\"all\",o.Production=\"production\",o.Development=\"development\",o))(Qv||{}),Fv=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(Fv||{});var ZQ={};Vt(ZQ,{allSeverities:()=>aw,getPackages:()=>CG,getReportTree:()=>yG,getSeverityInclusions:()=>mG,getTopLevelDependencies:()=>EG});Ye();var EBe=$e(zn());var aw=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function mG(t){if(typeof t>\"u\")return new Set(aw);let e=aw.indexOf(t),r=aw.slice(e);return new Set(r)}function yG(t){let e={},r={children:e};for(let[o,a]of _e.sortMap(Object.entries(t),n=>n[0]))for(let n of _e.sortMap(a,u=>`${u.id}`))e[`${o}/${n.id}`]={value:de.tuple(de.Type.IDENT,W.parseIdent(o)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:de.tuple(de.Type.ID,n.id)},Issue:{label:\"Issue\",value:de.tuple(de.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:de.tuple(de.Type.URL,n.url)},Severity:{label:\"Severity\",value:de.tuple(de.Type.NO_HINT,n.severity)},[\"Vulnerable Versions\"]:{label:\"Vulnerable Versions\",value:de.tuple(de.Type.RANGE,n.vulnerable_versions)},[\"Tree Versions\"]:{label:\"Tree Versions\",children:[...n.versions].sort(EBe.default.compare).map(u=>({value:de.tuple(de.Type.REFERENCE,u)}))},Dependents:{label:\"Dependents\",children:_e.sortMap(n.dependents,u=>W.stringifyLocator(u)).map(u=>({value:de.tuple(de.Type.LOCATOR,u)}))}}};return r}function EG(t,e,{all:r,environment:o}){let a=[],n=r?t.workspaces:[e],u=[\"all\",\"production\"].includes(o),A=[\"all\",\"development\"].includes(o);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!A:!u)||a.push({workspace:p,dependency:h});return a}function CG(t,e,{recursive:r}){let o=new Map,a=new Set,n=[],u=(A,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(W.ensureDevirtualizedLocator(E).reference.startsWith(\"npm:\")&&E.version!==null){let v=W.stringifyIdent(E),x=_e.getMapWithDefault(o,v);_e.getArrayWithDefault(x,E.version).push(A)}if(r)for(let v of E.dependencies.values())n.push([E,v])};for(let{workspace:A,dependency:p}of e)n.push([A.anchoredLocator,p]);for(;n.length>0;){let[A,p]=n.shift();u(A,p)}return o}var H0=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:Ks(Qv)});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:Ks(Fv)});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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=EG(o,a,{all:this.all,environment:this.environment}),u=CG(o,n,{recursive:this.recursive}),A=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[L,U]of u)A.some(J=>wG.default.isMatch(L,J))||(p[L]=[...U.keys()]);let h=Zn.getAuditRegistry({configuration:r}),E,I=await AA.start({configuration:r,stdout:this.context.stdout},async()=>{let L=Zr.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:Zr.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ae])=>{let fe=await Zr.getPackageMetadata(W.parseIdent(te),{project:o});return _e.mapAndFilter(ae,ce=>{let{deprecated:me}=fe.versions[ce];return me?[te,ce,me]:_e.mapAndFilter.skip})})),J=await L;for(let[te,ae,fe]of U.flat(1))Object.hasOwn(J,te)&&J[te].some(ce=>kr.satisfiesWithPrereleases(ae,ce.vulnerable_versions))||(J[te]??=[],J[te].push({id:`${te} (deprecation)`,title:fe.trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:ae}));E=J});if(I.hasErrors())return I.exitCode();let v=mG(this.severity),x=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),C=Object.create(null);for(let[L,U]of Object.entries(E)){let J=U.filter(te=>!wG.default.isMatch(`${te.id}`,x)&&v.has(te.severity));J.length>0&&(C[L]=J.map(te=>{let ae=u.get(L);if(typeof ae>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let fe=[...ae.keys()].filter(me=>kr.satisfiesWithPrereleases(me,te.vulnerable_versions)),ce=new Map;for(let me of fe)for(let he of ae.get(me))ce.set(he.locatorHash,he);return{...te,versions:fe,dependents:[...ce.values()]}}))}let R=Object.keys(C).length>0;return R?($s.emitTree(yG(C),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async L=>{L.reportInfo(1,\"No audit suggestions\")}),R?1:0)}};H0.paths=[[\"npm\",\"audit\"]],H0.usage=nt.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 ${aw.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\"]]});Ye();Ye();St();qt();var IG=$e(zn()),BG=ve(\"util\"),q0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],u=!1,A=await Nt.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 ae=o.topLevelWorkspace;if(!ae.manifest.name)throw new it(`Missing ${de.pretty(r,\"name\",de.Type.CODE)} field in ${ue.fromPortablePath(V.join(ae.cwd,dr.manifest))}`);E=W.makeDescriptor(ae.manifest.name,\"unknown\")}else E=W.parseDescriptor(h);let I=Zr.getIdentUrl(E),v=vG(await Zr.get(I,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:Zr.customPackageError})),x=Object.keys(v.versions).sort(IG.default.compareLoose),R=v[\"dist-tags\"].latest||x[x.length-1],L=kr.validRange(E.range);if(L){let ae=IG.default.maxSatisfying(x,L);ae!==null?R=ae:(p.reportWarning(0,`Unmet range ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0)}else Object.hasOwn(v[\"dist-tags\"],E.range)?R=v[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0);let U=v.versions[R],J={...v,...U,version:R,versions:x},te;if(a!==null){te={};for(let ae of a){let fe=J[ae];if(typeof fe<\"u\")te[ae]=fe;else{p.reportWarning(1,`The ${de.pretty(r,ae,de.Type.CODE)} field doesn't exist inside ${W.prettyIdent(r,E)}'s information`),u=!0;continue}}}else this.json||(delete J.dist,delete J.readme,delete J.users),te=J;p.reportJson(te),this.json||n.push(te)}});BG.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,BG.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return A.exitCode()}};q0.paths=[[\"npm\",\"info\"]],q0.usage=nt.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\"]]});function vG(t){if(Array.isArray(t)){let e=[];for(let r of t)r=vG(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 o=vG(t[r]);o&&(e[r]=o)}return e}else return t||null}Ye();Ye();qt();var CBe=$e(f2()),j0=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Nt.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await Uvt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=await Ovt(o,u,r);return await Mvt(o,A,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};j0.paths=[[\"npm\",\"login\"]],j0.usage=nt.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 function $Q({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Zn.getScopeRegistry(t,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):t?Zn.getScopeRegistry(t,{configuration:r}):e?Zn.getPublishRegistry((await fC(r,o)).manifest,{configuration:r}):Zn.getDefaultRegistry({configuration:r})}async function Ovt(t,e,r){let o=`/-/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:Zr.AuthType.NO_AUTH};try{return(await Zr.put(o,a,n)).token}catch(E){if(!(E.originalError?.name===\"HTTPError\"&&E.originalError?.response.statusCode===409))throw E}let u={...n,authType:Zr.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString(\"base64\")}`}},A=await Zr.get(o,u);for(let[E,I]of Object.entries(A))(!a[E]||E===\"roles\")&&(a[E]=I);let p=`${o}/-rev/${a._rev}`;return(await Zr.put(p,a,u)).token}async function Mvt(t,e,{alwaysAuth:r,scope:o}){let a=u=>A=>{let p=_e.isIndexableObject(A)?A:{},h=p[u],E=_e.isIndexableObject(h)?h:{};return{...p,[u]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Ke.updateHomeConfiguration(n)}async function Uvt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${de.pretty(t,e,de.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 u=await(0,CBe.prompt)([{type:\"input\",name:\"name\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),u}Ye();Ye();qt();var lw=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),G0=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Ke.find(this.context.cwd,this.context.plugins),A=W.makeIdent(this.scope??null,\"pkg\");return!Zn.getAuthConfiguration(n,{configuration:u,ident:A}).get(\"npmAuthToken\")};return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Hvt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await wBe(\"npmScopes\",this.scope),await o()?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 u=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish});await wBe(\"npmRegistries\",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};G0.paths=[[\"npm\",\"logout\"]],G0.usage=nt.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\"]]});function _vt(t,e){let r=t[e];if(!_e.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...lw].every(n=>!o.has(n)))return!1;for(let n of lw)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of lw)delete a[n];return t[e]=a,!0}async function Hvt(){let t=e=>{let r=!1,o=_e.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))_vt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Ke.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function wBe(t,e){return await Ke.updateHomeConfiguration({[t]:r=>{let o=_e.isIndexableObject(r)?r:{};if(!Object.hasOwn(o,e))return r;let a=o[e],n=_e.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...lw].every(p=>!u.has(p)))return r;for(let p of lw)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of lw)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ye();qt();var Y0=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);if(a.manifest.private)throw new it(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new it(\"Workspaces must have valid names and versions to be published on an external registry\");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=Zn.getPublishRegistry(a.manifest,{configuration:r});return(await Nt.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await Zr.get(Zr.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await un.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await wA.prepareForPack(a,{report:h},async()=>{let E=await wA.genPackList(a);for(let R of E)h.reportInfo(null,R);let I=await wA.genPackStream(a,E),v=await _e.bufferStream(I),x=await ow.getGitHead(a.cwd),C=await ow.makePublishBody(a,v,{access:this.access,tag:this.tag,registry:A,gitHead:x});await Zr.put(Zr.getIdentUrl(n),C,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,\"Package archive published\")})).exitCode()}};Y0.paths=[[\"npm\",\"publish\"]],Y0.usage=nt.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 overriden 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\"]]});Ye();qt();var IBe=$e(zn());Ye();St();qt();var W0=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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=W.parseIdent(this.package);else{if(!a)throw new rr(o.cwd,this.context.cwd);if(!a.manifest.name)throw new it(`Missing 'name' field in ${ue.fromPortablePath(V.join(a.cwd,dr.manifest))}`);n=a.manifest.name}let u=await Tv(n,r),p={children:_e.sortMap(Object.entries(u),([h])=>h).map(([h,E])=>({value:de.tuple(de.Type.RESOLUTION,{descriptor:W.makeDescriptor(n,h),locator:W.makeLocator(n,E)})}))};return $s.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};W0.paths=[[\"npm\",\"tag\",\"list\"]],W0.usage=nt.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 function Tv(t,e){let r=`/-/package${Zr.getIdentUrl(t)}/dist-tags`;return Zr.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Zr.customPackageError})}var K0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseDescriptor(this.package,!0),u=n.range;if(!IBe.default.valid(u))throw new it(`The range ${de.pretty(r,n.range,de.Type.RANGE)} must be a valid semver version`);let A=Zn.getPublishRegistry(a.manifest,{configuration:r}),p=de.pretty(r,n,de.Type.IDENT),h=de.pretty(r,u,de.Type.RANGE),E=de.pretty(r,this.tag,de.Type.CODE);return(await Nt.start({configuration:r,stdout:this.context.stdout},async v=>{let x=await Tv(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===u&&v.reportWarning(0,`Tag ${E} is already set to version ${h}`);let C=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.put(C,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};K0.paths=[[\"npm\",\"tag\",\"add\"]],K0.usage=nt.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\"]]});Ye();qt();var V0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){if(this.tag===\"latest\")throw new it(\"The 'latest' tag cannot be removed.\");let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseIdent(this.package),u=Zn.getPublishRegistry(a.manifest,{configuration:r}),A=de.pretty(r,this.tag,de.Type.CODE),p=de.pretty(r,n,de.Type.IDENT),h=await Tv(n,r);if(!Object.hasOwn(h,this.tag))throw new it(`${A} is not a tag of package ${p}`);return(await Nt.start({configuration:r,stdout:this.context.stdout},async I=>{let v=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),I.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};V0.paths=[[\"npm\",\"tag\",\"remove\"]],V0.usage=nt.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\"]]});Ye();Ye();qt();var J0=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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Zn.getScopeRegistry(this.scope,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Zn.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Zn.getPublishRegistry((await fC(r,this.context.cwd)).manifest,{configuration:r}):o=Zn.getDefaultRegistry({configuration:r}),(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u;try{u=await Zr.get(\"/-/whoami\",{configuration:r,registry:o,authType:Zr.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?W.makeIdent(this.scope,\"\"):void 0})}catch(A){if(A.response?.statusCode===401||A.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw A}n.reportInfo(0,u.username)})).exitCode()}};J0.paths=[[\"npm\",\"whoami\"]],J0.usage=nt.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\"]]});var qvt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},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:[H0,q0,j0,G0,Y0,K0,W0,V0,J0]},jvt=qvt;var FG={};Vt(FG,{PatchCommand:()=>Z0,PatchCommitCommand:()=>X0,PatchFetcher:()=>Uv,PatchResolver:()=>_v,default:()=>aDt,patchUtils:()=>Sm});Ye();Ye();St();nA();var Sm={};Vt(Sm,{applyPatchFile:()=>tF,diffFolders:()=>kG,ensureUnpatchedDescriptor:()=>SG,ensureUnpatchedLocator:()=>nF,extractPackageToDisk:()=>xG,extractPatchFlags:()=>xBe,isParentRequired:()=>bG,isPatchDescriptor:()=>rF,isPatchLocator:()=>z0,loadPatchFiles:()=>Mv,makeDescriptor:()=>iF,makeLocator:()=>PG,makePatchHash:()=>QG,parseDescriptor:()=>Lv,parseLocator:()=>Ov,parsePatchFile:()=>Nv,unpatchDescriptor:()=>iDt,unpatchLocator:()=>sDt});Ye();St();Ye();St();var Gvt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function cw(t){return V.relative(Bt.root,V.resolve(Bt.root,ue.toPortablePath(t)))}function Yvt(t){let e=t.trim().match(Gvt);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 Wvt=420,Kvt=493;var BBe=()=>({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}),Vvt=t=>({header:Yvt(t),parts:[]}),Jvt={[\"@\"]:\"header\",[\"-\"]:\"deletion\",[\"+\"]:\"insertion\",[\" \"]:\"context\",[\"\\\\\"]:\"pragma\",undefined:\"context\"};function zvt(t){let e=[],r=BBe(),o=\"parsing header\",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=BBe()}for(let p=0;p<t.length;p++){let h=t[p];if(o===\"parsing header\")if(h.startsWith(\"@@\"))o=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&A();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=Jvt[h[0]]||null;switch(E){case\"header\":u(),a=Vvt(h);break;case null:o=\"parsing header\",A(),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:_e.assertNever(E);break}}}A();for(let{hunks:p}of e)if(p)for(let h of p)Zvt(h);return e}function Xvt(t){let e=[];for(let r of t){let{semverExclusivity:o,diffLineFromPath:a,diffLineToPath:n,oldMode:u,newMode:A,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:I,beforeHash:v,afterHash:x,fromPath:C,toPath:R,hunks:L}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":L&&L.length>0?\"patch\":\"mode change\",J=null;switch(U){case\"rename\":{if(!E||!I)throw new Error(\"Bad parser state: rename from & to not given\");e.push({type:\"rename\",semverExclusivity:o,fromPath:cw(E),toPath:cw(I)}),J=I}break;case\"file deletion\":{let te=a||C;if(!te)throw new Error(\"Bad parse state: no path given for file deletion\");e.push({type:\"file deletion\",semverExclusivity:o,hunk:L&&L[0]||null,path:cw(te),mode:eF(p),hash:v})}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:o,hunk:L&&L[0]||null,path:cw(te),mode:eF(h),hash:x})}break;case\"patch\":case\"mode change\":J=R||n;break;default:_e.assertNever(U);break}J&&u&&A&&u!==A&&e.push({type:\"mode change\",semverExclusivity:o,path:cw(J),oldMode:eF(u),newMode:eF(A)}),J&&L&&L.length&&e.push({type:\"patch\",semverExclusivity:o,path:cw(J),hunks:L,beforeHash:v,afterHash:x})}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 eF(t){let e=parseInt(t,8)&511;if(e!==Wvt&&e!==Kvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Nv(t){let e=t.split(/\\n/g);return e[e.length-1]===\"\"&&e.pop(),Xvt(zvt(e))}function Zvt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case\"context\":r+=a.length,e+=a.length;break;case\"deletion\":e+=a.length;break;case\"insertion\":r+=a.length;break;default:_e.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ye();St();var uw=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function Aw(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function tF(t,{baseFs:e=new Tn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!kr.satisfiesWithPrereleases(o,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 Aw(e,V.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 Aw(e,V.dirname(a.fromPath),async()=>{await Aw(e,V.dirname(a.toPath),async()=>{await Aw(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(V.dirname(a.path),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,vi.SAFE_TIME,vi.SAFE_TIME)}break;case\"patch\":await Aw(e,a.path,async()=>{await tDt(a,{baseFs:e,dryRun:r})});break;case\"mode change\":{let u=(await e.statPromise(a.path)).mode;if(vBe(a.newMode)!==vBe(u))continue;await Aw(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:_e.assertNever(a);break}}function vBe(t){return(t&64)>0}function DBe(t){return t.replace(/\\s+$/,\"\")}function eDt(t,e){return DBe(t)===DBe(e)}async function tDt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,\"utf8\")).split(/\\n/),A=[],p=0,h=0;for(let I of t){let v=Math.max(h,I.header.patched.start+p),x=Math.max(0,v-h),C=Math.max(0,u.length-v-I.header.original.length),R=Math.max(x,C),L=0,U=0,J=null;for(;L<=R;){if(L<=x&&(U=v-L,J=SBe(I,u,U),J!==null)){L=-L;break}if(L<=C&&(U=v+L,J=SBe(I,u,U),J!==null))break;L+=1}if(J===null)throw new uw(t.indexOf(I),I);A.push(J),p+=L,h=U+I.header.original.length}if(o)return;let E=0;for(let I of A)for(let v of I)switch(v.type){case\"splice\":{let x=v.index+E;u.splice(x,v.numToDelete,...v.linesToInsert),E+=v.linesToInsert.length-v.numToDelete}break;case\"pop\":u.pop();break;case\"push\":u.push(v.line);break;default:_e.assertNever(v);break}await r.writeFilePromise(e,u.join(`\n`),{mode:a})}function SBe(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let u=e[r];if(u==null||!eDt(u,n))return null;r+=1}a.type===\"deletion\"&&(o.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:\"push\",line:\"\"}))}break;case\"insertion\":o.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:\"pop\"});break;default:_e.assertNever(a.type);break}return o}var nDt=/^builtin<([^>]+)>$/;function fw(t,e){let{protocol:r,source:o,selector:a,params:n}=W.parseRange(t);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(o===null)throw new Error(\"Patch locators must explicitly define their source\");let u=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],A=n&&typeof n.locator==\"string\"?W.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function rF(t){return t.range.startsWith(\"patch:\")}function z0(t){return t.reference.startsWith(\"patch:\")}function Lv(t){let{sourceItem:e,...r}=fw(t.range,W.parseDescriptor);return{...r,sourceDescriptor:e}}function Ov(t){let{sourceItem:e,...r}=fw(t.reference,W.parseLocator);return{...r,sourceLocator:e}}function iDt(t){let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function sDt(t){let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function SG(t){if(!rF(t))return t;let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function nF(t){if(!z0(t))return t;let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function PBe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:W.stringifyLocator(t)}:{},A=typeof o<\"u\"?{version:o}:{},p=typeof a<\"u\"?{hash:a}:{};return W.makeRange({protocol:\"patch:\",source:n(e),selector:r.join(\"&\"),params:{...A,...p,...u}})}function iF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return W.makeDescriptor(t,PBe({parentLocator:e,sourceItem:r,patchPaths:o},W.stringifyDescriptor))}function PG(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return W.makeLocator(t,PBe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},W.stringifyLocator))}function bBe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let u=a.match(nDt);return u!==null?o(u[1]):a.startsWith(\"~/\")?r(a.slice(2)):V.isAbsolute(a)?t(a):e(a)}function xBe(t){let e=t.lastIndexOf(\"!\");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has(\"optional\")}}function bG(t){return bBe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function Mv(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await _e.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=xBe(u),p=await bBe({onAbsolute:async h=>await oe.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(V.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await oe.readFilePromise(V.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source==\"string\"&&(u.source=u.source.replace(/\\r\\n?/g,`\n`));return n}async function xG(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=nF(t),n=r.storedChecksums,u=new Qi,A=await oe.mktempPromise(),p=V.join(A,\"source\"),h=V.join(A,\"user\"),E=V.join(A,\".yarn-patch.json\"),I=r.configuration.makeFetcher(),v=[];try{let x,C;if(t.locatorHash===a.locatorHash){let R=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u});v.push(()=>R.releaseFs?.()),x=R,C=R}else x=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>x.releaseFs?.()),C=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>C.releaseFs?.());await Promise.all([oe.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),oe.copyPromise(h,C.prefixPath,{baseFs:C.packageFs}),oe.writeJsonPromise(E,{locator:W.stringifyLocator(t),version:o.version})])}finally{for(let x of v)x()}return oe.detachTemp(A),h}async function kG(t,e){let r=ue.fromPortablePath(t).replace(/\\\\/g,\"/\"),o=ue.fromPortablePath(e).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await Ur.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,o],{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 u=r.startsWith(\"/\")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${_e.escapeRegExp(`/${u(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${_e.escapeRegExp(`/${u(o)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(_e.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(_e.escapeRegExp(`${o}/`),\"g\"),\"\")}function QG(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=Nv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!kr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return wn.makeHash(`${3}`,...r).slice(0,6)}Ye();function kBe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case\"context\":r.reportInfo(null,`  ${de.pretty(e,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${de.pretty(e,a,de.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${de.pretty(e,a,de.Type.ADDED)}`);break;default:_e.assertNever(o.type)}}var Uv=class{supports(e,r){return!!z0(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=Ov(e),A=await Mv(o,u,r),p=await oe.mktempPromise(),h=V.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),I=W.getIdentVendorPath(e),v=new zi(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await _e.releaseAfterUseAsync(async()=>{await v.copyPromise(I,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),v.saveAndClose();for(let{source:x,optional:C}of A){if(x===null)continue;let R=new zi(h,{level:r.project.configuration.get(\"compressionLevel\")}),L=new gn(V.resolve(Bt.root,I),{baseFs:R});try{await tF(Nv(x),{baseFs:L,version:n})}catch(U){if(!(U instanceof uw))throw U;let J=r.project.configuration.get(\"enableInlineHunks\"),te=!J&&!C?\" (set enableInlineHunks for details)\":\"\",ae=`${W.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,fe=ce=>{!J||kBe(U.hunk,{configuration:r.project.configuration,report:ce})};if(R.discardAndClose(),C){r.report.reportWarningOnce(66,ae,{reportExtra:fe});continue}else throw new zt(66,ae,fe)}R.saveAndClose()}return new zi(h,{level:r.project.configuration.get(\"compressionLevel\")})}};Ye();var _v=class{supportsDescriptor(e,r){return!!rF(e)}supportsLocator(e,r){return!!z0(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=Lv(e);return a.every(n=>!bG(n))?e:W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=Lv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=Lv(e),u=await Mv(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=QG(u,A.version);return[PG(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=Ov(e);return{...await r.resolver.resolve(o,r),...e}}};Ye();St();qt();var X0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=V.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),u=V.join(n,\"../source\"),A=V.join(n,\"../.yarn-patch.json\");if(!oe.existsSync(u))throw new it(\"The argument folder didn't get created by 'yarn patch'\");let p=await kG(u,n),h=await oe.readJsonPromise(A),E=W.parseLocator(h.locator,!0);if(!o.storedPackages.has(E.locatorHash))throw new it(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let I=r.get(\"patchFolder\"),v=V.join(I,`${W.slugifyLocator(E)}.patch`);await oe.mkdirPromise(I,{recursive:!0}),await oe.writeFilePromise(v,p);let x=[],C=new Map;for(let R of o.storedPackages.values()){if(W.isVirtualLocator(R))continue;let L=R.dependencies.get(E.identHash);if(!L)continue;let U=W.ensureDevirtualizedDescriptor(L),J=SG(U),te=o.storedResolutions.get(J.descriptorHash);if(!te)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!o.storedPackages.get(te))throw new Error(\"Assertion failed: Expected the package to have been registered\");let fe=o.tryWorkspaceByLocator(R);if(fe)x.push(fe);else{let ce=o.originalPackages.get(R.locatorHash);if(!ce)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let me=ce.dependencies.get(L.identHash);if(!me)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");C.set(me.descriptorHash,me)}}for(let R of x)for(let L of Ot.hardDependencies){let U=R.manifest[L].get(E.identHash);if(!U)continue;let J=iF(U,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});R.manifest[L].set(U.identHash,J)}for(let R of C.values()){let L=iF(R,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:W.stringifyIdent(L),description:R.range}},reference:L.range})}await o.persist()}};X0.paths=[[\"patch-commit\"]],X0.usage=nt.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    \"});Ye();St();qt();var Z0=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=W.parseLocator(this.package);if(u.reference===\"unknown\"){let A=_e.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?_e.mapAndFilter.skip:W.isVirtualLocator(p)?_e.mapAndFilter.skip:z0(p)!==this.update?_e.mapAndFilter.skip:p);if(A.length===0)throw new it(\"No package found in the project for the given locator\");if(A.length>1)throw new it(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${A.map(p=>`\n- ${W.prettyLocator(r,p)}`).join(\"\")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new it(\"No package found in the project for the given locator\");await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=nF(u),h=await xG(u,{cache:n,project:o});A.reportJson({locator:W.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";A.reportInfo(0,`Package ${W.prettyLocator(r,p)} got extracted with success${E}!`),A.reportInfo(0,`You can now edit the following folder: ${de.pretty(r,ue.fromPortablePath(h),\"magenta\")}`),A.reportInfo(0,`Once you are done run ${de.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.`)})}};Z0.paths=[[\"patch\"]],Z0.usage=nt.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    \"});var oDt={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:[X0,Z0],fetchers:[Uv],resolvers:[_v]},aDt=oDt;var NG={};Vt(NG,{PnpmLinker:()=>Hv,default:()=>fDt});Ye();St();qt();var Hv=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 o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.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 it(`Couldn't find ${W.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 o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.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 u=e,A=e;do{A=u,u=V.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new RG(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},RG=class{constructor(e){this.opts=e;this.asyncActions=new _e.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=SD(oe,{indexPath:V.join(e.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case\"SOFT\":return this.installPackageSoft(e,r,o);case\"HARD\":return this.installPackageHard(e,r,o)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(e,r,o){let a=V.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?V.join(a,dr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,o){let a=lDt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,W.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await oe.mkdirPromise(n,{recursive:!0}),await oe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e,p={manifest:await Ot.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ot,misc:{hasBindingGyp:yA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),E=yA.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\"||!QBe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await oe.mkdirPromise(a,{recursive:!0});let u=await cDt(a),A=new Map(u),p=[n],h=(I,v)=>{let x=v;QBe(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),x=W.devirtualizeLocator(v));let C=this.customData.pathsByLocator.get(x.locatorHash);if(typeof C>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(v)})`);let R=W.stringifyIdent(I),L=V.join(a,R),U=V.relative(V.dirname(L),C.packageLocation),J=A.get(R);A.delete(R),p.push(Promise.resolve().then(async()=>{if(J){if(J.isSymbolicLink()&&await oe.readlinkPromise(L)===U)return;await oe.removePromise(L)}await oe.mkdirpPromise(V.dirname(L)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await oe.symlinkPromise(C.packageLocation,L,\"junction\"):await oe.symlinkPromise(U,L)}))},E=!1;for(let[I,v]of r)I.identHash===e.identHash&&(E=!0),h(I,v);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(W.convertLocatorToDescriptor(e),e),p.push(uDt(a,A)),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=RBe(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await oe.removePromise(e);else{let r;try{r=new Set(await oe.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=V.contains(e,o);if(a===null)continue;let[n]=a.split(V.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await oe.removePromise(V.join(e,o))}))}return await this.asyncActions.wait(),await TG(e),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await TG(FBe(this.opts.project)),{customData:this.customData}}};function FBe(t){return V.join(t.cwd,dr.nodeModules)}function RBe(t){return V.join(FBe(t),\".store\")}function lDt(t,{project:e}){let r=W.slugifyLocator(t),o=RBe(e),a=V.join(o,r,\"package\"),n=V.join(o,r,dr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function QBe(t,{project:e}){return!W.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function cDt(t){let e=new Map,r=[];try{r=await oe.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!==\"ENOENT\")throw o}try{for(let o of r)if(!o.name.startsWith(\".\"))if(o.name.startsWith(\"@\")){let a=await oe.readdirPromise(V.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!==\"ENOENT\")throw o}return e}async function uDt(t,e){let r=[],o=new Set;for(let a of e.keys()){r.push(oe.removePromise(V.join(t,a)));let n=W.tryParseIdent(a)?.scope;n&&o.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...o].map(a=>TG(V.join(t,a)))))}async function TG(t){try{await oe.rmdirPromise(t)}catch(e){if(e.code!==\"ENOENT\"&&e.code!==\"ENOTEMPTY\")throw e}}var ADt={linkers:[Hv]},fDt=ADt;var qG={};Vt(qG,{StageCommand:()=>$0,default:()=>BDt,stageUtils:()=>oF});Ye();St();qt();Ye();St();var oF={};Vt(oF,{ActionType:()=>LG,checkConsensus:()=>sF,expandDirectory:()=>UG,findConsensus:()=>_G,findVcsRoot:()=>OG,genCommitMessage:()=>HG,getCommitPrefix:()=>TBe,isYarnFile:()=>MG});St();var LG=(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))(LG||{});async function OG(t,{marker:e}){do if(!oe.existsSync(V.join(t,e)))t=V.dirname(t);else return t;while(t!==\"/\");return null}function MG(t,{roots:e,names:r}){if(r.has(V.basename(t)))return!0;do if(!e.has(t))t=V.dirname(t);else return!0;while(t!==\"/\");return!1}function UG(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=oe.readdirSync(o);for(let n of a){let u=V.resolve(o,n);oe.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function sF(t,e){let r=0,o=0;for(let a of t)a!==\"wip\"&&(e.test(a)?r+=1:o+=1);return r>=o}function _G(t){let e=sF(t,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=sF(t,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),o=sF(t,/^\\w\\(\\w+\\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function TBe(t){return t.useComponent?\"chore(yarn): \":\"\"}var pDt=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function HG(t,e){let r=TBe(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=pDt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+=\"s\");let p=[u];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)`),o.push(`${A} ${h}`)}return`${r}${o.join(\", \")}`}var hDt=\"Commit generated via `yarn stage`\",gDt=11;async function NBe(t){let{code:e,stdout:r}=await Ur.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:t});return e===0?r.trim():null}async function dDt(t,e){let r=[],o=e.filter(h=>V.basename(h.path)===\"package.json\");for(let{action:h,path:E}of o){let I=V.relative(t,E);if(h===4){let v=await NBe(t),{stdout:x}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x),R=await Ot.fromFile(E),L=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...C.dependencies,...C.devDependencies]);for(let[J,te]of U){let ae=W.stringifyIdent(te),fe=L.get(J);fe?fe.range!==te.range&&r.push([4,`${ae} to ${fe.range}`]):r.push([3,ae])}for(let[J,te]of L)U.has(J)||r.push([2,W.stringifyIdent(te)])}else if(h===0){let v=await Ot.fromFile(E);v.name?r.push([0,W.stringifyIdent(v.name)]):r.push([0,\"a package\"])}else if(h===1){let v=await NBe(t),{stdout:x}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x);C.name?r.push([1,W.stringifyIdent(C.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await Ur.execvp(\"git\",[\"log\",`-${gDt}`,\"--pretty=format:%s\"],{cwd:t}),u=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],A=_G(u);return HG(A,r)}var mDt={[0]:[\" A \",\"?? \"],[4]:[\" M \"],[1]:[\" D \"]},yDt={[0]:[\"A  \"],[4]:[\"M  \"],[1]:[\"D  \"]},LBe={async findRoot(t){return await OG(t,{marker:\".git\"})},async filterChanges(t,e,r,o){let{stdout:a}=await Ur.execvp(\"git\",[\"status\",\"-s\"],{cwd:t,strict:!0}),n=a.toString().split(/\\n/g),u=o?.staged?yDt:mDt;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=V.resolve(t,p.slice(3));if(!o?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return UG(E).map(I=>({action:0,path:I}));{let v=[0,4,1].find(x=>u[x].includes(h));return v!==void 0?[{action:v,path:E}]:[]}})).filter(p=>MG(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await dDt(t,e)},async makeStage(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"add\",\"--\",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>ue.fromPortablePath(a.path));await Ur.execvp(\"git\",[\"add\",\"-N\",\"--\",...o],{cwd:t,strict:!0}),await Ur.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${hDt}\n`,\"--\",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:t,strict:!0})}};var EDt=[LBe],$0=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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),{driver:a,root:n}=await CDt(o.cwd),u=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(I=>I.populateYarnPaths,o,I=>{u.push(I)});let A=new Set;for(let I of u)for(let v of wDt(n,I))A.add(v);let p=new Set([r.get(\"rcFilename\"),dr.lockfile,dr.manifest]),h=await a.filterChanges(n,A,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let I of h)this.context.stdout.write(`${ue.fromPortablePath(I.path)}\n`);else if(this.reset){let I=await a.filterChanges(n,A,p,{staged:!0});I.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,I)}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))}};$0.paths=[[\"stage\"]],$0.usage=nt.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 function CDt(t){let e=null,r=null;for(let o of EDt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new it(\"No stage driver has been found for your current project\");return{driver:e,root:r}}function wDt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=oe.statSync(e)}catch{break}if(o.isSymbolicLink())e=V.resolve(V.dirname(e),oe.readlinkSync(e));else break}return r}var IDt={commands:[$0]},BDt=IDt;var jG={};Vt(jG,{default:()=>QDt});Ye();Ye();St();var UBe=$e(zn());Ye();var OBe=$e(zH()),vDt=\"e8e1bd300d860104bb8c58453ffa1eb4\",DDt=\"OFCNCOG2CU\",MBe=async(t,e)=>{let r=W.stringifyIdent(t),a=SDt(e).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},SDt=t=>(0,OBe.default)(DDt,vDt,{requester:{async send(r){try{let o=await nn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var _Be=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,PDt=async(t,e,r,o)=>{if(r.scope===\"types\")return;let{project:a}=t,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??oe.existsSync(V.join(a.cwd,\"tsconfig.json\"))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new Qi};if(!await MBe(r,n))return;let E=_Be(r),I=W.parseRange(r.range).selector;if(!kr.validRange(I)){let L=n.normalizeDependency(r),U=await A.getCandidates(L,{},p);I=W.parseRange(U[0].reference).selector}let v=UBe.default.coerce(I);if(v===null)return;let x=`${zc.Modifier.CARET}${v.major}`,C=W.makeDescriptor(W.makeIdent(\"types\",E),x),R=_e.mapAndFind(a.workspaces,L=>{let U=L.manifest.dependencies.get(r.identHash)?.descriptorHash,J=L.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&J!==r.descriptorHash)return _e.mapAndFind.skip;let te=[];for(let ae of Ot.allDependencies){let fe=L.manifest[ae].get(C.identHash);typeof fe>\"u\"||te.push([ae,fe])}return te.length===0?_e.mapAndFind.skip:te});if(typeof R<\"u\")for(let[L,U]of R)t.manifest[L].set(U.identHash,U);else{try{let L=n.normalizeDependency(C);if((await A.getCandidates(L,{},p)).length===0)return}catch{return}t.manifest[zc.Target.DEVELOPMENT].set(C.identHash,C)}},bDt=async(t,e,r)=>{if(r.scope===\"types\")return;let{project:o}=t,{configuration:a}=o;if(!(a.get(\"tsEnableAutoTypes\")??oe.existsSync(V.join(o.cwd,\"tsconfig.json\"))))return;let u=_Be(r),A=W.makeIdent(\"types\",u);for(let p of Ot.allDependencies)typeof t.manifest[p].get(A.identHash)>\"u\"||t.manifest[p].delete(A.identHash)},xDt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},kDt={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:PDt,afterWorkspaceDependencyRemoval:bDt,beforeWorkspacePacking:xDt}},QDt=kDt;var VG={};Vt(VG,{VersionApplyCommand:()=>eg,VersionCheckCommand:()=>tg,VersionCommand:()=>rg,default:()=>zDt,versionUtils:()=>dw});Ye();Ye();qt();var dw={};Vt(dw,{Decision:()=>hw,applyPrerelease:()=>WBe,applyReleases:()=>KG,applyStrategy:()=>lF,clearVersionFiles:()=>GG,getUndecidedDependentWorkspaces:()=>jv,getUndecidedWorkspaces:()=>aF,openVersionFile:()=>gw,requireMoreDecisions:()=>KDt,resolveVersionFiles:()=>qv,suggestStrategy:()=>WG,updateVersionFiles:()=>YG,validateReleaseDecision:()=>pw});Ye();St();Nl();qt();var YBe=$e(GBe()),vA=$e(zn()),WDt=/^(>=|[~^]|)(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-]+)*)?$/,hw=(u=>(u.UNDECIDED=\"undecided\",u.DECLINE=\"decline\",u.MAJOR=\"major\",u.MINOR=\"minor\",u.PATCH=\"patch\",u.PRERELEASE=\"prerelease\",u))(hw||{});function pw(t){let e=vA.default.valid(t);return e||_e.validateEnum((0,YBe.default)(hw,\"UNDECIDED\"),t)}async function qv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return r;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Ki(A);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let I=W.parseIdent(h),v=t.tryWorkspaceByIdent(I);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${V.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${W.prettyLocator(t.configuration,v.anchoredLocator)})`);let x=v.manifest.raw.stableVersion??v.manifest.version,C=r.get(v),R=lF(x,pw(E));if(R===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let L=typeof C<\"u\"?vA.default.gt(R,C)?R:C:R;r.set(v,L)}}return e&&(r=new Map([...r].map(([n,u])=>[n,WBe(u,{current:n.manifest.version,prerelease:e})]))),r}async function GG(t){let e=t.configuration.get(\"deferredVersionFolder\");!oe.existsSync(e)||await oe.removePromise(e)}async function YG(t,e){let r=new Set(e),o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Ki(A),h=p?.releases;if(!!h){for(let E of Object.keys(h)){let I=W.parseIdent(E),v=t.tryWorkspaceByIdent(I);(v===null||r.has(v))&&delete p.releases[E]}Object.keys(p.releases).length>0?await oe.changeFilePromise(u,Ba(new Ba.PreserveOrdering(p))):await oe.unlinkPromise(u)}}}async function gw(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let o=await ra.fetchRoot(r.projectCwd),a=o!==null?await ra.fetchBase(o,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=o!==null?await ra.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get(\"deferredVersionFolder\"),A=n.filter(x=>V.contains(u,x)!==null);if(A.length>1)throw new it(`Your current branch contains multiple versioning files; this isn't supported:\n- ${A.map(x=>ue.fromPortablePath(x)).join(`\n- `)}`);let p=new Set(_e.mapAndFilter(n,x=>{let C=t.tryWorkspaceByFilePath(x);return C===null?_e.mapAndFilter.skip:C}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:V.join(u,`${wn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=oe.existsSync(h)?await oe.readFilePromise(h,\"utf8\"):\"{}\",I=Ki(E),v=new Map;for(let x of I.declined||[]){let C=W.parseIdent(x),R=t.getWorkspaceByIdent(C);v.set(R,\"decline\")}for(let[x,C]of Object.entries(I.releases||{})){let R=W.parseIdent(x),L=t.getWorkspaceByIdent(R);v.set(L,pw(C))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:v,async saveAll(){let x={},C=[],R=[];for(let L of t.workspaces){if(L.manifest.version===null)continue;let U=W.stringifyIdent(L.anchoredLocator),J=v.get(L);J===\"decline\"?C.push(U):typeof J<\"u\"?x[U]=pw(J):p.has(L)&&R.push(U)}await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.changeFilePromise(h,Ba(new Ba.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:C.length>0?C:void 0,undecided:R.length>0?R:void 0})))}}}function KDt(t){return aF(t).size>0||jv(t).length>0}function aF(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 jv(t,{include:e=new Set}={}){let r=[],o=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u===\"decline\"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u!==\"decline\"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Ot.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function WG(t,e){let r=vA.default.clean(e);for(let o of Object.values(hw))if(o!==\"undecided\"&&o!==\"decline\"&&vA.default.inc(t,o)===r)return o;return null}function lF(t,e){if(vA.default.valid(e))return e;if(t===null)throw new it(`Cannot apply the release strategy \"${e}\" unless the workspace already has a valid version`);if(!vA.default.valid(t))throw new it(`Cannot apply the release strategy \"${e}\" on a non-semver version (${t})`);let r=vA.default.inc(t,e);if(r===null)throw new it(`Cannot apply the release strategy \"${e}\" on the specified version (${t})`);return r}function KG(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Ot.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;_e.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,vA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?W.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${W.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:ue.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>\"u\"))for(let[h,E,I]of p){let v=h.manifest[E].get(I);if(typeof v>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let x=v.range,C=!1;if(x.startsWith(Xn.protocol)&&(x=x.slice(Xn.protocol.length),C=!0,x===a.relativeCwd))continue;let R=x.match(WDt);if(!R){r.reportWarning(0,`Couldn't auto-upgrade range ${x} (in ${W.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let L=`${R[1]}${n}`;C&&(L=`${Xn.protocol}${L}`);let U=W.makeDescriptor(v,L);h.manifest[E].set(I,U)}}}var VDt=new Map([[\"%n\",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function WBe(t,{current:e,prerelease:r}){let o=new vA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\\./g);for(let p of A){let h=VDt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():u=!1;else{let E=u?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(\".\")}`}var eg=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.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\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await qv(o,{prerelease:p}),E=new Map;if(this.all)E=h;else{let I=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of I){let x=h.get(v);typeof x<\"u\"&&E.set(v,x)}}if(E.size===0){let I=h.size>0?\" Did you want to add --all?\":\"\";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${I}`);return}KG(o,E,{report:A}),this.dryRun||(p||(this.all?await GG(o):await YG(o,[...E.keys()])),A.reportSeparator())});return this.dryRun||u.hasErrors()?u.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};eg.paths=[[\"version\",\"apply\"]],eg.usage=nt.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.%d\\`) 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\"]]});Ye();St();qt();var cF=$e(zn());var tg=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){bC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(cQ(),Bq)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{FocusRequest:a}=await Promise.resolve().then(()=>(Dq(),Vwe)),{useListInput:n}=await Promise.resolve().then(()=>(AQ(),Jwe)),{renderForm:u}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useCallback:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,this.context.cwd);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState();let R=await gw(x);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new it(\"This command can only be run on Git repositories\");let L=()=>h.createElement(A,{flexDirection:\"row\",paddingBottom:1},h.createElement(A,{flexDirection:\"column\",width:60},h.createElement(A,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(A,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(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:me,active:he,decision:Be,setDecision:we})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${W.prettyLocator(v,me.anchoredLocator)})`);if(cF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Ee=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(Be,Ee,{active:he,minus:\"left\",plus:\"right\",set:we});let Se=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\"},cF.default.valid(Be)?Be:cF.default.inc(g,Be)));return h.createElement(A,{flexDirection:\"column\"},h.createElement(A,null,h.createElement(p,null,W.prettyLocator(v,me.anchoredLocator),\" - \",Se)),h.createElement(A,null,Ee.map(le=>h.createElement(A,{key:le,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:le===Be}),\" \",le)))))},J=me=>{let he=new Set(R.releaseRoots),Be=new Map([...me].filter(([we])=>he.has(we)));for(;;){let we=jv({project:R.project,releases:Be}),g=!1;if(we.length>0){for(let[Ee]of we)if(!he.has(Ee)){he.add(Ee),g=!0;let Se=me.get(Ee);typeof Se<\"u\"&&Be.set(Ee,Se)}}if(!g)break}return{relevantWorkspaces:he,relevantReleases:Be}},te=()=>{let[me,he]=I(()=>new Map(R.releases)),Be=E((we,g)=>{let Ee=new Map(me);g!==\"undecided\"?Ee.set(we,g):Ee.delete(we);let{relevantReleases:Se}=J(Ee);he(Se)},[me,he]);return[me,Be]},ae=({workspaces:me,releases:he})=>{let Be=[];Be.push(`${me.size} total`);let we=0,g=0;for(let Ee of me){let Se=he.get(Ee);typeof Se>\"u\"?g+=1:Se!==\"decline\"&&(we+=1)}return Be.push(`${we} release${we===1?\"\":\"s\"}`),Be.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},Be.join(\", \"))},ce=await u(({useSubmit:me})=>{let[he,Be]=te();me(he);let{relevantWorkspaces:we}=J(he),g=new Set([...we].filter(ne=>!R.releaseRoots.has(ne))),[Ee,Se]=I(0),le=E(ne=>{switch(ne){case a.BEFORE:Se(Ee-1);break;case a.AFTER:Se(Ee+1);break}},[Ee,Se]);return h.createElement(A,{flexDirection:\"column\"},h.createElement(L,null),h.createElement(A,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(A,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:\"grey\"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(ne)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{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(A,{marginTop:1},h.createElement(ae,{workspaces:R.releaseRoots,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===0,radius:1,size:2,onFocusRequest:le},[...R.releaseRoots].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||\"undecided\",setDecision:ee=>Be(ne,ee)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{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(A,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(A,{marginTop:1},h.createElement(ae,{workspaces:g,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===1,radius:2,size:2,onFocusRequest:le},[...g].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||\"undecided\",setDecision:ee=>Be(ne,ee)}))))):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,he]of ce)R.releases.set(me,he);await R.saveAll()}async executeStandard(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await gw(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new it(\"This command can only be run on Git repositories\");if(u.reportInfo(0,`Your PR was started right after ${de.pretty(r,A.baseHash.slice(0,7),\"yellow\")} ${de.pretty(r,A.baseTitle,\"magenta\")}`),A.changedFiles.size>0){u.reportInfo(0,\"You have changed the following files since then:\"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${de.pretty(r,ue.fromPortablePath(A.root),\"gray\")}${ue.sep}${ue.relative(ue.fromPortablePath(A.root),ue.fromPortablePath(v))}`)}let p=!1,h=!1,E=aF(A);if(E.size>0){p||u.reportSeparator();for(let v of E)u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let I=jv(A);for(let[v,x]of I)h||u.reportSeparator(),u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${W.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.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).\"),u.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};tg.paths=[[\"version\",\"check\"]],tg.usage=nt.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\"]]});Ye();qt();var uF=$e(zn());var rg=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=uF.default.valid(this.strategy),A=this.strategy===\"decline\",p;if(u)if(a.manifest.version!==null){let E=WG(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!A){if(E===null)throw new it(\"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\"||!uF.default.valid(E))throw new it(`Can't bump the version (${E}) if it's not valid semver`)}p=pw(this.strategy)}if(!n){let I=(await qv(o)).get(a);if(typeof I<\"u\"&&p!==\"decline\"){let v=lF(a.manifest.version,p);if(uF.default.lt(v,I))throw new it(`Can't bump the version to one that would be lower than the current deferred one (${I})`)}}let h=await gw(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};rg.paths=[[\"version\"]],rg.usage=nt.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\"]]});var JDt={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:[eg,tg,rg]},zDt=JDt;var JG={};Vt(JG,{WorkspacesFocusCommand:()=>ng,WorkspacesForeachCommand:()=>ap,default:()=>$Dt});Ye();Ye();qt();var ng=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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new rr(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(A=>o.getWorkspaceByIdent(W.parseIdent(A))));for(let A of u)for(let p of this.production?[\"dependencies\"]:Ot.hardDependencies)for(let h of A.manifest.getForScope(p).values()){let E=o.tryWorkspaceByDescriptor(h);E!==null&&u.add(E)}for(let A of o.workspaces)u.has(A)?this.production&&A.manifest.devDependencies.clear():(A.manifest.installConfig=A.manifest.installConfig||{},A.manifest.installConfig.selfReferences=!1,A.manifest.dependencies.clear(),A.manifest.devDependencies.clear(),A.manifest.peerDependencies.clear(),A.manifest.scripts.clear());return await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};ng.paths=[[\"workspaces\",\"focus\"]],ng.usage=nt.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    \"});Ye();Ye();Ye();qt();var mw=$e(Zo()),VBe=$e(id());Za();var ap=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:TT([Ks([\"unlimited\"]),aI(RT(),[LT(),NT(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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!this.all&&!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new it(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let A=we=>{!this.dryRun||this.context.stdout.write(`${we}\n`)},p=()=>{let we=this.from.map(g=>mw.default.matcher(g));return o.workspaces.filter(g=>{let Ee=W.stringifyIdent(g.anchoredLocator),Se=g.relativeCwd;return we.some(le=>le(Ee)||le(Se))})},h=[];if(this.since?(A(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await ra.fetchChangedWorkspaces({ref:this.since,project:o}))):this.from?(A(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(A(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(A(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(A(\"Option --all is set; selecting all workspaces\"),h=[...o.workspaces]),this.dryRun&&!this.all){for(let we of h)A(`\n- ${we.relativeCwd}\n  ${W.prettyLocator(r,we.anchoredLocator)}`);h.length>0&&A(\"\")}let E;if(this.recursive?this.since?(A(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependents()]).flat())):(A(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(A(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let we of E)A(`\n- ${we.relativeCwd}\n  ${W.prettyLocator(r,we.anchoredLocator)}`);let I=[],v=!1;if(u?.includes(\":\")){for(let we of o.workspaces)if(we.manifest.scripts.has(u)&&(v=!v,v===!1))break}for(let we of h){if(u&&!we.manifest.scripts.has(u)&&!v&&!(await un.getWorkspaceAccessibleBinaries(we)).has(u)){A(`Excluding ${we.relativeCwd} because it doesn't have a \"${u}\" script`);continue}if(!(u===r.env.npm_lifecycle_event&&we.cwd===a.cwd)){if(this.include.length>0&&!mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.include)&&!mw.default.isMatch(we.relativeCwd,this.include)){A(`Excluding ${we.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.exclude)||mw.default.isMatch(we.relativeCwd,this.exclude))){A(`Excluding ${we.relativeCwd} because it matches the --include filter`);continue}if(this.publicOnly&&we.manifest.private===!0){A(`Excluding ${we.relativeCwd} because it's a private workspace and --no-private was set`);continue}I.push(we)}}if(this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),C=x>0,R=x>1,L=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(Ji.availableParallelism()/2):1,U=L===1?!1:this.parallel,J=U?this.interlaced:!0,te=(0,VBe.default)(L),ae=new Map,fe=new Set,ce=0,me=null,he=!1,Be=await Nt.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async we=>{let g=async(Ee,{commandIndex:Se})=>{if(he)return-1;!U&&R&&Se>1&&we.reportSeparator();let le=XDt(Ee,{configuration:r,label:C,commandIndex:Se}),[ne,ee]=KBe(we,{prefix:le,interlaced:J}),[Ie,Fe]=KBe(we,{prefix:le,interlaced:J});try{R&&we.reportInfo(null,`${le?`${le} `:\"\"}Process started`);let At=Date.now(),H=await this.cli.run([this.commandName,...this.args],{cwd:Ee.cwd,stdout:ne,stderr:Ie})||0;ne.end(),Ie.end(),await ee,await Fe;let at=Date.now();if(R){let Re=r.get(\"enableTimers\")?`, completed in ${de.pretty(r,at-At,de.Type.DURATION)}`:\"\";we.reportInfo(null,`${le?`${le} `:\"\"}Process exited (exit code ${H})${Re}`)}return H===130&&(he=!0,me=H),H}catch(At){throw ne.end(),Ie.end(),await ee,await Fe,At}};for(let Ee of I)ae.set(Ee.anchoredLocator.locatorHash,Ee);for(;ae.size>0&&!we.hasErrors();){let Ee=[];for(let[ne,ee]of ae){if(fe.has(ee.anchoredDescriptor.descriptorHash))continue;let Ie=!0;if(this.topological||this.topologicalDev){let Fe=this.topologicalDev?new Map([...ee.manifest.dependencies,...ee.manifest.devDependencies]):ee.manifest.dependencies;for(let At of Fe.values()){let H=o.tryWorkspaceByDescriptor(At);if(Ie=H===null||!ae.has(H.anchoredLocator.locatorHash),!Ie)break}}if(!!Ie&&(fe.add(ee.anchoredDescriptor.descriptorHash),Ee.push(te(async()=>{let Fe=await g(ee,{commandIndex:++ce});return ae.delete(ne),fe.delete(ee.anchoredDescriptor.descriptorHash),Fe})),!U))break}if(Ee.length===0){let ne=Array.from(ae.values()).map(ee=>W.prettyLocator(r,ee.anchoredLocator)).join(\", \");we.reportError(3,`Dependency cycle detected (${ne})`);return}let le=(await Promise.all(Ee)).find(ne=>ne!==0);me===null&&(me=typeof le<\"u\"?1:me),(this.topological||this.topologicalDev)&&typeof le<\"u\"&&we.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()}};ap.paths=[[\"workspaces\",\"foreach\"]],ap.usage=nt.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.\\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 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\"]]}),ap.schema=[cI(\"all\",Gu.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),OT([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})];function KBe(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new _e.DefaultStream;a.pipe(o,{end:!1}),a.on(\"finish\",()=>{o.end()});let n=new Promise(A=>{o.on(\"finish\",()=>{A(a.active)})});if(r)return[a,n];let u=new _e.BufferStream;return u.pipe(a,{end:!1}),u.on(\"finish\",()=>{a.end()}),[u,n]}function XDt(t,{configuration:e,commandIndex:r,label:o}){if(!o)return null;let n=`[${W.stringifyIdent(t.anchoredLocator)}]:`,u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[r%u.length];return de.pretty(e,n,A)}var ZDt={commands:[ng,ap]},$Dt=ZDt;var pC=()=>({modules:new Map([[\"@yarnpkg/cli\",a2],[\"@yarnpkg/core\",o2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",rI],[\"@yarnpkg/shell\",T1],[\"clipanion\",hI],[\"semver\",eSt],[\"typanion\",Vo],[\"@yarnpkg/plugin-essentials\",$8],[\"@yarnpkg/plugin-compat\",iH],[\"@yarnpkg/plugin-constraints\",wH],[\"@yarnpkg/plugin-dlx\",IH],[\"@yarnpkg/plugin-exec\",DH],[\"@yarnpkg/plugin-file\",PH],[\"@yarnpkg/plugin-git\",Z8],[\"@yarnpkg/plugin-github\",kH],[\"@yarnpkg/plugin-http\",QH],[\"@yarnpkg/plugin-init\",FH],[\"@yarnpkg/plugin-interactive-tools\",Tq],[\"@yarnpkg/plugin-link\",Nq],[\"@yarnpkg/plugin-nm\",yj],[\"@yarnpkg/plugin-npm\",dG],[\"@yarnpkg/plugin-npm-cli\",DG],[\"@yarnpkg/plugin-pack\",AG],[\"@yarnpkg/plugin-patch\",FG],[\"@yarnpkg/plugin-pnp\",oj],[\"@yarnpkg/plugin-pnpm\",NG],[\"@yarnpkg/plugin-stage\",qG],[\"@yarnpkg/plugin-typescript\",jG],[\"@yarnpkg/plugin-version\",VG],[\"@yarnpkg/plugin-workspace-tools\",JG]]),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-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 XBe({cwd:t,pluginConfiguration:e}){let r=new as({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:rn??\"<unknown>\"});return Object.assign(r,{defaultContext:{...as.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function tSt(t){if(_e.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,o=\">=18.12.0\";if(kr.satisfiesWithPrereleases(r,o))return!0;let a=new it(`This tool requires a Node version compatible with ${o} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return as.defaultContext.stdout.write(t.error(a)),!1}async function ZBe({selfPath:t,pluginConfiguration:e}){return await Ke.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function rSt(t,e,{yarnPath:r}){if(!oe.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 o={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,JBe.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],o)}catch(a){return a.status??1}return 0}function nSt(t,e){let r=null,o=e;return e.length>=2&&e[0]===\"--cwd\"?(r=ue.toPortablePath(e[1]),o=e.slice(2)):e.length>=1&&e[0].startsWith(\"--cwd=\")?(r=ue.toPortablePath(e[0].slice(6)),o=e.slice(1)):e[0]===\"add\"&&e[e.length-2]===\"--cwd\"&&(r=ue.toPortablePath(e[e.length-1]),o=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?V.resolve(r):V.cwd(),o}function iSt(t,{configuration:e}){if(!e.get(\"enableTelemetry\")||zBe.isCI||!process.stdout.isTTY)return;Ke.telemetry=new uC(e,\"puba9cdc10ec5790a2cf4969dd413a47270\");let o=/^@yarnpkg\\/plugin-(.*)$/;for(let a of e.plugins.keys())AC.has(a.match(o)?.[1]??\"\")&&Ke.telemetry?.reportPluginName(a);t.binaryVersion&&Ke.telemetry.reportVersion(t.binaryVersion)}function $Be(t,{configuration:e}){for(let r of e.plugins.values())for(let o of r.commands||[])t.register(o)}async function sSt(t,e,{selfPath:r,pluginConfiguration:o}){if(!tSt(t))return 1;let a=await ZBe({selfPath:r,pluginConfiguration:o}),n=a.get(\"yarnPath\"),u=a.get(\"ignorePath\");if(n&&!u)return rSt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let A=nSt(t,e);iSt(t,{configuration:a}),$Be(t,{configuration:a});let p=t.process(A,t.defaultContext);return p.help||Ke.telemetry?.reportCommandName(p.path.join(\" \")),await t.run(p,t.defaultContext)}async function $pe({cwd:t=V.cwd(),pluginConfiguration:e=pC()}={}){let r=XBe({cwd:t,pluginConfiguration:e}),o=await ZBe({pluginConfiguration:e,selfPath:null});return $Be(r,{configuration:o}),r}async function nk(t,{cwd:e=V.cwd(),selfPath:r,pluginConfiguration:o}){let a=XBe({cwd:e,pluginConfiguration:o});try{process.exitCode=await sSt(a,t,{selfPath:r,pluginConfiguration:o})}catch(n){as.defaultContext.stdout.write(a.error(n)),process.exitCode=1}finally{await oe.rmtempPromise()}}nk(process.argv.slice(2),{cwd:V.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:pC()});})();\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\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/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-windows <https://github.com/jonschlinkert/is-windows>\n *\n * Copyright © 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/**\n  @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 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/**\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/** @license React v0.18.0\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/** @license React v0.24.0\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/** @license React v16.13.1\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"
  },
  {
    "path": ".yarnrc.yml",
    "content": "compressionLevel: mixed\n\nenableGlobalCache: false\n\nnodeLinker: node-modules\n# allow NPM_TOKEN env to be set, but provide '' as fallback. This allows CI to publish packages, but not require env var.\n# See https://yarnpkg.com/configuration/yarnrc\nnpmAuthToken: \"${NPM_TOKEN-}\"\n\nnpmPublishAccess: public\n\nyarnPath: .yarn/releases/yarn-4.1.1.cjs\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "# ![Reactotron Logo](./docs/plugins/images/readme/Reactotron-128.png)\n\n[Join our Community Slack](http://community.infinite.red/)\n\n## Introduction\n\nReactotron is a powerful debugger for React and React Native applications. It provides an easy-to-use interface for developers to monitor their application's **state, network requests, and performance metrics** and can be used for any size of project, from small personal apps to large-scale enterprise applications. The OG debugger at [Infinite Red](https://infinite.red) that we use on a day-to-day basis to build client apps. Additionally, Reactotron is completely open source and free to use, making it an invaluable tool for developers at all levels of experience.\n\nWe recommend that you watch [Darin Wilson's](https://github.com/darinwilson) talk at [Chain React](https://chainreactconf.com/): [Chain React 2018: Debugging and Beyond with Reactotron](https://www.youtube.com/watch?v=UiPo9A9k7xc)!\n\n## Reactotron Superpowers\n\nUse Reactotron to:\n\n- view your application state\n- show API requests & responses\n- perform quick performance benchmarks\n- subscribe to parts of your application state\n- display messages similar to `console.log`\n- track global errors with source-mapped stack traces including saga stack traces!\n- dispatch actions like a government-run mind control experiment\n- hot swap your app's state using Redux or mobx-state-tree\n- show image overlay in React Native\n- track your Async Storage in React Native\n\nYou plug it into your app as a dev dependency so it adds nothing to your production builds.\n\n### Desktop\n\nReactotron on the left, demo React Native app on the right.\n\n![Desktop](./docs/plugins/images/readme/reactotron-demo-app.gif)\n\n## Installation\n\nOn the [Releases](https://github.com/infinitered/reactotron/releases?q=reactotron-app&expanded=true) page, navigate to the latest `reactotron-app` release to find the newest version of:\n\n- macOS (x64 & arm64)\n- Linux (32-bit & 64-bit)\n- Windows (32-bit & 64-bit)\n\n## How to setup Reactotron in our app\n\n- [**React Native**](https://docs.infinite.red/reactotron/quick-start/react-native/)\n- [**React**](https://docs.infinite.red/reactotron/quick-start/react-js/)\n\n## How to use Reactotron's features/plugins\n\n- [**Track Global Errors**](https://docs.infinite.red/reactotron/plugins/track-global-errors/)\n- [**Track Global Logs**](https://docs.infinite.red/reactotron/plugins/track-global-logs/)\n- [**Networking**](https://docs.infinite.red/reactotron/plugins/networking/)\n- [**Async Storage**](https://docs.infinite.red/reactotron/plugins/async-storage/)\n- [**React Native MMKV**](https://docs.infinite.red/reactotron/plugins/react-native-mmkv/)\n- [**Benchmark**](https://docs.infinite.red/reactotron/plugins/benchmark/)\n- [**apisauce**](https://docs.infinite.red/reactotron/plugins/apisauce/)\n- [**Overlay**](https://docs.infinite.red/reactotron/plugins/overlay/)\n- [**MST**](https://docs.infinite.red/reactotron/plugins/mst/)\n- [**Redux**](https://docs.infinite.red/reactotron/plugins/redux/)\n- [**Open in Editor**](https://docs.infinite.red/reactotron/plugins/open-in-editor/)\n- [**Storybook (only for React Native)**](https://docs.infinite.red/reactotron/plugins/storybook/) \\\n   `reactotron-react-native` ships with [Storybook](https://storybook.js.org/).\n  This enables you to switch to Storybook from the Reactotron app.\n- [**Custom Commands**](https://docs.infinite.red/reactotron/custom-commands/)\n\n## Tips and Tricks\n\n[Some tips that will elevate your Reactotron experience.](https://docs.infinite.red/reactotron/tips/)\n\n## Bug Reports\n\nWhen reporting problems with Reactotron, use the provided example app located in `app/example-app` to replicate the issue. This approach enables us to isolate and expedite the resolution of the problem.\n\n## Want to contribute? Here are some helpful reading materials\n\n- [**Contributing**](https://docs.infinite.red/reactotron/contributing/)\n- [**Architecture**](https://docs.infinite.red/reactotron/contributing/architecture/)\n- [**Monorepo**](https://docs.infinite.red/reactotron/contributing/monorepo/)\n- [**Release**](https://docs.infinite.red/reactotron/contributing/releasing/)\n\n## Troubleshooting\n\n- [**React Native iOS**](https://docs.infinite.red/reactotron/troubleshooting/#react-native-ios)\n- [**React Native Android**](https://docs.infinite.red/reactotron/troubleshooting/#react-native-android)\n\n## Credits\n\nReactotron is developed by [Infinite Red](https://infinite.red), [@rmevans9](https://github.com/rmevans9), and 70+ amazing contributors! Special thanks to [@skellock](https://github.com/skellock) for originally creating Reactotron while at Infinite Red.\n\n## Premium Support\n\n[Reactotron](https://infinite.red/reactotron), as an open source project, is free to use and always will be. [Infinite Red](https://infinite.red/) offers premium React and [React Native](https://infinite.red/react-native) mobile app design/development services. Email us at [hello@infinite.red](mailto:hello@infinite.red) to get in touch for more details.\n"
  },
  {
    "path": "apps/example-app/.gitignore",
    "content": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\nios/.xcode.env.local\n\n# Android/IntelliJ\n#\nbuild/\n.idea\n.gradle\nlocal.properties\n*.iml\n*.hprof\n.cxx/\n\n# node.js\n#\nnode_modules/\nnpm-debug.log\nyarn-error.log\n\n# BUCK\nbuck-out/\n\\.buckd/\n*.keystore\n!debug.keystore\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/\n\n**/fastlane/report.xml\n**/fastlane/Preview.html\n**/fastlane/screenshots\n**/fastlane/test_output\n\n# Bundle artifact\n*.jsbundle\n\n# Ignite-specific items below\n# You can safely replace everything above this comment with whatever is\n# in the default .gitignore generated by React-Native CLI\n\n# VS Code\n.vscode\n\n# Expo\n.expo/*\nbin/Exponent.app\n/android\n/ios\n\n## Secrets\nnpm-debug.*\n*.jks\n*.p8\n*.p12\n*.key\n*.mobileprovision\n*.orig.*\nweb-build/\n\n# Configurations\n!env.js\n\n/coverage\n"
  },
  {
    "path": "apps/example-app/.prettierignore",
    "content": "node_modules\nios\nandroid\n.vscode\nignite/ignite.json\npackage.json\n"
  },
  {
    "path": "apps/example-app/App.tsx",
    "content": "import App from \"./app/app\"\nimport React from \"react\"\nimport * as SplashScreen from \"expo-splash-screen\"\n\nSplashScreen.preventAutoHideAsync()\n\nfunction IgniteApp() {\n  return <App hideSplashScreen={SplashScreen.hideAsync} />\n}\n\nexport default IgniteApp\n"
  },
  {
    "path": "apps/example-app/README.md",
    "content": "# Welcome to the Reactotron Example App\n\nThe sole purpose of this app is to aid in developing Reactotron. It contains an example configuration and code for exercising the functionality of Reactotron's packages.\n\nThe example app was generated with [Ignite](https://github.com/infinitered/ignite); the boilerplate that [Infinite Red](https://infinite.red) uses as a way to test bleeding-edge changes to our React Native stack.\n\n## Quick Start\n\n:::info\nBefore you start, run `yarn` in the root directory of the repo to make sure all of the dependencies have been installed successfully.\n:::\n\n1. From the parent directory, run `yarn build && yarn start` This will build the latest version of Reactotron and open it.\n2. From the parent directory, run `yarn start:example` or inside of example app directory `yarn start`. (Check the example app's `package.json` for additional options.)\n3. Select the host platform you'd like to build for.\n4. Once the build has completed, there should be a connection on the home screen of Reactotron from the example app.\n"
  },
  {
    "path": "apps/example-app/app/app.tsx",
    "content": "/* eslint-disable import/first */\n/**\n * Welcome to the main entry point of the app. In this file, we'll\n * be kicking off our app.\n *\n * Most of this file is boilerplate and you shouldn't need to modify\n * it very often. But take some time to look through and understand\n * what is going on here.\n *\n * The app navigation resides in app/app/navigators, so head over there\n * if you're interested in adding screens and navigators.\n */\nif (__DEV__) {\n  // Load Reactotron configuration in development. We don't want to\n  // include this in our production bundle, so we are using `if (__DEV__)`\n  // to only execute this in development.\n  require(\"./devtools/ReactotronConfig.ts\")\n}\nimport \"app/i18n\"\nimport \"app/utils/ignoreWarnings\"\nimport { useFonts } from \"expo-font\"\nimport React from \"react\"\nimport { initialWindowMetrics, SafeAreaProvider } from \"react-native-safe-area-context\"\nimport * as Linking from \"expo-linking\"\nimport { useInitialRootStore } from \"app/mobxStateTree\"\nimport { AppNavigator, useNavigationPersistence } from \"app/navigators\"\nimport { ErrorBoundary } from \"app/screens/ErrorScreen/ErrorBoundary\"\nimport * as storage from \"app/utils/storage\"\nimport { customFontsToLoad } from \"app/theme\"\nimport Config from \"app/config\"\nimport { GestureHandlerRootView } from \"react-native-gesture-handler\"\nimport { StatusBar, ViewStyle } from \"react-native\"\nimport { store } from \"app/redux\"\nimport { Provider as ReduxProvider } from \"react-redux\"\n\nexport const NAVIGATION_PERSISTENCE_KEY = \"NAVIGATION_STATE\"\n\nStatusBar.setBarStyle(\"light-content\")\n\n// Web linking configuration\nconst prefix = Linking.createURL(\"/\")\nconst config = {\n  screens: {\n    Login: {\n      path: \"\",\n    },\n    Welcome: \"welcome\",\n    Demo: {\n      screens: {\n        DemoShowroom: {\n          path: \"showroom/:queryIndex?/:itemIndex?\",\n        },\n        DemoDebug: \"debug\",\n        DemoPodcastList: \"podcast\",\n        DemoCommunity: \"community\",\n      },\n    },\n  },\n}\n\ninterface AppProps {\n  hideSplashScreen: () => Promise<boolean>\n}\n\n/**\n * This is the root component of our app.\n */\nfunction App(props: AppProps) {\n  const { hideSplashScreen } = props\n  const {\n    initialNavigationState,\n    onNavigationStateChange,\n    isRestored: isNavigationStateRestored,\n  } = useNavigationPersistence(storage, NAVIGATION_PERSISTENCE_KEY)\n\n  const [areFontsLoaded] = useFonts(customFontsToLoad)\n\n  const { rehydrated } = useInitialRootStore(() => {\n    // This runs after the root store has been initialized and rehydrated.\n\n    // If your initialization scripts run very fast, it's good to show the splash screen for just a bit longer to prevent flicker.\n    // Slightly delaying splash screen hiding for better UX; can be customized or removed as needed,\n    // Note: (vanilla Android) The splash-screen will not appear if you launch your app via the terminal or Android Studio. Kill the app and launch it normally by tapping on the launcher icon. https://stackoverflow.com/a/69831106\n    // Note: (vanilla iOS) You might notice the splash-screen logo change size. This happens in debug/development mode. Try building the app for release.\n    setTimeout(hideSplashScreen, 500)\n  })\n\n  // Before we show the app, we have to wait for our state to be ready.\n  // In the meantime, don't render anything. This will be the background\n  // color set in native by rootView's background color.\n  // In iOS: application:didFinishLaunchingWithOptions:\n  // In Android: https://stackoverflow.com/a/45838109/204044\n  // You can replace with your own loading component if you wish.\n  if (!rehydrated || !isNavigationStateRestored || !areFontsLoaded) return null\n\n  const linking = {\n    prefixes: [prefix],\n    config,\n  }\n\n  // otherwise, we're ready to render the app\n  return (\n    <ReduxProvider store={store}>\n      <SafeAreaProvider initialMetrics={initialWindowMetrics}>\n        <ErrorBoundary catchErrors={Config.catchErrors}>\n          <GestureHandlerRootView style={$container}>\n            <AppNavigator\n              linking={linking}\n              initialState={initialNavigationState}\n              onStateChange={onNavigationStateChange}\n            />\n          </GestureHandlerRootView>\n        </ErrorBoundary>\n      </SafeAreaProvider>\n    </ReduxProvider>\n  )\n}\n\n// eslint-disable-next-line reactotron/no-tron-in-production\nexport default __DEV__ ? console.tron.overlay(App) : App\n\nconst $container: ViewStyle = {\n  flex: 1,\n}\n"
  },
  {
    "path": "apps/example-app/app/components/Button.tsx",
    "content": "import React, { ComponentType } from \"react\"\nimport {\n  Pressable,\n  PressableProps,\n  PressableStateCallbackType,\n  StyleProp,\n  TextStyle,\n  ViewStyle,\n} from \"react-native\"\nimport { colors, spacing, typography } from \"app/theme\"\nimport { Text, TextProps } from \"./Text\"\n\ntype Presets = keyof typeof $viewPresets\n\nexport interface ButtonAccessoryProps {\n  style: StyleProp<any>\n  pressableState: PressableStateCallbackType\n  disabled?: boolean\n}\n\nexport interface ButtonProps extends PressableProps {\n  /**\n   * Text which is looked up via i18n.\n   */\n  tx?: TextProps[\"tx\"]\n  /**\n   * The text to display if not using `tx` or nested components.\n   */\n  text?: TextProps[\"text\"]\n  /**\n   * Optional options to pass to i18n. Useful for interpolation\n   * as well as explicitly setting locale or translation fallbacks.\n   */\n  txOptions?: TextProps[\"txOptions\"]\n  /**\n   * An optional style override useful for padding & margin.\n   */\n  style?: StyleProp<ViewStyle>\n  /**\n   * An optional style override for the \"pressed\" state.\n   */\n  pressedStyle?: StyleProp<ViewStyle>\n  /**\n   * An optional style override for the button text.\n   */\n  textStyle?: StyleProp<TextStyle>\n  /**\n   * An optional style override for the button text when in the \"pressed\" state.\n   */\n  pressedTextStyle?: StyleProp<TextStyle>\n  /**\n   * An optional style override for the button text when in the \"disabled\" state.\n   */\n  disabledTextStyle?: StyleProp<TextStyle>\n  /**\n   * One of the different types of button presets.\n   */\n  preset?: Presets\n  /**\n   * An optional component to render on the right side of the text.\n   * Example: `RightAccessory={(props) => <View {...props} />}`\n   */\n  RightAccessory?: ComponentType<ButtonAccessoryProps>\n  /**\n   * An optional component to render on the left side of the text.\n   * Example: `LeftAccessory={(props) => <View {...props} />}`\n   */\n  LeftAccessory?: ComponentType<ButtonAccessoryProps>\n  /**\n   * Children components.\n   */\n  children?: React.ReactNode\n  /**\n   * disabled prop, accessed directly for declarative styling reasons.\n   * https://reactnative.dev/docs/pressable#disabled\n   */\n  disabled?: boolean\n  /**\n   * An optional style override for the disabled state\n   */\n  disabledStyle?: StyleProp<ViewStyle>\n}\n\n/**\n * A component that allows users to take actions and make choices.\n * Wraps the Text component with a Pressable component.\n *\n * - [Documentation and Examples](https://github.com/infinitered/ignite/blob/master/docs/Components-Button.md)\n */\nexport function Button(props: ButtonProps) {\n  const {\n    tx,\n    text,\n    txOptions,\n    style: $viewStyleOverride,\n    pressedStyle: $pressedViewStyleOverride,\n    textStyle: $textStyleOverride,\n    pressedTextStyle: $pressedTextStyleOverride,\n    disabledTextStyle: $disabledTextStyleOverride,\n    children,\n    RightAccessory,\n    LeftAccessory,\n    disabled,\n    disabledStyle: $disabledViewStyleOverride,\n    ...rest\n  } = props\n\n  const preset: Presets = props.preset ?? \"default\"\n  function $viewStyle({ pressed }: PressableStateCallbackType) {\n    return [\n      $viewPresets[preset],\n      $viewStyleOverride,\n      !!pressed && [$pressedViewPresets[preset], $pressedViewStyleOverride],\n      !!disabled && $disabledViewStyleOverride,\n    ]\n  }\n  function $textStyle({ pressed }: PressableStateCallbackType) {\n    return [\n      $textPresets[preset],\n      $textStyleOverride,\n      !!pressed && [$pressedTextPresets[preset], $pressedTextStyleOverride],\n      !!disabled && $disabledTextStyleOverride,\n    ]\n  }\n\n  return (\n    <Pressable\n      style={$viewStyle}\n      accessibilityRole=\"button\"\n      accessibilityState={{ disabled: !!disabled }}\n      {...rest}\n      disabled={disabled}\n    >\n      {(state) => (\n        <>\n          {!!LeftAccessory && (\n            <LeftAccessory style={$leftAccessoryStyle} pressableState={state} disabled={disabled} />\n          )}\n\n          <Text tx={tx} text={text} txOptions={txOptions} style={$textStyle(state)}>\n            {children}\n          </Text>\n\n          {!!RightAccessory && (\n            <RightAccessory\n              style={$rightAccessoryStyle}\n              pressableState={state}\n              disabled={disabled}\n            />\n          )}\n        </>\n      )}\n    </Pressable>\n  )\n}\n\nconst $baseViewStyle: ViewStyle = {\n  minHeight: 56,\n  borderRadius: 4,\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  flexDirection: \"row\",\n  paddingVertical: spacing.sm,\n  paddingHorizontal: spacing.sm,\n  overflow: \"hidden\",\n}\n\nconst $baseTextStyle: TextStyle = {\n  fontSize: 16,\n  lineHeight: 20,\n  fontFamily: typography.primary.medium,\n  textAlign: \"center\",\n  flexShrink: 1,\n  flexGrow: 0,\n  zIndex: 2,\n}\n\nconst $rightAccessoryStyle: ViewStyle = { marginStart: spacing.xs, zIndex: 1 }\nconst $leftAccessoryStyle: ViewStyle = { marginEnd: spacing.xs, zIndex: 1 }\n\nconst $viewPresets = {\n  default: [\n    $baseViewStyle,\n    {\n      borderWidth: 1,\n      borderColor: colors.palette.neutral400,\n      backgroundColor: colors.palette.neutral100,\n    },\n  ] as StyleProp<ViewStyle>,\n\n  filled: [$baseViewStyle, { backgroundColor: colors.palette.neutral300 }] as StyleProp<ViewStyle>,\n\n  reversed: [\n    $baseViewStyle,\n    { backgroundColor: colors.palette.neutral800 },\n  ] as StyleProp<ViewStyle>,\n}\n\nconst $textPresets: Record<Presets, StyleProp<TextStyle>> = {\n  default: $baseTextStyle,\n  filled: $baseTextStyle,\n  reversed: [$baseTextStyle, { color: colors.palette.neutral100 }],\n}\n\nconst $pressedViewPresets: Record<Presets, StyleProp<ViewStyle>> = {\n  default: { backgroundColor: colors.palette.neutral200 },\n  filled: { backgroundColor: colors.palette.neutral400 },\n  reversed: { backgroundColor: colors.palette.neutral700 },\n}\n\nconst $pressedTextPresets: Record<Presets, StyleProp<TextStyle>> = {\n  default: { opacity: 0.9 },\n  filled: { opacity: 0.9 },\n  reversed: { opacity: 0.9 },\n}\n"
  },
  {
    "path": "apps/example-app/app/components/Icon.tsx",
    "content": "import * as React from \"react\"\nimport { ComponentType } from \"react\"\nimport {\n  Image,\n  ImageStyle,\n  StyleProp,\n  TouchableOpacity,\n  TouchableOpacityProps,\n  View,\n  ViewProps,\n  ViewStyle,\n} from \"react-native\"\n\nexport type IconTypes = keyof typeof iconRegistry\n\ninterface IconProps extends TouchableOpacityProps {\n  /**\n   * The name of the icon\n   */\n  icon: IconTypes\n\n  /**\n   * An optional tint color for the icon\n   */\n  color?: string\n\n  /**\n   * An optional size for the icon. If not provided, the icon will be sized to the icon's resolution.\n   */\n  size?: number\n\n  /**\n   * Style overrides for the icon image\n   */\n  style?: StyleProp<ImageStyle>\n\n  /**\n   * Style overrides for the icon container\n   */\n  containerStyle?: StyleProp<ViewStyle>\n\n  /**\n   * An optional function to be called when the icon is pressed\n   */\n  onPress?: TouchableOpacityProps[\"onPress\"]\n}\n\n/**\n * A component to render a registered icon.\n * It is wrapped in a <TouchableOpacity /> if `onPress` is provided, otherwise a <View />.\n *\n * - [Documentation and Examples](https://github.com/infinitered/ignite/blob/master/docs/Components-Icon.md)\n */\nexport function Icon(props: IconProps) {\n  const {\n    icon,\n    color,\n    size,\n    style: $imageStyleOverride,\n    containerStyle: $containerStyleOverride,\n    ...WrapperProps\n  } = props\n\n  const isPressable = !!WrapperProps.onPress\n  const Wrapper = (WrapperProps?.onPress ? TouchableOpacity : View) as ComponentType<\n    TouchableOpacityProps | ViewProps\n  >\n\n  const $imageStyle: StyleProp<ImageStyle> = [\n    $imageStyleBase,\n    color !== undefined && { tintColor: color },\n    size !== undefined && { width: size, height: size },\n    $imageStyleOverride,\n  ]\n\n  return (\n    <Wrapper\n      accessibilityRole={isPressable ? \"imagebutton\" : undefined}\n      {...WrapperProps}\n      style={$containerStyleOverride}\n    >\n      <Image style={$imageStyle} source={iconRegistry[icon]} />\n    </Wrapper>\n  )\n}\n\nexport const iconRegistry = {\n  caretRight: require(\"../../assets/icons/caretRight.png\"),\n  ladybug: require(\"../../assets/icons/ladybug.png\"),\n}\n\nconst $imageStyleBase: ImageStyle = {\n  resizeMode: \"contain\",\n}\n"
  },
  {
    "path": "apps/example-app/app/components/ListItem.tsx",
    "content": "import React, { ReactElement } from \"react\"\nimport {\n  StyleProp,\n  TextStyle,\n  TouchableOpacity,\n  TouchableOpacityProps,\n  View,\n  ViewStyle,\n} from \"react-native\"\nimport { colors, spacing } from \"app/theme\"\nimport { Icon, IconTypes } from \"./Icon\"\nimport { Text, TextProps } from \"./Text\"\n\nexport interface ListItemProps extends TouchableOpacityProps {\n  /**\n   * How tall the list item should be.\n   * Default: 56\n   */\n  height?: number\n  /**\n   * Whether to show the top separator.\n   * Default: false\n   */\n  topSeparator?: boolean\n  /**\n   * Whether to show the bottom separator.\n   * Default: false\n   */\n  bottomSeparator?: boolean\n  /**\n   * Text to display if not using `tx` or nested components.\n   */\n  text?: TextProps[\"text\"]\n  /**\n   * Text which is looked up via i18n.\n   */\n  tx?: TextProps[\"tx\"]\n  /**\n   * Children components.\n   */\n  children?: TextProps[\"children\"]\n  /**\n   * Optional options to pass to i18n. Useful for interpolation\n   * as well as explicitly setting locale or translation fallbacks.\n   */\n  txOptions?: TextProps[\"txOptions\"]\n  /**\n   * Optional text style override.\n   */\n  textStyle?: StyleProp<TextStyle>\n  /**\n   * Pass any additional props directly to the Text component.\n   */\n  TextProps?: TextProps\n  /**\n   * Optional View container style override.\n   */\n  containerStyle?: StyleProp<ViewStyle>\n  /**\n   * Optional TouchableOpacity style override.\n   */\n  style?: StyleProp<ViewStyle>\n  /**\n   * Icon that should appear on the left.\n   */\n  leftIcon?: IconTypes\n  /**\n   * An optional tint color for the left icon\n   */\n  leftIconColor?: string\n  /**\n   * Icon that should appear on the right.\n   */\n  rightIcon?: IconTypes\n  /**\n   * An optional tint color for the right icon\n   */\n  rightIconColor?: string\n  /**\n   * Right action custom ReactElement.\n   * Overrides `rightIcon`.\n   */\n  RightComponent?: ReactElement\n  /**\n   * Left action custom ReactElement.\n   * Overrides `leftIcon`.\n   */\n  LeftComponent?: ReactElement\n}\n\ninterface ListItemActionProps {\n  icon?: IconTypes\n  iconColor?: string\n  Component?: ReactElement\n  size: number\n  side: \"left\" | \"right\"\n}\n\n/**\n * A styled row component that can be used in FlatList, SectionList, or by itself.\n *\n * - [Documentation and Examples](https://github.com/infinitered/ignite/blob/master/docs/Components-ListItem.md)\n */\nexport function ListItem(props: ListItemProps) {\n  const {\n    bottomSeparator,\n    children,\n    height = 56,\n    LeftComponent,\n    leftIcon,\n    leftIconColor,\n    RightComponent,\n    rightIcon,\n    rightIconColor,\n    style,\n    text,\n    TextProps,\n    topSeparator,\n    tx,\n    txOptions,\n    textStyle: $textStyleOverride,\n    containerStyle: $containerStyleOverride,\n    ...TouchableOpacityProps\n  } = props\n\n  const $textStyles = [$textStyle, $textStyleOverride, TextProps?.style]\n\n  const $containerStyles = [\n    topSeparator && $separatorTop,\n    bottomSeparator && $separatorBottom,\n    $containerStyleOverride,\n  ]\n\n  const $touchableStyles = [$touchableStyle, { minHeight: height }, style]\n\n  return (\n    <View style={$containerStyles}>\n      <TouchableOpacity {...TouchableOpacityProps} style={$touchableStyles}>\n        <ListItemAction\n          side=\"left\"\n          size={height}\n          icon={leftIcon}\n          iconColor={leftIconColor}\n          Component={LeftComponent}\n        />\n\n        <Text {...TextProps} tx={tx} text={text} txOptions={txOptions} style={$textStyles}>\n          {children}\n        </Text>\n\n        <ListItemAction\n          side=\"right\"\n          size={height}\n          icon={rightIcon}\n          iconColor={rightIconColor}\n          Component={RightComponent}\n        />\n      </TouchableOpacity>\n    </View>\n  )\n}\n\nfunction ListItemAction(props: ListItemActionProps) {\n  const { icon, Component, iconColor, size, side } = props\n\n  const $iconContainerStyles = [$iconContainer]\n\n  if (Component) return Component\n\n  if (icon !== undefined) {\n    return (\n      <Icon\n        size={24}\n        icon={icon}\n        color={iconColor}\n        containerStyle={[\n          $iconContainerStyles,\n          side === \"left\" && $iconContainerLeft,\n          side === \"right\" && $iconContainerRight,\n          { height: size },\n        ]}\n      />\n    )\n  }\n\n  return null\n}\n\nconst $separatorTop: ViewStyle = {\n  borderTopWidth: 1,\n  borderTopColor: colors.separator,\n}\n\nconst $separatorBottom: ViewStyle = {\n  borderBottomWidth: 1,\n  borderBottomColor: colors.separator,\n}\n\nconst $textStyle: TextStyle = {\n  paddingVertical: spacing.xs,\n  alignSelf: \"center\",\n  flexGrow: 1,\n  flexShrink: 1,\n}\n\nconst $touchableStyle: ViewStyle = {\n  flexDirection: \"row\",\n  alignItems: \"flex-start\",\n}\n\nconst $iconContainer: ViewStyle = {\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  flexGrow: 0,\n}\nconst $iconContainerLeft: ViewStyle = {\n  marginEnd: spacing.md,\n}\n\nconst $iconContainerRight: ViewStyle = {\n  marginStart: spacing.md,\n}\n"
  },
  {
    "path": "apps/example-app/app/components/ListView.tsx",
    "content": "import React, { forwardRef, PropsWithoutRef } from \"react\"\nimport { FlatList } from \"react-native\"\nimport { isRTL } from \"app/i18n\"\nimport { FlashList, FlashListProps } from \"@shopify/flash-list\"\n\nexport type ListViewRef<T> = FlashList<T> | FlatList<T>\n\nexport type ListViewProps<T> = PropsWithoutRef<FlashListProps<T>>\n\n/**\n * This is a Higher Order Component meant to ease the pain of using @shopify/flash-list\n * when there is a chance that a user would have their device language set to an\n * RTL language like Arabic or Punjabi. This component will use react-native's\n * FlatList if the user's language is RTL or FlashList if the user's language is LTR.\n *\n * Because FlashList's props are a superset of FlatList's, you must pass estimatedItemSize\n * to this component if you want to use it.\n *\n * This is a temporary workaround until the FlashList component supports RTL at\n * which point this component can be removed and we will default to using FlashList everywhere.\n *\n * @see {@link https://github.com/Shopify/flash-list/issues/544|RTL Bug Android}\n * @see {@link https://github.com/Shopify/flash-list/issues/840|Flashlist Not Support RTL}\n *\n * @param props - FlashListProps | FlatListProps\n * @param forwardRef - React.Ref<ListProps<T>>\n * @returns JSX.Element\n */\n\nconst ListViewComponent = forwardRef(\n  <T,>(props: ListViewProps<T>, ref: React.ForwardedRef<ListViewRef<T>>) => {\n    const ListComponentWrapper = isRTL ? FlatList : FlashList\n\n    return <ListComponentWrapper {...props} ref={ref} />\n  },\n)\n\nListViewComponent.displayName = \"ListView\"\n\nexport const ListView = ListViewComponent as <T>(\n  props: ListViewProps<T> & {\n    ref?: React.RefObject<ListViewRef<T>>\n  },\n) => React.ReactElement\n"
  },
  {
    "path": "apps/example-app/app/components/Repo.tsx",
    "content": "import React, { Component } from \"react\"\nimport {\n  Animated,\n  Easing,\n  TouchableWithoutFeedback,\n  View,\n  Text,\n  Image,\n  ViewStyle,\n  ImageStyle,\n  TextStyle,\n  ImageSourcePropType,\n} from \"react-native\"\nimport { Button } from \"./Button\"\nimport { mergeRight } from \"ramda\"\nimport { colors } from \"app/theme\"\n\ninterface RepoProps {\n  repo?: string\n  name?: string\n  avatar?: string\n  message?: string\n  bigger?: () => void\n  smaller?: () => void\n  faster?: () => void\n  slower?: () => void\n  reset?: () => void\n  size: number\n  speed: number\n}\n\nconst ROTATION = { inputRange: [0, 1], outputRange: [\"0deg\", \"360deg\"] }\n\nclass Repo extends Component<RepoProps> {\n  animation: Animated.CompositeAnimation | null = null\n  state = {\n    spinny: new Animated.Value(0),\n  }\n\n  UNSAFE_componentWillReceiveProps(newProps: RepoProps) {\n    if (newProps.avatar && newProps.speed) {\n      // stop the current running animation\n      if (this.animation) {\n        this.animation.stop()\n        this.animation = null\n      }\n      setTimeout(this.animate, 10)\n    }\n\n    if (newProps.avatar === undefined) {\n      if (this.animation) {\n        this.animation.stop()\n        this.animation = null\n      }\n    }\n  }\n\n  animate = () => {\n    const duration = 100 * (this.props.speed || 1)\n    const easing = Easing.linear\n    this.state.spinny.setValue(0)\n    this.animation = Animated.sequence([\n      Animated.timing(this.state.spinny, { toValue: 1, duration, easing, useNativeDriver: false }),\n    ])\n    this.animation.start(({ finished }) => {\n      if (finished) {\n        this.animate()\n      } else {\n        this.animation = null\n      }\n    })\n  }\n\n  getAnimationStyle = () => {\n    return {\n      transform: [{ rotate: this.state.spinny.interpolate(ROTATION) }],\n    }\n  }\n\n  render() {\n    const { repo, name, avatar, message, size } = this.props\n    const avatarSource = avatar !== undefined ? { uri: avatar } : false\n\n    const avatarStyles: ImageStyle = mergeRight($avatar, {\n      width: size,\n      height: size,\n      borderRadius: size ? size * 0.5 : undefined,\n    })\n\n    const centerStyles = mergeRight($center, this.getAnimationStyle())\n\n    return (\n      <View style={$container}>\n        <Text style={$repo}>{repo || \" \"}</Text>\n        <View style={$middle}>\n          <View style={$left}>\n            <Button\n              style={$button}\n              textStyle={$darkText}\n              disabledTextStyle={$disabledText}\n              tx=\"imageActions.bigger\"\n              onPress={this.props.bigger}\n              disabled={this.props.size >= 140}\n            />\n            <Button\n              style={$button}\n              textStyle={$darkText}\n              disabledTextStyle={$disabledText}\n              tx=\"imageActions.smaller\"\n              onPress={this.props.smaller}\n              disabled={this.props.size <= 40}\n            />\n          </View>\n          <Animated.View style={centerStyles}>\n            <TouchableWithoutFeedback onPress={this.props.reset}>\n              {avatarSource ? (\n                <Image style={avatarStyles} source={avatarSource as ImageSourcePropType} />\n              ) : (\n                <View style={avatarStyles} />\n              )}\n            </TouchableWithoutFeedback>\n          </Animated.View>\n          <View style={$right}>\n            <Button\n              style={$button}\n              textStyle={$darkText}\n              disabledTextStyle={$disabledText}\n              tx=\"imageActions.faster\"\n              onPress={this.props.faster}\n              disabled={this.props.speed <= 10}\n            />\n            <Button\n              style={$button}\n              textStyle={$darkText}\n              disabledTextStyle={$disabledText}\n              tx=\"imageActions.slower\"\n              onPress={this.props.slower}\n              disabled={this.props.speed >= 50}\n            />\n          </View>\n        </View>\n        <Text style={$name}>{name || \" \"}</Text>\n        <Text style={$message}>{message}</Text>\n        {this.props.reset && (\n          <Button\n            style={$button}\n            textStyle={$darkText}\n            disabledTextStyle={$disabledText}\n            tx=\"imageActions.reset\"\n            onPress={this.props.reset}\n          />\n        )}\n      </View>\n    )\n  }\n}\n\nconst $avatar: ImageStyle = {\n  borderColor: colors.white,\n  borderRadius: 40,\n  borderWidth: 4,\n  height: 80,\n  marginVertical: 15,\n  width: 80,\n}\nconst $center: ViewStyle = {\n  alignItems: \"center\",\n  justifyContent: \"center\",\n}\nconst $container: ViewStyle = {\n  alignItems: \"center\",\n}\nconst $left: ViewStyle = {\n  alignItems: \"flex-end\",\n  justifyContent: \"flex-end\",\n  paddingRight: 10,\n}\nconst $message: TextStyle = {\n  color: colors.repoText,\n  fontSize: 12,\n  height: 100,\n  marginTop: 20,\n  overflow: \"hidden\",\n  paddingHorizontal: 50,\n}\nconst $middle: ViewStyle = {\n  alignItems: \"center\",\n  flexDirection: \"row\",\n}\nconst $name: TextStyle = {\n  color: colors.text,\n}\nconst $repo: TextStyle = {\n  color: colors.text,\n  fontWeight: \"bold\",\n}\nconst $right: ViewStyle = {\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  paddingLeft: 10,\n}\n\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\nconst $disabledText: TextStyle = {\n  color: colors.palette.neutral400,\n}\nconst $button: ViewStyle = {\n  minWidth: 100,\n}\n\nexport { Repo }\n"
  },
  {
    "path": "apps/example-app/app/components/Screen.tsx",
    "content": "import { useScrollToTop } from \"@react-navigation/native\"\nimport { StatusBar, StatusBarProps } from \"expo-status-bar\"\nimport React, { useRef, useState } from \"react\"\nimport {\n  KeyboardAvoidingView,\n  KeyboardAvoidingViewProps,\n  LayoutChangeEvent,\n  Platform,\n  ScrollView,\n  ScrollViewProps,\n  StyleProp,\n  View,\n  ViewStyle,\n} from \"react-native\"\nimport { colors } from \"app/theme\"\nimport { ExtendedEdge, useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface BaseScreenProps {\n  /**\n   * Children components.\n   */\n  children?: React.ReactNode\n  /**\n   * Style for the outer content container useful for padding & margin.\n   */\n  style?: StyleProp<ViewStyle>\n  /**\n   * Style for the inner content container useful for padding & margin.\n   */\n  contentContainerStyle?: StyleProp<ViewStyle>\n  /**\n   * Override the default edges for the safe area.\n   */\n  safeAreaEdges?: ExtendedEdge[]\n  /**\n   * Background color\n   */\n  backgroundColor?: string\n  /**\n   * Status bar setting. Defaults to dark.\n   */\n  statusBarStyle?: \"light\" | \"dark\"\n  /**\n   * By how much should we offset the keyboard? Defaults to 0.\n   */\n  keyboardOffset?: number\n  /**\n   * Pass any additional props directly to the StatusBar component.\n   */\n  StatusBarProps?: StatusBarProps\n  /**\n   * Pass any additional props directly to the KeyboardAvoidingView component.\n   */\n  KeyboardAvoidingViewProps?: KeyboardAvoidingViewProps\n}\n\ninterface FixedScreenProps extends BaseScreenProps {\n  preset?: \"fixed\"\n}\ninterface ScrollScreenProps extends BaseScreenProps {\n  preset?: \"scroll\"\n  /**\n   * Should keyboard persist on screen tap. Defaults to handled.\n   * Only applies to scroll preset.\n   */\n  keyboardShouldPersistTaps?: \"handled\" | \"always\" | \"never\"\n  /**\n   * Pass any additional props directly to the ScrollView component.\n   */\n  ScrollViewProps?: ScrollViewProps\n}\n\ninterface AutoScreenProps extends Omit<ScrollScreenProps, \"preset\"> {\n  preset?: \"auto\"\n  /**\n   * Threshold to trigger the automatic disabling/enabling of scroll ability.\n   * Defaults to `{ percent: 0.92 }`.\n   */\n  scrollEnabledToggleThreshold?: { percent?: number; point?: number }\n}\n\nexport type ScreenProps = ScrollScreenProps | FixedScreenProps | AutoScreenProps\n\nconst isIos = Platform.OS === \"ios\"\n\nfunction isNonScrolling(preset?: ScreenProps[\"preset\"]) {\n  return !preset || preset === \"fixed\"\n}\n\nfunction useAutoPreset(props: AutoScreenProps) {\n  const { preset, scrollEnabledToggleThreshold } = props\n  const { percent = 0.92, point = 0 } = scrollEnabledToggleThreshold || {}\n\n  const scrollViewHeight = useRef<null | number>(null)\n  const scrollViewContentHeight = useRef<null | number>(null)\n  const [scrollEnabled, setScrollEnabled] = useState(true)\n\n  function updateScrollState() {\n    if (scrollViewHeight.current === null || scrollViewContentHeight.current === null) return\n\n    // check whether content fits the screen then toggle scroll state according to it\n    const contentFitsScreen = (function () {\n      if (point) {\n        return scrollViewContentHeight.current < scrollViewHeight.current - point\n      } else {\n        return scrollViewContentHeight.current < scrollViewHeight.current * percent\n      }\n    })()\n\n    // content is less than the size of the screen, so we can disable scrolling\n    if (scrollEnabled && contentFitsScreen) setScrollEnabled(false)\n\n    // content is greater than the size of the screen, so let's enable scrolling\n    if (!scrollEnabled && !contentFitsScreen) setScrollEnabled(true)\n  }\n\n  function onContentSizeChange(w: number, h: number) {\n    // update scroll-view content height\n    scrollViewContentHeight.current = h\n    updateScrollState()\n  }\n\n  function onLayout(e: LayoutChangeEvent) {\n    const { height } = e.nativeEvent.layout\n    // update scroll-view  height\n    scrollViewHeight.current = height\n    updateScrollState()\n  }\n\n  // update scroll state on every render\n  if (preset === \"auto\") updateScrollState()\n\n  return {\n    scrollEnabled: preset === \"auto\" ? scrollEnabled : true,\n    onContentSizeChange,\n    onLayout,\n  }\n}\n\nfunction ScreenWithoutScrolling(props: ScreenProps) {\n  const { style, contentContainerStyle, children } = props\n  return (\n    <View style={[$outerStyle, style]}>\n      <View style={[$innerStyle, contentContainerStyle]}>{children}</View>\n    </View>\n  )\n}\n\nfunction ScreenWithScrolling(props: ScreenProps) {\n  const {\n    children,\n    keyboardShouldPersistTaps = \"handled\",\n    contentContainerStyle,\n    ScrollViewProps,\n    style,\n  } = props as ScrollScreenProps\n\n  const ref = useRef<ScrollView>(null)\n\n  const { scrollEnabled, onContentSizeChange, onLayout } = useAutoPreset(props as AutoScreenProps)\n\n  // Add native behavior of pressing the active tab to scroll to the top of the content\n  // More info at: https://reactnavigation.org/docs/use-scroll-to-top/\n  useScrollToTop(ref)\n\n  return (\n    <ScrollView\n      {...{ keyboardShouldPersistTaps, scrollEnabled, ref }}\n      {...ScrollViewProps}\n      onLayout={(e) => {\n        onLayout(e)\n        ScrollViewProps?.onLayout?.(e)\n      }}\n      onContentSizeChange={(w: number, h: number) => {\n        onContentSizeChange(w, h)\n        ScrollViewProps?.onContentSizeChange?.(w, h)\n      }}\n      style={[$outerStyle, ScrollViewProps?.style, style]}\n      contentContainerStyle={[\n        $innerStyle,\n        ScrollViewProps?.contentContainerStyle,\n        contentContainerStyle,\n      ]}\n    >\n      {children}\n    </ScrollView>\n  )\n}\n\nexport function Screen(props: ScreenProps) {\n  const {\n    backgroundColor = colors.background,\n    KeyboardAvoidingViewProps,\n    keyboardOffset = 0,\n    safeAreaEdges,\n    StatusBarProps,\n    statusBarStyle = \"dark\",\n  } = props\n\n  const $containerInsets = useSafeAreaInsetsStyle(safeAreaEdges)\n\n  return (\n    <View style={[$containerStyle, { backgroundColor }, $containerInsets]}>\n      <StatusBar style={statusBarStyle} {...StatusBarProps} />\n\n      <KeyboardAvoidingView\n        behavior={isIos ? \"padding\" : \"height\"}\n        keyboardVerticalOffset={keyboardOffset}\n        {...KeyboardAvoidingViewProps}\n        style={[$keyboardAvoidingViewStyle, KeyboardAvoidingViewProps?.style]}\n      >\n        {isNonScrolling(props.preset) ? (\n          <ScreenWithoutScrolling {...props} />\n        ) : (\n          <ScreenWithScrolling {...props} />\n        )}\n      </KeyboardAvoidingView>\n    </View>\n  )\n}\n\nconst $containerStyle: ViewStyle = {\n  flex: 1,\n  height: \"100%\",\n  width: \"100%\",\n}\n\nconst $keyboardAvoidingViewStyle: ViewStyle = {\n  flex: 1,\n}\n\nconst $outerStyle: ViewStyle = {\n  flex: 1,\n  height: \"100%\",\n  width: \"100%\",\n}\n\nconst $innerStyle: ViewStyle = {\n  justifyContent: \"flex-start\",\n  alignItems: \"stretch\",\n}\n"
  },
  {
    "path": "apps/example-app/app/components/Text.tsx",
    "content": "import i18n from \"i18n-js\"\nimport React from \"react\"\nimport { StyleProp, Text as RNText, TextProps as RNTextProps, TextStyle } from \"react-native\"\nimport { isRTL, translate, TxKeyPath } from \"app/i18n\"\nimport { colors, typography } from \"app/theme\"\n\ntype Sizes = keyof typeof $sizeStyles\ntype Weights = keyof typeof typography.primary\ntype Presets = keyof typeof $presets\n\nexport interface TextProps extends RNTextProps {\n  /**\n   * Text which is looked up via i18n.\n   */\n  tx?: TxKeyPath\n  /**\n   * The text to display if not using `tx` or nested components.\n   */\n  text?: string\n  /**\n   * Optional options to pass to i18n. Useful for interpolation\n   * as well as explicitly setting locale or translation fallbacks.\n   */\n  txOptions?: i18n.TranslateOptions\n  /**\n   * An optional style override useful for padding & margin.\n   */\n  style?: StyleProp<TextStyle>\n  /**\n   * One of the different types of text presets.\n   */\n  preset?: Presets\n  /**\n   * Text weight modifier.\n   */\n  weight?: Weights\n  /**\n   * Text size modifier.\n   */\n  size?: Sizes\n  /**\n   * Children components.\n   */\n  children?: React.ReactNode\n}\n\n/**\n * For your text displaying needs.\n * This component is a HOC over the built-in React Native one.\n *\n * - [Documentation and Examples](https://github.com/infinitered/ignite/blob/master/docs/Components-Text.md)\n */\nexport function Text(props: TextProps) {\n  const { weight, size, tx, txOptions, text, children, style: $styleOverride, ...rest } = props\n\n  const i18nText = tx && translate(tx, txOptions)\n  const content = i18nText || text || children\n\n  const preset: Presets = props.preset ?? \"default\"\n  const $styles: StyleProp<TextStyle> = [\n    $rtlStyle,\n    $presets[preset],\n    weight && $fontWeightStyles[weight],\n    size && $sizeStyles[size],\n    $styleOverride,\n  ]\n\n  return (\n    <RNText {...rest} style={$styles}>\n      {content}\n    </RNText>\n  )\n}\n\nconst $sizeStyles = {\n  xxl: { fontSize: 36, lineHeight: 44 } satisfies TextStyle,\n  xl: { fontSize: 24, lineHeight: 34 } satisfies TextStyle,\n  lg: { fontSize: 20, lineHeight: 32 } satisfies TextStyle,\n  md: { fontSize: 18, lineHeight: 26 } satisfies TextStyle,\n  sm: { fontSize: 16, lineHeight: 24 } satisfies TextStyle,\n  xs: { fontSize: 14, lineHeight: 21 } satisfies TextStyle,\n  xxs: { fontSize: 12, lineHeight: 18 } satisfies TextStyle,\n}\n\nconst $fontWeightStyles = Object.entries(typography.primary).reduce((acc, [weight, fontFamily]) => {\n  return { ...acc, [weight]: { fontFamily } }\n}, {}) as Record<Weights, TextStyle>\n\nconst $baseStyle: StyleProp<TextStyle> = [\n  $sizeStyles.sm,\n  $fontWeightStyles.normal,\n  { color: colors.text },\n]\n\nconst $presets = {\n  default: $baseStyle,\n\n  bold: [$baseStyle, $fontWeightStyles.bold] as StyleProp<TextStyle>,\n\n  heading: [$baseStyle, $sizeStyles.xxl, $fontWeightStyles.bold] as StyleProp<TextStyle>,\n\n  subheading: [$baseStyle, $sizeStyles.lg, $fontWeightStyles.medium] as StyleProp<TextStyle>,\n\n  formLabel: [$baseStyle, $fontWeightStyles.medium] as StyleProp<TextStyle>,\n\n  formHelper: [$baseStyle, $sizeStyles.sm, $fontWeightStyles.normal] as StyleProp<TextStyle>,\n}\n\nconst $rtlStyle: TextStyle = isRTL ? { writingDirection: \"rtl\" } : {}\n"
  },
  {
    "path": "apps/example-app/app/components/index.ts",
    "content": "export * from \"./Button\"\nexport * from \"./Icon\"\nexport * from \"./ListItem\"\nexport * from \"./ListView\"\nexport * from \"./Screen\"\nexport * from \"./Text\"\n"
  },
  {
    "path": "apps/example-app/app/config/config.base.ts",
    "content": "export interface ConfigBaseProps {\n  persistNavigation: \"always\" | \"dev\" | \"prod\" | \"never\"\n  catchErrors: \"always\" | \"dev\" | \"prod\" | \"never\"\n  exitRoutes: string[]\n}\n\nexport type PersistNavigationConfig = ConfigBaseProps[\"persistNavigation\"]\n\nconst BaseConfig: ConfigBaseProps = {\n  // This feature is particularly useful in development mode, but\n  // can be used in production as well if you prefer.\n  persistNavigation: \"dev\",\n\n  /**\n   * Only enable if we're catching errors in the right environment\n   */\n  catchErrors: \"always\",\n\n  /**\n   * This is a list of all the route names that will exit the app if the back button\n   * is pressed while in that screen. Only affects Android.\n   */\n  exitRoutes: [\"Welcome\"],\n}\n\nexport default BaseConfig\n"
  },
  {
    "path": "apps/example-app/app/config/config.dev.ts",
    "content": "/**\n * These are configuration settings for the dev environment.\n *\n * Do not include API secrets in this file or anywhere in your JS.\n *\n * https://reactnative.dev/docs/security#storing-sensitive-info\n */\nexport default {\n  API_URL: \"https://api.rss2json.com/v1/\",\n}\n"
  },
  {
    "path": "apps/example-app/app/config/config.prod.ts",
    "content": "/**\n * These are configuration settings for the production environment.\n *\n * Do not include API secrets in this file or anywhere in your JS.\n *\n * https://reactnative.dev/docs/security#storing-sensitive-info\n */\nexport default {\n  API_URL: \"CHANGEME\",\n}\n"
  },
  {
    "path": "apps/example-app/app/config/index.ts",
    "content": "/**\n * This file imports configuration objects from either the config.dev.js file\n * or the config.prod.js file depending on whether we are in __DEV__ or not.\n *\n * Note that we do not gitignore these files. Unlike on web servers, just because\n * these are not checked into your repo doesn't mean that they are secure.\n * In fact, you're shipping a JavaScript bundle with every\n * config variable in plain text. Anyone who downloads your app can easily\n * extract them.\n *\n * If you doubt this, just bundle your app, and then go look at the bundle and\n * search it for one of your config variable values. You'll find it there.\n *\n * Read more here: https://reactnative.dev/docs/security#storing-sensitive-info\n */\nimport BaseConfig from \"./config.base\"\nimport ProdConfig from \"./config.prod\"\nimport DevConfig from \"./config.dev\"\n\nlet ExtraConfig = ProdConfig\n\nif (__DEV__) {\n  ExtraConfig = DevConfig\n}\n\nconst Config = { ...BaseConfig, ...ExtraConfig }\n\nexport default Config\n"
  },
  {
    "path": "apps/example-app/app/devtools/ReactotronClient.ts",
    "content": "/**\n * This file is loaded in React Native and exports the RN version\n * of Reactotron's client.\n *\n * Web is loaded from ReactotronClient.web.ts.\n */\nimport Reactotron from \"reactotron-react-native\"\nexport { Reactotron }\n"
  },
  {
    "path": "apps/example-app/app/devtools/ReactotronClient.web.ts",
    "content": "/**\n * This file is loaded in web and exports the React.js version\n * of Reactotron's client.\n *\n * React Native is loaded from ReactotronClient.ts.\n *\n * If your project does not need web support, you can delete this file and\n * remove reactotron-react-js from your package.json dependencies.\n */\nimport Reactotron from \"reactotron-react-js\"\nexport { Reactotron }\n"
  },
  {
    "path": "apps/example-app/app/devtools/ReactotronConfig.ts",
    "content": "/**\n * This file does the setup for integration with Reactotron, which is a\n * free desktop app for inspecting and debugging your React Native app.\n * @see https://github.com/infinitered/reactotron\n */\nimport { Platform, TurboModuleRegistry } from \"react-native\"\n\nimport AsyncStorage from \"@react-native-async-storage/async-storage\"\nimport { ArgType } from \"reactotron-core-client\"\nimport { mst } from \"reactotron-mst\"\nimport apisaucePlugin from \"reactotron-apisauce\"\nimport { reactotronRedux } from \"reactotron-redux\"\n\nimport { clear } from \"app/utils/storage\"\nimport { goBack, resetRoot, navigate } from \"app/navigators/navigationUtilities\"\n\nimport { Reactotron } from \"./ReactotronClient\"\n\nconst reactotron = Reactotron.configure({\n  name: require(\"../../package.json\").name,\n  onConnect: () => {\n    /** since this file gets hot reloaded, let's clear the past logs every time we connect */\n    Reactotron.clear()\n  },\n})\n  .use(apisaucePlugin({ ignoreContentTypes: /^(image)\\/.*$/i }))\n  .use(reactotronRedux())\n  .use(\n    mst({\n      /** ignore some chatty `mobx-state-tree` actions  */\n      filter: (event) => /postProcessSnapshot|@APPLY_SNAPSHOT/.test(event.name) === false,\n    })\n  )\n\nif (Platform.OS !== \"web\") {\n  reactotron.setAsyncStorageHandler?.(AsyncStorage)\n  reactotron.useReactNative({\n    networking: {\n      ignoreUrls: /(logs|symbolicate)$/,\n    },\n    overlay: true,\n  })\n}\n\n/**\n * Reactotron allows you to define custom commands that you can run\n * from Reactotron itself, and they will run in your app.\n *\n * Define them in the section below with `onCustomCommand`. Use your\n * creativity -- this is great for development to quickly and easily\n * get your app into the state you want.\n *\n * NOTE: If you edit this file while running the app, you will need to do a full refresh\n * or else your custom commands won't be registered correctly.\n */\n\n/**\n * This Platform.OS iOS restriction can be lifted in React Native 0.77\n * The `DevMenu` module was missing in Android for the New Architecture\n * See this PR for more details: https://github.com/facebook/react-native/pull/46723\n */\nif (Platform.OS === \"ios\") {\n  reactotron.onCustomCommand({\n    title: \"Show Dev Menu\",\n    description: \"Opens the React Native dev menu\",\n    command: \"showDevMenu\",\n    handler: () => {\n      Reactotron.log(\"Showing React Native dev menu\")\n      TurboModuleRegistry.get<{ show: () => void; getConstants: () => {} }>(\"DevMenu\")?.show()\n    },\n  })\n}\n\nreactotron.onCustomCommand({\n  title: \"Reset Root Store\",\n  description: \"Resets the MST store\",\n  command: \"resetStore\",\n  handler: () => {\n    Reactotron.log(\"resetting store\")\n    clear()\n  },\n})\n\nreactotron.onCustomCommand({\n  title: \"Reset Navigation State\",\n  description: \"Resets the navigation state\",\n  command: \"resetNavigation\",\n  handler: () => {\n    Reactotron.log(\"resetting navigation state\")\n    resetRoot({ index: 0, routes: [] })\n  },\n})\n\nreactotron.onCustomCommand<[{ name: \"route\"; type: ArgType.String }]>({\n  command: \"navigateTo\",\n  handler: (args) => {\n    const { route } = args ?? {}\n    if (route) {\n      Reactotron.log(`Navigating to: ${route}`)\n      navigate(route as any) // this should be tied to the navigator, but since this is for debugging, we can navigate to illegal routes\n    } else {\n      Reactotron.log(\"Could not navigate. No route provided.\")\n    }\n  },\n  title: \"Navigate To Screen\",\n  description: \"Navigates to a screen by name.\",\n  args: [{ name: \"route\", type: ArgType.String }],\n})\n\nreactotron.onCustomCommand({\n  title: \"Go Back\",\n  description: \"Goes back\",\n  command: \"goBack\",\n  handler: () => {\n    Reactotron.log(\"Going back\")\n    goBack()\n  },\n})\n\n/**\n * We're going to add `console.tron` to the Reactotron object.\n * Now, anywhere in our app in development, we can use Reactotron like so:\n *\n * ```\n * if (__DEV__) {\n *  console.tron.display({\n *    name: 'JOKE',\n *    preview: 'What's the best thing about Switzerland?',\n *    value: 'I don't know, but the flag is a big plus!',\n *    important: true\n *  })\n * }\n * ```\n *\n * Use this power responsibly! :)\n */\nconsole.tron = reactotron\n\n/**\n * We tell typescript about our dark magic\n *\n * You can also import Reactotron yourself from ./reactotronClient\n * and use it directly, like Reactotron.log('hello world')\n */\ndeclare global {\n  interface Console {\n    /**\n     * Reactotron client for logging, displaying, measuring performance, and more.\n     * @see https://github.com/infinitered/reactotron\n     *\n     * @example\n     * if (__DEV__) {\n     *  console.tron.display({\n     *    name: 'JOKE',\n     *    preview: 'What's the best thing about Switzerland?',\n     *    value: 'I don't know, but the flag is a big plus!',\n     *    important: true\n     *  })\n     * }\n     *\n     */\n    tron: typeof reactotron\n  }\n}\n\n/**\n * Now that we've setup all our Reactotron configuration, let's connect!\n */\nreactotron.connect()\n\nexport default reactotron\n"
  },
  {
    "path": "apps/example-app/app/i18n/en.ts",
    "content": "const en = {\n  welcomeScreen: {\n    title: \"Reactotron\",\n    subtitle: \"Kitchen Sink Demo App\",\n    message:\n      \"This demo app showcases what Reactotron can do... from networking to logging to plugins and more.\",\n  },\n  errorScreen: {\n    title: \"Something went wrong!\",\n    friendlySubtitle:\n      \"This is the screen that your users will see in production when an error is thrown. You'll want to customize this message (located in `app/i18n/en.ts`) and probably the layout as well (`app/screens/ErrorScreen`). If you want to remove this entirely, check `app/app.tsx` for the <ErrorBoundary> component.\",\n    reset: \"RESET APP\",\n  },\n  asyncStorageScreen: {\n    title: \"Reactotron will tell you when AsyncStorage values change!\",\n    set: \"Async Storage SET\",\n    remove: \"Async Storage REMOVE\",\n    clear: \"Async Storage CLEAR\",\n  },\n  benchmarkingScreen: {\n    title: \"Did you know Reactotron can benchmark your code? Check it out!\",\n    slow: \"Slow Benchmarks\",\n    fast: \"Fast Benchmarks\",\n  },\n  customCommandsScreen: {\n    title:\n      \"You can create lots of custom commands to make your app do things! It's like having react-native super powers!\",\n  },\n  errorGeneratorScreen: {\n    title: \"Reactotron can log all different kinds of errors!\",\n    componentError: \"Component Error\",\n    tryCatchError: \"Try/Catch Error\",\n    reduxError: \"Redux Error (sync)\",\n    reduxAsyncError: \"Redux Error (async)\",\n  },\n  loggingsScreen: {\n    title: \"Reactotron works with regular console.log statements! You can log, debug, and warn.\",\n    subtitle:\n      \"Reactotron has special commands that invoke even more power to display logs the way you want.\",\n  },\n  mobxStateTreeScreen: {\n    title: \"MobX State Tree works great with Reactotron!\",\n  },\n  networkingScreen: {\n    title: \"Reactotron automatically intercepts and logs network requests!\",\n    makeApiCall: \"Make an API Call\",\n    makeFailingApiCall: \"Make a failing API Call\",\n  },\n\n  repos: {\n    reactotron: \"Reactotron\",\n    reactNative: \"React Native\",\n    redux: \"Redux\",\n    mobx: \"MobX\",\n  },\n  imageActions: {\n    bigger: \"Bigger\",\n    smaller: \"Smaller\",\n    faster: \"Faster\",\n    slower: \"Slower\",\n    reset: \"Reset\",\n  },\n}\n\nexport default en\nexport type Translations = typeof en\n"
  },
  {
    "path": "apps/example-app/app/i18n/i18n.ts",
    "content": "import * as Localization from \"expo-localization\"\nimport i18n from \"i18n-js\"\nimport { I18nManager } from \"react-native\"\n\n// if English isn't your default language, move Translations to the appropriate language file.\nimport en, { Translations } from \"./en\"\n\ni18n.fallbacks = true\n/**\n * we need always include \"*-US\" for some valid language codes because when you change the system language,\n * the language code is the suffixed with \"-US\". i.e. if a device is set to English (\"en\"),\n * if you change to another language and then return to English language code is now \"en-US\".\n */\ni18n.translations = { en, \"en-US\": en }\n\nconst locales = Localization.getLocales() // This method is guaranteed to return at least one array item.\n// The preferred language is the first element in the array, however, we fallback to en-US, especially for tests.\nconst preferredLanguage:\n  | Localization.Locale\n  | { languageTag: string; textDirection: \"ltr\" | \"rtl\" } = locales[0] || {\n  languageTag: \"en-US\",\n  textDirection: \"ltr\",\n}\ni18n.locale = preferredLanguage.languageTag\n\n// handle RTL languages\nexport const isRTL = preferredLanguage.textDirection === \"rtl\"\nI18nManager.allowRTL(isRTL)\nI18nManager.forceRTL(isRTL)\n\n/**\n * Builds up valid keypaths for translations.\n */\nexport type TxKeyPath = RecursiveKeyOf<Translations>\n\n// via: https://stackoverflow.com/a/65333050\ntype RecursiveKeyOf<TObj extends object> = {\n  [TKey in keyof TObj & (string | number)]: RecursiveKeyOfHandleValue<TObj[TKey], `${TKey}`>\n}[keyof TObj & (string | number)]\n\ntype RecursiveKeyOfInner<TObj extends object> = {\n  [TKey in keyof TObj & (string | number)]: RecursiveKeyOfHandleValue<\n    TObj[TKey],\n    `['${TKey}']` | `.${TKey}`\n  >\n}[keyof TObj & (string | number)]\n\ntype RecursiveKeyOfHandleValue<TValue, Text extends string> = TValue extends any[]\n  ? Text\n  : TValue extends object\n  ? Text | `${Text}${RecursiveKeyOfInner<TValue>}`\n  : Text\n"
  },
  {
    "path": "apps/example-app/app/i18n/index.ts",
    "content": "import \"./i18n\"\nexport * from \"./i18n\"\nexport * from \"./translate\"\n"
  },
  {
    "path": "apps/example-app/app/i18n/translate.ts",
    "content": "import i18n from \"i18n-js\"\nimport { TxKeyPath } from \"./i18n\"\n\n/**\n * Translates text.\n *\n * @param key The i18n key.\n * @param options The i18n options.\n * @returns The translated text.\n *\n * @example\n * Translations:\n *\n * ```en.ts\n * {\n *  \"hello\": \"Hello, {{name}}!\"\n * }\n * ```\n *\n * Usage:\n * ```ts\n * import { translate } from \"i18n-js\"\n *\n * translate(\"common.ok\", { name: \"world\" })\n * // => \"Hello world!\"\n * ```\n */\nexport function translate(key: TxKeyPath, options?: i18n.TranslateOptions) {\n  return i18n.t(key, options)\n}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/LogoStore.ts",
    "content": "import { Instance, SnapshotOut, types } from \"mobx-state-tree\"\n\nexport const LogoStoreModel = types\n  .model(\"LogoStore\")\n  .props({\n    size: types.optional(types.number, 80),\n    speed: types.optional(types.number, 25),\n  })\n  .actions((store) => ({\n    faster: () => {\n      store.speed = 10\n    },\n    slower: () => {\n      store.speed = 50\n    },\n    bigger: () => {\n      store.size = 140\n    },\n    smaller: () => {\n      store.size = 40\n    },\n    reset: () => {\n      store.size = 80\n      store.speed = 25\n    },\n  }))\n\nexport interface LogoStore extends Instance<typeof LogoStoreModel> {}\nexport interface LogoStoreSnapshot extends SnapshotOut<typeof LogoStoreModel> {}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/RepoStore.ts",
    "content": "import { Instance, SnapshotOut, flow, types } from \"mobx-state-tree\"\n\nexport const RepoStoreModel = types\n  .model(\"RepoStore\")\n  .props({\n    message: types.maybe(types.string),\n    repoName: types.maybe(types.string),\n    url: types.maybe(types.string),\n    name: types.maybe(types.string),\n    sha: types.maybe(types.string),\n    avatar: types.maybe(types.string),\n\n    fetching: types.optional(types.boolean, false),\n    error: types.maybe(types.string),\n  })\n  .actions((store) => ({\n    reset: () => {\n      store.message = undefined\n      store.repoName = undefined\n      store.url = undefined\n      store.name = undefined\n      store.sha = undefined\n      store.avatar = undefined\n      store.fetching = false\n      store.error = undefined\n    },\n  }))\n  .actions((store) => {\n    const fetchRepo = flow(function* (repo: string) {\n      // <- note the star, this is a generator function!\n      store.fetching = true\n      try {\n        const json = yield fetchRepoAsync(repo)\n\n        const lastCommit = json[0]\n        console.log(\"Last commit: \", lastCommit)\n        const { commit, author, committer, html_url: url } = lastCommit\n        const { message, tree } = commit\n        const { sha } = tree\n        const { login, avatar_url: avatar } = author || committer\n\n        store.repoName = repo\n        store.message = message\n        store.url = url\n        store.name = login\n        store.sha = sha\n        store.avatar = avatar\n        store.fetching = false\n      } catch (error) {\n        // ... including try/catch error handling\n        console.error(\"Failed to fetch projects\", error)\n        store.fetching = false\n        store.error = error.message\n      }\n      return true\n    })\n    return {\n      fetchRepo,\n    }\n  })\n\nconst fetchRepoAsync = async (repo: string) => {\n  const response = await fetch(`https://api.github.com/repos/${repo}/commits`)\n  const json = await response.json()\n  return json\n}\n\nexport interface RepoStore extends Instance<typeof RepoStoreModel> {}\nexport interface RepoStoreSnapshot extends SnapshotOut<typeof RepoStoreModel> {}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/RootStore.ts",
    "content": "import { Instance, SnapshotOut, types } from \"mobx-state-tree\"\nimport { LogoStoreModel } from \"./LogoStore\"\nimport { RepoStoreModel } from \"./RepoStore\"\n\n/**\n * A RootStore model.\n */\nexport const RootStoreModel = types.model(\"RootStore\").props({\n  repo: types.optional(RepoStoreModel, {}),\n  logo: types.optional(LogoStoreModel, {}),\n})\n\n/**\n * The RootStore instance.\n */\nexport interface RootStore extends Instance<typeof RootStoreModel> {}\n/**\n * The data of a RootStore.\n */\nexport interface RootStoreSnapshot extends SnapshotOut<typeof RootStoreModel> {}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/helpers/getRootStore.ts",
    "content": "import { getRoot, IStateTreeNode } from \"mobx-state-tree\"\nimport { RootStore, RootStoreModel } from \"../RootStore\"\n\n/**\n * Returns a RootStore object in strongly typed way\n * for stores to access other stores.\n */\nexport const getRootStore = (self: IStateTreeNode): RootStore => {\n  return getRoot<typeof RootStoreModel>(self)\n}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/helpers/setupRootStore.ts",
    "content": "/**\n * This file is where we do \"rehydration\" of your RootStore from AsyncStorage.\n * This lets you persist your state between app launches.\n *\n * Navigation state persistence is handled in navigationUtilities.tsx.\n *\n * Note that Fast Refresh doesn't play well with this file, so if you edit this,\n * do a full refresh of your app instead.\n *\n * @refresh reset\n */\nimport { applySnapshot, IDisposer, onSnapshot } from \"mobx-state-tree\"\nimport { RootStore, RootStoreSnapshot } from \"../RootStore\"\nimport * as storage from \"../../utils/storage\"\n\n/**\n * The key we'll be saving our state as within async storage.\n */\nconst ROOT_STATE_STORAGE_KEY = \"root-v1\"\n\n/**\n * Setup the root state.\n */\nlet _disposer: IDisposer | undefined\nexport async function setupRootStore(rootStore: RootStore) {\n  let restoredState: RootStoreSnapshot | undefined | null\n\n  try {\n    // load the last known state from AsyncStorage\n    restoredState = ((await storage.load(ROOT_STATE_STORAGE_KEY)) ?? {}) as RootStoreSnapshot\n    applySnapshot(rootStore, restoredState)\n  } catch (e) {\n    // if there's any problems loading, then inform the dev what happened\n    if (__DEV__) {\n      if (e instanceof Error) console.error(e.message)\n    }\n  }\n\n  // stop tracking state changes if we've already setup\n  if (_disposer) _disposer()\n\n  // track changes & save to AsyncStorage\n  _disposer = onSnapshot(rootStore, (snapshot) => storage.save(ROOT_STATE_STORAGE_KEY, snapshot))\n\n  const unsubscribe = () => {\n    _disposer?.()\n    _disposer = undefined\n  }\n\n  return { rootStore, restoredState, unsubscribe }\n}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/helpers/useStores.ts",
    "content": "import { createContext, useContext, useEffect, useState } from \"react\"\nimport { RootStore, RootStoreModel } from \"../RootStore\"\nimport { setupRootStore } from \"./setupRootStore\"\n/**\n * Create the initial (empty) global RootStore instance here.\n *\n * Later, it will be rehydrated in app.tsx with the setupRootStore function.\n *\n * If your RootStore requires specific properties to be instantiated,\n * you can do so here.\n *\n * If your RootStore has a _ton_ of sub-stores and properties (the tree is\n * very large), you may want to use a different strategy than immediately\n * instantiating it, although that should be rare.\n */\nconst _rootStore = RootStoreModel.create({})\n\n/**\n * The RootStoreContext provides a way to access\n * the RootStore in any screen or component.\n */\nconst RootStoreContext = createContext<RootStore>(_rootStore)\n\n/**\n * You can use this Provider to specify a *different* RootStore\n * than the singleton version above if you need to. Generally speaking,\n * this Provider & custom RootStore instances would only be used in\n * testing scenarios.\n */\nexport const RootStoreProvider = RootStoreContext.Provider\n\n/**\n * A hook that screens and other components can use to gain access to\n * our stores:\n *\n * const rootStore = useStores()\n *\n * or:\n *\n * const { someStore, someOtherStore } = useStores()\n */\nexport const useStores = () => useContext(RootStoreContext)\n\n/**\n * Used only in the app.tsx file, this hook sets up the RootStore\n * and then rehydrates it. It connects everything with Reactotron\n * and then lets the app know that everything is ready to go.\n */\nexport const useInitialRootStore = (callback: () => void | Promise<void>) => {\n  const rootStore = useStores()\n  const [rehydrated, setRehydrated] = useState(false)\n\n  // Kick off initial async loading actions, like loading fonts and rehydrating RootStore\n  useEffect(() => {\n    let _unsubscribe: () => void | undefined\n    ;(async () => {\n      // set up the RootStore (returns the state restored from AsyncStorage)\n      const { unsubscribe } = await setupRootStore(rootStore)\n      _unsubscribe = unsubscribe\n\n      // reactotron integration with the MST root store (DEV only)\n      if (__DEV__) {\n        console.tron.trackMstNode(rootStore)\n      }\n\n      // let the app know we've finished rehydrating\n      setRehydrated(true)\n\n      // invoke the callback, if provided\n      if (callback) callback()\n    })()\n\n    return () => {\n      // cleanup\n      if (_unsubscribe !== undefined) _unsubscribe()\n    }\n  }, [])\n\n  return { rootStore, rehydrated }\n}\n"
  },
  {
    "path": "apps/example-app/app/mobxStateTree/index.ts",
    "content": "export * from \"./RootStore\"\nexport * from \"./helpers/getRootStore\"\nexport * from \"./helpers/useStores\"\nexport * from \"./helpers/setupRootStore\"\n"
  },
  {
    "path": "apps/example-app/app/navigators/AppNavigator.tsx",
    "content": "/**\n * The app navigator (formerly \"AppNavigator\" and \"MainNavigator\") is used for the primary\n * navigation flows of your app.\n * Generally speaking, it will contain an auth flow (registration, login, forgot password)\n * and a \"main\" flow which the user will use once logged in.\n */\nimport { DarkTheme, DefaultTheme, NavigationContainer } from \"@react-navigation/native\"\nimport { createNativeStackNavigator, NativeStackScreenProps } from \"@react-navigation/native-stack\"\nimport React from \"react\"\nimport { useColorScheme, StyleSheet } from \"react-native\"\nimport * as Screens from \"app/screens\"\nimport Config from \"../config\"\nimport { navigationRef, useBackButtonHandler } from \"./navigationUtilities\"\nimport { colors } from \"app/theme\"\nimport { LinearGradient } from \"expo-linear-gradient\"\n\n/**\n * This type allows TypeScript to know what routes are defined in this navigator\n * as well as what properties (if any) they might take when navigating to them.\n *\n * If no params are allowed, pass through `undefined`. Generally speaking, we\n * recommend using your MobX-State-Tree store(s) to keep application state\n * rather than passing state through navigation params.\n *\n * For more information, see this documentation:\n *   https://reactnavigation.org/docs/params/\n *   https://reactnavigation.org/docs/typescript#type-checking-the-navigator\n *   https://reactnavigation.org/docs/typescript/#organizing-types\n */\nexport type AppStackParamList = {\n  Welcome: undefined\n  Logging: undefined\n  Networking: undefined\n  ErrorGenerator: undefined\n  Benchmarking: undefined\n  CustomCommands: undefined\n  MobxStateTree: undefined\n  AsyncStorage: undefined\n  Redux: undefined\n}\n\n/**\n * This is a list of all the route names that will exit the app if the back button\n * is pressed while in that screen. Only affects Android.\n */\nconst exitRoutes = Config.exitRoutes\n\nexport type AppStackScreenProps<T extends keyof AppStackParamList> = NativeStackScreenProps<\n  AppStackParamList,\n  T\n>\n\n// Documentation: https://reactnavigation.org/docs/stack-navigator/\nconst Stack = createNativeStackNavigator<AppStackParamList>()\n\nconst AppStack = function AppStack() {\n  return (\n    <Stack.Navigator\n      screenOptions={{ headerShown: false, navigationBarColor: colors.background }}\n      initialRouteName=\"Welcome\"\n    >\n      <Stack.Screen name=\"Welcome\" component={Screens.WelcomeScreen} />\n      <Stack.Group\n        screenOptions={{\n          headerShown: true,\n          headerBackground: () => (\n            <LinearGradient\n              colors={[\"#d3261f\", \"#ed6d19\"]}\n              style={StyleSheet.absoluteFill}\n              start={{ x: 0, y: 0 }}\n              end={{ x: 1, y: 0 }}\n              locations={[0.2, 1]}\n            />\n          ),\n          headerTintColor: colors.text,\n          headerTitleStyle: {\n            fontWeight: \"bold\",\n            color: colors.text,\n          },\n        }}\n      >\n        <Stack.Screen name=\"Logging\" component={Screens.LoggingScreen} />\n        <Stack.Screen name=\"Networking\" component={Screens.NetworkingScreen} />\n        <Stack.Screen\n          name=\"MobxStateTree\"\n          component={Screens.MobxStateTreeScreen}\n          options={{ title: \"MobX State Tree\" }}\n        />\n        <Stack.Screen\n          name=\"CustomCommands\"\n          component={Screens.CustomCommandsScreen}\n          options={{ title: \"Custom Commands\" }}\n        />\n        <Stack.Screen\n          name=\"ErrorGenerator\"\n          component={Screens.ErrorGeneratorScreen}\n          options={{ title: \"Error Generators\" }}\n        />\n        <Stack.Screen name=\"Benchmarking\" component={Screens.BenchmarkingScreen} />\n        <Stack.Screen\n          name=\"AsyncStorage\"\n          component={Screens.AsyncStorageScreen}\n          options={{ title: \"Async Storage\" }}\n        />\n        <Stack.Screen name=\"Redux\" component={Screens.ReduxScreen} />\n      </Stack.Group>\n    </Stack.Navigator>\n  )\n}\n\nexport interface NavigationProps\n  extends Partial<React.ComponentProps<typeof NavigationContainer>> {}\n\nexport const AppNavigator = function AppNavigator(props: NavigationProps) {\n  const colorScheme = useColorScheme()\n\n  useBackButtonHandler((routeName) => exitRoutes.includes(routeName))\n\n  return (\n    <NavigationContainer\n      ref={navigationRef}\n      theme={colorScheme === \"dark\" ? DarkTheme : DefaultTheme}\n      {...props}\n    >\n      <AppStack />\n    </NavigationContainer>\n  )\n}\n"
  },
  {
    "path": "apps/example-app/app/navigators/index.ts",
    "content": "export * from \"./AppNavigator\"\nexport * from \"./navigationUtilities\"\n// export other navigators from here\n"
  },
  {
    "path": "apps/example-app/app/navigators/navigationUtilities.ts",
    "content": "import { useState, useEffect, useRef } from \"react\"\nimport { BackHandler, Platform } from \"react-native\"\nimport {\n  NavigationState,\n  PartialState,\n  createNavigationContainerRef,\n} from \"@react-navigation/native\"\nimport Config from \"../config\"\nimport type { PersistNavigationConfig } from \"../config/config.base\"\nimport { useIsMounted } from \"../utils/useIsMounted\"\nimport type { AppStackParamList, NavigationProps } from \"./AppNavigator\"\n\nimport * as storage from \"../utils/storage\"\n\ntype Storage = typeof storage\n\n/**\n * Reference to the root App Navigator.\n *\n * If needed, you can use this to access the navigation object outside of a\n * `NavigationContainer` context. However, it's recommended to use the `useNavigation` hook whenever possible.\n * @see https://reactnavigation.org/docs/navigating-without-navigation-prop/\n *\n * The types on this reference will only let you reference top level navigators. If you have\n * nested navigators, you'll need to use the `useNavigation` with the stack navigator's ParamList type.\n */\nexport const navigationRef = createNavigationContainerRef<AppStackParamList>()\n\n/**\n * Gets the current screen from any navigation state.\n */\nexport function getActiveRouteName(state: NavigationState | PartialState<NavigationState>): string {\n  const route = state.routes[state.index ?? 0]\n\n  // Found the active route -- return the name\n  if (!route.state) return route.name as keyof AppStackParamList\n\n  // Recursive call to deal with nested routers\n  return getActiveRouteName(route.state as NavigationState<AppStackParamList>)\n}\n\n/**\n * Hook that handles Android back button presses and forwards those on to\n * the navigation or allows exiting the app.\n */\nexport function useBackButtonHandler(canExit: (routeName: string) => boolean) {\n  // ignore unless android... no back button!\n  if (Platform.OS !== \"android\") return\n\n  // The reason we're using a ref here is because we need to be able\n  // to update the canExit function without re-setting up all the listeners\n  const canExitRef = useRef(canExit)\n\n  useEffect(() => {\n    canExitRef.current = canExit\n  }, [canExit])\n\n  useEffect(() => {\n    // We'll fire this when the back button is pressed on Android.\n    const onBackPress = () => {\n      if (!navigationRef.isReady()) {\n        return false\n      }\n\n      // grab the current route\n      const routeName = getActiveRouteName(navigationRef.getRootState())\n\n      // are we allowed to exit?\n      if (canExitRef.current(routeName)) {\n        // exit and let the system know we've handled the event\n        BackHandler.exitApp()\n        return true\n      }\n\n      // we can't exit, so let's turn this into a back action\n      if (navigationRef.canGoBack()) {\n        navigationRef.goBack()\n        return true\n      }\n\n      return false\n    }\n\n    // Subscribe when we come to life\n    BackHandler.addEventListener(\"hardwareBackPress\", onBackPress)\n\n    // Unsubscribe when we're done\n    return () => BackHandler.removeEventListener(\"hardwareBackPress\", onBackPress)\n  }, [])\n}\n\n/**\n * This helper function will determine whether we should enable navigation persistence\n * based on a config setting and the __DEV__ environment (dev or prod).\n */\nfunction navigationRestoredDefaultState(persistNavigation: PersistNavigationConfig) {\n  if (persistNavigation === \"always\") return false\n  if (persistNavigation === \"dev\" && __DEV__) return false\n  if (persistNavigation === \"prod\" && !__DEV__) return false\n\n  // all other cases, disable restoration by returning true\n  return true\n}\n\n/**\n * Custom hook for persisting navigation state.\n */\nexport function useNavigationPersistence(storage: Storage, persistenceKey: string) {\n  const [initialNavigationState, setInitialNavigationState] =\n    useState<NavigationProps[\"initialState\"]>()\n  const isMounted = useIsMounted()\n\n  const initNavState = navigationRestoredDefaultState(Config.persistNavigation)\n  const [isRestored, setIsRestored] = useState(initNavState)\n\n  const routeNameRef = useRef<keyof AppStackParamList | undefined>()\n\n  const onNavigationStateChange = (state: NavigationState | undefined) => {\n    const previousRouteName = routeNameRef.current\n    if (state !== undefined) {\n      const currentRouteName = getActiveRouteName(state)\n\n      if (previousRouteName !== currentRouteName) {\n        // track screens.\n        if (__DEV__) {\n          console.log(currentRouteName)\n        }\n      }\n\n      // Save the current route name for later comparison\n      routeNameRef.current = currentRouteName as keyof AppStackParamList\n\n      // Persist state to storage\n      storage.save(persistenceKey, state)\n    }\n  }\n\n  const restoreState = async () => {\n    try {\n      const state = (await storage.load(persistenceKey)) as NavigationProps[\"initialState\"] | null\n      if (state) setInitialNavigationState(state)\n    } finally {\n      if (isMounted()) setIsRestored(true)\n    }\n  }\n\n  useEffect(() => {\n    if (!isRestored) restoreState()\n  }, [isRestored])\n\n  return { onNavigationStateChange, restoreState, isRestored, initialNavigationState }\n}\n\n/**\n * use this to navigate without the navigation\n * prop. If you have access to the navigation prop, do not use this.\n * @see https://reactnavigation.org/docs/navigating-without-navigation-prop/\n */\nexport function navigate(name: unknown, params?: unknown) {\n  if (navigationRef.isReady()) {\n    // @ts-expect-error\n    navigationRef.navigate(name as never, params as never)\n  }\n}\n\n/**\n * This function is used to go back in a navigation stack, if it's possible to go back.\n * If the navigation stack can't go back, nothing happens.\n * The navigationRef variable is a React ref that references a navigation object.\n * The navigationRef variable is set in the App component.\n */\nexport function goBack() {\n  if (navigationRef.isReady() && navigationRef.canGoBack()) {\n    navigationRef.goBack()\n  }\n}\n\n/**\n * resetRoot will reset the root navigation state to the given params.\n */\nexport function resetRoot(\n  state: Parameters<typeof navigationRef.resetRoot>[0] = { index: 0, routes: [] },\n) {\n  if (navigationRef.isReady()) {\n    navigationRef.resetRoot(state)\n  }\n}\n"
  },
  {
    "path": "apps/example-app/app/redux/errorSlice.ts",
    "content": "import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\"\n\nexport interface ErrorState {\n  message?: string\n  repo?: string\n  url?: string\n  name?: string\n  sha?: string\n  avatar?: string\n\n  error?: string\n  fetching: boolean\n}\n\nconst initialState: ErrorState = {\n  fetching: false,\n}\n\nconst errorSlice = createSlice({\n  name: \"error\",\n  initialState,\n  reducers: {\n    throwAnError: (store) => {\n      // @ts-ignore We want to throw this error.\n      store.error = this.doesNotExist()\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(throwErrorAsync.pending, () => {\n        console.log(\"wait for it...\")\n      })\n      .addCase(throwErrorAsync.fulfilled, () => {\n        console.log(\"kaboom!\")\n      })\n  },\n})\n\nconst dismantleBomb = (cutTheRedWire: boolean) => {\n  if (cutTheRedWire) {\n    // @ts-ignore We want to throw this error.\n    this.isSparta(\"👢\") // this is madness!\n  }\n}\n\nexport const throwErrorAsync = createAsyncThunk(\"error/throwErrorAsync\", async () => {\n  const result = await new Promise((resolve) => {\n    setTimeout(() => {\n      dismantleBomb(true)\n      resolve(\"🧨\")\n    }, 1000)\n  })\n  return result\n})\n\nexport const { throwAnError } = errorSlice.actions\nexport default errorSlice.reducer\n"
  },
  {
    "path": "apps/example-app/app/redux/index.ts",
    "content": "import { configureStore } from \"@reduxjs/toolkit\"\nimport type { GetDefaultEnhancers } from \"@reduxjs/toolkit/dist/getDefaultEnhancers\"\nimport logoReducer from \"../redux/logoSlice\"\nimport repoReducer from \"../redux/repoSlice\"\nimport errorReducer from \"../redux/errorSlice\"\n\nconst createEnhancers = (getDefaultEnhancers: GetDefaultEnhancers<any>) => {\n  if (__DEV__) {\n    const reactotron = require(\"../devtools/ReactotronConfig\").default\n    return getDefaultEnhancers().concat(reactotron.createEnhancer())\n  } else {\n    return getDefaultEnhancers()\n  }\n}\n\nexport const store = configureStore({\n  reducer: {\n    logo: logoReducer,\n    repo: repoReducer,\n    error: errorReducer,\n  },\n  enhancers: createEnhancers,\n})\n\nexport type RootState = ReturnType<typeof store.getState>\nexport type AppDispatch = typeof store.dispatch\n"
  },
  {
    "path": "apps/example-app/app/redux/logoSlice.ts",
    "content": "import { type PayloadAction, createSlice } from \"@reduxjs/toolkit\"\n\nexport interface LogoState {\n  size: number\n  speed: number\n}\n\nconst initialState: LogoState = {\n  size: 80,\n  speed: 25,\n}\n\nconst logoSlice = createSlice({\n  name: \"logo\",\n  initialState,\n  reducers: {\n    changeSpeed: (store, action: PayloadAction<number>) => {\n      store.speed = action.payload\n    },\n    changeSize: (store, action: PayloadAction<number>) => {\n      store.size = action.payload\n    },\n    faster: (store) => {\n      store.speed = 10\n    },\n    slower: (store) => {\n      store.speed = 50\n    },\n    bigger: (store) => {\n      store.size = 140\n    },\n    smaller: (store) => {\n      store.size = 40\n    },\n    reset: (store) => {\n      store.size = 80\n      store.speed = 25\n    },\n  },\n})\n\nexport const { changeSize, changeSpeed, faster, slower, bigger, smaller, reset } = logoSlice.actions\nexport default logoSlice.reducer\n"
  },
  {
    "path": "apps/example-app/app/redux/repoSlice.ts",
    "content": "import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\"\n\nexport interface RepoState {\n  message?: string\n  repoName?: string\n  url?: string\n  name?: string\n  sha?: string\n  avatar?: string\n\n  error?: string\n  fetching: boolean\n}\n\nconst initialState: RepoState = {\n  fetching: false,\n}\n\nconst repoSlice = createSlice({\n  name: \"repo\",\n  initialState,\n  reducers: {\n    reset: (state) => {\n      state.message = undefined\n      state.repoName = undefined\n      state.url = undefined\n      state.name = undefined\n      state.sha = undefined\n      state.avatar = undefined\n      state.fetching = false\n      state.error = undefined\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAsync.pending, (state) => {\n        console.log(\"Fetching...\")\n        state.fetching = true\n      })\n      .addCase(fetchAsync.fulfilled, (state, action) => {\n        console.log(\"Fetched!\")\n        state.fetching = false\n\n        const lastCommit = action.payload.json[0]\n        console.log(\"Last commit: \", lastCommit)\n        const { commit, author, committer, html_url: url } = lastCommit\n        const { message, tree } = commit\n        const { sha } = tree\n        const { login, avatar_url: avatar } = author || committer\n\n        state.repoName = action.payload.repo\n        state.message = message\n        state.url = url\n        state.name = login\n        state.sha = sha\n        state.avatar = avatar\n      })\n  },\n})\n\nexport const fetchAsync = createAsyncThunk(\"repo/fetchAsync\", async (repo: string) => {\n  console.log(\"initiating API call...\")\n  const response = await fetch(`https://api.github.com/repos/${repo}/commits`)\n  const json = await response.json()\n  console.log(\"got it!\", json)\n  return { json, repo }\n})\n\nexport const { reset } = repoSlice.actions\nexport default repoSlice.reducer\n"
  },
  {
    "path": "apps/example-app/app/screens/AsyncStorageScreen.tsx",
    "content": "import React from \"react\"\nimport AsyncStorage from \"@react-native-async-storage/async-storage\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { Button, Text } from \"app/components\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface AsyncStorageScreenProps extends AppStackScreenProps<\"AsyncStorage\"> {}\n\nexport const AsyncStorageScreen: React.FC<AsyncStorageScreenProps> = function AsyncStorageScreen() {\n  const handleAsyncSet = () => {\n    AsyncStorage.setItem(\"singleSet\", new Date().toISOString(), () =>\n      console.log(\"After setting async storage.\")\n    )\n  }\n\n  const handleAsyncRemove = () => {\n    AsyncStorage.removeItem(\"singleSet\")\n  }\n\n  const handleAsyncClear = () => {\n    AsyncStorage.clear()\n  }\n\n  const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n\n  return (\n    <ScrollView style={$container} contentContainerStyle={$bottomContainerInsets}>\n      <View style={$topContainer}>\n        <Text style={$text} tx=\"asyncStorageScreen.title\" />\n      </View>\n      <View style={{ marginTop: spacing.lg }}>\n        <Button\n          tx=\"asyncStorageScreen.set\"\n          textStyle={$darkText}\n          style={$button}\n          onPress={handleAsyncSet}\n        />\n        <Button\n          tx=\"asyncStorageScreen.remove\"\n          textStyle={$darkText}\n          style={$button}\n          onPress={handleAsyncRemove}\n        />\n        <Button\n          tx=\"asyncStorageScreen.clear\"\n          textStyle={$darkText}\n          style={$button}\n          onPress={handleAsyncClear}\n        />\n      </View>\n    </ScrollView>\n  )\n}\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\nconst $button: ViewStyle = {\n  marginHorizontal: spacing.xxxl,\n  marginVertical: spacing.sm,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/BenchmarkingScreen.tsx",
    "content": "import React from \"react\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { Button, Text } from \"app/components\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface BenchmarkingScreenProps extends AppStackScreenProps<\"Benchmarking\"> {}\n\nexport const BenchmarkingScreen: React.FC<BenchmarkingScreenProps> = function BenchmarkingScreen() {\n  const [disableBenchmarkButton, setDisableBenchmarkButton] = React.useState(false)\n\n  const handleBenchmark = async (multiplier = 10) => {\n    setDisableBenchmarkButton(true)\n    if (__DEV__) {\n      // eslint-disable-next-line reactotron/no-tron-in-production\n      const benchy = console.tron.benchmark(\n        `welcome to ${multiplier >= 10 ? \"slow\" : \"fast\"} town, population YOU!`\n      )\n      const delay = (ms: number) => new Promise<void>((resolve) => setTimeout(() => resolve(), ms))\n      await delay(100 * multiplier)\n      benchy.step(\"time to do something\")\n      await delay(50 * multiplier)\n      benchy.step(\"time to do another thing\")\n      await delay(25 * multiplier)\n      benchy.step(\"time to do a 3rd thing\")\n      await delay(17 * multiplier)\n      benchy.stop(\"finally the last thing\")\n    }\n    setDisableBenchmarkButton(false)\n  }\n\n  const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n\n  return (\n    <ScrollView style={$container} contentContainerStyle={$bottomContainerInsets}>\n      <View style={$topContainer}>\n        <Text style={$text} tx=\"benchmarkingScreen.title\" />\n      </View>\n      <View style={{ marginTop: spacing.lg }}>\n        <Button\n          textStyle={$darkText}\n          tx=\"benchmarkingScreen.slow\"\n          onPress={() => handleBenchmark(10)}\n          disabled={disableBenchmarkButton}\n          style={$button}\n        />\n        <Button\n          textStyle={$darkText}\n          tx=\"benchmarkingScreen.fast\"\n          onPress={() => handleBenchmark(1)}\n          disabled={disableBenchmarkButton}\n          style={$button}\n        />\n      </View>\n    </ScrollView>\n  )\n}\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\n\nconst $button: ViewStyle = {\n  marginHorizontal: spacing.xxxl,\n  marginVertical: spacing.sm,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/CustomCommandsScreen.tsx",
    "content": "import React from \"react\"\nimport { TextStyle, View, ViewStyle } from \"react-native\"\nimport { Screen, Text } from \"app/components\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface CustomCommandsScreenProps extends AppStackScreenProps<\"CustomCommands\"> {}\n\nexport const CustomCommandsScreen: React.FC<CustomCommandsScreenProps> =\n  function CustomCommandsScreen() {\n    const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n    return (\n      <Screen style={$container} preset=\"scroll\" contentContainerStyle={$bottomContainerInsets}>\n        <View style={$topContainer}>\n          <Text style={$text} tx=\"customCommandsScreen.title\" />\n        </View>\n        <View style={$topContainer}>\n          <Text style={$text}>More coming soon!</Text>\n        </View>\n        <View style={{ marginTop: spacing.lg }}></View>\n      </Screen>\n    )\n  }\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/ErrorGeneratorScreen.tsx",
    "content": "import React from \"react\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { useDispatch } from \"react-redux\"\nimport { Button, Text } from \"app/components\"\nimport type { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport type { AppDispatch } from \"app/redux\"\nimport { throwAnError, throwErrorAsync } from \"app/redux/errorSlice\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface ErrorGeneratorScreenProps extends AppStackScreenProps<\"ErrorGenerator\"> {}\n\nexport const ErrorGeneratorScreen: React.FC<ErrorGeneratorScreenProps> =\n  function ErrorGeneratorScreen() {\n    const dispatch = useDispatch<AppDispatch>()\n\n    const bomb = () => {\n      console.log(\"wait for it...\")\n      setTimeout(() => {\n        throw new Error(\"Boom goes the error message.\")\n      }, 500)\n    }\n    const silentBomb = () => {\n      // you may have try/catch blocks in your code\n      try {\n        // ignore this, we want to generate the error\n        // @ts-ignore\n        console.foo()\n      } catch (e) {\n        // now you can log those errors\n        console.error(e)\n      }\n    }\n    const bombRedux = () => dispatch(throwAnError())\n    // @ts-ignore\n    const bombReduxAsync = () => dispatch(throwErrorAsync())\n\n    const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n\n    return (\n      <ScrollView style={$container} contentContainerStyle={$bottomContainerInsets}>\n        <View style={$topContainer}>\n          <Text style={$text} tx=\"errorGeneratorScreen.title\" />\n        </View>\n        <View style={{ marginTop: spacing.lg }}>\n          <Button\n            textStyle={$darkText}\n            tx=\"errorGeneratorScreen.componentError\"\n            onPress={bomb}\n            style={$button}\n          />\n          <Button\n            textStyle={$darkText}\n            tx=\"errorGeneratorScreen.tryCatchError\"\n            onPress={silentBomb}\n            style={$button}\n          />\n          <Button\n            textStyle={$darkText}\n            tx=\"errorGeneratorScreen.reduxError\"\n            onPress={bombRedux}\n            style={$button}\n          />\n          <Button\n            textStyle={$darkText}\n            tx=\"errorGeneratorScreen.reduxAsyncError\"\n            onPress={bombReduxAsync}\n            style={$button}\n          />\n        </View>\n      </ScrollView>\n    )\n  }\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\n\nconst $button: ViewStyle = {\n  marginHorizontal: spacing.xxxl,\n  marginVertical: spacing.sm,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/ErrorScreen/ErrorBoundary.tsx",
    "content": "import React, { Component, ErrorInfo, ReactNode } from \"react\"\nimport { ErrorDetails } from \"./ErrorDetails\"\n\ninterface Props {\n  children: ReactNode\n  catchErrors: \"always\" | \"dev\" | \"prod\" | \"never\"\n}\n\ninterface State {\n  error: Error | null\n  errorInfo: ErrorInfo | null\n}\n\n/**\n * This component handles whenever the user encounters a JS error in the\n * app. It follows the \"error boundary\" pattern in React. We're using a\n * class component because according to the documentation, only class\n * components can be error boundaries.\n *\n * - [Documentation and Examples](https://docs.infinite.red/ignite-cli/concept/Error-Boundary/)\n * - [React Error Boundaries](https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary)\n */\nexport class ErrorBoundary extends Component<Props, State> {\n  state = { error: null, errorInfo: null }\n\n  // If an error in a child is encountered, this will run\n  componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n    // Only set errors if enabled\n    if (!this.isEnabled()) {\n      return\n    }\n    // Catch errors in any components below and re-render with error message\n    this.setState({\n      error,\n      errorInfo,\n    })\n\n    // You can also log error messages to an error reporting service here\n    // This is a great place to put BugSnag, Sentry, crashlytics, etc:\n    // reportCrash(error)\n  }\n\n  // Reset the error back to null\n  resetError = () => {\n    this.setState({ error: null, errorInfo: null })\n  }\n\n  // To avoid unnecessary re-renders\n  shouldComponentUpdate(nextProps: Readonly<Props>, nextState: Readonly<State>): boolean {\n    return nextState.error !== this.state.error\n  }\n\n  // Only enable if we're catching errors in the right environment\n  isEnabled(): boolean {\n    return (\n      this.props.catchErrors === \"always\" ||\n      (this.props.catchErrors === \"dev\" && __DEV__) ||\n      (this.props.catchErrors === \"prod\" && !__DEV__)\n    )\n  }\n\n  // Render an error UI if there's an error; otherwise, render children\n  render() {\n    return this.isEnabled() && this.state.error ? (\n      <ErrorDetails\n        onReset={this.resetError}\n        error={this.state.error}\n        errorInfo={this.state.errorInfo}\n      />\n    ) : (\n      this.props.children\n    )\n  }\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/ErrorScreen/ErrorDetails.tsx",
    "content": "import React, { ErrorInfo } from \"react\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { Button, Icon, Screen, Text } from \"app/components\"\nimport { colors, spacing } from \"app/theme\"\n\nexport interface ErrorDetailsProps {\n  error: Error\n  errorInfo: ErrorInfo | null\n  onReset(): void\n}\n\nexport function ErrorDetails(props: ErrorDetailsProps) {\n  return (\n    <Screen\n      preset=\"fixed\"\n      safeAreaEdges={[\"top\", \"bottom\"]}\n      contentContainerStyle={$contentContainer}\n    >\n      <View style={$topSection}>\n        <Icon icon=\"ladybug\" size={64} />\n        <Text style={$heading} preset=\"subheading\" tx=\"errorScreen.title\" />\n        <Text tx=\"errorScreen.friendlySubtitle\" />\n      </View>\n\n      <ScrollView style={$errorSection} contentContainerStyle={$errorSectionContentContainer}>\n        <Text style={$errorContent} weight=\"bold\" text={`${props.error}`.trim()} />\n        <Text\n          selectable\n          style={$errorBacktrace}\n          text={`${props.errorInfo?.componentStack ?? \"\"}`.trim()}\n        />\n      </ScrollView>\n\n      <Button\n        preset=\"reversed\"\n        style={$resetButton}\n        onPress={props.onReset}\n        tx=\"errorScreen.reset\"\n      />\n    </Screen>\n  )\n}\n\nconst $contentContainer: ViewStyle = {\n  alignItems: \"center\",\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n  flex: 1,\n}\n\nconst $topSection: ViewStyle = {\n  flex: 1,\n  alignItems: \"center\",\n}\n\nconst $heading: TextStyle = {\n  color: colors.error,\n  marginBottom: spacing.md,\n}\n\nconst $errorSection: ViewStyle = {\n  flex: 2,\n  backgroundColor: colors.separator,\n  marginVertical: spacing.md,\n  borderRadius: 6,\n}\n\nconst $errorSectionContentContainer: ViewStyle = {\n  padding: spacing.md,\n}\n\nconst $errorContent: TextStyle = {\n  color: colors.error,\n}\n\nconst $errorBacktrace: TextStyle = {\n  marginTop: spacing.md,\n  color: colors.textDim,\n}\n\nconst $resetButton: ViewStyle = {\n  backgroundColor: colors.error,\n  paddingHorizontal: spacing.xxl,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/LoggingScreen.tsx",
    "content": "import React from \"react\"\nimport { TextStyle, View, ViewStyle } from \"react-native\"\nimport { Button, Text, Screen } from \"app/components\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport ViewShot, { captureRef } from \"react-native-view-shot\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface LoggingScreenProps extends AppStackScreenProps<\"Logging\"> {}\n\nexport const LoggingScreen: React.FC<LoggingScreenProps> = function LoggingScreen() {\n  const ref = React.useRef<ViewShot>(null)\n\n  const handleScreenshot = () => {\n    captureRef(ref, {\n      format: \"jpg\",\n      quality: 0.8,\n      result: \"data-uri\",\n    }).then(\n      (uri) => {\n        if (__DEV__) {\n          console.tron.display({\n            name: \"Screenshot\",\n            preview: \"App screenshot\",\n            image: { uri },\n          })\n        }\n      },\n      (error) => console.error(\"Oops, snapshot failed\", error)\n    )\n  }\n\n  const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n\n  return (\n    <Screen style={$container} preset=\"scroll\" contentContainerStyle={$bottomContainerInsets}>\n      <ViewShot ref={ref} style={$background}>\n        <View style={$topContainer}>\n          <Text style={$text} tx=\"loggingsScreen.title\" />\n        </View>\n        <View style={{ marginTop: spacing.lg }}>\n          <Button\n            text=\"console.log\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.log(\"Hello from Reactotron!\")\n            }}\n          />\n          <Button\n            text=\"console.log with data\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.log(\"Hello from Reactotron!\", { this: \"is\", some: \"data\" })\n            }}\n          />\n          <Button\n            text=\"console.debug\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.debug(\"This is a console.debug()\")\n            }}\n          />\n          <Button\n            text=\"console.warn\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.warn(\"This is a console.warn()\")\n            }}\n          />\n          <Button\n            text=\"console.error\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.error(\"This is a console.error()\", { with: \"possible data\" })\n            }}\n          />\n          <Button\n            text=\"console.log a BigInt\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.log(BigInt(0))\n            }}\n          />\n          <Button\n            text=\"console.log a JSON Serialized BigInt\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              console.log(\n                JSON.stringify({\n                  int: 12,\n                  string: \"hello\",\n                  function: function () {\n                    console.log(\"HELLO!\")\n                  },\n                  bigInt: BigInt(0),\n                })\n              )\n            }}\n          />\n        </View>\n        <View style={$topContainer}>\n          <Text style={$text} tx=\"loggingsScreen.subtitle\" />\n        </View>\n        <View style={{ marginTop: spacing.lg }}>\n          <Button\n            text=\"console.tron.image\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              if (__DEV__) {\n                console.tron.image({\n                  uri: \"https://placekitten.com/g/400/400\",\n                  preview: \"placekitten.com\",\n                  filename: \"cat.jpg\",\n                  width: 400,\n                  height: 400,\n                  caption: \"D'awwwwwww\",\n                })\n              }\n            }}\n          />\n          <Button\n            text=\"Log a Screenshot\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={handleScreenshot}\n          />\n          <Button\n            text=\"console.tron.display\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              if (__DEV__) {\n                console.tron.display({\n                  name: \"Using console.tron.display()\",\n                  preview: \"More awesome data for you to see when you open this log!\",\n                  value: {\n                    false: false,\n                    zero: 0,\n                    emptyString: \"\",\n                    undefined,\n                    null: null,\n                  },\n                })\n              }\n            }}\n          />\n          <Button\n            text=\"console.tron.display (important)\"\n            textStyle={$darkText}\n            style={$button}\n            onPress={() => {\n              if (__DEV__) {\n                console.tron.display({\n                  important: true,\n                  name: \"Important Message!\",\n                  preview: \"Click to see more!\",\n                  image:\n                    \"https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExMTFmMmh5ZmkyM29yZWczbW1xZXU3YmhhdXMzcTk3c2JpMDJ4cWt3MiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/l1J9skVOajpIYloyc/giphy.gif\",\n                  value: {\n                    very: \"important\",\n                    message: \"for\",\n                    you: \"!\",\n                  },\n                })\n              }\n            }}\n          />\n        </View>\n      </ViewShot>\n    </Screen>\n  )\n}\n\nconst $background: ViewStyle = {\n  backgroundColor: colors.background,\n}\nconst $container: ViewStyle = {\n  flex: 1,\n  ...$background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\nconst $button: ViewStyle = {\n  marginHorizontal: spacing.xxxl,\n  marginVertical: spacing.sm,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/MobxStateTreeScreen.tsx",
    "content": "import { observer } from \"mobx-react-lite\"\nimport React from \"react\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { Button, Text } from \"app/components\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport { useStores } from \"app/mobxStateTree\"\nimport { Repo } from \"app/components/Repo\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface MobxStateTreeScreenProps extends AppStackScreenProps<\"MobxStateTree\"> {}\n\nexport const MobxStateTreeScreen: React.FC<MobxStateTreeScreenProps> = observer(\n  function MobxStateTreeScreen() {\n    const { logo, repo } = useStores()\n\n    const { avatar, name, message, repoName, fetchRepo, reset: repoReset } = repo\n    const { size, speed, faster, slower, bigger, smaller, reset: logoReset } = logo\n\n    const requestReactotron = () => fetchRepo(\"infinitered/reactotron\")\n    const requestReactNative = () => fetchRepo(\"facebook/react-native\")\n    const requestMobx = () => fetchRepo(\"mobxjs/mobx\")\n    const requestRedux = () => fetchRepo(\"reactjs/redux\")\n\n    const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n\n    return (\n      <ScrollView style={$container} contentContainerStyle={$bottomContainerInsets}>\n        <View style={$topContainer}>\n          <Text style={$text} tx=\"mobxStateTreeScreen.title\" />\n        </View>\n        <View style={{ marginTop: spacing.lg }}>\n          <View style={$buttons}>\n            <Button textStyle={$darkText} tx=\"repos.reactotron\" onPress={requestReactotron} />\n            <Button textStyle={$darkText} tx=\"repos.redux\" onPress={requestRedux} />\n            <Button textStyle={$darkText} tx=\"repos.mobx\" onPress={requestMobx} />\n            <Button textStyle={$darkText} tx=\"repos.reactNative\" onPress={requestReactNative} />\n          </View>\n          <Repo\n            avatar={avatar}\n            repo={repoName}\n            name={name}\n            message={message}\n            size={size}\n            speed={speed}\n            bigger={bigger}\n            smaller={smaller}\n            faster={faster}\n            slower={slower}\n            reset={() => {\n              logoReset()\n              repoReset()\n            }}\n          />\n        </View>\n      </ScrollView>\n    )\n  }\n)\n\nconst $buttons: ViewStyle = {\n  flexDirection: \"row\",\n  flexWrap: \"wrap\",\n  marginBottom: 20,\n  justifyContent: \"center\",\n}\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/NetworkingScreen.tsx",
    "content": "import React from \"react\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { Button, Text } from \"app/components\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface NetworkingScreenProps extends AppStackScreenProps<\"Networking\"> {}\n\nexport const NetworkingScreen: React.FC<NetworkingScreenProps> = function NetworkingScreen() {\n  const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n  return (\n    <ScrollView style={$container} contentContainerStyle={$bottomContainerInsets}>\n      <View style={$topContainer}>\n        <Text style={$text} tx=\"networkingScreen.title\" />\n      </View>\n      <View style={{ marginTop: spacing.lg }}>\n        <Button\n          tx=\"networkingScreen.makeApiCall\"\n          textStyle={$darkText}\n          style={$button}\n          onPress={() => {\n            fetch(\"https://jsonplaceholder.typicode.com/todos/1\")\n              .then((response) => response.json())\n              .then((json) => console.log(json))\n          }}\n        />\n        <Button\n          tx=\"networkingScreen.makeFailingApiCall\"\n          textStyle={$darkText}\n          style={$button}\n          onPress={() => {\n            try {\n              fetch(\"https://google.com/404\")\n                .then((response) => response.json())\n                .then((json) => console.log(json))\n            } catch (error) {\n              console.log(error)\n            }\n          }}\n        />\n      </View>\n    </ScrollView>\n  )\n}\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\nconst $button: ViewStyle = {\n  marginHorizontal: spacing.xxxl,\n  marginVertical: spacing.sm,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/ReduxScreen.tsx",
    "content": "import React from \"react\"\nimport { ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { Button, Text } from \"app/components\"\nimport { Repo } from \"app/components/Repo\"\nimport { AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\nimport type { AppDispatch, RootState } from \"app/redux\"\nimport { fetchAsync, reset as repoReset } from \"app/redux/repoSlice\"\nimport { changeSize, changeSpeed, reset as logoReset } from \"app/redux/logoSlice\"\nimport { useSafeAreaInsetsStyle } from \"app/utils/useSafeAreaInsetsStyle\"\n\ninterface ReduxScreenProps extends AppStackScreenProps<\"Redux\"> {}\n\nexport const ReduxScreen: React.FC<ReduxScreenProps> = function ReduxScreen() {\n  const dispatch = useDispatch<AppDispatch>()\n\n  const { avatar, name, message, repoName } = useSelector((state: RootState) => state.repo)\n  const { size, speed } = useSelector((state: RootState) => state.logo)\n\n  const requestReactotron = () => dispatch(fetchAsync(\"reactotron/reactotron\"))\n  const requestReactNative = () => dispatch(fetchAsync(\"facebook/react-native\"))\n  const requestMobx = () => dispatch(fetchAsync(\"mobxjs/mobx\"))\n  const requestRedux = () => dispatch(fetchAsync(\"reactjs/redux\"))\n  const faster = () => dispatch(changeSpeed(10))\n  const slower = () => dispatch(changeSpeed(50))\n  const bigger = () => dispatch(changeSize(140))\n  const smaller = () => dispatch(changeSize(40))\n\n  const $bottomContainerInsets = useSafeAreaInsetsStyle([\"bottom\"])\n\n  return (\n    <ScrollView style={$container} contentContainerStyle={$bottomContainerInsets}>\n      <View style={$topContainer}>\n        <Text style={$text}>Redux works great with Reactotron!</Text>\n        <Text style={$text}>Tap each project to see the latest commit and author!</Text>\n        <Text style={$text}></Text>\n        <Text style={$text}>Use the buttons beside the avatar to dispatch redux events!</Text>\n      </View>\n      <View style={{ marginTop: spacing.lg }}>\n        <View style={$buttons}>\n          <Button textStyle={$darkText} tx=\"repos.reactotron\" onPress={requestReactotron} />\n          <Button textStyle={$darkText} tx=\"repos.redux\" onPress={requestRedux} />\n          <Button textStyle={$darkText} tx=\"repos.mobx\" onPress={requestMobx} />\n          <Button textStyle={$darkText} tx=\"repos.reactNative\" onPress={requestReactNative} />\n        </View>\n        <Repo\n          avatar={avatar}\n          repo={repoName}\n          name={name}\n          message={message}\n          size={size}\n          speed={speed}\n          bigger={bigger}\n          smaller={smaller}\n          faster={faster}\n          slower={slower}\n          reset={() => {\n            dispatch(logoReset())\n            dispatch(repoReset())\n          }}\n        />\n      </View>\n    </ScrollView>\n  )\n}\n\nconst $buttons: ViewStyle = {\n  flexDirection: \"row\",\n  flexWrap: \"wrap\",\n  marginBottom: 20,\n  justifyContent: \"center\",\n}\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n  paddingTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $darkText: TextStyle = {\n  color: colors.textDim,\n}\n"
  },
  {
    "path": "apps/example-app/app/screens/WelcomeScreen.tsx",
    "content": "import React from \"react\"\nimport { SafeAreaView } from \"react-native-safe-area-context\"\nimport { NavigationProp, useNavigation } from \"@react-navigation/native\"\nimport { Image, ImageStyle, ScrollView, TextStyle, View, ViewStyle } from \"react-native\"\nimport { ListItem as ListItemParent, ListItemProps, Text } from \"app/components\"\nimport { AppStackParamList, AppStackScreenProps } from \"app/navigators\"\nimport { colors, spacing } from \"app/theme\"\n\nconst welcomeLogo = require(\"../../assets/images/logo.png\")\n\ninterface WelcomeScreenProps extends AppStackScreenProps<\"Welcome\"> {}\ntype WelcomeScreenNavigationProp = NavigationProp<AppStackParamList, \"Welcome\">\n\nexport const WelcomeScreen: React.FC<WelcomeScreenProps> = function WelcomeScreen() {\n  const navigation = useNavigation<WelcomeScreenNavigationProp>()\n\n  return (\n    <SafeAreaView style={$container}>\n      <ScrollView style={$container}>\n        <View style={$topContainer}>\n          <Image style={$welcomeLogo} source={welcomeLogo} resizeMode=\"contain\" />\n          <Text testID=\"welcome-heading\" style={$text} tx=\"welcomeScreen.title\" preset=\"heading\" />\n          <Text tx=\"welcomeScreen.subtitle\" style={$welcomeSubheading} preset=\"subheading\" />\n          <Text style={$text} tx=\"welcomeScreen.message\" />\n        </View>\n        <View style={{ marginTop: spacing.lg }}>\n          <ListItem\n            text=\"Logging\"\n            onPress={() => {\n              navigation.navigate(\"Logging\")\n            }}\n          />\n          <ListItem\n            text=\"Networking\"\n            onPress={() => {\n              navigation.navigate(\"Networking\")\n            }}\n          />\n          <ListItem\n            text=\"Custom Commands\"\n            onPress={() => {\n              navigation.navigate(\"CustomCommands\")\n            }}\n          />\n          <ListItem\n            text=\"Error Generators\"\n            onPress={() => {\n              navigation.navigate(\"ErrorGenerator\")\n            }}\n          />\n          <ListItem\n            text=\"Benchmarking\"\n            onPress={() => {\n              navigation.navigate(\"Benchmarking\")\n            }}\n          />\n          <ListItem\n            text=\"Async Storage\"\n            onPress={() => {\n              navigation.navigate(\"AsyncStorage\")\n            }}\n          />\n          <ListItem\n            text=\"State Management: MST\"\n            onPress={() => {\n              navigation.navigate(\"MobxStateTree\")\n            }}\n          />\n          <ListItem\n            text=\"State Management: Redux\"\n            onPress={() => {\n              navigation.navigate(\"Redux\")\n            }}\n          />\n        </View>\n      </ScrollView>\n    </SafeAreaView>\n  )\n}\n\nconst $container: ViewStyle = {\n  flex: 1,\n  backgroundColor: colors.background,\n}\nconst $topContainer: ViewStyle = {\n  paddingHorizontal: spacing.lg,\n}\nconst $welcomeLogo: ImageStyle = {\n  height: 88,\n  width: 88,\n  marginBottom: spacing.sm,\n  marginTop: spacing.xl,\n}\nconst $text: TextStyle = {\n  color: colors.text,\n}\nconst $welcomeSubheading: TextStyle = {\n  ...$text,\n  marginBottom: spacing.sm,\n}\n\nconst ListItem = (props: ListItemProps) => (\n  <ListItemParent\n    textStyle={$text}\n    containerStyle={{ marginHorizontal: spacing.lg }}\n    rightIcon=\"caretRight\"\n    rightIconColor={colors.text}\n    topSeparator\n    {...props}\n  />\n)\n"
  },
  {
    "path": "apps/example-app/app/screens/index.ts",
    "content": "export * from \"./WelcomeScreen\"\nexport * from \"./LoggingScreen\"\nexport * from \"./NetworkingScreen\"\nexport * from \"./BenchmarkingScreen\"\nexport * from \"./CustomCommandsScreen\"\nexport * from \"./MobxStateTreeScreen\"\nexport * from \"./ReduxScreen\"\nexport * from \"./ErrorGeneratorScreen\"\nexport * from \"./AsyncStorageScreen\"\n\nexport * from \"./ErrorScreen/ErrorBoundary\"\n// export other screens here\n"
  },
  {
    "path": "apps/example-app/app/services/api/api.ts",
    "content": "/**\n * This Api class lets you define an API endpoint and methods to request\n * data and process it.\n *\n * See the [Backend API Integration](https://github.com/infinitered/ignite/blob/master/docs/Backend-API-Integration.md)\n * documentation for more details.\n */\nimport { ApisauceInstance, create } from \"apisauce\"\nimport Config from \"../../config\"\nimport type { ApiConfig } from \"./api.types\"\n\n/**\n * Configuring the apisauce instance.\n */\nexport const DEFAULT_API_CONFIG: ApiConfig = {\n  url: Config.API_URL,\n  timeout: 10000,\n}\n\n/**\n * Manages all requests to the API. You can use this class to build out\n * various requests that you need to call from your backend API.\n */\nexport class Api {\n  apisauce: ApisauceInstance\n  config: ApiConfig\n\n  /**\n   * Set up our API instance. Keep this lightweight!\n   */\n  constructor(config: ApiConfig = DEFAULT_API_CONFIG) {\n    this.config = config\n    this.apisauce = create({\n      baseURL: this.config.url,\n      timeout: this.config.timeout,\n      headers: {\n        Accept: \"application/json\",\n      },\n    })\n  }\n}\n\n// Singleton instance of the API for convenience\nexport const api = new Api()\n"
  },
  {
    "path": "apps/example-app/app/services/api/api.types.ts",
    "content": "/**\n * These types indicate the shape of the data you expect to receive from your\n * API endpoint, assuming it's a JSON object like we have.\n */\nexport interface EpisodeItem {\n  title: string\n  pubDate: string\n  link: string\n  guid: string\n  author: string\n  thumbnail: string\n  description: string\n  content: string\n  enclosure: {\n    link: string\n    type: string\n    length: number\n    duration: number\n    rating: { scheme: string; value: string }\n  }\n  categories: string[]\n}\n\nexport interface ApiFeedResponse {\n  status: string\n  feed: {\n    url: string\n    title: string\n    link: string\n    author: string\n    description: string\n    image: string\n  }\n  items: EpisodeItem[]\n}\n\n/**\n * The options used to configure apisauce.\n */\nexport interface ApiConfig {\n  /**\n   * The URL of the api.\n   */\n  url: string\n\n  /**\n   * Milliseconds before we timeout the request.\n   */\n  timeout: number\n}\n"
  },
  {
    "path": "apps/example-app/app/services/api/apiProblem.test.ts",
    "content": "import { getGeneralApiProblem } from \"./apiProblem\"\nimport { ApiErrorResponse } from \"apisauce\"\n\ntest(\"handles connection errors\", () => {\n  expect(getGeneralApiProblem({ problem: \"CONNECTION_ERROR\" } as ApiErrorResponse<null>)).toEqual({\n    kind: \"cannot-connect\",\n    temporary: true,\n  })\n})\n\ntest(\"handles network errors\", () => {\n  expect(getGeneralApiProblem({ problem: \"NETWORK_ERROR\" } as ApiErrorResponse<null>)).toEqual({\n    kind: \"cannot-connect\",\n    temporary: true,\n  })\n})\n\ntest(\"handles timeouts\", () => {\n  expect(getGeneralApiProblem({ problem: \"TIMEOUT_ERROR\" } as ApiErrorResponse<null>)).toEqual({\n    kind: \"timeout\",\n    temporary: true,\n  })\n})\n\ntest(\"handles server errors\", () => {\n  expect(getGeneralApiProblem({ problem: \"SERVER_ERROR\" } as ApiErrorResponse<null>)).toEqual({\n    kind: \"server\",\n  })\n})\n\ntest(\"handles unknown errors\", () => {\n  expect(getGeneralApiProblem({ problem: \"UNKNOWN_ERROR\" } as ApiErrorResponse<null>)).toEqual({\n    kind: \"unknown\",\n    temporary: true,\n  })\n})\n\ntest(\"handles unauthorized errors\", () => {\n  expect(\n    getGeneralApiProblem({ problem: \"CLIENT_ERROR\", status: 401 } as ApiErrorResponse<null>),\n  ).toEqual({\n    kind: \"unauthorized\",\n  })\n})\n\ntest(\"handles forbidden errors\", () => {\n  expect(\n    getGeneralApiProblem({ problem: \"CLIENT_ERROR\", status: 403 } as ApiErrorResponse<null>),\n  ).toEqual({\n    kind: \"forbidden\",\n  })\n})\n\ntest(\"handles not-found errors\", () => {\n  expect(\n    getGeneralApiProblem({ problem: \"CLIENT_ERROR\", status: 404 } as ApiErrorResponse<null>),\n  ).toEqual({\n    kind: \"not-found\",\n  })\n})\n\ntest(\"handles other client errors\", () => {\n  expect(\n    getGeneralApiProblem({ problem: \"CLIENT_ERROR\", status: 418 } as ApiErrorResponse<null>),\n  ).toEqual({\n    kind: \"rejected\",\n  })\n})\n\ntest(\"handles cancellation errors\", () => {\n  expect(getGeneralApiProblem({ problem: \"CANCEL_ERROR\" } as ApiErrorResponse<null>)).toBeNull()\n})\n"
  },
  {
    "path": "apps/example-app/app/services/api/apiProblem.ts",
    "content": "import { ApiResponse } from \"apisauce\"\n\nexport type GeneralApiProblem =\n  /**\n   * Times up.\n   */\n  | { kind: \"timeout\"; temporary: true }\n  /**\n   * Cannot connect to the server for some reason.\n   */\n  | { kind: \"cannot-connect\"; temporary: true }\n  /**\n   * The server experienced a problem. Any 5xx error.\n   */\n  | { kind: \"server\" }\n  /**\n   * We're not allowed because we haven't identified ourself. This is 401.\n   */\n  | { kind: \"unauthorized\" }\n  /**\n   * We don't have access to perform that request. This is 403.\n   */\n  | { kind: \"forbidden\" }\n  /**\n   * Unable to find that resource.  This is a 404.\n   */\n  | { kind: \"not-found\" }\n  /**\n   * All other 4xx series errors.\n   */\n  | { kind: \"rejected\" }\n  /**\n   * Something truly unexpected happened. Most likely can try again. This is a catch all.\n   */\n  | { kind: \"unknown\"; temporary: true }\n  /**\n   * The data we received is not in the expected format.\n   */\n  | { kind: \"bad-data\" }\n\n/**\n * Attempts to get a common cause of problems from an api response.\n *\n * @param response The api response.\n */\nexport function getGeneralApiProblem(response: ApiResponse<any>): GeneralApiProblem | null {\n  switch (response.problem) {\n    case \"CONNECTION_ERROR\":\n      return { kind: \"cannot-connect\", temporary: true }\n    case \"NETWORK_ERROR\":\n      return { kind: \"cannot-connect\", temporary: true }\n    case \"TIMEOUT_ERROR\":\n      return { kind: \"timeout\", temporary: true }\n    case \"SERVER_ERROR\":\n      return { kind: \"server\" }\n    case \"UNKNOWN_ERROR\":\n      return { kind: \"unknown\", temporary: true }\n    case \"CLIENT_ERROR\":\n      switch (response.status) {\n        case 401:\n          return { kind: \"unauthorized\" }\n        case 403:\n          return { kind: \"forbidden\" }\n        case 404:\n          return { kind: \"not-found\" }\n        default:\n          return { kind: \"rejected\" }\n      }\n    case \"CANCEL_ERROR\":\n      return null\n  }\n\n  return null\n}\n"
  },
  {
    "path": "apps/example-app/app/services/api/index.ts",
    "content": "export * from \"./api\"\nexport * from \"./api.types\"\n"
  },
  {
    "path": "apps/example-app/app/theme/colors.ts",
    "content": "// TODO: write documentation for colors and palette in own markdown file and add links from here\n\nconst palette = {\n  neutral100: \"#FFFFFF\",\n  neutral200: \"#F4F2F1\",\n  neutral300: \"#D7CEC9\",\n  neutral400: \"#B6ACA6\",\n  neutral500: \"#978F8A\",\n  neutral600: \"#564E4A\",\n  neutral700: \"#3C3836\",\n  neutral800: \"#1E1B1A\",\n  neutral900: \"#000000\",\n\n  primary100: \"#F4E0D9\",\n  primary200: \"#E8C1B4\",\n  primary300: \"#DDA28E\",\n  primary400: \"#D28468\",\n  primary500: \"#C76542\",\n  primary600: \"#A54F31\",\n\n  secondary100: \"#DCDDE9\",\n  secondary200: \"#BCC0D6\",\n  secondary300: \"#9196B9\",\n  secondary400: \"#626894\",\n  secondary500: \"#41476E\",\n\n  accent100: \"#FFEED4\",\n  accent200: \"#FFE1B2\",\n  accent300: \"#FDD495\",\n  accent400: \"#FBC878\",\n  accent500: \"#FFBB50\",\n\n  angry100: \"#F2D6CD\",\n  angry500: \"#C03403\",\n\n  overlay20: \"rgba(25, 16, 21, 0.2)\",\n  overlay50: \"rgba(25, 16, 21, 0.5)\",\n} as const\n\nexport const colors = {\n  /**\n   * The palette is available to use, but prefer using the name.\n   * This is only included for rare, one-off cases. Try to use\n   * semantic names as much as possible.\n   */\n  palette,\n  /**\n   * A helper for making something see-thru.\n   */\n  transparent: \"rgba(0, 0, 0, 0)\",\n  /**\n   * The default text color in many components.\n   */\n  text: palette.neutral200,\n  /**\n   * Secondary text information.\n   */\n  textDim: palette.neutral600,\n  /**\n   * The default color of the screen background.\n   */\n  background: palette.neutral800,\n  /**\n   * The default border color.\n   */\n  border: palette.neutral400,\n  /**\n   * The main tinting color.\n   */\n  tint: palette.primary500,\n  /**\n   * A subtle color used for lines.\n   */\n  separator: palette.neutral300,\n  /**\n   * Error messages.\n   */\n  error: palette.angry500,\n  /**\n   * Error Background.\n   *\n   */\n  errorBackground: palette.angry100,\n\n  white: palette.neutral100,\n  repoText: palette.secondary300,\n}\n"
  },
  {
    "path": "apps/example-app/app/theme/index.ts",
    "content": "export * from \"./colors\"\nexport * from \"./spacing\"\nexport * from \"./typography\"\nexport * from \"./timing\"\n"
  },
  {
    "path": "apps/example-app/app/theme/spacing.ts",
    "content": "/**\n  Use these spacings for margins/paddings and other whitespace throughout your app.\n */\nexport const spacing = {\n  xxxs: 2,\n  xxs: 4,\n  xs: 8,\n  sm: 12,\n  md: 16,\n  lg: 24,\n  xl: 32,\n  xxl: 48,\n  xxxl: 64,\n} as const\n\nexport type Spacing = keyof typeof spacing\n"
  },
  {
    "path": "apps/example-app/app/theme/timing.ts",
    "content": "export const timing = {\n  /**\n   * The duration (ms) for quick animations.\n   */\n  quick: 300,\n}\n"
  },
  {
    "path": "apps/example-app/app/theme/typography.ts",
    "content": "// TODO: write documentation about fonts and typography along with guides on how to add custom fonts in own\n// markdown file and add links from here\n\nimport { Platform } from \"react-native\"\nimport {\n  SpaceGrotesk_300Light as spaceGroteskLight,\n  SpaceGrotesk_400Regular as spaceGroteskRegular,\n  SpaceGrotesk_500Medium as spaceGroteskMedium,\n  SpaceGrotesk_600SemiBold as spaceGroteskSemiBold,\n  SpaceGrotesk_700Bold as spaceGroteskBold,\n} from \"@expo-google-fonts/space-grotesk\"\n\nexport const customFontsToLoad = {\n  spaceGroteskLight,\n  spaceGroteskRegular,\n  spaceGroteskMedium,\n  spaceGroteskSemiBold,\n  spaceGroteskBold,\n}\n\nconst fonts = {\n  spaceGrotesk: {\n    // Cross-platform Google font.\n    light: \"spaceGroteskLight\",\n    normal: \"spaceGroteskRegular\",\n    medium: \"spaceGroteskMedium\",\n    semiBold: \"spaceGroteskSemiBold\",\n    bold: \"spaceGroteskBold\",\n  },\n  helveticaNeue: {\n    // iOS only font.\n    thin: \"HelveticaNeue-Thin\",\n    light: \"HelveticaNeue-Light\",\n    normal: \"Helvetica Neue\",\n    medium: \"HelveticaNeue-Medium\",\n  },\n  courier: {\n    // iOS only font.\n    normal: \"Courier\",\n  },\n  sansSerif: {\n    // Android only font.\n    thin: \"sans-serif-thin\",\n    light: \"sans-serif-light\",\n    normal: \"sans-serif\",\n    medium: \"sans-serif-medium\",\n  },\n  monospace: {\n    // Android only font.\n    normal: \"monospace\",\n  },\n}\n\nexport const typography = {\n  /**\n   * The fonts are available to use, but prefer using the semantic name.\n   */\n  fonts,\n  /**\n   * The primary font. Used in most places.\n   */\n  primary: fonts.spaceGrotesk,\n  /**\n   * An alternate font used for perhaps titles and stuff.\n   */\n  secondary: Platform.select({ ios: fonts.helveticaNeue, android: fonts.sansSerif }),\n  /**\n   * Lets get fancy with a monospace font!\n   */\n  code: Platform.select({ ios: fonts.courier, android: fonts.monospace }),\n}\n"
  },
  {
    "path": "apps/example-app/app/utils/crashReporting.ts",
    "content": "/**\n * If you're using Sentry\n *   RN   https://docs.sentry.io/platforms/react-native/\n *   Expo https://docs.expo.dev/guides/using-sentry/\n */\n// import * as Sentry from \"sentry-expo\"\n// import * as Sentry from \"@sentry/react-native\"\n\n/**\n * If you're using Crashlytics: https://rnfirebase.io/crashlytics/usage\n */\n// import crashlytics from \"@react-native-firebase/crashlytics\"\n\n/**\n * If you're using Bugsnag:\n *   RN   https://docs.bugsnag.com/platforms/react-native/)\n *   Expo https://docs.bugsnag.com/platforms/react-native/expo/\n */\n// import Bugsnag from \"@bugsnag/react-native\"\n// import Bugsnag from \"@bugsnag/expo\"\n\n/**\n *  This is where you put your crash reporting service initialization code to call in `./app/app.tsx`\n */\nexport const initCrashReporting = () => {\n  // Sentry.init({\n  //   dsn: \"YOUR DSN HERE\",\n  //   enableInExpoDevelopment: true,\n  //   debug: true, // If `true`, Sentry will try to print out useful debugging information if something goes wrong with sending the event. Set it to `false` in production\n  // })\n  // Bugsnag.start(\"YOUR API KEY\")\n}\n\n/**\n * Error classifications used to sort errors on error reporting services.\n */\nexport enum ErrorType {\n  /**\n   * An error that would normally cause a red screen in dev\n   * and force the user to sign out and restart.\n   */\n  FATAL = \"Fatal\",\n  /**\n   * An error caught by try/catch where defined using Reactotron.tron.error.\n   */\n  HANDLED = \"Handled\",\n}\n\n/**\n * Manually report a handled error.\n */\nexport const reportCrash = (error: Error, type: ErrorType = ErrorType.FATAL) => {\n  if (__DEV__) {\n    // Log to console and Reactotron in development\n    const message = error.message || \"Unknown\"\n    console.error(error)\n    console.log(message, type)\n  } else {\n    // In production, utilize crash reporting service of choice below:\n    // RN\n    // Sentry.captureException(error)\n    // Expo\n    // Sentry.Native.captureException(error)\n    // crashlytics().recordError(error)\n    // Bugsnag.notify(error)\n  }\n}\n"
  },
  {
    "path": "apps/example-app/app/utils/delay.ts",
    "content": "/**\n * A \"modern\" sleep statement.\n *\n * @param ms The number of milliseconds to wait.\n */\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n"
  },
  {
    "path": "apps/example-app/app/utils/formatDate.ts",
    "content": "// Note the syntax of these imports from the date-fns library.\n// If you import with the syntax: import { format } from \"date-fns\" the ENTIRE library\n// will be included in your production bundle (even if you only use one function).\n// This is because react-native does not support tree-shaking.\nimport type { Locale } from \"date-fns\"\nimport format from \"date-fns/format\"\nimport parseISO from \"date-fns/parseISO\"\nimport en from \"date-fns/locale/en-US\"\n\ntype Options = Parameters<typeof format>[2]\n\nconst getLocale = (): Locale => {\n  return en\n}\n\nexport const formatDate = (date: string, dateFormat?: string, options?: Options) => {\n  const locale = getLocale()\n  const dateOptions = {\n    ...options,\n    locale,\n  }\n  return format(parseISO(date), dateFormat ?? \"MMM dd, yyyy\", dateOptions)\n}\n"
  },
  {
    "path": "apps/example-app/app/utils/ignoreWarnings.ts",
    "content": "/**\n * Ignore some yellowbox warnings. Some of these are for deprecated functions\n * that we haven't gotten around to replacing yet.\n */\nimport { LogBox } from \"react-native\"\n\n// prettier-ignore\nLogBox.ignoreLogs([\n  \"Require cycle:\",\n])\n"
  },
  {
    "path": "apps/example-app/app/utils/openLinkInBrowser.ts",
    "content": "import { Linking } from \"react-native\"\n\n/**\n * Helper for opening a give URL in an external browser.\n */\nexport function openLinkInBrowser(url: string) {\n  Linking.canOpenURL(url).then((canOpen) => canOpen && Linking.openURL(url))\n}\n"
  },
  {
    "path": "apps/example-app/app/utils/storage/index.ts",
    "content": "export * from \"./storage\"\n"
  },
  {
    "path": "apps/example-app/app/utils/storage/storage.test.ts",
    "content": "import AsyncStorage from \"@react-native-async-storage/async-storage\"\nimport { load, loadString, save, saveString, clear, remove } from \"./storage\"\n\n// fixtures\nconst VALUE_OBJECT = { x: 1 }\nconst VALUE_STRING = JSON.stringify(VALUE_OBJECT)\n\nbeforeEach(() => (AsyncStorage.getItem as jest.Mock).mockReturnValue(Promise.resolve(VALUE_STRING)))\nafterEach(() => jest.clearAllMocks())\n\ntest(\"load\", async () => {\n  const value = await load(\"something\")\n  expect(value).toEqual(JSON.parse(VALUE_STRING))\n})\n\ntest(\"loadString\", async () => {\n  const value = await loadString(\"something\")\n  expect(value).toEqual(VALUE_STRING)\n})\n\ntest(\"save\", async () => {\n  await save(\"something\", VALUE_OBJECT)\n  expect(AsyncStorage.setItem).toHaveBeenCalledWith(\"something\", VALUE_STRING)\n})\n\ntest(\"saveString\", async () => {\n  await saveString(\"something\", VALUE_STRING)\n  expect(AsyncStorage.setItem).toHaveBeenCalledWith(\"something\", VALUE_STRING)\n})\n\ntest(\"remove\", async () => {\n  await remove(\"something\")\n  expect(AsyncStorage.removeItem).toHaveBeenCalledWith(\"something\")\n})\n\ntest(\"clear\", async () => {\n  await clear()\n  expect(AsyncStorage.clear).toHaveBeenCalledWith()\n})\n"
  },
  {
    "path": "apps/example-app/app/utils/storage/storage.ts",
    "content": "import AsyncStorage from \"@react-native-async-storage/async-storage\"\n\n/**\n * Loads a string from storage.\n *\n * @param key The key to fetch.\n */\nexport async function loadString(key: string): Promise<string | null> {\n  try {\n    return await AsyncStorage.getItem(key)\n  } catch {\n    // not sure why this would fail... even reading the RN docs I'm unclear\n    return null\n  }\n}\n\n/**\n * Saves a string to storage.\n *\n * @param key The key to fetch.\n * @param value The value to store.\n */\nexport async function saveString(key: string, value: string): Promise<boolean> {\n  try {\n    await AsyncStorage.setItem(key, value)\n    return true\n  } catch {\n    return false\n  }\n}\n\n/**\n * Loads something from storage and runs it thru JSON.parse.\n *\n * @param key The key to fetch.\n */\nexport async function load(key: string): Promise<unknown | null> {\n  try {\n    const almostThere = await AsyncStorage.getItem(key)\n    return JSON.parse(almostThere ?? \"\")\n  } catch {\n    return null\n  }\n}\n\n/**\n * Saves an object to storage.\n *\n * @param key The key to fetch.\n * @param value The value to store.\n */\nexport async function save(key: string, value: unknown): Promise<boolean> {\n  try {\n    await AsyncStorage.setItem(key, JSON.stringify(value))\n    return true\n  } catch {\n    return false\n  }\n}\n\n/**\n * Removes something from storage.\n *\n * @param key The key to kill.\n */\nexport async function remove(key: string): Promise<void> {\n  try {\n    await AsyncStorage.removeItem(key)\n  } catch {}\n}\n\n/**\n * Burn it all to the ground.\n */\nexport async function clear(): Promise<void> {\n  try {\n    await AsyncStorage.clear()\n  } catch {}\n}\n"
  },
  {
    "path": "apps/example-app/app/utils/useIsMounted.ts",
    "content": "import { useEffect, useCallback, useRef } from \"react\"\n\nexport function useIsMounted() {\n  const isMounted = useRef(false)\n\n  useEffect(() => {\n    isMounted.current = true\n\n    return () => {\n      isMounted.current = false\n    }\n  }, [])\n\n  return useCallback(() => isMounted.current, [])\n}\n"
  },
  {
    "path": "apps/example-app/app/utils/useSafeAreaInsetsStyle.ts",
    "content": "import { FlexStyle } from \"react-native\"\nimport { Edge, useSafeAreaInsets } from \"react-native-safe-area-context\"\n\nexport type ExtendedEdge = Edge | \"start\" | \"end\"\n\nconst propertySuffixMap = {\n  top: \"Top\",\n  bottom: \"Bottom\",\n  left: \"Start\",\n  right: \"End\",\n  start: \"Start\",\n  end: \"End\",\n}\n\nconst edgeInsetMap: Record<string, Edge> = {\n  start: \"left\",\n  end: \"right\",\n}\n\n/**\n * A hook that can be used to create a safe-area-aware style object that can be passed directly to a View.\n *\n * - [Documentation and Examples](https://github.com/infinitered/ignite/blob/master/docs/Utils-useSafeAreaInsetsStyle.md)\n */\nexport function useSafeAreaInsetsStyle(\n  safeAreaEdges: ExtendedEdge[] = [],\n  property: \"padding\" | \"margin\" = \"padding\",\n): Pick<\n  FlexStyle,\n  | \"marginBottom\"\n  | \"marginEnd\"\n  | \"marginStart\"\n  | \"marginTop\"\n  | \"paddingBottom\"\n  | \"paddingEnd\"\n  | \"paddingStart\"\n  | \"paddingTop\"\n> {\n  const insets = useSafeAreaInsets()\n\n  return safeAreaEdges.reduce((acc, e) => {\n    const value = edgeInsetMap[e] ?? e\n    return { ...acc, [`${property}${propertySuffixMap[e]}`]: insets[value] }\n  }, {})\n}\n"
  },
  {
    "path": "apps/example-app/app.json",
    "content": "{\n  \"name\": \"example-app\",\n  \"displayName\": \"example-app\",\n  \"expo\": {\n    \"name\": \"example-app\",\n    \"slug\": \"example-app\",\n    \"scheme\": \"example-app\",\n    \"version\": \"1.0.0\",\n    \"orientation\": \"portrait\",\n    \"icon\": \"./assets/images/app-icon-all.png\",\n    \"splash\": {\n      \"image\": \"./assets/images/splash-logo-all.png\",\n      \"resizeMode\": \"contain\",\n      \"backgroundColor\": \"#191015\"\n    },\n    \"updates\": {\n      \"fallbackToCacheTimeout\": 0\n    },\n    \"jsEngine\": \"hermes\",\n    \"assetBundlePatterns\": [\n      \"**/*\"\n    ],\n    \"android\": {\n      \"icon\": \"./assets/images/app-icon-android-legacy.png\",\n      \"package\": \"com.exampleapp\",\n      \"adaptiveIcon\": {\n        \"foregroundImage\": \"./assets/images/app-icon-android-adaptive-foreground.png\",\n        \"backgroundImage\": \"./assets/images/app-icon-android-adaptive-background.png\"\n      },\n      \"splash\": {\n        \"image\": \"./assets/images/splash-logo-android-universal.png\",\n        \"resizeMode\": \"contain\",\n        \"backgroundColor\": \"#191015\"\n      }\n    },\n    \"ios\": {\n      \"icon\": \"./assets/images/app-icon-ios.png\",\n      \"supportsTablet\": true,\n      \"bundleIdentifier\": \"com.exampleapp\",\n      \"splash\": {\n        \"image\": \"./assets/images/splash-logo-ios-mobile.png\",\n        \"tabletImage\": \"./assets/images/splash-logo-ios-tablet.png\",\n        \"resizeMode\": \"contain\",\n        \"backgroundColor\": \"#191015\"\n      }\n    },\n    \"web\": {\n      \"favicon\": \"./assets/images/app-icon-web-favicon.png\",\n      \"splash\": {\n        \"image\": \"./assets/images/splash-logo-web.png\",\n        \"resizeMode\": \"contain\",\n        \"backgroundColor\": \"#191015\"\n      },\n      \"bundler\": \"metro\"\n    },\n    \"plugins\": [\n      \"expo-localization\",\n      [\n        \"expo-build-properties\",\n        {\n          \"ios\": {\n            \"newArchEnabled\": false\n          },\n          \"android\": {\n            \"newArchEnabled\": false\n          }\n        }\n      ],\n      \"expo-font\"\n    ],\n    \"experiments\": {\n      \"tsconfigPaths\": true\n    }\n  },\n  \"ignite\": {\n    \"version\": \"9.4.0\"\n  }\n}\n"
  },
  {
    "path": "apps/example-app/babel.config.js",
    "content": "/** @type {import('@babel/core').TransformOptions['plugins']} */\nconst plugins = []\n\n/** @type {import('@babel/core').TransformOptions} */\nmodule.exports = function (api) {\n  api.cache(true)\n  return {\n    assumptions: {\n      setPublicClassFields: true,\n      privateFieldsAsSymbols: true,\n    },\n    presets: [\"babel-preset-expo\"],\n    env: {\n      production: {},\n    },\n    plugins,\n  }\n}\n"
  },
  {
    "path": "apps/example-app/eas.json",
    "content": "{\n  \"cli\": {\n    \"version\": \">= 3.15.1\"\n  },\n  \"build\": {\n    \"development\": {\n      \"extends\": \"production\",\n      \"distribution\": \"internal\",\n      \"android\": {\n        \"gradleCommand\": \":app:assembleDebug\"\n      },\n      \"ios\": {\n        \"buildConfiguration\": \"Debug\",\n        \"simulator\": true\n      }\n    },\n    \"development:device\": {\n      \"extends\": \"development\",\n      \"distribution\": \"internal\",\n      \"ios\": {\n        \"buildConfiguration\": \"Debug\",\n        \"simulator\": false\n      }\n    },\n    \"preview\": {\n      \"extends\": \"production\",\n      \"distribution\": \"internal\",\n      \"ios\": { \"simulator\": true },\n      \"android\": { \"buildType\": \"apk\" }\n    },\n    \"preview:device\": {\n      \"extends\": \"preview\",\n      \"ios\": { \"simulator\": false }\n    },\n    \"production\": {}\n  },\n  \"submit\": {\n    \"production\": {}\n  }\n}\n"
  },
  {
    "path": "apps/example-app/index.js",
    "content": "import { registerRootComponent } from \"expo\"\n\nimport App from \"./App\"\n\n// registerRootComponent calls AppRegistry.registerComponent('main', () => App);\n// It also ensures that whether you load the app in Expo Go or in a native build,\n// the environment is set up appropriately\nregisterRootComponent(App)\n"
  },
  {
    "path": "apps/example-app/jest.config.js",
    "content": "const { defaults: tsjPreset } = require(\"ts-jest/presets\")\n\n/** @type {import('@jest/types').Config.ProjectConfig} */\nmodule.exports = {\n  ...tsjPreset,\n  preset: \"jest-expo\",\n  transformIgnorePatterns: [\n    \"<rootDir>/node_modules/(react-clone-referenced-element|@react-native-community|react-navigation|@react-navigation/.*|@unimodules/.*|native-base|react-native-code-push)\",\n    \"jest-runner\",\n  ],\n  testPathIgnorePatterns: [\"<rootDir>/node_modules/\", \"<rootDir>/.maestro/\", \"@react-native\"],\n  testEnvironment: \"jsdom\",\n  setupFiles: [\"<rootDir>/test/setup.ts\"],\n  transform: {\n    \"^.+\\\\.test.tsx?$\": [\n      \"ts-jest\",\n      {\n        tsconfig: \"<rootDir>/test/test-tsconfig.json\",\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "apps/example-app/metro.config.js",
    "content": "// Learn more https://docs.expo.io/guides/customizing-metro\nconst { getDefaultConfig } = require(\"expo/metro-config\")\nconst path = require(\"path\")\n\n// Find the project and workspace directories\nconst projectRoot = __dirname\n\n// This can be replaced with `find-yarn-workspace-root`\nconst workspaceRoot = path.resolve(projectRoot, \"../..\")\n\n/** @type {import('expo/metro-config').MetroConfig} */\nconst config = getDefaultConfig(projectRoot)\n\n// 1. Watch all files within the monorepo\nconfig.watchFolders = [workspaceRoot]\n\n// 2. Let Metro know where to resolve packages and in what order\nconfig.resolver.nodeModulesPaths = [\n  path.resolve(projectRoot, \"node_modules\"),\n  path.resolve(workspaceRoot, \"node_modules\"),\n]\n\nconfig.transformer.getTransformOptions = async () => ({\n  transform: {\n    experimentalImportSupport: false,\n    inlineRequires: true,\n  },\n})\n\nmodule.exports = config\n"
  },
  {
    "path": "apps/example-app/package.json",
    "content": "{\n  \"name\": \"example-app\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"compile\": \"tsc --noEmit -p . --pretty\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"lint\": \"eslint App.tsx app test --fix --ext .js,.ts,.tsx && npm run format\",\n    \"patch\": \"patch-package\",\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"test:maestro\": \"maestro test .maestro/FavoritePodcast.yaml\",\n    \"adb\": \"adb reverse tcp:9090 tcp:9090 && adb reverse tcp:3000 tcp:3000 && adb reverse tcp:9001 tcp:9001 && adb reverse tcp:8081 tcp:8081\",\n    \"postinstall\": \"patch-package\",\n    \"bundle:visualize\": \"npx react-native-bundle-visualizer\",\n    \"bundle:visualize:dev\": \"npx react-native-bundle-visualizer --dev\",\n    \"build:ios:sim\": \"eas build --profile development --platform ios --local\",\n    \"build:ios:dev\": \"eas build --profile development:device --platform ios --local\",\n    \"build:ios:prod\": \"eas build --profile production --platform ios --local\",\n    \"build:android:sim\": \"eas build --profile development --platform android --local\",\n    \"build:android:dev\": \"eas build --profile development:device --platform android --local\",\n    \"build:android:prod\": \"eas build --profile production --platform android --local\",\n    \"start\": \"npx expo start\",\n    \"android\": \"expo run:android\",\n    \"ios\": \"expo run:ios\",\n    \"web\": \"npx expo start --web\",\n    \"bundle:web\": \"npx expo export --platform web\",\n    \"serve:web\": \"npx server dist\",\n    \"prebuild:clean\": \"npx expo prebuild --clean\",\n    \"prebuild\": \"npx expo prebuild\"\n  },\n  \"dependencies\": {\n    \"@expo-google-fonts/space-grotesk\": \"^0.2.2\",\n    \"@react-native-async-storage/async-storage\": \"1.23.1\",\n    \"@react-navigation/native\": \"^6.0.2\",\n    \"@react-navigation/native-stack\": \"^6.0.2\",\n    \"@reduxjs/toolkit\": \"^2.1.0\",\n    \"@shopify/flash-list\": \"1.6.4\",\n    \"apisauce\": \"3.0.1\",\n    \"date-fns\": \"^2.30.0\",\n    \"expo\": \"~51.0.39\",\n    \"expo-build-properties\": \"~0.12.5\",\n    \"expo-font\": \"~12.0.10\",\n    \"expo-linear-gradient\": \"~13.0.2\",\n    \"expo-linking\": \"~6.3.1\",\n    \"expo-localization\": \"~15.0.3\",\n    \"expo-splash-screen\": \"~0.27.7\",\n    \"expo-status-bar\": \"~1.12.1\",\n    \"i18n-js\": \"3.9.2\",\n    \"mobx\": \"6.10.2\",\n    \"mobx-react-lite\": \"4.0.5\",\n    \"mobx-state-tree\": \"5.3.0\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"react-native\": \"0.74.5\",\n    \"react-native-gesture-handler\": \"~2.16.1\",\n    \"react-native-safe-area-context\": \"4.10.5\",\n    \"react-native-screens\": \"3.32.0\",\n    \"react-native-view-shot\": \"3.8.0\",\n    \"react-native-web\": \"~0.19.6\",\n    \"react-redux\": \"^9.1.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.24.0\",\n    \"@babel/plugin-proposal-export-namespace-from\": \"^7.18.9\",\n    \"@babel/plugin-proposal-nullish-coalescing-operator\": \"^7.0.0\",\n    \"@babel/plugin-proposal-optional-chaining\": \"^7.0.0\",\n    \"@babel/plugin-transform-arrow-functions\": \"^7.0.0\",\n    \"@babel/plugin-transform-shorthand-properties\": \"^7.0.0\",\n    \"@babel/plugin-transform-template-literals\": \"^7.0.0\",\n    \"@babel/preset-env\": \"^7.20.0\",\n    \"@babel/runtime\": \"^7.20.0\",\n    \"@types/i18n-js\": \"3.8.2\",\n    \"@types/jest\": \"^29.2.1\",\n    \"@types/node\": \"^20.11.30\",\n    \"@types/react\": \"~18.2.79\",\n    \"@types/react-test-renderer\": \"^18.0.0\",\n    \"@types/redux-logger\": \"^3.0.13\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.59.0\",\n    \"@typescript-eslint/parser\": \"^5.59.0\",\n    \"babel-jest\": \"^29.2.1\",\n    \"eslint\": \"8.17.0\",\n    \"eslint-config-prettier\": \"8.5.0\",\n    \"eslint-config-standard\": \"17.0.0\",\n    \"eslint-plugin-import\": \"2.26.0\",\n    \"eslint-plugin-n\": \"^15.0.0\",\n    \"eslint-plugin-node\": \"11.1.0\",\n    \"eslint-plugin-promise\": \"6.0.0\",\n    \"eslint-plugin-react\": \"7.30.0\",\n    \"eslint-plugin-react-native\": \"4.0.0\",\n    \"eslint-plugin-reactotron\": \"workspace:*\",\n    \"jest\": \"^29.2.1\",\n    \"jest-expo\": \"~51.0.4\",\n    \"patch-package\": \"6.4.7\",\n    \"postinstall-prepare\": \"1.0.1\",\n    \"prettier\": \"2.8.8\",\n    \"react-test-renderer\": \"18.2.0\",\n    \"reactotron-core-client\": \"workspace:*\",\n    \"reactotron-mst\": \"workspace:*\",\n    \"reactotron-react-js\": \"workspace:*\",\n    \"reactotron-react-native\": \"workspace:*\",\n    \"reactotron-redux\": \"workspace:*\",\n    \"ts-jest\": \"^29.1.1\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"5.3.2\"\n  },\n  \"expo\": {\n    \"install\": {\n      \"exclude\": [\n        \"typescript\"\n      ]\n    }\n  },\n  \"engines\": {\n    \"node\": \">=16\"\n  },\n  \"eslintConfig\": {\n    \"root\": true,\n    \"parser\": \"@typescript-eslint/parser\",\n    \"extends\": [\n      \"plugin:@typescript-eslint/recommended\",\n      \"plugin:react/recommended\",\n      \"plugin:react-native/all\",\n      \"standard\",\n      \"prettier\"\n    ],\n    \"plugins\": [\n      \"@typescript-eslint\",\n      \"react\",\n      \"react-native\",\n      \"reactotron\"\n    ],\n    \"parserOptions\": {\n      \"ecmaFeatures\": {\n        \"jsx\": true\n      }\n    },\n    \"settings\": {\n      \"react\": {\n        \"pragma\": \"React\",\n        \"version\": \"detect\"\n      }\n    },\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    },\n    \"rules\": {\n      \"@typescript-eslint/ban-ts-ignore\": 0,\n      \"@typescript-eslint/ban-ts-comment\": 0,\n      \"@typescript-eslint/explicit-function-return-type\": 0,\n      \"@typescript-eslint/explicit-member-accessibility\": 0,\n      \"@typescript-eslint/explicit-module-boundary-types\": 0,\n      \"@typescript-eslint/indent\": 0,\n      \"@typescript-eslint/member-delimiter-style\": 0,\n      \"@typescript-eslint/no-empty-interface\": 0,\n      \"@typescript-eslint/no-explicit-any\": 0,\n      \"@typescript-eslint/no-object-literal-type-assertion\": 0,\n      \"@typescript-eslint/no-var-requires\": 0,\n      \"@typescript-eslint/no-unused-vars\": [\n        \"error\",\n        {\n          \"argsIgnorePattern\": \"^_\",\n          \"varsIgnorePattern\": \"^_\"\n        }\n      ],\n      \"comma-dangle\": 0,\n      \"multiline-ternary\": 0,\n      \"no-undef\": 0,\n      \"no-unused-vars\": 0,\n      \"no-use-before-define\": 0,\n      \"no-global-assign\": 0,\n      \"quotes\": 0,\n      \"react-native/no-raw-text\": 0,\n      \"react/no-unescaped-entities\": 0,\n      \"react/prop-types\": 0,\n      \"space-before-function-paren\": 0,\n      \"reactotron/no-tron-in-production\": \"error\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/example-app/plugins/withSplashScreen.ts",
    "content": "import { ConfigPlugin, withStringsXml, AndroidConfig, withAndroidStyles } from \"expo/config-plugins\"\n\n/**\n *\n * Expo Config Plugin to help address the double splash screen issue with `expo-splash-screen`\n * See more information about this issue here: https://github.com/expo/expo/issues/16084\n *\n * How it works:\n *   1) Replace the default splash screen with a transparent screen\n *   2) Set the splash screen status bar to translucent\n */\nexport const withSplashScreen: ConfigPlugin = (config) => {\n  config = withAndroidSplashScreen(config)\n  return config\n}\n\n/**\n * Android implementation of the config plugin - the only platform needed for this plugin.\n * However, it is good practice to break up your config plugins from the exported\n * function into parts by platform. For example, if it was needed, we would also\n * add `withIosSplashScreen` for the iOS implementation.\n */\nconst withAndroidSplashScreen: ConfigPlugin = (config) => {\n  config = withCustomStylesXml(config)\n  config = withCustomStringsXml(config)\n  return config\n}\n\n/**\n * Modifies the `android/app/src/main/res/values/strings.xml` file to add the following string:\n *\n * <string name=\"expo_splash_screen_status_bar_translucent\" translatable=\"false\">true</string>\n */\nconst withCustomStringsXml: ConfigPlugin = (config) =>\n  withStringsXml(config, (modConfig) => {\n    modConfig.modResults = AndroidConfig.Strings.setStringItem(\n      [\n        {\n          _: \"true\",\n          $: {\n            name: \"expo_splash_screen_status_bar_translucent\",\n            translatable: \"false\",\n          },\n        },\n      ],\n      modConfig.modResults\n    )\n    return modConfig\n  })\n\n/**\n * Modifies the `android/app/src/main/res/values/styles.xml` file to append the\n * the following to the Theme.App.SplashScreen style:\n *\n * <item name=\"android:windowIsTranslucent\">true</item>\n */\nconst withCustomStylesXml: ConfigPlugin = (config) =>\n  withAndroidStyles(config, async (modConfig) => {\n    modConfig.modResults = AndroidConfig.Styles.assignStylesValue(modConfig.modResults, {\n      add: true,\n      name: \"android:windowIsTranslucent\",\n      value: \"true\",\n      parent: {\n        name: \"Theme.App.SplashScreen\",\n        parent: \"AppTheme\",\n      },\n    })\n    return modConfig\n  })\n"
  },
  {
    "path": "apps/example-app/react-native.config.js",
    "content": "module.exports = {\n  assets: [\n    // TODO: link documentation about fonts to this section\n    // If you need to add non-google fonts (those not available through the `@expo-google-fonts/**`\n    // packages, you can add them to the referenced path below and uncomment this line.\n    // \"./assets/fonts/\"\n  ],\n\n  // This prevents FlashList from rendering a large red box.\n  // See: https://github.com/reactwg/react-native-new-architecture/discussions/135\n  // Remove when FlashList fully supports the new architecture.\n  // https://github.com/Shopify/flash-list/pull/550\n  //\n  project: {\n    android: {\n      unstable_reactLegacyComponentNames: [\"CellContainer\", \"AutoLayoutView\"],\n    },\n    ios: {\n      unstable_reactLegacyComponentNames: [\"CellContainer\", \"AutoLayoutView\"],\n    },\n  },\n}\n"
  },
  {
    "path": "apps/example-app/test/i18n.test.ts",
    "content": "import en from \"../app/i18n/en\"\nimport { exec } from \"child_process\"\n\n// Use this array for keys that for whatever reason aren't greppable so they\n// don't hold your test suite hostage by always failing.\nconst EXCEPTIONS: string[] = [\n  // \"welcomeScreen.readyForLaunch\",\n]\n\nfunction iterate(obj, stack, array) {\n  for (const property in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, property)) {\n      if (typeof (obj as object)[property] === \"object\") {\n        iterate(obj[property], `${stack}.${property}`, array)\n      } else {\n        array.push(`${stack.slice(1)}.${property}`)\n      }\n    }\n  }\n\n  return array\n}\n\n/**\n * This tests your codebase for missing i18n strings so you can avoid error strings at render time\n *\n * It was taken from https://gist.github.com/Michaelvilleneuve/8808ba2775536665d95b7577c9d8d5a1\n * and modified slightly to account for our Ignite higher order components,\n * which take 'tx' and 'fooTx' props.\n * The grep command is nasty looking, but it's essentially searching the codebase for a few different things:\n *\n * tx=\"*\"\n * Tx=\"\"\n * tx={\"\"}\n * Tx={\"\"}\n * translate(\"\"\n *\n * and then grabs the i18n key between the double quotes\n *\n * This approach isn't 100% perfect. If you are storing your key string in a variable because you\n * are setting it conditionally, then it won't be picked up.\n *\n */\n\ndescribe(\"i18n\", () => {\n  test(\"There are no missing keys\", (done) => {\n    // Actual command output:\n    // grep \"[T\\|t]x=[{]\\?\\\"\\S*\\\"[}]\\?\\|translate(\\\"\\S*\\\"\" -ohr './app' | grep -o \"\\\".*\\\"\"\n    const command = `grep \"[T\\\\|t]x=[{]\\\\?\\\\\"\\\\S*\\\\\"[}]\\\\?\\\\|translate(\\\\\"\\\\S*\\\\\"\" -ohr './app' | grep -o \"\\\\\".*\\\\\"\"`\n    exec(command, (_, stdout) => {\n      const allTranslationsDefined = iterate(en, \"\", [])\n      const allTranslationsUsed = stdout.replace(/\"/g, \"\").split(\"\\n\")\n      allTranslationsUsed.splice(-1, 1)\n\n      for (let i = 0; i < allTranslationsUsed.length; i += 1) {\n        if (!EXCEPTIONS.includes(allTranslationsUsed[i])) {\n          // You can add keys to EXCEPTIONS (above) if you don't want them included in the test\n          expect(allTranslationsDefined).toContainEqual(allTranslationsUsed[i])\n        }\n      }\n      done()\n    })\n  }, 240000)\n})\n"
  },
  {
    "path": "apps/example-app/test/mockFile.ts",
    "content": "export default {\n  height: 100,\n  width: 100,\n  scale: 2.0,\n  uri: \"https://placekitten.com/200/200\",\n}\n"
  },
  {
    "path": "apps/example-app/test/setup.ts",
    "content": "// we always make sure 'react-native' gets included first\nimport * as ReactNative from \"react-native\"\nimport mockFile from \"./mockFile\"\n\n// libraries to mock\njest.doMock(\"react-native\", () => {\n  // Extend ReactNative\n  return Object.setPrototypeOf(\n    {\n      Image: {\n        ...ReactNative.Image,\n        resolveAssetSource: jest.fn((_source) => mockFile), // eslint-disable-line @typescript-eslint/no-unused-vars\n        getSize: jest.fn(\n          (\n            uri: string, // eslint-disable-line @typescript-eslint/no-unused-vars\n            success: (width: number, height: number) => void,\n            failure?: (_error: any) => void // eslint-disable-line @typescript-eslint/no-unused-vars\n          ) => success(100, 100)\n        ),\n      },\n    },\n    ReactNative\n  )\n})\n\njest.mock(\"@react-native-async-storage/async-storage\", () =>\n  require(\"@react-native-async-storage/async-storage/jest/async-storage-mock\")\n)\n\njest.mock(\"i18n-js\", () => ({\n  currentLocale: () => \"en\",\n  t: (key: string, params: Record<string, string>) => {\n    return `${key} ${JSON.stringify(params)}`\n  },\n}))\n\ndeclare const tron // eslint-disable-line @typescript-eslint/no-unused-vars\n\njest.useFakeTimers()\ndeclare global {\n  let __TEST__: boolean\n}\n"
  },
  {
    "path": "apps/example-app/test/test-tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"jsx\": \"react-native\",\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": false,\n    \"sourceMap\": true,\n    \"target\": \"esnext\",\n    \"lib\": [\"esnext\", \"dom\"],\n    \"skipLibCheck\": true,\n    \"resolveJsonModule\": true\n  },\n  \"include\": [\"**/*.test.ts\", \"**/*.test.tsx\"]\n}\n"
  },
  {
    "path": "apps/example-app/tsconfig.json",
    "content": "{\n  \"extends\": [\"../../tsconfig.base.json\", \"expo/tsconfig.base\"],\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"jsx\": \"react-native\",\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"strict\": true,\n    \"noImplicitAny\": true,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"esnext\",\n    \"lib\": [\"esnext\", \"dom\"],\n    \"skipLibCheck\": true,\n    \"resolveJsonModule\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"app/*\": [\"./app/*\"],\n      \"assets/*\": [\"./assets/*\"]\n    }\n  },\n  \"ts-node\": {\n    \"compilerOptions\": {\n      // compilerOptions specified here will override those declared above,\n      // but *only* in ts-node.  Useful if you want ts-node and tsc to use\n      // different options with a single tsconfig.json.\n      \"module\": \"commonjs\"\n    }\n  },\n  \"include\": [\"index.js\", \"App.tsx\", \"app\", \"types\", \"plugins\", \"app.config.ts\"],\n  \"exclude\": [\"node_modules\", \"test/**/*\"]\n}\n"
  },
  {
    "path": "apps/example-app/types/lib.es5.d.ts",
    "content": "/**\n * Fixes https://github.com/microsoft/TypeScript/issues/16655 for `Array.prototype.filter()`\n * For example, using the fix the type of `bar` is `string[]` in the below snippet as it should be.\n *\n *  const foo: (string | null | undefined)[] = [];\n *  const bar = foo.filter(Boolean);\n *\n * For related definitions, see https://github.com/microsoft/TypeScript/blob/master/src/lib/es5.d.ts\n *\n * Original licenses apply, see\n *  - https://github.com/microsoft/TypeScript/blob/master/LICENSE.txt\n *  - https://stackoverflow.com/help/licensing\n */\n\n/** See https://stackoverflow.com/a/51390763/1470607  */\ntype Falsy = false | 0 | \"\" | null | undefined\n\ninterface Array<T> {\n  /**\n   * Returns the elements of an array that meet the condition specified in a callback function.\n   * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.\n   * @param thisArg An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.\n   */\n  filter<S extends T>(predicate: BooleanConstructor, thisArg?: any): Exclude<S, Falsy>[]\n}\n"
  },
  {
    "path": "apps/reactotron-app/.gitattributes",
    "content": "* text=auto\n*.bat text eol=crlf\n"
  },
  {
    "path": "apps/reactotron-app/.github/ISSUE_TEMPLATE/issue_template.md",
    "content": "---\nname: File An Issue\nabout: Report an issue with Reactotron\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\nIf you have a general question, please ask it in the #reactotron channel of the\n[Infinite Red Community slack](https://community.infinite.red/).\n\nWhen reporting a bug, please include steps to reproduce the issue.\n"
  },
  {
    "path": "apps/reactotron-app/.gitignore",
    "content": ".vscode\njsconfig.json\n\n# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n.eslintcache\n\n# Dependency directory\n# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git\nnode_modules\nyarn-error.log\n\n# OSX\n.DS_Store\n\n# flow-typed\nflow-typed/npm/*\n!flow-typed/npm/module_vx.x.x.js\n\n# App packaged\nrelease\nsrc/main.prod.js\nsrc/main.prod.js.map\nsrc/renderer.prod.js\nsrc/renderer.prod.js.map\nsrc/style.css\nsrc/style.css.map\ndist\ndll\nmain.js\nmain.js.map\n\n.idea\nnpm-debug.log.*\n\nTODO\n\nvendor/"
  },
  {
    "path": "apps/reactotron-app/.storybook/addons.js",
    "content": "import \"@storybook/addon-actions/register\"\nimport \"@storybook/addon-links/register\"\nimport \"@storybook/addon-knobs/register\"\n"
  },
  {
    "path": "apps/reactotron-app/.storybook/config.js",
    "content": "import React from \"react\"\nimport { configure, addDecorator } from \"@storybook/react\"\nimport { withKnobs } from \"@storybook/addon-knobs\"\nimport { ReactotronProvider } from \"reactotron-core-ui\"\n\nconst StyledDecorator = (storyFn) => <ReactotronProvider>{storyFn()}</ReactotronProvider>\naddDecorator(StyledDecorator)\naddDecorator(withKnobs)\n\nconfigure(require.context(\"../src\", true, /\\.story\\.tsx$/), module)\n"
  },
  {
    "path": "apps/reactotron-app/.storybook/webpack.config.js",
    "content": "module.exports = async ({ config }) => {\n  const newConfig = {\n    ...config,\n    module: {\n      ...config.module,\n      rules: [\n        ...config.module.rules.map((rule) => {\n          if (!rule.use || !rule.use.some((loader) => loader.loader === \"babel-loader\")) return rule\n\n          return {\n            ...rule,\n            test: /\\.(mjs|jsx?|tsx?)$/,\n            use: [\n              ...rule.use.map((loader) => {\n                if (loader.loader !== \"babel-loader\") return loader\n\n                return {\n                  ...loader,\n                  options: {\n                    ...loader.options,\n                    presets: [...loader.options.presets, \"@babel/preset-typescript\"],\n                  },\n                }\n              }),\n            ],\n          }\n        }),\n      ],\n    },\n    resolve: {\n      ...config.resolve,\n      extensions: [\".ts\", \".tsx\", ...config.resolve.extensions],\n    },\n  }\n\n  return newConfig\n}\n"
  },
  {
    "path": "apps/reactotron-app/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [3.8.2](https://github.com/infinitered/reactotron/compare/reactotron-app@3.8.1...reactotron-app@3.8.2) (2025-10-01)\n\n### [3.8.1](https://github.com/infinitered/reactotron/compare/reactotron-app@3.8.0...reactotron-app@3.8.1) (2025-10-01)\n\n## [3.8.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.8...reactotron-app@3.8.0) (2025-09-16)\n\n\n### Features\n\n* **reactotron-app:** add exports for timeline logs ([#1533](https://github.com/infinitered/reactotron/issues/1533) by [@denis-remitly](https://github.com/denis-remitly)) ([88be6b8](https://github.com/infinitered/reactotron/commit/88be6b839f9ff807a87a0fef4d9d31ccc3250f79))\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** Move commandListener callbacks outside of render cycle ([#1544](https://github.com/infinitered/reactotron/issues/1544) by [@jamonholmgren](https://github.com/jamonholmgren)) ([a4bbe6d](https://github.com/infinitered/reactotron/commit/a4bbe6dd302550d16a403d063f2cdd906f048303))\n\n### [3.7.8](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.7...reactotron-app@3.7.8) (2025-03-17)\n\n\n### Bug Fixes\n\n* **reactotron-app:** fix unescaped regex symbols crash ([#1550](https://github.com/infinitered/reactotron/issues/1550) by [@camilossantos2809](https://github.com/camilossantos2809)) ([0ecaa1d](https://github.com/infinitered/reactotron/commit/0ecaa1dd0c89afa869bc80c05fd21356562bfc7b)), closes [#1541](https://github.com/infinitered/reactotron/issues/1541)\n\n### [3.7.7](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.6...reactotron-app@3.7.7) (2025-03-01)\n\n### [3.7.6](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.5...reactotron-app@3.7.6) (2025-02-12)\n\n### [3.7.5](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.4...reactotron-app@3.7.5) (2025-02-03)\n\n### [3.7.4](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.3...reactotron-app@3.7.4) (2024-11-14)\n\n\n### Bug Fixes\n\n* Removing react-native-flipper ([#1524](https://github.com/infinitered/reactotron/issues/1524)) ([b1e7022](https://github.com/infinitered/reactotron/commit/b1e7022f8dab52896bc0f058bc877ae767bf1aee)), closes [#1333](https://github.com/infinitered/reactotron/issues/1333)\n\n### [3.7.3](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.2...reactotron-app@3.7.3) (2024-10-17)\n\n\n### Bug Fixes\n\n* **reactotron-app:** proper separators in view menu ([#1492](https://github.com/infinitered/reactotron/issues/1492) by @DIntriglia) ([39893d8](https://github.com/infinitered/reactotron/commit/39893d8f6ed8b614e83a414325233bf752074dbb))\n* **reactotron-app:** Timeline empty state improvements ([#1395](https://github.com/infinitered/reactotron/issues/1395) by [@carlinisaacson](https://github.com/carlinisaacson)) ([f1472d7](https://github.com/infinitered/reactotron/commit/f1472d7863e9640efa74203608769b14b641deec))\n\n### [3.7.2](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.1...reactotron-app@3.7.2) (2024-08-26)\n\n### [3.7.1](https://github.com/infinitered/reactotron/compare/reactotron-app@3.7.0...reactotron-app@3.7.1) (2024-04-04)\n\n## [3.7.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.6.2...reactotron-app@3.7.0) (2024-02-16)\n\n\n### Features\n\n* **reactotron-app:** Timeline deep-search ([#1417](https://github.com/infinitered/reactotron/issues/1417)) ([8d0e952](https://github.com/infinitered/reactotron/commit/8d0e9525ac30e895f38a0c2f99eeda155c14527f)), closes [#1181](https://github.com/infinitered/reactotron/issues/1181)\n\n### [3.6.2](https://github.com/infinitered/reactotron/compare/reactotron-app@3.6.1...reactotron-app@3.6.2) (2024-02-14)\n\n## [3.6.1](https://github.com/infinitered/reactotron/compare/reactotron-app@3.6.0...reactotron-app@3.6.1) (2024-02-14)\n\n\n### Bug Fixes\n\n* **reactotron-app:** added min width and height of electron window ([#1429](https://github.com/infinitered/reactotron/issues/1429)) ([a4467a2](https://github.com/infinitered/reactotron/commit/a4467a2d42a0532627d946578101379fe827436c))\n\n## [3.6.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.5.1...reactotron-app@3.6.0) (2024-02-14)\n\n\n### Features\n\n* **example-app:** Add a LOT of functionality to the demo app ([#1424](https://github.com/infinitered/reactotron/issues/1424)) [skip ci] ([41a539c](https://github.com/infinitered/reactotron/commit/41a539c7e56e968a83ca61b100468f5267865ddd))\n* **reactotron-app:** Added Electron BrowserWindow title for Linux users ([#1425](https://github.com/infinitered/reactotron/issues/1425)) ([726f255](https://github.com/infinitered/reactotron/commit/726f255412322598717f59f10d73ea7b4279f467))\n\n### [3.5.1](https://github.com/infinitered/reactotron/compare/reactotron-app@3.5.0...reactotron-app@3.5.1) (2024-01-25)\n\n## [3.5.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.4.0...reactotron-app@3.5.0) (2024-01-24)\n\n\n### Features\n\n* **reactotron-app:** Close the timeline search on 2nd “X” press ([#1418](https://github.com/infinitered/reactotron/issues/1418)) ([8e97074](https://github.com/infinitered/reactotron/commit/8e970743f50a54c6d3b411024e929b9a33dbcbe2)), closes [#1394](https://github.com/infinitered/reactotron/issues/1394)\n\n## [3.4.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.3.1...reactotron-app@3.4.0) (2024-01-24)\n\n\n### Features\n\n* **reactotron-app:** Adds tooltips to state snapshot item commands. ([#1386](https://github.com/infinitered/reactotron/issues/1386)) ([96891ac](https://github.com/infinitered/reactotron/commit/96891ac1ef94b63e0e5b292da3b5ddaa0e87e363))\n\n### [3.3.1](https://github.com/infinitered/reactotron/compare/reactotron-app@3.3.0...reactotron-app@3.3.1) (2024-01-23)\n\n## [3.3.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.2.0...reactotron-app@3.3.0) (2024-01-17)\n\n\n### Features\n\n* make home screen default route when app starts up ([#1393](https://github.com/infinitered/reactotron/issues/1393)) ([b78afb8](https://github.com/infinitered/reactotron/commit/b78afb89ba8e5e4805f07c7bc4dd6d9e3dd9e989))\n\n## [3.2.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.1.4...reactotron-app@3.2.0) (2024-01-15)\n\n\n### Features\n\n* **reactotron-app:** Move android devices from Help to Home ([#1396](https://github.com/infinitered/reactotron/issues/1396)) ([e7547c6](https://github.com/infinitered/reactotron/commit/e7547c6f36789e089bc2cfe1964e413268be2d05))\n\n### [3.1.4](https://github.com/infinitered/reactotron/compare/reactotron-app@3.1.3...reactotron-app@3.1.4) (2023-12-22)\n\n\n### Features\n\n* Zoom font size with cmd+ and cmd- ([#1361](https://github.com/infinitered/reactotron/issues/1361)) ([51658ac](https://github.com/infinitered/reactotron/commit/51658ac8447acb56b7bbb0f64f14ebc59c21bae4))\n\n### [3.1.3](https://github.com/infinitered/reactotron/compare/reactotron-app@3.1.2...reactotron-app@3.1.3) (2023-12-19)\n\n### [3.1.2](https://github.com/infinitered/reactotron/compare/reactotron-app@3.1.1...reactotron-app@3.1.2) (2023-12-19)\n\n\n### Bug Fixes\n\n* **app:** docs link ([#1372](https://github.com/infinitered/reactotron/issues/1372) by [@frankcalise](https://github.com/frankcalise)) ([f3c75a6](https://github.com/infinitered/reactotron/commit/f3c75a6d6e7d5b8098987c09a28e5f0d9720b352))\n\n### [3.1.1](https://github.com/infinitered/reactotron/compare/reactotron-app@3.1.0...reactotron-app@3.1.1) (2023-12-13)\n\n## [3.1.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0...reactotron-app@3.1.0) (2023-12-08)\n\n\n### Features\n\n* **ui:** Display error if port is already in use ([#1335](https://github.com/infinitered/reactotron/issues/1335) by [@jamonholmgren](https://github.com/jamonholmgren)) ([e205e37](https://github.com/infinitered/reactotron/commit/e205e3704b5378b1807d781f7ba5ba3338dc7ff7))\n\n## [3.0.0](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.39...reactotron-app@3.0.0) (2023-12-05)\n\n## [3.0.0-beta.39](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.38...reactotron-app@3.0.0-beta.39) (2023-12-05)\n\n\n### Bug Fixes\n\n* **reactotron-app:** add --arm64 --x64 flags ([5015808](https://github.com/infinitered/reactotron/commit/5015808fce7c4f3eab5d087d3fb21c3dc3c0f5f0))\n\n\n### Reverts\n\n* Revert \"feat(reactotron-app): add build_app_macos_arm64 build job\" ([7be8f7f](https://github.com/infinitered/reactotron/commit/7be8f7f701728b1a77e57d4a7a5c11bc70554d27))\n\n## [3.0.0-beta.38](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.37...reactotron-app@3.0.0-beta.38) (2023-12-05)\n\n\n### Features\n\n* **reactotron-app:** add build_app_macos_arm64 build job ([46409cf](https://github.com/infinitered/reactotron/commit/46409cf33217351562f3a342a882435c19a83ff5))\n\n\n### Bug Fixes\n\n* validate package.json lol ([3ac8b9c](https://github.com/infinitered/reactotron/commit/3ac8b9c6656b8999293bec01209bfa5dc6e839d5))\n\n## [3.0.0-beta.37](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.36...reactotron-app@3.0.0-beta.37) (2023-12-05)\n\n\n### Bug Fixes\n\n* **reactotron-app:** fix notarize settings ([08320b4](https://github.com/infinitered/reactotron/commit/08320b4360bba07155deb70573a0048786477a13))\n\n## [3.0.0-beta.36](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.35...reactotron-app@3.0.0-beta.36) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n## [3.0.0-beta.35](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.34...reactotron-app@3.0.0-beta.35) (2023-11-30)\n\n\n### Features\n\n* **reactotron:** Add Android `adb` command interface to the Help page. ([#1320](https://github.com/infinitered/reactotron/issues/1320)) ([60c985e](https://github.com/infinitered/reactotron/commit/60c985ec0c3ef4e2d00c0a67fbc467f4903558b7))\n\n## [3.0.0-beta.34](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.33...reactotron-app@3.0.0-beta.34) (2023-11-06)\n\n## [3.0.0-beta.33](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.32...reactotron-app@3.0.0-beta.33) (2023-10-24)\n\n## [3.0.0-beta.32](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.31...reactotron-app@3.0.0-beta.32) (2023-10-20)\n\n## [3.0.0-beta.31](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.30...reactotron-app@3.0.0-beta.31) (2023-10-13)\n\n## [3.0.0-beta.30](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.29...reactotron-app@3.0.0-beta.30) (2023-10-02)\n\n## [3.0.0-beta.29](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.28...reactotron-app@3.0.0-beta.29) (2023-09-27)\n\n## [3.0.0-beta.28](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.27...reactotron-app@3.0.0-beta.28) (2023-09-22)\n\n## [3.0.0-beta.27](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.26...reactotron-app@3.0.0-beta.27) (2023-09-08)\n\n## [3.0.0-beta.26](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.25...reactotron-app@3.0.0-beta.26) (2023-08-25)\n\n## [3.0.0-beta.25](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.24...reactotron-app@3.0.0-beta.25) (2023-08-24)\n\n## [3.0.0-beta.24](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.23...reactotron-app@3.0.0-beta.24) (2023-07-24)\n\n## [3.0.0-beta.23](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.22...reactotron-app@3.0.0-beta.23) (2023-07-20)\n\n## [3.0.0-beta.22](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.21...reactotron-app@3.0.0-beta.22) (2023-07-17)\n\n## [3.0.0-beta.21](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.20...reactotron-app@3.0.0-beta.21) (2023-07-17)\n\n## [3.0.0-beta.20](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.19...reactotron-app@3.0.0-beta.20) (2023-07-06)\n\n## [3.0.0-beta.19](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.18...reactotron-app@3.0.0-beta.19) (2023-07-03)\n\n## [3.0.0-beta.18](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.17...reactotron-app@3.0.0-beta.18) (2023-06-22)\n\n## [3.0.0-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.16...reactotron-app@3.0.0-beta.17) (2023-06-21)\n\n## [3.0.0-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.15...reactotron-app@3.0.0-beta.16) (2023-06-20)\n\n## [3.0.0-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.14...reactotron-app@3.0.0-beta.15) (2023-06-15)\n\n## [3.0.0-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.13...reactotron-app@3.0.0-beta.14) (2023-06-15)\n\n## [3.0.0-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.12...reactotron-app@3.0.0-beta.13) (2023-04-25)\n\n## [3.0.0-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.11...reactotron-app@3.0.0-beta.12) (2023-04-12)\n\n## [3.0.0-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-beta.10...reactotron-app@3.0.0-beta.11) (2023-04-12)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** Fix draggable header eating all onClick events from child components ([1d24482](https://github.com/infinitered/reactotron/commit/1d24482c605014cc6d13a745c2432c9be3912cf6))\n\n## [3.0.0-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.21...reactotron-app@3.0.0-beta.10) (2023-04-06)\n\n## [3.0.0-alpha.21](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.20...reactotron-app@3.0.0-alpha.21) (2023-03-21)\n\n## [3.0.0-alpha.20](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.19...reactotron-app@3.0.0-alpha.20) (2023-03-06)\n\n\n### Bug Fixes\n\n* **release:** Pin electron correctly, allow building unsigned release builds locally ([#1275](https://github.com/infinitered/reactotron/issues/1275)) ([b4f04c3](https://github.com/infinitered/reactotron/commit/b4f04c375d858f3aad2f14911559fe895d8c9ebc))\n\n## [3.0.0-alpha.19](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.18...reactotron-app@3.0.0-alpha.19) (2023-03-06)\n\n## [3.0.0-alpha.18](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.17...reactotron-app@3.0.0-alpha.18) (2023-03-06)\n\n## [3.0.0-alpha.17](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.16...reactotron-app@3.0.0-alpha.17) (2023-03-01)\n\n## [3.0.0-alpha.16](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.15...reactotron-app@3.0.0-alpha.16) (2023-03-01)\n\n\n### Features\n\n* **reactotron-app:** map command+k to clear timeline ([#1269](https://github.com/infinitered/reactotron/issues/1269)) ([9a83b49](https://github.com/infinitered/reactotron/commit/9a83b49846f8b3b5ab3aeab13caa838a1621eb3e))\n\n## [3.0.0-alpha.15](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.14...reactotron-app@3.0.0-alpha.15) (2023-02-17)\n\n## [3.0.0-alpha.14](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.13...reactotron-app@3.0.0-alpha.14) (2023-02-14)\n\n## [3.0.0-alpha.13](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.12...reactotron-app@3.0.0-alpha.13) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n## [3.0.0-alpha.12](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.11...reactotron-app@3.0.0-alpha.12) (2023-02-01)\n\n\n### Bug Fixes\n\n* **nx:** handle clean in task pipeline ([f0d4f77](https://github.com/infinitered/reactotron/commit/f0d4f77c6e4e903836f2b32bd5234f7b611028d1))\n\n## [3.0.0-alpha.11](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.10...reactotron-app@3.0.0-alpha.11) (2023-01-27)\n\n\n### Bug Fixes\n\n* **.circleci:** run jest tests in band ([bc9cf48](https://github.com/infinitered/reactotron/commit/bc9cf4806f9eb5dbe6eba3a7dfe918f67cd958f3))\n* **eslint:** remove duplicate rules ([fe540f5](https://github.com/infinitered/reactotron/commit/fe540f55558b062ad664cd9baf5f609ff3e74d04))\n* **reactotron-app:** add [@ts-ignore](https://github.com/ts-ignore) ([aabc188](https://github.com/infinitered/reactotron/commit/aabc188fe20148804714491da9492d63cee95ab1))\n* **reactotron-app:** supress eslint warn ([c7e7148](https://github.com/infinitered/reactotron/commit/c7e71484693d543444a6a22e40c90791141d471a))\n\n## [3.0.0-alpha.10](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.9...reactotron-app@3.0.0-alpha.10) (2023-01-26)\n\n## [3.0.0-alpha.9](https://github.com/infinitered/reactotron/compare/reactotron-app@3.0.0-alpha.8...reactotron-app@3.0.0-alpha.9) (2023-01-26)\n\n\n### Features\n\n* **.circleci:** add manual reactotron-app release workflow ([ed02247](https://github.com/infinitered/reactotron/commit/ed02247c4b689693dc02e1474d7c465faa9dabdb))\n* **.circleci:** create tags based workflow ([084374f](https://github.com/infinitered/reactotron/commit/084374fc856d08bfc92e359a074cea8407a4691c))\n* **nx.json:** add common options ([b3a8edf](https://github.com/infinitered/reactotron/commit/b3a8edfb7e53ca4ac375a1fd1372e88569b63809))\n\n\n### Bug Fixes\n\n* **reactotron-app:** add comments to CSC_LINK file ([d982a8e](https://github.com/infinitered/reactotron/commit/d982a8ee52cff3055fa771f1179e72c1ecfedfdf))\n* **reactotron-app:** add mime-types ([f50da1d](https://github.com/infinitered/reactotron/commit/f50da1d17f538b7a4854e38717f19a35137c2aed))\n* **reactotron-app:** change default certificate_password ([43505ae](https://github.com/infinitered/reactotron/commit/43505ae7ab36b6cd2a599d48aa6bf506ffd97fc7))\n"
  },
  {
    "path": "apps/reactotron-app/Gemfile",
    "content": "# frozen_string_literal: true\n\nsource \"https://rubygems.org\"\n\ngit_source(:github) {|repo_name| \"https://github.com/#{repo_name}\" }\n\n# gem \"rails\"\n\n# Added at 2018-12-05 20:29:42 -0500 by richardevans:\ngem \"fastlane\", \"~> 2.109\"\ngem \"abbrev\" \n"
  },
  {
    "path": "apps/reactotron-app/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "apps/reactotron-app/README.md",
    "content": "# ![Reactotron Logo](../../docs/plugins/images/readme/Reactotron-128.png)\n\n[Join our Community Slack](http://community.infinite.red/)\n\n<a href=\"https://reactnative.cc\" target=\"_blank\"><img src=\"https://img.shields.io/badge/React%20Native%20Newsletter-Featured-blueviolet\"></a>\n\n[Quick Installation Guide](https://docs.infinite.red/reactotron/quick-start/getting-started/)\n\n# What is Reactotron?\n\nReactotron is a macOS, Windows, and Linux app for inspecting your [React JS](https://facebook.github.io/react/) and [React Native](https://facebook.github.io/react-native/) apps.\n\n_Watch [Darin Wilson's](https://github.com/darinwilson) talk at [Chain React](https://infinite.red/ChainReactConf): [Chain React 2018: Debugging and Beyond with Reactotron](https://www.youtube.com/watch?v=UiPo9A9k7xc)!_\n\nUse it to:\n\n- view your application state\n- show API requests & responses\n- perform quick performance benchmarks\n- subscribe to parts of your application state\n- display messages similar to `console.log`\n- track global errors with source-mapped stack traces including saga stack traces!\n- dispatch actions like a government-run mind control experiment\n- hot swap your app's state using Redux or mobx-state-tree\n- show image overlay in React Native\n- track your Async Storage in React Native\n\nYou plug it into your app as a dev dependency so it adds nothing to your product builds.\n\n### Desktop\n\nReactotron on the left, demo React Native app on the right.\n![Desktop](../../docs/plugins/images/readme/reactotron-demo-app.gif)\n\n# Documentation\n\nSee our documentation site here: https://docs.infinite.red/reactotron/\n\n# Credits\n\nReactotron is developed by [Infinite Red](https://infinite.red), [@rmevans9](https://github.com/rmevans9), and 70+ amazing contributors! Special thanks to [@skellock](https://github.com/skellock) for originally creating Reactotron while at Infinite Red.\n\n# Premium Support\n\n[Reactotron](https://infinite.red/reactotron), as an open source project, is free to use and always will be. [Infinite Red](https://infinite.red/) offers premium React and [React Native](https://infinite.red/react-native) mobile app design/development services. Email us at [hello@infinite.red](mailto:hello@infinite.red) to get in touch for more details.\n"
  },
  {
    "path": "apps/reactotron-app/entitlements.mac.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n  <dict>\n    <key>com.apple.security.cs.allow-jit</key>\n    <true/>\n    <key>com.apple.security.cs.debugger</key>\n    <true/>\n    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>\n    <true/>\n  </dict>\n</plist>\n"
  },
  {
    "path": "apps/reactotron-app/fastlane/Fastfile",
    "content": "fastlane_version \"2.44.1\"\n\nlane :setup do\n  setup_circle_ci\n  import_certificate(\n    keychain_name: ENV[\"MATCH_KEYCHAIN_NAME\"],\n    keychain_password: ENV[\"MATCH_KEYCHAIN_PASSWORD\"],\n    certificate_path: 'Certificates.p12',\n    certificate_password: ENV[\"CERTIFICATE_PASSWORD\"] || \"\",\n    log_output: true\n  )\nend\n"
  },
  {
    "path": "apps/reactotron-app/package.json",
    "content": "{\n  \"name\": \"reactotron-app\",\n  \"productName\": \"Reactotron\",\n  \"version\": \"3.8.2\",\n  \"description\": \"Reactotron desktop mode engage!\",\n  \"author\": {\n    \"name\": \"Infinite Red\",\n    \"email\": \"hello@infinite.red\",\n    \"url\": \"https://github.com/infinitered/reactotron\"\n  },\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"repository\": \"https://github.com/infinitered/reactotron\",\n  \"keywords\": [\n    \"react\",\n    \"react native\"\n  ],\n  \"homepage\": \"https://github.com/infinitered/reactotron#readme\",\n  \"scripts\": {\n    \"compile\": \"tsc\",\n    \"start\": \"electron-webpack dev\",\n    \"clean\": \"rimraf ./dist\",\n    \"build\": \"electron-webpack\",\n    \"build:release\": \"node scripts/build.release.js\",\n    \"release:artifacts\": \"node scripts/release.artifacts.js\",\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"lint\": \"eslint 'src/**/**.{ts,tsx}'\",\n    \"storybook\": \"start-storybook -p 6006\",\n    \"build-storybook\": \"build-storybook\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"ci:test\": \"yarn test --runInBand\"\n  },\n  \"electronWebpack\": {\n    \"whiteListedModules\": [\n      \"reactotron-core-ui\",\n      \"react-router-dom\",\n      \"styled-components\"\n    ],\n    \"renderer\": {\n      \"webpackConfig\": \"webpack.config.js\",\n      \"webpackDllConfig\": \"webpack.config.js\"\n    },\n    \"main\": {\n      \"webpackConfig\": \"webpack.config.js\"\n    }\n  },\n  \"dependencies\": {\n    \"electron-log\": \"^5.0.0\",\n    \"electron-store\": \"^8.1.0\",\n    \"electron-updater\": \"^6.1.7\",\n    \"electron-window-state\": \"^5.0.3\",\n    \"immer\": \"^10.0.3\",\n    \"lodash.debounce\": \"^4.0.8\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"react-hotkeys\": \"^2.0.0\",\n    \"react-icons\": \"^4.11.0\",\n    \"react-modal\": \"3.16.1\",\n    \"react-motion\": \"0.5.2\",\n    \"react-router-dom\": \"^6.18.0\",\n    \"react-tooltip\": \"4.5.1\",\n    \"reactotron-core-contract\": \"workspace:*\",\n    \"reactotron-core-server\": \"workspace:*\",\n    \"reactotron-core-ui\": \"workspace:*\",\n    \"source-map-support\": \"^0.5.21\",\n    \"styled-components\": \"^6.1.0\",\n    \"v8-compile-cache\": \"^2.4.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/preset-react\": \"^7.22.15\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@electron/notarize\": \"^2.1.0\",\n    \"@storybook/addon-actions\": \"^5.2.8\",\n    \"@storybook/addon-knobs\": \"^5.2.8\",\n    \"@storybook/addon-links\": \"^5.2.8\",\n    \"@storybook/addons\": \"^5.2.8\",\n    \"@storybook/react\": \"^5.2.8\",\n    \"@testing-library/react\": \"^14.1.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/react\": \"18.2.45\",\n    \"@types/react-dom\": \"18.2.14\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-loader\": \"^8.3.0\",\n    \"electron\": \"27.0.3\",\n    \"electron-builder\": \"^24.8.1\",\n    \"electron-webpack\": \"2.8.2\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"jest-environment-jsdom\": \"^29.7.0\",\n    \"mime\": \"^3.0.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-test-renderer\": \"18.2.0\",\n    \"rimraf\": \"^5.0.5\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"build\": {\n    \"productName\": \"Reactotron\",\n    \"appId\": \"com.reactotron.app\",\n    \"files\": [\n      \"src/dist/\",\n      \"src/app.html\",\n      \"src/main.prod.js\",\n      \"src/main.prod.js.map\",\n      \"package.json\"\n    ],\n    \"dmg\": {\n      \"sign\": false,\n      \"contents\": [\n        {\n          \"x\": 130,\n          \"y\": 220\n        },\n        {\n          \"x\": 410,\n          \"y\": 220,\n          \"type\": \"link\",\n          \"path\": \"/Applications\"\n        }\n      ]\n    },\n    \"mac\": {\n      \"hardenedRuntime\": true,\n      \"gatekeeperAssess\": false,\n      \"entitlements\": \"entitlements.mac.plist\",\n      \"entitlementsInherit\": \"entitlements.mac.plist\",\n      \"notarize\": {\n        \"teamId\": \"L7YNDPLSEB\"\n      }\n    },\n    \"win\": {\n      \"icon\": \"./icon.png\",\n      \"target\": [\n        \"nsis\",\n        \"msi\"\n      ]\n    },\n    \"linux\": {\n      \"target\": [\n        \"deb\",\n        \"rpm\",\n        \"snap\",\n        \"AppImage\"\n      ],\n      \"category\": \"Development\"\n    },\n    \"directories\": {\n      \"buildResources\": \"resources\",\n      \"output\": \"release\"\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"jsdom\",\n    \"testMatch\": [\n      \"**/*.test.ts\",\n      \"**/*.test.tsx\"\n    ]\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"extends\": [\n      \"plugin:react/recommended\"\n    ],\n    \"plugins\": [\n      \"react\",\n      \"react-hooks\"\n    ],\n    \"settings\": {\n      \"react\": {\n        \"version\": \"detect\"\n      },\n      \"import/core-modules\": [\n        \"electron\"\n      ]\n    },\n    \"parserOptions\": {\n      \"ecmaFeatures\": {\n        \"jsx\": true\n      }\n    },\n    \"rules\": {\n      \"react-hooks/rules-of-hooks\": \"error\",\n      \"react-hooks/exhaustive-deps\": \"warn\",\n      \"react/prop-types\": 0\n    }\n  }\n}\n"
  },
  {
    "path": "apps/reactotron-app/project.json",
    "content": "{\n  \"name\": \"reactotron-app\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/reactotron-app/scripts/build.release.js",
    "content": "// @ts-check\n// #region Validate inputs\nconst isCi = process.env.CI === \"true\"\nlet skipSigning = false\nconst BUILD_TARGET = process.env.BUILD_TARGET\nif (BUILD_TARGET !== \"macos\" && BUILD_TARGET !== \"linux\" && BUILD_TARGET !== \"windows\") {\n  throw new Error('BUILD_TARGET must be either \"macos\", \"linux\" or \"windows\"')\n}\nconsole.log(`Releasing app for target: '${BUILD_TARGET}'`)\n\nif (isCi) {\n  const path = require(\"path\")\n  const fs = require(\"fs\")\n  const CSC_LINK = path.join(\n    __dirname, // ~/apps/reactotron-app/scripts\n    \"..\", // ~/apps/reactotron-app/\n    \"Certificates.p12\" // ~/apps/reactotron-app/Certificates.p12\n  )\n  if (BUILD_TARGET === \"macos\" && !fs.existsSync(CSC_LINK)) {\n    throw new Error(`CSC_LINK not found at ${CSC_LINK} for ${BUILD_TARGET} target}`)\n  }\n  if (BUILD_TARGET === \"macos\") {\n    console.log(`MacOS Code Signing Certificate found at: '${CSC_LINK}'`)\n  }\n} else {\n  console.log(\"Not running in CI, skipping code signing\")\n  console.log(\n    \"For production builds: electron-builder needs a MacOS Developer Certificate in the MacOS Keychain or linked at CNC_LINK variable. See: https://www.electron.build/code-signing.html\"\n  )\n  skipSigning = true\n}\n// #endregion\n\n/** @type {Record<typeof BUILD_TARGET, string>} @see https://electron.build/cli.html */\nconst targetFlags = { macos: \"--macos --arm64 --x64\", windows: \"--windows\", linux: \"--linux\" }\nlet flags = `${targetFlags[BUILD_TARGET]} --publish never`\n\nif (skipSigning) {\n  flags += \" -c.mac.identity=null\"\n}\n\n/**\n * @type {Record<typeof BUILD_TARGET, Record<string, string>>}\n * @see https://www.electron.build/code-signing.html\n * @see https://www.electron.build/configuration/publish#githuboptions\n */\nconst processVars = { macos: {}, windows: {}, linux: {} }\nconst env = {\n  ...process.env,\n  BUILD_TARGET,\n  ...processVars[BUILD_TARGET],\n}\n\n/** @param cmd {string} */\nconst $ = (cmd) => {\n  require(\"child_process\").execSync(cmd, { env, stdio: \"inherit\" })\n}\n\nconsole.log(`Building app with flags: '${flags}'...`)\n$(`yarn build && electron-builder ${flags}`)\n"
  },
  {
    "path": "apps/reactotron-app/scripts/release.artifacts.js",
    "content": "// @ts-check\n// #region Parse inputs\nconst isCi = process.env.CI === \"true\"\nconst [_NODE_PATH, _SCRIPT_PATH, ...args] = process.argv\nconst [gitTag = \"\"] = args\nconst [npmWorkspace, version] = gitTag.split(\"@\")\n// #endregion\n\n// #region assert tag matches 'app@1.1.1' format\nconst GIT_TAG_REGEX = /^[a-z0-9-]+@[a-z0-9\\.-]+$/ // 'reactotron-app@3.0.0'\n/** @see https://gist.github.com/jhorsman/62eeea161a13b80e39f5249281e17c39 */\nconst SEM_VER_REGEX =\n  /^([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z-]+)?$/\nif (\n  !gitTag ||\n  !gitTag.match(GIT_TAG_REGEX) ||\n  !npmWorkspace ||\n  !version ||\n  !version.match(SEM_VER_REGEX)\n) {\n  console.error(`First argument must match format: <workspace>@<version>, got '${gitTag}'`)\n  process.exit(1)\n}\nconsole.log(`Creating release for '${gitTag}'`)\n// #endregion\n\n//#region asserts that $GITHUB_TOKEN environment variable is set\nconst githubToken = process.env.GITHUB_TOKEN\nif (!githubToken) {\n  console.error(\"GITHUB_TOKEN environment variable is required\")\n  process.exit(1)\n}\n// #endregion\n\n// #region assert release folder exists\nconst path = require(\"path\")\nconst fs = require(\"fs\")\n\nconst folder = path.join(__dirname, \"..\", \"/release\")\n\nif (!fs.existsSync(folder)) {\n  console.error(`Folder '${folder}' does not exist`)\n  process.exit(1)\n}\nconsole.log(`Found release folder at ${folder}`)\n// #endregion\n\n// #region assert release folder is not empty\nconst files = fs\n  .readdirSync(folder)\n  // check if file is a directory\n  .filter((file) => !fs.lstatSync(path.join(folder, file)).isDirectory())\n  // filter out yaml files\n  .filter((file) => !file.endsWith(\".yml\"))\n  .filter((file) => !file.endsWith(\".yaml\"))\n  // filter out .blockmap files\n  .filter((file) => !file.endsWith(\".blockmap\"))\nif (files.length === 0) {\n  console.error(`Folder '${folder}' is empty`)\n  process.exit(1)\n}\nconsole.log(`Found ${files.length} files to upload`)\nconsole.log(`Files: ${files.join(\", \")}`)\n\n// get mimie types\nconst mime = require(\"mime-types\")\nfiles.forEach((file) => {\n  const mimeType = mime.lookup(file)\n  console.log(`File '${file}' has mime type '${mimeType}'`)\n})\n// #endregion\n\n// #region extract changelog entry for this version\n/**\n * Gets the changelog entry for a specific version\n * @param {string} version The version to extract (without '@' prefix)\n * @returns {string} The formatted changelog entry or a default message\n */\nfunction getChangelogEntry(version) {\n  try {\n    // Try to find and parse the appropriate CHANGELOG.md file\n    const changelogPath = path.join(__dirname, \"..\", \"CHANGELOG.md\")\n\n    // If changelog doesn't exist, return a default message\n    if (!fs.existsSync(changelogPath)) {\n      console.warn(`No CHANGELOG.md found at ${changelogPath}`)\n      return `Release version ${version}. See repository for changes.`\n    }\n\n    const changelog = fs.readFileSync(changelogPath, \"utf8\")\n\n    // Extract the section for this version\n    // Match both ## and ### header styles\n    const versionHeaderRegex = new RegExp(\n      `(?:##|###)\\\\s*\\\\[${version}\\\\][^]*?(?=(?:##|###)\\\\s*\\\\[|$)`,\n      \"s\"\n    )\n    const match = changelog.match(versionHeaderRegex)\n\n    if (!match) {\n      console.warn(`No changelog entry found for version ${version}`)\n      return `Release version ${version}. See repository for changes.`\n    }\n\n    // Return the matching section, excluding the header\n    const lines = match[0].split(\"\\n\")\n    const contentWithoutHeader = lines.slice(1).join(\"\\n\").trim()\n\n    // If the changelog entry is empty, try to find accumulated changes\n    if (!contentWithoutHeader) {\n      console.warn(\n        `Empty changelog entry for version ${version}, looking for accumulated changes...`\n      )\n\n      // Find previous significant version to compare against\n      const allVersionsRegex = /(?:##|###)\\s*\\[([^\\]]+)\\]/g\n      const versions = []\n      let versionMatch\n\n      while ((versionMatch = allVersionsRegex.exec(changelog)) !== null) {\n        versions.push(versionMatch[1])\n      }\n\n      // Get index of current version\n      const currentIndex = versions.indexOf(version)\n\n      if (currentIndex !== -1 && currentIndex < versions.length - 1) {\n        // Find previous significant version (with different major or minor)\n        const [currentMajor, currentMinor] = version.split(\".\").map(Number)\n        let previousVersion = null\n\n        for (let i = currentIndex + 1; i < versions.length; i++) {\n          const ver = versions[i]\n          const [major, minor] = ver.split(\".\").map(Number)\n\n          if (major !== currentMajor || minor !== currentMinor) {\n            previousVersion = ver\n            break\n          }\n        }\n\n        if (previousVersion) {\n          return `This release includes all changes accumulated since version ${previousVersion}.\\n\\nSee the [CHANGELOG](https://github.com/infinitered/reactotron/blob/master/apps/reactotron-app/CHANGELOG.md) for more details.`\n        }\n      }\n\n      return `Release version ${version}. See repository for changes.`\n    }\n\n    return contentWithoutHeader\n  } catch (error) {\n    console.error(`Error extracting changelog entry: ${error.message}`)\n    return `Release version ${version}. See repository for changes.`\n  }\n}\n\n// Get the release notes for this version\nconst releaseNotes = getChangelogEntry(version)\nconsole.log(`Got release notes (${releaseNotes.length} characters)`)\n// #endregion\n\n// #region release on github\nconst { Octokit } = require(\"@octokit/rest\")\nconst octokit = new Octokit({ auth: githubToken })\n\nconst owner = \"infinitered\"\nconst repo = \"reactotron\"\n\n;(async () => {\n  // Get the release by tag\n  octokit.repos\n    .createRelease({\n      owner,\n      repo,\n      tag_name: gitTag,\n      name: gitTag,\n      body: releaseNotes,\n      prerelease: gitTag.includes(\"beta\") || gitTag.includes(\"alpha\"),\n      draft: !isCi,\n      target_commitish: gitTag.includes(\"beta\")\n        ? \"beta\"\n        : gitTag.includes(\"alpha\")\n          ? \"alpha\"\n          : \"master\",\n    })\n    .then(({ data: release }) => {\n      Promise.allSettled(\n        files.map((file) => {\n          console.log(`Uploading '${file}'...`)\n          return octokit.repos.uploadReleaseAsset({\n            owner,\n            repo,\n            release_id: release.id,\n            name: file,\n            headers: {\n              \"Content-Type\": mime.lookup(file) || \"application/octet-stream\",\n            },\n            // @ts-ignore data is expecting json by default, but we want to send a buffer\n            data: fs.readFileSync(path.join(folder, file)),\n          })\n        })\n      ).then((results) => {\n        const failed = results.filter((result) => result.status === \"rejected\")\n        if (failed.length > 0) {\n          console.error(`Failed to upload ${failed.length} files`)\n          failed.forEach((result, index) => {\n            console.error(`Failed to upload ${files[index]}`)\n            console.error(result)\n          })\n          process.exit(1)\n        }\n        console.log(`Successfully uploaded ${files.length} files`)\n        process.exit(0)\n      })\n    })\n    .catch((err) => {\n      console.error(err)\n      process.exit(1)\n    })\n})()\n// #endregion\n"
  },
  {
    "path": "apps/reactotron-app/src/main/index.ts",
    "content": "import { app, BrowserWindow } from \"electron\"\nimport path from \"path\"\nimport { format as formatUrl } from \"url\"\nimport log from \"electron-log\"\nimport { autoUpdater } from \"electron-updater\"\nimport windowStateKeeper from \"electron-window-state\"\n\nimport createMenu from \"./menu\"\nimport { setupAndroidDeviceIPCCommands } from \"./utils\"\n\nconst isDevelopment = process.env.NODE_ENV !== \"production\"\n\nclass AppUpdater {\n  constructor() {\n    log.transports.file.level = \"debug\"\n    autoUpdater.logger = log\n    autoUpdater.checkForUpdatesAndNotify()\n  }\n}\n\nlet mainWindow: BrowserWindow | null\n\nfunction createMainWindow() {\n  const mainWindowState = windowStateKeeper({\n    file: \"reactotron-window-state.json\",\n    defaultWidth: 650,\n    defaultHeight: 800,\n  })\n\n  const window = new BrowserWindow({\n    title: \"Reactotron\",\n    x: mainWindowState.x,\n    y: mainWindowState.y,\n    width: mainWindowState.width,\n    height: mainWindowState.height,\n    minWidth: 800,\n    minHeight: 700,\n    titleBarStyle: \"hiddenInset\",\n    webPreferences: {\n      nodeIntegration: true,\n      contextIsolation: false,\n      webgl: false, // Disable webGL for performance reasons\n      spellcheck: false, // Disable spellcheck for performance reasons\n    },\n    show: false, // We don't show immediately to avoid flickering while the web content is loading.\n  })\n\n  // Shows the main window once the web content is loaded.\n  window.once(\"ready-to-show\", () => {\n    window.show()\n\n    if (isDevelopment) {\n      window.webContents.openDevTools()\n    }\n  })\n\n  window.setBackgroundColor(\"#1e1e1e\") // see reactotron-core-ui for background color\n\n  mainWindowState.manage(window)\n\n  if (isDevelopment) {\n    window.loadURL(`http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}`)\n  } else {\n    window.loadURL(\n      formatUrl({\n        pathname: path.join(__dirname, \"index.html\"),\n        protocol: \"file\",\n        slashes: true,\n      })\n    )\n  }\n\n  window.on(\"closed\", () => {\n    mainWindow = null\n  })\n\n  window.webContents.on(\"devtools-opened\", () => {\n    window.focus()\n    setImmediate(() => {\n      window.focus()\n    })\n  })\n\n  createMenu(window, isDevelopment)\n\n  new AppUpdater() // eslint-disable-line no-new\n\n  return window\n}\n\n// quit application when all windows are closed\napp.on(\"window-all-closed\", app.quit)\n\napp.on(\"activate\", () => {\n  // on macOS it is common to re-create a window even after all windows have been closed\n  if (mainWindow === null) {\n    mainWindow = createMainWindow()\n  }\n})\n\n// create main BrowserWindow when electron is ready\napp.on(\"ready\", () => {\n  mainWindow = createMainWindow()\n\n  // Sets up the electron IPC commands for android functionality on the Help screen.\n  setupAndroidDeviceIPCCommands(mainWindow)\n})\n"
  },
  {
    "path": "apps/reactotron-app/src/main/menu.ts",
    "content": "import { Menu, app, shell } from \"electron\"\nimport Store from \"electron-store\"\n\nconst configStore = new Store()\n\nconst isDarwin = process.platform === \"darwin\"\n\nfunction buildFileMenu() {\n  const fileMenu = {\n    label: isDarwin ? \"Reactotron\" : \"&File\",\n    submenu: [],\n  }\n\n  if (isDarwin) {\n    fileMenu.submenu.push(\n      {\n        label: \"About Reactotron\",\n        selector: \"orderFrontStandardAboutPanel:\",\n      } as any,\n      { type: \"separator\" },\n      {\n        label: \"Hide Reactotron\",\n        accelerator: \"Command+H\",\n        selector: \"hide:\",\n      },\n      {\n        label: \"Hide Others\",\n        accelerator: \"Command+Shift+H\",\n        selector: \"hideOtherApplications:\",\n      },\n      { label: \"Show All\", selector: \"unhideAllApplications:\" },\n      { type: \"separator\" }\n    )\n  }\n\n  fileMenu.submenu.push(\n    {\n      label: \"Preferences\",\n      click: () => {\n        configStore.openInEditor()\n      },\n    },\n    { type: \"separator\" },\n    {\n      label: \"Quit\",\n      accelerator: \"Command+Q\",\n      click: () => {\n        app.quit()\n      },\n    }\n  )\n\n  return fileMenu\n}\n\nfunction buildEditMenu() {\n  if (!isDarwin) return null\n\n  return {\n    label: \"Edit\",\n    submenu: [\n      { label: \"Undo\", accelerator: \"Command+Z\", selector: \"undo:\" },\n      { label: \"Redo\", accelerator: \"Shift+Command+Z\", selector: \"redo:\" },\n      { type: \"separator\" },\n      { label: \"Cut\", accelerator: \"Command+X\", selector: \"cut:\" },\n      { label: \"Copy\", accelerator: \"Command+C\", selector: \"copy:\" },\n      { label: \"Paste\", accelerator: \"Command+V\", selector: \"paste:\" },\n      {\n        label: \"Select All\",\n        accelerator: \"Command+A\",\n        selector: \"selectAll:\",\n      },\n    ],\n  }\n}\n\nfunction buildViewMenu(window: Electron.BrowserWindow, isDevelopment: boolean) {\n  const viewMenu = {\n    label: isDarwin ? \"View\" : \"&View\",\n    submenu: [],\n  }\n\n  viewMenu.submenu.push(\n    {\n      label: isDarwin ? \"Toggle Full Screen\" : \"Toggle &Full Screen\",\n      accelerator: isDarwin ? \"Ctrl+Command+F\" : \"F11\",\n      click: () => {\n        window.setFullScreen(!window.isFullScreen())\n      },\n    },\n    {\n      label: \"Toggle Developer Tools\",\n      accelerator: \"Alt+Command+I\",\n      click: () => {\n        ;(window as any).toggleDevTools()\n      },\n    },\n    { type: \"separator\" },\n    { role: \"togglefullscreen\" },\n    { role: \"resetZoom\" },\n    { role: \"zoomIn\" },\n    { role: \"zoomOut\" }\n  )\n\n  if (isDevelopment) {\n    viewMenu.submenu.push(\n      { type: \"separator\" },\n      {\n        label: isDarwin ? \"Reload\" : \"&Reload\",\n        accelerator: isDarwin ? \"Command+R\" : \"Ctrl+R\",\n        click: () => {\n          window.webContents.reload()\n        },\n      }\n    )\n  }\n\n  return viewMenu\n}\n\nfunction buildWindowMenu(window: Electron.BrowserWindow) {\n  if (!isDarwin) return null\n\n  return {\n    label: \"Window\",\n    submenu: [\n      {\n        type: \"checkbox\",\n        label: \"Always On Top\",\n        click: () => {\n          const nextValue = !window.isAlwaysOnTop()\n          window.setAlwaysOnTop(nextValue)\n        },\n      },\n      {\n        label: \"Minimize\",\n        accelerator: \"Command+M\",\n        selector: \"performMiniaturize:\",\n      },\n      { label: \"Close\", accelerator: \"Command+W\", selector: \"performClose:\" },\n      { type: \"separator\" },\n      { label: \"Bring All to Front\", selector: \"arrangeInFront:\" },\n    ],\n  }\n}\n\nfunction buildHelpMenu() {\n  return {\n    label: \"Help\",\n    submenu: [\n      {\n        label: \"Visit on GitHub\",\n        click: () => {\n          shell.openExternal(\"https://github.com/infinitered/reactotron\")\n        },\n      },\n    ],\n  }\n}\n\nexport default function createMenu(window: Electron.BrowserWindow, isDevelopment: boolean) {\n  const template = [\n    buildFileMenu(),\n    buildEditMenu(),\n    buildViewMenu(window, isDevelopment),\n    buildWindowMenu(window),\n    buildHelpMenu(),\n  ]\n\n  const menu = Menu.buildFromTemplate(template.filter((t) => !!t) as any)\n  Menu.setApplicationMenu(menu)\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/main/utils.ts",
    "content": "import childProcess from \"child_process\"\nimport { type BrowserWindow, dialog, ipcMain } from \"electron\"\n\n// This function sets up numerous IPC commands for communicating with android devices.\n// It also watches for android devices being plugged in and unplugged.\n//\nexport const setupAndroidDeviceIPCCommands = (mainWindow: BrowserWindow) => {\n  // Allows the main renderer to communicate with the main process and get a list of connected android devices.\n  ipcMain.on(\"get-device-list\", () => {\n    console.log(\"Getting Android device list\")\n    const devicesProcess = childProcess.spawn(\"adb\", [\"devices\"], {\n      shell: true,\n    })\n    devicesProcess.stdout.setEncoding(\"utf8\")\n    devicesProcess.stdout.on(\"data\", (data) => {\n      data = data.toString()\n      console.log(\"Got adb device list\", data)\n      mainWindow.webContents.send(\"device-list\", data)\n    })\n  })\n\n  // Creates a reverse tunnel to an android device for reactotron and metro.\n  ipcMain.on(\"reverse-tunnel-device\", (_event, deviceId, reactotronPort, metroPort) => {\n    console.log(\"Reverse Tunneling Android device\", deviceId, reactotronPort, metroPort)\n\n    // First do the reverse tunnel for reactotron:\n    const reactotronReverseProcess = childProcess.spawn(\n      \"adb\",\n      [\"-s\", deviceId, \"reverse\", `tcp:${reactotronPort}`, `tcp:${reactotronPort}`],\n      {\n        shell: true,\n      }\n    )\n    reactotronReverseProcess.stdout.setEncoding(\"utf8\")\n    reactotronReverseProcess.stdout.on(\"data\", () => {\n      console.log(`Reverse Tunneling To Reactotron Port ${reactotronPort} Complete.`)\n    })\n\n    // Now do the reverse tunnel for react native:\n    const metroReverseProcess = childProcess.spawn(\n      \"adb\",\n      [\"-s\", deviceId, \"reverse\", `tcp:${metroPort}`, `tcp:${metroPort}`],\n      {\n        shell: true,\n      }\n    )\n    metroReverseProcess.stdout.setEncoding(\"utf8\")\n    metroReverseProcess.stdout.on(\"data\", () => {\n      console.log(`Reverse Tunneling To Metro Port ${metroPort} Complete.`)\n    })\n  })\n\n  // Reloads the app on the android device\n  ipcMain.on(\"reload-app\", (_event, arg) => {\n    console.log(\"Reloading App on device\", arg)\n    const reloadAppProcess = childProcess.spawn(\n      \"adb\",\n      [\"-s\", arg, \"shell\", \"input\", \"text\", '\"RR\"'],\n      {\n        shell: true,\n      }\n    )\n    reloadAppProcess.stdout.setEncoding(\"utf8\")\n    reloadAppProcess.stdout.on(\"data\", (data) => {\n      data = data.toString()\n      console.log(\"Reloading App Complete\", data)\n    })\n  })\n\n  // Reloads the app on the android device\n  ipcMain.on(\"shake-device\", (_event, arg) => {\n    console.log(\"Showing react-native debug menu\", arg)\n    const shakeDeviceProcess = childProcess.spawn(\n      \"adb\",\n      [\"-s\", arg, \"shell\", \"input\", \"keyevent\", \"82\"],\n      {\n        shell: true,\n      }\n    )\n    shakeDeviceProcess.stdout.setEncoding(\"utf8\")\n    shakeDeviceProcess.stdout.on(\"data\", (data) => {\n      data = data.toString()\n      console.log(\"Shaking Device Complete\", data)\n    })\n  })\n\n  // Now we need to start watching for android devices being plugged and unplugged\n  const trackDevicesProcess = childProcess.spawn(\"adb\", [\"track-devices\"], {\n    shell: true,\n  })\n  trackDevicesProcess.on(\"error\", (error) => {\n    dialog.showMessageBox({\n      title: \"Android communication problem\",\n      type: \"warning\",\n      message: \"Error occurred running adb track-devices.\\n\" + error,\n    })\n  })\n  trackDevicesProcess.stdout.setEncoding(\"utf8\")\n  trackDevicesProcess.stdout.on(\"data\", (data) => {\n    data = data.toString()\n    console.log(\"Got adb track-devices output: \", data)\n    ipcMain.emit(\"get-device-list\")\n  })\n  trackDevicesProcess.stderr.setEncoding(\"utf8\")\n  trackDevicesProcess.stderr.on(\"data\", (data) => {\n    console.log(data)\n  })\n  trackDevicesProcess.on(\"close\", (code) => {\n    // Warn the user if the process closes.\n    switch (code) {\n      case 0:\n        dialog.showMessageBox({\n          title: \"Closing adb track-devices\",\n          type: \"info\",\n          message: \"End process.\\r\\n\",\n        })\n        break\n    }\n  })\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/App.tsx",
    "content": "import React from \"react\"\nimport { HashRouter as Router, Route, Routes } from \"react-router-dom\"\nimport styled from \"styled-components\"\n\nimport SideBar from \"./components/SideBar\"\nimport Footer from \"./components/Footer\"\nimport RootContextProvider from \"./contexts\"\nimport RootModals from \"./RootModals\"\n\nimport Home from \"./pages/home\"\nimport Timeline from \"./pages/timeline\"\nimport Subscriptions from \"./pages/state/Subscriptions\"\nimport Snapshots from \"./pages/state/Snapshots\"\nimport Overlay from \"./pages/reactNative/Overlay\"\nimport Storybook from \"./pages/reactNative/Storybook\"\nimport CustomCommands from \"./pages/customCommands\"\nimport Help from \"./pages/help\"\n\nconst AppContainer = styled.div`\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  display: flex;\n  flex-direction: column;\n  background-color: ${(props) => props.theme.background};\n`\n\nconst TopSection = styled.div`\n  overflow: hidden;\n  display: flex;\n  flex-grow: 1;\n  flex-direction: row;\n`\n\nconst MainContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  flex: 1;\n`\n\nfunction App() {\n  return (\n    <Router>\n      <RootContextProvider>\n        <AppContainer>\n          <TopSection>\n            <SideBar />\n\n            <MainContainer>\n              <Routes>\n                {/* Home */}\n                <Route path=\"/\" element={<Home />} />\n\n                {/* Timeline */}\n                <Route path=\"/timeline\" element={<Timeline />} />\n\n                {/* State */}\n                <Route path=\"/state/subscriptions\" element={<Subscriptions />} />\n                <Route path=\"/state/snapshots\" element={<Snapshots />} />\n\n                {/* React Native */}\n                <Route path=\"/native/overlay\" element={<Overlay />} />\n                <Route path=\"/native/storybook\" element={<Storybook />} />\n\n                {/* Custom Commands */}\n                <Route path=\"/customCommands\" element={<CustomCommands />} />\n\n                {/* Help */}\n                <Route path=\"/help\" element={<Help />} />\n              </Routes>\n            </MainContainer>\n          </TopSection>\n          <Footer />\n        </AppContainer>\n        <RootModals />\n      </RootContextProvider>\n    </Router>\n  )\n}\n\nexport default App\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/KeybindHandler.tsx",
    "content": "import React, { useContext } from \"react\"\nimport { GlobalHotKeys, KeyEventName } from \"react-hotkeys\"\nimport { ReactotronContext, StateContext, TimelineContext } from \"reactotron-core-ui\"\nimport LayoutContext from \"./contexts/Layout\"\n\nconst keyMap = {\n  // Application wide\n  ToggleSidebar: {\n    name: \"Toggle Sidebar\",\n    group: \"Application\",\n    sequences: [\"command+shift+s\", \"ctrl+shift+s\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  ToggleSearch: {\n    name: \"Toggle Timeline Search\",\n    group: \"Application\",\n    sequences: [\"command+shift+l\", \"ctrl+shift+l\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  // Tab Navigation\n  OpenHomeTab: {\n    name: \"Home tab\",\n    group: \"Navigation\",\n    sequences: [\"command+1\", \"ctrl+1\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  OpenTimelineTab: {\n    name: \"Timeline tab\",\n    group: \"Navigation\",\n    sequences: [\"command+2\", \"ctrl+2\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  OpenStateTab: {\n    name: \"State tab\",\n    group: \"Navigation\",\n    sequences: [\"command+3\", \"ctrl+3\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  OpenReactNativeTab: {\n    name: \"React Native tab\",\n    group: \"Navigation\",\n    sequences: [\"command+4\", \"ctrl+4\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  OpenCustomCommandsTab: {\n    name: \"Custom Commands tab\",\n    group: \"Navigation\",\n    sequences: [\"command+5\", \"ctrl+5\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  OpenHelpTab: {\n    name: \"Help tab\",\n    group: \"Navigation\",\n    sequences: [\"command+?\", \"ctrl+?\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  // Timeline\n  ClearTimeline: {\n    name: \"Clear Timeline\",\n    group: \"Timeline\",\n    sequences: [\"command+k\", \"ctrl+k\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  // Modals\n  // TODO: What keybinding should this be set to?\n  // OpenFindKeysValuesModal: {\n  //   name: \"Find keys or values\",\n  //   group: \"State\",\n  //   sequences: [\"command+k\", \"ctrl+k\"],\n  //   action: \"keyup\" as KeyEventName,\n  // },\n  OpenSubscriptionModal: {\n    name: \"Open Subscription modal\",\n    group: \"State\",\n    sequences: [\"command+n\", \"ctrl+n\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  OpenDispatchModal: {\n    name: \"Open Dispatch modal\",\n    group: \"State\",\n    sequences: [\"command+d\", \"ctrl+d\"],\n    action: \"keyup\" as KeyEventName,\n  },\n  TakeSnapshot: {\n    name: \"Take snapshot\",\n    group: \"State\",\n    sequences: [\"command+s\", \"ctrl+s\"],\n    action: \"keyup\" as KeyEventName,\n  },\n}\n\nfunction KeybindHandler({ children }) {\n  const { toggleSideBar } = useContext(LayoutContext)\n  const { openDispatchModal, openSubscriptionModal, clearCommands } = useContext(ReactotronContext)\n  const { openSearch, toggleSearch } = useContext(TimelineContext)\n  const { createSnapshot } = useContext(StateContext)\n\n  const handlers = {\n    // Tab Navigation\n    OpenHomeTab: () => {\n      window.location.hash = \"/\"\n    },\n    OpenTimelineTab: () => {\n      window.location.hash = \"/timeline\"\n    },\n    OpenStateTab: () => {\n      window.location.hash = \"/state/subscriptions\"\n    },\n    OpenReactNativeTab: () => {\n      window.location.hash = \"/native/overlay\"\n    },\n    OpenCustomCommandsTab: () => {\n      window.location.hash = \"/customCommands\"\n    },\n    OpenHelpTab: () => {\n      window.location.hash = \"/help\"\n    },\n\n    // Modals\n    // OpenFindKeysValuesModal: () => {\n    //   throw new Error(\"Implement Me!\")\n    // },\n    OpenSubscriptionModal: () => {\n      openSubscriptionModal()\n    },\n    OpenDispatchModal: () => {\n      openDispatchModal(\"\")\n    },\n    TakeSnapshot: () => {\n      createSnapshot()\n    },\n\n    // Miscellaneous\n    ToggleSidebar: () => {\n      toggleSideBar()\n    },\n    ToggleSearch: () => {\n      // If we're on the timeline page, toggle the search, otherwise switch to the timeline tab and open search\n      if (window.location.hash === \"#/\") {\n        toggleSearch()\n      } else {\n        openSearch()\n        handlers.OpenTimelineTab()\n      }\n    },\n    ClearTimeline: () => {\n      clearCommands()\n    },\n  }\n\n  return (\n    <GlobalHotKeys keyMap={keyMap as any} handlers={handlers} allowChanges>\n      {children}\n    </GlobalHotKeys>\n  )\n}\n\nexport default KeybindHandler\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/ReactotronBrain.tsx",
    "content": "// TODO: Name this better...\nimport React, { FunctionComponent, PropsWithChildren } from \"react\"\nimport type { Command } from \"reactotron-core-contract\"\nimport {\n  ReactotronProvider,\n  CustomCommandsProvider,\n  ReactNativeProvider,\n  TimelineProvider,\n  StateProvider,\n} from \"reactotron-core-ui\"\n\nimport KeybindHandler from \"./KeybindHandler\"\n\ninterface Props {\n  commands: Command[]\n  sendCommand: (type: string, payload: any, clientId?: string) => void\n  clearCommands: () => void\n  addCommandListener: (callback: (command: Command) => void) => void\n}\n\n/** Wrapper for Reactotron context providers */\nconst ReactotronBrain: FunctionComponent<PropsWithChildren<Props>> = ({\n  commands,\n  sendCommand,\n  clearCommands,\n  addCommandListener,\n  children,\n}) => {\n  return (\n    <ReactotronProvider\n      commands={commands}\n      sendCommand={sendCommand}\n      clearCommands={clearCommands}\n      addCommandListener={addCommandListener}\n    >\n      <TimelineProvider>\n        <StateProvider>\n          <CustomCommandsProvider>\n            <ReactNativeProvider>\n              <KeybindHandler>{children}</KeybindHandler>\n            </ReactNativeProvider>\n          </CustomCommandsProvider>\n        </StateProvider>\n      </TimelineProvider>\n    </ReactotronProvider>\n  )\n}\n\nexport default ReactotronBrain\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/RootModals.tsx",
    "content": "import React, { useContext } from \"react\"\nimport {\n  DispatchActionModal,\n  SubscriptionAddModal,\n  ReactotronContext,\n  StateContext,\n} from \"reactotron-core-ui\"\n\nfunction RootModals() {\n  const {\n    sendCommand,\n\n    // Dispatch Modal\n    isDispatchModalOpen,\n    dispatchModalInitialAction,\n    closeDispatchModal,\n    // Subscription Modal\n    isSubscriptionModalOpen,\n    closeSubscriptionModal,\n  } = useContext(ReactotronContext)\n  const { addSubscription } = useContext(StateContext)\n\n  const dispatchAction = (action: any) => {\n    sendCommand(\"state.action.dispatch\", { action })\n  }\n\n  return (\n    <>\n      <DispatchActionModal\n        isOpen={isDispatchModalOpen}\n        initialValue={dispatchModalInitialAction}\n        onClose={() => {\n          closeDispatchModal()\n        }}\n        onDispatchAction={dispatchAction}\n        isDarwin={window.process.platform === \"darwin\"}\n      />\n      <SubscriptionAddModal\n        isOpen={isSubscriptionModalOpen}\n        onClose={() => {\n          closeSubscriptionModal()\n        }}\n        onAddSubscription={(path: string) => {\n          // TODO: Get this out of here.\n          closeSubscriptionModal()\n          addSubscription(path)\n        }}\n      />\n    </>\n  )\n}\n\nexport default RootModals\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/ConnectionSelector/ConnectionSelector.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { storiesOf } from \"@storybook/react\"\n\nimport ConnectionSelector from \"./index\"\n\nstoriesOf(\"components/ConnectionSelector\", module)\n  .add(\"iOS\", () => (\n    <ConnectionSelector\n      selectedConnection={null}\n      connection={{\n        id: 0,\n        platformVersion: \"12.4\",\n        osRelease: \"12\",\n        clientId: \"0\",\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      }}\n      onClick={() => {}}\n    />\n  ))\n  .add(\"Android\", () => (\n    <ConnectionSelector\n      selectedConnection={null}\n      connection={{\n        id: 0,\n        platformVersion: \"12.4\",\n        osRelease: \"12\",\n        clientId: \"0\",\n        platform: \"android\",\n        commands: [],\n        connected: true,\n      }}\n      onClick={() => {}}\n    />\n  ))\n  .add(\"Selected\", () => (\n    <ConnectionSelector\n      selectedConnection={{\n        id: 0,\n        platformVersion: \"12.4\",\n        osRelease: \"12\",\n        clientId: \"0\",\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      }}\n      connection={{\n        id: 0,\n        platformVersion: \"12.4\",\n        osRelease: \"12\",\n        clientId: \"0\",\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      }}\n      onClick={() => {}}\n    />\n  ))\n  .add(\"Show Name\", () => (\n    <ConnectionSelector\n      selectedConnection={{\n        id: 0,\n        platformVersion: \"12.4\",\n        osRelease: \"12\",\n        clientId: \"0\",\n        name: \"Test Name\",\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      }}\n      connection={{\n        id: 0,\n        platformVersion: \"12.4\",\n        osRelease: \"12\",\n        clientId: \"0\",\n        name: \"Test Name\",\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      }}\n      onClick={() => {}}\n    />\n  ))\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/ConnectionSelector/index.tsx",
    "content": "import React, { useMemo } from \"react\"\nimport styled from \"styled-components\"\nimport { MdCheckCircle as Checkmark } from \"react-icons/md\"\n\nimport {\n  getIcon,\n  getPlatformName,\n  getPlatformDetails,\n  getConnectionName,\n} from \"../../util/connectionHelpers\"\nimport { Connection } from \"../../contexts/Standalone/useStandalone\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: row;\n  flex: 0 0 auto;\n  cursor: pointer;\n  margin-right: 20px;\n  align-items: center;\n`\n\nconst IconContainer = styled.div`\n  position: relative;\n`\n\nconst CheckmarkContainer = styled.div`\n  position: absolute;\n  bottom: -3px;\n  right: -3px;\n  color: green;\n`\n\nconst InfoContainer = styled.div`\n  margin-left: 10px;\n`\n\ninterface ConnectionSelectorProps {\n  selectedConnection: Connection | null\n  connection: Connection\n  onClick: () => void\n}\n\nexport default function ConnectionSelector({\n  selectedConnection,\n  connection,\n  onClick,\n}: ConnectionSelectorProps) {\n  const isSelected = selectedConnection && selectedConnection.clientId === connection.clientId\n\n  const [ConnectionIcon, platformName, platformDetails, connectionName] = useMemo(() => {\n    return [\n      getIcon(connection),\n      getPlatformName(connection),\n      getPlatformDetails(connection),\n      getConnectionName(connection),\n    ]\n  }, [connection])\n\n  return (\n    <Container onClick={onClick}>\n      <IconContainer>\n        <ConnectionIcon size={32} />\n        {isSelected && (\n          <CheckmarkContainer>\n            <Checkmark />\n          </CheckmarkContainer>\n        )}\n      </IconContainer>\n      <InfoContainer>\n        <div>{connectionName}</div>\n        <div>\n          {platformName} {platformDetails}\n        </div>\n      </InfoContainer>\n    </Container>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/Footer/Footer.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { storiesOf } from \"@storybook/react\"\n\nimport { Connection } from \"../../contexts/Standalone/useStandalone\"\n\nimport Footer from \"./Stateless\"\n\nconst testConnections: Connection[] = [\n  {\n    id: 0,\n    clientId: \"1\",\n    name: \"Test 1\",\n    commands: [],\n    platform: \"ios\",\n    platformVersion: \"12\",\n    connected: true,\n  },\n  {\n    id: 0,\n    clientId: \"1\",\n    name: \"Test 2\",\n    commands: [],\n    platform: \"ios\",\n    platformVersion: \"12\",\n    connected: true,\n  },\n  {\n    id: 0,\n    clientId: \"1\",\n    name: \"Test 3\",\n    commands: [],\n    platform: \"ios\",\n    platformVersion: \"12\",\n    connected: true,\n  },\n  {\n    id: 0,\n    clientId: \"1\",\n    name: \"Test 4\",\n    commands: [],\n    platform: \"ios\",\n    platformVersion: \"12\",\n    connected: true,\n  },\n  {\n    id: 0,\n    clientId: \"1\",\n    name: \"Test 5\",\n    commands: [],\n    platform: \"ios\",\n    platformVersion: \"12\",\n    connected: true,\n  },\n]\n\nstoriesOf(\"components/Footer\", module)\n  .add(\"Collpased\", () => (\n    <Footer\n      serverStatus=\"started\"\n      connections={[]}\n      selectedConnection={null}\n      isOpen={false}\n      setIsOpen={() => {}}\n      onChangeConnection={() => {}}\n    />\n  ))\n  .add(\"Collpased w/ connections\", () => (\n    <Footer\n      serverStatus=\"started\"\n      connections={testConnections}\n      selectedConnection={null}\n      isOpen={false}\n      setIsOpen={() => {}}\n      onChangeConnection={() => {}}\n    />\n  ))\n  .add(\"Expanded\", () => (\n    <Footer\n      serverStatus=\"started\"\n      connections={[]}\n      selectedConnection={null}\n      isOpen\n      setIsOpen={() => {}}\n      onChangeConnection={() => {}}\n    />\n  ))\n  .add(\"Expanded w/ connections\", () => (\n    <Footer\n      serverStatus=\"started\"\n      connections={testConnections}\n      selectedConnection={null}\n      isOpen\n      setIsOpen={() => {}}\n      onChangeConnection={() => {}}\n    />\n  ))\n  .add(\"Expanded w/ lots connections\", () => (\n    <Footer\n      serverStatus=\"started\"\n      connections={[...testConnections, ...testConnections, ...testConnections]}\n      selectedConnection={null}\n      isOpen\n      setIsOpen={() => {}}\n      onChangeConnection={() => {}}\n    />\n  ))\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/Footer/Stateless.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\nimport { MdSwapVert as ExpandIcon } from \"react-icons/md\"\n\nimport config from \"../../config\"\nimport {\n  getPlatformName,\n  getPlatformDetails,\n  getConnectionName,\n} from \"../../util/connectionHelpers\"\nimport { Connection, ServerStatus } from \"../../contexts/Standalone/useStandalone\"\nimport ConnectionSelector from \"../ConnectionSelector\"\n\nconst Container = styled.div`\n  border-top: 1px solid ${(props) => props.theme.chromeLine};\n  color: ${(props) => props.theme.foregroundDark};\n  box-shadow: 0 0 30px ${(props) => props.theme.glow};\n  color: ${(props) => props.theme.foregroundLight};\n`\n\nconst ConnectionContainer = styled.div`\n  display: flex;\n  flex: 1;\n  overflow-x: auto;\n  height: 85px;\n`\n\ninterface ContentContainerProps {\n  $isOpen: boolean\n}\nconst ContentContainer = styled.div.attrs(() => ({}))<ContentContainerProps>`\n  display: flex;\n  flex-direction: row;\n  background-color: ${(props) => props.theme.subtleLine};\n  padding: 0 10px;\n  justify-content: space-between;\n  align-items: center;\n  cursor: ${(props) => (props.$isOpen ? \"auto\" : \"pointer\")};\n  height: ${(props) => (props.$isOpen ? \"85px\" : \"25px\")};\n`\n\nconst ConnectionInfo = styled.div`\n  text-align: center;\n`\n\nconst ExpandContainer = styled.div`\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n`\n\nfunction renderExpanded(\n  serverStatus: ServerStatus,\n  connections: Connection[],\n  selectedConnection: Connection | null,\n  onChangeConnection: (clientId: string | null) => void\n) {\n  return (\n    <ConnectionContainer>\n      {connections.map((c) => (\n        <ConnectionSelector\n          key={c.id}\n          selectedConnection={selectedConnection}\n          connection={c}\n          onClick={() => onChangeConnection(c.clientId)}\n        />\n      ))}\n    </ConnectionContainer>\n  )\n}\n\nfunction renderConnectionInfo(selectedConnection) {\n  return selectedConnection\n    ? `${getConnectionName(selectedConnection)} | ${getPlatformName(\n        selectedConnection\n      )} ${getPlatformDetails(selectedConnection)}`\n    : \"Waiting for connection\"\n}\n\nfunction renderCollapsed(\n  serverStatus: ServerStatus,\n  connections: Connection[],\n  selectedConnection: Connection | null\n) {\n  return (\n    <>\n      <ConnectionInfo>\n        port {config.get(\"serverPort\")} | {connections.length} connections\n      </ConnectionInfo>\n      {serverStatus === \"portUnavailable\" && (\n        <ConnectionInfo>Port 9090 unavailable.</ConnectionInfo>\n      )}\n      {serverStatus === \"started\" && (\n        <ConnectionInfo>{renderConnectionInfo(selectedConnection)}</ConnectionInfo>\n      )}\n      {serverStatus === \"stopped\" && <ConnectionInfo>Waiting for server to start</ConnectionInfo>}\n    </>\n  )\n}\n\ninterface Props {\n  serverStatus: ServerStatus\n  connections: Connection[]\n  selectedConnection: Connection | null\n  isOpen: boolean\n  setIsOpen: (isOpen: boolean) => void\n  onChangeConnection: (clientId: string | null) => void\n}\n\nfunction Header({\n  serverStatus,\n  connections,\n  selectedConnection,\n  isOpen,\n  setIsOpen,\n  onChangeConnection,\n}: Props) {\n  const renderMethod = isOpen ? renderExpanded : renderCollapsed\n\n  return (\n    <Container>\n      <ContentContainer onClick={() => !isOpen && setIsOpen(true)} $isOpen={isOpen}>\n        {renderMethod(serverStatus, connections, selectedConnection, onChangeConnection)}\n        <ExpandContainer onClick={() => setIsOpen(!isOpen)}>\n          <ExpandIcon size={18} />\n        </ExpandContainer>\n      </ContentContainer>\n    </Container>\n  )\n}\n\nexport default Header\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/Footer/index.tsx",
    "content": "import React, { useContext, useState } from \"react\"\n\nimport StandaloneContext from \"../../contexts/Standalone\"\n\nimport Footer from \"./Stateless\"\n\nexport default function ConnectedFooter() {\n  const { serverStatus, connections, selectedConnection, selectConnection } =\n    useContext(StandaloneContext)\n  const [isOpen, setIsOpen] = useState(false)\n\n  return (\n    <Footer\n      serverStatus={serverStatus}\n      connections={connections}\n      selectedConnection={selectedConnection}\n      onChangeConnection={selectConnection}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/SideBar/SideBar.story.tsx",
    "content": "import React from \"react\"\nimport { BrowserRouter as Router } from \"react-router-dom\"\n\nimport SideBar from \"./Sidebar\"\n\nexport default {\n  title: \"SideBar\",\n}\n\nexport const Default = () => (\n  <Router>\n    <SideBar isOpen serverStatus=\"started\" />\n  </Router>\n)\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/SideBar/Sidebar.tsx",
    "content": "import React from \"react\"\nimport {\n  MdReorder,\n  MdAssignment,\n  MdPhoneIphone,\n  MdLiveHelp,\n  MdWarning,\n  MdOutlineMobileFriendly,\n  MdMobiledataOff,\n} from \"react-icons/md\"\nimport { FaMagic } from \"react-icons/fa\"\nimport styled from \"styled-components\"\n\nimport SideBarButton from \"../SideBarButton\"\nimport { reactotronLogo } from \"../../images\"\nimport { ServerStatus } from \"../../contexts/Standalone/useStandalone\"\n\ninterface SideBarContainerProps {\n  $isOpen: boolean\n}\nconst SideBarContainer = styled.div.attrs(() => ({}))<SideBarContainerProps>`\n  display: flex;\n  flex-direction: column;\n  padding-top: 25px;\n  background-color: ${(props) => props.theme.backgroundSubtleDark};\n  border-right: 1px solid ${(props) => props.theme.chromeLine};\n  width: 115px;\n  transition: margin 0.2s ease-out;\n  margin-left: ${(props) => (props.$isOpen ? 0 : -115)}px;\n`\n\nconst Spacer = styled.div`\n  flex: 1;\n`\n\nfunction SideBar({ isOpen, serverStatus }: { isOpen: boolean; serverStatus: ServerStatus }) {\n  let serverIcon = MdMobiledataOff\n  let iconColor\n  let serverText = \"Stopped\"\n  if (serverStatus === \"started\") {\n    serverIcon = MdOutlineMobileFriendly\n    serverText = \"Running\"\n  }\n  if (serverStatus === \"portUnavailable\") {\n    serverIcon = MdWarning\n    iconColor = \"yellow\"\n    serverText = \"Port 9090 unavailable\"\n  }\n\n  const retryConnection = () => {\n    if (serverStatus === \"portUnavailable\") {\n      // TODO: Reconnect more elegantly than forcing a reload\n      window.location.reload()\n    }\n  }\n\n  return (\n    <SideBarContainer $isOpen={isOpen}>\n      <SideBarButton image={reactotronLogo} path=\"/\" text=\"Home\" hideTopBar />\n      <SideBarButton icon={MdReorder} path=\"/timeline\" text=\"Timeline\" />\n      <SideBarButton\n        icon={MdAssignment}\n        path=\"/state/subscriptions\"\n        matchPath=\"/state\"\n        text=\"State\"\n      />\n      <SideBarButton\n        icon={MdPhoneIphone}\n        path=\"/native/overlay\"\n        matchPath=\"/native\"\n        text=\"React Native\"\n      />\n      <SideBarButton icon={FaMagic} path=\"/customCommands\" text=\"Custom Commands\" iconSize={25} />\n\n      <Spacer />\n\n      <SideBarButton\n        icon={serverIcon}\n        path=\"#\"\n        onPress={retryConnection}\n        text={serverText}\n        iconColor={iconColor}\n      />\n\n      <SideBarButton icon={MdLiveHelp} path=\"/help\" text=\"Help\" hideTopBar />\n    </SideBarContainer>\n  )\n}\n\nexport default SideBar\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/SideBar/index.tsx",
    "content": "import React, { useContext } from \"react\"\nimport LayoutContext from \"../../contexts/Layout\"\nimport StandaloneContext from \"../../contexts/Standalone\"\n\nimport SidebarStateless from \"./Sidebar\"\n\nfunction SideBar() {\n  const { isSideBarOpen } = useContext(LayoutContext)\n  const { serverStatus } = useContext(StandaloneContext)\n\n  return <SidebarStateless isOpen={isSideBarOpen} serverStatus={serverStatus} />\n}\n\nexport default SideBar\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/SideBarButton/SideBarButton.story.tsx",
    "content": "import React from \"react\"\nimport { BrowserRouter as Router } from \"react-router-dom\"\nimport { boolean } from \"@storybook/addon-knobs\"\nimport { MdReorder } from \"react-icons/md\"\n\nimport SideBarButton from \"./Stateless\"\n\nconst reactotronLogo = require(\"../../images/Reactotron-128.png\")\n\nexport default {\n  title: \"SideBar Button\",\n}\n\nexport const IconInactive = () => (\n  <Router>\n    <div style={{ width: 80 }}>\n      <SideBarButton icon={MdReorder} path=\"/\" text=\"Hello?\" isActive={false} />\n    </div>\n  </Router>\n)\n\nexport const IconActive = () => (\n  <Router>\n    <div style={{ width: 80 }}>\n      <SideBarButton icon={MdReorder} path=\"/\" text=\"Hello?\" isActive={true} />\n    </div>\n  </Router>\n)\n\nexport const IconInteractive = () => {\n  const isActive = boolean(\"isActive\", false)\n\n  return (\n    <Router>\n      <div style={{ width: 80 }}>\n        <SideBarButton icon={MdReorder} path=\"/\" text=\"Hello?\" isActive={isActive} />\n      </div>\n    </Router>\n  )\n}\n\nexport const ImageInactive = () => (\n  <Router>\n    <div style={{ width: 80 }}>\n      <SideBarButton image={reactotronLogo} path=\"/\" text=\"Hello?\" isActive={false} />\n    </div>\n  </Router>\n)\n\nexport const ImageActive = () => (\n  <Router>\n    <div style={{ width: 80 }}>\n      <SideBarButton image={reactotronLogo} path=\"/\" text=\"Hello?\" isActive={true} />\n    </div>\n  </Router>\n)\n\nexport const ImageInteractive = () => {\n  const isActive = boolean(\"isActive\", false)\n\n  return (\n    <Router>\n      <div style={{ width: 80 }}>\n        <SideBarButton image={reactotronLogo} path=\"/\" text=\"Hello?\" isActive={isActive} />\n      </div>\n    </Router>\n  )\n}\n\nexport const HideTopBar = () => (\n  <Router>\n    <div style={{ width: 80 }}>\n      <SideBarButton icon={MdReorder} path=\"/\" text=\"Hello?\" isActive={true} hideTopBar />\n    </div>\n  </Router>\n)\n\nexport const CustomIconSize = () => (\n  <Router>\n    <div style={{ width: 80 }}>\n      <SideBarButton icon={MdReorder} path=\"/\" text=\"Hello?\" isActive={true} iconSize={10} />\n    </div>\n  </Router>\n)\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/SideBarButton/Stateless.tsx",
    "content": "import React from \"react\"\nimport { Motion, spring } from \"react-motion\"\nimport { Link } from \"react-router-dom\"\nimport colorInterpolate from \"color-interpolate\"\nimport styled from \"styled-components\"\n\nconst Theme = { highlight: \"hsl(290, 3.2%, 47.4%)\", foregroundLight: \"#c3c3c3\" }\n\ninterface SideBarButtonComponentProps {\n  icon?: any\n  iconColor?: string\n  image?: any\n  path: string\n  text: string\n  isActive: boolean\n  hideTopBar?: boolean\n  iconSize?: number\n  onPress?: () => void\n}\n\ninterface SideBarButtonProps {\n  $hideTopBar: boolean\n  $colorAnimation: number\n}\n\nconst colorInterpolator = colorInterpolate([Theme.highlight, Theme.foregroundLight])\n\nexport const SideBarButtonContainer = styled.div.attrs(() => ({}))<SideBarButtonProps>`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 15px 0;\n  margin: 0 10px;\n  cursor: pointer;\n  border-top: ${(props) => (props.$hideTopBar ? \"none\" : `1px solid ${props.theme.line}`)};\n  color: ${(props) => colorInterpolator(props.$colorAnimation)};\n`\n\nconst Image = styled.img.attrs(() => ({}))<SideBarButtonProps>`\n  width: 32px;\n  height: 32px;\n  padding-bottom: 4px;\n  filter: grayscale(${(props) => 100 - 100 * props.$colorAnimation}%)\n    brightness(${(props) => 70 + 30 * props.$colorAnimation}%);\n`\n\nconst Title = styled.div`\n  padding-top: 2px;\n  text-align: center;\n  font-size: 12px;\n`\n\nfunction SideBarButton({\n  icon: Icon,\n  iconColor,\n  image,\n  path,\n  text,\n  isActive,\n  hideTopBar,\n  iconSize,\n  onPress,\n}: SideBarButtonComponentProps) {\n  return (\n    <Motion style={{ color: spring(isActive ? 1 : 0) }}>\n      {({ color }) => (\n        <Link to={path} style={{ textDecoration: \"none\" }} onClick={onPress}>\n          <SideBarButtonContainer $hideTopBar={hideTopBar || false} $colorAnimation={color}>\n            {Icon && <Icon size={iconSize || 32} color={iconColor} />}\n            {image && (\n              <Image src={image} $hideTopBar={hideTopBar || false} $colorAnimation={color} />\n            )}\n            <Title>{text}</Title>\n          </SideBarButtonContainer>\n        </Link>\n      )}\n    </Motion>\n  )\n}\n\nexport default SideBarButton\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/components/SideBarButton/index.tsx",
    "content": "import React from \"react\"\nimport { useLocation } from \"react-router-dom\"\n\nimport StatelessSideBarButton from \"./Stateless\"\n\ntype Props = {\n  icon?: any\n  iconColor?: string\n  image?: any\n  path: string\n  matchPath?: string\n  text: string\n  hideTopBar?: boolean\n  iconSize?: number\n  onPress?: () => void\n}\n\nfunction SideBarButton({ path, matchPath, ...rest }: Props) {\n  const location = useLocation()\n\n  const isActive = matchPath\n    ? location.pathname.indexOf(matchPath) === 0\n    : location.pathname === path\n\n  return <StatelessSideBarButton {...rest} path={path} isActive={isActive} />\n}\n\nexport default SideBarButton\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/config.ts",
    "content": "import Store from \"electron-store\"\n\ntype StoreType = {\n  serverPort: number\n  commandHistory: number\n}\n\nconst config = new Store<StoreType>({\n  schema: {\n    serverPort: {\n      type: \"number\",\n      default: 9090,\n    },\n    commandHistory: {\n      type: \"number\",\n      default: 500,\n    },\n  },\n})\n\n// Setup defaults\nif (!config.has(\"serverPort\")) {\n  config.set(\"serverPort\", 9090)\n}\nif (!config.has(\"commandHistory\")) {\n  config.set(\"commandHistory\", 500)\n}\n\nexport default config\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/Layout/index.tsx",
    "content": "import React from \"react\"\n\nimport useLayout from \"./useLayout\"\n\ninterface Context {\n  isSideBarOpen: boolean\n  toggleSideBar: () => void\n}\n\nconst noop = (): void => {\n  throw Error(\n    \"Noop function called. This is a bug. Please report it to the Reactotron team. Thanks! :)\"\n  )\n}\n\nconst LayoutContext = React.createContext<Context>({\n  isSideBarOpen: true,\n  toggleSideBar: noop,\n})\n\nconst Provider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n  const { isSideBarOpen, toggleSideBar } = useLayout()\n\n  return (\n    <LayoutContext.Provider\n      value={{\n        isSideBarOpen,\n        toggleSideBar,\n      }}\n    >\n      {children}\n    </LayoutContext.Provider>\n  )\n}\n\nexport default LayoutContext\nexport const LayoutProvider = Provider\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/Layout/useLayout.test.ts",
    "content": "import { act, renderHook } from \"@testing-library/react\"\n\nimport useLayout from \"./useLayout\"\n\ndescribe(\"contexts/Layout/useLayout\", () => {\n  describe(\"UI Handling\", () => {\n    it(\"should toggle the sidebar\", () => {\n      const { result } = renderHook(() => useLayout())\n\n      expect(result.current.isSideBarOpen).toBeTruthy()\n\n      act(() => {\n        result.current.toggleSideBar()\n      })\n\n      expect(result.current.isSideBarOpen).toBeFalsy()\n\n      act(() => {\n        result.current.toggleSideBar()\n      })\n\n      expect(result.current.isSideBarOpen).toBeTruthy()\n    })\n  })\n})\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/Layout/useLayout.ts",
    "content": "import { useCallback, useReducer } from \"react\"\nimport { produce } from \"immer\"\n\nexport enum ActionTypes {\n  ToggleSideBar = \"TOGGLE_SIDEBAR\",\n}\n\ninterface State {\n  isSideBarOpen: boolean\n}\n\ntype Action = { type: ActionTypes.ToggleSideBar }\n\nexport function reducer(state: State, action: Action) {\n  switch (action.type) {\n    case ActionTypes.ToggleSideBar:\n      return produce(state, draftState => {\n        draftState.isSideBarOpen = !draftState.isSideBarOpen\n      })\n    default:\n      return state\n  }\n}\n\nfunction useLayout() {\n  const [state, dispatch] = useReducer(reducer, {\n    isSideBarOpen: true,\n  })\n\n  const toggleSideBar = useCallback(() => {\n    dispatch({ type: ActionTypes.ToggleSideBar })\n  }, [])\n\n  return {\n    ...state,\n    toggleSideBar,\n  }\n}\n\nexport default useLayout\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/Standalone/index.tsx",
    "content": "import React, { useRef, useEffect, useCallback } from \"react\"\nimport Server, { createServer } from \"reactotron-core-server\"\n\nimport ReactotronBrain from \"../../ReactotronBrain\"\nimport config from \"../../config\"\n\nimport useStandalone, { Connection, ServerStatus } from \"./useStandalone\"\n\n// TODO: Move up to better places like core somewhere!\ninterface Context {\n  serverStatus: ServerStatus\n  connections: Connection[]\n  selectedConnection: Connection\n  selectConnection: (clientId: string) => void\n}\n\nconst StandaloneContext = React.createContext<Context>({\n  serverStatus: \"stopped\",\n  connections: [],\n  selectedConnection: null,\n  selectConnection: null,\n})\n\nconst Provider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n  const reactotronServer = useRef<Server>(null)\n\n  const {\n    serverStatus,\n    connections,\n    selectedClientId,\n    selectedConnection,\n    selectConnection,\n    clearSelectedConnectionCommands,\n    serverStarted,\n    serverStopped,\n    connectionEstablished,\n    commandReceived,\n    connectionDisconnected,\n    addCommandListener,\n    portUnavailable,\n  } = useStandalone()\n\n  useEffect(() => {\n    reactotronServer.current = createServer({ port: config.get(\"serverPort\") as number })\n\n    reactotronServer.current.on(\"start\", serverStarted)\n    reactotronServer.current.on(\"stop\", serverStopped)\n    // @ts-expect-error need to sync these types between reactotron-core-server and reactotron-app\n    reactotronServer.current.on(\"connectionEstablished\", connectionEstablished)\n    reactotronServer.current.on(\"command\", commandReceived)\n    // @ts-expect-error need to sync these types between reactotron-core-server and reactotron-app\n    reactotronServer.current.on(\"disconnect\", connectionDisconnected)\n    reactotronServer.current.on(\"portUnavailable\", portUnavailable)\n\n    reactotronServer.current.start()\n\n    return () => {\n      reactotronServer.current.stop()\n    }\n  }, [\n    serverStarted,\n    serverStopped,\n    connectionEstablished,\n    commandReceived,\n    connectionDisconnected,\n    portUnavailable,\n  ])\n\n  const sendCommand = useCallback(\n    (type: string, payload: any, clientId?: string) => {\n      // TODO: Do better then just throwing these away...\n      if (!reactotronServer.current) return\n\n      reactotronServer.current.send(type, payload, clientId || selectedClientId)\n    },\n    [reactotronServer, selectedClientId]\n  )\n\n  return (\n    <StandaloneContext.Provider\n      value={{\n        serverStatus,\n        connections,\n        selectedConnection,\n        selectConnection,\n      }}\n    >\n      <ReactotronBrain\n        commands={(selectedConnection || { commands: [] }).commands}\n        sendCommand={sendCommand}\n        clearCommands={clearSelectedConnectionCommands}\n        addCommandListener={addCommandListener}\n      >\n        {children}\n      </ReactotronBrain>\n    </StandaloneContext.Provider>\n  )\n}\n\nexport default StandaloneContext\nexport const StandaloneProvider = Provider\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/Standalone/useStandalone.test.ts",
    "content": "import { act, renderHook } from \"@testing-library/react\"\n\nimport useStandalone from \"./useStandalone\"\n\ndescribe(\"contexts/Standalone/useStandalone\", () => {\n  describe(\"Connection Handling\", () => {\n    it(\"should handle new connections and add them to our list\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      expect(result.current.connections.length).toEqual(0)\n      expect(result.current.selectedClientId).toEqual(null)\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.connections.length).toEqual(1)\n      expect(result.current.connections[0]).toEqual({\n        clientId: \"1234\",\n        id: 0,\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      })\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n    })\n\n    it(\"should not recreate an existing connection but should update the connected status\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      expect(result.current.connections.length).toEqual(0)\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      act(() => {\n        // Try and duplicate the connection\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.connections.length).toEqual(1)\n      expect(result.current.connections[0]).toEqual({\n        clientId: \"1234\",\n        id: 0,\n        platform: \"ios\",\n        commands: [],\n        connected: true,\n      })\n    })\n\n    it(\"should grab orphaned commands for this connection\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.commandReceived({ connectionId: 0, payload: true })\n      })\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.connections.length).toEqual(1)\n      expect(result.current.orphanedCommands.length).toEqual(0)\n      expect(result.current.connections[0].commands.length).toEqual(1)\n      expect(result.current.connections[0].commands[0]).toEqual({\n        connectionId: 0,\n        payload: true,\n      })\n    })\n\n    it(\"should not switch selected connections if there are more then one\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      expect(result.current.selectedClientId).toEqual(null)\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"12345\",\n          id: 1,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n    })\n\n    it(\"should mark a connection as disconnected\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.connections[0].connected).toBeTruthy()\n\n      act(() => {\n        result.current.connectionDisconnected({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.connections[0].connected).toBeFalsy()\n    })\n\n    it(\"should not change the selected connection id if this was not the selected connection\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"567\",\n          id: 1,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n\n      act(() => {\n        result.current.connectionDisconnected({\n          clientId: \"567\",\n          id: 1,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n    })\n\n    it(\"should change the selected client id if there is another connection available\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"567\",\n          id: 1,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n\n      act(() => {\n        result.current.connectionDisconnected({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"567\")\n    })\n\n    it(\"should clear out the selected connection id if there are no other connections available\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n\n      act(() => {\n        result.current.connectionDisconnected({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(null)\n    })\n\n    it(\"should not change to a client id that doesn't exist\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n\n      act(() => {\n        result.current.selectConnection(\"456\")\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n    })\n\n    it(\"should change to a new selected connection\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"456\",\n          id: 1,\n          platform: \"ios\",\n        })\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"1234\")\n\n      act(() => {\n        result.current.selectConnection(\"456\")\n      })\n\n      expect(result.current.selectedClientId).toEqual(\"456\")\n    })\n  })\n\n  describe(\"Command Handling\", () => {\n    it(\"should store commands without a client id as orphaned commands\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      expect(result.current.orphanedCommands.length).toEqual(0)\n\n      act(() => {\n        result.current.commandReceived({ connectionId: 1, payload: true })\n      })\n\n      expect(result.current.orphanedCommands.length).toEqual(1)\n      expect(result.current.orphanedCommands[0]).toEqual({ connectionId: 1, payload: true })\n    })\n\n    it(\"should clear commands from a connection\", () => {\n      const { result } = renderHook(() => useStandalone())\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      act(() => {\n        result.current.commandReceived({ clientId: \"1234\", payload: true })\n      })\n\n      expect(result.current.connections[0].commands.length).toEqual(1)\n      expect(result.current.connections[0].commands[0]).toEqual({ clientId: \"1234\", payload: true })\n\n      act(() => {\n        result.current.clearSelectedConnectionCommands()\n      })\n\n      expect(result.current.connections[0].commands.length).toEqual(0)\n    })\n\n    it(\"should add a command received listener and it should be called when a command is received\", () => {\n      const { result } = renderHook(() => useStandalone())\n      const mockListener = jest.fn()\n\n      act(() => {\n        result.current.connectionEstablished({\n          clientId: \"1234\",\n          id: 0,\n          platform: \"ios\",\n        })\n      })\n\n      act(() => {\n        result.current.addCommandListener(mockListener)\n      })\n\n      act(() => {\n        result.current.commandReceived({ clientId: \"1234\", payload: true })\n      })\n\n      expect(mockListener).toHaveBeenCalledWith({ clientId: \"1234\", payload: true })\n    })\n  })\n})\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/Standalone/useStandalone.ts",
    "content": "import { useCallback, useReducer } from \"react\"\nimport { produce } from \"immer\"\n\nexport enum ActionTypes {\n  ServerStarted = \"SERVER_STARTED\",\n  ServerStopped = \"SERVER_STOPPED\",\n  AddConnection = \"ADD_CONNECTION\",\n  RemoveConnection = \"REMOVE_CONNECTION\",\n  ClearConnectionCommands = \"CLEAR_CONNECTION_COMMANDS\",\n  CommandReceived = \"COMMAND_RECEIVED\",\n  ChangeSelectedClientId = \"CHANGE_SELECTED_CLIENT_ID\",\n  AddCommandHandler = \"ADD_COMMAND_HANDLER\",\n  PortUnavailable = \"PORT_UNAVAILABLE\",\n}\n\nexport type ServerStatus = \"stopped\" | \"portUnavailable\" | \"started\"\n\nexport interface ReactotronConnection {\n  // Stuff shipped from core-server\n  id: number\n  clientId: string\n\n  // TODO: Nullable maybe?\n  platform: \"ios\" | \"android\" | \"browser\"\n  name?: string\n  platformVersion?: string\n  osRelease?: string\n  userAgent?: string\n}\n\nexport interface Connection extends ReactotronConnection {\n  // Stuff that reactotron adds\n  commands: any[]\n  connected: boolean\n}\n\ninterface State {\n  serverStatus: ServerStatus\n  connections: Connection[]\n  selectedClientId: string\n  orphanedCommands: any[] // Command[]\n  commandListeners: ((command: any) => void)[] // ((command: Command) => void)[]\n}\n\ntype Action =\n  | { type: ActionTypes.ServerStarted; payload: undefined }\n  | { type: ActionTypes.ServerStopped; payload: undefined }\n  | {\n      type: ActionTypes.AddConnection | ActionTypes.RemoveConnection\n      payload: ReactotronConnection\n    }\n  | { type: ActionTypes.ChangeSelectedClientId; payload: string }\n  | { type: ActionTypes.CommandReceived; payload: any } // TODO: Type this better!\n  | { type: ActionTypes.ClearConnectionCommands }\n  | { type: ActionTypes.AddCommandHandler; payload: (command: any) => void }\n  | { type: ActionTypes.PortUnavailable; payload: undefined }\n\nexport function reducer(state: State, action: Action) {\n  switch (action.type) {\n    case ActionTypes.ServerStarted:\n      return produce(state, (draftState) => {\n        draftState.serverStatus = \"started\"\n      })\n    case ActionTypes.ServerStopped:\n      return produce(state, (draftState) => {\n        draftState.serverStatus = \"stopped\"\n      })\n    case ActionTypes.AddConnection:\n      return produce(state, (draftState) => {\n        let existingConnection = draftState.connections.find(\n          (c) => c.clientId === action.payload.clientId\n        )\n\n        if (existingConnection) {\n          existingConnection.connected = true\n        } else {\n          existingConnection = {\n            ...action.payload,\n            commands: [],\n            connected: true,\n          }\n\n          draftState.connections.push(existingConnection)\n        }\n\n        if (draftState.orphanedCommands.length > 0) {\n          // TODO: Make this better... filtering this list twice probably is a terrible idea.\n          const orphanedCommands = draftState.orphanedCommands.filter(\n            (oc) => oc.connectionId === action.payload.id\n          )\n\n          // TODO: Consider if we need to do a one time sort of these... just in case.\n          existingConnection.commands.push(...orphanedCommands)\n\n          draftState.orphanedCommands = draftState.orphanedCommands.filter(\n            (oc) => oc.connectionId !== action.payload.id\n          )\n        }\n\n        // TODO: Figure out if we can stop having these dumb commands so early. Make core client only send once we actually have a client ID!\n\n        const filteredConnections = draftState.connections.filter((c) => c.connected)\n\n        if (filteredConnections.length === 1) {\n          draftState.selectedClientId = filteredConnections[0].clientId\n        }\n\n        // Change the server status to started if it wasn't already\n        draftState.serverStatus = \"started\"\n      })\n    case ActionTypes.RemoveConnection:\n      return produce(state, (draftState) => {\n        const existingConnection = draftState.connections.find(\n          (c) => c.clientId === action.payload.clientId\n        )\n\n        if (!existingConnection) return\n\n        existingConnection.connected = false\n\n        if (draftState.selectedClientId === action.payload.clientId) {\n          const filteredConnections = draftState.connections.filter((c) => c.connected)\n\n          if (filteredConnections.length > 0) {\n            draftState.selectedClientId = filteredConnections[0].clientId\n          } else {\n            draftState.selectedClientId = null\n          }\n        }\n      })\n    case ActionTypes.CommandReceived:\n      return produce(state, (draftState) => {\n        if (!action.payload.clientId) {\n          draftState.orphanedCommands.push(action.payload)\n          return\n        }\n\n        const connection = draftState.connections.find(\n          (c) => c.clientId === action.payload.clientId\n        )\n\n        if (!connection) {\n          console.error(\"Command received for unknown connection\", action.payload)\n          return\n        }\n\n        connection.commands = [action.payload, ...connection.commands]\n      })\n    case ActionTypes.ClearConnectionCommands:\n      return produce(state, (draftState) => {\n        if (!draftState.selectedClientId) return\n\n        const selectedConnection = draftState.connections.find(\n          (c) => c.clientId === draftState.selectedClientId\n        )\n\n        if (!selectedConnection) return\n\n        selectedConnection.commands = []\n      })\n    case ActionTypes.ChangeSelectedClientId:\n      return produce(state, (draftState) => {\n        const selectedConnection = draftState.connections.find((c) => c.clientId === action.payload)\n\n        if (!selectedConnection) return\n\n        draftState.selectedClientId = action.payload\n      })\n    case ActionTypes.AddCommandHandler:\n      return produce(state, (draftState) => {\n        draftState.commandListeners.push(action.payload)\n      })\n    case ActionTypes.PortUnavailable:\n      return produce(state, (draftState) => {\n        console.error(\"Port unavailable!\")\n        draftState.serverStatus = \"portUnavailable\"\n      })\n    default:\n      return state\n  }\n}\n\nfunction useStandalone() {\n  const [state, dispatch] = useReducer(reducer, {\n    serverStatus: \"stopped\",\n    connections: [],\n    selectedClientId: null,\n    orphanedCommands: [],\n    commandListeners: [],\n  })\n\n  // Called when the server successfully starts\n  const serverStarted = useCallback(() => {\n    dispatch({ type: ActionTypes.ServerStarted, payload: undefined })\n  }, [])\n\n  // Called when the server stops\n  const serverStopped = useCallback(() => {\n    dispatch({ type: ActionTypes.ServerStopped, payload: undefined })\n  }, [])\n\n  // Called when we have client details. NOTE: Commands can start flying in before this gets called!\n  const connectionEstablished = useCallback((connection: ReactotronConnection) => {\n    dispatch({\n      type: ActionTypes.AddConnection,\n      payload: connection,\n    })\n  }, [])\n\n  // Called when commands are flowing in.\n  const commandReceived = useCallback(\n    (command: any) => {\n      // First dispatch to update state\n      dispatch({ type: ActionTypes.CommandReceived, payload: command })\n\n      // Then notify listeners\n      state.commandListeners.forEach((cl) => cl(command))\n    },\n    [state.commandListeners]\n  )\n\n  // Called when a client disconnects. NOTE: They could be coming back. This could happen with a reload of the simulator!\n  const connectionDisconnected = useCallback((connection: ReactotronConnection) => {\n    dispatch({ type: ActionTypes.RemoveConnection, payload: connection })\n  }, [])\n\n  const clearSelectedConnectionCommands = useCallback(() => {\n    dispatch({ type: ActionTypes.ClearConnectionCommands })\n  }, [])\n\n  const selectConnection = useCallback((clientId: string) => {\n    dispatch({ type: ActionTypes.ChangeSelectedClientId, payload: clientId })\n  }, [])\n\n  const addCommandListener = useCallback((callback: (command: any) => void) => {\n    dispatch({ type: ActionTypes.AddCommandHandler, payload: callback })\n  }, [])\n\n  const portUnavailable = useCallback(() => {\n    dispatch({ type: ActionTypes.PortUnavailable, payload: undefined })\n  }, [])\n\n  return {\n    ...state,\n    selectedConnection: state.connections.find((c) => c.clientId === state.selectedClientId),\n    selectConnection,\n    serverStarted,\n    serverStopped,\n    connectionEstablished,\n    connectionDisconnected,\n    commandReceived,\n    clearSelectedConnectionCommands,\n    addCommandListener,\n    portUnavailable,\n  }\n}\n\nexport default useStandalone\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/index.tsx",
    "content": "import React from \"react\"\nimport { LayoutProvider } from \"./Layout\"\nimport { StandaloneProvider } from \"./Standalone\"\n\nconst RootContextProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n  return (\n    <LayoutProvider>\n      <StandaloneProvider>{children}</StandaloneProvider>\n    </LayoutProvider>\n  )\n}\n\nexport default RootContextProvider\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/contexts/utility.ts",
    "content": "import type {Context} from 'react';\n\nexport type InferContextValue<C> = C extends Context<infer Value> ? Value : never\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/global.css",
    "content": "body {\n  margin: 0;\n  font-size: 0.94em;\n}\n\n::-webkit-scrollbar {\n  background-color: transparent;\n  width: 8px;\n  height: 8px;\n}\n::-webkit-scrollbar-track {\n  background-color: transparent;\n  border: 0px;\n  border-radius: 0px;\n}\n::-webkit-scrollbar-thumb {\n  background-color: rgba(128, 128, 128, 0.25) !important;\n  border-radius: 4px;\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/images/index.ts",
    "content": "export const reactotronLogo: string = require(\"./Reactotron-128.png\").default\nexport const storybookActiveImg: string = require(\"./storybook-logo-color.png\").default\nexport const storybookInactiveImg: string = require(\"./storybook-logo.png\").default\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/index.tsx",
    "content": "import \"v8-compile-cache\"\nimport React from \"react\"\nimport { createRoot } from \"react-dom/client\"\nimport { ReactotronAppProvider } from \"reactotron-core-ui\"\n\nimport \"./global.css\"\n\nimport App from \"./App\"\n\nconst root = createRoot(document.getElementById(\"app\"))\nroot.render(\n  <ReactotronAppProvider>\n    <App />\n  </ReactotronAppProvider>\n)\n\n// accept it like it's hot\nif ((module as any).hot) {\n  ;(module as any).hot.accept()\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/customCommands/index.tsx",
    "content": "import React, { useState, useContext, useReducer } from \"react\"\nimport { Header, EmptyState, CustomCommandsContext } from \"reactotron-core-ui\"\nimport type { CustomCommand } from \"reactotron-core-ui\"\nimport styled from \"styled-components\"\nimport { MdSearch } from \"react-icons/md\"\nimport { FaMagic } from \"react-icons/fa\"\nimport { produce } from \"immer\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\n\nconst CommandsContainer = styled.div`\n  height: 100%;\n  overflow-y: auto;\n  overflow-x: hidden;\n  padding: 20px 40px;\n  padding-bottom: 0;\n`\n\nconst SearchContainer = styled.div`\n  display: flex;\n  align-items: center;\n  padding-bottom: 10px;\n  padding-top: 4px;\n  padding-right: 10px;\n`\nconst SearchLabel = styled.p`\n  padding: 0 10px;\n  font-size: 14px;\n  color: ${(props) => props.theme.foregroundDark};\n`\nconst SearchInput = styled.input`\n  border-radius: 4px;\n  padding: 10px;\n  flex: 1;\n  background-color: ${(props) => props.theme.backgroundSubtleDark};\n  border: none;\n  color: ${(props) => props.theme.foregroundDark};\n  font-size: 14px;\n`\n\nconst ButtonContianer = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  margin-bottom: 24px;\n  color: ${(props) => props.theme.foreground};\n`\nconst Title = styled.div`\n  font-size: 24px;\n  margin-bottom: 12px;\n`\nconst Description = styled.div`\n  margin-bottom: 12px;\n`\nconst ArgsContainer = styled.div`\n  margin-bottom: 24px;\n`\nconst SendButton = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: ${(props) => props.theme.backgroundLighter};\n  border-radius: 4px;\n  width: 200px;\n  min-height: 50px;\n  margin-bottom: 24px;\n  cursor: pointer;\n  color: white;\n  transition: background-color 0.25s ease-in-out;\n\n  &:hover {\n    background-color: #e73435;\n  }\n`\nconst ArgContainer = styled.div`\n  &:not(:last-child) {\n    margin-bottom: 12px;\n  }\n`\nconst ArgName = styled.div`\n  margin-bottom: 8px;\n`\nconst ArgInput = styled.input`\n  padding: 10px 12px;\n  outline: none;\n  border-radius: 4px;\n  width: 90%;\n  border: none;\n  font-size: 16px;\n`\n\n// TODO: This item thing is getting complicated, move it out!\n// TODO: Better typing\nfunction customCommandItemReducer(state: any, action: any) {\n  switch (action.type) {\n    case \"UPDATE_ARG\":\n      return produce(state, (draftState) => {\n        draftState[action.payload.argName] = action.payload.value\n      })\n    default:\n      return state\n  }\n}\n\nfunction CustomCommandItem({\n  customCommand,\n  sendCustomCommand,\n}: {\n  customCommand: CustomCommand\n  sendCustomCommand: (command: any, args: any) => void\n}) {\n  const [state, dispatch] = useReducer(customCommandItemReducer, customCommand.args, (args) => {\n    if (!args) return {}\n\n    const argMap = {}\n\n    args.forEach((arg) => {\n      argMap[arg.name] = \"\"\n    })\n\n    return argMap\n  })\n\n  return (\n    <ButtonContianer>\n      <Title>{customCommand.title || customCommand.command}</Title>\n      <Description>{customCommand.description || \"No Description Provided\"}</Description>\n      {!!customCommand.args && customCommand.args.length > 0 && (\n        <ArgsContainer>\n          {customCommand.args.map((arg) => {\n            return (\n              <ArgContainer key={arg.name}>\n                <ArgName>{arg.name}</ArgName>\n                <ArgInput\n                  type=\"text\"\n                  placeholder={arg.name}\n                  value={state[arg.name]}\n                  onChange={(e) => {\n                    dispatch({\n                      type: \"UPDATE_ARG\",\n                      payload: {\n                        argName: arg.name,\n                        value: e.target.value,\n                      },\n                    })\n                  }}\n                />\n              </ArgContainer>\n            )\n          })}\n        </ArgsContainer>\n      )}\n      <SendButton\n        onClick={() => {\n          sendCustomCommand(customCommand.command, state)\n        }}\n      >\n        Send Command\n      </SendButton>\n    </ButtonContianer>\n  )\n}\n\nfunction CustomCommands() {\n  const [isSearchOpen, setSearchOpen] = useState(false)\n  const [search, setSearch] = useState(\"\")\n\n  const { customCommands, sendCustomCommand } = useContext(CustomCommandsContext)\n\n  const lowerSearch = search.toLowerCase()\n  const filteredCustomCommands =\n    search !== \"\"\n      ? customCommands.filter(\n          (cc) =>\n            cc.command.toLowerCase().indexOf(lowerSearch) > -1 ||\n            (cc.title || \"\").toLowerCase().indexOf(lowerSearch) > -1 ||\n            (cc.description || \"\").toLowerCase().indexOf(lowerSearch) > -1\n        )\n      : customCommands\n\n  return (\n    <Container>\n      <Header\n        title=\"Custom Commands\"\n        isDraggable\n        actions={[\n          {\n            tip: \"Search\",\n            icon: MdSearch,\n            onClick: () => {\n              setSearchOpen(!isSearchOpen)\n            },\n          },\n        ]}\n      >\n        {isSearchOpen && (\n          <SearchContainer>\n            <SearchLabel>Search</SearchLabel>\n            <SearchInput value={search} onChange={(e) => setSearch(e.target.value)} />\n          </SearchContainer>\n        )}\n      </Header>\n      <CommandsContainer>\n        {customCommands.length === 0 ? (\n          <EmptyState icon={FaMagic} title=\"No Custom Commands\">\n            When your app registers a custom command it will show here!\n          </EmptyState>\n        ) : (\n          filteredCustomCommands.map((cc) => (\n            <CustomCommandItem\n              key={`${cc.clientId}-${cc.id}`}\n              customCommand={cc}\n              sendCustomCommand={sendCustomCommand}\n            />\n          ))\n        )}\n      </CommandsContainer>\n    </Container>\n  )\n}\n\nexport default CustomCommands\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/help/SharedStyles.ts",
    "content": "import styled from \"styled-components\"\n\nexport const ItemContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  padding: 10px;\n  margin: 5px;\n  flex: 1;\n  background-color: ${(props) => props.theme.chrome};\n  border-radius: 5px;\n  border: 1px solid ${(props) => props.theme.chromeLine};\n`\nexport const ItemIconContainer = styled.div`\n  color: ${(props) => props.theme.foregroundLight};\n  margin-bottom: 8px;\n`\n\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/help/components/AndroidDeviceHelp.tsx",
    "content": "import React from \"react\"\nimport { ipcRenderer } from \"electron\"\nimport styled from \"styled-components\"\nimport { GoGear as SettingsIcon } from \"react-icons/go\"\nimport { MdCompareArrows as ReverseTunnelIcon } from \"react-icons/md\"\nimport { CgSmartphoneShake as ShakeDeviceIcon } from \"react-icons/cg\"\nimport { IoReloadOutline as ReloadAppIcon } from \"react-icons/io5\"\nimport { EmptyState, Tooltip } from \"reactotron-core-ui\"\nimport { FaAndroid } from \"react-icons/fa\"\nimport { ItemContainer, ItemIconContainer } from \"../SharedStyles\"\n\nconst Container = styled.div`\n  margin: 50px 0px;\n`\n\nconst TitleContainer = styled.div`\n  display: flex;\n  margin: 10px 0;\n  padding-bottom: 10px;\n  border-bottom: 1px solid ${(props) => props.theme.highlight};\n  justify-content: space-between;\n  align-items: baseline;\n  gap: 20px;\n`\n\nconst Title = styled.div`\n  font-size: 18px;\n  color: ${(props) => props.theme.foregroundLight};\n`\nconst AndroidDeviceListContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  flex: 1;\n  margin-top: 10px;\n  color: ${(props) => props.theme.foreground};\n`\n\nconst AndroidDeviceButtonsContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  margin-top: 0px;\n`\nconst Text = styled.div`\n  margin-right: 4px;\n  color: ${(props) => props.theme.foregroundDark};\n`\nconst DeviceID = styled.div`\n  font-size: 16px;\n  margin-top: 15px;\n  margin-bottom: 0px;\n  color: ${(props) => props.theme.tag};\n`\nconst HighlightedText = styled.div`\n  display: inline-block;\n  border-radius: 5px;\n  border: 1px solid ${(props) => props.theme.highlight};\n  padding: 2px;\n  color: ${(props) => props.theme.tag};\n  background-color: ${(props) => props.theme.line};\n`\nconst PortSettingsTitle = styled.div`\n  font-size: 18px;\n  margin: 10px 0;\n  padding-bottom: 2px;\n  color: ${(props) => props.theme.foregroundLight};\n  border-bottom: 1px solid ${(props) => props.theme.highlight};\n`\nconst PortSettingsContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  margin-bottom: 10px;\n  padding: 10px;\n  border-radius: 5px;\n  border: 1px solid ${(props) => props.theme.chromeLine};\n  background-color: ${(props) => props.theme.chrome};\n`\nconst PortArgsContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  margin-top: 10px;\n`\nconst ArgContainer = styled.div`\n  &:not(:last-child) {\n    margin-right: 12px;\n  }\n`\nconst ArgName = styled.div`\n  margin-bottom: 8px;\n`\nconst ArgInput = styled.input`\n  padding: 10px 12px;\n  outline: none;\n  border-radius: 4px;\n  width: 100px;\n  border: none;\n  font-size: 16px;\n`\nconst PortSettingsIconContainer = styled.div`\n  color: ${(props) => props.theme.foregroundLight};\n`\n\nfunction AndroidDeviceHelp() {\n  const [androidDevices, setAndroidDevices] = React.useState([])\n  const [portsVisible, setPortsVisible] = React.useState(false)\n  const [reactotronPort, setReactotronPort] = React.useState(\"9090\")\n  const [metroPort, setMetroPort] = React.useState(\"8081\")\n\n  // When the page loads, get the list of devices from ADB to help users debug android issues.\n  React.useEffect(() => {\n    ipcRenderer.on(\"device-list\", (_event, arg) => {\n      arg = arg.replace(/(\\r\\n|\\n|\\r)/gm, \"\\n\").trim() // Fix newlines\n      const rawDevices = arg.split(\"\\n\")\n      rawDevices.shift() // Remove the first line\n      const devices = rawDevices.map((device) => {\n        const [id, state] = device.split(\"\\t\")\n        return { id, state }\n      })\n      setAndroidDevices(devices)\n    })\n\n    ipcRenderer.send(\"get-device-list\")\n\n    return () => {\n      ipcRenderer.removeAllListeners(\"device-list\")\n    }\n  }, [])\n\n  const TitleComponent = React.useCallback(() => {\n    return (\n      <Title>\n        {androidDevices.length} Android Device{androidDevices.length !== 1 ? \"s\" : \"\"} Connected via\n        USB:\n      </Title>\n    )\n  }, [androidDevices.length])\n\n  return (\n    <Container>\n      <TitleContainer>\n        <TitleComponent />\n        <PortSettingsIconContainer\n          data-tip=\"Advanced Port Settings\"\n          data-for=\"port-settings\"\n          onClick={() => setPortsVisible(!portsVisible)}\n        >\n          <SettingsIcon size={20} />\n          <Tooltip id=\"port-settings\" />\n        </PortSettingsIconContainer>\n      </TitleContainer>\n      <Text>\n        This shows all android devices connected to your machine via the{\" \"}\n        <HighlightedText>adb devices</HighlightedText> command.\n      </Text>\n      <Text>\n        Android devices can sometimes be tricky to connect to Reactotron. Many issues can be\n        resolved by clicking <HighlightedText>Reverse Tunnel</HighlightedText> and then{\" \"}\n        <HighlightedText>Reload App</HighlightedText>.\n      </Text>\n      <AndroidDeviceListContainer>\n        {portsVisible && (\n          <PortSettingsContainer>\n            <PortSettingsTitle>Advanced Reverse Tunneling Settings:</PortSettingsTitle>\n            <Text>\n              Adjust these values to the ports you are using for Reactotron and Metro. Most users\n              will not need to change these values.\n            </Text>\n            <PortArgsContainer>\n              <ArgContainer key=\"reactotron-port\">\n                <ArgName>Reactotron Port:</ArgName>\n                <ArgInput\n                  type=\"text\"\n                  placeholder={reactotronPort}\n                  value={reactotronPort}\n                  onChange={(e) => setReactotronPort(e.target.value)}\n                />\n              </ArgContainer>\n              <ArgContainer key=\"metro-port\">\n                <ArgName>Metro Port:</ArgName>\n                <ArgInput\n                  type=\"text\"\n                  placeholder={metroPort}\n                  value={metroPort}\n                  onChange={(e) => setMetroPort(e.target.value)}\n                />\n              </ArgContainer>\n            </PortArgsContainer>\n          </PortSettingsContainer>\n        )}\n        {androidDevices.length === 0 ? (\n          <EmptyState icon={FaAndroid}>No Android devices connected via USB.</EmptyState>\n        ) : (\n          <AndroidDeviceList\n            devices={androidDevices}\n            reactotronPort={reactotronPort}\n            metroPort={metroPort}\n          />\n        )}\n      </AndroidDeviceListContainer>\n    </Container>\n  )\n}\n\nconst AndroidDeviceList = ({\n  devices,\n  reactotronPort,\n  metroPort,\n}: {\n  devices: any[]\n  reactotronPort: string\n  metroPort: string\n}) => {\n  return (\n    <>\n      {devices.map((device) => (\n        <div key={device.id}>\n          <DeviceID>{device.id}</DeviceID>\n          <AndroidDeviceButtonsContainer>\n            <ItemContainer\n              onClick={() =>\n                ipcRenderer.send(\"reverse-tunnel-device\", device.id, reactotronPort, metroPort)\n              }\n              data-tip={`This will allow reactotron to connect to your device via USB<br />by running adb reverse tcp:${reactotronPort} tcp:${reactotronPort}<br /><br />Reload your React Native app after pressing this.`}\n              data-for=\"reverse-tunnel\"\n            >\n              <ItemIconContainer>\n                <ReverseTunnelIcon size={40} />\n              </ItemIconContainer>\n              Reverse Tunnel\n              <Tooltip id=\"reverse-tunnel\" multiline />\n            </ItemContainer>\n            <ItemContainer\n              onClick={() => ipcRenderer.send(\"reload-app\", device.id)}\n              data-tip=\"This will reload the React Native app currently running on this device.<br />If you get the React Native red screen, relaunch the app from the build process.\"\n              data-for=\"reload-app\"\n            >\n              <ItemIconContainer>\n                <ReloadAppIcon size={40} />\n              </ItemIconContainer>\n              Reload App\n              <Tooltip id=\"reload-app\" multiline />\n            </ItemContainer>\n            <ItemContainer\n              onClick={() => ipcRenderer.send(\"shake-device\", device.id)}\n              data-tip=\"This will shake the device to bring up<br /> the React Native developer menu.\"\n              data-for=\"shake-device\"\n            >\n              <ItemIconContainer>\n                <ShakeDeviceIcon size={40} />\n              </ItemIconContainer>\n              Shake\n              <Tooltip id=\"shake-device\" multiline />\n            </ItemContainer>\n          </AndroidDeviceButtonsContainer>\n        </div>\n      ))}\n    </>\n  )\n}\n\nexport default AndroidDeviceHelp\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/help/components/Keybind.tsx",
    "content": "import React, { Fragment } from \"react\"\nimport styled from \"styled-components\"\n\nconst platform = window.process.platform\nconst mouseTrap = platform === \"darwin\" ? \"command\" : \"ctrl\"\n\nconst KEY_REMAPS = {\n  command: \"⌘\",\n  ctrl: \"CTRL\",\n  shift: \"⬆\",\n}\n\nconst Container = styled.div`\n  display: flex;\n  align-items: center;\n  margin: 10px 0;\n  color: ${(props) => props.theme.foreground};\n`\n\ninterface KeystrokeContainerProps {\n  $addWidth: boolean\n}\nconst KeystrokeContainer = styled.div.attrs(() => ({}))<KeystrokeContainerProps>`\n  width: ${(props) => (props.$addWidth ? \"180px\" : \"auto\")};\n`\nconst Keystroke = styled.span`\n  font-weight: bold;\n  padding: 4px 12px;\n  margin: 0 2px;\n  background-color: ${(props) => props.theme.foreground};\n  color: ${(props) => props.theme.background};\n  border-radius: 4px;\n  border-bottom: 2px solid ${(props) => props.theme.highlight};\n`\nconst Plus = styled.span`\n  margin: 0 2px;\n`\n\nconst Description = styled.div``\n\nexport function KeybindKeys({ keybind, sequence, addWidth }) {\n  // const modifierName = platform === \"darwin\" ? \"⌘\" : \"CTRL\"\n  const splitSequence = sequence.split(\"+\")\n\n  return (\n    <KeystrokeContainer $addWidth={addWidth}>\n      {splitSequence.map((key, idx) => (\n        <Fragment key={`${keybind.name}-${idx}`}>\n          <Keystroke>{KEY_REMAPS[key.toLowerCase()] || key.toLowerCase()}</Keystroke>\n          {idx < splitSequence.length - 1 && <Plus>+</Plus>}\n        </Fragment>\n      ))}\n    </KeystrokeContainer>\n  )\n}\n\nexport function getPlatformSequence(keybind) {\n  if (keybind.sequences.length === 1) {\n    return keybind.sequences[0].sequence\n  }\n\n  // If there is more then one we assume its platform specific\n  return keybind.sequences.find((s) => s.sequence.indexOf(mouseTrap) > -1).sequence\n}\n\nfunction Keybind({ keybind }) {\n  const platformSequence = getPlatformSequence(keybind)\n\n  return (\n    <Container>\n      <KeybindKeys keybind={keybind} sequence={platformSequence} addWidth />\n      <Description>{keybind.name}</Description>\n    </Container>\n  )\n}\n\nexport default Keybind\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/help/components/KeybindGroup.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\n\nimport Keybind from \"./Keybind\"\n\nconst Contianer = styled.div`\n  display: flex;\n  flex-direction: column;\n  margin-bottom: 35px;\n`\n\nconst Name = styled.div`\n  color: ${(props) => props.theme.highlight};\n`\n\nconst KeybindContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n`\n\nfunction KeybindGroup({ group }) {\n  return (\n    <Contianer>\n      <Name>{group.name}</Name>\n      <KeybindContainer>\n        {group.keybinds.map((keybind) => (\n          <Keybind key={`${group.name}-${keybind.name}`} keybind={keybind} />\n        ))}\n      </KeybindContainer>\n    </Contianer>\n  )\n}\n\nexport default KeybindGroup\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/help/index.tsx",
    "content": "import React from \"react\"\nimport { shell } from \"electron\"\nimport { Header } from \"reactotron-core-ui\"\nimport styled from \"styled-components\"\nimport {\n  GoRepo as RepoIcon,\n  GoComment as FeedbackIcon,\n  GoSquirrel as ReleaseIcon,\n} from \"react-icons/go\"\nimport { FaTwitter as TwitterIcon } from \"react-icons/fa\"\nimport { getApplicationKeyMap } from \"react-hotkeys\"\nimport { ItemContainer, ItemIconContainer } from \"./SharedStyles\"\nimport KeybindGroup from \"./components/KeybindGroup\"\nimport { reactotronLogo } from \"../../images\"\n\nconst projectJson = require(\"../../../../package.json\")\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\nconst HelpContainer = styled.div`\n  padding: 20px;\n  overflow-y: auto;\n  overflow-x: hidden;\n`\nconst LogoContainer = styled.div`\n  display: flex;\n  justify-content: center;\n`\nconst LogoImage = styled.img`\n  height: 128px;\n  margin: 20px 0;\n`\nconst Title = styled.div`\n  font-size: 18px;\n  margin: 10px 0;\n  padding-bottom: 2px;\n  color: ${(props) => props.theme.foregroundLight};\n  border-bottom: 1px solid ${(props) => props.theme.highlight};\n`\nconst ConnectContainer = styled.div`\n  display: flex;\n  align-items: flex-start;\n  color: ${(props) => props.theme.foreground};\n  margin-bottom: 50px;\n`\n\nfunction openRepo() {\n  shell.openExternal(\"https://github.com/infinitered/reactotron\")\n}\n\nfunction openFeedback() {\n  shell.openExternal(\"https://github.com/infinitered/reactotron/issues/new\")\n}\n\nfunction openUpdates() {\n  shell.openExternal(\"https://github.com/infinitered/reactotron/releases\")\n}\n\nfunction openTwitter() {\n  shell.openExternal(\"https://twitter.com/reactotron\")\n}\n\nfunction Keybinds() {\n  const keyMap = getApplicationKeyMap()\n\n  const groupedKeyMap = Object.keys(keyMap).reduce((groups, k) => {\n    const keybind = keyMap[k]\n\n    let newGroup = groups.find((g) => g.name === keybind.group)\n\n    if (!newGroup) {\n      newGroup = { name: keybind.group, keybinds: [] }\n      groups.push(newGroup)\n    }\n\n    newGroup.keybinds.push(keybind)\n\n    return groups\n  }, [])\n\n  return groupedKeyMap.map((group) => <KeybindGroup key={group.name} group={group} />)\n}\n\nfunction Help() {\n  return (\n    <Container>\n      <Header title={`Using Reactotron ${projectJson.version}`} isDraggable />\n      <HelpContainer>\n        <LogoContainer>\n          <LogoImage src={reactotronLogo} />\n        </LogoContainer>\n        <Title>Let&apos;s Connect!</Title>\n        <ConnectContainer>\n          <ItemContainer onClick={openRepo}>\n            <ItemIconContainer>\n              <RepoIcon size={40} />\n            </ItemIconContainer>\n            GitHub Docs\n          </ItemContainer>\n          <ItemContainer onClick={openFeedback}>\n            <ItemIconContainer>\n              <FeedbackIcon size={40} />\n            </ItemIconContainer>\n            Feedback\n          </ItemContainer>\n          <ItemContainer onClick={openUpdates}>\n            <ItemIconContainer>\n              <ReleaseIcon size={40} />\n            </ItemIconContainer>\n            Updates\n          </ItemContainer>\n          <ItemContainer onClick={openTwitter}>\n            <ItemIconContainer>\n              <TwitterIcon size={40} />\n            </ItemIconContainer>\n            @reactotron\n          </ItemContainer>\n        </ConnectContainer>\n\n        <Title>Keystrokes</Title>\n        {Keybinds()}\n      </HelpContainer>\n    </Container>\n  )\n}\n\nexport default Help\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/home/index.tsx",
    "content": "import React, { useContext, useMemo } from \"react\"\nimport { Header } from \"reactotron-core-ui\"\nimport styled from \"styled-components\"\n\nimport StandaloneContext from \"../../contexts/Standalone\"\nimport {\n  getPlatformName,\n  getPlatformDetails,\n  getScreen,\n  getIcon,\n  getConnectionName,\n} from \"../../util/connectionHelpers\"\nimport { Connection } from \"../../contexts/Standalone/useStandalone\"\nimport Welcome from \"./welcome\"\nimport AndroidDeviceHelp from \"../help/components/AndroidDeviceHelp\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\nconst ContentContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  padding: 20px;\n  overflow-y: scroll;\n`\n\nconst ConnectionContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  padding: 10px 20px;\n  border-bottom: 1px solid ${(props) => props.theme.line};\n`\nconst IconContainer = styled.div`\n  color: ${(props) => props.theme.foregroundLight};\n`\nconst AppName = styled.div`\n  padding-left: 10px;\n  color: ${(props) => props.theme.tag};\n  width: 25%;\n`\nconst PlatformDetails = styled.div`\n  border-left: 1px solid ${(props) => props.theme.subtleLine};\n  color: ${(props) => props.theme.foregroundDark};\n  padding-left: 10px;\n  margin-left: 10px;\n`\nconst Screen = styled.div`\n  border-left: 1px solid ${(props) => props.theme.subtleLine};\n  color: ${(props) => props.theme.backgroundHighlight};\n  padding-left: 10px;\n  margin-left: 10px;\n`\n\nfunction ConnectionCell({ connection }: { connection: Connection }) {\n  const [ConnectionIcon, platformName, platformDetails, connectionName, screen] = useMemo(() => {\n    return [\n      getIcon(connection),\n      getPlatformName(connection),\n      getPlatformDetails(connection),\n      getConnectionName(connection),\n      getScreen(connection),\n    ]\n  }, [connection])\n\n  return (\n    <ConnectionContainer>\n      <IconContainer>\n        <ConnectionIcon size={32} />\n      </IconContainer>\n      <AppName>{connectionName}</AppName>\n      <PlatformDetails>\n        {platformName} {platformDetails}\n      </PlatformDetails>\n      <Screen>{screen}</Screen>\n    </ConnectionContainer>\n  )\n}\n\nfunction Connections() {\n  const { connections } = useContext(StandaloneContext)\n\n  return (\n    <Container>\n      <Header title=\"Connections\" isDraggable />\n      <ContentContainer>\n        {connections.length > 0 ? (\n          connections.map((connection) => (\n            <ConnectionCell key={connection.clientId} connection={connection} />\n          ))\n        ) : (\n          <Welcome />\n        )}\n        <AndroidDeviceHelp />\n      </ContentContainer>\n    </Container>\n  )\n}\n\nexport default Connections\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/home/welcome.tsx",
    "content": "import React from \"react\"\nimport { shell } from \"electron\"\nimport styled from \"styled-components\"\nimport { reactotronLogo } from \"../../images\"\nimport { EmptyState } from \"reactotron-core-ui\"\n\nconst WelcomeText = styled.div`\n  font-size: 1.25em;\n`\n\nconst Container = styled.div`\n  display: flex;\n  padding: 4px 8px;\n  margin: 20px 0px 50px;\n  border-radius: 4px;\n  cursor: pointer;\n  background-color: ${(props) => props.theme.backgroundLighter};\n  color: ${(props) => props.theme.foreground};\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n`\n\nfunction openDocs() {\n  shell.openExternal(\"https://docs.infinite.red/reactotron/\")\n}\n\nfunction Welcome() {\n  return (\n    <EmptyState image={reactotronLogo} title=\"Welcome to Reactotron!\">\n      <WelcomeText>Connect a device or simulator to get started.</WelcomeText>\n      <WelcomeText>Need to set up your app to use Reactotron?</WelcomeText>\n      <Container onClick={openDocs}>Check out the docs here!</Container>\n    </EmptyState>\n  )\n}\n\nexport default Welcome\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/Overlay.tsx",
    "content": "import React, { useContext } from \"react\"\nimport styled from \"styled-components\"\nimport fs from \"fs\"\nimport { nativeImage } from \"electron\"\nimport { Header, ReactNativeContext } from \"reactotron-core-ui\"\nimport { MdBook, MdCamera } from \"react-icons/md\"\n\nimport { OverlayAlignment } from \"./components/OverlayAlignment\"\nimport { OverlayButton } from \"./components/OverlayButton\"\nimport { Container, Row, Title, Text } from \"./components/Shared\"\nimport { OverlayLayoutType, Layout } from \"./components/OverlayLayoutType\"\nimport { OverlayScale } from \"./components/OverlayScale\"\nimport { OverlayResizeMode } from \"./components/OverlayResizeMode\"\nimport { OverlayOpacity } from \"./components/OverlayOpacity\"\nimport { OverlayMargins } from \"./components/OverlayMargins\"\n\nimport type { DragEvent } from \"react\"\nimport type { JustifyContent, AlignItems } from \"./components/OverlayAlignment\"\nimport type { ResizeMode } from \"./components/OverlayResizeMode\"\n\nconst isDevelopment = process.env.NODE_ENV !== \"production\"\n\nconst OverlayContainer = styled.div`\n  height: 100%;\n  overflow-y: auto;\n  overflow-x: hidden;\n  padding-left: 20px;\n  padding-right: 20px;\n  padding-bottom: 20px;\n`\n\nconst DropZone = styled.div`\n  display: flex;\n  flex: 1;\n  height: 200px;\n  width: 200px;\n  background-color: ${(props) => props.theme.subtleLine};\n  border-radius: 2px;\n  border: 1px solid ${(props) => props.theme.backgroundSubtleDark};\n  color: ${(props) => props.theme.foregroundLight};\n  justify-content: center;\n  align-items: center;\n`\n\nconst OverlayPreview = styled.img`\n  max-width: 100%;\n  max-height: 100%;\n`\n\nconst ReapplyContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  margin-top: 10px;\n`\n\nfunction Overlay() {\n  const { overlayParams, updateOverlayParams } = useContext(ReactNativeContext)\n  const {\n    uri,\n    justifyContent,\n    alignItems,\n    showDebug,\n    resizeMode,\n    opacity,\n    marginTop,\n    marginRight,\n    marginBottom,\n    marginLeft,\n  } = overlayParams\n\n  const [URI, setURI] = React.useState<string>()\n  const [originalWidth, setOriginalWidth] = React.useState<number>(0)\n  const [originalHeight, setOriginalHeight] = React.useState<number>(0)\n  const [layoutType, setLayoutType] = React.useState<Layout>(Layout.Image)\n  const [scale, setScale] = React.useState<number>(1)\n\n  function importFile(path) {\n    // need to load from a buffer because electron has a problem reading\n    // from '@2x.png' named files.  :|\n    fs.readFile(path, (err, data) => {\n      if (!err) {\n        const image = nativeImage.createFromBuffer(data)\n        const uri = image.toDataURL()\n        const { width, height } = image.getSize()\n        setURI(uri)\n        setOriginalWidth(width)\n        setOriginalHeight(height)\n        updateOverlayParams({\n          uri,\n          width,\n          height,\n          opacity: 0.5,\n          marginTop: 0,\n          marginRight: 0,\n          marginBottom: 0,\n          marginLeft: 0,\n          growToWindow: false,\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        })\n      }\n    })\n  }\n\n  function applyOverlay() {\n    setScale(1)\n    updateOverlayParams({\n      uri: URI,\n      width: originalWidth,\n      height: originalHeight,\n      opacity: 0.5,\n      marginTop: 0,\n      marginRight: 0,\n      marginBottom: 0,\n      marginLeft: 0,\n      growToWindow: false,\n      justifyContent: \"center\",\n      alignItems: \"center\",\n    })\n  }\n\n  function handleDrop(event: DragEvent<HTMLDivElement>) {\n    event.preventDefault()\n    event.stopPropagation()\n    if (event.dataTransfer.files.length !== 1) {\n      return\n    }\n    const file = event.dataTransfer.files[0]\n    importFile(file.path)\n  }\n\n  function removeImage(event) {\n    event.stopPropagation()\n    event.preventDefault()\n    setURI(undefined)\n    setOriginalWidth(0)\n    setOriginalHeight(0)\n    setScale(1)\n    setLayoutType(Layout.Image)\n    updateOverlayParams({\n      uri: null,\n      width: null,\n      height: null,\n      alignItems: \"center\",\n      justifyContent: \"center\",\n    })\n  }\n\n  function handlePreventDefault(event: DragEvent<HTMLDivElement>) {\n    event.preventDefault()\n  }\n\n  const handleLayoutChange = (newLayoutType: Layout) => {\n    const { resizeMode } = overlayParams\n    const growToWindow = newLayoutType === Layout.Screen\n    const newResizeMode = growToWindow ? \"stretch\" : resizeMode\n    setLayoutType(newLayoutType)\n    updateOverlayParams({\n      growToWindow,\n      resizeMode: newResizeMode,\n      width: growToWindow ? originalWidth : originalWidth * scale,\n      height: growToWindow ? originalHeight : originalHeight * scale,\n    })\n  }\n\n  const handleScaleChange = (newScale: number) => {\n    setScale(newScale)\n    if (originalWidth && originalHeight) {\n      updateOverlayParams({ width: originalWidth * newScale, height: originalHeight * newScale })\n    }\n  }\n\n  const handleResizeChange = (resizeMode: ResizeMode) => {\n    const { width, height } = overlayParams\n    const growToWindow = layoutType === Layout.Screen\n    if (width && height) {\n      updateOverlayParams({ resizeMode, growToWindow, width, height })\n    }\n  }\n\n  const handleAlignmentChanged = (newJustifyContent: JustifyContent, newAlignItems: AlignItems) => {\n    updateOverlayParams({ justifyContent: newJustifyContent, alignItems: newAlignItems })\n  }\n\n  const handleOpacityChange = (newOpacity: number) => {\n    const { uri } = overlayParams\n    if (newOpacity === opacity) {\n      return\n    }\n    if (uri) {\n      updateOverlayParams({ opacity: newOpacity })\n    }\n  }\n\n  const handleMarginChange = (updatedMargin) => {\n    updateOverlayParams(updatedMargin)\n  }\n\n  const handleShowDebugChange = (newShowDebug: boolean) => (event) => {\n    event.stopPropagation()\n    event.preventDefault()\n    updateOverlayParams({ showDebug: newShowDebug })\n  }\n\n  function renderDropZone() {\n    return (\n      <>\n        <DropZone\n          onDrop={handleDrop}\n          onDragOver={handlePreventDefault}\n          onDragLeave={handlePreventDefault}\n          onDragEnd={handlePreventDefault}\n        >\n          {uri ? <OverlayPreview src={uri} onClick={removeImage} /> : \"Drop Image Here\"}\n        </DropZone>\n        {uri ? (\n          <ReapplyContainer>\n            <OverlayButton onClick={() => applyOverlay()} title={\"Reapply Overlay\"} />\n          </ReapplyContainer>\n        ) : null}\n      </>\n    )\n  }\n  function renderDebugView() {\n    return (\n      <Row style={{ alignItems: \"center\" }}>\n        <Text>Debug View</Text>\n        <OverlayButton selected={showDebug} onClick={handleShowDebugChange(true)} title={\"On\"} />\n        <OverlayButton selected={!showDebug} onClick={handleShowDebugChange(false)} title={\"Off\"} />\n      </Row>\n    )\n  }\n\n  // Render functions\n  function renderLayoutType() {\n    if (!uri) return null\n\n    return <OverlayLayoutType layoutType={layoutType} onChange={handleLayoutChange} />\n  }\n\n  function renderScale() {\n    if (!uri || layoutType !== Layout.Image) return null\n\n    return <OverlayScale scale={scale} onChange={handleScaleChange} />\n  }\n\n  function renderResizeMode() {\n    if (!uri || layoutType !== Layout.Screen) return null\n\n    return <OverlayResizeMode resizeMode={resizeMode} onChange={handleResizeChange} />\n  }\n\n  function renderAlignment() {\n    if (!uri || layoutType !== Layout.Image) return null\n\n    return (\n      <OverlayAlignment\n        selectedJustifyContent={justifyContent}\n        selectedAlignItems={alignItems}\n        onChange={handleAlignmentChanged}\n      />\n    )\n  }\n\n  function renderOpacity() {\n    if (!uri) return null\n\n    return <OverlayOpacity opacity={opacity} onChange={handleOpacityChange} />\n  }\n\n  function renderMargins() {\n    if (!uri) return null\n\n    return (\n      <OverlayMargins\n        marginTop={marginTop}\n        marginRight={marginRight}\n        marginBottom={marginBottom}\n        marginLeft={marginLeft}\n        onChange={handleMarginChange}\n      />\n    )\n  }\n\n  return (\n    <Container>\n      <Header\n        isDraggable\n        tabs={[\n          {\n            text: \"Image Overlay\",\n            icon: MdCamera,\n            isActive: true,\n            // eslint-disable-next-line @typescript-eslint/no-empty-function\n            onClick: () => {},\n          },\n          {\n            text: \"Storybook\",\n            icon: MdBook,\n            isActive: false,\n            onClick: () => {\n              // TODO: Couldn't get react-router-dom to do it for me so I forced it.\n              window.location.hash = \"#/native/storybook\"\n            },\n          },\n        ]}\n      />\n      <OverlayContainer>\n        <Row style={{ justifyContent: \"space-between\" }}>\n          <Title>Image Overlay</Title>\n          {isDevelopment && renderDebugView()}\n        </Row>\n        {renderDropZone()}\n        {renderLayoutType()}\n        {renderScale()}\n        {renderResizeMode()}\n        {renderAlignment()}\n        {renderOpacity()}\n        {renderMargins()}\n      </OverlayContainer>\n    </Container>\n  )\n}\n\nexport default Overlay\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/Storybook.tsx",
    "content": "import React, { useContext } from \"react\"\nimport styled from \"styled-components\"\nimport { Header, ReactNativeContext } from \"reactotron-core-ui\"\nimport {\n  MdCamera,\n  MdBook,\n  MdRadioButtonChecked,\n  MdRadioButtonUnchecked,\n  MdWarning,\n} from \"react-icons/md\"\nimport { storybookActiveImg, storybookInactiveImg } from \"../../images\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\n\nconst StorybookContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n`\n\nconst TopSection = styled.div`\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n`\n\nconst StorybookLogo = styled.img`\n  width: 282px;\n  height: 76px;\n  padding-bottom: 20;\n`\n\nconst ToggleContainer = styled.div`\n  display: flex;\n  color: ${(props) => props.theme.foreground};\n`\nconst RadioButton = styled.div`\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  padding: 10px;\n`\n\nconst WarningContainer = styled.div`\n  display: flex;\n  color: ${(props) => props.theme.warning};\n  background-color: ${(props) => props.theme.backgroundDarker};\n  border-top: 1px solid ${(props) => props.theme.chromeLine};\n  align-items: center;\n  padding: 0 20px;\n`\nconst WarningDescription = styled.div`\n  margin-left: 20px;\n`\n\nfunction Storybook() {\n  const { isStorybookOn, turnOffStorybook, turnOnStorybook } = useContext(ReactNativeContext)\n\n  return (\n    <Container>\n      <Header\n        isDraggable\n        tabs={[\n          {\n            text: \"Image Overlay\",\n            icon: MdCamera,\n            isActive: false,\n\n            onClick: () => {\n              // TODO: Couldn't get react-router-dom to do it for me so I forced it.\n              window.location.hash = \"#/native/overlay\"\n            },\n          },\n          {\n            text: \"Storybook\",\n            icon: MdBook,\n            isActive: true,\n            // eslint-disable-next-line @typescript-eslint/no-empty-function\n            onClick: () => {},\n          },\n        ]}\n        // actions={[\n        //   {\n        //     tip: \"Search\",\n        //     icon: MdSearch,\n        //     onClick: () => {\n        //       toggleSearch()\n        //     },\n        //   },\n        //   {\n        //     tip: \"Filter\",\n        //     icon: MdFilterList,\n        //     onClick: () => {\n        //       openFilter()\n        //     },\n        //   },\n        //   {\n        //     tip: \"Reverse Order\",\n        //     icon: MdSwapVert,\n        //     onClick: () => {\n        //       toggleReverse()\n        //     },\n        //   },\n        //   {\n        //     tip: \"Clear\",\n        //     icon: MdDeleteSweep,\n        //     onClick: () => {\n        //       clearSelectedConnectionCommands()\n        //     },\n        //   },\n        // ]}\n      />\n      <StorybookContainer>\n        <TopSection>\n          <StorybookLogo src={isStorybookOn ? storybookActiveImg : storybookInactiveImg} />\n\n          <ToggleContainer>\n            <RadioButton onClick={() => turnOnStorybook()}>\n              {isStorybookOn ? (\n                <MdRadioButtonChecked size={32} />\n              ) : (\n                <MdRadioButtonUnchecked size={32} />\n              )}\n              <div>On</div>\n            </RadioButton>\n            <RadioButton onClick={() => turnOffStorybook()}>\n              {isStorybookOn ? (\n                <MdRadioButtonUnchecked size={32} />\n              ) : (\n                <MdRadioButtonChecked size={32} />\n              )}\n              <div>Off</div>\n            </RadioButton>\n          </ToggleContainer>\n        </TopSection>\n        <WarningContainer>\n          <MdWarning size={60} />\n          <WarningDescription>\n            This is preview feature. It requires a specific setup of Storybook within React Native.\n          </WarningDescription>\n        </WarningContainer>\n      </StorybookContainer>\n    </Container>\n  )\n}\n\nexport default Storybook\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayAlignment.tsx",
    "content": "import React from \"react\"\n\nimport { OverlayAlignmentButton } from \"./OverlayAlignmentButton\"\nimport { Container, Row, Title } from \"./Shared\"\n\nexport type JustifyContent =\n  | \"flex-start\"\n  | \"flex-end\"\n  | \"center\"\n  | \"space-between\"\n  | \"space-around\"\n  | \"space-evenly\"\nexport type AlignItems = \"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\"\n\ninterface OverlayAlignmentProps {\n  selectedJustifyContent?: JustifyContent\n  selectedAlignItems?: AlignItems\n  onChange: (justifyContent: JustifyContent, alignItems: AlignItems) => void\n}\n\nexport function OverlayAlignment({\n  selectedJustifyContent,\n  selectedAlignItems,\n  onChange,\n}: OverlayAlignmentProps) {\n  return (\n    // a 3x3 grid of 32px square buttons using styled-components\n    <div>\n      <Title>Alignment</Title>\n      <Container>\n        <Row>\n          <OverlayAlignmentButton\n            justifyContent=\"flex-start\"\n            alignItems=\"flex-start\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n          <OverlayAlignmentButton\n            justifyContent=\"flex-start\"\n            alignItems=\"center\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n          <OverlayAlignmentButton\n            justifyContent=\"flex-start\"\n            alignItems=\"flex-end\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n        </Row>\n        <Row>\n          <OverlayAlignmentButton\n            justifyContent=\"center\"\n            alignItems=\"flex-start\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n          <OverlayAlignmentButton\n            justifyContent=\"center\"\n            alignItems=\"center\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n          <OverlayAlignmentButton\n            justifyContent=\"center\"\n            alignItems=\"flex-end\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n        </Row>\n        <Row>\n          <OverlayAlignmentButton\n            justifyContent=\"flex-end\"\n            alignItems=\"flex-start\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n          <OverlayAlignmentButton\n            justifyContent=\"flex-end\"\n            alignItems=\"center\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n          <OverlayAlignmentButton\n            justifyContent=\"flex-end\"\n            alignItems=\"flex-end\"\n            selectedJustifyContent={selectedJustifyContent}\n            selectedAlignItems={selectedAlignItems}\n            onClick={onChange}\n          />\n        </Row>\n      </Container>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayAlignmentButton.tsx",
    "content": "import React, { type MouseEvent } from \"react\"\nimport styled from \"styled-components\"\n\ninterface OverlayAlignmentButtonProps {\n  justifyContent: string\n  alignItems: string\n  selectedJustifyContent: string\n  selectedAlignItems: string\n  onClick: (justifyContent: string, alignItems: string) => void\n}\n\nconst Button = styled.button.attrs<{ selected: boolean }>((props) => ({\n  selected: props.selected ? props.selected : false,\n}))`\n  height: 32px;\n  width: 32px;\n  background-color: ${(props) => (props.selected ? props.theme.bold : props.theme.subtleLine)};\n  border-radius: 2px;\n  border: 1px solid ${(props) => (props.selected ? props.theme.bold : props.theme.subtleLine)};\n  margin: 3px;\n`\n\nexport function OverlayAlignmentButton(props: OverlayAlignmentButtonProps) {\n  const { justifyContent, alignItems, selectedJustifyContent, selectedAlignItems } = props\n  const isSelected = justifyContent === selectedJustifyContent && alignItems === selectedAlignItems\n\n  const handleAlignmentChange =\n    (justifyContent: string, alignItems: string) => (event: MouseEvent<HTMLButtonElement>) => {\n      event.stopPropagation()\n      event.preventDefault()\n      props.onClick(justifyContent, alignItems)\n    }\n\n  return (\n    <Button selected={isSelected} onClick={handleAlignmentChange(justifyContent, alignItems)} />\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayButton.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\n\nconst Button = styled.button.attrs<{ selected: boolean }>((props) => ({\n  selected: props.selected ? props.selected : false,\n}))`\n  height: 30px;\n  padding: \"0 15px\";\n  font-size: 13px;\n  margin-right: 4px;\n  background-color: ${(props) => props.theme.subtleLine};\n  border-radius: 2px;\n  border: 1px solid ${(props) => props.theme.backgroundSubtleDark};\n  cursor: pointer;\n  color: ${(props) => (props.selected ? props.theme.bold : props.theme.foregroundDark)};\n`\n\ninterface OverlayButtonProps {\n  title: string\n  selected?: boolean\n  onClick: React.MouseEventHandler<HTMLButtonElement>\n}\n\nexport function OverlayButton(props: OverlayButtonProps) {\n  const { selected, title, onClick } = props\n  return (\n    <Button selected={selected} onClick={onClick}>\n      {title}\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayLayoutType.tsx",
    "content": "import React from \"react\"\n\nimport { Title, Row } from \"./Shared\"\nimport { OverlayButton } from \"./OverlayButton\"\n\nimport type { MouseEvent } from \"react\"\n\nexport enum Layout {\n  Image = \"Image\",\n  Screen = \"Screen\",\n}\n\ninterface OverlayLayoutTypeProps {\n  layoutType?: Layout\n  onChange: (layoutType: Layout) => void\n}\n\nexport function OverlayLayoutType(props: OverlayLayoutTypeProps) {\n  const { layoutType, onChange } = props\n\n  const handleLayoutChange = (layoutType: Layout) => (event: MouseEvent<HTMLButtonElement>) => {\n    event.stopPropagation()\n    event.preventDefault()\n    onChange(layoutType)\n  }\n\n  return (\n    <div>\n      <Title>Layout</Title>\n      <div>\n        <Row>\n          <OverlayButton\n            onClick={handleLayoutChange(Layout.Image)}\n            selected={layoutType === Layout.Image}\n            title={\"Image\"}\n          />\n          <OverlayButton\n            onClick={handleLayoutChange(Layout.Screen)}\n            selected={layoutType === Layout.Screen}\n            title={\"Screen\"}\n          />\n        </Row>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayMargins.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\n\nimport { Row, Title, Text } from \"./Shared\"\n\nimport type { ChangeEvent } from \"react\"\n\nconst Input = styled.input`\n  margin-right: 4px;\n  width: 45px;\n  border: 0;\n  padding: 8px 5px;\n  font-size: 1.1rem;\n  background-color: ${(props) => props.theme.backgroundLight};\n  color: ${(props) => props.theme.backgroundColor};\n`\n\ntype OverlayMargin = \"marginTop\" | \"marginLeft\" | \"marginBottom\" | \"marginRight\"\ntype UpdatedMargin = {\n  [key in OverlayMargin]?: number\n} & {\n  [key in OverlayMargin]: number\n}\n\ninterface OverlayMarginsProps {\n  marginTop?: number\n  marginLeft?: number\n  marginBottom?: number\n  marginRight?: number\n  onChange: (margin: UpdatedMargin) => void\n}\n\nexport function OverlayMargins(props: OverlayMarginsProps) {\n  const { marginTop, marginLeft, marginBottom, marginRight, onChange } = props\n\n  const handleMarginChange =\n    (whichMargin: OverlayMargin) => (event: ChangeEvent<HTMLInputElement>) => {\n      event.stopPropagation()\n      event.preventDefault()\n      const newValue = Number(event.target.value || 0)\n      const value = isNaN(newValue) ? 0 : newValue\n      onChange({ [whichMargin]: value } as UpdatedMargin)\n    }\n\n  return (\n    <div>\n      <Title>Margins</Title>\n      <div>\n        <Row>\n          <Text>Top</Text>\n          <Input type=\"number\" onChange={handleMarginChange(\"marginTop\")} value={marginTop} />\n          <Text>Right</Text>\n          <Input type=\"number\" onChange={handleMarginChange(\"marginRight\")} value={marginRight} />\n          <Text>Bottom</Text>\n          <Input type=\"number\" onChange={handleMarginChange(\"marginBottom\")} value={marginBottom} />\n          <Text>Left</Text>\n          <Input type=\"number\" onChange={handleMarginChange(\"marginLeft\")} value={marginLeft} />\n        </Row>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayOpacity.tsx",
    "content": "import React from \"react\"\n\nimport { Title, Row } from \"./Shared\"\nimport { OverlayButton } from \"./OverlayButton\"\n\nimport type { MouseEvent } from \"react\"\n\ninterface OverlayOpacityProps {\n  opacity?: number\n  onChange: (opacity: number) => void\n}\n\nexport function OverlayOpacity(props: OverlayOpacityProps) {\n  const { opacity, onChange } = props\n\n  const handleOpacityChange = (opacity: number) => (event: MouseEvent<HTMLButtonElement>) => {\n    event.stopPropagation()\n    event.preventDefault()\n    onChange(opacity)\n  }\n\n  return (\n    <div>\n      <Title>Opacity</Title>\n      <div>\n        <Row>\n          <OverlayButton onClick={handleOpacityChange(0)} selected={opacity === 0} title={\"0\"} />\n          <OverlayButton\n            onClick={handleOpacityChange(0.1)}\n            selected={opacity === 0.1}\n            title={\"0.1\"}\n          />\n          <OverlayButton\n            onClick={handleOpacityChange(0.25)}\n            selected={opacity === 0.25}\n            title={\"0.25\"}\n          />\n          <OverlayButton\n            onClick={handleOpacityChange(0.5)}\n            selected={opacity === 0.5}\n            title={\"0.5\"}\n          />\n          <OverlayButton\n            onClick={handleOpacityChange(0.75)}\n            selected={opacity === 0.75}\n            title={\"0.75\"}\n          />\n          <OverlayButton\n            onClick={handleOpacityChange(0.9)}\n            selected={opacity === 0.9}\n            title={\"0.9\"}\n          />\n          <OverlayButton onClick={handleOpacityChange(1)} selected={opacity === 1} title={\"1\"} />\n        </Row>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayResizeMode.tsx",
    "content": "import React from \"react\"\n\nimport { Title, Row } from \"./Shared\"\nimport { OverlayButton } from \"./OverlayButton\"\n\nimport type { MouseEvent } from \"react\"\n\nexport type ResizeMode = \"cover\" | \"stretch\" | \"contain\"\n\ninterface OverlayResizeModeProps {\n  resizeMode?: ResizeMode\n  onChange: (resizeMode: ResizeMode) => void\n}\n\nexport function OverlayResizeMode(props: OverlayResizeModeProps) {\n  const { resizeMode, onChange } = props\n\n  const handleResizeChange = (resizeMode: ResizeMode) => (event: MouseEvent<HTMLButtonElement>) => {\n    event.stopPropagation()\n    event.preventDefault()\n    onChange(resizeMode)\n  }\n\n  return (\n    <div>\n      <Title>Resize Mode</Title>\n      <div>\n        <Row>\n          <OverlayButton\n            onClick={handleResizeChange(\"stretch\")}\n            selected={resizeMode === \"stretch\"}\n            title={\"Stretch\"}\n          />\n          <OverlayButton\n            onClick={handleResizeChange(\"cover\")}\n            selected={resizeMode === \"cover\"}\n            title={\"Cover\"}\n          />\n          <OverlayButton\n            onClick={handleResizeChange(\"contain\")}\n            selected={resizeMode === \"contain\"}\n            title={\"Contain\"}\n          />\n        </Row>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/OverlayScale.tsx",
    "content": "import React from \"react\"\n\nimport { Title, Row } from \"./Shared\"\nimport { OverlayButton } from \"./OverlayButton\"\n\nimport type { MouseEvent } from \"react\"\n\ninterface OverlayScaleProps {\n  scale?: number\n  onChange: (scale: number) => void\n}\n\nexport function OverlayScale(props: OverlayScaleProps) {\n  const { scale, onChange } = props\n\n  const handleScaleChange = (scale: number) => (event: MouseEvent<HTMLButtonElement>) => {\n    event.stopPropagation()\n    event.preventDefault()\n    onChange(scale)\n  }\n\n  return (\n    <div>\n      <Title>Scale</Title>\n      <div>\n        <Row>\n          <OverlayButton\n            onClick={handleScaleChange(0.33)}\n            selected={scale === 0.33}\n            title={\"1/3\"}\n          />\n          <OverlayButton onClick={handleScaleChange(0.5)} selected={scale === 0.5} title={\"1/2\"} />\n          <OverlayButton onClick={handleScaleChange(1)} selected={scale === 1} title={\"1\"} />\n          <OverlayButton onClick={handleScaleChange(2)} selected={scale === 2} title={\"2\"} />\n          <OverlayButton onClick={handleScaleChange(3)} selected={scale === 3} title={\"3\"} />\n        </Row>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/reactNative/components/Shared.tsx",
    "content": "import styled from \"styled-components\"\n\nexport const Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\n\nexport const Row = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n`\n\nexport const Title = styled.div`\n  color: ${(props) => props.theme.tag};\n  margin-bottom: 10px;\n  margin-top: 20px;\n`\n\nexport const Text = styled.div`\n  margin-right: 4px;\n  color: ${(props) => props.theme.foregroundDark};\n`\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/state/Snapshots.tsx",
    "content": "import React, { useContext, useState } from \"react\"\nimport {\n  ContentView,\n  SnapshotRenameModal,\n  StateContext,\n  Header,\n  EmptyState,\n  Tooltip,\n} from \"reactotron-core-ui\"\nimport type { Snapshot } from \"reactotron-core-ui\"\nimport { clipboard } from \"electron\"\nimport styled from \"styled-components\"\nimport {\n  MdCreate,\n  MdDelete,\n  MdFileUpload,\n  MdNotificationsNone,\n  MdImportExport,\n  MdCallReceived,\n  MdFileDownload,\n} from \"react-icons/md\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\n\nconst SnapshotsContainer = styled.div`\n  height: 100%;\n  overflow-y: auto;\n  overflow-x: hidden;\n`\n\nconst SnapshotContainer = styled.div`\n  border-bottom: 1px solid ${(props) => props.theme.line};\n`\nconst SnapshotDetailRow = styled.div`\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 15px 20px;\n  cursor: pointer;\n`\nconst SnapshotName = styled.div`\n  flex: 1;\n  color: ${(props) => props.theme.tag};\n  text-align: left;\n`\nconst SnapshotAction = styled.div`\n  color: ${(props) => props.theme.foreground};\n  padding-left: 10px;\n`\nconst SnapshotPreview = styled.div`\n  animation: fade-up 0.25s;\n  will-change: transform opacity;\n  padding: 0 40px 30px 40px;\n`\n\nfunction SnapshotItem({\n  snapshot,\n  restoreSnapshot,\n  removeSnapshot,\n  openSnapshotRenameModal,\n}: {\n  snapshot: Snapshot\n  restoreSnapshot: (snapshot: Snapshot) => void\n  removeSnapshot: (snapshot: Snapshot) => void\n  openSnapshotRenameModal: (snapshot: Snapshot) => void\n}) {\n  const [isOpen, setIsOpen] = useState(false)\n\n  return (\n    <SnapshotContainer>\n      <SnapshotDetailRow\n        onClick={() => {\n          setIsOpen(!isOpen)\n        }}\n      >\n        <SnapshotName>{snapshot.name}</SnapshotName>\n        <SnapshotAction\n          data-tip=\"Copy to clipboard\"\n          data-for=\"copy-to-clipboard\"\n          onClick={(e) => {\n            e.stopPropagation()\n            clipboard.writeText(JSON.stringify(snapshot))\n          }}\n        >\n          <MdCallReceived size={24} />\n          <Tooltip id=\"copy-to-clipboard\" />\n        </SnapshotAction>\n        <SnapshotAction\n          data-tip=\"Restore Snapshot\"\n          data-for=\"restore-snapshot\"\n          onClick={(e) => {\n            e.stopPropagation()\n            restoreSnapshot(snapshot)\n          }}\n        >\n          <MdFileUpload size={24} />\n          <Tooltip id=\"restore-snapshot\" />\n        </SnapshotAction>\n        <SnapshotAction\n          data-tip=\"Rename Snapshot\"\n          data-for=\"rename-snapshot\"\n          onClick={(e) => {\n            e.stopPropagation()\n            openSnapshotRenameModal(snapshot)\n          }}\n        >\n          <MdCreate size={24} />\n          <Tooltip id=\"rename-snapshot\" />\n        </SnapshotAction>\n        <SnapshotAction\n          data-tip=\"Delete Snapshot\"\n          data-for=\"delete-snapshot\"\n          onClick={(e) => {\n            e.stopPropagation()\n            removeSnapshot(snapshot)\n          }}\n        >\n          <MdDelete size={24} />\n          <Tooltip id=\"delete-snapshot\" />\n        </SnapshotAction>\n      </SnapshotDetailRow>\n      {isOpen && (\n        <SnapshotPreview>\n          <ContentView value={snapshot.state} />\n        </SnapshotPreview>\n      )}\n    </SnapshotContainer>\n  )\n}\n\nfunction Snapshots() {\n  const {\n    snapshots,\n    createSnapshot,\n    restoreSnapshot,\n    removeSnapshot,\n    openSnapshotRenameModal,\n    isSnapshotRenameModalOpen,\n    closeSnapshotRenameModal,\n    renameingSnapshot,\n    renameSnapshot,\n  } = useContext(StateContext)\n\n  return (\n    <Container>\n      <Header\n        isDraggable\n        tabs={[\n          {\n            text: \"Subscriptions\",\n            icon: MdNotificationsNone,\n            isActive: false,\n            onClick: () => {\n              // TODO: Couldn't get react-router-dom to do it for me so I forced it.\n              window.location.hash = \"#/state/subscriptions\"\n            },\n          },\n          {\n            text: \"Snapshots\",\n            icon: MdImportExport,\n            isActive: true,\n            // eslint-disable-next-line @typescript-eslint/no-empty-function\n            onClick: () => {},\n          },\n        ]}\n        actions={[\n          {\n            tip: \"Copy all snapshots to clipboard\",\n            icon: MdCallReceived,\n            onClick: () => {\n              clipboard.writeText(JSON.stringify(snapshots))\n            },\n          },\n          {\n            tip: \"Add Snapshot\",\n            icon: MdFileDownload,\n            onClick: () => {\n              createSnapshot()\n            },\n          },\n        ]}\n      />\n      <SnapshotsContainer>\n        {snapshots.length === 0 ? (\n          <EmptyState icon={MdImportExport} title=\"No Snapshots\">\n            To take a snapshot of your current redux or mobx-state-tree store, press the Download\n            button in the top right corner of this window.\n          </EmptyState>\n        ) : (\n          snapshots.map((snapshot) => (\n            <SnapshotItem\n              key={snapshot.id}\n              snapshot={snapshot}\n              restoreSnapshot={restoreSnapshot}\n              removeSnapshot={removeSnapshot}\n              openSnapshotRenameModal={openSnapshotRenameModal}\n            />\n          ))\n        )}\n      </SnapshotsContainer>\n      <SnapshotRenameModal\n        snapshot={renameingSnapshot}\n        isOpen={isSnapshotRenameModalOpen}\n        onClose={closeSnapshotRenameModal}\n        onRenameSnapshot={renameSnapshot}\n      />\n    </Container>\n  )\n}\n\nexport default Snapshots\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/state/Subscriptions.tsx",
    "content": "import React, { useContext } from \"react\"\nimport {\n  ReactotronContext,\n  ContentView,\n  StateContext,\n  Header,\n  EmptyState,\n} from \"reactotron-core-ui\"\nimport { CommandType } from \"reactotron-core-contract\"\nimport { MdDelete, MdAdd, MdDeleteSweep, MdNotificationsNone, MdImportExport } from \"react-icons/md\"\nimport styled from \"styled-components\"\nimport { getApplicationKeyMap } from \"react-hotkeys\"\n\n// Move this out of this page. We are just hacking around this for now\nimport { KeybindKeys, getPlatformSequence } from \"../help/components/Keybind\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\n\nconst SubscriptionsContainer = styled.div`\n  height: 100%;\n  overflow-y: auto;\n  overflow-x: hidden;\n`\n\nconst SubscriptionContainer = styled.div`\n  display: flex;\n  padding: 15px 20px;\n  justify-content: space-between;\n  border-bottom: 1px solid ${(props) => props.theme.line};\n`\nconst SubscriptionPath = styled.div`\n  flex: 0.3;\n  word-break: break-all;\n  cursor: text;\n  user-select: text;\n  color: ${(props) => props.theme.tag};\n`\nconst SubscriptionValue = styled.div`\n  flex: 0.7;\n  word-break: break-all;\n  user-select: text;\n`\nconst SubscriptionRemove = styled.div`\n  cursor: pointer;\n  padding-left: 10px;\n  color: ${(props) => props.theme.foreground};\n`\n\nfunction getLatestChanges(commands: any[]) {\n  const changeCommands = commands.filter((c) => c.type === CommandType.StateValuesChange)\n  const latestChangeCommands = changeCommands.length > 0 ? changeCommands[0] : { payload: {} }\n  return latestChangeCommands.payload.changes || []\n}\n\nfunction Subscriptions() {\n  const { commands, openSubscriptionModal } = useContext(ReactotronContext)\n  const { removeSubscription, clearSubscriptions } = useContext(StateContext)\n\n  // Get setup to show the right keybind!\n  const subscriptionModalKeybind = getApplicationKeyMap().OpenSubscriptionModal\n  const subscriptionModalSequence = subscriptionModalKeybind\n    ? getPlatformSequence(subscriptionModalKeybind)\n    : null\n\n  const subscriptionValues = getLatestChanges(commands)\n\n  return (\n    <Container>\n      <Header\n        isDraggable\n        tabs={[\n          {\n            text: \"Subscriptions\",\n            icon: MdNotificationsNone,\n            isActive: true,\n            // eslint-disable-next-line @typescript-eslint/no-empty-function\n            onClick: () => {},\n          },\n          {\n            text: \"Snapshots\",\n            icon: MdImportExport,\n            isActive: false,\n            onClick: () => {\n              // TODO: Couldn't get react-router-dom to do it for me so I forced it.\n              window.location.hash = \"#/state/snapshots\"\n            },\n          },\n        ]}\n        actions={[\n          {\n            tip: \"Add\",\n            icon: MdAdd,\n            onClick: () => {\n              openSubscriptionModal()\n            },\n          },\n          {\n            tip: \"Clear\",\n            icon: MdDeleteSweep,\n            onClick: () => {\n              clearSubscriptions()\n            },\n          },\n        ]}\n      />\n      <SubscriptionsContainer>\n        {subscriptionValues.length === 0 ? (\n          <EmptyState icon={MdNotificationsNone} title=\"No Subscriptions\">\n            You can subscribe to state changes in your redux or mobx-state-tree store by pressing{\" \"}\n            {subscriptionModalSequence && (\n              <KeybindKeys\n                keybind={subscriptionModalKeybind}\n                sequence={subscriptionModalSequence}\n                addWidth={false}\n              />\n            )}\n          </EmptyState>\n        ) : (\n          subscriptionValues.map((subscription, index) => {\n            const value =\n              typeof subscription.value === \"object\"\n                ? { value: subscription.value }\n                : subscription.value\n\n            return (\n              <SubscriptionContainer key={`subscription-${subscription.path}-${index}`}>\n                <SubscriptionPath>{subscription.path}</SubscriptionPath>\n                <SubscriptionValue>\n                  <ContentView value={value} />\n                </SubscriptionValue>\n                <SubscriptionRemove>\n                  <MdDelete\n                    size={24}\n                    onClick={() => {\n                      removeSubscription(subscription.path)\n                    }}\n                  />\n                </SubscriptionRemove>\n              </SubscriptionContainer>\n            )\n          })\n        )}\n      </SubscriptionsContainer>\n    </Container>\n  )\n}\n\nexport default Subscriptions\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/pages/timeline/index.tsx",
    "content": "import React, { useCallback, useContext, useMemo } from \"react\"\nimport { clipboard, shell } from \"electron\"\nimport fs from \"fs\"\nimport os from \"os\"\nimport path from \"path\"\nimport debounce from \"lodash.debounce\"\nimport {\n  Header,\n  filterCommands,\n  TimelineFilterModal,\n  timelineCommandResolver,\n  EmptyState,\n  ReactotronContext,\n  TimelineContext,\n  RandomJoke,\n} from \"reactotron-core-ui\"\nimport {\n  MdSearch,\n  MdDeleteSweep,\n  MdFilterList,\n  MdSwapVert,\n  MdReorder,\n  MdDownload,\n} from \"react-icons/md\"\nimport { FaTimes } from \"react-icons/fa\"\nimport styled from \"styled-components\"\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n`\nconst TimelineContainer = styled.div`\n  height: 100%;\n  overflow-y: auto;\n  overflow-x: hidden;\n`\nconst SearchContainer = styled.div`\n  display: flex;\n  align-items: center;\n  padding-bottom: 10px;\n  padding-top: 4px;\n  padding-right: 10px;\n`\nconst SearchLabel = styled.p`\n  padding: 0 10px;\n  font-size: 14px;\n  color: ${(props) => props.theme.foregroundDark};\n`\nconst SearchInput = styled.input`\n  border-radius: 4px;\n  padding: 10px;\n  flex: 1;\n  background-color: ${(props) => props.theme.backgroundSubtleDark};\n  border: none;\n  color: ${(props) => props.theme.foregroundDark};\n  font-size: 14px;\n`\nconst HelpMessage = styled.div`\n  margin: 0 40px;\n`\nconst QuickStartButtonContainer = styled.div`\n  display: flex;\n  padding: 4px 8px;\n  margin: 30px 20px;\n  border-radius: 4px;\n  cursor: pointer;\n  background-color: ${(props) => props.theme.backgroundLighter};\n  color: ${(props) => props.theme.foreground};\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n`\nconst Divider = styled.div`\n  height: 1px;\n  background-color: ${(props) => props.theme.foregroundDark};\n  margin: 40px 10px;\n`\n\nexport const ButtonContainer = styled.div`\n  padding: 10px;\n  cursor: pointer;\n`\n\nfunction Timeline() {\n  const { sendCommand, clearCommands, commands, openDispatchModal } = useContext(ReactotronContext)\n  const {\n    isSearchOpen,\n    toggleSearch,\n    closeSearch,\n    setSearch,\n    search,\n    isReversed,\n    toggleReverse,\n    openFilter,\n    closeFilter,\n    isFilterOpen,\n    hiddenCommands,\n    setHiddenCommands,\n  } = useContext(TimelineContext)\n\n  let filteredCommands\n  try {\n    filteredCommands = filterCommands(commands, search, hiddenCommands)\n  } catch (error) {\n    console.error(error)\n    filteredCommands = commands\n  }\n\n  if (isReversed) {\n    filteredCommands = filteredCommands.reverse()\n  }\n\n  const dispatchAction = (action: any) => {\n    sendCommand(\"state.action.dispatch\", { action })\n  }\n\n  function openDocs() {\n    shell.openExternal(\"https://docs.infinite.red/reactotron/quick-start/react-native/\")\n  }\n\n  function downloadLog() {\n    const homeDir = os.homedir()\n    const downloadDir = path.join(homeDir, \"Downloads\")\n    fs.writeFileSync(\n      path.resolve(downloadDir, `timeline-log-${Date.now()}.json`),\n      JSON.stringify(commands || []),\n      \"utf8\"\n    )\n    console.log(`Exported timeline log to ${downloadDir}`)\n  }\n\n  const { searchString, handleInputChange } = useDebouncedSearchInput(search, setSearch, 300)\n\n  return (\n    <Container>\n      <Header\n        title=\"Timeline\"\n        isDraggable\n        actions={[\n          {\n            tip: \"Export Log\",\n            icon: MdDownload,\n            onClick: () => {\n              downloadLog()\n            },\n          },\n          {\n            tip: \"Search\",\n            icon: MdSearch,\n            onClick: () => {\n              toggleSearch()\n            },\n          },\n          {\n            tip: \"Filter\",\n            icon: MdFilterList,\n            onClick: () => {\n              openFilter()\n            },\n          },\n          {\n            tip: \"Reverse Order\",\n            icon: MdSwapVert,\n            onClick: () => {\n              toggleReverse()\n            },\n          },\n          {\n            tip: \"Clear\",\n            icon: MdDeleteSweep,\n            onClick: () => {\n              clearCommands()\n            },\n          },\n        ]}\n      >\n        {isSearchOpen && (\n          <SearchContainer>\n            <SearchLabel>Search</SearchLabel>\n            <SearchInput autoFocus value={searchString} onChange={handleInputChange} />\n            <ButtonContainer\n              onClick={() => {\n                if (search === \"\") {\n                  closeSearch()\n                } else {\n                  setSearch(\"\")\n                }\n              }}\n            >\n              <FaTimes size={24} />\n            </ButtonContainer>\n          </SearchContainer>\n        )}\n      </Header>\n      <TimelineContainer>\n        {filteredCommands.length === 0 ? (\n          <EmptyState icon={MdReorder} title=\"No Activity\">\n            <HelpMessage>\n              Once your app connects and starts sending events, they will appear here.\n            </HelpMessage>\n            <QuickStartButtonContainer onClick={openDocs}>\n              Check out the quick start guide here!\n            </QuickStartButtonContainer>\n            <Divider />\n            <RandomJoke />\n          </EmptyState>\n        ) : (\n          filteredCommands.map((command) => {\n            const CommandComponent = timelineCommandResolver(command.type)\n\n            if (CommandComponent) {\n              return (\n                <CommandComponent\n                  key={command.messageId}\n                  command={command}\n                  copyToClipboard={clipboard.writeText}\n                  readFile={(path) => {\n                    return new Promise((resolve, reject) => {\n                      fs.readFile(path, \"utf-8\", (err, data) => {\n                        if (err || !data) reject(new Error(\"Something failed\"))\n                        else resolve(data)\n                      })\n                    })\n                  }}\n                  sendCommand={sendCommand}\n                  dispatchAction={dispatchAction}\n                  openDispatchDialog={openDispatchModal}\n                />\n              )\n            }\n\n            return null\n          })\n        )}\n      </TimelineContainer>\n      <TimelineFilterModal\n        isOpen={isFilterOpen}\n        onClose={() => {\n          closeFilter()\n        }}\n        hiddenCommands={hiddenCommands}\n        setHiddenCommands={setHiddenCommands}\n      />\n    </Container>\n  )\n}\n\nexport default Timeline\n\nconst useDebouncedSearchInput = (\n  initialValue: string,\n  setSearch: (search: string) => void,\n  delay: number = 300\n) => {\n  const [searchString, setSearchString] = React.useState<string>(initialValue)\n  const debouncedOnChange = useMemo(() => debounce(setSearch, delay), [delay, setSearch])\n\n  const handleInputChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      const { value } = e.target\n      setSearchString(value)\n      debouncedOnChange(value)\n    },\n    [debouncedOnChange]\n  )\n\n  return {\n    searchString,\n    handleInputChange,\n  }\n}\n"
  },
  {
    "path": "apps/reactotron-app/src/renderer/util/connectionHelpers.ts",
    "content": "import {\n  FaQuestion as IconDefault,\n  FaApple as IconPhoneApple,\n  FaAndroid as IconPhoneAndroid,\n  FaFirefox as IconBrowserFirefox,\n  FaSafari as IconBrowserSafari,\n  FaEdge as IconBrowserEdge,\n  FaChrome as IconBrowserChrome,\n} from \"react-icons/fa\"\n\nimport { Connection } from \"../contexts/Standalone/useStandalone\"\n\nconst RX_FIREFOX = /Firefox\\//\nconst RX_SAFARI = /Safari\\//\nconst RX_EDGE = /Edge\\//\nconst RX_CHROME = /Chrome\\//\n\nexport function getBrowserApp(connection: Connection) {\n  const ua = (connection && connection.userAgent) || \"\"\n  if (RX_FIREFOX.test(ua)) return \"Firefox\"\n  if (RX_CHROME.test(ua)) return \"Chrome\" // has to go before safari\n  if (RX_SAFARI.test(ua)) return \"Safari\"\n  if (RX_EDGE.test(ua)) return \"Edge\"\n\n  return \"Edge\"\n}\n\nexport function getPlatformName(connection: Connection) {\n  switch (connection.platform) {\n    case \"ios\":\n      return \"iOS\"\n    case \"android\":\n      return \"Android\"\n    case \"browser\":\n      return getBrowserApp(connection) || \"Browser\"\n    default:\n      return connection.platform || \"Unknown platform\"\n  }\n}\n\nexport function getPlatformDetails(connection: Connection) {\n  const { platformVersion, osRelease, platform } = connection\n\n  switch (platform) {\n    case \"ios\": {\n      return `${platformVersion}`\n    }\n\n    case \"android\": {\n      if (osRelease) {\n        return `${osRelease || \"\"} (sdk ${platformVersion})`\n      } else {\n        return `sdk ${platformVersion}`\n      }\n    }\n\n    case \"browser\": {\n      if (platformVersion === \"MacIntel\") {\n        return \"macOS\"\n      } else {\n        return `${platformVersion}`\n      }\n    }\n\n    default:\n      return \"\"\n  }\n}\n\nexport function getConnectionName(connection: Connection) {\n  if (!connection.name) {\n    return \"Name unknown\"\n  }\n  return connection.name\n}\n\nexport function getScreen(connection) {\n  const { windowWidth, windowHeight, screenScale } = connection\n\n  if (windowWidth && windowHeight && screenScale) {\n    return `${windowWidth} x ${windowHeight} @ ${screenScale}x`\n  }\n\n  return \"\"\n}\n\nconst PHONE_ICONS = {\n  ios: IconPhoneApple,\n  android: IconPhoneAndroid,\n}\nconst BROWSER_ICONS = {\n  Firefox: IconBrowserFirefox,\n  Chrome: IconBrowserChrome,\n  Safari: IconBrowserSafari,\n  Edge: IconBrowserEdge,\n}\n\nexport function getIcon(connection: Connection) {\n  if (connection.platform === \"browser\") {\n    return BROWSER_ICONS[getBrowserApp(connection)] || IconDefault\n  } else {\n    return PHONE_ICONS[connection.platform] || IconDefault\n  }\n}\n"
  },
  {
    "path": "apps/reactotron-app/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"jsx\": \"react\",\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"lib\": [\"es2015\", \"dom\"],\n    \"types\": [\"jest\"],\n    \"skipLibCheck\": true,\n    \"baseUrl\": \".\",\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "apps/reactotron-app/webpack.config.js",
    "content": "// webpack 4 has an issue on Node 17+ where openssl throws\n// an error when trying to call crypto.createHash('md5').\n// In order to fix this, we are providing a custom hash function.\n// See: https://stackoverflow.com/a/69476335\n\n// This config along with patch-package removes all the references to md5 in our node_modules webpack.\n// This solution is brittle because it's dependent on the webpack version, but will be fixed after upgrading to webpack 5.\n\n// If this breaks again, you search webpack in node_modules for `createHash\\(('|\")md4('|\")\\)`,\n// replace it with `createHash(\"sha256\")`, then run patch-package again.\n\nmodule.exports = function (config) {\n  return {\n    ...config,\n    output: {\n      ...config.output,\n      hashFunction: \"sha256\",\n    },\n  }\n}\n"
  },
  {
    "path": "docs/_category_.json",
    "content": "{\n  \"label\": \"Reactotron\",\n  \"link\": null,\n  \"customProps\": {\n    \"description\": \"A powerful debugger for React and React Native applications\",\n    \"projectName\": \"reactotron\",\n    \"repoUrl\": \"https://github.com/infinitered/reactotron\",\n    \"sidebar\": {\n      \"type\": \"autogenerated\",\n      \"dirName\": \"reactotron\"\n    }\n  }\n}\n"
  },
  {
    "path": "docs/contributing/_category_.json",
    "content": "{\n  \"label\": \"Contributing\",\n  \"position\": 1000,\n  \"link\": {\n    \"type\": \"doc\",\n    \"id\": \"index\"\n  }\n}\n"
  },
  {
    "path": "docs/contributing/architecture.md",
    "content": "# Architecture\n\n## Publish / Subscribe\n\nReactotron uses a publish / subscribe model to communicate between clients. This is implemented using WebSockets.\n\nThere are three main parties:\n\n1. The web socket server that publishes information\n2. The Electron app with Reactotron's UI, which subscribes to app updates\n3. The app client that we are debugging, which sends commands with information about the app to the server\n\n![Diagram of the Reactotron Electron app, reactotron-core-server, and the app client.](./images/architecture-app-mobile-diagram.png)\n\nWebsockets are used to sends \"commands\", which are JSON objects with information about the app we are debugging. The payloads are sent to the server, which then publishes them to all subscribers (like the Electron app).\n\n## Workspaces\n\nThis repository is broken into different workspaces:\n\n![Diagram of the Reactotron electron app and client, and which workspaces they correspond to.](./images/architecture-workspace-chart.png)\n\n### Reactotron app\n\nThese workspaces are used to build the Electron app that runs Reactotron.\n\n- `reactotron-app` - The Electron app that runs Reactotron.\n- `reactotron-core-ui` - UI components used by Reactotron. This was created to allow for other types of Reactotron clients to be built.\n- `reactotron-core-server` - The server that receives commands from the client and publishes them to subscribers. This server is started when the Reactotron Electron app is started.\n\n### Reactotron client\n\nClients are based around a plugin architecture. This allows us to add new features without having to modify the core of Reactotron.\n\nSee [reactotron-core-client](https://github.com/infinitered/reactotron/tree/main/lib/reactotron-core-client) for more information about plugins are implemented. In short, plugins are a way to listen to all the commands published by the server and then can do certain actions or publish new commands.\n\nThese workspaces are used to build the client that we are debugging.\n\n#### Core Plugins\n\n- `reactotron-core-client` - The base client with functionality for sending commands to the server.\n- `reactotron-react-native` - This is the Reactotron client for React Native apps. This contains core plugins specific to React Native apps.\n- `reactotron-react-js` - This is the Reactotron client for React web apps. This contains core plugins specific to React web apps.\n\n#### Extra Plugins\n\nReactotron client is built on a plugin architecture. This allows us to add new features without having to modify the core of Reactotron.\n\n- `reactotron-redux` - This is a plugin that adds Redux support to Reactotron.\n- `reactotron-mst` - This is a plugin that adds MobX State Tree support to Reactotron.\n"
  },
  {
    "path": "docs/contributing/ci.md",
    "content": "---\nname: Running Tests on Untrusted Forks\nsidebar_position: 99\n---\n\n# Running CI Scripts on Untrusted Forks\n\nUntrusted forks could contain malicious code to mine cryptocurrency, steal secrets, or otherwise harm the CI server.\n\nFor PRs from untrusted forks, to run the CI scripts, we need to:\n\n1. Review the code to ensure that it is safe to run on the CI server.\n2. If the code is safe, run the `ci:trust` script to push the commits to a branch on the main repository, where the CI scripts can be run.\n3. Once the tests have run, the status of the PR will be updated automatically (because the commits are the same).\n\n## How to run the CI scripts on untrusted forks:\n\n1. Copy the name of the branch from the PR.\n   ![Copy Fork Branch](./images/ci-copy-fork-branch.png)\n2. From your local clone of the main repository, run the `ci:trust` script.\n   ```bash\n   yarn ci:trust <branch-name>\n   ```\n3. The branch will be pushed and the tests will run\n   ![CI Tests Running](./images/ci-tests-running.png)\n\n## What does ci:trust do?\n\nThe `ci:trust` script does the following:\n\n1. Adds and fetches the untrusted fork as a temporary remote in your local repository.\n2. Pushes the specific branch from the untrusted fork to a designated temporary branch in your original repository.\n3. Pushing to a local branch triggers the continuous integration (CI) tests on the commits of the branch.\n4. Because the commits are the same, the status of the PR will be updated automatically.\n\n### Notes\n\n1. The ci:trust script will only work if you have write access to the main repository. This prevents malicious users from running the script on the main repository.\n2. The ci:trust script pushes the commits to a branch called `temp-ci-trusted-fork`.\n\n:::warning\n\nThe `temp-ci-trusted-fork` branch will be deleted and recreated if it already exists. This allows the script to\nclean up its own temporary branches.\n\n:::\n"
  },
  {
    "path": "docs/contributing/index.md",
    "content": "# Welcome to the Reactotron Contributing Guide\n\nThank you for investing your time in contributing to our project!\n\n:::tip\nPlease start by reading the other docs in this folder to understand how the monorepo folder structure and plugin architecture work.\n:::\n\n## Making changes to the Reactotron App\n\n### Step 1: Get the development version of reactotron running\n\n1. Fork the repo and then clone it to your local machine: `git clone git@github.com:YOUR_USER_NAME/reactotron.git`\n2. Install dependencies: `yarn`\n3. Start the `reactotron-app` in development mode: `yarn start`\n\nYou should see the reactotron electron app open on your machine with the development menu open.\n\n### Step 2: Use the example react-native app to test your changes\n\n1. Start the example app with `yarn start:example`\n2. Launch the app in the simulator of your choice.\n3. You should see output in the reactotron app.\n\n### Step 3: Making changes\n\nChanges made to the main reactotron electron app in `./apps/reactotron-app` will be reflected in the reactotron app that you started in step 1. You may need to kill the app and restart it to see your changes.\n\n:::info\nRemember to reload the example app from step 2 or other connected application(s) to reconnect the app to reactotron.\n:::\n\nChanges made to the client packages will be reflected in the example application immediately.\n\n## Bring Your Own Application\n\nLet's say that you want to develop features using your own application instead of the example app. If you make changes to the non-electron app packages in this monorepo like `reactotron-react-native` or `reactotron-core-client`, you will need to build the packages and then link them to your react-native app. Luckily, we have a script that will do this for you.\n\nYou can run `yarn build` to build all reactotron packages, or `yarn build:watch` to watch and rebuild changes automatically.\n\nIf your app was located in the `~/Code/PizzaApp` folder, to link the packages to your react-native app run:\n\n```sh\nnpx zx scripts/install-workspace-packages-in-target.mjs ~/Code/PizzaApp\n```\n\nor if you want to watch for rebuilds and automatically link them:\n\n```sh\nnpx nx watch --all -- \"npx zx scripts/install-workspace-packages-in-target.mjs ~/Code/PizzaApp\n```\n\n:::info\nMake sure that the path to your app is an absolute path and not a relative one (i.e. `~/Code/PizzaApp` instead of `../PizzaApp`)\n:::\n\n:::note\nYou must have already run `yarn` in your app folder (e.g. `~/Code/PizzaApp`) before running this script because is copies over the built js files from each reactotron library into the app's `node_modules` folder.\n:::\n\n## Adding a new Reactotron plugin to `./lib`\n\nIf you have a new plugin to contribute to the Reactotron ecosystem, you can start a new workspace by running the generate plugin script:\n\n```sh\nyarn generate:plugin my-plugin\n```\n\nThis will create the necessary directory in `./lib` and get you started with a template. You'll want to implement your configuration and plugin in `./lib/reactotron-my-plugin/reactotron-my-plugin.ts`.\n\nKeep in mind this won't add the workspace to `.circleci/config.yml`, that must still be done manually when ready.\n\n### Prepare for a pull request\n\nBefore you open a pull request, please ensure that the following command runs without errors:\n\n```sh\nyarn build-and-test:local\n```\n\nOnce you've made your changes and verified your local codebase passes all tests and linters, you'll need to commit them and push them to your fork. Then, you can open a pull request to the main repo.\n"
  },
  {
    "path": "docs/contributing/monorepo.md",
    "content": "# Monorepo Structure\n\n## Yarn 4\n\nThis project uses yarn 4 workspaces to manage the monorepo. It hoists dependencies shared across workspaces to the root of the project, and allows for a single `yarn.lock` file to be used for all packages.\n\nAs long as you have yarn 1 installed, you will use the yarn 4 automatically using the version specified in `.yarnrc.yml`.\n\n### nodeLinker\n\nYarn 4 philosophically has chosen to go in a direction where dependencies should be vendored and checked into the repo. This is a departure from the way yarn 1 and npm work, where dependencies are installed in the `node_modules` directory. They call this Plug'n'Play, and it is enabled by default in yarn 4.\n\nHowever, this can behavior can be modified through the `nodeLinker` value in `yarnrc.yml` to use `node-modules`, which is the normal behavior for yarn 1 and npm.\n\nSince yarn 1 is no longer being actively worked on, so we are using yarn 4 with the `nodeLinker` set to `node-modules`.\n\n### Patches\n\nYarn 4 has a patching feature similar to `patch-package` through `yarn patch <package>`. You can read more about it here: https://yarnpkg.com/cli/patch\n\n## Nx\n\nThis project uses `nx` as a task runner for the monorepo. Nx has many features, including build integration, dependency graph visualization, and more. You can read more about it here: https://nx.dev/\n\n### Tasks\n\n`npx nx run-many` is a common command used to run a command across all workspaces. For example, `npx nx run-many --target=lint` will run the `lint` target in all workspaces. Targets are like npm scripts, but they can be run across multiple workspaces.\n\nThese are aliased as yarn scripts in the root `package.json` file. For example, `yarn lint` will run the `lint` target in all workspaces.\n\n### Affected\n\nNx also has a `affected` command that will run a command on all workspaces that have been affected by a change. For example, `npx nx affected:lint` will run the `lint` target in all workspaces that have been affected by a change.\n\n### project.json\n\nEach workspace needs a `project.json` file to register it with nx. This file is used to define the targets for the workspace, and to define the dependencies between workspaces.\n\nAny script in the `scripts` section of the `package.json` file will be registered as a target in nx. For example, the `lint` script in the `package.json` file will be registered as a target in nx.\n\nAdditionally, you can set target defaults in the root `nx.json` file.\n\n### Task Caching\n\nNx has a feature called task caching that will cache the output of a task. Nx can fingerprint whether a task like `build` has already run and not changed. The cache is stored in the `node_modules/.cache/.nx` directory. If you want to clear the cache, you can delete the `node_modules/.cache/.nx` directory.\n\n## Linting\n\nEslint allows for having a parent config file and then extending it in child config files. This project has a generic Typescript linting setup at the top, and then child projects can extend it and add their own rules (for React, Electron, etc.). Read more about it here: https://eslint.org/docs/latest/user-guide/configuring/configuration-files\n\n## Typescript\n\nIn order for `typescript-eslint` to work, we use a `tsconfig.base.json` in the parent directory, and then each workspace extends that base with it's own `tsconfig.json` file. But in the parent eslint config, you must declare the location of all the tsconfig.json files in a glob pattern. You can read more here: https://typescript-eslint.io/linting/typed-linting/monorepos/#one-tsconfigjson-per-package-and-an-optional-one-in-the-root\n\n### Common Gotchas\n\nIn order to prevent nested folders in our `dist` directory, `\"rootDir\": \".\",` needs to be specified in the workspace `tsconfig.json` to avoid the parent `tsconfig.base.json` from being used.\n\n## Prettier\n\n### Ignore file\n\nPrettier has a `.prettierignore` file that is used to ignore files. This file is used in addition to the `.gitignore` file. This is useful for ignoring files that are not checked into git, but still need to be ignored by prettier. Unfortunately, there is no way to extend the `.gitignore` file in the `.prettierignore` file, so we have to duplicate the entries. See `copy-prettier-ignore` in the root `package.json` script.\n"
  },
  {
    "path": "docs/contributing/releasing.md",
    "content": "# Releasing\n\n> Note: this is a document primarily intended for maintainers at Infinite Red.\n\n## High Level Overview\n\n### Git Tags\n\nGit tags are used to mark a commit for a release. The format of the git tag is `<workspace>@<version>` (e.g. `reactotron-app@3.0.0`).\n\nA release commit and a git tag is created for every affected workspace on a release branch: `master`, `beta`, or `alpha`.\n\nVersions for a workspace are determined by the version in the workspace `package.json.`\n\n```json\n{\n  \"name\": \"reactotron-app\",\n  \"version\": \"3.0.0\"\n}\n```\n\nWould correspond to a git tag `reactotron-app@3.0.0`.\n\n### Release Branches\n\nIn CI, on every commit to a release branch, a task is run to determine what changed between the current commit and the last commit. If a workspace has changed, then a new release commit and tag will be added to the release branch.\n\nSo if 3 workspaces change, then 3 release commits are added to the release branch and 3 git tags are created.\n\n### Releasing Artifacts\n\nWhen a new git tag is published, CI will build and publish the workspace artifacts for that tag.\n\nAs of writing this, we have two workspaces: `apps` and `lib`.\n\nArtifacts from `lib` workspaces are published to npm.\n\nArtifacts from `app` workspaces are published to GitHub releases.\n\n## How Releases Are Implemented\n\nReleases are implemented using:\n\n- [nx](https://nx.dev/getting-started/intro) to manage workspaces and determine which workspaces have changed between commits\n- [jscutlery/semver](https://github.com/jscutlery/semver) to bump package.json versions, create release commits, and create git tags\n- [CircleCi](https://circleci.com/docs/configuration-reference/) to run the release tasks\n\n## Nx\n\n`nx` has this concept of [tasks](https://nx.dev/core-features/run-tasks#run-tasks), which are like npm scripts defined in a `project.json` file.\n\nTo be consistent in the `jscutlery/semver` docs, we have defined semantic release target task in the `projects.json` file as `version`.\n\nThis can be run with `npx nx run <project>:version` (e.g. `npx nx run app:version`).\n\nHowever, normally this will be run using `npx nx affected --target version --parallel=1 --base HEAD~1 --head HEAD`. The [affected](https://nx.dev/concepts/affected) command from `nx` will run the `version` task for the workspaces that have changed between the branches current commit and the last commit.\n\n## `jscutlery/semver`\n\nTo determine the new version, `jscutlery/semver` will look at the git tags on the repo, and look for an existing tag `<project>:<version>` (e.g. `app:1.0.0`). If it finds one, it will increment the version number based on the existing git tags.\n\nSettings for this plugin are managed using the `nx.json` and `project.json` files in a workspace.\n\n## CircleCi\n\nCircleCi is used to run the release tasks. The `config.yml` file is located in the `.circleci` folder.\n\nCircleCi is configured to check for whether new release commits and tags are needed on every commit to a release branch: `master`, `beta`, and `alpha`.\n\nOnce a new release tag is created, CircleCi will run a job to publish the artifacts for the workspace.\n"
  },
  {
    "path": "docs/custom-commands.md",
    "content": "---\nsidebar_position: 5\ntitle: Custom Commands\n---\n\n# Setting up custom commands\n\nWith Reactotron you can register custom commands that can do anything you want when they are executed. You can see all your registered commands in the \"Custom Commands\" tab in reactotron.\n\n## Registering a command\n\nThere are two ways you can write your custom commands.\n\n```js\nReactotron.onCustomCommand({\n  command: \"test2\",\n  handler: () => console.log(\"This is an example 2\"),  // Optional settings\n  title: \"A thing\", // This shows on the button\n  description: \"The desc\", // This shows below the button\n})\n```\n\n```js\nReactotron.onCustomCommand(\"test\", () => console.log(\"This is an example\"))\n```\n\n## Unregistering a command\n\n```js\nconst selfRemoving = Reactotron.onCustomCommand({\n  // Save the result\n  command: \"remove\",\n  handler: () => {\n    selfRemoving() // Calling it unregisters the command\n  },\n})\n```\n\n## Some real-world examples:\n\nYou can find [many real-world examples in Ignite](https://github.com/infinitered/ignite/blob/master/boilerplate/app/devtools/ReactotronConfig.ts), InfiniteRed's boilerplate react native solution. \n\nHere are some examples:\n\n```ts\n// Utilize react-navigation to put a button in Reactotron to go back to the previous screen:\nReactotron.onCustomCommand({\n  title: \"Go Back\",\n  description: \"Goes back\",\n  command: \"goBack\",\n  handler: () => {\n    Reactotron.log(\"Going back\")\n    goBack()\n  },\n})\n```\n\n```ts\n// Accept user input from Reactotron and navigate to that route:\nReactotron.onCustomCommand({\n  command: \"navigateTo\",\n  handler: (args) => {\n    const { route } = args\n    if (route) {\n      Reactotron.log(`Navigating to: ${route}`)\n      navigate(route)\n    } else {\n      Reactotron.log(\"Could not navigate. No route provided.\")\n    }\n  },\n  title: \"Navigate To Screen\",\n  description: \"Navigates to a screen by name.\",\n  args: [\n    {\n      name: \"route\",\n      type: ArgType.String,\n    },\n  ],\n})\n```\n\n```ts\n// Completely reset the app's react-navigation state:\nReactotron.onCustomCommand({\n  title: \"Reset Navigation State\",\n  description: \"Resets the navigation state\",\n  command: \"resetNavigation\",\n  handler: () => {\n    Reactotron.log(\"resetting navigation state\")\n    resetRoot({ index: 0, routes: [] })\n  },\n})\n```"
  },
  {
    "path": "docs/index.md",
    "content": "---\nsidebar_position: 1\ntitle: Reactotron\n---\n\n## What is Reactotron?\n\nReactotron is a powerful debugger for React and React Native applications. It provides an easy-to-use interface for developers to monitor their application's **state, network requests, and performance metrics** and can be used for any size of project, from small personal apps to large-scale enterprise applications.\n\nIt has a powerful plugin system that allows developers to extend and enhance the capabilities of Reactotron.\n\nYou can use Reactotron to:\n\n- view your application state\n- show API requests & responses\n- perform quick performance benchmarks\n- subscribe to parts of your application state\n- display messages similar to `console.log`\n- track global errors with source-mapped stack traces including saga stack traces!\n- dispatch actions like a government-run mind control experiment\n- hot swap your app's state using Redux or mobx-state-tree\n- show image overlay in React Native\n- track your Async Storage in React Native\n\nYou plug it into your app as a development dependency so it adds nothing to your production build size.\n\n> Reactotron is completely open source and free to use, making it an invaluable tool for developers at all levels of experience.\n\n[GitHub](https://github.com/infinitered/reactotron)\n"
  },
  {
    "path": "docs/plugins/_category_.json",
    "content": "{\n  \"label\": \"Plugins\",\n  \"position\": 5,\n  \"link\": {\n    \"type\": \"doc\",\n    \"id\": \"index\"\n  }\n}\n"
  },
  {
    "path": "docs/plugins/apisauce.md",
    "content": "---\ntitle: Apisauce\n---\n\n# reactotron-apisauce\n\n[Apisauce](http://github.com/skellock/apisauce) is a lightweight wrapper around the fantastic [Axios](https://github.com/mzabriskie/axios) networking library.\n\n![API Response](./images/apisauce/apisauce.jpg)\n\n## Installing\n\n```\nnpm i --save-dev reactotron-apisauce\n```\n\n```\nyarn add reactotron-apisauce -D\n```\n\n## Configuration\n\nTo use the apisauce plugin, add the additional plugin on the `import` line.\n\n```js\nimport apisaucePlugin from \"reactotron-apisauce\" //\n```\n\nThen plug it in when you configure Reactotron.\n\n```js\nReactotron.configure()\n  .use(\n    apisaucePlugin({\n      // ignoreContentTypes: /^(image)\\/.\\*$/i // <--- a way to skip printing the body of some requests (default is any image)\n    })\n  ) // <-- here we go!!!\n  .connect()\n```\n\n## Usage\n\nNext, wherever you create api functions for you application, bring in Reactotron and attach the monitor to your apisauce instance. Apisauce has a feature where you can attach a handler to watch.\n\n1. To view all requests/response flowing through your api\n\n```js\n//for web\nimport Reactotron from \"reactotron-react-js\"\n\n//for mobile\nimport Reactotron from \"reactotron-react-native\"\n\napi.addMonitor(Reactotron.apisauce)\n```\n\n2. To view only the requests/response that have a problem\n\n```js\n//if you just wanted to track on 500's\napi.addMonitor((response) => {\n  if (response.problem === \"SERVER_ERROR\") Reactotron.apisauce(response)\n})\n```\n"
  },
  {
    "path": "docs/plugins/async-storage.md",
    "content": "---\ntitle: AsyncStorage\n---\n\n# AsyncStorage\n\nThe `asyncStorage` plugin is part of `reactotron-react-native` which allows you to track [AsyncStorage](https://facebook.github.io/react-native/docs/asyncstorage.html) on React Native.\n\n## Usage\n\nTo use the Async Storage plugin, add the additional plugin on the `import` line.\n\n```js\nimport Reactotron, { asyncStorage } from \"reactotron-react-native\"\n```\n\nNext, add it as a plugin to Reactotron.\n\n```js\nReactotron.configure()\n  .use(asyncStorage()) // <--- here we go!\n  .connect()\n```\n\nAnd you're done! Now you can see your AsyncStorage in Reactotron.\n\n## Advanced Usage\n\n`asyncStorage()` also accepts an object with an `ignore` key. The value is an array of strings you would like to prevent sending to Reactotron.\n\n```js\nasyncStorage({\n  ignore: [\"secret\"],\n})\n```\n"
  },
  {
    "path": "docs/plugins/benchmark.md",
    "content": "---\ntitle: Benchmarking\n---\n\n# Benchmarking\n\nIf you have a function that you believe is slow, you can benchmark it to find any bottlenecks like this:\n\n## Usage\n\n```js\nimport Reactotron from \"reactotron-react-native\"\n\nfunction slowFunction() {\n  const bench = Reactotron.benchmark(\"slow function benchmark\")\n\n  // Code that does thing A\n  bench.step(\"Thing A\")\n\n  // Code that does thing B\n  bench.step(\"Thing B\")\n\n  // Code that does thing C\n  bench.stop(\"Thing C\")\n}\n```\n\nNote that the last call is to `stop` instead of `step`! This is important, otherwise the benchmark results won't display in Reactotron.\n\nWhen `slowFunction` is invoked, Reactotron should show something like this:\n\n![Benchmarking Output](./images/benchmarking/benchmark-output.png)\n\nTips: Time bar `Thing B` is the code execution time from `bench.step(\"Thing A\")` to `bench.step(\"Thing B\")`.\n"
  },
  {
    "path": "docs/plugins/index.md",
    "content": "# Reactotron Plugins\n\nReactotron has a powerful plugin system with ready-made plugins for you to use in your app. You can also create your own plugins to extend Reactotron's functionality.\n\n## What is a plugin?\n\nA plugin is a way to extend Reactotron's functionality. Plugins can be used to add new features to Reactotron or to add support for new libraries.\n\n## Installing a plugin\n\nTo install a plugin, you need to add it to your Reactotron client. You can do this by importing the plugin and passing it to the `use` method when you configure Reactotron.\n\n```js\nimport Reactotron from \"reactotron-react-native\"\n\nReactotron.configure()\n  .use(somePlugin())\n  .connect()\n```\n\n# Community-made plugins\n\nAnyone can make a Reactotron plugin! If you've made a plugin, please open a PR to add it to this list.\n\n> Note that Infinite Red does not maintain these plugins and can not guarantee compatibility or effectiveness. If you have questions about a plugin, please contact the plugin author.\n\n- [reactotron-react-query](https://github.com/hsndmr/reactotron-react-query)\n"
  },
  {
    "path": "docs/plugins/mst.md",
    "content": "---\ntitle: Mobx State Tree\n---\n\n# reactotron-mst\n\nBehold! A plugin for Reactotron for working with mobx-state-tree.\n\n# Prerequisites\n\nThis is a plugin for Reactotron, so you'll need either `reactotron-react-native` or `reactotron-react-dom` installed first.\n\nThis is also a plugin for `mobx-state-tree`, so you'll also need that installed as well.\n\n# Installation\n\nAdd a dev-dependency to `reactotron-mst` to your app.\n\n```sh\nyarn add reactotron-mst --dev\n```\n\nor\n\n```sh\nnpm i reactotron-mst --save-dev\n```\n\n# Configuration\n\nTo make Reactotron aware of this plugin, go to the file you are configuring Reactotron currently and add this:\n\n```ts\n// import the plugin\nimport { mst } from \"reactotron-mst\"\n\n// tell Reactotron to use this plugin\nReactotron.use(mst())\n```\n\nThis will bestow Reactotron the power to track `mobx-state-tree` nodes.\n\n# Usage\n\nFinally, you need to give `reactotron-mst` your root tree node.\n\nHere's an example of that in action:\n\n```ts\n// bring in Reactotron\nimport * as Reactotron from \"reactotron-react-native\"\n\n// bring in your mst model\nimport { MyModel } from \"./my-model\"\n\n// create an instance of your model\nconst myTree = MyModel.create()\n\n// let reactotron-mst know about it\nReactotron.trackMstNode(myTree)\n```\n\n# Options\n\nWhen you `use()` the `reactotron-mst`, you can also pass options.\n\n### filter\n\nThe `filter` property provides a way to control what is sent to Reactotron. It is a function which takes an [`IMiddlewareEvent`](https://github.com/mobxjs/mobx-state-tree/blob/master/docs/middleware.md#call-attributes) and returns a `boolean`. If you return `true`, the message will be sent to the Reactotron app. `false` will ignore this message.\n\nHere's an example which will stop all `postProcessSnapshot`-based actions from jumping the wire.\n\n```ts\nimport Tron from \"reactotron-react-native\"\nimport { mst } from \"reactotron-mst\"\n\nconst RX = /postProcessSnapshot/\nconst filter = (event) => RX.test(event.name) === false\n\nTron.use(mst({ filter }))\n```\n\nThe default value for `filter` if you don't provide it is `() => true`, which means everything gets passed to Reactotron.\n\n### queryMode\n\nThe `queryMode` property provides a way to switch between subscribing to live state or snapshots. The only time you'll want to subscribe to snapshots instead of live state is when verifying transitory state (via `postProcessSnapshot`) is not persisted.\n\n# Troubleshooting\n\nThe `trackMstNode()` function will only be available after you setup the `reactotron-mst` plugin. Make sure you do the previous setup step first or you'll see an error that says, `trackMstNode is not a function`.\n\n# Caveats\n\n### Phase 1\n\nThis plugin hooks into Reactotron just like the `redux` one. So the basics are in place, but it'll be a much nicer experience once we start introducing some custom views specifically for `mobx-state-tree`. Consider this plugin's status: phase 1 right now. 😅\n\n### Single Tree\n\nUnlike `redux`, `mobx-state-tree` doesn't have to have a single root node. I personally find it easier to set it up like this, though.\n\nCurrently, `reactotron-mst` only supports tracking 1 tree. Multi-tree support is planned, but requires a bit of retooling of the Reactotron app to support multiple states.\n\nAs a short-term hack, we might be able to find a way to do this by using a prefix to identify which tree you intend to work with. For example, if you would like to subscribe to a piece of state in a different tree, perhaps we could do something like this: `$tree3.currentUser.password`.\n\n### `flow()`-based actions issues\n\nSynchronous actions work well, however there's some issues with async actions when using the `mobx-state-tree` `flow()` function. We're going to have to introduce a new UI view similar to `redux-saga` to display this. In the meantime, the action which kicks off the flow will be logged immediate and the return value will be untracked (for now... sorry!).\n"
  },
  {
    "path": "docs/plugins/networking.md",
    "content": "---\ntitle: Networking\n---\n\n# Networking\n\nThe `networking` plugin is `reactotron-react-native` which allows you to track all XMLHttpRequests in React Native.\n\n## Usage\n\nTo use the `networking` plugin, you need to add the additional plugin on the `import` line.\n\n```js\nimport Reactotron, { networking } from \"reactotron-react-native\";\n```\n\nNext, add it as a plugin to Reactotron.\n\n```js\nReactotron.configure()\n  .use(networking()) // <--- here we go!\n  .connect();\n```\n\nAnd you're done! Now you can see your XMLHttpRequests in Reactotron.\n\n## Advanced Usage\n\n`networking()` also accepts an object with two options:\n\n- `ignoreContentTypes`: a regular expression which, when matched against the `Content-Type` response header, will prevent the data from being displayed in Reactotron. You typically want to do this for images (which is the default).\n- `ignoreUrls`: a regular expression which, when matched against the URL of the XHR, will prevent the request from being tracked in Reactotron. Can be useful for ignoring noisy logging requests.\n\n```js\nnetworking({\n  ignoreContentTypes: /^(image)\\/.*$/i,\n  ignoreUrls: /\\/(logs|symbolicate)$/,\n});\n```\n"
  },
  {
    "path": "docs/plugins/open-in-editor.md",
    "content": "---\ntitle: Open In Editor\n---\n\n# Open In Editor\n\nThe `openInEditor` plugin allows you to click on a line of code in Reactotron and have it open in your editor.\n\n## Configuration\n\nTo use the `openInEditor` plugin, add the additional plugin on the `import` line.\n\n```js\nimport Reactotron, { openInEditor } from \"reactotron-react-native\"\n```\n\nNext, add it as a plugin to Reactotron.\n\n```js\nReactotron.configure()\n  .use(openInEditor()) // <--- here we go!\n  .connect()\n```\n"
  },
  {
    "path": "docs/plugins/overlay.md",
    "content": "---\ntitle: Image Overlay\n---\n\n# Overlay\n\nOverlay is a plugin for `reactotron-react-native` which allows you to have an image uploaded\nto your simulator to stay on top of your app. This helps you to create those pixel perfect screens by helping you compare your app to the design.\n\n## Configuration\n\nTo use the Overlay plugin, add the additional plugin on the `import` line.\n\n```js\nimport Reactotron, { overlay } from \"reactotron-react-native\"\n```\n\nAdd it as a plugin to Reactotron.\n\n```js\nReactotron.configure()\n  .useReactNative({\n    overlay: true, // <--- here we go!\n  })\n  .connect()\n```\n\n## Usage\n\nNext, find the root UI component in your app and wrap it.\n\n```js\n// let's pretend this is your app.\nclass MyApp extends Component {\n  render() {\n    return <Text>I may have shipped too early.</Text>\n  }\n}\n\n// let's wrap it, so the overlay stays on top!\nconst MyAppWithBenefits = Reactotron.overlay(MyApp)\n\nexport default MyAppWithBenefits\n```\n\n# React Native Production Caveat\n\nOne common gotcha here is when you make production builds since `reactotron-react-native` is likely setup in `devDependencies`.\n\nIf you'd like to keep it like this (I recommend it!), then perhaps your code might look more like this:\n\n```js\nconst MyAppWithBenefits = __DEV__ ? Reactotron.overlay(MyApp) : MyApp\n```\n\nAnother option is to ship it in your `dependencies` (not recommended -- but sometimes you wanna run it on a device).\n"
  },
  {
    "path": "docs/plugins/react-native-mmkv.md",
    "content": "---\ntitle: MMKV\n---\n\n# React Native MMKV\n\nThe `reactotron-react-native-mmkv` plugin allows you to track [MMKV](https://github.com/mrousavy/react-native-mmkv) updates.\n\n## Installing\n\n```\nnpm i --save-dev reactotron-react-native-mmkv\n```\n\n```\nyarn add -D reactotron-react-native-mmkv\n```\n\n## Usage\n\nImport your MMKV storage instance:\n\n```tsx\nimport { MMKV } from \"react-native-mmkv\"\nexport const storage = new MMKV()\n```\n\nTo use the `mmkvPlugin`, add the additional plugin on the `import` line.\n\n```tsx\nimport Reactotron from \"reactotron-react-native\"\n// success-line\nimport type { ReactotronReactNative } from \"reactotron-react-native\"\n// success-line\nimport mmkvPlugin from \"reactotron-react-native-mmkv\"\n// success-line\nimport { storage } from \"./mmkv/storage/instance/location\" // <--- update this to your mmkv instance.\n...\nReactotron.configure()\n  // success-line\n  .use(mmkvPlugin<ReactotronReactNative>({ storage }))\n  .connect()\n```\n\nAnd you're done! Now you can see your MMKV in Reactotron.\n\n## Advanced Usage\n\n`mmkvPlugin()` accepts an object with an `ignore` key. The value is an array of strings you would like to prevent sending to Reactotron.\n\n```tsx\nmmkvPlugin<ReactotronReactNative>({\n  storage,\n  ignore: [\"secret\"],\n})\n```\n"
  },
  {
    "path": "docs/plugins/redux.md",
    "content": "---\ntitle: Redux\n---\n\n# reactotron-redux\n\n[Redux](http://redux.js.org/) is a library for managing global state. It's pretty damn awesome.\n\nAnd everyone knows when you combine two great things, you get a super-awesome thing. Except for toothpaste & orange juice. Keep those separate.\n\n![Keys and Values](./images/redux/redux-keys-values.jpg)\n\n![Dispatching](./images/redux/dispatching.jpg)\n\n![Subscriptions](./images/redux/subscriptions.jpg)\n\n# Installing\n\n`reactotron-redux` is a plugin which lives in a different npm package. You can install it by typing:\n\n```\nnpm install --save-dev reactotron-redux\n```\n\nor\n\n```\nyarn add reactotron-redux -D\n```\n\n# Features\n\n- track when actions are dispatched including timing\n- subscribe to changes within the state tree\n- pull values out on demand\n- view list of keys\n- dispatch actions from Reactotron\n- replay actions\n- hot swap your app state on the fly\n\n# Configuring\n\nTwo files need to change to hookup Reactotron to Redux. First, in your\nReactotronConfig, you'll need to add `reactotron-redux` as plugin\n\n```diff\n// ReactotronConfig.js\n+ import { reactotronRedux } from 'reactotron-redux'\n\n\n// then add it to the plugin list\n- Reactotron\n+ const reactotron = Reactotron\n  .configure({ name: 'React Native Demo' })\n+ .use(reactotronRedux()) //  <- here i am!\n  .connect() //Don't forget about me!\n\n+ export default reactotron // also: export me so I can be referenced by Redux store\n```\n\nNext, we'll add the enhancer from `Reactotron.createEnhancer()` in development.\n\n## Using Redux-Toolkit configureStore\n\nUsing [Redux-Toolkit's `configureStore`](https://redux-toolkit.js.org/api/configureStore), add the `enhancers` key.\n\n```tsx\nconst createEnhancers = (getDefaultEnhancers: GetDefaultEnhancers<any>) => {\n  if (__DEV__) {\n    const reactotron = require(\"../devtools/ReactotronConfig\").default\n    return getDefaultEnhancers().concat(reactotron.createEnhancer())\n  } else {\n    return getDefaultEnhancers()\n  }\n}\n\nexport const store = configureStore({\n  reducer: persistedReducer,\n  enhancers: createEnhancers,\n})\n```\n\n## Using Redux createStore\n\n```diff\nimport { createStore } from 'redux'\n+ import Reactotron from './ReactotronConfig'\n\n- const store = createStore(rootReducer)\n+ const store = createStore(rootReducer, Reactotron.createEnhancer())\n+ // or const store = createStore(rootReducer, preloadedState, Reactotron.createEnhancer())\n```\n\nNote: passing enhancer as last argument requires redux@>=3.1.0\n\n### If you have middleware\n\n```diff\nimport { createStore, compose } from 'redux'\n+ import Reactotron from './ReactotronConfig'\n\n- const store = createStore(rootReducer, compose(middleware))\n+ const store = createStore(rootReducer, compose(middleware, Reactotron.createEnhancer()))\n```\n\n# Options\n\n`reactotronRedux()` accepts an optional parameter which is an object you can use\nto configure\n\n#### except\n\n`except` is an array of strings that match actions flowing through Redux.\n\nIf you have some actions you'd rather just not see (for example, `redux-saga`\ntriggers a little bit of noise), you can suppress them:\n\n```js\nreactotronRedux({\n  except: [\"EFFECT_TRIGGERED\", \"EFFECT_RESOLVED\", \"EFFECT_REJECTED\"],\n})\n```\n\n#### isActionImportant\n\n`isActionImportant` is a function which receives an action and returns a boolean.\n`true` will cause the action to show up in the Reactotron app with a highlight.\n\n```js\nreactotronRedux({\n  isActionImportant: (action) => action.type === \"repo.receive\",\n})\n```\n\n#### onBackup\n\n`onBackup` fires when we're about to transfer a copy of your Redux global state\ntree and send it to the server. It accepts an object called `state` and returns\nan object called `state`.\n\nYou can use this to prevent big, sensitive, or transient data from going to\nReactotron.\n\n#### onRestore\n\n`onRestore` is the opposite of `onBackup`. It will fire when the Reactotron app\nsends a new copy of state to the app.\n"
  },
  {
    "path": "docs/plugins/storybook.md",
    "content": "---\ntitle: Storybook\n---\n\n# Storybook (React Native Only)\n\n`reactotron-react-native` ships with a plugin called `storybook`.\n\nThis plugin, when configured properly, allows the switching to Storybook from the Reactotron interface\n\n## Configuration\n\nThe storybook plugin gets turned on automatically when you use `.useReactNative()`. If you don't want to use that method you can manually wire up the plugin:\n\nWherever you setup your Reactotron in your app, you also add the additional plugin on the `import` line.\n\n```js\nimport Reactotron, { storybook } from \"reactotron-react-native\"\n```\n\nNext, add it as a plugin to Reactotron.\n\n```js\nReactotron.configure()\n  .useReactNative({\n    storybook: true,\n  })\n  .connect()\n```\n\n## Usage\n\nOnce the plugin is configured you have to wrap your entire app in a HOC provided by Reactotron. In addition to that Storybook requires some configuration. Here is an example:\n\n```js\nimport { getStorybookUI, configure } from '@storybook/react-native'\n\n{...}\n\nconfigure(() => {\n  require('../../storybook/stories') // This should point to your \"root\" set of stories\n}, module)\n\nconst StorybookUIRoot = getStorybookUI({ port: 7007, onDeviceUI: true }) // This configuration can be changed based upon personal wants\n\nclass StorybookUIHMRRoot extends Component {\n  render () {\n    return <StorybookUIRoot />\n  }\n}\n\n// Assuming you have Reactotron on console.tron\nexport default console.tron.storybookSwitcher(StorybookUIHMRRoot)(RootContainer)\n```\n"
  },
  {
    "path": "docs/plugins/track-global-errors.md",
    "content": "---\ntitle: Global Errors\n---\n\n# Track Global Errors\n\nThe goal of this plugin is to ensure all errors are thrown over to Reactotron for display.\nBoth `reactotron-react-native` and `reactotron-react-js` ship with this plugin.\n\n# Usage\n\nTo use the `trackGlobalErrors` plugin, add the additional plugin on the `import` line.\n\n```js\nimport Reactotron, { trackGlobalErrors } from \"reactotron-react-native\";\n```\n\nor\n\n```js\nimport Reactotron, { trackGlobalErrors } from \"reactotron-react-js\";\n```\n\nNext, add it as a plugin to Reactotron.\n\n```js\nReactotron.configure()\n  .use(trackGlobalErrors()) // <--- here we go!\n  .connect();\n```\n\n## Options\n\nVeto is function that allows you to select frames you would like to leave out of the stack trace.\n\nFor example, on React Native, you'd like to leave off any frames sourced from React Native itself\n\n```js\nReactotron.configure()\n  .use(\n    trackGlobalErrors({\n      veto: (frame) =>\n        !frame.fileName.includes(\"/node_modules/react-native/\"),\n    })\n  )\n  .connect();\n```\n\n`veto` is a function that takes an `object` and returns a `boolean`. `true` = keep it. `false` = ditch it.\n\n> **Note:** This behavior is inverted from the originally intended design. The function was meant to work as \"true = ditch it, false = keep it\", but due to a long-standing implementation detail (using `.filter()` which keeps truthy values), the actual behavior has been the opposite. Since this behavior has existed for so long, it's now considered the expected behavior and the documentation has been updated to reflect it.\n\nThe frame object passed into `veto` has these properties.\n\n```\nfunctionName:  the name of the function or null if an anonymous function\nlineNumber:    the line number of the error\ncolumnNumber:  the column number of the error\nfileName:      the name of the file\n```\n\n### React JS Source Maps\n\nSource maps for projects in webpack need to have the `devtool` set to `source-map`. On `create-react-app` based apps, they use `eval`, so this will not work. You will have to switch your development webpack configuration to support this.\n\nYou also have the option to not do source map lookups, but still pass errors along by going into offline mode.\n\n```js\nReactotron.configure()\n  .use(\n    trackGlobalErrors({\n      offline: true,\n    })\n  )\n  .connect();\n```\n\n# How It Works Internally\n\n### React JS\n\nIt hijacks the browser's `window.onerror` event, immediately calling the previous `onerror`, then attempts to resolve the source of the errors via a source-map lookup. If successful, it throws a message over to Reactotron.\n\n### React Native\n\nOn React Native, it hooks `NativeModules.LogBox.addException`. This is an internal method that React Native uses internally to report errors to LogBox. It always calls the original function so it won't break anything internally. Your Red Box will still show.\n\nBecause we're hooking a Facebook internal function, this is a bit fragile. We'll stay on top of any React Native upgrades that might cause problems should the API change.\n"
  },
  {
    "path": "docs/plugins/track-global-logs.md",
    "content": "---\ntitle: Global Logs\n---\n\n# Documentation: `trackGlobalLogs`\n\n## Overview\n\nThe `trackGlobalLogs` plugin for Reactotron is designed to intercept calls made to `console.log`, `console.warn`, and `console.debug`, forwarding them to the Reactotron logger. This functionality is useful for monitoring and analyzing logs within your React Native or React JS applications.\n\n### Usage\n\nTo integrate the `trackGlobalLogs` plugin into your Reactotron setup, follow these steps:\n\n#### Default\n\nThis plugin is included by default in Reactotron when using `reactotron-react-native`.\n\n```js\nimport Reactotron from \"reactotron-react-native\";\n\nReactotron.configure()\n  .useReactNative() // included by default\n  .connect();\n```\n\n#### Custom\n\nIf are not using the `useReactNative` method for some reason, you can add the plugin manually like so:\n\n1. Import the `trackGlobalLogs` function from the Reactotron package:\n\n```js\nimport Reactotron, { trackGlobalLogs } from \"reactotron-react-native\";\n```\n\n2. Add the `trackGlobalLogs` plugin to your Reactotron configuration as shown below:\n\n```js\nReactotron.configure().use(trackGlobalLogs()).connect();\n```\n\nThis enables the plugin to start intercepting global logs once your Reactotron instance is connected.\n\n### How It Works Internally\n\nFor both React Native and React JS applications, the `trackGlobalLogs` plugin works by monkey-patching references to `console.log`, `console.warn`, and `console.debug`. It intercepts calls to these console methods and, in addition to the original console output, also sends the log data to the Reactotron logger for further analysis.\n\nPlease note that there are no additional configuration options provided by the plugin itself. It automatically captures `console.log`, `console.warn`, and `console.debug` calls without any customization options.\n"
  },
  {
    "path": "docs/quick-start/_category_.json",
    "content": "{\n  \"label\": \"Quick Start\",\n  \"position\": 3,\n  \"link\": {\n    \"type\": \"doc\",\n    \"id\": \"getting-started\"\n  }\n}\n"
  },
  {
    "path": "docs/quick-start/getting-started.md",
    "content": "---\nsidebar_position: 2\ntitle: Getting Started\n---\n\n# Getting started with Reactotron\n\n## Installing Reactotron\n\nReactotron exists as a desktop application (written in electron) that communicates with your react or react-native app over websockets. It's available for macOS, Linux, and Windows.\n\nFirst, you'll need to install the Reactotron desktop application. On the [Releases](https://github.com/infinitered/reactotron/releases?q=reactotron-app&expanded=true) page, you will find `reactotron-app` release where you can download the latest version.\n\nOnce installed, you need to add the Reactotron client to your project. Follow one of these quick start guides to get Reactotron up and running in your project:\n\n- [**React Native**](./react-native.md#installing-reactotronapp)\n- [**React**](./react-js.md#installing-reactotronapp)\n\nIf you run into an [issue](https://github.com/infinitered/reactotron/issues/1140) opening the application on Mac you can install with Homebrew instead: `brew install --cask reactotron`\n\n## Where can I find more information?\n\nWe recommend that you watch [Darin Wilson's](https://github.com/darinwilson) talk at [Chain React](https://chainreactconf.com/): [Chain React 2018: Debugging and Beyond with Reactotron](https://www.youtube.com/watch?v=UiPo9A9k7xc)!\n"
  },
  {
    "path": "docs/quick-start/react-js.md",
    "content": "---\ntitle: react\n---\n\n# Quick Start for React JS\n\n## Installing Reactotron.app\n\nLet’s [download the desktop app](https://github.com/infinitered/reactotron/releases?q=reactotron-app&expanded=true) to start. Expand `reactotron-app` release to download the latest version for Linux, Windows, and Mac.\n\nUnzip & run.\n\n![Installing The App](./images/react-js/installing.jpg)\n\n## Humble Beginnings\n\nDid you B.Y.O.App? Skip to the next section.\n\nLet’s use [create-react-app](https://github.com/facebookincubator/create-react-app) to bootstrap a new React JS app because, wow, is it fantastic.\n\nDownload `create-react-app` if you haven't yet:\n\n```\nnpm i -g create-react-app\n```\n\nThen spin up a brand new React web app.\n\n```\ncreate-react-app this-better-work\ncd this-better-work\n```\n\n## Installing Reactotron\n\nLet's install Reactotron as a dev dependency.\n\n```\nnpm i --save-dev reactotron-react-js\n```\n\nI like a separate file for initializing. Create `src/ReactotronConfig.js` in your editor of choice and paste this:\n\n```js\nimport Reactotron from \"reactotron-react-js\"\n\nReactotron.configure() // we can use plugins here -- more on this later\n  .connect() // let's connect!\n```\n\nFinally, we import this on startup in `src/index.js` on line 1:\n\n```js\nimport \"./ReactotronConfig\"\n```\n\nAt this point, Reactotron is hooked up.\n\nRefresh your web page (or start it up `npm start`) and have a look at Reactotron now. Do you see the `CONNECTION` line? Click that to expand.\n\n![We Have Contact](./images/react-js/first-connect.jpg)\n\nGo back to your web page and refresh the web page 5 or 6 times. Now look.\n\n![Chatty](./images/react-js/spammy.jpg)\n\nPretty underwhelming huh?\n\n## Hello World\n\nLet's do some classic programming.\n\nOpen up `src/App.js`.\n\nAt the top, let's put\n\n```js\nimport Reactotron from \"reactotron-react-js\"\n```\n\nNext, inside the `render()` function, put this as the first line:\n\n```js\nReactotron.log(\"hello rendering world\")\n```\n\nSave that file and refresh your web page if you don't have live reloading.\n\nNow Reactotron looks like this:\n\n![Hello 1](./images/react-js/hello-1.jpg)\n\nWhile collapsed, the grey area to the right shows a preview. Click to open.\n\n![Hello 2](./images/react-js/hello-2.jpg)\n\nLet's change our log statement to:\n\n```js\nReactotron.log({\n  numbers: [1, 2, 3],\n  boolean: false,\n  nested: { here: \"we go\" },\n})\n```\n\nOr this\n\n```js\nReactotron.warn(\"*glares*\")\n```\n\nOr this\n\n```js\nReactotron.error(\"Now you've done it.\")\n```\n\nOr this\n\n```js\nReactotron.display({\n  name: \"KNOCK KNOCK\",\n  preview: \"Who's there?\",\n  value: \"Orange.\",\n})\n\nReactotron.display({\n  name: \"ORANGE\",\n  preview: \"Who?\",\n  value: \"Orange you glad you don't know me in real life?\",\n  important: true,\n})\n```\n\n## Monitor your Redux store state changes\n\nHooking up to redux requires some [additional set up](../plugins/redux.md).\n\n## Now What?\n\nWell, at this point, we have a complicated version of `console.log`.\n\nWhere Reactotron starts to shine is when you start plugging into [Redux](../plugins/redux.md), tracking global errors, and watching network requests.\n\n![Demo Web App](./images/react-js/react-demo-js.jpg)\n\n![Demo Reactotron](./images/react-js/react-demo-js-reactotron.jpg)\n"
  },
  {
    "path": "docs/quick-start/react-native.md",
    "content": "---\nid: react-native\ntitle: react-native\n---\n\n# Quick Start for React Native\n\n## Installing Reactotron.app\n\nLet’s [download the desktop app](https://github.com/infinitered/reactotron/releases?q=reactotron-app&expanded=true) to start. Expand `reactotron-app` release to download the latest version for Linux, Windows, and Mac.\n\nUnzip & run.\n\n![Installing The App](./images/react-js/installing.jpg)\n\n## Configure Reactotron with your project\n\n#### **Step 1 - Add Reactotron as DEV dependency**\n\nAdd Reactotron on your React Native project as a dev dependency.\n\n```\nnpm i --save-dev reactotron-react-native\n```\n\n```\nyarn add reactotron-react-native -D\n```\n\n#### **Step 2 - Initialization**\n\nCreate a file in your root folder `ReactotronConfig.js` and paste this:\n\n```js\nimport Reactotron from \"reactotron-react-native\";\n\nReactotron.configure() // controls connection & communication settings\n  .useReactNative() // add all built-in react native plugins\n  .connect(); // let's connect!\n```\n\nOr using a more advanced way to customize which plugins to include:\n\n```js\nimport Reactotron from \"reactotron-react-native\";\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\n\nReactotron.setAsyncStorageHandler(AsyncStorage)\n  .configure({\n    name: \"React Native Demo\",\n  })\n  .useReactNative({\n    asyncStorage: false, // there are more options to the async storage.\n    networking: {\n      // optionally, you can turn it off with false.\n      ignoreUrls: /symbolicate/,\n    },\n    editor: false, // there are more options to editor\n    errors: { veto: (stackFrame) => false }, // or turn it off with false\n    overlay: false, // just turning off overlay\n  })\n  .connect();\n```\n\nAlternatively, you can create your own plugin and provide it via:\n\n```js\nimport Reactotron from \"reactotron-react-native\";\n\nconst middleware = (tron) => {\n  /* plugin definition */\n};\n\nReactotron.setAsyncStorageHandler(AsyncStorage)\n  .configure({\n    name: \"React Native Demo\",\n  })\n  .useReactNative() // add all built-in react native plugins\n  .use(middleware) // plus some custom made plugin.\n  .connect();\n```\n\n#### **Step 3 - Add Reactotron to your app**\n\nFinally, we import this on in one of:\n\n- `App.js` (Create React Native App / Expo) or\n- `index.js`\n\non line 1:\n\n```js\nif (__DEV__) {\n  require(\"./ReactotronConfig\");\n}\n```\n\nAt this point, Reactotron is hooked up. **HOUSTON, WE HAVE A CONNECTION!**\n\nRefresh your app (or start it up `react-native start`) and have a look at Reactotron now. Do you see the `CONNECTION` line? Click that to expand.\n\n![We Have Contact](./images/react-native/first-connect.jpg)\n\nGo back to your app and refresh it 5 or 6 times. Now look.\n\n![Chatty](./images/react-native/spammy.jpg)\n\n## Troubleshooting\n\n**Android**: If you are using an Android device or an emulator run the following command to make sure it can connect to Reactotron:\n\n```\nadb reverse tcp:9090 tcp:9090\n```\n"
  },
  {
    "path": "docs/tips.md",
    "content": "---\nsidebar_position: 888\n---\n\n# Tips and Tricks\n\n### Clearing Reactotron\n\nYou can clear Reactotron by calling `clear()`.\n\nFor example, let's say in React Native you want to clear the logs everytime you start up? Add this to your app's `ReactotronConfig.js`:\n\n```js\nReactotron.clear()\n```\n\n### Running In Production\n\nDon't... said the stranger on the Internet pretending he knows what's best for you.\n\nPlease install `reactotron-react-native`, `reactotron-react-js`, and others with `--save-dev` instead of `--save`.\n\n#### React Native\n\nFor React Native apps, there's several good reasons.\n\n1. Battery life. WebSockets will drain the battery as the connection stays open.\n2. Privacy. Your app might store stuff in state that the user realize... like social tokens.\n3. Security. You can literally remote control parts of the app. Yikes!\n\nSurround your Reactotron activities with:\n\n```js\nif (__DEV__) {\n  // ZAP!\n}\n```\n\nThis means you'll need to be careful to use `require()` instead of `import` as `import` in ES6 are hoisted!\n\n**Flip Flop Alert!** Technically it's possible just to NPM `--save`. Maybe you want to do some debugging on a production build on a local device? That's cool. Just please, don't ship without conditionally shutting off `Reactotron.connect()`. \\<3\n\n#### React JS\n\nFor web sites, well... CORS browser security will pretty much shut you down anyway.\n\nIf you're running ReactJS and webpack, anything inside `false` expressions will get nuked in production builds.\n\n```js\nif (process.env.NODE_ENV !== \"production\") {\n  // ZAP!\n}\n```\n\n### Piggybacking on Console\n\nIn ES6, you must import Reactotron at the top of your file before using it like this:\n\n```js\nimport Reactotron from \"reactotron-react-native\"\n// or import Reactotron from 'reactotron-react'\n```\n\nAnd later on in your file, you type:\n\n```js\nReactotron.log(\"something really interesting happened\")\n```\n\nYou can cut out the top step by attaching to the `console` object in your `ReactotronConfig.js` file (or wherever you setup).\n\n```js\n// horrible, but useful hack.... oh come on, don't look at me like that... it's JavaScript :|\nconsole.tron = Reactotron\n```\n\nNow, anywhere in your app if you want to log something?\n\n```js\nconsole.tron.log(\"Sweet Freedom!\")\n```\n\n### Fancy Console Magic :tophat: :sparkles:\n\nYou can add an important indicator light by calling `logImportant`. _E.g._\n\n```js\n// or Reactotron.log\nconsole.tron.logImportant(\"I am important\")\n```\n\nAdditionally, you can access a more advanced message and indicator with `display`.\n\n```js\n// or Reactotron.display\nconsole.tron.display({\n  name: \"Tacos\",\n  value: { a: 1, b: [1, 2, 3] },\n  preview: \"when you click here, it might surprise you!\",\n  important: true,\n  image: \"http://placekitten.com/g/400/400\",\n})\n```\n\n## Redux and Immutable data\n\nIf you're using [reactotron-redux](./plugins/redux.md)\nand an immutable library such as [seamless-immutable](https://github.com/rtfeldman/seamless-immutable) you need to make sure you transform your state back into an immutable object when using State Snapshots.\n\nTo do so you can use the `onRestore` callback like this:\n\n```js\n  .use(reactotronRedux({\n    // Fires when Reactotron uploads a new copy of the state tree.\n    onRestore: state => Immutable(state)\n  }))\n```\n\nHowever if only some of your reducers are immutable and the rest are mutable you can selectively transform\nthe state like this:\n\n```js\n  .use(reactotronRedux({\n    // Fires when Reactotron uploads a new copy of the state tree.\n    onRestore: state => {\n      return { ...Immutable(state), nav: state.nav }\n    }\n  }))\n```\n\nThis will `nav` mutable. Note this is what you want to do when using\n[react-navigation's default reducer](https://github.com/react-community/react-navigation/blob/master/docs/guides/Redux-Integration.md).\n"
  },
  {
    "path": "docs/troubleshooting.md",
    "content": "---\nsidebar_position: 999\n---\n\n# Troubleshooting\n\nHere are some notes about common things that go off the rails.\n\n## React Native iOS\n\n#### Tethered and Can't Connect?\n\nIf you have tethered an iOS device to your development machine and have deployed your React Native app (in DEBUG mode) to the device, Reactotron needs to know the host of the machine in order to connect.\n\nGo to the file in your React Native app that configures Reactotron. This file is named \"ReactotronConfig.js\". Uncomment the 'host' line under `.configure` and set it to the ip address of your host machine. Don't forget to add a comma after this line!\n\nThe configuration should look something like this:\n\n```js\nif (__DEV__) {\n  Reactotron\n    .configure({\n      host: '<machine host ip>', // default is localhost (on android don't forget to `adb reverse tcp:9090 tcp:9090`)\n      name: 'Ignite App' // would you like to see your app's name?\n    })\n```\n\nStop the React Native packager and re-deploy the app to your tethered iOS device. When the app starts up, Reactotron will connect to your machine's ip address.\n\n## React Native Android\n\n#### Using Expo and Can't Connect?\n\nMake sure you are running your app using the command:\n\n    exp start --localhost\n\nOtherwise the app is not using the port 9000.\n\n#### Tethered and Can't Connect?\n\nIf you're using an emulator like Genymotion or the one in Android Studio, or even if your own device, you can still use localhost (the default) to connect provided you **port forward** back to your computer.\n\nWhile plugged in type:\n\n```sh\nadb reverse tcp:9090 tcp:9090\n```\n\nand reload the app on your device.\n\nThis only works on Android 5.x+.\n\nAs of 1.1.4, the proper IP address is auto-discovered. Simply leave the `configure` as is.\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea"
  },
  {
    "path": "lib/eslint-plugin-reactotron/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [0.1.9](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.8...eslint-plugin-reactotron@0.1.9) (2025-09-19)\n\n\n### Bug Fixes\n\n* **eslint-plugin-reactotron:** Fix ESLint Plugin CommonJS Export Compatibility ([#1578](https://github.com/infinitered/reactotron/issues/1578)) ([8c16592](https://github.com/infinitered/reactotron/commit/8c16592fd68be2cfd0c25da02a609f9bb8e5d051)), closes [infinitered/ignite#2997](https://github.com/infinitered/ignite/issues/2997)\n\n### [0.1.8](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.7...eslint-plugin-reactotron@0.1.8) (2025-09-16)\n\n### [0.1.7](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.6...eslint-plugin-reactotron@0.1.7) (2025-03-01)\n\n### [0.1.6](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.5...eslint-plugin-reactotron@0.1.6) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [0.1.5](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.4...eslint-plugin-reactotron@0.1.5) (2024-08-26)\n\n### [0.1.4](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.3...eslint-plugin-reactotron@0.1.4) (2024-02-14)\n\n## [0.1.3](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.2...eslint-plugin-reactotron@0.1.3) (2024-02-14)\n\n### [0.1.2](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.1...eslint-plugin-reactotron@0.1.2) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [0.1.1](https://github.com/infinitered/reactotron/compare/eslint-plugin-reactotron@0.1.0...eslint-plugin-reactotron@0.1.1) (2023-12-14)\n\n## 0.1.0 (2023-12-13)\n\n\n### Features\n\n* eslint-plugin-reactotron ([#1342](https://github.com/infinitered/reactotron/issues/1342) by [@frankcalise](https://github.com/frankcalise)) ([ccdc077](https://github.com/infinitered/reactotron/commit/ccdc077af9c43a6bd76ebde90051b97c592d7a1a))\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/eslint-plugin-reactotron/README.md",
    "content": "# eslint-plugin-reactotron\n\nESLint plugin containing rules to help with Reactotron code within your project\n\n# Installing\n\n```bash\nnpm i --save-dev eslint-plugin-reactotron\n# or\nyarn add -D eslint-plugin-reactotron\n```\n\n## Usage\n\nModify your plugins and rules inside `./eslintrc` or `eslintConfig` inside `package.json`\n\n```json\n\"eslintConfig\": {\n  \"plugins\": [\n    \"reactotron\"\n  ],\n  rules: {\n    \"reactotron/no-tron-in-production\": \"error\"\n  }\n}\n```\n\n## Rules\n\n### no-tron-in-production\n\nEnforces `if (__DEV__)` around `console.tron` calls so they are not included in production.\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/package.json",
    "content": "{\n  \"name\": \"eslint-plugin-reactotron\",\n  \"version\": \"0.1.9\",\n  \"description\": \"An ESLint plugin for Reactotron.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/eslint-plugin-reactotron\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/eslint-plugin-reactotron\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --passWithNoTests\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint 'src/**/**.{ts,tsx}'\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"peerDependencies\": {\n    \"reactotron-core-client\": \"*\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"@typescript-eslint/utils\": \"^6.14.0\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"reactotron-core-client\": \"workspace:*\",\n    \"testdouble\": \"^3.20.0\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"rules\": {\n      \"import/no-unresolved\": \"off\"\n    }\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/project.json",
    "content": "{\n  \"name\": \"eslint-plugin-reactotron\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/src/index.ts",
    "content": "import type { Linter } from \"@typescript-eslint/utils/ts-eslint\"\nimport { noTronInProduction } from \"./rules/no-tron-in-production\"\n\n/**\n * Modify your plugins and rules inside `./eslintrc` or `eslintConfig` inside `package.json`\n * \n * @example \n * ```json\n    \"eslintConfig\": {\n      \"plugins\": [\n        \"reactotron\"\n      ],\n      \"rules\": {\n        \"reactotron/no-tron-in-production\": \"error\"\n      }\n    }\n  ```\n */\nexport const rules: Record<string, any> = {\n  \"no-tron-in-production\": noTronInProduction,\n}\n\n// Export the plugin object directly\nconst plugin: Linter.Plugin = { rules }\nexport default plugin\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/src/rules/no-tron-in-production.ts",
    "content": "import { ESLintUtils } from \"@typescript-eslint/utils\"\n\nconst createRule = ESLintUtils.RuleCreator(() => `reactotron/no-tron-in-production`)\n\n/**\n * Enforces `if (__DEV__)` around `console.tron` calls so they are not included in production.\n */\nexport const noTronInProduction = createRule({\n  name: \"no-tron-in-production\",\n  meta: {\n    type: \"problem\",\n    messages: {\n      noTronInProduction: \"Use if (__DEV__) { } around `console.tron.{{ fnName }}` method calls.\",\n    },\n    docs: {\n      description: \"Enforce using `if (__DEV__)` around `console.tron` calls.\",\n      recommended: \"strict\",\n    },\n    schema: [],\n  },\n  defaultOptions: [],\n  create(context) {\n    const { sourceCode } = context\n    return {\n      CallExpression(node) {\n        const callee = node.callee\n\n        if (\n          callee.type === \"MemberExpression\" &&\n          callee.object.type === \"MemberExpression\" &&\n          callee.object.object.type === \"Identifier\" &&\n          callee.object.object.name === \"console\" &&\n          callee.object.property.type === \"Identifier\" &&\n          callee.object.property.name === \"tron\"\n        ) {\n          // https://eslint.org/blog/2023/09/preparing-custom-rules-eslint-v9/#main\n          const ancestors = sourceCode?.getAncestors\n            ? sourceCode.getAncestors(node)\n            : context.getAncestors()\n\n          const parent = ancestors?.pop().parent.parent\n\n          if (\n            !parent ||\n            parent.type !== \"IfStatement\" ||\n            !parent.test ||\n            parent.test.type !== \"Identifier\" ||\n            parent.test.name !== \"__DEV__\"\n          ) {\n            context.report({\n              node: callee,\n              messageId: \"noTronInProduction\",\n              data: {\n                // @ts-expect-error need to cast as AST_NODE_TYPES.MemberExpression\n                fnName: callee.property.name,\n              },\n            })\n          }\n        }\n      },\n    }\n  },\n})\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/tests/no-tron-in-production.test.ts",
    "content": "import { noTronInProduction } from \"../src/rules/no-tron-in-production\"\nimport { RuleTester } from \"eslint\"\n\nconst ruleTester = new RuleTester({\n  // Must use at least ecmaVersion 2015 because\n  // that's when `const` variables were introduced.\n  parserOptions: { ecmaVersion: 2015 },\n})\n\nconst RULE_NAME = \"no-tron-in-production\"\n\n// Throws error if the tests in ruleTester.run() do not pass\nruleTester.run(\n  RULE_NAME, // rule name\n  noTronInProduction, // rule code\n  {\n    // checks\n    // 'valid' checks cases that should pass\n    valid: [\n      {\n        code: `if (__DEV__) {\n          console.tron.log('test');\n        }`,\n      },\n    ],\n    // 'invalid' checks cases that should not pass\n    invalid: [\n      {\n        code: \"console.tron.log('test');\",\n        errors: 1,\n      },\n    ],\n  }\n)\n\nruleTester.run(\n  RULE_NAME, // rule name\n  noTronInProduction, // rule code\n  {\n    // checks\n    // 'valid' checks cases that should pass\n    valid: [\n      {\n        code: `if (__DEV__) { console.tron.display({ name: 'test', value: 'testing' }); }`,\n      },\n    ],\n    // 'invalid' checks cases that should not pass\n    invalid: [\n      {\n        code: \"console.tron.display({ name: 'test', value: 'testing' });\",\n        errors: 1,\n      },\n    ],\n  }\n)\n\nconsole.log(\"All tests passed!\")\n"
  },
  {
    "path": "lib/eslint-plugin-reactotron/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"NodeNext\",\n    \"moduleResolution\": \"NodeNext\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"skipLibCheck\": true, // Temp?\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-apisauce/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-apisauce/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-apisauce/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [3.0.7](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.6...reactotron-apisauce@3.0.7) (2025-09-16)\n\n### [3.0.6](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.5...reactotron-apisauce@3.0.6) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [3.0.5](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.4...reactotron-apisauce@3.0.5) (2024-08-26)\n\n### [3.0.4](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.3...reactotron-apisauce@3.0.4) (2024-02-14)\n\n## [3.0.3](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.2...reactotron-apisauce@3.0.3) (2024-02-14)\n\n### [3.0.2](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1...reactotron-apisauce@3.0.2) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [3.0.1](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.14...reactotron-apisauce@3.0.1) (2023-12-05)\n\n### [3.0.1-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.13...reactotron-apisauce@3.0.1-beta.14) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [3.0.1-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.12...reactotron-apisauce@3.0.1-beta.13) (2023-11-06)\n\n### [3.0.1-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.11...reactotron-apisauce@3.0.1-beta.12) (2023-10-13)\n\n### [3.0.1-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.10...reactotron-apisauce@3.0.1-beta.11) (2023-10-02)\n\n### [3.0.1-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.9...reactotron-apisauce@3.0.1-beta.10) (2023-09-27)\n\n### [3.0.1-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.8...reactotron-apisauce@3.0.1-beta.9) (2023-09-22)\n\n### [3.0.1-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.7...reactotron-apisauce@3.0.1-beta.8) (2023-09-08)\n\n### [3.0.1-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.6...reactotron-apisauce@3.0.1-beta.7) (2023-08-25)\n\n### [3.0.1-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.5...reactotron-apisauce@3.0.1-beta.6) (2023-07-24)\n\n### [3.0.1-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.4...reactotron-apisauce@3.0.1-beta.5) (2023-07-17)\n\n### [3.0.1-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.3...reactotron-apisauce@3.0.1-beta.4) (2023-07-06)\n\n### [3.0.1-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.2...reactotron-apisauce@3.0.1-beta.3) (2023-07-03)\n\n### [3.0.1-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.1...reactotron-apisauce@3.0.1-beta.2) (2023-06-15)\n\n### [3.0.1-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-beta.0...reactotron-apisauce@3.0.1-beta.1) (2023-06-15)\n\n### [3.0.1-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.6...reactotron-apisauce@3.0.1-beta.0) (2023-04-06)\n\n### [3.0.1-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.5...reactotron-apisauce@3.0.1-alpha.6) (2023-03-21)\n\n\n### Bug Fixes\n\n* **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n\n### [3.0.1-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.4...reactotron-apisauce@3.0.1-alpha.5) (2023-03-06)\n\n### [3.0.1-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.3...reactotron-apisauce@3.0.1-alpha.4) (2023-03-06)\n\n### [3.0.1-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.2...reactotron-apisauce@3.0.1-alpha.3) (2023-03-06)\n\n### [3.0.1-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.1...reactotron-apisauce@3.0.1-alpha.2) (2023-02-17)\n\n### [3.0.1-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.1-alpha.0...reactotron-apisauce@3.0.1-alpha.1) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n### [3.0.1-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-apisauce@3.0.0...reactotron-apisauce@3.0.1-alpha.0) (2023-02-04)\n\n\n### Features\n\n* **reactotron-apisauce:** add workspace ([134b2ab](https://github.com/infinitered/reactotron/commit/134b2ab58fda2edc5eb5b6501bddb89d058095a1))\n\n\n### Bug Fixes\n\n* **reactotron-apisauce:** add eslint root: false ([fae1ec3](https://github.com/infinitered/reactotron/commit/fae1ec3b82a6e47933553d7363142e35257dae70))\n"
  },
  {
    "path": "lib/reactotron-apisauce/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-apisauce/README.md",
    "content": "# reactotron-apisauce\n\nConverts responses sent via [apisauce](https://github.com/infinitered/apisauce) into\nReactotron.\n\n# Installing\n\n```bash\nnpm i --save-dev reactotron-apisauce\n# or\nyarn add -D reactotron-apisauce\n```\n\n# Configuring\n\nIn the file that you create your Redux store, add these two imports at the top:\n\n```js\n// in your reactotron config (where you setup Reactotron) add this as a plugin.\nimport tronsauce from \"reactotron-apisauce\"\n\n// then plug it in when you configure Reactotron.\n\nReactotron.configure()\n  .use(tronsauce()) // <-- here we go!!!\n  .connect()\n\n// meanwhile, in a different file, when you get a response back\n// from apisauce, pass it `Reactotron.apisauce(myAwesomeResponse)`\nReactotron.apisauce(theResponseWeJustTalkedAbout)\n\n// Apisauce has a feature where you can attach a handler to watch\n// all requests/response flowing through your api.  You can hook this up:\napi.addMonitor(Reactotron.apisauce)\n\n// or if you just wanted to track on 500's\napi.addMonitor((response) => {\n  if (response.problem === \"SERVER_ERROR\") Reactotron.apisauce(response)\n})\n\n// see https://github.com/infinitered/apisauce for more details.\n```\n"
  },
  {
    "path": "lib/reactotron-apisauce/package.json",
    "content": "{\n  \"name\": \"reactotron-apisauce\",\n  \"version\": \"3.0.7\",\n  \"description\": \"A Reactotron plugin for Apisauce.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-apisauce\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-apisauce\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:write\": \"yarn format --write\",\n    \"format:check\": \"yarn format --check\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf dist\",\n    \"lint\": \"eslint src test --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"dependencies\": {\n    \"apisauce\": \"^3.0.1\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/eslint-parser\": \"^7.22.15\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/json-server\": \"^0.14.0\",\n    \"@types/node\": \"^18.18.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"json-server\": \"^0.17.4\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"rimraf\": \"5.0.5\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.[tj]s\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-apisauce/project.json",
    "content": "{\n  \"name\": \"reactotron-apisauce\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-apisauce/src/index.ts",
    "content": "export interface ApisuacePluginOptions {\n  ignoreContentTypes?: any\n}\n\n/**\n * Don't include the response bodies for images by default.\n */\nconst DEFAULT_CONTENT_TYPES_RX = /^(image)\\/.*$/i\n\n/**\n * Sets up the apisauce reactotron plugin\n */\nexport default (options: ApisuacePluginOptions = {}) =>\n  (reactotron) => {\n    // a RegExp to suppess adding the body cuz it costs a lot to serialize\n    const ignoreContentTypes = options.ignoreContentTypes || DEFAULT_CONTENT_TYPES_RX\n\n    // apisauce uses axios, so let's deconstruct that format\n    const convertResponse = (source: any = {}) => {\n      const config = source.config || {}\n\n      // the request\n      const request = {\n        url: config.url,\n        method: config.method,\n        data: config.data || null,\n        headers: config.headers,\n        params: config.params || null,\n      }\n\n      // the response\n      const responseHeaders = source.headers || {}\n      const contentType = responseHeaders[\"content-type\"] || responseHeaders[\"Content-Type\"]\n      const useRealBody =\n        (typeof source.data === \"string\" || typeof source.data === \"object\") &&\n        !ignoreContentTypes.test(contentType || \"\")\n      const body = useRealBody ? source.data : `~~~ skipped ~~~`\n      const response = {\n        body,\n        status: source.status,\n        headers: responseHeaders,\n      }\n\n      // return all 3\n      return [request, response, source.duration]\n    }\n    return {\n      features: {\n        apisauce: (source) => reactotron.apiResponse(...convertResponse(source)),\n      },\n    }\n  }\n"
  },
  {
    "path": "lib/reactotron-apisauce/test/plugin.test.ts",
    "content": "import jsonServer from \"json-server\"\nimport apisauce from \"apisauce\"\nimport createPlugin from \"../src/index\"\n\ndescribe(\"plugin\", () => {\n  it(\"parses responses\", (done) => {\n    // create a json server\n    const port = 42352\n    const server = jsonServer.create()\n\n    // hookup some leet server codez\n    server.get(\"/hey\", (req, res) => {\n      res.json({ a: \"ok\", b: 1 })\n    })\n\n    // start listening\n    const srv = server.listen(port)\n\n    // captured these guys from our fake plugin\n    let request: Record<string, any>\n    let response: Record<string, any>\n    let duration: number\n\n    // create a fake plugin to receive the real plugin's functionality\n    const plugin = createPlugin()({\n      apiResponse: (a, b, c) => {\n        request = a\n        response = b\n        duration = c\n      },\n    })\n\n    // create the api\n    const api = apisauce.create({ baseURL: `http://localhost:${port}` })\n\n    // make the call\n    api\n      .get(\"/hey\")\n      .then(plugin.features.apisauce)\n      .then(() => {\n        // can't seem to deep equals here... it's like we're getting a weird Object()\n        expect(request.url).toEqual(\"/hey\")\n        expect(request.method).toEqual(\"get\")\n        // eslint-disable-next-line dot-notation\n        expect(request.headers[\"Accept\"]).toEqual(\"application/json\")\n        expect(request.data).toBeFalsy()\n        expect(response.body).toEqual({ a: \"ok\", b: 1 })\n        expect(response.status).toEqual(200)\n        expect(response.headers[\"x-powered-by\"]).toEqual(\"Express\")\n        expect(duration).toBeGreaterThan(0)\n\n        srv.close()\n        done()\n      })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-apisauce/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\", \"test\"],\n}\n"
  },
  {
    "path": "lib/reactotron-apisauce/wallaby.js",
    "content": "module.exports = function (wallaby) {\n  return {\n    files: [\"src/**/*.ts\", \"!src/**/*.test.ts\"],\n\n    tests: [\"src/**/*.test.ts\"],\n\n    compilers: {\n      \"**/*.ts\": wallaby.compilers.babel(),\n    },\n\n    env: {\n      type: \"node\",\n      runner: \"node\",\n    },\n\n    testFramework: \"jest\",\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-core-client/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [2.9.9](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.8...reactotron-core-client@2.9.9) (2025-10-06)\n\n### [2.9.8](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.7...reactotron-core-client@2.9.8) (2025-09-16)\n\n### [2.9.7](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.6...reactotron-core-client@2.9.7) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [2.9.6](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.5...reactotron-core-client@2.9.6) (2024-10-30)\n\n\n### Bug Fixes\n\n* BigInts on hermes android were crashing during serialization for reactotron ([#1498](https://github.com/infinitered/reactotron/issues/1498) by [@markrickert](https://github.com/markrickert)) ([3b64afb](https://github.com/infinitered/reactotron/commit/3b64afb23a5f9ee177af8649703b7e139a32db9a)), closes [#1436](https://github.com/infinitered/reactotron/issues/1436)\n\n### [2.9.5](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.4...reactotron-core-client@2.9.5) (2024-10-29)\n\n\n### Bug Fixes\n\n* enable strict mode for TS types ([#1466](https://github.com/infinitered/reactotron/issues/1466)) ([fd8cf47](https://github.com/infinitered/reactotron/commit/fd8cf47cb32d6477f2b24f154a97ad78902c1f74))\n\n### [2.9.4](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.3...reactotron-core-client@2.9.4) (2024-08-26)\n\n### [2.9.3](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.2...reactotron-core-client@2.9.3) (2024-04-01)\n\n### [2.9.2](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.1...reactotron-core-client@2.9.2) (2024-02-14)\n\n## [2.9.1](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.9.0...reactotron-core-client@2.9.1) (2024-02-14)\n\n## [2.9.0](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.13...reactotron-core-client@2.9.0) (2024-02-07)\n\n\n### Features\n\n* **example-app:** Add a LOT of functionality to the demo app ([#1424](https://github.com/infinitered/reactotron/issues/1424)) [skip ci] ([41a539c](https://github.com/infinitered/reactotron/commit/41a539c7e56e968a83ca61b100468f5267865ddd))\n\n\n### Bug Fixes\n\n* **reactotron-core-client:** Fixes `BigInt()` serialization ([#1437](https://github.com/infinitered/reactotron/issues/1437)) ([8f15acd](https://github.com/infinitered/reactotron/commit/8f15acd1475fab3042a6054f6f9114e82235b1af)), closes [#1436](https://github.com/infinitered/reactotron/issues/1436)\n\n### [2.8.13](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.12...reactotron-core-client@2.8.13) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [2.8.12](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11...reactotron-core-client@2.8.12) (2024-01-23)\n\n### [2.8.11](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.17...reactotron-core-client@2.8.11) (2023-12-05)\n\n### [2.8.11-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.16...reactotron-core-client@2.8.11-beta.17) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [2.8.11-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.15...reactotron-core-client@2.8.11-beta.16) (2023-11-06)\n\n### [2.8.11-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.14...reactotron-core-client@2.8.11-beta.15) (2023-10-13)\n\n### [2.8.11-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.13...reactotron-core-client@2.8.11-beta.14) (2023-10-02)\n\n### [2.8.11-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.12...reactotron-core-client@2.8.11-beta.13) (2023-09-27)\n\n### [2.8.11-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.11...reactotron-core-client@2.8.11-beta.12) (2023-09-22)\n\n### [2.8.11-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.10...reactotron-core-client@2.8.11-beta.11) (2023-09-08)\n\n### [2.8.11-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.9...reactotron-core-client@2.8.11-beta.10) (2023-09-07)\n\n### [2.8.11-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.8...reactotron-core-client@2.8.11-beta.9) (2023-08-25)\n\n### [2.8.11-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.7...reactotron-core-client@2.8.11-beta.8) (2023-08-24)\n\n### [2.8.11-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.6...reactotron-core-client@2.8.11-beta.7) (2023-07-24)\n\n### [2.8.11-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.5...reactotron-core-client@2.8.11-beta.6) (2023-07-20)\n\n### [2.8.11-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.4...reactotron-core-client@2.8.11-beta.5) (2023-07-17)\n\n### [2.8.11-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.3...reactotron-core-client@2.8.11-beta.4) (2023-07-06)\n\n### [2.8.11-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.2...reactotron-core-client@2.8.11-beta.3) (2023-07-03)\n\n### [2.8.11-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.1...reactotron-core-client@2.8.11-beta.2) (2023-06-15)\n\n### [2.8.11-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-beta.0...reactotron-core-client@2.8.11-beta.1) (2023-06-15)\n\n### [2.8.11-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.6...reactotron-core-client@2.8.11-beta.0) (2023-04-06)\n\n### [2.8.11-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.5...reactotron-core-client@2.8.11-alpha.6) (2023-03-21)\n\n\n### Bug Fixes\n\n* **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n\n### [2.8.11-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.4...reactotron-core-client@2.8.11-alpha.5) (2023-03-06)\n\n### [2.8.11-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.3...reactotron-core-client@2.8.11-alpha.4) (2023-03-06)\n\n### [2.8.11-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.2...reactotron-core-client@2.8.11-alpha.3) (2023-03-06)\n\n### [2.8.11-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.1...reactotron-core-client@2.8.11-alpha.2) (2023-02-17)\n\n### [2.8.11-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.11-alpha.0...reactotron-core-client@2.8.11-alpha.1) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n\n### Bug Fixes\n\n* **config.yml:** remove unused circleci files ([5d40a4d](https://github.com/infinitered/reactotron/commit/5d40a4ddba0b5ac8759216152000f54158d32669))\n* **nx:** handle clean in task pipeline ([f0d4f77](https://github.com/infinitered/reactotron/commit/f0d4f77c6e4e903836f2b32bd5234f7b611028d1))\n* **reactotron-core-client:** update type output ([f430cdd](https://github.com/infinitered/reactotron/commit/f430cdda70deb3bc02a767c91da39a014b18c631))\n\n### [2.8.11-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-core-client@2.8.10...reactotron-core-client@2.8.11-alpha.0) (2023-01-27)\n\n\n### Features\n\n* **reactotron-core-client:** add project.json ([a95eca1](https://github.com/infinitered/reactotron/commit/a95eca18228f4ceebb740fe60b335760db6bb66a))\n\n\n### Bug Fixes\n\n* **.circleci:** run jest tests in band ([bc9cf48](https://github.com/infinitered/reactotron/commit/bc9cf4806f9eb5dbe6eba3a7dfe918f67cd958f3))\n* **reactotron-core-client:** close clients in createClosingServer ([7655bdf](https://github.com/infinitered/reactotron/commit/7655bdffb7493ac8acf908dd7bb339607ff20990))\n* **reactotron-core-client:** close ws connections in tests ([e7cfc54](https://github.com/infinitered/reactotron/commit/e7cfc54d831fd99b5d9d46bc19bf7ea41c733e4b))\n* **reactotron-core-client:** fix linting, types, remove yarn.lock ([94f99b5](https://github.com/infinitered/reactotron/commit/94f99b54b5073f822681baa53e7ba44cb1ac89f0))\n* **reactotron-core-client:** handle buffer decode ([8f2ad81](https://github.com/infinitered/reactotron/commit/8f2ad81b1b2405d3762bea15682991f7007b93bd))\n* **reactotron-core-client:** update relative path ([496c214](https://github.com/infinitered/reactotron/commit/496c2140bfd3127f536e7673a88006736a53c402))\n"
  },
  {
    "path": "lib/reactotron-core-client/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-core-client/README.md",
    "content": "# reactotron-core-client\n\nThis provides the core functionality of the clients allowing it talk to talk to the server.\n\nIt is used by `reactotron-react-dom` and `reactotron-react-native`.\n\n# Usage\n\n```js\nimport { createClient } from \"reactotron-core-client\"\n\n// setup a reactotron client\nconst client = createClient({\n  // injected in for compatibility\n  createSocket: (path) => new WebSocket(path),\n\n  host: \"localhost\",\n  port: 9090,\n  name: \"I am a client!\",\n\n  // fires when we get connected to a server\n  onConnect: () => console.log(\"hi\"),\n\n  // fires when we get disconnected from the server\n  onDisconnect: () => console.log(\"bye\"),\n\n  // fires when the server is telling us something\n  onCommand: ({ type, payload }) => {\n    switch (type) {\n      case \"server.intro\":\n        const { name, version } = payload\n        break\n\n      case \"state.values.request\":\n        const { path } = payload // the path to the state\n        break\n\n      case \"state.keys.request\":\n        const { path } = payload // the path to the state\n        break\n\n      case \"state.values.subscribe\":\n        const { paths } = payload // string array of state paths\n        break\n\n      case \"state.action.dispatch\":\n        const { action } = payload // an object to be dispatch through the state plugin\n        break\n    }\n    console.log(`I just received a ${type} command`)\n    console.log(payload)\n  },\n})\n\n// connect to the server\nclient.connect()\n\n// send a log message as a string\nclient.send(\"log\", { level: \"debug\", message: \"hello!\" })\n\n// send a log message as a string that's important\nclient.send(\"log\", { level: \"debug\", message: \"hello!\" }, true)\n\n// sending an object log message\nclient.send(\"log\", {\n  level: \"debug\",\n  message: {\n    nested: [1, 2, { hello: \"there\" }],\n    fun: true,\n  },\n})\n\n// send a warning\nclient.send(\"log\", { level: \"warn\", message: \"oops\" })\n\n// send an error with an optional stack trace\nclient.send(\"log\", {\n  level: \"error\",\n  message: \"crap\",\n  stackTrace: [],\n})\n\n// report that an action is complete\nclient.send(\"state.action.complete\", {\n  name: \"LOGIN_REQUEST\",\n  action: {\n    type: \"LOGIN_REQUEST\",\n    email: \"steve@kellock.ca\",\n    password: \"secret...shhh....\",\n  },\n})\n\n// report that values have changed\nclient.send(\"state.values.response\", {\n  path: \"user.givenName\",\n  value: \"Steve\",\n  valid: true,\n})\n\n// list the keys at a given path in state\nclient.send(\"state.keys.response\", {\n  path: \"user\",\n  keys: [\"givenName\", \"familyName\"],\n  valid: true,\n})\n\n// let the server know the state values they're subscribed to have changed\nclient.send(\"state.values.change\", {\n  changes: [\n    { path: \"user.givenName\", value: \"Steve\" },\n    {\n      path: \"user\",\n      value: { givenName: \"Steve\", familyName: \"Kellock\" },\n    },\n  ],\n})\n\n// report any API activity\nclient.send(\"api.response\", {\n  request: {\n    url: \"https://api.example.com/v1/people\",\n    method: \"POST\",\n    data: {\n      user: { givenName: \"Steve\", familyName: \"Kellock\" },\n    },\n    headers: {\n      Accept: \"application/json\",\n      Cookie: \"__ispy=mylittleye; __something=blue\",\n    },\n  },\n  response: {\n    body: { result: \"ok\" },\n    status: 200,\n    headers: {\n      Connection: \"keep-alive\",\n      Server: \"cloudflare-nginx\",\n    },\n  },\n  duration: 150.0,\n})\n\n// send a benchmark report up to the server\nclient.send(\"bench.report\", {\n  title: \"My Fast Algorithmz\",\n  steps: [\n    { title: \"Step 1\", time: 0 },\n    { title: \"Step 2\", time: 123 },\n    { title: \"Step 3\", time: 1024 },\n  ],\n})\n\n// a utility to time things\nconst elapsed = client.startTimer()\n// do something you want to time\nconst ms = elapsed() // the number of ms it took.  ish.\n\n// display a custom event\nclient.display({\n  name: \"MY EVENT\",\n  value: { color: \"green\", vegetable: \"spinach\", variant: \"baby\", salad: true },\n  important: true,\n  preview: \"What's in my appetizer?\",\n})\n```\n\n# Why are we passing createSocket down?\n\n# Messages\n\n### client.intro\n\nThe client sends this message to the server when it first connects. It contains\nall the configuration information used to configure the client.\n\nFor example:\n\n```js\n{\n  \"host\": \"localhost\",                   // the server we're connecting to\n  \"port\": 9090,                          // the server's port\n  \"name\": \"My Fantastic App\",            // the name of our app\n  \"userAgent\": \"Internet Explorer 3.0\",  // the user agent\n  \"reactotronVersion\": \"0.99.1\",         // the version of reactotron\n  \"environment\": \"development\"           // our environment\n}\n```\n\n### server.intro\n\nThe client receives this message from the server once connected. It contains\nconfiguration information used by the server.\n\nRight now the payload is empty because I haven't even created the server!\n\nIt'll probably have things like directory, version... I really don't know yet.\n\n```json\n{\n  \"name\": \"I Am Server.  Roar.\",\n  \"version\": \"0.99.1\"\n}\n```\n\n### log\n\nThe client sends this to the server to log a message, warning or error. For\nwarnings and errors, we pass through an optional stackTrace array.\n\nLog:\n\n```json\n{\n  \"value\": \"hello!\",\n  \"level\": \"debug\"\n}\n```\n\nWarn:\n\n```json\n{\n  \"value\": \"hello!\",\n  \"level\": \"warn\",\n  \"stackTrace\": null\n}\n```\n\nError:\n\n```json\n{\n  \"value\": \"hello!\",\n  \"level\": \"error\",\n  \"stackTrace\": [{ \"lineNo\": 1, \"file\": \"foo.js\" }]\n}\n```\n\nTBD: The actual stack trace format. I've seen a couple of formats unfortunately\nand I need to research what these will look like.\n\nAlso, how is source maps going to factor in?\n\n### image\n\nSend from the client to the server to pass an image. The uri field is required\nand is a `data-uri`. This means, an ordinary http link will work, but as will embedding the image inline.\n\n```json\n{\n  \"uri\": \"http://placekitten.com/g/400/400\",\n  \"preview\": \"placekitten.com!\",\n  \"filename\": \"cat.jpg\",\n  \"width\": 400,\n  \"height\": 400,\n  \"caption\": \"D'awwwwwww\"\n}\n```\n\n### clear\n\nAn instruction sent from the client to the server to clear the history on the server.\n\n### state.action.complete\n\nSent from the client to the server when an action is complete. It's up to you\nto decide what an action is. For Redux, these are actions dispatched. For MobX,\nthese are the results of `spy`.\n\n```json\n{\n  \"name\": \"MY_ACTION\",\n  \"value\": {}\n}\n```\n\n### state.action.dispatch\n\nSent from the client to the server in order to dispatch this action through the\nstate system.\n\n```json\n{\n  \"action\": { \"type\": \"LOGIN_REQUEST\", \"password\": \"s3cr3t@g3ntm@n\" }\n}\n```\n\n### state.values.request\n\nSent from the server to the client to ask for the values of state.\n\n```json\n{\n  \"path\": \"account\"\n}\n```\n\n### state.values.response\n\nSent from the client to the server in response to `state.values.request`.\n\n```json\n{\n  \"path\": \"account\",\n  \"valid\": true,\n  \"value\": {\n    \"givenName\": \"Steve\",\n    \"familyName\": \"Kellock\"\n  }\n}\n```\n\n### state.values.subscribe\n\nSent from the server to the client to ask for notification when something\nin the state changes.\n\n```json\n{\n  \"paths\": [\"account\", \"cart.total\"]\n}\n```\n\n### state.values.change\n\nSent from the client to the server when one of the subscriptions found in\n`state.values.subscribe` has changed.\n\n```json\n{\n  \"changes\": [\n    {\n      \"path\": \"account\",\n      \"value\": {\n        \"email\": \"steve@kellock.ca\"\n      }\n    },\n    {\n      \"path\": \"cart.total\",\n      \"value\": 100.01\n    }\n  ]\n}\n```\n\n### state.keys.request\n\nSent from the server to the client to enumerate the keys inside state.\n\n```json\n{\n  \"path\": \"account\"\n}\n```\n\n### state.keys.response\n\nSent from the client to server in response to `state.keys.request`.\n\n```json\n{\n  \"path\": \"account\",\n  \"valid\": true,\n  \"keys\": [\"givenName\", \"familyName\"]\n}\n```\n\n### api.response\n\nSent from the client to server when an API has finished a request.\n\n```json\n{\n  \"request\": {\n    \"url\": \"https://api.example.com/people/1\",\n    \"method\": \"PUT\",\n    \"data\": {\n      \"firstName\": \"Steve\",\n      \"lastName\": \"Kellock\"\n    },\n    \"headers\": {\n      \"Accept\": \"application/json\",\n      \"Cookie\": \"__ispy=mylittleye; __something=blue\"\n    }\n  },\n  \"response\": {\n    \"body\": {},\n    \"status\": 200,\n    \"headers\": {\n      \"Connection\": \"keep-alive\",\n      \"Server\": \"cloudflare-nginx\"\n    }\n  },\n  \"duration\": 120.0\n}\n```\n\n### bench.report\n\nSent from the client to server when it's time to report some performance details.\n\n```json\n{\n  \"title\": \"My Sorting Algorithm\",\n  \"steps\": [\n    { \"title\": \"start\", \"time\": 0 },\n    { \"title\": \"lookup tables\", \"time\": 123 },\n    { \"title\": \"randomize\", \"time\": 422 }\n  ]\n}\n```\n\n### display\n\nSent from the client to the server to provide a way to show \"custom\" commands.\n\n```json\n{\n  \"name\": \"MY EVENT\",\n  \"value\": {\n    \"color\": \"green\",\n    \"vegetable\": \"spinach\",\n    \"variant\": \"baby\",\n    \"salad\": true\n  },\n  \"image\": {\n    \"uri\": \"http://placekitten.com/g/400/400\"\n  },\n  \"important\": true,\n  \"preview\": \"What's in my appetizer?\"\n}\n```\n\n# Plugins\n\nReactotron is extensible via plugins. You add plugins by calling the `use`\nfunction on the the client.\n\nA plugin looks like this:\n\n```js\nexport default () => (reactotron) => {}\n```\n\n- A function that:\n  - returns a function with 1 parameter (reactotron) that:\n    - returns an object\n\n### The 1st Function\n\nYou use the first function to configure your plugin. If you don't have any\nconfiguration required for your plugin, just leave it empty like above.\n\n### The 2nd function\n\nThe 2nd function gets called with the reactotron object. Among other things,\nit contains (most importantly) a function called `send()`.\n\n### The return object\n\nThis contains hooks into reactotron. By naming the keys certain things, you're\nable to hook into guts to do stuff. Most importantly `onCommand` to receive\nevents from the server and `features` to define extra functions on reactotron.\n\n```js\n// counter-plugin.js\nexport default () => (reactotron) => {\n  let commandCounter = 0\n  return {\n    onCommand: (command) => {\n      commandCounter++\n      if (commandCounter === 69) console.log(\"tee hee\")\n    },\n  }\n}\n```\n\nHere's what a plugin can do.\n\n```js\n{\n  // Fires whenever a command is received from the server.\n  //\n  // command is an object with:\n  //   .type - String - the name of the command\n  //   .payload - anything - maybe null, maybe a string, maybe an object, not a function\n  //                         its whatever the server sent.\n  onCommand: command => {\n    const { type, payload } = command\n  },\n\n  // Fires when we connect to the server.  Will only be called if the plugin\n  // is setup before connecting to the server.\n  onConnect: () => {},\n\n  // Fires when we disconnect from the server.\n  onDisconnect: () => {},\n\n  // fires when the plugin is attached (this only happens once at initialization)\n  onPlugin: reactotron => console.log('I have been attached to ', reactotron),\n\n  // This is an object (not a function).  The keys are strings.  The values are functions.\n  // Every entry in here will become a method on the Reactotron client object.\n  // Collisions are handled on a first-come first-serve basis.\n  //\n  // These names are reserved:\n  //   connect, configure, send, use, options, connected, plugins, and socket.\n  //\n  // Sorry.\n  //\n  // I went with this mixin approach because the interface feels nice from the\n  // calling code point-of-view.\n  features: {\n    // Reactotron.log('hello!')\n    log: (message) => send('log', { level: 'debug', message } ),\n\n    // Reactotron.warn('look out!  falling rocks!')\n    warn: (message) => send('log', { level: 'warn', message } ),\n  }\n\n}\n```\n"
  },
  {
    "path": "lib/reactotron-core-client/package.json",
    "content": "{\n  \"name\": \"reactotron-core-client\",\n  \"version\": \"2.9.9\",\n  \"description\": \"Grants Reactotron clients the ability to talk to a Reactotron server.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-client\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-client\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint src --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@types/ws\": \"^8.5.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"get-port-please\": \"^3.1.1\",\n    \"jest\": \"^29.7.0\",\n    \"jest-environment-node\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"rimraf\": \"5.0.5\",\n    \"ts-jest\": \"^29.1.1\",\n    \"tslib\": \"^2.6.2\",\n    \"typescript\": \"^5.1.3\",\n    \"ws\": \"^8.14.2\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.[tj]s\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  },\n  \"dependencies\": {\n    \"reactotron-core-contract\": \"workspace:*\"\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/project.json",
    "content": "{\n  \"name\": \"reactotron-core-client\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/src/client-options.ts",
    "content": "import type { LifeCycleMethods, PluginCreator } from \"./reactotron-core-client\"\nimport NodeWebSocket from \"ws\"\n\ntype BrowserWebSocket = WebSocket\n\n/**\n * Configuration options for the Reactotron Client.\n */\nexport interface ClientOptions<Client> extends Omit<LifeCycleMethods, \"onCommand\"> {\n  /**\n   * A function which returns a websocket.\n   *\n   * This is over-engineered because we need the ability to create different\n   * types of websockets for React Native, React, and NodeJS.  :|\n   */\n  createSocket?: ((path: string) => BrowserWebSocket) | ((path: string) => NodeWebSocket) | null\n\n  /**\n   * The hostname or ip address of the server.  Default: localhost.\n   */\n  host?: string | null\n\n  /**\n   * The port to connect to the server on.  Default: 9090.\n   */\n  port?: number | null\n\n  /**\n   * The name of this client. Usually the app name.\n   */\n  name?: string\n\n  /**\n   * Will we be connecting via SSL?\n   */\n  secure?: boolean\n\n  /**\n   * A list of plugins.\n   */\n  plugins?: PluginCreator<Client>[]\n\n  /**\n   * Performs safety checks when serializing.  Default: true.\n   *\n   * Will do things like:\n   * - remap falsy values to transport-friendly version\n   * - remove any circular dependencies\n   * - remap functions to something that shows their name\n   *\n   * Hooray for JavaScript!\n   */\n  safeRecursion?: boolean\n\n  /**\n   * Fires when the server sends a command.\n   */\n  onCommand?: ((command: any) => void) | null\n\n  /**\n   * Fires when we connect to the server.\n   */\n  onConnect?: () => void\n\n  /**\n   * Fires when we disconnect from the server.\n   */\n  onDisconnect?: () => void\n\n  /**\n   * The NODE_ENV environment, if any.\n   */\n  environment?: string\n\n  /**\n   * A way for the client libraries to identify themselves.\n   */\n  client?: Record<string, string | number | boolean>\n\n  /**\n   * Save the client id provided by the server\n   */\n  setClientId?: (clientId: string) => Promise<void>\n\n  /**\n   * Get the client id provided by the server\n   */\n  getClientId?: (name: string) => Promise<string>\n\n  proxyHack?: boolean\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/src/index.ts",
    "content": "export * from \"./reactotron-core-client\"\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/api-response.ts",
    "content": "import type { ApiResponsePayload } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"../reactotron-core-client\"\n\n/**\n * Sends API request/response information.\n */\nconst apiResponse = () => (reactotron: ReactotronCore) => {\n  return {\n    features: {\n      apiResponse: (\n        request: ApiResponsePayload[\"request\"],\n        response: ApiResponsePayload[\"response\"],\n        duration: number\n      ) => {\n        const ok =\n          response &&\n          response.status &&\n          typeof response.status === \"number\" &&\n          response.status >= 200 &&\n          response.status <= 299\n        const important = !ok\n        reactotron.send(\"api.response\", { request, response, duration }, important)\n      },\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default apiResponse\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/benchmark.ts",
    "content": "import type { BenchmarkReportPayload } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"../reactotron-core-client\"\n\n/**\n * Runs small high-unscientific benchmarks for you.\n */\nconst benchmark = () => (reactotron: ReactotronCore) => {\n  const { startTimer } = reactotron\n\n  const benchmark = (title: string) => {\n    const steps: BenchmarkReportPayload[\"steps\"] = []\n    const elapsed = startTimer()\n    const step = (stepTitle: string) => {\n      const previousTime = steps.length === 0 ? 0 : (steps[steps.length - 1] as any).time\n      const nextTime = elapsed()\n      steps.push({ title: stepTitle, time: nextTime, delta: nextTime - previousTime })\n    }\n    steps.push({ title, time: 0, delta: 0 })\n    const stop = (stopTitle: string) => {\n      step(stopTitle)\n      reactotron.send(\"benchmark.report\", { title, steps })\n    }\n    return { step, stop, last: stop }\n  }\n\n  return {\n    features: { benchmark },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default benchmark\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/clear.ts",
    "content": "import type { ReactotronCore, Plugin } from \"../reactotron-core-client\"\n\n/**\n * Clears the reactotron server.\n */\nconst clear = () => (reactotron: ReactotronCore) => {\n  return {\n    features: {\n      clear: () => reactotron.send(\"clear\"),\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default clear\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/image.ts",
    "content": "import type { ImagePayload } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"../reactotron-core-client\"\n\n/**\n * Provides an image.\n */\nconst image = () => (reactotron: ReactotronCore) => {\n  return {\n    features: {\n      // expanded just to show the specs\n      image: (payload: ImagePayload) => {\n        const { uri, preview, filename, width, height, caption } = payload\n        return reactotron.send(\"image\", { uri, preview, filename, width, height, caption })\n      },\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default image\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/logger.ts",
    "content": "import type { ReactotronCore, Plugin, InferFeatures } from \"../reactotron-core-client\"\n\n/**\n * Provides 4 features for logging.  log & debug are the same.\n */\nconst logger = () => (reactotron: ReactotronCore) => {\n  return {\n    features: {\n      log: (...args) => {\n        const content = args && args.length === 1 ? args[0] : args\n        reactotron.send(\"log\", { level: \"debug\", message: content }, false)\n      },\n      logImportant: (...args) => {\n        const content = args && args.length === 1 ? args[0] : args\n        reactotron.send(\"log\", { level: \"debug\", message: content }, true)\n      },\n      debug: (message, important = false) =>\n        reactotron.send(\"log\", { level: \"debug\", message }, !!important),\n      warn: (message) => reactotron.send(\"log\", { level: \"warn\", message }, true),\n      error: (message, stack) => reactotron.send(\"log\", { level: \"error\", message, stack }, true),\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default logger\n\nexport type LoggerPlugin = ReturnType<typeof logger>\n\nexport const hasLoggerPlugin = (\n  reactotron: ReactotronCore\n): reactotron is ReactotronCore & InferFeatures<ReactotronCore, ReturnType<typeof logger>> => {\n  return (\n    reactotron &&\n    \"log\" in reactotron &&\n    typeof reactotron.log === \"function\" &&\n    \"logImportant\" in reactotron &&\n    typeof reactotron.logImportant === \"function\" &&\n    \"debug\" in reactotron &&\n    typeof reactotron.debug === \"function\" &&\n    \"warn\" in reactotron &&\n    typeof reactotron.warn === \"function\" &&\n    \"error\" in reactotron &&\n    typeof reactotron.error === \"function\"\n  )\n}\n\nexport const assertHasLoggerPlugin = (\n  reactotron: ReactotronCore\n): asserts reactotron is ReactotronCore &\n  InferFeatures<ReactotronCore, ReturnType<typeof logger>> => {\n  if (!hasLoggerPlugin(reactotron)) {\n    throw new Error(\n      \"This Reactotron client has not had the logger plugin applied to it. Make sure that you add `use(logger())` before adding this plugin.\"\n    )\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/repl.ts",
    "content": "import type { ReplExecuteResponsePayload, ReplLsResponsePayload } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"../reactotron-core-client\"\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type AcceptableRepls = object | Function | string | number\n\nconst repl = () => (reactotron: ReactotronCore) => {\n  const myRepls: { [key: string]: AcceptableRepls } = {}\n  // let currentContext = null\n  return {\n    onCommand: ({ type, payload }) => {\n      if (type.substr(0, 5) !== \"repl.\") return\n\n      switch (type.substr(5)) {\n        case \"ls\":\n          reactotron.send(\"repl.ls.response\", Object.keys(myRepls) as ReplLsResponsePayload)\n          break\n        // case \"cd\":\n        //   const changeTo = myRepls.find(r => r.name === payload)\n        //   if (!changeTo) {\n        //     reactotron.send(\"repl.cd.response\", \"That REPL does not exist\")\n        //     break\n        //   }\n        //   currentContext = payload\n        //   reactotron.send(\"repl.cd.response\", `Change REPL to \"${payload}\"`)\n        //   break\n        case \"execute\":\n          // if (!currentContext) {\n          //   reactotron.send(\n          //     \"repl.execute.response\",\n          //     \"You must first select the REPL to use. Try 'ls'\"\n          //   )\n          //   break\n          // }\n          // const currentRepl = myRepls.find(r => r.name === currentContext)\n          // if (!currentRepl) {\n          //   reactotron.send(\"repl.execute.response\", \"The selected REPL no longer exists.\")\n          //   break\n          // }\n          reactotron.send(\n            \"repl.execute.response\",\n            function () {\n              return eval(payload) // eslint-disable-line no-eval\n            }.call(myRepls) as ReplExecuteResponsePayload\n          )\n          break\n      }\n    },\n    features: {\n      repl: (name: string, value: AcceptableRepls) => {\n        if (!name) {\n          throw new Error(\"You must provide a name for your REPL\")\n        }\n\n        if (myRepls[name]) {\n          throw new Error(\"You are already REPLing an item with that name\")\n        }\n\n        myRepls[name] = value\n      },\n    },\n  } satisfies Plugin<ReactotronCore>\n}\nexport default repl\n"
  },
  {
    "path": "lib/reactotron-core-client/src/plugins/state-responses.ts",
    "content": "import type {\n  StateActionCompletePayload,\n  StateBackupResponsePayload,\n  StateKeysResponsePayload,\n  StateValuesChangePayload,\n  StateValuesResponsePayload,\n} from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin, InferFeatures } from \"../reactotron-core-client\"\n\n/**\n * Provides helper functions for send state responses.\n */\nconst stateResponse = () => (reactotron: ReactotronCore) => {\n  return {\n    features: {\n      stateActionComplete: (\n        name: StateActionCompletePayload[\"name\"],\n        action: StateActionCompletePayload[\"action\"],\n        important = false\n      ) => reactotron.send(\"state.action.complete\", { name, action }, !!important),\n\n      stateValuesResponse: (\n        path: StateValuesResponsePayload[\"path\"],\n        value: StateValuesResponsePayload[\"value\"],\n        valid: StateValuesResponsePayload[\"value\"] = true\n      ) => reactotron.send(\"state.values.response\", { path, value, valid }),\n\n      stateKeysResponse: (\n        path: StateKeysResponsePayload[\"path\"],\n        keys: StateKeysResponsePayload[\"keys\"],\n        valid: StateKeysResponsePayload[\"valid\"] = true\n      ) => reactotron.send(\"state.keys.response\", { path, keys, valid }),\n\n      stateValuesChange: (changes: StateValuesChangePayload[\"changes\"]) =>\n        changes.length > 0 && reactotron.send(\"state.values.change\", { changes }),\n\n      /** sends the state backup over to the server */\n      stateBackupResponse: (state: StateBackupResponsePayload[\"state\"]) =>\n        reactotron.send(\"state.backup.response\", { state }),\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport type StateResponsePlugin = ReturnType<typeof stateResponse>\n\nexport default stateResponse\n\nexport const hasStateResponsePlugin = (\n  reactotron: ReactotronCore\n): reactotron is ReactotronCore & InferFeatures<ReactotronCore, ReturnType<typeof stateResponse>> =>\n  reactotron &&\n  \"stateActionComplete\" in reactotron &&\n  typeof reactotron.stateActionComplete === \"function\" &&\n  \"stateValuesResponse\" in reactotron &&\n  typeof reactotron.stateValuesResponse === \"function\" &&\n  \"stateKeysResponse\" in reactotron &&\n  typeof reactotron.stateKeysResponse === \"function\" &&\n  \"stateValuesChange\" in reactotron &&\n  typeof reactotron.stateValuesChange === \"function\" &&\n  \"stateBackupResponse\" in reactotron &&\n  typeof reactotron.stateBackupResponse === \"function\"\n\nexport const assertHasStateResponsePlugin = (\n  reactotron: ReactotronCore\n): asserts reactotron is ReactotronCore &\n  InferFeatures<ReactotronCore, ReturnType<typeof stateResponse>> => {\n  if (!hasStateResponsePlugin(reactotron)) {\n    throw new Error(\n      \"This Reactotron client has not had the state responses plugin applied to it. Make sure that you add `use(stateResponse())` before adding this plugin.\"\n    )\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/src/reactotron-core-client.ts",
    "content": "import WebSocket from \"ws\"\nimport type { Command, CommandTypeKey, DisplayPayload } from \"reactotron-core-contract\"\nimport validate from \"./validate\"\nimport logger from \"./plugins/logger\"\nimport image from \"./plugins/image\"\nimport benchmark from \"./plugins/benchmark\"\nimport stateResponses from \"./plugins/state-responses\"\nimport apiResponse from \"./plugins/api-response\"\nimport clear from \"./plugins/clear\"\nimport repl from \"./plugins/repl\"\nimport serialize from \"./serialize\"\nimport { start } from \"./stopwatch\"\nimport { ClientOptions } from \"./client-options\"\n\nexport type { ClientOptions }\nexport { assertHasLoggerPlugin } from \"./plugins/logger\"\nexport type { LoggerPlugin } from \"./plugins/logger\"\nexport { assertHasStateResponsePlugin, hasStateResponsePlugin } from \"./plugins/state-responses\"\nexport type { StateResponsePlugin } from \"./plugins/state-responses\"\n\nexport enum ArgType {\n  String = \"string\",\n}\n\nexport interface CustomCommandArg {\n  name: string\n  type: ArgType\n}\n\n// #region Plugin Types\nexport interface LifeCycleMethods {\n  onCommand?: (command: Command) => void\n  onConnect?: () => void\n  onDisconnect?: () => void\n}\n\ntype AnyFunction = (...args: any[]) => any\nexport interface Plugin<Client> extends LifeCycleMethods {\n  features?: {\n    [key: string]: AnyFunction\n  }\n  onPlugin?: (client: Client) => void\n}\n\nexport type PluginCreator<Client> = (client: Client) => Plugin<Client>\n\ninterface DisplayConfig extends DisplayPayload {\n  important?: boolean\n}\n\ninterface ArgTypeMap {\n  [ArgType.String]: string\n}\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n  ? I\n  : never\n\nexport type CustomCommandArgs<Args extends CustomCommandArg[]> = UnionToIntersection<\n  Args extends Array<infer U>\n    ? U extends CustomCommandArg\n      ? { [K in U as U[\"name\"]]: ArgTypeMap[U[\"type\"]] }\n      : never\n    : never\n>\n\nexport interface CustomCommand<Args extends CustomCommandArg[] = CustomCommandArg[]> {\n  id?: number\n  command: string\n  handler: (args?: CustomCommandArgs<Args>) => void\n\n  title?: string\n  description?: string\n  args?: Args\n}\n\ntype ExtractFeatures<T> = T extends { features: infer U } ? U : never\ntype PluginFeatures<Client, P extends PluginCreator<Client>> = ExtractFeatures<ReturnType<P>>\n\nexport type InferFeaturesFromPlugins<\n  Client,\n  Plugins extends PluginCreator<Client>[],\n> = UnionToIntersection<PluginFeatures<Client, Plugins[number]>>\n\ntype InferFeaturesFromPlugin<Client, P extends PluginCreator<Client>> = UnionToIntersection<\n  PluginFeatures<Client, P>\n>\n\nexport interface ReactotronCore {\n  options: ClientOptions<this>\n  plugins: Plugin<this>[]\n  startTimer: () => () => number\n  close: () => void\n  send: <Type extends CommandTypeKey, Payload extends Command<Type>[\"payload\"]>(\n    type: Type,\n    payload?: Payload,\n    important?: boolean\n  ) => void\n  display: (config: DisplayConfig) => void\n  onCustomCommand: <Args extends CustomCommandArg[] = Exclude<CustomCommand[\"args\"], undefined>>(\n    config: CustomCommand<Args>\n  ) => () => void | ((config: string, optHandler?: () => void) => () => void)\n  /**\n   * Set the configuration options.\n   */\n  configure: (\n    options: ClientOptions<this>\n  ) => ClientOptions<this>[\"plugins\"] extends PluginCreator<this>[]\n    ? this & InferFeaturesFromPlugins<this, ClientOptions<this>[\"plugins\"]>\n    : this\n\n  use: <P extends PluginCreator<this>>(pluginCreator: P) => this & InferFeaturesFromPlugin<this, P>\n\n  connect: () => this\n}\n\nexport type InferFeatures<\n  Client = ReactotronCore,\n  PC extends PluginCreator<Client> = PluginCreator<Client>,\n> = PC extends (client: Client) => { features: infer U } ? U : never\n\nexport const corePlugins = [\n  image(),\n  logger(),\n  benchmark(),\n  stateResponses(),\n  apiResponse(),\n  clear(),\n  repl(),\n] satisfies PluginCreator<ReactotronCore>[]\n\nexport type InferPluginsFromCreators<Client, PC extends PluginCreator<Client>[]> =\n  PC extends Array<infer P extends PluginCreator<Client>> ? ReturnType<P>[] : never\n// #endregion\n\ntype CorePluginFeatures = InferFeaturesFromPlugins<ReactotronCore, typeof corePlugins>\n\nexport interface Reactotron extends ReactotronCore, CorePluginFeatures {}\n\n// these are not for you.\nconst reservedFeatures = [\n  \"configure\",\n  \"connect\",\n  \"connected\",\n  \"options\",\n  \"plugins\",\n  \"send\",\n  \"socket\",\n  \"startTimer\",\n  \"use\",\n] as const\ntype ReservedKeys = (typeof reservedFeatures)[number]\nconst isReservedFeature = (value: string): value is ReservedKeys =>\n  reservedFeatures.some((res) => res === value)\n\nfunction emptyPromise() {\n  return Promise.resolve(\"\")\n}\n\nexport class ReactotronImpl\n  implements Omit<ReactotronCore, \"options\" | \"plugins\" | \"configure\" | \"connect\" | \"use\">\n{\n  // the configuration options\n  options!: ClientOptions<ReactotronCore>\n\n  /**\n   * Are we connected to a server?\n   */\n  connected = false\n\n  /**\n   * The socket we're using.\n   */\n  socket: WebSocket = null as never\n\n  /**\n   * Available plugins.\n   */\n  plugins: Plugin<this>[] = []\n\n  /**\n   * Messages that need to be sent.\n   */\n  sendQueue: string[] = []\n\n  /**\n   * Are we ready to start communicating?\n   */\n  isReady = false\n\n  /**\n   * The last time we sent a message.\n   */\n  lastMessageDate = new Date()\n\n  /**\n   * The registered custom commands\n   */\n  customCommands: CustomCommand[] = []\n\n  /**\n   * The current ID for custom commands\n   */\n  customCommandLatestId = 1\n\n  /**\n   * Starts a timer and returns a function you can call to stop it and return the elapsed time.\n   */\n  startTimer = () => start()\n\n  /**\n   * Set the configuration options.\n   */\n  configure(\n    options: ClientOptions<this>\n  ): ClientOptions<this>[\"plugins\"] extends PluginCreator<this>[]\n    ? this & InferFeaturesFromPlugins<this, ClientOptions<this>[\"plugins\"]>\n    : this {\n    // options get merged & validated before getting set\n    const newOptions = Object.assign(\n      {\n        createSocket: null as never,\n        host: \"localhost\",\n        port: 9090,\n        name: \"reactotron-core-client\",\n        secure: false,\n        plugins: corePlugins,\n        safeRecursion: true,\n        onCommand: () => null,\n        onConnect: () => null,\n        onDisconnect: () => null,\n      } satisfies ClientOptions<ReactotronCore>,\n      this.options,\n      options\n    )\n    validate(newOptions)\n    this.options = newOptions\n\n    // if we have plugins, let's add them here\n    if (Array.isArray(this.options.plugins)) {\n      this.options.plugins.forEach((p) => this.use(p as never))\n    }\n\n    return this as this &\n      InferFeaturesFromPlugins<this, Exclude<ClientOptions<this>[\"plugins\"], undefined>>\n  }\n\n  close() {\n    this.connected = false\n    this.socket && this.socket.close && this.socket.close()\n  }\n\n  /**\n   * Connect to the Reactotron server.\n   */\n  connect() {\n    this.connected = true\n    const {\n      createSocket,\n      secure,\n      host,\n      environment,\n      port,\n      name,\n      client = {},\n      getClientId,\n    } = this.options\n    const { onCommand, onConnect, onDisconnect } = this.options\n\n    // establish a connection to the server\n    const protocol = secure ? \"wss\" : \"ws\"\n    const socket = createSocket!(`${protocol}://${host}:${port}`)\n\n    // fires when we talk to the server\n    const onOpen = () => {\n      // fire our optional onConnect handler\n      onConnect && onConnect()\n\n      // trigger our plugins onConnect\n      this.plugins.forEach((p) => p.onConnect && p.onConnect())\n\n      const getClientIdPromise = getClientId || emptyPromise\n\n      getClientIdPromise(name!).then((clientId) => {\n        this.isReady = true\n        // introduce ourselves\n        this.send(\"client.intro\", {\n          environment,\n          ...client,\n          name: name!,\n          clientId,\n          reactotronCoreClientVersion: \"REACTOTRON_CORE_CLIENT_VERSION\",\n        })\n\n        // flush the send queue\n        while (this.sendQueue.length > 0) {\n          const h = this.sendQueue[0]\n          this.sendQueue = this.sendQueue.slice(1)\n          this.socket.send(h)\n        }\n      })\n    }\n\n    // fires when we disconnect\n    const onClose = () => {\n      this.isReady = false\n      // trigger our disconnect handler\n      onDisconnect && onDisconnect()\n\n      // as well as the plugin's onDisconnect\n      this.plugins.forEach((p) => p.onDisconnect && p.onDisconnect())\n    }\n\n    const decodeCommandData = (data: unknown) => {\n      if (typeof data === \"string\") {\n        return JSON.parse(data)\n      }\n\n      if (Buffer.isBuffer(data)) {\n        return JSON.parse(data.toString())\n      }\n\n      return data\n    }\n\n    // fires when we receive a command, just forward it off\n    const onMessage = (data: any) => {\n      const command = decodeCommandData(data)\n      // trigger our own command handler\n      onCommand && onCommand(command)\n\n      // trigger our plugins onCommand\n      this.plugins.forEach((p) => p.onCommand && p.onCommand(command))\n\n      // trigger our registered custom commands\n      if (command.type === \"custom\") {\n        this.customCommands\n          .filter((cc) => {\n            if (typeof command.payload === \"string\") {\n              return cc.command === command.payload\n            }\n\n            return cc.command === command.payload.command\n          })\n          .forEach((cc) =>\n            cc.handler(typeof command.payload === \"object\" ? command.payload.args : undefined)\n          )\n      } else if (command.type === \"setClientId\") {\n        this.options.setClientId && this.options.setClientId(command.payload)\n      }\n    }\n\n    // this is ws style from require('ws') on node js\n    if (\"on\" in socket && socket.on!) {\n      const nodeWebSocket = socket as WebSocket\n      nodeWebSocket.on(\"open\", onOpen)\n      nodeWebSocket.on(\"close\", onClose)\n      nodeWebSocket.on(\"message\", onMessage)\n      // assign the socket to the instance\n      this.socket = socket\n    } else {\n      // this is a browser\n      const browserWebSocket = socket as WebSocket\n      socket.onopen = onOpen\n      socket.onclose = onClose\n      socket.onmessage = (evt) => onMessage(evt.data)\n      // assign the socket to the instance\n      this.socket = browserWebSocket\n    }\n\n    return this\n  }\n\n  /**\n   * Sends a command to the server\n   */\n  send = <Type extends CommandTypeKey, Payload extends Command<Type>[\"payload\"]>(\n    type: Type,\n    payload?: Payload,\n    important?: boolean\n  ) => {\n    // set the timing info\n    const date = new Date()\n    let deltaTime = date.getTime() - this.lastMessageDate.getTime()\n    // glitches in the matrix\n    if (deltaTime < 0) {\n      deltaTime = 0\n    }\n    this.lastMessageDate = date\n\n    const fullMessage = {\n      type,\n      payload,\n      important: !!important,\n      date: date.toISOString(),\n      deltaTime,\n    }\n\n    const serializedMessage = serialize(fullMessage, this.options.proxyHack)\n\n    if (this.isReady) {\n      // send this command\n      try {\n        this.socket.send(serializedMessage)\n      } catch {\n        this.isReady = false\n        console.log(\"An error occurred communicating with reactotron. Please reload your app\")\n      }\n    } else {\n      // queue it up until we can connect\n      this.sendQueue.push(serializedMessage)\n    }\n  }\n\n  /**\n   * Sends a custom command to the server to displays nicely.\n   */\n  display(config: DisplayConfig) {\n    const { name, value, preview, image: img, important = false } = config\n    const payload: DisplayPayload = {\n      name,\n      value: value || undefined,\n      preview: preview || undefined,\n      image: img || undefined,\n    }\n    this.send(\"display\", payload, important)\n  }\n\n  /**\n   * Client libraries can hijack this to report errors.\n   */\n  reportError(this: any, error: Error) {\n    this.error(error)\n  }\n\n  /**\n   * Adds a plugin to the system\n   */\n  use(pluginCreator: PluginCreator<this>): this & PluginFeatures<this, typeof pluginCreator> {\n    // we're supposed to be given a function\n    if (typeof pluginCreator !== \"function\") {\n      throw new Error(\"plugins must be a function\")\n    }\n\n    // execute it immediately passing the send function\n    const plugin = pluginCreator.bind(this)(this) as ReturnType<typeof pluginCreator>\n\n    // ensure we get an Object-like creature back\n    if (typeof plugin !== \"object\") {\n      throw new Error(\"plugins must return an object\")\n    }\n\n    // do we have features to mixin?\n    if (plugin.features) {\n      // validate\n      if (typeof plugin.features !== \"object\") {\n        throw new Error(\"features must be an object\")\n      }\n\n      // here's how we're going to inject these in\n      const inject = (key: string) => {\n        // grab the function\n        const featureFunction = plugin.features![key]\n\n        // only functions may pass\n        if (typeof featureFunction !== \"function\") {\n          throw new Error(`feature ${key} is not a function`)\n        }\n\n        // ditch reserved names\n        if (isReservedFeature(key)) {\n          throw new Error(`feature ${key} is a reserved name`)\n        }\n\n        // ok, let's glue it up... and lose all respect from elite JS champions.\n        this[key] = featureFunction\n      }\n\n      // let's inject\n      Object.keys(plugin.features).forEach((key) => inject(key))\n    }\n\n    // add it to the list\n    this.plugins.push(plugin)\n\n    // call the plugins onPlugin\n    plugin.onPlugin && typeof plugin.onPlugin === \"function\" && plugin.onPlugin.bind(this)(this)\n\n    // chain-friendly\n    return this as this & PluginFeatures<this, typeof pluginCreator>\n  }\n\n  onCustomCommand(config: CustomCommand | string, optHandler?: () => void): () => void {\n    let command: string\n    let handler: () => void\n    let title!: string\n    let description!: string\n    let args!: CustomCommandArg[]\n\n    if (typeof config === \"string\") {\n      command = config\n      handler = optHandler!\n    } else {\n      command = config.command\n      handler = config.handler\n\n      title = config.title!\n      description = config.description!\n      args = config.args!\n    }\n\n    // Validations\n    // Make sure there is a command\n    if (!command) {\n      throw new Error(\"A command is required\")\n    }\n\n    // Make sure there is a handler\n    if (!handler) {\n      throw new Error(`A handler is required for command \"${command}\"`)\n    }\n\n    // Make sure the command doesn't already exist\n    const existingCommands = this.customCommands.filter((cc) => cc.command === command)\n    if (existingCommands.length > 0) {\n      existingCommands.forEach((command) => {\n        this.customCommands = this.customCommands.filter((cc) => cc.id !== command.id)\n\n        this.send(\"customCommand.unregister\", {\n          id: command.id!,\n          command: command.command,\n        })\n      })\n    }\n\n    if (args) {\n      const argNames = [] as string[]\n\n      args.forEach((arg) => {\n        if (!arg.name) {\n          throw new Error(`A arg on the command \"${command}\" is missing a name`)\n        }\n\n        if (argNames.indexOf(arg.name) > -1) {\n          throw new Error(\n            `A arg with the name \"${arg.name}\" already exists in the command \"${command}\"`\n          )\n        }\n\n        argNames.push(arg.name)\n      })\n    }\n\n    // Create this command handlers object\n    const customHandler: CustomCommand = {\n      id: this.customCommandLatestId,\n      command,\n      handler,\n      title,\n      description,\n      args,\n    }\n\n    // Increment our id counter\n    this.customCommandLatestId += 1\n\n    // Add it to our array\n    this.customCommands.push(customHandler)\n\n    this.send(\"customCommand.register\", {\n      id: customHandler.id!,\n      command: customHandler.command,\n      title: customHandler.title,\n      description: customHandler.description,\n      args: customHandler.args,\n    })\n\n    return () => {\n      this.customCommands = this.customCommands.filter((cc) => cc.id !== customHandler.id)\n\n      this.send(\"customCommand.unregister\", {\n        id: customHandler.id!,\n        command: customHandler.command,\n      })\n    }\n  }\n}\n\n// convenience factory function\nexport function createClient<Client extends ReactotronCore = ReactotronCore>(\n  options?: ClientOptions<Client>\n) {\n  const client = new ReactotronImpl()\n  return client.configure(options as never) as unknown as Client\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/src/serialize.ts",
    "content": "// JSON.stringify() doesn't support circular dependencies or keeping\n// falsy values.  This does.\n//\n// Mostly adapted from https://github.com/isaacs/json-stringify-safe\n\n// replacement tokens\nconst UNDEFINED = \"~~~ undefined ~~~\"\nconst NULL = `~~~ null ~~~`\nconst FALSE = `~~~ false ~~~`\nconst ZERO = `~~~ zero ~~~`\nconst EMPTY_STRING = `~~~ empty string ~~~`\nconst CIRCULAR = \"~~~ Circular Reference ~~~\"\nconst ANONYMOUS = \"~~~ anonymous function ~~~\"\nconst INFINITY = \"~~~ Infinity ~~~\"\nconst NEGATIVE_INFINITY = \"~~~ -Infinity ~~~\"\n// const NAN = '~~~ NaN ~~~'\n\n/**\n * Fix BigInt serialization\n * BigInts are not supported by JSON.stringify in Hermes android.\n * This is a workaround.\n * https://github.com/GoogleChromeLabs/jsbi/issues/30#issuecomment-953187833\n * https://github.com/infinitered/reactotron/issues/1436\n */\ndeclare global {\n  interface BigInt {\n    toJSON(): string\n  }\n}\nif (typeof BigInt !== \"undefined\") {\n  // eslint-disable-next-line no-extend-native\n  BigInt.prototype.toJSON = function () {\n    return this.toString()\n  }\n}\n\n/**\n * Attempts to give a name to a function.\n *\n * @param {Function} fn - The function to name.\n */\nfunction getFunctionName(fn: any): string {\n  const n = fn.name\n  if (n === null || n === undefined || n === \"\") {\n    return ANONYMOUS\n  } else {\n    return `~~~ ${n}() ~~~`\n  }\n}\n\n/**\n * Serializes an object to JSON.\n *\n *  @param {any} source - The victim.\n */\nfunction serialize(source: any, proxyHack = false) {\n  const stack = [] as any[]\n  const keys = [] as string[]\n\n  /**\n   * Replace this object node with something potentially custom.\n   *\n   * @param {*} key - The key currently visited.\n   * @param {*} value - The value to replace.\n   */\n  function serializer(replacer) {\n    return function (this: any, key: string, value: any) {\n      // slam dunks\n      if (value === true) return true\n\n      // weird stuff\n      // if (Object.is(value, NaN)) return NAN // OK, apparently this is hard... leaving out for now\n      if (value === Infinity) return INFINITY\n      if (value === -Infinity) return NEGATIVE_INFINITY\n      if (value === 0) return ZERO\n\n      // classic javascript\n      if (value === undefined) return UNDEFINED\n      if (value === null) return NULL\n      if (value === false) return FALSE\n\n      // head shakers\n      if (value === -0) return ZERO // eslint-disable-line\n      if (value === \"\") return EMPTY_STRING\n\n      if (proxyHack && typeof value === \"object\" && value.nativeEvent) {\n        return value.nativeEvent\n      }\n\n      // known types that have easy resolving\n      switch (typeof value) {\n        case \"string\":\n          return value\n        case \"number\":\n          return value\n        case \"bigint\":\n          return value.toString()\n        case \"function\":\n          return getFunctionName(value)\n      }\n\n      // Tough things to crack\n      // If we have an iterator but are not an array (because arrays are easily seralizeable already)...\n      if (value[Symbol.iterator] && !Array.isArray(value)) {\n        // Convert to an array!\n        return [...value]\n      }\n\n      if (stack.length > 0) {\n        // check for prior existance\n        const thisPos = stack.indexOf(this)\n        ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n        ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n        if (~stack.indexOf(value)) value = CIRCULAR\n      } else {\n        stack.push(value)\n      }\n\n      return replacer == null ? value : replacer.call(this, key, value)\n    }\n  }\n  return JSON.stringify(source, serializer(null))\n}\n\nexport default serialize\n"
  },
  {
    "path": "lib/reactotron-core-client/src/stopwatch.ts",
    "content": "/// <reference types=\"node\" />\n\ndeclare const global: any\n\nconst hasHirezNodeTimer =\n  false &&\n  typeof process === \"object\" &&\n  process &&\n  process.hrtime &&\n  typeof process.hrtime === \"function\"\n\n// the default timer\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst defaultPerformanceNow = (started?: number) => Date.now()\n\n// try to find the browser-based performance timer\nconst nativePerformance =\n  typeof window !== \"undefined\" &&\n  window &&\n  (window.performance || (window as any).msPerformance || (window as any).webkitPerformance)\n\n// the function we're trying to assign\nlet performanceNow = defaultPerformanceNow\n\n// accepts an already started time and returns the number of milliseconds\nlet delta = (started: number) => performanceNow() - started\n\nif (hasHirezNodeTimer) {\n  performanceNow = process.hrtime as any\n  delta = (started) => performanceNow(started)[1] / 1000000\n} else if (global.nativePerformanceNow) {\n  // react native 47\n  performanceNow = global.nativePerformanceNow\n} else if (nativePerformance) {\n  // browsers + safely check for react native < 47\n  performanceNow = () => nativePerformance.now && nativePerformance.now()\n}\n\n/**\n * Starts a lame, low-res timer.  Returns a function which when invoked,\n * gives you the number of milliseconds since passing.  ish.\n */\nexport const start = () => {\n  //  record the start time\n  const started = performanceNow()\n  return () => delta(started)\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/src/validate.ts",
    "content": "import type { ClientOptions } from \"./client-options\"\nimport type { ReactotronCore } from \"./reactotron-core-client\"\n\nconst isCreateSocketValid = (\n  createSocket: unknown\n): createSocket is ClientOptions<ReactotronCore>[\"createSocket\"] =>\n  typeof createSocket !== \"undefined\" && createSocket !== null\nconst isHostValid = (host: string): boolean =>\n  (typeof host === \"string\" && host && host !== \"\") as boolean\nconst isPortValid = (port: number): boolean =>\n  typeof port === \"number\" && port >= 1 && port <= 65535\nconst onCommandValid = (fn: (cmd: string) => any) => typeof fn === \"function\"\n\n/**\n * Ensures the options are sane to run this baby.  Throw if not.  These\n * are basically sanity checks.\n */\nconst validate = (options: ClientOptions<ReactotronCore>) => {\n  const { createSocket, host, port, onCommand } = options\n\n  if (!isCreateSocketValid(createSocket)) {\n    throw new Error(\"invalid createSocket function\")\n  }\n\n  if (!isHostValid(host!)) {\n    throw new Error(\"invalid host\")\n  }\n\n  if (!isPortValid(port!)) {\n    throw new Error(\"invalid port\")\n  }\n\n  if (!onCommandValid(onCommand!)) {\n    throw new Error(\"invalid onCommand handler\")\n  }\n}\n\nexport default validate\n"
  },
  {
    "path": "lib/reactotron-core-client/test/api-response.test.ts",
    "content": "import { createClient, corePlugins } from \"../src/reactotron-core-client\"\nimport plugin from \"../src/plugins/state-responses\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path: string) => new WebSocket(path)\n\ntest(\"stateActionComplete\", () => {\n  const options = { createSocket }\n  const client = createClient(options).use(plugin())\n  let type\n  let name\n  let action\n  client.send = (x: string, y: any) => {\n    type = x\n    name = y.name\n    action = y.action\n  }\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.stateActionComplete).toBe(\"function\")\n\n  client.stateActionComplete(\"name\", { action: 123 })\n\n  expect(type).toBe(\"state.action.complete\")\n  expect(name).toBe(\"name\")\n  expect(action).toEqual({ action: 123 })\n})\n\ntest(\"stateValuesResponse\", () => {\n  const client = createClient({ createSocket }).use(plugin())\n  let type\n  let path\n  let value\n  let valid = true\n  client.send = (x: string, y: any) => {\n    type = x\n    path = y.path\n    value = y.value\n    valid = y.valid\n  }\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.stateValuesResponse).toBe(\"function\")\n\n  client.stateValuesResponse(\"user.password\", \"password\", false)\n\n  expect(type).toBe(\"state.values.response\")\n  expect(path).toBe(\"user.password\")\n  expect(value).toBe(\"password\")\n  expect(valid).toBeFalsy()\n})\n\ntest(\"stateKeysResponse\", () => {\n  const client = createClient({ createSocket }).use(plugin())\n  let type\n  let path\n  let keys\n  let valid = true\n  client.send = (x: string, y: any) => {\n    type = x\n    path = y.path\n    keys = y.keys\n    valid = y.valid\n  }\n\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.stateKeysResponse).toBe(\"function\")\n\n  client.stateKeysResponse(\"user\", [\"name\", \"password\"], false)\n\n  expect(type).toBe(\"state.keys.response\")\n  expect(path).toBe(\"user\")\n  expect(keys).toEqual([\"name\", \"password\"])\n  expect(valid).toBeFalsy()\n})\n\ntest(\"stateValuesChange\", () => {\n  const client: any = createClient({ createSocket })\n  let type\n  let changes\n  client.send = (x: string, y: any) => {\n    type = x\n    changes = y.changes\n  }\n  client.use(plugin())\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.stateValuesChange).toBe(\"function\")\n\n  client.stateValuesChange([\n    { path: \"a\", value: 1 },\n    { path: \"b\", value: 2 },\n  ])\n\n  expect(type).toBe(\"state.values.change\")\n  expect(changes).toEqual([\n    { path: \"a\", value: 1 },\n    { path: \"b\", value: 2 },\n  ])\n})\n\ntest(\"stateBackupResponse\", () => {\n  const client: any = createClient({ createSocket })\n  let type\n  let state\n  client.send = (x: string, y: any) => {\n    type = x\n    state = y.state\n  }\n  client.use(plugin())\n\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.stateBackupResponse).toBe(\"function\")\n\n  client.stateBackupResponse({ x: [1, 2, 3] })\n\n  expect(type).toBe(\"state.backup.response\")\n  expect(state).toEqual({ x: [1, 2, 3] })\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/configure.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport { WebSocket } from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"has defaults\", () => {\n  const client = createClient({ createSocket }) as any\n  expect(client.options.host).toBe(\"localhost\")\n  expect(client.options.port).toBe(9090)\n  expect(client.options.name).toBe(\"reactotron-core-client\")\n})\n\ntest(\"options can be overridden\", () => {\n  const client = createClient({ createSocket, host: \"hey\", port: 1 }) as any\n  expect(client.options.host).toBe(\"hey\")\n  expect(client.options.port).toBe(1)\n})\n\ntest(\"io is required\", () => {\n  expect(() => createClient()).toThrow()\n  expect(() => createClient({})).toThrow()\n  expect(() => createClient({ createSocket: null })).toThrow()\n})\n\ntest(\"onCommand is required\", () => {\n  expect(() => createClient({ createSocket, onCommand: undefined })).toThrow()\n  expect(() => createClient({ createSocket, onCommand: null })).toThrow()\n})\n\ntest(\"host is required\", () => {\n  expect(() => createClient({ createSocket, host: undefined })).toThrow()\n  expect(() => createClient({ createSocket, host: null })).toThrow()\n  expect(() => createClient({ createSocket, host: \"\" })).toThrow()\n})\n\ntest(\"port is required\", () => {\n  expect(() => createClient({ createSocket, port: null })).toThrow()\n  expect(() => createClient({ createSocket, port: undefined })).toThrow()\n  expect(() => createClient({ createSocket, port: 0 })).toThrow()\n  expect(() => createClient({ createSocket, port: 65536 })).toThrow()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/connect.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\nimport { createClosingServer } from \"./create-closing-server\"\n\nconst createSocket = (path) => new WebSocket(path)\n\nlet port: number\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n})\n\ntest(\"starts unconnected\", async () => {\n  const client = createClient({ createSocket, port }) as any\n\n  expect(client.connected).toBe(false)\n})\n\ntest(\"connect returns itself\", (done) => {\n  createClosingServer(port, done)\n  const client = createClient({ createSocket, port })\n  const connectClient = client.connect()\n\n  expect(connectClient).toBe(client)\n})\n\ntest(\"set connected status when connecting\", (done) => {\n  createClosingServer(port, done)\n  const client = createClient({ createSocket, port }) as any\n  client.connect()\n\n  expect(client.connected).toBe(true)\n})\n\ntest(\"builds a socket\", (done) => {\n  createClosingServer(port, done)\n  const client = createClient({ createSocket, port }) as any\n  client.connect()\n\n  expect(client.socket).toBeTruthy()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/create-closing-server.ts",
    "content": "import WebSocket from \"ws\"\n\n/**\n * A server which shuts down after somebody connects.\n *\n * @param port The port to listen on\n * @param done Calls after we close.\n */\nexport function createClosingServer(port: number, onDone?: () => void) {\n  const wss = new WebSocket.Server({ port })\n  wss.on(\"connection\", () => {\n    onDone && onDone()\n    wss.clients.forEach((client) => {\n      client.close()\n    })\n    wss.close()\n  })\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/test/fixtures/large.js",
    "content": "export default [\n  {\n    id: 200347864,\n    name: \"AM General\",\n    niceName: \"am-general\",\n    models: [\n      {\n        id: \"AM_General_Hummer\",\n        name: \"Hummer\",\n        niceName: \"hummer\",\n      },\n    ],\n  },\n  {\n    id: 200002038,\n    name: \"Acura\",\n    niceName: \"acura\",\n    models: [\n      {\n        id: \"Acura_CL\",\n        name: \"CL\",\n        niceName: \"cl\",\n      },\n      {\n        id: \"Acura_ILX\",\n        name: \"ILX\",\n        niceName: \"ilx\",\n      },\n      {\n        id: \"Acura_ILX_Hybrid\",\n        name: \"ILX Hybrid\",\n        niceName: \"ilx-hybrid\",\n      },\n      {\n        id: \"Acura_Integra\",\n        name: \"Integra\",\n        niceName: \"integra\",\n      },\n      {\n        id: \"Acura_Legend\",\n        name: \"Legend\",\n        niceName: \"legend\",\n      },\n      {\n        id: \"Acura_MDX\",\n        name: \"MDX\",\n        niceName: \"mdx\",\n      },\n      {\n        id: \"Acura_NSX\",\n        name: \"NSX\",\n        niceName: \"nsx\",\n      },\n      {\n        id: \"Acura_RDX\",\n        name: \"RDX\",\n        niceName: \"rdx\",\n      },\n      {\n        id: \"Acura_RL\",\n        name: \"RL\",\n        niceName: \"rl\",\n      },\n      {\n        id: \"Acura_RLX\",\n        name: \"RLX\",\n        niceName: \"rlx\",\n      },\n      {\n        id: \"Acura_RSX\",\n        name: \"RSX\",\n        niceName: \"rsx\",\n      },\n      {\n        id: \"Acura_SLX\",\n        name: \"SLX\",\n        niceName: \"slx\",\n      },\n      {\n        id: \"Acura_TL\",\n        name: \"TL\",\n        niceName: \"tl\",\n      },\n      {\n        id: \"Acura_TLX\",\n        name: \"TLX\",\n        niceName: \"tlx\",\n      },\n      {\n        id: \"Acura_TSX\",\n        name: \"TSX\",\n        niceName: \"tsx\",\n      },\n      {\n        id: \"Acura_TSX_Sport_Wagon\",\n        name: \"TSX Sport Wagon\",\n        niceName: \"tsx-sport-wagon\",\n      },\n      {\n        id: \"Acura_Vigor\",\n        name: \"Vigor\",\n        niceName: \"vigor\",\n      },\n      {\n        id: \"Acura_ZDX\",\n        name: \"ZDX\",\n        niceName: \"zdx\",\n      },\n    ],\n  },\n  {\n    id: 200464140,\n    name: \"Alfa Romeo\",\n    niceName: \"alfa-romeo\",\n    models: [\n      {\n        id: \"Alfa_Romeo_4C\",\n        name: \"4C\",\n        niceName: \"4c\",\n      },\n      {\n        id: \"Alfa_Romeo_4C_Spider\",\n        name: \"4C Spider\",\n        niceName: \"4c-spider\",\n      },\n      {\n        id: \"Alfa_Romeo_Giulia\",\n        name: \"Giulia\",\n        niceName: \"giulia\",\n      },\n    ],\n  },\n  {\n    id: 200001769,\n    name: \"Aston Martin\",\n    niceName: \"aston-martin\",\n    models: [\n      {\n        id: \"Aston_Martin_DB11\",\n        name: \"DB11\",\n        niceName: \"db11\",\n      },\n      {\n        id: \"Aston_Martin_DB7\",\n        name: \"DB7\",\n        niceName: \"db7\",\n      },\n      {\n        id: \"Aston_Martin_DB9\",\n        name: \"DB9\",\n        niceName: \"db9\",\n      },\n      {\n        id: \"Aston_Martin_DB9_GT\",\n        name: \"DB9 GT\",\n        niceName: \"db9-gt\",\n      },\n      {\n        id: \"Aston_Martin_DBS\",\n        name: \"DBS\",\n        niceName: \"dbs\",\n      },\n      {\n        id: \"Aston_Martin_Rapide\",\n        name: \"Rapide\",\n        niceName: \"rapide\",\n      },\n      {\n        id: \"Aston_Martin_Rapide_S\",\n        name: \"Rapide S\",\n        niceName: \"rapide-s\",\n      },\n      {\n        id: \"Aston_Martin_V12_Vanquish\",\n        name: \"V12 Vanquish\",\n        niceName: \"v12-vanquish\",\n      },\n      {\n        id: \"Aston_Martin_V12_Vantage\",\n        name: \"V12 Vantage\",\n        niceName: \"v12-vantage\",\n      },\n      {\n        id: \"Aston_Martin_V12_Vantage_S\",\n        name: \"V12 Vantage S\",\n        niceName: \"v12-vantage-s\",\n      },\n      {\n        id: \"Aston_Martin_V8_Vantage\",\n        name: \"V8 Vantage\",\n        niceName: \"v8-vantage\",\n      },\n      {\n        id: \"Aston_Martin_Vanquish\",\n        name: \"Vanquish\",\n        niceName: \"vanquish\",\n      },\n      {\n        id: \"Aston_Martin_Virage\",\n        name: \"Virage\",\n        niceName: \"virage\",\n      },\n    ],\n  },\n  {\n    id: 200000001,\n    name: \"Audi\",\n    niceName: \"audi\",\n    models: [\n      {\n        id: \"Audi_100\",\n        name: \"100\",\n        niceName: \"100\",\n      },\n      {\n        id: \"Audi_200\",\n        name: \"200\",\n        niceName: \"200\",\n      },\n      {\n        id: \"Audi_80\",\n        name: \"80\",\n        niceName: \"80\",\n      },\n      {\n        id: \"Audi_90\",\n        name: \"90\",\n        niceName: \"90\",\n      },\n      {\n        id: \"Audi_A3\",\n        name: \"A3\",\n        niceName: \"a3\",\n      },\n      {\n        id: \"Audi_A3_Sportback_e_tron\",\n        name: \"A3 Sportback e-tron\",\n        niceName: \"a3-sportback-e-tron\",\n      },\n      {\n        id: \"Audi_A4\",\n        name: \"A4\",\n        niceName: \"a4\",\n      },\n      {\n        id: \"Audi_A4_allroad\",\n        name: \"A4 allroad\",\n        niceName: \"a4-allroad\",\n      },\n      {\n        id: \"Audi_A5\",\n        name: \"A5\",\n        niceName: \"a5\",\n      },\n      {\n        id: \"Audi_A6\",\n        name: \"A6\",\n        niceName: \"a6\",\n      },\n      {\n        id: \"Audi_A7\",\n        name: \"A7\",\n        niceName: \"a7\",\n      },\n      {\n        id: \"Audi_A8\",\n        name: \"A8\",\n        niceName: \"a8\",\n      },\n      {\n        id: \"Audi_Cabriolet\",\n        name: \"Cabriolet\",\n        niceName: \"cabriolet\",\n      },\n      {\n        id: \"Audi_Coupe\",\n        name: \"Coupe\",\n        niceName: \"coupe\",\n      },\n      {\n        id: \"Audi_Q3\",\n        name: \"Q3\",\n        niceName: \"q3\",\n      },\n      {\n        id: \"Audi_Q5\",\n        name: \"Q5\",\n        niceName: \"q5\",\n      },\n      {\n        id: \"Audi_Q7\",\n        name: \"Q7\",\n        niceName: \"q7\",\n      },\n      {\n        id: \"Audi_Q7_e_tron\",\n        name: \"Q7 e-tron\",\n        niceName: \"q7-e-tron\",\n      },\n      {\n        id: \"Audi_R8\",\n        name: \"R8\",\n        niceName: \"r8\",\n      },\n      {\n        id: \"Audi_RS_4\",\n        name: \"RS 4\",\n        niceName: \"rs-4\",\n      },\n      {\n        id: \"Audi_RS_5\",\n        name: \"RS 5\",\n        niceName: \"rs-5\",\n      },\n      {\n        id: \"Audi_RS_6\",\n        name: \"RS 6\",\n        niceName: \"rs-6\",\n      },\n      {\n        id: \"Audi_RS_7\",\n        name: \"RS 7\",\n        niceName: \"rs-7\",\n      },\n      {\n        id: \"Audi_S3\",\n        name: \"S3\",\n        niceName: \"s3\",\n      },\n      {\n        id: \"Audi_S4\",\n        name: \"S4\",\n        niceName: \"s4\",\n      },\n      {\n        id: \"Audi_S5\",\n        name: \"S5\",\n        niceName: \"s5\",\n      },\n      {\n        id: \"Audi_S6\",\n        name: \"S6\",\n        niceName: \"s6\",\n      },\n      {\n        id: \"Audi_S7\",\n        name: \"S7\",\n        niceName: \"s7\",\n      },\n      {\n        id: \"Audi_S8\",\n        name: \"S8\",\n        niceName: \"s8\",\n      },\n      {\n        id: \"Audi_SQ5\",\n        name: \"SQ5\",\n        niceName: \"sq5\",\n      },\n      {\n        id: \"Audi_TT\",\n        name: \"TT\",\n        niceName: \"tt\",\n      },\n      {\n        id: \"Audi_TT_RS\",\n        name: \"TT RS\",\n        niceName: \"tt-rs\",\n      },\n      {\n        id: \"Audi_TTS\",\n        name: \"TTS\",\n        niceName: \"tts\",\n      },\n      {\n        id: \"Audi_V8\",\n        name: \"V8\",\n        niceName: \"v8\",\n      },\n      {\n        id: \"Audi_allroad\",\n        name: \"allroad\",\n        niceName: \"allroad\",\n      },\n      {\n        id: \"Audi_allroad_quattro\",\n        name: \"allroad quattro\",\n        niceName: \"allroad-quattro\",\n      },\n    ],\n  },\n  {\n    id: 200000081,\n    name: \"BMW\",\n    niceName: \"bmw\",\n    models: [\n      {\n        id: \"BMW_1_Series\",\n        name: \"1 Series\",\n        niceName: \"1-series\",\n      },\n      {\n        id: \"BMW_1_Series_M\",\n        name: \"1 Series M\",\n        niceName: \"1-series-m\",\n      },\n      {\n        id: \"BMW_2_Series\",\n        name: \"2 Series\",\n        niceName: \"2-series\",\n      },\n      {\n        id: \"BMW_3_Series\",\n        name: \"3 Series\",\n        niceName: \"3-series\",\n      },\n      {\n        id: \"BMW_3_Series_Gran_Turismo\",\n        name: \"3 Series Gran Turismo\",\n        niceName: \"3-series-gran-turismo\",\n      },\n      {\n        id: \"BMW_3_Series_eDrive\",\n        name: \"3 Series eDrive\",\n        niceName: \"3-series-edrive\",\n      },\n      {\n        id: \"BMW_4_Series\",\n        name: \"4 Series\",\n        niceName: \"4-series\",\n      },\n      {\n        id: \"BMW_4_Series_Gran_Coupe\",\n        name: \"4 Series Gran Coupe\",\n        niceName: \"4-series-gran-coupe\",\n      },\n      {\n        id: \"BMW_5_Series\",\n        name: \"5 Series\",\n        niceName: \"5-series\",\n      },\n      {\n        id: \"BMW_5_Series_Gran_Turismo\",\n        name: \"5 Series Gran Turismo\",\n        niceName: \"5-series-gran-turismo\",\n      },\n      {\n        id: \"BMW_6_Series\",\n        name: \"6 Series\",\n        niceName: \"6-series\",\n      },\n      {\n        id: \"BMW_6_Series_Gran_Coupe\",\n        name: \"6 Series Gran Coupe\",\n        niceName: \"6-series-gran-coupe\",\n      },\n      {\n        id: \"BMW_7_Series\",\n        name: \"7 Series\",\n        niceName: \"7-series\",\n      },\n      {\n        id: \"BMW_8_Series\",\n        name: \"8 Series\",\n        niceName: \"8-series\",\n      },\n      {\n        id: \"BMW_ALPINA_B6_Gran_Coupe\",\n        name: \"ALPINA B6 Gran Coupe\",\n        niceName: \"alpina-b6-gran-coupe\",\n      },\n      {\n        id: \"BMW_ALPINA_B7\",\n        name: \"ALPINA B7\",\n        niceName: \"alpina-b7\",\n      },\n      {\n        id: \"BMW_ActiveHybrid_5\",\n        name: \"ActiveHybrid 5\",\n        niceName: \"activehybrid-5\",\n      },\n      {\n        id: \"BMW_ActiveHybrid_7\",\n        name: \"ActiveHybrid 7\",\n        niceName: \"activehybrid-7\",\n      },\n      {\n        id: \"BMW_ActiveHybrid_X6\",\n        name: \"ActiveHybrid X6\",\n        niceName: \"activehybrid-x6\",\n      },\n      {\n        id: \"BMW_Alpina\",\n        name: \"Alpina\",\n        niceName: \"alpina\",\n      },\n      {\n        id: \"BMW_M\",\n        name: \"M\",\n        niceName: \"m\",\n      },\n      {\n        id: \"BMW_M2\",\n        name: \"M2\",\n        niceName: \"m2\",\n      },\n      {\n        id: \"BMW_M3\",\n        name: \"M3\",\n        niceName: \"m3\",\n      },\n      {\n        id: \"BMW_M4\",\n        name: \"M4\",\n        niceName: \"m4\",\n      },\n      {\n        id: \"BMW_M4_GTS\",\n        name: \"M4 GTS\",\n        niceName: \"m4-gts\",\n      },\n      {\n        id: \"BMW_M5\",\n        name: \"M5\",\n        niceName: \"m5\",\n      },\n      {\n        id: \"BMW_M6\",\n        name: \"M6\",\n        niceName: \"m6\",\n      },\n      {\n        id: \"BMW_M6_Gran_Coupe\",\n        name: \"M6 Gran Coupe\",\n        niceName: \"m6-gran-coupe\",\n      },\n      {\n        id: \"BMW_X1\",\n        name: \"X1\",\n        niceName: \"x1\",\n      },\n      {\n        id: \"BMW_X3\",\n        name: \"X3\",\n        niceName: \"x3\",\n      },\n      {\n        id: \"BMW_X4\",\n        name: \"X4\",\n        niceName: \"x4\",\n      },\n      {\n        id: \"BMW_X5\",\n        name: \"X5\",\n        niceName: \"x5\",\n      },\n      {\n        id: \"BMW_X5_M\",\n        name: \"X5 M\",\n        niceName: \"x5-m\",\n      },\n      {\n        id: \"BMW_X5_eDrive\",\n        name: \"X5 eDrive\",\n        niceName: \"x5-edrive\",\n      },\n      {\n        id: \"BMW_X6\",\n        name: \"X6\",\n        niceName: \"x6\",\n      },\n      {\n        id: \"BMW_X6_M\",\n        name: \"X6 M\",\n        niceName: \"x6-m\",\n      },\n      {\n        id: \"BMW_X7\",\n        name: \"X7\",\n        niceName: \"x7\",\n      },\n      {\n        id: \"BMW_Z3\",\n        name: \"Z3\",\n        niceName: \"z3\",\n      },\n      {\n        id: \"BMW_Z4\",\n        name: \"Z4\",\n        niceName: \"z4\",\n      },\n      {\n        id: \"BMW_Z4_M\",\n        name: \"Z4 M\",\n        niceName: \"z4-m\",\n      },\n      {\n        id: \"BMW_Z8\",\n        name: \"Z8\",\n        niceName: \"z8\",\n      },\n      {\n        id: \"BMW_i3\",\n        name: \"i3\",\n        niceName: \"i3\",\n      },\n      {\n        id: \"BMW_i8\",\n        name: \"i8\",\n        niceName: \"i8\",\n      },\n    ],\n  },\n  {\n    id: 200005848,\n    name: \"Bentley\",\n    niceName: \"bentley\",\n    models: [\n      {\n        id: \"Bentley_Arnage\",\n        name: \"Arnage\",\n        niceName: \"arnage\",\n      },\n      {\n        id: \"Bentley_Azure\",\n        name: \"Azure\",\n        niceName: \"azure\",\n      },\n      {\n        id: \"Bentley_Azure_T\",\n        name: \"Azure T\",\n        niceName: \"azure-t\",\n      },\n      {\n        id: \"Bentley_Bentayga\",\n        name: \"Bentayga\",\n        niceName: \"bentayga\",\n      },\n      {\n        id: \"Bentley_Brooklands\",\n        name: \"Brooklands\",\n        niceName: \"brooklands\",\n      },\n      {\n        id: \"Bentley_Continental\",\n        name: \"Continental\",\n        niceName: \"continental\",\n      },\n      {\n        id: \"Bentley_Continental_Flying_Spur\",\n        name: \"Continental Flying Spur\",\n        niceName: \"continental-flying-spur\",\n      },\n      {\n        id: \"Bentley_Continental_Flying_Spur_Speed\",\n        name: \"Continental Flying Spur Speed\",\n        niceName: \"continental-flying-spur-speed\",\n      },\n      {\n        id: \"Bentley_Continental_GT\",\n        name: \"Continental GT\",\n        niceName: \"continental-gt\",\n      },\n      {\n        id: \"Bentley_Continental_GT_Speed\",\n        name: \"Continental GT Speed\",\n        niceName: \"continental-gt-speed\",\n      },\n      {\n        id: \"Bentley_Continental_GT_Speed_Convertible\",\n        name: \"Continental GT Speed Convertible\",\n        niceName: \"continental-gt-speed-convertible\",\n      },\n      {\n        id: \"Bentley_Continental_GT3_R\",\n        name: \"Continental GT3-R\",\n        niceName: \"continental-gt3-r\",\n      },\n      {\n        id: \"Bentley_Continental_GTC\",\n        name: \"Continental GTC\",\n        niceName: \"continental-gtc\",\n      },\n      {\n        id: \"Bentley_Continental_GTC_Speed\",\n        name: \"Continental GTC Speed\",\n        niceName: \"continental-gtc-speed\",\n      },\n      {\n        id: \"Bentley_Continental_Supersports\",\n        name: \"Continental Supersports\",\n        niceName: \"continental-supersports\",\n      },\n      {\n        id: \"Bentley_Continental_Supersports_Convertible\",\n        name: \"Continental Supersports Convertible\",\n        niceName: \"continental-supersports-convertible\",\n      },\n      {\n        id: \"Bentley_Flying_Spur\",\n        name: \"Flying Spur\",\n        niceName: \"flying-spur\",\n      },\n      {\n        id: \"Bentley_Mulsanne\",\n        name: \"Mulsanne\",\n        niceName: \"mulsanne\",\n      },\n      {\n        id: \"Bentley_Supersports_Convertible_ISR\",\n        name: \"Supersports Convertible ISR\",\n        niceName: \"supersports-convertible-isr\",\n      },\n    ],\n  },\n  {\n    id: 200030397,\n    name: \"Bugatti\",\n    niceName: \"bugatti\",\n    models: [\n      {\n        id: \"Bugatti_Veyron_16.4\",\n        name: \"Veyron 16.4\",\n        niceName: \"veyron-164\",\n      },\n    ],\n  },\n  {\n    id: 200006659,\n    name: \"Buick\",\n    niceName: \"buick\",\n    models: [\n      {\n        id: \"Buick_Cascada\",\n        name: \"Cascada\",\n        niceName: \"cascada\",\n      },\n      {\n        id: \"Buick_Century\",\n        name: \"Century\",\n        niceName: \"century\",\n      },\n      {\n        id: \"Buick_Electra\",\n        name: \"Electra\",\n        niceName: \"electra\",\n      },\n      {\n        id: \"Buick_Enclave\",\n        name: \"Enclave\",\n        niceName: \"enclave\",\n      },\n      {\n        id: \"Buick_Encore\",\n        name: \"Encore\",\n        niceName: \"encore\",\n      },\n      {\n        id: \"Buick_Envision\",\n        name: \"Envision\",\n        niceName: \"envision\",\n      },\n      {\n        id: \"Buick_Estate_Wagon\",\n        name: \"Estate Wagon\",\n        niceName: \"estate-wagon\",\n      },\n      {\n        id: \"Buick_LaCrosse\",\n        name: \"LaCrosse\",\n        niceName: \"lacrosse\",\n      },\n      {\n        id: \"Buick_LeSabre\",\n        name: \"LeSabre\",\n        niceName: \"lesabre\",\n      },\n      {\n        id: \"Buick_Lucerne\",\n        name: \"Lucerne\",\n        niceName: \"lucerne\",\n      },\n      {\n        id: \"Buick_Park_Avenue\",\n        name: \"Park Avenue\",\n        niceName: \"park-avenue\",\n      },\n      {\n        id: \"Buick_Rainier\",\n        name: \"Rainier\",\n        niceName: \"rainier\",\n      },\n      {\n        id: \"Buick_Reatta\",\n        name: \"Reatta\",\n        niceName: \"reatta\",\n      },\n      {\n        id: \"Buick_Regal\",\n        name: \"Regal\",\n        niceName: \"regal\",\n      },\n      {\n        id: \"Buick_Rendezvous\",\n        name: \"Rendezvous\",\n        niceName: \"rendezvous\",\n      },\n      {\n        id: \"Buick_Riviera\",\n        name: \"Riviera\",\n        niceName: \"riviera\",\n      },\n      {\n        id: \"Buick_Roadmaster\",\n        name: \"Roadmaster\",\n        niceName: \"roadmaster\",\n      },\n      {\n        id: \"Buick_Skylark\",\n        name: \"Skylark\",\n        niceName: \"skylark\",\n      },\n      {\n        id: \"Buick_Terraza\",\n        name: \"Terraza\",\n        niceName: \"terraza\",\n      },\n      {\n        id: \"Buick_Verano\",\n        name: \"Verano\",\n        niceName: \"verano\",\n      },\n    ],\n  },\n  {\n    id: 200001663,\n    name: \"Cadillac\",\n    niceName: \"cadillac\",\n    models: [\n      {\n        id: \"Cadillac_ATS\",\n        name: \"ATS\",\n        niceName: \"ats\",\n      },\n      {\n        id: \"Cadillac_ATS_Coupe\",\n        name: \"ATS Coupe\",\n        niceName: \"ats-coupe\",\n      },\n      {\n        id: \"Cadillac_ATS_V\",\n        name: \"ATS-V\",\n        niceName: \"ats-v\",\n      },\n      {\n        id: \"Cadillac_Allante\",\n        name: \"Allante\",\n        niceName: \"allante\",\n      },\n      {\n        id: \"Cadillac_Brougham\",\n        name: \"Brougham\",\n        niceName: \"brougham\",\n      },\n      {\n        id: \"Cadillac_CT6\",\n        name: \"CT6\",\n        niceName: \"ct6\",\n      },\n      {\n        id: \"Cadillac_CTS\",\n        name: \"CTS\",\n        niceName: \"cts\",\n      },\n      {\n        id: \"Cadillac_CTS_Coupe\",\n        name: \"CTS Coupe\",\n        niceName: \"cts-coupe\",\n      },\n      {\n        id: \"Cadillac_CTS_Wagon\",\n        name: \"CTS Wagon\",\n        niceName: \"cts-wagon\",\n      },\n      {\n        id: \"Cadillac_CTS_V\",\n        name: \"CTS-V\",\n        niceName: \"cts-v\",\n      },\n      {\n        id: \"Cadillac_CTS_V_Coupe\",\n        name: \"CTS-V Coupe\",\n        niceName: \"cts-v-coupe\",\n      },\n      {\n        id: \"Cadillac_CTS_V_Wagon\",\n        name: \"CTS-V Wagon\",\n        niceName: \"cts-v-wagon\",\n      },\n      {\n        id: \"Cadillac_Catera\",\n        name: \"Catera\",\n        niceName: \"catera\",\n      },\n      {\n        id: \"Cadillac_DTS\",\n        name: \"DTS\",\n        niceName: \"dts\",\n      },\n      {\n        id: \"Cadillac_DeVille\",\n        name: \"DeVille\",\n        niceName: \"deville\",\n      },\n      {\n        id: \"Cadillac_ELR\",\n        name: \"ELR\",\n        niceName: \"elr\",\n      },\n      {\n        id: \"Cadillac_Eldorado\",\n        name: \"Eldorado\",\n        niceName: \"eldorado\",\n      },\n      {\n        id: \"Cadillac_Escalade\",\n        name: \"Escalade\",\n        niceName: \"escalade\",\n      },\n      {\n        id: \"Cadillac_Escalade_ESV\",\n        name: \"Escalade ESV\",\n        niceName: \"escalade-esv\",\n      },\n      {\n        id: \"Cadillac_Escalade_EXT\",\n        name: \"Escalade EXT\",\n        niceName: \"escalade-ext\",\n      },\n      {\n        id: \"Cadillac_Escalade_Hybrid\",\n        name: \"Escalade Hybrid\",\n        niceName: \"escalade-hybrid\",\n      },\n      {\n        id: \"Cadillac_Fleetwood\",\n        name: \"Fleetwood\",\n        niceName: \"fleetwood\",\n      },\n      {\n        id: \"Cadillac_SRX\",\n        name: \"SRX\",\n        niceName: \"srx\",\n      },\n      {\n        id: \"Cadillac_STS\",\n        name: \"STS\",\n        niceName: \"sts\",\n      },\n      {\n        id: \"Cadillac_STS_V\",\n        name: \"STS-V\",\n        niceName: \"sts-v\",\n      },\n      {\n        id: \"Cadillac_Seville\",\n        name: \"Seville\",\n        niceName: \"seville\",\n      },\n      {\n        id: \"Cadillac_Sixty_Special\",\n        name: \"Sixty Special\",\n        niceName: \"sixty-special\",\n      },\n      {\n        id: \"Cadillac_XLR\",\n        name: \"XLR\",\n        niceName: \"xlr\",\n      },\n      {\n        id: \"Cadillac_XLR_V\",\n        name: \"XLR-V\",\n        niceName: \"xlr-v\",\n      },\n      {\n        id: \"Cadillac_XT5\",\n        name: \"XT5\",\n        niceName: \"xt5\",\n      },\n      {\n        id: \"Cadillac_XT7\",\n        name: \"XT7\",\n        niceName: \"xt7\",\n      },\n      {\n        id: \"Cadillac_XTS\",\n        name: \"XTS\",\n        niceName: \"xts\",\n      },\n    ],\n  },\n  {\n    id: 200000404,\n    name: \"Chevrolet\",\n    niceName: \"chevrolet\",\n    models: [\n      {\n        id: \"Chevrolet_Astro\",\n        name: \"Astro\",\n        niceName: \"astro\",\n      },\n      {\n        id: \"Chevrolet_Astro_Cargo\",\n        name: \"Astro Cargo\",\n        niceName: \"astro-cargo\",\n      },\n      {\n        id: \"Chevrolet_Avalanche\",\n        name: \"Avalanche\",\n        niceName: \"avalanche\",\n      },\n      {\n        id: \"Chevrolet_Aveo\",\n        name: \"Aveo\",\n        niceName: \"aveo\",\n      },\n      {\n        id: \"Chevrolet_Beretta\",\n        name: \"Beretta\",\n        niceName: \"beretta\",\n      },\n      {\n        id: \"Chevrolet_Black_Diamond_Avalanche\",\n        name: \"Black Diamond Avalanche\",\n        niceName: \"black-diamond-avalanche\",\n      },\n      {\n        id: \"Chevrolet_Blazer\",\n        name: \"Blazer\",\n        niceName: \"blazer\",\n      },\n      {\n        id: \"Chevrolet_Bolt_EV\",\n        name: \"Bolt EV\",\n        niceName: \"bolt-ev\",\n      },\n      {\n        id: \"Chevrolet_C/K_1500_Series\",\n        name: \"C/K 1500 Series\",\n        niceName: \"ck-1500-series\",\n      },\n      {\n        id: \"Chevrolet_C/K_2500_Series\",\n        name: \"C/K 2500 Series\",\n        niceName: \"ck-2500-series\",\n      },\n      {\n        id: \"Chevrolet_C/K_3500_Series\",\n        name: \"C/K 3500 Series\",\n        niceName: \"ck-3500-series\",\n      },\n      {\n        id: \"Chevrolet_Camaro\",\n        name: \"Camaro\",\n        niceName: \"camaro\",\n      },\n      {\n        id: \"Chevrolet_Caprice\",\n        name: \"Caprice\",\n        niceName: \"caprice\",\n      },\n      {\n        id: \"Chevrolet_Captiva_Sport\",\n        name: \"Captiva Sport\",\n        niceName: \"captiva-sport\",\n      },\n      {\n        id: \"Chevrolet_Cavalier\",\n        name: \"Cavalier\",\n        niceName: \"cavalier\",\n      },\n      {\n        id: \"Chevrolet_Celebrity\",\n        name: \"Celebrity\",\n        niceName: \"celebrity\",\n      },\n      {\n        id: \"Chevrolet_Chevy_Van\",\n        name: \"Chevy Van\",\n        niceName: \"chevy-van\",\n      },\n      {\n        id: \"Chevrolet_Chevy_Van_Classic\",\n        name: \"Chevy Van Classic\",\n        niceName: \"chevy-van-classic\",\n      },\n      {\n        id: \"Chevrolet_City_Express\",\n        name: \"City Express\",\n        niceName: \"city-express\",\n      },\n      {\n        id: \"Chevrolet_Classic\",\n        name: \"Classic\",\n        niceName: \"classic\",\n      },\n      {\n        id: \"Chevrolet_Cobalt\",\n        name: \"Cobalt\",\n        niceName: \"cobalt\",\n      },\n      {\n        id: \"Chevrolet_Colorado\",\n        name: \"Colorado\",\n        niceName: \"colorado\",\n      },\n      {\n        id: \"Chevrolet_Corsica\",\n        name: \"Corsica\",\n        niceName: \"corsica\",\n      },\n      {\n        id: \"Chevrolet_Corvette\",\n        name: \"Corvette\",\n        niceName: \"corvette\",\n      },\n      {\n        id: \"Chevrolet_Corvette_Stingray\",\n        name: \"Corvette Stingray\",\n        niceName: \"corvette-stingray\",\n      },\n      {\n        id: \"Chevrolet_Cruze\",\n        name: \"Cruze\",\n        niceName: \"cruze\",\n      },\n      {\n        id: \"Chevrolet_Cruze_Limited\",\n        name: \"Cruze Limited\",\n        niceName: \"cruze-limited\",\n      },\n      {\n        id: \"Chevrolet_Equinox\",\n        name: \"Equinox\",\n        niceName: \"equinox\",\n      },\n      {\n        id: \"Chevrolet_Express\",\n        name: \"Express\",\n        niceName: \"express\",\n      },\n      {\n        id: \"Chevrolet_Express_Cargo\",\n        name: \"Express Cargo\",\n        niceName: \"express-cargo\",\n      },\n      {\n        id: \"Chevrolet_HHR\",\n        name: \"HHR\",\n        niceName: \"hhr\",\n      },\n      {\n        id: \"Chevrolet_Impala\",\n        name: \"Impala\",\n        niceName: \"impala\",\n      },\n      {\n        id: \"Chevrolet_Impala_Limited\",\n        name: \"Impala Limited\",\n        niceName: \"impala-limited\",\n      },\n      {\n        id: \"Chevrolet_Lumina\",\n        name: \"Lumina\",\n        niceName: \"lumina\",\n      },\n      {\n        id: \"Chevrolet_Lumina_Minivan\",\n        name: \"Lumina Minivan\",\n        niceName: \"lumina-minivan\",\n      },\n      {\n        id: \"Chevrolet_Malibu\",\n        name: \"Malibu\",\n        niceName: \"malibu\",\n      },\n      {\n        id: \"Chevrolet_Malibu_Classic\",\n        name: \"Malibu Classic\",\n        niceName: \"malibu-classic\",\n      },\n      {\n        id: \"Chevrolet_Malibu_Hybrid\",\n        name: \"Malibu Hybrid\",\n        niceName: \"malibu-hybrid\",\n      },\n      {\n        id: \"Chevrolet_Malibu_Limited\",\n        name: \"Malibu Limited\",\n        niceName: \"malibu-limited\",\n      },\n      {\n        id: \"Chevrolet_Malibu_Maxx\",\n        name: \"Malibu Maxx\",\n        niceName: \"malibu-maxx\",\n      },\n      {\n        id: \"Chevrolet_Metro\",\n        name: \"Metro\",\n        niceName: \"metro\",\n      },\n      {\n        id: \"Chevrolet_Monte_Carlo\",\n        name: \"Monte Carlo\",\n        niceName: \"monte-carlo\",\n      },\n      {\n        id: \"Chevrolet_Prizm\",\n        name: \"Prizm\",\n        niceName: \"prizm\",\n      },\n      {\n        id: \"Chevrolet_R/V_3500_Series\",\n        name: \"R/V 3500 Series\",\n        niceName: \"rv-3500-series\",\n      },\n      {\n        id: \"Chevrolet_S_10\",\n        name: \"S-10\",\n        niceName: \"s-10\",\n      },\n      {\n        id: \"Chevrolet_S_10_Blazer\",\n        name: \"S-10 Blazer\",\n        niceName: \"s-10-blazer\",\n      },\n      {\n        id: \"Chevrolet_SS\",\n        name: \"SS\",\n        niceName: \"ss\",\n      },\n      {\n        id: \"Chevrolet_SSR\",\n        name: \"SSR\",\n        niceName: \"ssr\",\n      },\n      {\n        id: \"Chevrolet_Silverado_1500\",\n        name: \"Silverado 1500\",\n        niceName: \"silverado-1500\",\n      },\n      {\n        id: \"Chevrolet_Silverado_1500_Classic\",\n        name: \"Silverado 1500 Classic\",\n        niceName: \"silverado-1500-classic\",\n      },\n      {\n        id: \"Chevrolet_Silverado_1500_Hybrid\",\n        name: \"Silverado 1500 Hybrid\",\n        niceName: \"silverado-1500-hybrid\",\n      },\n      {\n        id: \"Chevrolet_Silverado_1500HD\",\n        name: \"Silverado 1500HD\",\n        niceName: \"silverado-1500hd\",\n      },\n      {\n        id: \"Chevrolet_Silverado_1500HD_Classic\",\n        name: \"Silverado 1500HD Classic\",\n        niceName: \"silverado-1500hd-classic\",\n      },\n      {\n        id: \"Chevrolet_Silverado_2500\",\n        name: \"Silverado 2500\",\n        niceName: \"silverado-2500\",\n      },\n      {\n        id: \"Chevrolet_Silverado_2500HD\",\n        name: \"Silverado 2500HD\",\n        niceName: \"silverado-2500hd\",\n      },\n      {\n        id: \"Chevrolet_Silverado_2500HD_Classic\",\n        name: \"Silverado 2500HD Classic\",\n        niceName: \"silverado-2500hd-classic\",\n      },\n      {\n        id: \"Chevrolet_Silverado_3500\",\n        name: \"Silverado 3500\",\n        niceName: \"silverado-3500\",\n      },\n      {\n        id: \"Chevrolet_Silverado_3500_Classic\",\n        name: \"Silverado 3500 Classic\",\n        niceName: \"silverado-3500-classic\",\n      },\n      {\n        id: \"Chevrolet_Silverado_3500HD\",\n        name: \"Silverado 3500HD\",\n        niceName: \"silverado-3500hd\",\n      },\n      {\n        id: \"Chevrolet_Sonic\",\n        name: \"Sonic\",\n        niceName: \"sonic\",\n      },\n      {\n        id: \"Chevrolet_Spark\",\n        name: \"Spark\",\n        niceName: \"spark\",\n      },\n      {\n        id: \"Chevrolet_Spark_EV\",\n        name: \"Spark EV\",\n        niceName: \"spark-ev\",\n      },\n      {\n        id: \"Chevrolet_Sportvan\",\n        name: \"Sportvan\",\n        niceName: \"sportvan\",\n      },\n      {\n        id: \"Chevrolet_Suburban\",\n        name: \"Suburban\",\n        niceName: \"suburban\",\n      },\n      {\n        id: \"Chevrolet_Tahoe\",\n        name: \"Tahoe\",\n        niceName: \"tahoe\",\n      },\n      {\n        id: \"Chevrolet_Tahoe_Hybrid\",\n        name: \"Tahoe Hybrid\",\n        niceName: \"tahoe-hybrid\",\n      },\n      {\n        id: \"Chevrolet_Tahoe_Limited/Z71\",\n        name: \"Tahoe Limited/Z71\",\n        niceName: \"tahoe-limitedz71\",\n      },\n      {\n        id: \"Chevrolet_Tracker\",\n        name: \"Tracker\",\n        niceName: \"tracker\",\n      },\n      {\n        id: \"Chevrolet_TrailBlazer\",\n        name: \"TrailBlazer\",\n        niceName: \"trailblazer\",\n      },\n      {\n        id: \"Chevrolet_TrailBlazer_EXT\",\n        name: \"TrailBlazer EXT\",\n        niceName: \"trailblazer-ext\",\n      },\n      {\n        id: \"Chevrolet_Traverse\",\n        name: \"Traverse\",\n        niceName: \"traverse\",\n      },\n      {\n        id: \"Chevrolet_Trax\",\n        name: \"Trax\",\n        niceName: \"trax\",\n      },\n      {\n        id: \"Chevrolet_Uplander\",\n        name: \"Uplander\",\n        niceName: \"uplander\",\n      },\n      {\n        id: \"Chevrolet_Venture\",\n        name: \"Venture\",\n        niceName: \"venture\",\n      },\n      {\n        id: \"Chevrolet_Volt\",\n        name: \"Volt\",\n        niceName: \"volt\",\n      },\n    ],\n  },\n  {\n    id: 200003644,\n    name: \"Chrysler\",\n    niceName: \"chrysler\",\n    models: [\n      {\n        id: \"Chrysler_200\",\n        name: \"200\",\n        niceName: \"200\",\n      },\n      {\n        id: \"Chrysler_300\",\n        name: \"300\",\n        niceName: \"300\",\n      },\n      {\n        id: \"Chrysler_300M\",\n        name: \"300M\",\n        niceName: \"300m\",\n      },\n      {\n        id: \"Chrysler_Aspen\",\n        name: \"Aspen\",\n        niceName: \"aspen\",\n      },\n      {\n        id: \"Chrysler_Cirrus\",\n        name: \"Cirrus\",\n        niceName: \"cirrus\",\n      },\n      {\n        id: \"Chrysler_Concorde\",\n        name: \"Concorde\",\n        niceName: \"concorde\",\n      },\n      {\n        id: \"Chrysler_Crossfire\",\n        name: \"Crossfire\",\n        niceName: \"crossfire\",\n      },\n      {\n        id: \"Chrysler_Grand_Voyager\",\n        name: \"Grand Voyager\",\n        niceName: \"grand-voyager\",\n      },\n      {\n        id: \"Chrysler_Imperial\",\n        name: \"Imperial\",\n        niceName: \"imperial\",\n      },\n      {\n        id: \"Chrysler_LHS\",\n        name: \"LHS\",\n        niceName: \"lhs\",\n      },\n      {\n        id: \"Chrysler_Le_Baron\",\n        name: \"Le Baron\",\n        niceName: \"le-baron\",\n      },\n      {\n        id: \"Chrysler_New_Yorker\",\n        name: \"New Yorker\",\n        niceName: \"new-yorker\",\n      },\n      {\n        id: \"Chrysler_PT_Cruiser\",\n        name: \"PT Cruiser\",\n        niceName: \"pt-cruiser\",\n      },\n      {\n        id: \"Chrysler_Pacifica\",\n        name: \"Pacifica\",\n        niceName: \"pacifica\",\n      },\n      {\n        id: \"Chrysler_Pacifica_Hybrid\",\n        name: \"Pacifica Hybrid\",\n        niceName: \"pacifica-hybrid\",\n      },\n      {\n        id: \"Chrysler_Prowler\",\n        name: \"Prowler\",\n        niceName: \"prowler\",\n      },\n      {\n        id: \"Chrysler_Sebring\",\n        name: \"Sebring\",\n        niceName: \"sebring\",\n      },\n      {\n        id: \"Chrysler_TC\",\n        name: \"TC\",\n        niceName: \"tc\",\n      },\n      {\n        id: \"Chrysler_Town_and_Country\",\n        name: \"Town and Country\",\n        niceName: \"town-and-country\",\n      },\n      {\n        id: \"Chrysler_Voyager\",\n        name: \"Voyager\",\n        niceName: \"voyager\",\n      },\n    ],\n  },\n  {\n    id: 200312185,\n    name: \"Daewoo\",\n    niceName: \"daewoo\",\n    models: [\n      {\n        id: \"Daewoo_Lanos\",\n        name: \"Lanos\",\n        niceName: \"lanos\",\n      },\n      {\n        id: \"Daewoo_Leganza\",\n        name: \"Leganza\",\n        niceName: \"leganza\",\n      },\n      {\n        id: \"Daewoo_Nubira\",\n        name: \"Nubira\",\n        niceName: \"nubira\",\n      },\n    ],\n  },\n  {\n    id: 200009788,\n    name: \"Dodge\",\n    niceName: \"dodge\",\n    models: [\n      {\n        id: \"Dodge_Avenger\",\n        name: \"Avenger\",\n        niceName: \"avenger\",\n      },\n      {\n        id: \"Dodge_Caliber\",\n        name: \"Caliber\",\n        niceName: \"caliber\",\n      },\n      {\n        id: \"Dodge_Caravan\",\n        name: \"Caravan\",\n        niceName: \"caravan\",\n      },\n      {\n        id: \"Dodge_Challenger\",\n        name: \"Challenger\",\n        niceName: \"challenger\",\n      },\n      {\n        id: \"Dodge_Charger\",\n        name: \"Charger\",\n        niceName: \"charger\",\n      },\n      {\n        id: \"Dodge_Colt\",\n        name: \"Colt\",\n        niceName: \"colt\",\n      },\n      {\n        id: \"Dodge_Dakota\",\n        name: \"Dakota\",\n        niceName: \"dakota\",\n      },\n      {\n        id: \"Dodge_Dart\",\n        name: \"Dart\",\n        niceName: \"dart\",\n      },\n      {\n        id: \"Dodge_Daytona\",\n        name: \"Daytona\",\n        niceName: \"daytona\",\n      },\n      {\n        id: \"Dodge_Durango\",\n        name: \"Durango\",\n        niceName: \"durango\",\n      },\n      {\n        id: \"Dodge_Dynasty\",\n        name: \"Dynasty\",\n        niceName: \"dynasty\",\n      },\n      {\n        id: \"Dodge_Grand_Caravan\",\n        name: \"Grand Caravan\",\n        niceName: \"grand-caravan\",\n      },\n      {\n        id: \"Dodge_Intrepid\",\n        name: \"Intrepid\",\n        niceName: \"intrepid\",\n      },\n      {\n        id: \"Dodge_Journey\",\n        name: \"Journey\",\n        niceName: \"journey\",\n      },\n      {\n        id: \"Dodge_Magnum\",\n        name: \"Magnum\",\n        niceName: \"magnum\",\n      },\n      {\n        id: \"Dodge_Monaco\",\n        name: \"Monaco\",\n        niceName: \"monaco\",\n      },\n      {\n        id: \"Dodge_Neon\",\n        name: \"Neon\",\n        niceName: \"neon\",\n      },\n      {\n        id: \"Dodge_Nitro\",\n        name: \"Nitro\",\n        niceName: \"nitro\",\n      },\n      {\n        id: \"Dodge_Omni\",\n        name: \"Omni\",\n        niceName: \"omni\",\n      },\n      {\n        id: \"Dodge_RAM_150\",\n        name: \"RAM 150\",\n        niceName: \"ram-150\",\n      },\n      {\n        id: \"Dodge_RAM_250\",\n        name: \"RAM 250\",\n        niceName: \"ram-250\",\n      },\n      {\n        id: \"Dodge_RAM_350\",\n        name: \"RAM 350\",\n        niceName: \"ram-350\",\n      },\n      {\n        id: \"Dodge_Ram_50_Pickup\",\n        name: \"Ram 50 Pickup\",\n        niceName: \"ram-50-pickup\",\n      },\n      {\n        id: \"Dodge_Ram_Cargo\",\n        name: \"Ram Cargo\",\n        niceName: \"ram-cargo\",\n      },\n      {\n        id: \"Dodge_Ram_Pickup_1500\",\n        name: \"Ram Pickup 1500\",\n        niceName: \"ram-pickup-1500\",\n      },\n      {\n        id: \"Dodge_Ram_Pickup_2500\",\n        name: \"Ram Pickup 2500\",\n        niceName: \"ram-pickup-2500\",\n      },\n      {\n        id: \"Dodge_Ram_Pickup_3500\",\n        name: \"Ram Pickup 3500\",\n        niceName: \"ram-pickup-3500\",\n      },\n      {\n        id: \"Dodge_Ram_Van\",\n        name: \"Ram Van\",\n        niceName: \"ram-van\",\n      },\n      {\n        id: \"Dodge_Ram_Wagon\",\n        name: \"Ram Wagon\",\n        niceName: \"ram-wagon\",\n      },\n      {\n        id: \"Dodge_Ramcharger\",\n        name: \"Ramcharger\",\n        niceName: \"ramcharger\",\n      },\n      {\n        id: \"Dodge_SRT_Viper\",\n        name: \"SRT Viper\",\n        niceName: \"srt-viper\",\n      },\n      {\n        id: \"Dodge_Shadow\",\n        name: \"Shadow\",\n        niceName: \"shadow\",\n      },\n      {\n        id: \"Dodge_Spirit\",\n        name: \"Spirit\",\n        niceName: \"spirit\",\n      },\n      {\n        id: \"Dodge_Sprinter\",\n        name: \"Sprinter\",\n        niceName: \"sprinter\",\n      },\n      {\n        id: \"Dodge_Sprinter_Cargo\",\n        name: \"Sprinter Cargo\",\n        niceName: \"sprinter-cargo\",\n      },\n      {\n        id: \"Dodge_Stealth\",\n        name: \"Stealth\",\n        niceName: \"stealth\",\n      },\n      {\n        id: \"Dodge_Stratus\",\n        name: \"Stratus\",\n        niceName: \"stratus\",\n      },\n      {\n        id: \"Dodge_Viper\",\n        name: \"Viper\",\n        niceName: \"viper\",\n      },\n    ],\n  },\n  {\n    id: 200347865,\n    name: \"Eagle\",\n    niceName: \"eagle\",\n    models: [\n      {\n        id: \"Eagle_Premier\",\n        name: \"Premier\",\n        niceName: \"premier\",\n      },\n      {\n        id: \"Eagle_Summit\",\n        name: \"Summit\",\n        niceName: \"summit\",\n      },\n      {\n        id: \"Eagle_Talon\",\n        name: \"Talon\",\n        niceName: \"talon\",\n      },\n      {\n        id: \"Eagle_Vision\",\n        name: \"Vision\",\n        niceName: \"vision\",\n      },\n    ],\n  },\n  {\n    id: 200033022,\n    name: \"FIAT\",\n    niceName: \"fiat\",\n    models: [\n      {\n        id: \"FIAT_124_Spider\",\n        name: \"124 Spider\",\n        niceName: \"124-spider\",\n      },\n      {\n        id: \"FIAT_500\",\n        name: \"500\",\n        niceName: \"500\",\n      },\n      {\n        id: \"FIAT_500L\",\n        name: \"500L\",\n        niceName: \"500l\",\n      },\n      {\n        id: \"FIAT_500X\",\n        name: \"500X\",\n        niceName: \"500x\",\n      },\n      {\n        id: \"FIAT_500e\",\n        name: \"500e\",\n        niceName: \"500e\",\n      },\n    ],\n  },\n  {\n    id: 200006023,\n    name: \"Ferrari\",\n    niceName: \"ferrari\",\n    models: [\n      {\n        id: \"Ferrari_360\",\n        name: \"360\",\n        niceName: \"360\",\n      },\n      {\n        id: \"Ferrari_430_Scuderia\",\n        name: \"430 Scuderia\",\n        niceName: \"430-scuderia\",\n      },\n      {\n        id: \"Ferrari_456M\",\n        name: \"456M\",\n        niceName: \"456m\",\n      },\n      {\n        id: \"Ferrari_458_Italia\",\n        name: \"458 Italia\",\n        niceName: \"458-italia\",\n      },\n      {\n        id: \"Ferrari_550\",\n        name: \"550\",\n        niceName: \"550\",\n      },\n      {\n        id: \"Ferrari_575M\",\n        name: \"575M\",\n        niceName: \"575m\",\n      },\n      {\n        id: \"Ferrari_599\",\n        name: \"599\",\n        niceName: \"599\",\n      },\n      {\n        id: \"Ferrari_612_Scaglietti\",\n        name: \"612 Scaglietti\",\n        niceName: \"612-scaglietti\",\n      },\n      {\n        id: \"Ferrari_California\",\n        name: \"California\",\n        niceName: \"california\",\n      },\n      {\n        id: \"Ferrari_California_T\",\n        name: \"California T\",\n        niceName: \"california-t\",\n      },\n      {\n        id: \"Ferrari_Enzo\",\n        name: \"Enzo\",\n        niceName: \"enzo\",\n      },\n      {\n        id: \"Ferrari_F12_Berlinetta\",\n        name: \"F12 Berlinetta\",\n        niceName: \"f12-berlinetta\",\n      },\n      {\n        id: \"Ferrari_F430\",\n        name: \"F430\",\n        niceName: \"f430\",\n      },\n      {\n        id: \"Ferrari_FF\",\n        name: \"FF\",\n        niceName: \"ff\",\n      },\n      {\n        id: \"Ferrari_Superamerica\",\n        name: \"Superamerica\",\n        niceName: \"superamerica\",\n      },\n    ],\n  },\n  {\n    id: 200005745,\n    name: \"Fisker\",\n    niceName: \"fisker\",\n    models: [\n      {\n        id: \"Fisker_Karma\",\n        name: \"Karma\",\n        niceName: \"karma\",\n      },\n    ],\n  },\n  {\n    id: 200005143,\n    name: \"Ford\",\n    niceName: \"ford\",\n    models: [\n      {\n        id: \"Ford_Aerostar\",\n        name: \"Aerostar\",\n        niceName: \"aerostar\",\n      },\n      {\n        id: \"Ford_Aspire\",\n        name: \"Aspire\",\n        niceName: \"aspire\",\n      },\n      {\n        id: \"Ford_Bronco\",\n        name: \"Bronco\",\n        niceName: \"bronco\",\n      },\n      {\n        id: \"Ford_Bronco_II\",\n        name: \"Bronco II\",\n        niceName: \"bronco-ii\",\n      },\n      {\n        id: \"Ford_C_Max_Energi\",\n        name: \"C-Max Energi\",\n        niceName: \"c-max-energi\",\n      },\n      {\n        id: \"Ford_C_Max_Hybrid\",\n        name: \"C-Max Hybrid\",\n        niceName: \"c-max-hybrid\",\n      },\n      {\n        id: \"Ford_Contour\",\n        name: \"Contour\",\n        niceName: \"contour\",\n      },\n      {\n        id: \"Ford_Contour_SVT\",\n        name: \"Contour SVT\",\n        niceName: \"contour-svt\",\n      },\n      {\n        id: \"Ford_Crown_Victoria\",\n        name: \"Crown Victoria\",\n        niceName: \"crown-victoria\",\n      },\n      {\n        id: \"Ford_E_150\",\n        name: \"E-150\",\n        niceName: \"e-150\",\n      },\n      {\n        id: \"Ford_E_250\",\n        name: \"E-250\",\n        niceName: \"e-250\",\n      },\n      {\n        id: \"Ford_E_350\",\n        name: \"E-350\",\n        niceName: \"e-350\",\n      },\n      {\n        id: \"Ford_E_Series_Van\",\n        name: \"E-Series Van\",\n        niceName: \"e-series-van\",\n      },\n      {\n        id: \"Ford_E_Series_Wagon\",\n        name: \"E-Series Wagon\",\n        niceName: \"e-series-wagon\",\n      },\n      {\n        id: \"Ford_Econoline_Cargo\",\n        name: \"Econoline Cargo\",\n        niceName: \"econoline-cargo\",\n      },\n      {\n        id: \"Ford_Econoline_Wagon\",\n        name: \"Econoline Wagon\",\n        niceName: \"econoline-wagon\",\n      },\n      {\n        id: \"Ford_Edge\",\n        name: \"Edge\",\n        niceName: \"edge\",\n      },\n      {\n        id: \"Ford_Escape\",\n        name: \"Escape\",\n        niceName: \"escape\",\n      },\n      {\n        id: \"Ford_Escape_Hybrid\",\n        name: \"Escape Hybrid\",\n        niceName: \"escape-hybrid\",\n      },\n      {\n        id: \"Ford_Escort\",\n        name: \"Escort\",\n        niceName: \"escort\",\n      },\n      {\n        id: \"Ford_Excursion\",\n        name: \"Excursion\",\n        niceName: \"excursion\",\n      },\n      {\n        id: \"Ford_Expedition\",\n        name: \"Expedition\",\n        niceName: \"expedition\",\n      },\n      {\n        id: \"Ford_Expedition_EL\",\n        name: \"Expedition EL\",\n        niceName: \"expedition-el\",\n      },\n      {\n        id: \"Ford_Explorer\",\n        name: \"Explorer\",\n        niceName: \"explorer\",\n      },\n      {\n        id: \"Ford_Explorer_Sport\",\n        name: \"Explorer Sport\",\n        niceName: \"explorer-sport\",\n      },\n      {\n        id: \"Ford_Explorer_Sport_Trac\",\n        name: \"Explorer Sport Trac\",\n        niceName: \"explorer-sport-trac\",\n      },\n      {\n        id: \"Ford_F_150\",\n        name: \"F-150\",\n        niceName: \"f-150\",\n      },\n      {\n        id: \"Ford_F_150_Heritage\",\n        name: \"F-150 Heritage\",\n        niceName: \"f-150-heritage\",\n      },\n      {\n        id: \"Ford_F_150_SVT_Lightning\",\n        name: \"F-150 SVT Lightning\",\n        niceName: \"f-150-svt-lightning\",\n      },\n      {\n        id: \"Ford_F_250\",\n        name: \"F-250\",\n        niceName: \"f-250\",\n      },\n      {\n        id: \"Ford_F_250_Super_Duty\",\n        name: \"F-250 Super Duty\",\n        niceName: \"f-250-super-duty\",\n      },\n      {\n        id: \"Ford_F_350\",\n        name: \"F-350\",\n        niceName: \"f-350\",\n      },\n      {\n        id: \"Ford_F_350_Super_Duty\",\n        name: \"F-350 Super Duty\",\n        niceName: \"f-350-super-duty\",\n      },\n      {\n        id: \"Ford_F_450_Super_Duty\",\n        name: \"F-450 Super Duty\",\n        niceName: \"f-450-super-duty\",\n      },\n      {\n        id: \"Ford_Festiva\",\n        name: \"Festiva\",\n        niceName: \"festiva\",\n      },\n      {\n        id: \"Ford_Fiesta\",\n        name: \"Fiesta\",\n        niceName: \"fiesta\",\n      },\n      {\n        id: \"Ford_Five_Hundred\",\n        name: \"Five Hundred\",\n        niceName: \"five-hundred\",\n      },\n      {\n        id: \"Ford_Flex\",\n        name: \"Flex\",\n        niceName: \"flex\",\n      },\n      {\n        id: \"Ford_Focus\",\n        name: \"Focus\",\n        niceName: \"focus\",\n      },\n      {\n        id: \"Ford_Focus_RS\",\n        name: \"Focus RS\",\n        niceName: \"focus-rs\",\n      },\n      {\n        id: \"Ford_Focus_ST\",\n        name: \"Focus ST\",\n        niceName: \"focus-st\",\n      },\n      {\n        id: \"Ford_Freestar\",\n        name: \"Freestar\",\n        niceName: \"freestar\",\n      },\n      {\n        id: \"Ford_Freestyle\",\n        name: \"Freestyle\",\n        niceName: \"freestyle\",\n      },\n      {\n        id: \"Ford_Fusion\",\n        name: \"Fusion\",\n        niceName: \"fusion\",\n      },\n      {\n        id: \"Ford_Fusion_Energi\",\n        name: \"Fusion Energi\",\n        niceName: \"fusion-energi\",\n      },\n      {\n        id: \"Ford_Fusion_Hybrid\",\n        name: \"Fusion Hybrid\",\n        niceName: \"fusion-hybrid\",\n      },\n      {\n        id: \"Ford_GT\",\n        name: \"GT\",\n        niceName: \"gt\",\n      },\n      {\n        id: \"Ford_LTD_Crown_Victoria\",\n        name: \"LTD Crown Victoria\",\n        niceName: \"ltd-crown-victoria\",\n      },\n      {\n        id: \"Ford_Mustang\",\n        name: \"Mustang\",\n        niceName: \"mustang\",\n      },\n      {\n        id: \"Ford_Mustang_SVT_Cobra\",\n        name: \"Mustang SVT Cobra\",\n        niceName: \"mustang-svt-cobra\",\n      },\n      {\n        id: \"Ford_Probe\",\n        name: \"Probe\",\n        niceName: \"probe\",\n      },\n      {\n        id: \"Ford_Ranger\",\n        name: \"Ranger\",\n        niceName: \"ranger\",\n      },\n      {\n        id: \"Ford_Shelby_GT350\",\n        name: \"Shelby GT350\",\n        niceName: \"shelby-gt350\",\n      },\n      {\n        id: \"Ford_Shelby_GT500\",\n        name: \"Shelby GT500\",\n        niceName: \"shelby-gt500\",\n      },\n      {\n        id: \"Ford_Taurus\",\n        name: \"Taurus\",\n        niceName: \"taurus\",\n      },\n      {\n        id: \"Ford_Taurus_X\",\n        name: \"Taurus X\",\n        niceName: \"taurus-x\",\n      },\n      {\n        id: \"Ford_Tempo\",\n        name: \"Tempo\",\n        niceName: \"tempo\",\n      },\n      {\n        id: \"Ford_Thunderbird\",\n        name: \"Thunderbird\",\n        niceName: \"thunderbird\",\n      },\n      {\n        id: \"Ford_Transit_Connect\",\n        name: \"Transit Connect\",\n        niceName: \"transit-connect\",\n      },\n      {\n        id: \"Ford_Transit_Van\",\n        name: \"Transit Van\",\n        niceName: \"transit-van\",\n      },\n      {\n        id: \"Ford_Transit_Wagon\",\n        name: \"Transit Wagon\",\n        niceName: \"transit-wagon\",\n      },\n      {\n        id: \"Ford_Windstar\",\n        name: \"Windstar\",\n        niceName: \"windstar\",\n      },\n      {\n        id: \"Ford_Windstar_Cargo\",\n        name: \"Windstar Cargo\",\n        niceName: \"windstar-cargo\",\n      },\n    ],\n  },\n  {\n    id: 200007302,\n    name: \"GMC\",\n    niceName: \"gmc\",\n    models: [\n      {\n        id: \"GMC_Acadia\",\n        name: \"Acadia\",\n        niceName: \"acadia\",\n      },\n      {\n        id: \"GMC_Acadia_Limited\",\n        name: \"Acadia Limited\",\n        niceName: \"acadia-limited\",\n      },\n      {\n        id: \"GMC_Canyon\",\n        name: \"Canyon\",\n        niceName: \"canyon\",\n      },\n      {\n        id: \"GMC_Envoy\",\n        name: \"Envoy\",\n        niceName: \"envoy\",\n      },\n      {\n        id: \"GMC_Envoy_XL\",\n        name: \"Envoy XL\",\n        niceName: \"envoy-xl\",\n      },\n      {\n        id: \"GMC_Envoy_XUV\",\n        name: \"Envoy XUV\",\n        niceName: \"envoy-xuv\",\n      },\n      {\n        id: \"GMC_Jimmy\",\n        name: \"Jimmy\",\n        niceName: \"jimmy\",\n      },\n      {\n        id: \"GMC_R/V_3500_Series\",\n        name: \"R/V 3500 Series\",\n        niceName: \"rv-3500-series\",\n      },\n      {\n        id: \"GMC_Rally_Wagon\",\n        name: \"Rally Wagon\",\n        niceName: \"rally-wagon\",\n      },\n      {\n        id: \"GMC_S_15\",\n        name: \"S-15\",\n        niceName: \"s-15\",\n      },\n      {\n        id: \"GMC_S_15_Jimmy\",\n        name: \"S-15 Jimmy\",\n        niceName: \"s-15-jimmy\",\n      },\n      {\n        id: \"GMC_Safari\",\n        name: \"Safari\",\n        niceName: \"safari\",\n      },\n      {\n        id: \"GMC_Safari_Cargo\",\n        name: \"Safari Cargo\",\n        niceName: \"safari-cargo\",\n      },\n      {\n        id: \"GMC_Savana\",\n        name: \"Savana\",\n        niceName: \"savana\",\n      },\n      {\n        id: \"GMC_Savana_Cargo\",\n        name: \"Savana Cargo\",\n        niceName: \"savana-cargo\",\n      },\n      {\n        id: \"GMC_Sierra_1500\",\n        name: \"Sierra 1500\",\n        niceName: \"sierra-1500\",\n      },\n      {\n        id: \"GMC_Sierra_1500_Classic\",\n        name: \"Sierra 1500 Classic\",\n        niceName: \"sierra-1500-classic\",\n      },\n      {\n        id: \"GMC_Sierra_1500_Hybrid\",\n        name: \"Sierra 1500 Hybrid\",\n        niceName: \"sierra-1500-hybrid\",\n      },\n      {\n        id: \"GMC_Sierra_1500HD\",\n        name: \"Sierra 1500HD\",\n        niceName: \"sierra-1500hd\",\n      },\n      {\n        id: \"GMC_Sierra_1500HD_Classic\",\n        name: \"Sierra 1500HD Classic\",\n        niceName: \"sierra-1500hd-classic\",\n      },\n      {\n        id: \"GMC_Sierra_2500\",\n        name: \"Sierra 2500\",\n        niceName: \"sierra-2500\",\n      },\n      {\n        id: \"GMC_Sierra_2500HD\",\n        name: \"Sierra 2500HD\",\n        niceName: \"sierra-2500hd\",\n      },\n      {\n        id: \"GMC_Sierra_2500HD_Classic\",\n        name: \"Sierra 2500HD Classic\",\n        niceName: \"sierra-2500hd-classic\",\n      },\n      {\n        id: \"GMC_Sierra_3500\",\n        name: \"Sierra 3500\",\n        niceName: \"sierra-3500\",\n      },\n      {\n        id: \"GMC_Sierra_3500_Classic\",\n        name: \"Sierra 3500 Classic\",\n        niceName: \"sierra-3500-classic\",\n      },\n      {\n        id: \"GMC_Sierra_3500HD\",\n        name: \"Sierra 3500HD\",\n        niceName: \"sierra-3500hd\",\n      },\n      {\n        id: \"GMC_Sierra_C3\",\n        name: \"Sierra C3\",\n        niceName: \"sierra-c3\",\n      },\n      {\n        id: \"GMC_Sierra_Classic_1500\",\n        name: \"Sierra Classic 1500\",\n        niceName: \"sierra-classic-1500\",\n      },\n      {\n        id: \"GMC_Sierra_Classic_2500\",\n        name: \"Sierra Classic 2500\",\n        niceName: \"sierra-classic-2500\",\n      },\n      {\n        id: \"GMC_Sierra_Classic_3500\",\n        name: \"Sierra Classic 3500\",\n        niceName: \"sierra-classic-3500\",\n      },\n      {\n        id: \"GMC_Sonoma\",\n        name: \"Sonoma\",\n        niceName: \"sonoma\",\n      },\n      {\n        id: \"GMC_Suburban\",\n        name: \"Suburban\",\n        niceName: \"suburban\",\n      },\n      {\n        id: \"GMC_Syclone\",\n        name: \"Syclone\",\n        niceName: \"syclone\",\n      },\n      {\n        id: \"GMC_Terrain\",\n        name: \"Terrain\",\n        niceName: \"terrain\",\n      },\n      {\n        id: \"GMC_Typhoon\",\n        name: \"Typhoon\",\n        niceName: \"typhoon\",\n      },\n      {\n        id: \"GMC_Vandura\",\n        name: \"Vandura\",\n        niceName: \"vandura\",\n      },\n      {\n        id: \"GMC_Yukon\",\n        name: \"Yukon\",\n        niceName: \"yukon\",\n      },\n      {\n        id: \"GMC_Yukon_Denali\",\n        name: \"Yukon Denali\",\n        niceName: \"yukon-denali\",\n      },\n      {\n        id: \"GMC_Yukon_Hybrid\",\n        name: \"Yukon Hybrid\",\n        niceName: \"yukon-hybrid\",\n      },\n      {\n        id: \"GMC_Yukon_XL\",\n        name: \"Yukon XL\",\n        niceName: \"yukon-xl\",\n      },\n    ],\n  },\n  {\n    id: 401626455,\n    name: \"Genesis\",\n    niceName: \"genesis\",\n    models: [\n      {\n        id: \"Genesis_G80\",\n        name: \"G80\",\n        niceName: \"g80\",\n      },\n      {\n        id: \"Genesis_G90\",\n        name: \"G90\",\n        niceName: \"g90\",\n      },\n    ],\n  },\n  {\n    id: 200347866,\n    name: \"Geo\",\n    niceName: \"geo\",\n    models: [\n      {\n        id: \"Geo_Metro\",\n        name: \"Metro\",\n        niceName: \"metro\",\n      },\n      {\n        id: \"Geo_Prizm\",\n        name: \"Prizm\",\n        niceName: \"prizm\",\n      },\n      {\n        id: \"Geo_Storm\",\n        name: \"Storm\",\n        niceName: \"storm\",\n      },\n      {\n        id: \"Geo_Tracker\",\n        name: \"Tracker\",\n        niceName: \"tracker\",\n      },\n    ],\n  },\n  {\n    id: 200004021,\n    name: \"HUMMER\",\n    niceName: \"hummer\",\n    models: [\n      {\n        id: \"HUMMER_H1\",\n        name: \"H1\",\n        niceName: \"h1\",\n      },\n      {\n        id: \"HUMMER_H1_Alpha\",\n        name: \"H1 Alpha\",\n        niceName: \"h1-alpha\",\n      },\n      {\n        id: \"HUMMER_H2\",\n        name: \"H2\",\n        niceName: \"h2\",\n      },\n      {\n        id: \"HUMMER_H2_SUT\",\n        name: \"H2 SUT\",\n        niceName: \"h2-sut\",\n      },\n      {\n        id: \"HUMMER_H3\",\n        name: \"H3\",\n        niceName: \"h3\",\n      },\n      {\n        id: \"HUMMER_H3T\",\n        name: \"H3T\",\n        niceName: \"h3t\",\n      },\n    ],\n  },\n  {\n    id: 200001444,\n    name: \"Honda\",\n    niceName: \"honda\",\n    models: [\n      {\n        id: \"Honda_Accord\",\n        name: \"Accord\",\n        niceName: \"accord\",\n      },\n      {\n        id: \"Honda_Accord_Crosstour\",\n        name: \"Accord Crosstour\",\n        niceName: \"accord-crosstour\",\n      },\n      {\n        id: \"Honda_Accord_Hybrid\",\n        name: \"Accord Hybrid\",\n        niceName: \"accord-hybrid\",\n      },\n      {\n        id: \"Honda_Accord_Plug_In_Hybrid\",\n        name: \"Accord Plug-In Hybrid\",\n        niceName: \"accord-plug-in-hybrid\",\n      },\n      {\n        id: \"Honda_CR_V\",\n        name: \"CR-V\",\n        niceName: \"cr-v\",\n      },\n      {\n        id: \"Honda_CR_Z\",\n        name: \"CR-Z\",\n        niceName: \"cr-z\",\n      },\n      {\n        id: \"Honda_Civic\",\n        name: \"Civic\",\n        niceName: \"civic\",\n      },\n      {\n        id: \"Honda_Civic_CRX\",\n        name: \"Civic CRX\",\n        niceName: \"civic-crx\",\n      },\n      {\n        id: \"Honda_Civic_del_Sol\",\n        name: \"Civic del Sol\",\n        niceName: \"civic-del-sol\",\n      },\n      {\n        id: \"Honda_Clarity\",\n        name: \"Clarity\",\n        niceName: \"clarity\",\n      },\n      {\n        id: \"Honda_Crosstour\",\n        name: \"Crosstour\",\n        niceName: \"crosstour\",\n      },\n      {\n        id: \"Honda_Element\",\n        name: \"Element\",\n        niceName: \"element\",\n      },\n      {\n        id: \"Honda_Fit\",\n        name: \"Fit\",\n        niceName: \"fit\",\n      },\n      {\n        id: \"Honda_Fit_EV\",\n        name: \"Fit EV\",\n        niceName: \"fit-ev\",\n      },\n      {\n        id: \"Honda_HR_V\",\n        name: \"HR-V\",\n        niceName: \"hr-v\",\n      },\n      {\n        id: \"Honda_Insight\",\n        name: \"Insight\",\n        niceName: \"insight\",\n      },\n      {\n        id: \"Honda_Odyssey\",\n        name: \"Odyssey\",\n        niceName: \"odyssey\",\n      },\n      {\n        id: \"Honda_Passport\",\n        name: \"Passport\",\n        niceName: \"passport\",\n      },\n      {\n        id: \"Honda_Pilot\",\n        name: \"Pilot\",\n        niceName: \"pilot\",\n      },\n      {\n        id: \"Honda_Prelude\",\n        name: \"Prelude\",\n        niceName: \"prelude\",\n      },\n      {\n        id: \"Honda_Ridgeline\",\n        name: \"Ridgeline\",\n        niceName: \"ridgeline\",\n      },\n      {\n        id: \"Honda_S2000\",\n        name: \"S2000\",\n        niceName: \"s2000\",\n      },\n    ],\n  },\n  {\n    id: 200001398,\n    name: \"Hyundai\",\n    niceName: \"hyundai\",\n    models: [\n      {\n        id: \"Hyundai_Accent\",\n        name: \"Accent\",\n        niceName: \"accent\",\n      },\n      {\n        id: \"Hyundai_Azera\",\n        name: \"Azera\",\n        niceName: \"azera\",\n      },\n      {\n        id: \"Hyundai_Elantra\",\n        name: \"Elantra\",\n        niceName: \"elantra\",\n      },\n      {\n        id: \"Hyundai_Elantra_Coupe\",\n        name: \"Elantra Coupe\",\n        niceName: \"elantra-coupe\",\n      },\n      {\n        id: \"Hyundai_Elantra_GT\",\n        name: \"Elantra GT\",\n        niceName: \"elantra-gt\",\n      },\n      {\n        id: \"Hyundai_Elantra_Touring\",\n        name: \"Elantra Touring\",\n        niceName: \"elantra-touring\",\n      },\n      {\n        id: \"Hyundai_Entourage\",\n        name: \"Entourage\",\n        niceName: \"entourage\",\n      },\n      {\n        id: \"Hyundai_Equus\",\n        name: \"Equus\",\n        niceName: \"equus\",\n      },\n      {\n        id: \"Hyundai_Excel\",\n        name: \"Excel\",\n        niceName: \"excel\",\n      },\n      {\n        id: \"Hyundai_Genesis\",\n        name: \"Genesis\",\n        niceName: \"genesis\",\n      },\n      {\n        id: \"Hyundai_Genesis_Coupe\",\n        name: \"Genesis Coupe\",\n        niceName: \"genesis-coupe\",\n      },\n      {\n        id: \"Hyundai_Ioniq\",\n        name: \"Ioniq\",\n        niceName: \"ioniq\",\n      },\n      {\n        id: \"Hyundai_Santa_Fe\",\n        name: \"Santa Fe\",\n        niceName: \"santa-fe\",\n      },\n      {\n        id: \"Hyundai_Santa_Fe_Sport\",\n        name: \"Santa Fe Sport\",\n        niceName: \"santa-fe-sport\",\n      },\n      {\n        id: \"Hyundai_Scoupe\",\n        name: \"Scoupe\",\n        niceName: \"scoupe\",\n      },\n      {\n        id: \"Hyundai_Sonata\",\n        name: \"Sonata\",\n        niceName: \"sonata\",\n      },\n      {\n        id: \"Hyundai_Sonata_Hybrid\",\n        name: \"Sonata Hybrid\",\n        niceName: \"sonata-hybrid\",\n      },\n      {\n        id: \"Hyundai_Sonata_Plug_In_Hybrid\",\n        name: \"Sonata Plug-In Hybrid\",\n        niceName: \"sonata-plug-in-hybrid\",\n      },\n      {\n        id: \"Hyundai_Sonata_Plug_in_Hybrid\",\n        name: \"Sonata Plug-in Hybrid\",\n        niceName: \"sonata-plug-in-hybrid\",\n      },\n      {\n        id: \"Hyundai_Tiburon\",\n        name: \"Tiburon\",\n        niceName: \"tiburon\",\n      },\n      {\n        id: \"Hyundai_Tucson\",\n        name: \"Tucson\",\n        niceName: \"tucson\",\n      },\n      {\n        id: \"Hyundai_Veloster\",\n        name: \"Veloster\",\n        niceName: \"veloster\",\n      },\n      {\n        id: \"Hyundai_Veracruz\",\n        name: \"Veracruz\",\n        niceName: \"veracruz\",\n      },\n      {\n        id: \"Hyundai_XG300\",\n        name: \"XG300\",\n        niceName: \"xg300\",\n      },\n      {\n        id: \"Hyundai_XG350\",\n        name: \"XG350\",\n        niceName: \"xg350\",\n      },\n    ],\n  },\n  {\n    id: 200000089,\n    name: \"Infiniti\",\n    niceName: \"infiniti\",\n    models: [\n      {\n        id: \"Infiniti_EX\",\n        name: \"EX\",\n        niceName: \"ex\",\n      },\n      {\n        id: \"Infiniti_EX35\",\n        name: \"EX35\",\n        niceName: \"ex35\",\n      },\n      {\n        id: \"Infiniti_FX\",\n        name: \"FX\",\n        niceName: \"fx\",\n      },\n      {\n        id: \"Infiniti_FX35\",\n        name: \"FX35\",\n        niceName: \"fx35\",\n      },\n      {\n        id: \"Infiniti_FX45\",\n        name: \"FX45\",\n        niceName: \"fx45\",\n      },\n      {\n        id: \"Infiniti_FX50\",\n        name: \"FX50\",\n        niceName: \"fx50\",\n      },\n      {\n        id: \"Infiniti_G_Convertible\",\n        name: \"G Convertible\",\n        niceName: \"g-convertible\",\n      },\n      {\n        id: \"Infiniti_G_Coupe\",\n        name: \"G Coupe\",\n        niceName: \"g-coupe\",\n      },\n      {\n        id: \"Infiniti_G_Sedan\",\n        name: \"G Sedan\",\n        niceName: \"g-sedan\",\n      },\n      {\n        id: \"Infiniti_G20\",\n        name: \"G20\",\n        niceName: \"g20\",\n      },\n      {\n        id: \"Infiniti_G35\",\n        name: \"G35\",\n        niceName: \"g35\",\n      },\n      {\n        id: \"Infiniti_G37\",\n        name: \"G37\",\n        niceName: \"g37\",\n      },\n      {\n        id: \"Infiniti_G37_Convertible\",\n        name: \"G37 Convertible\",\n        niceName: \"g37-convertible\",\n      },\n      {\n        id: \"Infiniti_G37_Coupe\",\n        name: \"G37 Coupe\",\n        niceName: \"g37-coupe\",\n      },\n      {\n        id: \"Infiniti_G37_Sedan\",\n        name: \"G37 Sedan\",\n        niceName: \"g37-sedan\",\n      },\n      {\n        id: \"Infiniti_I30\",\n        name: \"I30\",\n        niceName: \"i30\",\n      },\n      {\n        id: \"Infiniti_I35\",\n        name: \"I35\",\n        niceName: \"i35\",\n      },\n      {\n        id: \"Infiniti_J30\",\n        name: \"J30\",\n        niceName: \"j30\",\n      },\n      {\n        id: \"Infiniti_JX\",\n        name: \"JX\",\n        niceName: \"jx\",\n      },\n      {\n        id: \"Infiniti_M\",\n        name: \"M\",\n        niceName: \"m\",\n      },\n      {\n        id: \"Infiniti_M30\",\n        name: \"M30\",\n        niceName: \"m30\",\n      },\n      {\n        id: \"Infiniti_M35\",\n        name: \"M35\",\n        niceName: \"m35\",\n      },\n      {\n        id: \"Infiniti_M37\",\n        name: \"M37\",\n        niceName: \"m37\",\n      },\n      {\n        id: \"Infiniti_M45\",\n        name: \"M45\",\n        niceName: \"m45\",\n      },\n      {\n        id: \"Infiniti_M56\",\n        name: \"M56\",\n        niceName: \"m56\",\n      },\n      {\n        id: \"Infiniti_Q40\",\n        name: \"Q40\",\n        niceName: \"q40\",\n      },\n      {\n        id: \"Infiniti_Q45\",\n        name: \"Q45\",\n        niceName: \"q45\",\n      },\n      {\n        id: \"Infiniti_Q50\",\n        name: \"Q50\",\n        niceName: \"q50\",\n      },\n      {\n        id: \"Infiniti_Q60_Convertible\",\n        name: \"Q60 Convertible\",\n        niceName: \"q60-convertible\",\n      },\n      {\n        id: \"Infiniti_Q60_Coupe\",\n        name: \"Q60 Coupe\",\n        niceName: \"q60-coupe\",\n      },\n      {\n        id: \"Infiniti_Q70\",\n        name: \"Q70\",\n        niceName: \"q70\",\n      },\n      {\n        id: \"Infiniti_QX\",\n        name: \"QX\",\n        niceName: \"qx\",\n      },\n      {\n        id: \"Infiniti_QX30\",\n        name: \"QX30\",\n        niceName: \"qx30\",\n      },\n      {\n        id: \"Infiniti_QX4\",\n        name: \"QX4\",\n        niceName: \"qx4\",\n      },\n      {\n        id: \"Infiniti_QX50\",\n        name: \"QX50\",\n        niceName: \"qx50\",\n      },\n      {\n        id: \"Infiniti_QX56\",\n        name: \"QX56\",\n        niceName: \"qx56\",\n      },\n      {\n        id: \"Infiniti_QX60\",\n        name: \"QX60\",\n        niceName: \"qx60\",\n      },\n      {\n        id: \"Infiniti_QX70\",\n        name: \"QX70\",\n        niceName: \"qx70\",\n      },\n      {\n        id: \"Infiniti_QX80\",\n        name: \"QX80\",\n        niceName: \"qx80\",\n      },\n    ],\n  },\n  {\n    id: 200110731,\n    name: \"Isuzu\",\n    niceName: \"isuzu\",\n    models: [\n      {\n        id: \"Isuzu_Amigo\",\n        name: \"Amigo\",\n        niceName: \"amigo\",\n      },\n      {\n        id: \"Isuzu_Ascender\",\n        name: \"Ascender\",\n        niceName: \"ascender\",\n      },\n      {\n        id: \"Isuzu_Axiom\",\n        name: \"Axiom\",\n        niceName: \"axiom\",\n      },\n      {\n        id: \"Isuzu_Hombre\",\n        name: \"Hombre\",\n        niceName: \"hombre\",\n      },\n      {\n        id: \"Isuzu_Impulse\",\n        name: \"Impulse\",\n        niceName: \"impulse\",\n      },\n      {\n        id: \"Isuzu_Oasis\",\n        name: \"Oasis\",\n        niceName: \"oasis\",\n      },\n      {\n        id: \"Isuzu_Pickup\",\n        name: \"Pickup\",\n        niceName: \"pickup\",\n      },\n      {\n        id: \"Isuzu_Rodeo\",\n        name: \"Rodeo\",\n        niceName: \"rodeo\",\n      },\n      {\n        id: \"Isuzu_Rodeo_Sport\",\n        name: \"Rodeo Sport\",\n        niceName: \"rodeo-sport\",\n      },\n      {\n        id: \"Isuzu_Stylus\",\n        name: \"Stylus\",\n        niceName: \"stylus\",\n      },\n      {\n        id: \"Isuzu_Trooper\",\n        name: \"Trooper\",\n        niceName: \"trooper\",\n      },\n      {\n        id: \"Isuzu_VehiCROSS\",\n        name: \"VehiCROSS\",\n        niceName: \"vehicross\",\n      },\n      {\n        id: \"Isuzu_i_Series\",\n        name: \"i-Series\",\n        niceName: \"i-series\",\n      },\n    ],\n  },\n  {\n    id: 200003196,\n    name: \"Jaguar\",\n    niceName: \"jaguar\",\n    models: [\n      {\n        id: \"Jaguar_F_PACE\",\n        name: \"F-PACE\",\n        niceName: \"f-pace\",\n      },\n      {\n        id: \"Jaguar_F_TYPE\",\n        name: \"F-TYPE\",\n        niceName: \"f-type\",\n      },\n      {\n        id: \"Jaguar_S_Type\",\n        name: \"S-Type\",\n        niceName: \"s-type\",\n      },\n      {\n        id: \"Jaguar_X_Type\",\n        name: \"X-Type\",\n        niceName: \"x-type\",\n      },\n      {\n        id: \"Jaguar_XE\",\n        name: \"XE\",\n        niceName: \"xe\",\n      },\n      {\n        id: \"Jaguar_XF\",\n        name: \"XF\",\n        niceName: \"xf\",\n      },\n      {\n        id: \"Jaguar_XJ\",\n        name: \"XJ\",\n        niceName: \"xj\",\n      },\n      {\n        id: \"Jaguar_XJ_Series\",\n        name: \"XJ-Series\",\n        niceName: \"xj-series\",\n      },\n      {\n        id: \"Jaguar_XJR\",\n        name: \"XJR\",\n        niceName: \"xjr\",\n      },\n      {\n        id: \"Jaguar_XK\",\n        name: \"XK\",\n        niceName: \"xk\",\n      },\n      {\n        id: \"Jaguar_XK_Series\",\n        name: \"XK-Series\",\n        niceName: \"xk-series\",\n      },\n      {\n        id: \"Jaguar_XKR\",\n        name: \"XKR\",\n        niceName: \"xkr\",\n      },\n    ],\n  },\n  {\n    id: 200001510,\n    name: \"Jeep\",\n    niceName: \"jeep\",\n    models: [\n      {\n        id: \"Jeep_Cherokee\",\n        name: \"Cherokee\",\n        niceName: \"cherokee\",\n      },\n      {\n        id: \"Jeep_Comanche\",\n        name: \"Comanche\",\n        niceName: \"comanche\",\n      },\n      {\n        id: \"Jeep_Commander\",\n        name: \"Commander\",\n        niceName: \"commander\",\n      },\n      {\n        id: \"Jeep_Compass\",\n        name: \"Compass\",\n        niceName: \"compass\",\n      },\n      {\n        id: \"Jeep_Grand_Cherokee\",\n        name: \"Grand Cherokee\",\n        niceName: \"grand-cherokee\",\n      },\n      {\n        id: \"Jeep_Grand_Cherokee_SRT\",\n        name: \"Grand Cherokee SRT\",\n        niceName: \"grand-cherokee-srt\",\n      },\n      {\n        id: \"Jeep_Grand_Wagoneer\",\n        name: \"Grand Wagoneer\",\n        niceName: \"grand-wagoneer\",\n      },\n      {\n        id: \"Jeep_Liberty\",\n        name: \"Liberty\",\n        niceName: \"liberty\",\n      },\n      {\n        id: \"Jeep_Patriot\",\n        name: \"Patriot\",\n        niceName: \"patriot\",\n      },\n      {\n        id: \"Jeep_Renegade\",\n        name: \"Renegade\",\n        niceName: \"renegade\",\n      },\n      {\n        id: \"Jeep_Wagoneer\",\n        name: \"Wagoneer\",\n        niceName: \"wagoneer\",\n      },\n      {\n        id: \"Jeep_Wrangler\",\n        name: \"Wrangler\",\n        niceName: \"wrangler\",\n      },\n    ],\n  },\n  {\n    id: 200003063,\n    name: \"Kia\",\n    niceName: \"kia\",\n    models: [\n      {\n        id: \"Kia_Amanti\",\n        name: \"Amanti\",\n        niceName: \"amanti\",\n      },\n      {\n        id: \"Kia_Borrego\",\n        name: \"Borrego\",\n        niceName: \"borrego\",\n      },\n      {\n        id: \"Kia_Cadenza\",\n        name: \"Cadenza\",\n        niceName: \"cadenza\",\n      },\n      {\n        id: \"Kia_Forte\",\n        name: \"Forte\",\n        niceName: \"forte\",\n      },\n      {\n        id: \"Kia_K900\",\n        name: \"K900\",\n        niceName: \"k900\",\n      },\n      {\n        id: \"Kia_Niro\",\n        name: \"Niro\",\n        niceName: \"niro\",\n      },\n      {\n        id: \"Kia_Optima\",\n        name: \"Optima\",\n        niceName: \"optima\",\n      },\n      {\n        id: \"Kia_Optima_Hybrid\",\n        name: \"Optima Hybrid\",\n        niceName: \"optima-hybrid\",\n      },\n      {\n        id: \"Kia_Rio\",\n        name: \"Rio\",\n        niceName: \"rio\",\n      },\n      {\n        id: \"Kia_Rondo\",\n        name: \"Rondo\",\n        niceName: \"rondo\",\n      },\n      {\n        id: \"Kia_Sedona\",\n        name: \"Sedona\",\n        niceName: \"sedona\",\n      },\n      {\n        id: \"Kia_Sephia\",\n        name: \"Sephia\",\n        niceName: \"sephia\",\n      },\n      {\n        id: \"Kia_Sorento\",\n        name: \"Sorento\",\n        niceName: \"sorento\",\n      },\n      {\n        id: \"Kia_Soul\",\n        name: \"Soul\",\n        niceName: \"soul\",\n      },\n      {\n        id: \"Kia_Soul_EV\",\n        name: \"Soul EV\",\n        niceName: \"soul-ev\",\n      },\n      {\n        id: \"Kia_Spectra\",\n        name: \"Spectra\",\n        niceName: \"spectra\",\n      },\n      {\n        id: \"Kia_Sportage\",\n        name: \"Sportage\",\n        niceName: \"sportage\",\n      },\n    ],\n  },\n  {\n    id: 200005922,\n    name: \"Lamborghini\",\n    niceName: \"lamborghini\",\n    models: [\n      {\n        id: \"Lamborghini_Aventador\",\n        name: \"Aventador\",\n        niceName: \"aventador\",\n      },\n      {\n        id: \"Lamborghini_Diablo\",\n        name: \"Diablo\",\n        niceName: \"diablo\",\n      },\n      {\n        id: \"Lamborghini_Gallardo\",\n        name: \"Gallardo\",\n        niceName: \"gallardo\",\n      },\n      {\n        id: \"Lamborghini_Huracan\",\n        name: \"Huracan\",\n        niceName: \"huracan\",\n      },\n      {\n        id: \"Lamborghini_Murcielago\",\n        name: \"Murcielago\",\n        niceName: \"murcielago\",\n      },\n      {\n        id: \"Lamborghini_Reventon\",\n        name: \"Reventon\",\n        niceName: \"reventon\",\n      },\n    ],\n  },\n  {\n    id: 200006582,\n    name: \"Land Rover\",\n    niceName: \"land-rover\",\n    models: [\n      {\n        id: \"Land_Rover_Defender\",\n        name: \"Defender\",\n        niceName: \"defender\",\n      },\n      {\n        id: \"Land_Rover_Discovery\",\n        name: \"Discovery\",\n        niceName: \"discovery\",\n      },\n      {\n        id: \"Land_Rover_Discovery_Series_II\",\n        name: \"Discovery Series II\",\n        niceName: \"discovery-series-ii\",\n      },\n      {\n        id: \"Land_Rover_Discovery_Sport\",\n        name: \"Discovery Sport\",\n        niceName: \"discovery-sport\",\n      },\n      {\n        id: \"Land_Rover_Freelander\",\n        name: \"Freelander\",\n        niceName: \"freelander\",\n      },\n      {\n        id: \"Land_Rover_LR2\",\n        name: \"LR2\",\n        niceName: \"lr2\",\n      },\n      {\n        id: \"Land_Rover_LR3\",\n        name: \"LR3\",\n        niceName: \"lr3\",\n      },\n      {\n        id: \"Land_Rover_LR4\",\n        name: \"LR4\",\n        niceName: \"lr4\",\n      },\n      {\n        id: \"Land_Rover_Range_Rover\",\n        name: \"Range Rover\",\n        niceName: \"range-rover\",\n      },\n      {\n        id: \"Land_Rover_Range_Rover_Evoque\",\n        name: \"Range Rover Evoque\",\n        niceName: \"range-rover-evoque\",\n      },\n      {\n        id: \"Land_Rover_Range_Rover_Sport\",\n        name: \"Range Rover Sport\",\n        niceName: \"range-rover-sport\",\n      },\n    ],\n  },\n  {\n    id: 200001623,\n    name: \"Lexus\",\n    niceName: \"lexus\",\n    models: [\n      {\n        id: \"Lexus_CT_200h\",\n        name: \"CT 200h\",\n        niceName: \"ct-200h\",\n      },\n      {\n        id: \"Lexus_ES_250\",\n        name: \"ES 250\",\n        niceName: \"es-250\",\n      },\n      {\n        id: \"Lexus_ES_300\",\n        name: \"ES 300\",\n        niceName: \"es-300\",\n      },\n      {\n        id: \"Lexus_ES_300h\",\n        name: \"ES 300h\",\n        niceName: \"es-300h\",\n      },\n      {\n        id: \"Lexus_ES_330\",\n        name: \"ES 330\",\n        niceName: \"es-330\",\n      },\n      {\n        id: \"Lexus_ES_350\",\n        name: \"ES 350\",\n        niceName: \"es-350\",\n      },\n      {\n        id: \"Lexus_GS_200t\",\n        name: \"GS 200t\",\n        niceName: \"gs-200t\",\n      },\n      {\n        id: \"Lexus_GS_300\",\n        name: \"GS 300\",\n        niceName: \"gs-300\",\n      },\n      {\n        id: \"Lexus_GS_350\",\n        name: \"GS 350\",\n        niceName: \"gs-350\",\n      },\n      {\n        id: \"Lexus_GS_400\",\n        name: \"GS 400\",\n        niceName: \"gs-400\",\n      },\n      {\n        id: \"Lexus_GS_430\",\n        name: \"GS 430\",\n        niceName: \"gs-430\",\n      },\n      {\n        id: \"Lexus_GS_450h\",\n        name: \"GS 450h\",\n        niceName: \"gs-450h\",\n      },\n      {\n        id: \"Lexus_GS_460\",\n        name: \"GS 460\",\n        niceName: \"gs-460\",\n      },\n      {\n        id: \"Lexus_GS_F\",\n        name: \"GS F\",\n        niceName: \"gs-f\",\n      },\n      {\n        id: \"Lexus_GX_460\",\n        name: \"GX 460\",\n        niceName: \"gx-460\",\n      },\n      {\n        id: \"Lexus_GX_470\",\n        name: \"GX 470\",\n        niceName: \"gx-470\",\n      },\n      {\n        id: \"Lexus_HS_250h\",\n        name: \"HS 250h\",\n        niceName: \"hs-250h\",\n      },\n      {\n        id: \"Lexus_IS_200t\",\n        name: \"IS 200t\",\n        niceName: \"is-200t\",\n      },\n      {\n        id: \"Lexus_IS_250\",\n        name: \"IS 250\",\n        niceName: \"is-250\",\n      },\n      {\n        id: \"Lexus_IS_250_C\",\n        name: \"IS 250 C\",\n        niceName: \"is-250-c\",\n      },\n      {\n        id: \"Lexus_IS_300\",\n        name: \"IS 300\",\n        niceName: \"is-300\",\n      },\n      {\n        id: \"Lexus_IS_350\",\n        name: \"IS 350\",\n        niceName: \"is-350\",\n      },\n      {\n        id: \"Lexus_IS_350_C\",\n        name: \"IS 350 C\",\n        niceName: \"is-350-c\",\n      },\n      {\n        id: \"Lexus_IS_F\",\n        name: \"IS F\",\n        niceName: \"is-f\",\n      },\n      {\n        id: \"Lexus_LC_500\",\n        name: \"LC 500\",\n        niceName: \"lc-500\",\n      },\n      {\n        id: \"Lexus_LFA\",\n        name: \"LFA\",\n        niceName: \"lfa\",\n      },\n      {\n        id: \"Lexus_LS_400\",\n        name: \"LS 400\",\n        niceName: \"ls-400\",\n      },\n      {\n        id: \"Lexus_LS_430\",\n        name: \"LS 430\",\n        niceName: \"ls-430\",\n      },\n      {\n        id: \"Lexus_LS_460\",\n        name: \"LS 460\",\n        niceName: \"ls-460\",\n      },\n      {\n        id: \"Lexus_LS_600h_L\",\n        name: \"LS 600h L\",\n        niceName: \"ls-600h-l\",\n      },\n      {\n        id: \"Lexus_LX_450\",\n        name: \"LX 450\",\n        niceName: \"lx-450\",\n      },\n      {\n        id: \"Lexus_LX_470\",\n        name: \"LX 470\",\n        niceName: \"lx-470\",\n      },\n      {\n        id: \"Lexus_LX_570\",\n        name: \"LX 570\",\n        niceName: \"lx-570\",\n      },\n      {\n        id: \"Lexus_NX_200t\",\n        name: \"NX 200t\",\n        niceName: \"nx-200t\",\n      },\n      {\n        id: \"Lexus_NX_300h\",\n        name: \"NX 300h\",\n        niceName: \"nx-300h\",\n      },\n      {\n        id: \"Lexus_RC_200t\",\n        name: \"RC 200t\",\n        niceName: \"rc-200t\",\n      },\n      {\n        id: \"Lexus_RC_300\",\n        name: \"RC 300\",\n        niceName: \"rc-300\",\n      },\n      {\n        id: \"Lexus_RC_350\",\n        name: \"RC 350\",\n        niceName: \"rc-350\",\n      },\n      {\n        id: \"Lexus_RC_F\",\n        name: \"RC F\",\n        niceName: \"rc-f\",\n      },\n      {\n        id: \"Lexus_RX_300\",\n        name: \"RX 300\",\n        niceName: \"rx-300\",\n      },\n      {\n        id: \"Lexus_RX_330\",\n        name: \"RX 330\",\n        niceName: \"rx-330\",\n      },\n      {\n        id: \"Lexus_RX_350\",\n        name: \"RX 350\",\n        niceName: \"rx-350\",\n      },\n      {\n        id: \"Lexus_RX_400h\",\n        name: \"RX 400h\",\n        niceName: \"rx-400h\",\n      },\n      {\n        id: \"Lexus_RX_450h\",\n        name: \"RX 450h\",\n        niceName: \"rx-450h\",\n      },\n      {\n        id: \"Lexus_SC_300\",\n        name: \"SC 300\",\n        niceName: \"sc-300\",\n      },\n      {\n        id: \"Lexus_SC_400\",\n        name: \"SC 400\",\n        niceName: \"sc-400\",\n      },\n      {\n        id: \"Lexus_SC_430\",\n        name: \"SC 430\",\n        niceName: \"sc-430\",\n      },\n    ],\n  },\n  {\n    id: 200001777,\n    name: \"Lincoln\",\n    niceName: \"lincoln\",\n    models: [\n      {\n        id: \"Lincoln_Aviator\",\n        name: \"Aviator\",\n        niceName: \"aviator\",\n      },\n      {\n        id: \"Lincoln_Blackwood\",\n        name: \"Blackwood\",\n        niceName: \"blackwood\",\n      },\n      {\n        id: \"Lincoln_Continental\",\n        name: \"Continental\",\n        niceName: \"continental\",\n      },\n      {\n        id: \"Lincoln_LS\",\n        name: \"LS\",\n        niceName: \"ls\",\n      },\n      {\n        id: \"Lincoln_MKC\",\n        name: \"MKC\",\n        niceName: \"mkc\",\n      },\n      {\n        id: \"Lincoln_MKS\",\n        name: \"MKS\",\n        niceName: \"mks\",\n      },\n      {\n        id: \"Lincoln_MKT\",\n        name: \"MKT\",\n        niceName: \"mkt\",\n      },\n      {\n        id: \"Lincoln_MKX\",\n        name: \"MKX\",\n        niceName: \"mkx\",\n      },\n      {\n        id: \"Lincoln_MKZ\",\n        name: \"MKZ\",\n        niceName: \"mkz\",\n      },\n      {\n        id: \"Lincoln_MKZ_Hybrid\",\n        name: \"MKZ Hybrid\",\n        niceName: \"mkz-hybrid\",\n      },\n      {\n        id: \"Lincoln_Mark_LT\",\n        name: \"Mark LT\",\n        niceName: \"mark-lt\",\n      },\n      {\n        id: \"Lincoln_Mark_VII\",\n        name: \"Mark VII\",\n        niceName: \"mark-vii\",\n      },\n      {\n        id: \"Lincoln_Mark_VIII\",\n        name: \"Mark VIII\",\n        niceName: \"mark-viii\",\n      },\n      {\n        id: \"Lincoln_Navigator\",\n        name: \"Navigator\",\n        niceName: \"navigator\",\n      },\n      {\n        id: \"Lincoln_Navigator_L\",\n        name: \"Navigator L\",\n        niceName: \"navigator-l\",\n      },\n      {\n        id: \"Lincoln_Town_Car\",\n        name: \"Town Car\",\n        niceName: \"town-car\",\n      },\n      {\n        id: \"Lincoln_Zephyr\",\n        name: \"Zephyr\",\n        niceName: \"zephyr\",\n      },\n    ],\n  },\n  {\n    id: 200006242,\n    name: \"Lotus\",\n    niceName: \"lotus\",\n    models: [\n      {\n        id: \"Lotus_Elise\",\n        name: \"Elise\",\n        niceName: \"elise\",\n      },\n      {\n        id: \"Lotus_Esprit\",\n        name: \"Esprit\",\n        niceName: \"esprit\",\n      },\n      {\n        id: \"Lotus_Evora\",\n        name: \"Evora\",\n        niceName: \"evora\",\n      },\n      {\n        id: \"Lotus_Evora_400\",\n        name: \"Evora 400\",\n        niceName: \"evora-400\",\n      },\n      {\n        id: \"Lotus_Exige\",\n        name: \"Exige\",\n        niceName: \"exige\",\n      },\n    ],\n  },\n  {\n    id: 200002305,\n    name: \"MINI\",\n    niceName: \"mini\",\n    models: [\n      {\n        id: \"MINI_Clubman\",\n        name: \"Clubman\",\n        niceName: \"clubman\",\n      },\n      {\n        id: \"MINI_Convertible\",\n        name: \"Convertible\",\n        niceName: \"convertible\",\n      },\n      {\n        id: \"MINI_Cooper\",\n        name: \"Cooper\",\n        niceName: \"cooper\",\n      },\n      {\n        id: \"MINI_Cooper_Clubman\",\n        name: \"Cooper Clubman\",\n        niceName: \"cooper-clubman\",\n      },\n      {\n        id: \"MINI_Cooper_Countryman\",\n        name: \"Cooper Countryman\",\n        niceName: \"cooper-countryman\",\n      },\n      {\n        id: \"MINI_Cooper_Coupe\",\n        name: \"Cooper Coupe\",\n        niceName: \"cooper-coupe\",\n      },\n      {\n        id: \"MINI_Cooper_Paceman\",\n        name: \"Cooper Paceman\",\n        niceName: \"cooper-paceman\",\n      },\n      {\n        id: \"MINI_Cooper_Roadster\",\n        name: \"Cooper Roadster\",\n        niceName: \"cooper-roadster\",\n      },\n      {\n        id: \"MINI_Hardtop\",\n        name: \"Hardtop\",\n        niceName: \"hardtop\",\n      },\n      {\n        id: \"MINI_Hardtop_2_Door\",\n        name: \"Hardtop 2 Door\",\n        niceName: \"hardtop-2-door\",\n      },\n      {\n        id: \"MINI_Hardtop_4_Door\",\n        name: \"Hardtop 4 Door\",\n        niceName: \"hardtop-4-door\",\n      },\n    ],\n  },\n  {\n    id: 200028029,\n    name: \"Maserati\",\n    niceName: \"maserati\",\n    models: [\n      {\n        id: \"Maserati_Coupe\",\n        name: \"Coupe\",\n        niceName: \"coupe\",\n      },\n      {\n        id: \"Maserati_Ghibli\",\n        name: \"Ghibli\",\n        niceName: \"ghibli\",\n      },\n      {\n        id: \"Maserati_GranSport\",\n        name: \"GranSport\",\n        niceName: \"gransport\",\n      },\n      {\n        id: \"Maserati_GranTurismo\",\n        name: \"GranTurismo\",\n        niceName: \"granturismo\",\n      },\n      {\n        id: \"Maserati_GranTurismo_Convertible\",\n        name: \"GranTurismo Convertible\",\n        niceName: \"granturismo-convertible\",\n      },\n      {\n        id: \"Maserati_Levante\",\n        name: \"Levante\",\n        niceName: \"levante\",\n      },\n      {\n        id: \"Maserati_Quattroporte\",\n        name: \"Quattroporte\",\n        niceName: \"quattroporte\",\n      },\n      {\n        id: \"Maserati_Spyder\",\n        name: \"Spyder\",\n        niceName: \"spyder\",\n      },\n    ],\n  },\n  {\n    id: 200043087,\n    name: \"Maybach\",\n    niceName: \"maybach\",\n    models: [\n      {\n        id: \"Maybach_57\",\n        name: \"57\",\n        niceName: \"57\",\n      },\n      {\n        id: \"Maybach_62\",\n        name: \"62\",\n        niceName: \"62\",\n      },\n      {\n        id: \"Maybach_Landaulet\",\n        name: \"Landaulet\",\n        niceName: \"landaulet\",\n      },\n    ],\n  },\n  {\n    id: 200004100,\n    name: \"Mazda\",\n    niceName: \"mazda\",\n    models: [\n      {\n        id: \"Mazda_2\",\n        name: \"2\",\n        niceName: \"2\",\n      },\n      {\n        id: \"Mazda_3\",\n        name: \"3\",\n        niceName: \"3\",\n      },\n      {\n        id: \"Mazda_323\",\n        name: \"323\",\n        niceName: \"323\",\n      },\n      {\n        id: \"Mazda_5\",\n        name: \"5\",\n        niceName: \"5\",\n      },\n      {\n        id: \"Mazda_6\",\n        name: \"6\",\n        niceName: \"6\",\n      },\n      {\n        id: \"Mazda_626\",\n        name: \"626\",\n        niceName: \"626\",\n      },\n      {\n        id: \"Mazda_929\",\n        name: \"929\",\n        niceName: \"929\",\n      },\n      {\n        id: \"Mazda_B_Series\",\n        name: \"B-Series\",\n        niceName: \"b-series\",\n      },\n      {\n        id: \"Mazda_B_Series_Pickup\",\n        name: \"B-Series Pickup\",\n        niceName: \"b-series-pickup\",\n      },\n      {\n        id: \"Mazda_B_Series_Truck\",\n        name: \"B-Series Truck\",\n        niceName: \"b-series-truck\",\n      },\n      {\n        id: \"Mazda_CX_3\",\n        name: \"CX-3\",\n        niceName: \"cx-3\",\n      },\n      {\n        id: \"Mazda_CX_5\",\n        name: \"CX-5\",\n        niceName: \"cx-5\",\n      },\n      {\n        id: \"Mazda_CX_7\",\n        name: \"CX-7\",\n        niceName: \"cx-7\",\n      },\n      {\n        id: \"Mazda_CX_9\",\n        name: \"CX-9\",\n        niceName: \"cx-9\",\n      },\n      {\n        id: \"Mazda_MPV\",\n        name: \"MPV\",\n        niceName: \"mpv\",\n      },\n      {\n        id: \"Mazda_MX_3\",\n        name: \"MX-3\",\n        niceName: \"mx-3\",\n      },\n      {\n        id: \"Mazda_MX_5_Miata\",\n        name: \"MX-5 Miata\",\n        niceName: \"mx-5-miata\",\n      },\n      {\n        id: \"Mazda_MX_5_Miata_RF\",\n        name: \"MX-5 Miata RF\",\n        niceName: \"mx-5-miata-rf\",\n      },\n      {\n        id: \"Mazda_MX_6\",\n        name: \"MX-6\",\n        niceName: \"mx-6\",\n      },\n      {\n        id: \"Mazda_Mazdaspeed_3\",\n        name: \"Mazdaspeed 3\",\n        niceName: \"mazdaspeed-3\",\n      },\n      {\n        id: \"Mazda_Mazdaspeed_6\",\n        name: \"Mazdaspeed 6\",\n        niceName: \"mazdaspeed-6\",\n      },\n      {\n        id: \"Mazda_Mazdaspeed_MX_5_Miata\",\n        name: \"Mazdaspeed MX-5 Miata\",\n        niceName: \"mazdaspeed-mx-5-miata\",\n      },\n      {\n        id: \"Mazda_Mazdaspeed_Protege\",\n        name: \"Mazdaspeed Protege\",\n        niceName: \"mazdaspeed-protege\",\n      },\n      {\n        id: \"Mazda_Millenia\",\n        name: \"Millenia\",\n        niceName: \"millenia\",\n      },\n      {\n        id: \"Mazda_Navajo\",\n        name: \"Navajo\",\n        niceName: \"navajo\",\n      },\n      {\n        id: \"Mazda_Protege\",\n        name: \"Protege\",\n        niceName: \"protege\",\n      },\n      {\n        id: \"Mazda_Protege5\",\n        name: \"Protege5\",\n        niceName: \"protege5\",\n      },\n      {\n        id: \"Mazda_RX_7\",\n        name: \"RX-7\",\n        niceName: \"rx-7\",\n      },\n      {\n        id: \"Mazda_RX_8\",\n        name: \"RX-8\",\n        niceName: \"rx-8\",\n      },\n      {\n        id: \"Mazda_Tribute\",\n        name: \"Tribute\",\n        niceName: \"tribute\",\n      },\n      {\n        id: \"Mazda_Tribute_Hybrid\",\n        name: \"Tribute Hybrid\",\n        niceName: \"tribute-hybrid\",\n      },\n      {\n        id: \"Mazda_Truck\",\n        name: \"Truck\",\n        niceName: \"truck\",\n      },\n    ],\n  },\n  {\n    id: 200051397,\n    name: \"McLaren\",\n    niceName: \"mclaren\",\n    models: [\n      {\n        id: \"McLaren_570GT\",\n        name: \"570GT\",\n        niceName: \"570gt\",\n      },\n      {\n        id: \"McLaren_570S\",\n        name: \"570S\",\n        niceName: \"570s\",\n      },\n      {\n        id: \"McLaren_650S_Coupe\",\n        name: \"650S Coupe\",\n        niceName: \"650s-coupe\",\n      },\n      {\n        id: \"McLaren_650S_Spider\",\n        name: \"650S Spider\",\n        niceName: \"650s-spider\",\n      },\n      {\n        id: \"McLaren_MP4_12C\",\n        name: \"MP4-12C\",\n        niceName: \"mp4-12c\",\n      },\n      {\n        id: \"McLaren_MP4_12C_Spider\",\n        name: \"MP4-12C Spider\",\n        niceName: \"mp4-12c-spider\",\n      },\n    ],\n  },\n  {\n    id: 200000130,\n    name: \"Mercedes-Benz\",\n    niceName: \"mercedes-benz\",\n    models: [\n      {\n        id: \"Mercedes_Benz_190_Class\",\n        name: \"190-Class\",\n        niceName: \"190-class\",\n      },\n      {\n        id: \"Mercedes_Benz_300_Class\",\n        name: \"300-Class\",\n        niceName: \"300-class\",\n      },\n      {\n        id: \"Mercedes_Benz_350_Class\",\n        name: \"350-Class\",\n        niceName: \"350-class\",\n      },\n      {\n        id: \"Mercedes_Benz_400_Class\",\n        name: \"400-Class\",\n        niceName: \"400-class\",\n      },\n      {\n        id: \"Mercedes_Benz_420_Class\",\n        name: \"420-Class\",\n        niceName: \"420-class\",\n      },\n      {\n        id: \"Mercedes_Benz_500_Class\",\n        name: \"500-Class\",\n        niceName: \"500-class\",\n      },\n      {\n        id: \"Mercedes_Benz_560_Class\",\n        name: \"560-Class\",\n        niceName: \"560-class\",\n      },\n      {\n        id: \"Mercedes_Benz_600_Class\",\n        name: \"600-Class\",\n        niceName: \"600-class\",\n      },\n      {\n        id: \"Mercedes_Benz_AMG_GT\",\n        name: \"AMG GT\",\n        niceName: \"amg-gt\",\n      },\n      {\n        id: \"Mercedes_Benz_B_Class_Electric_Drive\",\n        name: \"B-Class Electric Drive\",\n        niceName: \"b-class-electric-drive\",\n      },\n      {\n        id: \"Mercedes_Benz_C_Class\",\n        name: \"C-Class\",\n        niceName: \"c-class\",\n      },\n      {\n        id: \"Mercedes_Benz_C36_AMG\",\n        name: \"C36 AMG\",\n        niceName: \"c36-amg\",\n      },\n      {\n        id: \"Mercedes_Benz_C43_AMG\",\n        name: \"C43 AMG\",\n        niceName: \"c43-amg\",\n      },\n      {\n        id: \"Mercedes_Benz_CL_Class\",\n        name: \"CL-Class\",\n        niceName: \"cl-class\",\n      },\n      {\n        id: \"Mercedes_Benz_CLA_Class\",\n        name: \"CLA-Class\",\n        niceName: \"cla-class\",\n      },\n      {\n        id: \"Mercedes_Benz_CLK_Class\",\n        name: \"CLK-Class\",\n        niceName: \"clk-class\",\n      },\n      {\n        id: \"Mercedes_Benz_CLS_Class\",\n        name: \"CLS-Class\",\n        niceName: \"cls-class\",\n      },\n      {\n        id: \"Mercedes_Benz_E_Class\",\n        name: \"E-Class\",\n        niceName: \"e-class\",\n      },\n      {\n        id: \"Mercedes_Benz_E55_AMG\",\n        name: \"E55 AMG\",\n        niceName: \"e55-amg\",\n      },\n      {\n        id: \"Mercedes_Benz_G_Class\",\n        name: \"G-Class\",\n        niceName: \"g-class\",\n      },\n      {\n        id: \"Mercedes_Benz_GL_Class\",\n        name: \"GL-Class\",\n        niceName: \"gl-class\",\n      },\n      {\n        id: \"Mercedes_Benz_GLA_Class\",\n        name: \"GLA-Class\",\n        niceName: \"gla-class\",\n      },\n      {\n        id: \"Mercedes_Benz_GLC_Class\",\n        name: \"GLC-Class\",\n        niceName: \"glc-class\",\n      },\n      {\n        id: \"Mercedes_Benz_GLC_Class_Coupe\",\n        name: \"GLC-Class Coupe\",\n        niceName: \"glc-class-coupe\",\n      },\n      {\n        id: \"Mercedes_Benz_GLE_Class\",\n        name: \"GLE-Class\",\n        niceName: \"gle-class\",\n      },\n      {\n        id: \"Mercedes_Benz_GLE_Class_Coupe\",\n        name: \"GLE-Class Coupe\",\n        niceName: \"gle-class-coupe\",\n      },\n      {\n        id: \"Mercedes_Benz_GLK_Class\",\n        name: \"GLK-Class\",\n        niceName: \"glk-class\",\n      },\n      {\n        id: \"Mercedes_Benz_GLS_Class\",\n        name: \"GLS-Class\",\n        niceName: \"gls-class\",\n      },\n      {\n        id: \"Mercedes_Benz_M_Class\",\n        name: \"M-Class\",\n        niceName: \"m-class\",\n      },\n      {\n        id: \"Mercedes_Benz_ML55_AMG\",\n        name: \"ML55 AMG\",\n        niceName: \"ml55-amg\",\n      },\n      {\n        id: \"Mercedes_Benz_Maybach\",\n        name: \"Maybach\",\n        niceName: \"maybach\",\n      },\n      {\n        id: \"Mercedes_Benz_Metris\",\n        name: \"Metris\",\n        niceName: \"metris\",\n      },\n      {\n        id: \"Mercedes_Benz_R_Class\",\n        name: \"R-Class\",\n        niceName: \"r-class\",\n      },\n      {\n        id: \"Mercedes_Benz_S_Class\",\n        name: \"S-Class\",\n        niceName: \"s-class\",\n      },\n      {\n        id: \"Mercedes_Benz_SL_Class\",\n        name: \"SL-Class\",\n        niceName: \"sl-class\",\n      },\n      {\n        id: \"Mercedes_Benz_SLC_Class\",\n        name: \"SLC-Class\",\n        niceName: \"slc-class\",\n      },\n      {\n        id: \"Mercedes_Benz_SLK_Class\",\n        name: \"SLK-Class\",\n        niceName: \"slk-class\",\n      },\n      {\n        id: \"Mercedes_Benz_SLR_McLaren\",\n        name: \"SLR McLaren\",\n        niceName: \"slr-mclaren\",\n      },\n      {\n        id: \"Mercedes_Benz_SLS_AMG\",\n        name: \"SLS AMG\",\n        niceName: \"sls-amg\",\n      },\n      {\n        id: \"Mercedes_Benz_SLS_AMG_GT\",\n        name: \"SLS AMG GT\",\n        niceName: \"sls-amg-gt\",\n      },\n      {\n        id: \"Mercedes_Benz_SLS_AMG_GT_Final_Edition\",\n        name: \"SLS AMG GT Final Edition\",\n        niceName: \"sls-amg-gt-final-edition\",\n      },\n      {\n        id: \"Mercedes_Benz_Sprinter\",\n        name: \"Sprinter\",\n        niceName: \"sprinter\",\n      },\n      {\n        id: \"Mercedes_Benz_Sprinter_Worker\",\n        name: \"Sprinter Worker\",\n        niceName: \"sprinter-worker\",\n      },\n    ],\n  },\n  {\n    id: 200007711,\n    name: \"Mercury\",\n    niceName: \"mercury\",\n    models: [\n      {\n        id: \"Mercury_Capri\",\n        name: \"Capri\",\n        niceName: \"capri\",\n      },\n      {\n        id: \"Mercury_Cougar\",\n        name: \"Cougar\",\n        niceName: \"cougar\",\n      },\n      {\n        id: \"Mercury_Grand_Marquis\",\n        name: \"Grand Marquis\",\n        niceName: \"grand-marquis\",\n      },\n      {\n        id: \"Mercury_Marauder\",\n        name: \"Marauder\",\n        niceName: \"marauder\",\n      },\n      {\n        id: \"Mercury_Mariner\",\n        name: \"Mariner\",\n        niceName: \"mariner\",\n      },\n      {\n        id: \"Mercury_Mariner_Hybrid\",\n        name: \"Mariner Hybrid\",\n        niceName: \"mariner-hybrid\",\n      },\n      {\n        id: \"Mercury_Milan\",\n        name: \"Milan\",\n        niceName: \"milan\",\n      },\n      {\n        id: \"Mercury_Milan_Hybrid\",\n        name: \"Milan Hybrid\",\n        niceName: \"milan-hybrid\",\n      },\n      {\n        id: \"Mercury_Montego\",\n        name: \"Montego\",\n        niceName: \"montego\",\n      },\n      {\n        id: \"Mercury_Monterey\",\n        name: \"Monterey\",\n        niceName: \"monterey\",\n      },\n      {\n        id: \"Mercury_Mountaineer\",\n        name: \"Mountaineer\",\n        niceName: \"mountaineer\",\n      },\n      {\n        id: \"Mercury_Mystique\",\n        name: \"Mystique\",\n        niceName: \"mystique\",\n      },\n      {\n        id: \"Mercury_Sable\",\n        name: \"Sable\",\n        niceName: \"sable\",\n      },\n      {\n        id: \"Mercury_Topaz\",\n        name: \"Topaz\",\n        niceName: \"topaz\",\n      },\n      {\n        id: \"Mercury_Tracer\",\n        name: \"Tracer\",\n        niceName: \"tracer\",\n      },\n      {\n        id: \"Mercury_Villager\",\n        name: \"Villager\",\n        niceName: \"villager\",\n      },\n    ],\n  },\n  {\n    id: 200002915,\n    name: \"Mitsubishi\",\n    niceName: \"mitsubishi\",\n    models: [\n      {\n        id: \"Mitsubishi_3000GT\",\n        name: \"3000GT\",\n        niceName: \"3000gt\",\n      },\n      {\n        id: \"Mitsubishi_Diamante\",\n        name: \"Diamante\",\n        niceName: \"diamante\",\n      },\n      {\n        id: \"Mitsubishi_Eclipse\",\n        name: \"Eclipse\",\n        niceName: \"eclipse\",\n      },\n      {\n        id: \"Mitsubishi_Eclipse_Spyder\",\n        name: \"Eclipse Spyder\",\n        niceName: \"eclipse-spyder\",\n      },\n      {\n        id: \"Mitsubishi_Endeavor\",\n        name: \"Endeavor\",\n        niceName: \"endeavor\",\n      },\n      {\n        id: \"Mitsubishi_Expo\",\n        name: \"Expo\",\n        niceName: \"expo\",\n      },\n      {\n        id: \"Mitsubishi_Galant\",\n        name: \"Galant\",\n        niceName: \"galant\",\n      },\n      {\n        id: \"Mitsubishi_Lancer\",\n        name: \"Lancer\",\n        niceName: \"lancer\",\n      },\n      {\n        id: \"Mitsubishi_Lancer_Evolution\",\n        name: \"Lancer Evolution\",\n        niceName: \"lancer-evolution\",\n      },\n      {\n        id: \"Mitsubishi_Lancer_Sportback\",\n        name: \"Lancer Sportback\",\n        niceName: \"lancer-sportback\",\n      },\n      {\n        id: \"Mitsubishi_Mighty_Max_Pickup\",\n        name: \"Mighty Max Pickup\",\n        niceName: \"mighty-max-pickup\",\n      },\n      {\n        id: \"Mitsubishi_Mirage\",\n        name: \"Mirage\",\n        niceName: \"mirage\",\n      },\n      {\n        id: \"Mitsubishi_Mirage_G4\",\n        name: \"Mirage G4\",\n        niceName: \"mirage-g4\",\n      },\n      {\n        id: \"Mitsubishi_Montero\",\n        name: \"Montero\",\n        niceName: \"montero\",\n      },\n      {\n        id: \"Mitsubishi_Montero_Sport\",\n        name: \"Montero Sport\",\n        niceName: \"montero-sport\",\n      },\n      {\n        id: \"Mitsubishi_Outlander\",\n        name: \"Outlander\",\n        niceName: \"outlander\",\n      },\n      {\n        id: \"Mitsubishi_Outlander_Sport\",\n        name: \"Outlander Sport\",\n        niceName: \"outlander-sport\",\n      },\n      {\n        id: \"Mitsubishi_Precis\",\n        name: \"Precis\",\n        niceName: \"precis\",\n      },\n      {\n        id: \"Mitsubishi_Raider\",\n        name: \"Raider\",\n        niceName: \"raider\",\n      },\n      {\n        id: \"Mitsubishi_Sigma\",\n        name: \"Sigma\",\n        niceName: \"sigma\",\n      },\n      {\n        id: \"Mitsubishi_Vanwagon\",\n        name: \"Vanwagon\",\n        niceName: \"vanwagon\",\n      },\n      {\n        id: \"Mitsubishi_i_MiEV\",\n        name: \"i-MiEV\",\n        niceName: \"i-miev\",\n      },\n    ],\n  },\n  {\n    id: 200000201,\n    name: \"Nissan\",\n    niceName: \"nissan\",\n    models: [\n      {\n        id: \"Nissan_200SX\",\n        name: \"200SX\",\n        niceName: \"200sx\",\n      },\n      {\n        id: \"Nissan_240SX\",\n        name: \"240SX\",\n        niceName: \"240sx\",\n      },\n      {\n        id: \"Nissan_300ZX\",\n        name: \"300ZX\",\n        niceName: \"300zx\",\n      },\n      {\n        id: \"Nissan_350Z\",\n        name: \"350Z\",\n        niceName: \"350z\",\n      },\n      {\n        id: \"Nissan_370Z\",\n        name: \"370Z\",\n        niceName: \"370z\",\n      },\n      {\n        id: \"Nissan_Altima\",\n        name: \"Altima\",\n        niceName: \"altima\",\n      },\n      {\n        id: \"Nissan_Altima_Hybrid\",\n        name: \"Altima Hybrid\",\n        niceName: \"altima-hybrid\",\n      },\n      {\n        id: \"Nissan_Armada\",\n        name: \"Armada\",\n        niceName: \"armada\",\n      },\n      {\n        id: \"Nissan_Axxess\",\n        name: \"Axxess\",\n        niceName: \"axxess\",\n      },\n      {\n        id: \"Nissan_Cube\",\n        name: \"Cube\",\n        niceName: \"cube\",\n      },\n      {\n        id: \"Nissan_Frontier\",\n        name: \"Frontier\",\n        niceName: \"frontier\",\n      },\n      {\n        id: \"Nissan_GT_R\",\n        name: \"GT-R\",\n        niceName: \"gt-r\",\n      },\n      {\n        id: \"Nissan_Juke\",\n        name: \"Juke\",\n        niceName: \"juke\",\n      },\n      {\n        id: \"Nissan_Leaf\",\n        name: \"Leaf\",\n        niceName: \"leaf\",\n      },\n      {\n        id: \"Nissan_Maxima\",\n        name: \"Maxima\",\n        niceName: \"maxima\",\n      },\n      {\n        id: \"Nissan_Murano\",\n        name: \"Murano\",\n        niceName: \"murano\",\n      },\n      {\n        id: \"Nissan_Murano_CrossCabriolet\",\n        name: \"Murano CrossCabriolet\",\n        niceName: \"murano-crosscabriolet\",\n      },\n      {\n        id: \"Nissan_NV\",\n        name: \"NV\",\n        niceName: \"nv\",\n      },\n      {\n        id: \"Nissan_NV_Cargo\",\n        name: \"NV Cargo\",\n        niceName: \"nv-cargo\",\n      },\n      {\n        id: \"Nissan_NV_Passenger\",\n        name: \"NV Passenger\",\n        niceName: \"nv-passenger\",\n      },\n      {\n        id: \"Nissan_NV200\",\n        name: \"NV200\",\n        niceName: \"nv200\",\n      },\n      {\n        id: \"Nissan_NX\",\n        name: \"NX\",\n        niceName: \"nx\",\n      },\n      {\n        id: \"Nissan_Pathfinder\",\n        name: \"Pathfinder\",\n        niceName: \"pathfinder\",\n      },\n      {\n        id: \"Nissan_Pulsar\",\n        name: \"Pulsar\",\n        niceName: \"pulsar\",\n      },\n      {\n        id: \"Nissan_Quest\",\n        name: \"Quest\",\n        niceName: \"quest\",\n      },\n      {\n        id: \"Nissan_Rogue\",\n        name: \"Rogue\",\n        niceName: \"rogue\",\n      },\n      {\n        id: \"Nissan_Rogue_Select\",\n        name: \"Rogue Select\",\n        niceName: \"rogue-select\",\n      },\n      {\n        id: \"Nissan_Sentra\",\n        name: \"Sentra\",\n        niceName: \"sentra\",\n      },\n      {\n        id: \"Nissan_Stanza\",\n        name: \"Stanza\",\n        niceName: \"stanza\",\n      },\n      {\n        id: \"Nissan_Titan\",\n        name: \"Titan\",\n        niceName: \"titan\",\n      },\n      {\n        id: \"Nissan_Titan_XD\",\n        name: \"Titan XD\",\n        niceName: \"titan-xd\",\n      },\n      {\n        id: \"Nissan_Truck\",\n        name: \"Truck\",\n        niceName: \"truck\",\n      },\n      {\n        id: \"Nissan_Van\",\n        name: \"Van\",\n        niceName: \"van\",\n      },\n      {\n        id: \"Nissan_Versa\",\n        name: \"Versa\",\n        niceName: \"versa\",\n      },\n      {\n        id: \"Nissan_Versa_Note\",\n        name: \"Versa Note\",\n        niceName: \"versa-note\",\n      },\n      {\n        id: \"Nissan_Xterra\",\n        name: \"Xterra\",\n        niceName: \"xterra\",\n      },\n    ],\n  },\n  {\n    id: 200249342,\n    name: \"Oldsmobile\",\n    niceName: \"oldsmobile\",\n    models: [\n      {\n        id: \"Oldsmobile_Achieva\",\n        name: \"Achieva\",\n        niceName: \"achieva\",\n      },\n      {\n        id: \"Oldsmobile_Alero\",\n        name: \"Alero\",\n        niceName: \"alero\",\n      },\n      {\n        id: \"Oldsmobile_Aurora\",\n        name: \"Aurora\",\n        niceName: \"aurora\",\n      },\n      {\n        id: \"Oldsmobile_Bravada\",\n        name: \"Bravada\",\n        niceName: \"bravada\",\n      },\n      {\n        id: \"Oldsmobile_Ciera\",\n        name: \"Ciera\",\n        niceName: \"ciera\",\n      },\n      {\n        id: \"Oldsmobile_Custom_Cruiser\",\n        name: \"Custom Cruiser\",\n        niceName: \"custom-cruiser\",\n      },\n      {\n        id: \"Oldsmobile_Cutlass\",\n        name: \"Cutlass\",\n        niceName: \"cutlass\",\n      },\n      {\n        id: \"Oldsmobile_Cutlass_Calais\",\n        name: \"Cutlass Calais\",\n        niceName: \"cutlass-calais\",\n      },\n      {\n        id: \"Oldsmobile_Cutlass_Ciera\",\n        name: \"Cutlass Ciera\",\n        niceName: \"cutlass-ciera\",\n      },\n      {\n        id: \"Oldsmobile_Cutlass_Supreme\",\n        name: \"Cutlass Supreme\",\n        niceName: \"cutlass-supreme\",\n      },\n      {\n        id: \"Oldsmobile_Eighty_Eight\",\n        name: \"Eighty-Eight\",\n        niceName: \"eighty-eight\",\n      },\n      {\n        id: \"Oldsmobile_Eighty_Eight_Royale\",\n        name: \"Eighty-Eight Royale\",\n        niceName: \"eighty-eight-royale\",\n      },\n      {\n        id: \"Oldsmobile_Intrigue\",\n        name: \"Intrigue\",\n        niceName: \"intrigue\",\n      },\n      {\n        id: \"Oldsmobile_LSS\",\n        name: \"LSS\",\n        niceName: \"lss\",\n      },\n      {\n        id: \"Oldsmobile_Ninety_Eight\",\n        name: \"Ninety-Eight\",\n        niceName: \"ninety-eight\",\n      },\n      {\n        id: \"Oldsmobile_Regency\",\n        name: \"Regency\",\n        niceName: \"regency\",\n      },\n      {\n        id: \"Oldsmobile_Silhouette\",\n        name: \"Silhouette\",\n        niceName: \"silhouette\",\n      },\n      {\n        id: \"Oldsmobile_Toronado\",\n        name: \"Toronado\",\n        niceName: \"toronado\",\n      },\n    ],\n  },\n  {\n    id: 200194838,\n    name: \"Panoz\",\n    niceName: \"panoz\",\n    models: [\n      {\n        id: \"Panoz_Esperante\",\n        name: \"Esperante\",\n        niceName: \"esperante\",\n      },\n    ],\n  },\n  {\n    id: 200339126,\n    name: \"Plymouth\",\n    niceName: \"plymouth\",\n    models: [\n      {\n        id: \"Plymouth_Acclaim\",\n        name: \"Acclaim\",\n        niceName: \"acclaim\",\n      },\n      {\n        id: \"Plymouth_Breeze\",\n        name: \"Breeze\",\n        niceName: \"breeze\",\n      },\n      {\n        id: \"Plymouth_Colt\",\n        name: \"Colt\",\n        niceName: \"colt\",\n      },\n      {\n        id: \"Plymouth_Grand_Voyager\",\n        name: \"Grand Voyager\",\n        niceName: \"grand-voyager\",\n      },\n      {\n        id: \"Plymouth_Horizon\",\n        name: \"Horizon\",\n        niceName: \"horizon\",\n      },\n      {\n        id: \"Plymouth_Laser\",\n        name: \"Laser\",\n        niceName: \"laser\",\n      },\n      {\n        id: \"Plymouth_Neon\",\n        name: \"Neon\",\n        niceName: \"neon\",\n      },\n      {\n        id: \"Plymouth_Prowler\",\n        name: \"Prowler\",\n        niceName: \"prowler\",\n      },\n      {\n        id: \"Plymouth_Sundance\",\n        name: \"Sundance\",\n        niceName: \"sundance\",\n      },\n      {\n        id: \"Plymouth_Voyager\",\n        name: \"Voyager\",\n        niceName: \"voyager\",\n      },\n    ],\n  },\n  {\n    id: 200002634,\n    name: \"Pontiac\",\n    niceName: \"pontiac\",\n    models: [\n      {\n        id: \"Pontiac_6000\",\n        name: \"6000\",\n        niceName: \"6000\",\n      },\n      {\n        id: \"Pontiac_Aztek\",\n        name: \"Aztek\",\n        niceName: \"aztek\",\n      },\n      {\n        id: \"Pontiac_Bonneville\",\n        name: \"Bonneville\",\n        niceName: \"bonneville\",\n      },\n      {\n        id: \"Pontiac_Firebird\",\n        name: \"Firebird\",\n        niceName: \"firebird\",\n      },\n      {\n        id: \"Pontiac_G3\",\n        name: \"G3\",\n        niceName: \"g3\",\n      },\n      {\n        id: \"Pontiac_G5\",\n        name: \"G5\",\n        niceName: \"g5\",\n      },\n      {\n        id: \"Pontiac_G6\",\n        name: \"G6\",\n        niceName: \"g6\",\n      },\n      {\n        id: \"Pontiac_G8\",\n        name: \"G8\",\n        niceName: \"g8\",\n      },\n      {\n        id: \"Pontiac_GTO\",\n        name: \"GTO\",\n        niceName: \"gto\",\n      },\n      {\n        id: \"Pontiac_Grand_Am\",\n        name: \"Grand Am\",\n        niceName: \"grand-am\",\n      },\n      {\n        id: \"Pontiac_Grand_Prix\",\n        name: \"Grand Prix\",\n        niceName: \"grand-prix\",\n      },\n      {\n        id: \"Pontiac_Le_Mans\",\n        name: \"Le Mans\",\n        niceName: \"le-mans\",\n      },\n      {\n        id: \"Pontiac_Montana\",\n        name: \"Montana\",\n        niceName: \"montana\",\n      },\n      {\n        id: \"Pontiac_Montana_SV6\",\n        name: \"Montana SV6\",\n        niceName: \"montana-sv6\",\n      },\n      {\n        id: \"Pontiac_Solstice\",\n        name: \"Solstice\",\n        niceName: \"solstice\",\n      },\n      {\n        id: \"Pontiac_Sunbird\",\n        name: \"Sunbird\",\n        niceName: \"sunbird\",\n      },\n      {\n        id: \"Pontiac_Sunfire\",\n        name: \"Sunfire\",\n        niceName: \"sunfire\",\n      },\n      {\n        id: \"Pontiac_Torrent\",\n        name: \"Torrent\",\n        niceName: \"torrent\",\n      },\n      {\n        id: \"Pontiac_Trans_Sport\",\n        name: \"Trans Sport\",\n        niceName: \"trans-sport\",\n      },\n      {\n        id: \"Pontiac_Vibe\",\n        name: \"Vibe\",\n        niceName: \"vibe\",\n      },\n    ],\n  },\n  {\n    id: 200000886,\n    name: \"Porsche\",\n    niceName: \"porsche\",\n    models: [\n      {\n        id: \"Porsche_718_Boxster\",\n        name: \"718 Boxster\",\n        niceName: \"718-boxster\",\n      },\n      {\n        id: \"Porsche_718_Cayman\",\n        name: \"718 Cayman\",\n        niceName: \"718-cayman\",\n      },\n      {\n        id: \"Porsche_911\",\n        name: \"911\",\n        niceName: \"911\",\n      },\n      {\n        id: \"Porsche_918_Spyder\",\n        name: \"918 Spyder\",\n        niceName: \"918-spyder\",\n      },\n      {\n        id: \"Porsche_928\",\n        name: \"928\",\n        niceName: \"928\",\n      },\n      {\n        id: \"Porsche_944\",\n        name: \"944\",\n        niceName: \"944\",\n      },\n      {\n        id: \"Porsche_968\",\n        name: \"968\",\n        niceName: \"968\",\n      },\n      {\n        id: \"Porsche_Boxster\",\n        name: \"Boxster\",\n        niceName: \"boxster\",\n      },\n      {\n        id: \"Porsche_Carrera_GT\",\n        name: \"Carrera GT\",\n        niceName: \"carrera-gt\",\n      },\n      {\n        id: \"Porsche_Cayenne\",\n        name: \"Cayenne\",\n        niceName: \"cayenne\",\n      },\n      {\n        id: \"Porsche_Cayman\",\n        name: \"Cayman\",\n        niceName: \"cayman\",\n      },\n      {\n        id: \"Porsche_Cayman_S\",\n        name: \"Cayman S\",\n        niceName: \"cayman-s\",\n      },\n      {\n        id: \"Porsche_Macan\",\n        name: \"Macan\",\n        niceName: \"macan\",\n      },\n      {\n        id: \"Porsche_Panamera\",\n        name: \"Panamera\",\n        niceName: \"panamera\",\n      },\n    ],\n  },\n  {\n    id: 200393150,\n    name: \"Ram\",\n    niceName: \"ram\",\n    models: [\n      {\n        id: \"Ram_1500\",\n        name: \"1500\",\n        niceName: \"1500\",\n      },\n      {\n        id: \"Ram_2500\",\n        name: \"2500\",\n        niceName: \"2500\",\n      },\n      {\n        id: \"Ram_3500\",\n        name: \"3500\",\n        niceName: \"3500\",\n      },\n      {\n        id: \"Ram_C/V_Cargo_Van\",\n        name: \"C/V Cargo Van\",\n        niceName: \"cv-cargo-van\",\n      },\n      {\n        id: \"Ram_C/V_Tradesman\",\n        name: \"C/V Tradesman\",\n        niceName: \"cv-tradesman\",\n      },\n      {\n        id: \"Ram_CV_Tradesman\",\n        name: \"CV Tradesman\",\n        niceName: \"cv-tradesman\",\n      },\n      {\n        id: \"Ram_Dakota\",\n        name: \"Dakota\",\n        niceName: \"dakota\",\n      },\n      {\n        id: \"Ram_Promaster_Cargo_Van\",\n        name: \"Promaster Cargo Van\",\n        niceName: \"promaster-cargo-van\",\n      },\n      {\n        id: \"Ram_Promaster_City\",\n        name: \"Promaster City\",\n        niceName: \"promaster-city\",\n      },\n      {\n        id: \"Ram_Promaster_Window_Van\",\n        name: \"Promaster Window Van\",\n        niceName: \"promaster-window-van\",\n      },\n    ],\n  },\n  {\n    id: 200005044,\n    name: \"Rolls-Royce\",\n    niceName: \"rolls-royce\",\n    models: [\n      {\n        id: \"Rolls_Royce_Corniche\",\n        name: \"Corniche\",\n        niceName: \"corniche\",\n      },\n      {\n        id: \"Rolls_Royce_Dawn\",\n        name: \"Dawn\",\n        niceName: \"dawn\",\n      },\n      {\n        id: \"Rolls_Royce_Ghost\",\n        name: \"Ghost\",\n        niceName: \"ghost\",\n      },\n      {\n        id: \"Rolls_Royce_Ghost_Series_II\",\n        name: \"Ghost Series II\",\n        niceName: \"ghost-series-ii\",\n      },\n      {\n        id: \"Rolls_Royce_Park_Ward\",\n        name: \"Park Ward\",\n        niceName: \"park-ward\",\n      },\n      {\n        id: \"Rolls_Royce_Phantom\",\n        name: \"Phantom\",\n        niceName: \"phantom\",\n      },\n      {\n        id: \"Rolls_Royce_Phantom_Coupe\",\n        name: \"Phantom Coupe\",\n        niceName: \"phantom-coupe\",\n      },\n      {\n        id: \"Rolls_Royce_Phantom_Drophead_Coupe\",\n        name: \"Phantom Drophead Coupe\",\n        niceName: \"phantom-drophead-coupe\",\n      },\n      {\n        id: \"Rolls_Royce_Silver_Seraph\",\n        name: \"Silver Seraph\",\n        niceName: \"silver-seraph\",\n      },\n      {\n        id: \"Rolls_Royce_Wraith\",\n        name: \"Wraith\",\n        niceName: \"wraith\",\n      },\n    ],\n  },\n  {\n    id: 200074504,\n    name: \"Saab\",\n    niceName: \"saab\",\n    models: [\n      {\n        id: \"Saab_9_2X\",\n        name: \"9-2X\",\n        niceName: \"9-2x\",\n      },\n      {\n        id: \"Saab_9_3\",\n        name: \"9-3\",\n        niceName: \"9-3\",\n      },\n      {\n        id: \"Saab_9_3_Griffin\",\n        name: \"9-3 Griffin\",\n        niceName: \"9-3-griffin\",\n      },\n      {\n        id: \"Saab_9_4X\",\n        name: \"9-4X\",\n        niceName: \"9-4x\",\n      },\n      {\n        id: \"Saab_9_5\",\n        name: \"9-5\",\n        niceName: \"9-5\",\n      },\n      {\n        id: \"Saab_9_7X\",\n        name: \"9-7X\",\n        niceName: \"9-7x\",\n      },\n      {\n        id: \"Saab_900\",\n        name: \"900\",\n        niceName: \"900\",\n      },\n      {\n        id: \"Saab_9000\",\n        name: \"9000\",\n        niceName: \"9000\",\n      },\n    ],\n  },\n  {\n    id: 200004446,\n    name: \"Saturn\",\n    niceName: \"saturn\",\n    models: [\n      {\n        id: \"Saturn_Astra\",\n        name: \"Astra\",\n        niceName: \"astra\",\n      },\n      {\n        id: \"Saturn_Aura\",\n        name: \"Aura\",\n        niceName: \"aura\",\n      },\n      {\n        id: \"Saturn_Aura_Hybrid\",\n        name: \"Aura Hybrid\",\n        niceName: \"aura-hybrid\",\n      },\n      {\n        id: \"Saturn_ION\",\n        name: \"ION\",\n        niceName: \"ion\",\n      },\n      {\n        id: \"Saturn_L_Series\",\n        name: \"L-Series\",\n        niceName: \"l-series\",\n      },\n      {\n        id: \"Saturn_L300\",\n        name: \"L300\",\n        niceName: \"l300\",\n      },\n      {\n        id: \"Saturn_Outlook\",\n        name: \"Outlook\",\n        niceName: \"outlook\",\n      },\n      {\n        id: \"Saturn_Relay\",\n        name: \"Relay\",\n        niceName: \"relay\",\n      },\n      {\n        id: \"Saturn_S_Series\",\n        name: \"S-Series\",\n        niceName: \"s-series\",\n      },\n      {\n        id: \"Saturn_Sky\",\n        name: \"Sky\",\n        niceName: \"sky\",\n      },\n      {\n        id: \"Saturn_VUE\",\n        name: \"VUE\",\n        niceName: \"vue\",\n      },\n      {\n        id: \"Saturn_VUE_Hybrid\",\n        name: \"VUE Hybrid\",\n        niceName: \"vue-hybrid\",\n      },\n    ],\n  },\n  {\n    id: 200006515,\n    name: \"Scion\",\n    niceName: \"scion\",\n    models: [\n      {\n        id: \"Scion_FR_S\",\n        name: \"FR-S\",\n        niceName: \"fr-s\",\n      },\n      {\n        id: \"Scion_iA\",\n        name: \"iA\",\n        niceName: \"ia\",\n      },\n      {\n        id: \"Scion_iM\",\n        name: \"iM\",\n        niceName: \"im\",\n      },\n      {\n        id: \"Scion_iQ\",\n        name: \"iQ\",\n        niceName: \"iq\",\n      },\n      {\n        id: \"Scion_tC\",\n        name: \"tC\",\n        niceName: \"tc\",\n      },\n      {\n        id: \"Scion_xA\",\n        name: \"xA\",\n        niceName: \"xa\",\n      },\n      {\n        id: \"Scion_xB\",\n        name: \"xB\",\n        niceName: \"xb\",\n      },\n      {\n        id: \"Scion_xD\",\n        name: \"xD\",\n        niceName: \"xd\",\n      },\n    ],\n  },\n  {\n    id: 200046567,\n    name: \"Spyker\",\n    niceName: \"spyker\",\n    models: [\n      {\n        id: \"Spyker_C8\",\n        name: \"C8\",\n        niceName: \"c8\",\n      },\n    ],\n  },\n  {\n    id: 200004491,\n    name: \"Subaru\",\n    niceName: \"subaru\",\n    models: [\n      {\n        id: \"Subaru_B9_Tribeca\",\n        name: \"B9 Tribeca\",\n        niceName: \"b9-tribeca\",\n      },\n      {\n        id: \"Subaru_BRZ\",\n        name: \"BRZ\",\n        niceName: \"brz\",\n      },\n      {\n        id: \"Subaru_Baja\",\n        name: \"Baja\",\n        niceName: \"baja\",\n      },\n      {\n        id: \"Subaru_Crosstrek\",\n        name: \"Crosstrek\",\n        niceName: \"crosstrek\",\n      },\n      {\n        id: \"Subaru_Forester\",\n        name: \"Forester\",\n        niceName: \"forester\",\n      },\n      {\n        id: \"Subaru_Impreza\",\n        name: \"Impreza\",\n        niceName: \"impreza\",\n      },\n      {\n        id: \"Subaru_Impreza_WRX\",\n        name: \"Impreza WRX\",\n        niceName: \"impreza-wrx\",\n      },\n      {\n        id: \"Subaru_Justy\",\n        name: \"Justy\",\n        niceName: \"justy\",\n      },\n      {\n        id: \"Subaru_Legacy\",\n        name: \"Legacy\",\n        niceName: \"legacy\",\n      },\n      {\n        id: \"Subaru_Loyale\",\n        name: \"Loyale\",\n        niceName: \"loyale\",\n      },\n      {\n        id: \"Subaru_Outback\",\n        name: \"Outback\",\n        niceName: \"outback\",\n      },\n      {\n        id: \"Subaru_SVX\",\n        name: \"SVX\",\n        niceName: \"svx\",\n      },\n      {\n        id: \"Subaru_Tribeca\",\n        name: \"Tribeca\",\n        niceName: \"tribeca\",\n      },\n      {\n        id: \"Subaru_WRX\",\n        name: \"WRX\",\n        niceName: \"wrx\",\n      },\n      {\n        id: \"Subaru_XT\",\n        name: \"XT\",\n        niceName: \"xt\",\n      },\n      {\n        id: \"Subaru_XV_Crosstrek\",\n        name: \"XV Crosstrek\",\n        niceName: \"xv-crosstrek\",\n      },\n    ],\n  },\n  {\n    id: 200001853,\n    name: \"Suzuki\",\n    niceName: \"suzuki\",\n    models: [\n      {\n        id: \"Suzuki_Aerio\",\n        name: \"Aerio\",\n        niceName: \"aerio\",\n      },\n      {\n        id: \"Suzuki_Equator\",\n        name: \"Equator\",\n        niceName: \"equator\",\n      },\n      {\n        id: \"Suzuki_Esteem\",\n        name: \"Esteem\",\n        niceName: \"esteem\",\n      },\n      {\n        id: \"Suzuki_Forenza\",\n        name: \"Forenza\",\n        niceName: \"forenza\",\n      },\n      {\n        id: \"Suzuki_Grand_Vitara\",\n        name: \"Grand Vitara\",\n        niceName: \"grand-vitara\",\n      },\n      {\n        id: \"Suzuki_Kizashi\",\n        name: \"Kizashi\",\n        niceName: \"kizashi\",\n      },\n      {\n        id: \"Suzuki_Reno\",\n        name: \"Reno\",\n        niceName: \"reno\",\n      },\n      {\n        id: \"Suzuki_SX4\",\n        name: \"SX4\",\n        niceName: \"sx4\",\n      },\n      {\n        id: \"Suzuki_Samurai\",\n        name: \"Samurai\",\n        niceName: \"samurai\",\n      },\n      {\n        id: \"Suzuki_Sidekick\",\n        name: \"Sidekick\",\n        niceName: \"sidekick\",\n      },\n      {\n        id: \"Suzuki_Swift\",\n        name: \"Swift\",\n        niceName: \"swift\",\n      },\n      {\n        id: \"Suzuki_Verona\",\n        name: \"Verona\",\n        niceName: \"verona\",\n      },\n      {\n        id: \"Suzuki_Vitara\",\n        name: \"Vitara\",\n        niceName: \"vitara\",\n      },\n      {\n        id: \"Suzuki_X_90\",\n        name: \"X-90\",\n        niceName: \"x-90\",\n      },\n      {\n        id: \"Suzuki_XL_7\",\n        name: \"XL-7\",\n        niceName: \"xl-7\",\n      },\n      {\n        id: \"Suzuki_XL7\",\n        name: \"XL7\",\n        niceName: \"xl7\",\n      },\n    ],\n  },\n  {\n    id: 200018920,\n    name: \"Tesla\",\n    niceName: \"tesla\",\n    models: [\n      {\n        id: \"Tesla_Model_3\",\n        name: \"Model 3\",\n        niceName: \"model-3\",\n      },\n      {\n        id: \"Tesla_Model_S\",\n        name: \"Model S\",\n        niceName: \"model-s\",\n      },\n      {\n        id: \"Tesla_Model_X\",\n        name: \"Model X\",\n        niceName: \"model-x\",\n      },\n      {\n        id: \"Tesla_Roadster\",\n        name: \"Roadster\",\n        niceName: \"roadster\",\n      },\n    ],\n  },\n  {\n    id: 200003381,\n    name: \"Toyota\",\n    niceName: \"toyota\",\n    models: [\n      {\n        id: \"Toyota_4Runner\",\n        name: \"4Runner\",\n        niceName: \"4runner\",\n      },\n      {\n        id: \"Toyota_86\",\n        name: \"86\",\n        niceName: \"86\",\n      },\n      {\n        id: \"Toyota_Avalon\",\n        name: \"Avalon\",\n        niceName: \"avalon\",\n      },\n      {\n        id: \"Toyota_Avalon_Hybrid\",\n        name: \"Avalon Hybrid\",\n        niceName: \"avalon-hybrid\",\n      },\n      {\n        id: \"Toyota_C_HR\",\n        name: \"C-HR\",\n        niceName: \"c-hr\",\n      },\n      {\n        id: \"Toyota_Camry\",\n        name: \"Camry\",\n        niceName: \"camry\",\n      },\n      {\n        id: \"Toyota_Camry_Hybrid\",\n        name: \"Camry Hybrid\",\n        niceName: \"camry-hybrid\",\n      },\n      {\n        id: \"Toyota_Camry_Solara\",\n        name: \"Camry Solara\",\n        niceName: \"camry-solara\",\n      },\n      {\n        id: \"Toyota_Celica\",\n        name: \"Celica\",\n        niceName: \"celica\",\n      },\n      {\n        id: \"Toyota_Corolla\",\n        name: \"Corolla\",\n        niceName: \"corolla\",\n      },\n      {\n        id: \"Toyota_Corolla_iM\",\n        name: \"Corolla iM\",\n        niceName: \"corolla-im\",\n      },\n      {\n        id: \"Toyota_Cressida\",\n        name: \"Cressida\",\n        niceName: \"cressida\",\n      },\n      {\n        id: \"Toyota_ECHO\",\n        name: \"ECHO\",\n        niceName: \"echo\",\n      },\n      {\n        id: \"Toyota_FJ_Cruiser\",\n        name: \"FJ Cruiser\",\n        niceName: \"fj-cruiser\",\n      },\n      {\n        id: \"Toyota_Highlander\",\n        name: \"Highlander\",\n        niceName: \"highlander\",\n      },\n      {\n        id: \"Toyota_Highlander_Hybrid\",\n        name: \"Highlander Hybrid\",\n        niceName: \"highlander-hybrid\",\n      },\n      {\n        id: \"Toyota_Land_Cruiser\",\n        name: \"Land Cruiser\",\n        niceName: \"land-cruiser\",\n      },\n      {\n        id: \"Toyota_MR2\",\n        name: \"MR2\",\n        niceName: \"mr2\",\n      },\n      {\n        id: \"Toyota_MR2_Spyder\",\n        name: \"MR2 Spyder\",\n        niceName: \"mr2-spyder\",\n      },\n      {\n        id: \"Toyota_Matrix\",\n        name: \"Matrix\",\n        niceName: \"matrix\",\n      },\n      {\n        id: \"Toyota_Mirai\",\n        name: \"Mirai\",\n        niceName: \"mirai\",\n      },\n      {\n        id: \"Toyota_Paseo\",\n        name: \"Paseo\",\n        niceName: \"paseo\",\n      },\n      {\n        id: \"Toyota_Pickup\",\n        name: \"Pickup\",\n        niceName: \"pickup\",\n      },\n      {\n        id: \"Toyota_Previa\",\n        name: \"Previa\",\n        niceName: \"previa\",\n      },\n      {\n        id: \"Toyota_Prius\",\n        name: \"Prius\",\n        niceName: \"prius\",\n      },\n      {\n        id: \"Toyota_Prius_Plug_in\",\n        name: \"Prius Plug-in\",\n        niceName: \"prius-plug-in\",\n      },\n      {\n        id: \"Toyota_Prius_Prime\",\n        name: \"Prius Prime\",\n        niceName: \"prius-prime\",\n      },\n      {\n        id: \"Toyota_Prius_c\",\n        name: \"Prius c\",\n        niceName: \"prius-c\",\n      },\n      {\n        id: \"Toyota_Prius_v\",\n        name: \"Prius v\",\n        niceName: \"prius-v\",\n      },\n      {\n        id: \"Toyota_RAV4\",\n        name: \"RAV4\",\n        niceName: \"rav4\",\n      },\n      {\n        id: \"Toyota_RAV4_EV\",\n        name: \"RAV4 EV\",\n        niceName: \"rav4-ev\",\n      },\n      {\n        id: \"Toyota_RAV4_Hybrid\",\n        name: \"RAV4 Hybrid\",\n        niceName: \"rav4-hybrid\",\n      },\n      {\n        id: \"Toyota_Sequoia\",\n        name: \"Sequoia\",\n        niceName: \"sequoia\",\n      },\n      {\n        id: \"Toyota_Sienna\",\n        name: \"Sienna\",\n        niceName: \"sienna\",\n      },\n      {\n        id: \"Toyota_Supra\",\n        name: \"Supra\",\n        niceName: \"supra\",\n      },\n      {\n        id: \"Toyota_T100\",\n        name: \"T100\",\n        niceName: \"t100\",\n      },\n      {\n        id: \"Toyota_Tacoma\",\n        name: \"Tacoma\",\n        niceName: \"tacoma\",\n      },\n      {\n        id: \"Toyota_Tercel\",\n        name: \"Tercel\",\n        niceName: \"tercel\",\n      },\n      {\n        id: \"Toyota_Tundra\",\n        name: \"Tundra\",\n        niceName: \"tundra\",\n      },\n      {\n        id: \"Toyota_Venza\",\n        name: \"Venza\",\n        niceName: \"venza\",\n      },\n      {\n        id: \"Toyota_Yaris\",\n        name: \"Yaris\",\n        niceName: \"yaris\",\n      },\n      {\n        id: \"Toyota_Yaris_iA\",\n        name: \"Yaris iA\",\n        niceName: \"yaris-ia\",\n      },\n    ],\n  },\n  {\n    id: 200000238,\n    name: \"Volkswagen\",\n    niceName: \"volkswagen\",\n    models: [\n      {\n        id: \"Volkswagen_Atlas\",\n        name: \"Atlas\",\n        niceName: \"atlas\",\n      },\n      {\n        id: \"Volkswagen_Beetle\",\n        name: \"Beetle\",\n        niceName: \"beetle\",\n      },\n      {\n        id: \"Volkswagen_Beetle_Convertible\",\n        name: \"Beetle Convertible\",\n        niceName: \"beetle-convertible\",\n      },\n      {\n        id: \"Volkswagen_CC\",\n        name: \"CC\",\n        niceName: \"cc\",\n      },\n      {\n        id: \"Volkswagen_Cabrio\",\n        name: \"Cabrio\",\n        niceName: \"cabrio\",\n      },\n      {\n        id: \"Volkswagen_Cabriolet\",\n        name: \"Cabriolet\",\n        niceName: \"cabriolet\",\n      },\n      {\n        id: \"Volkswagen_Corrado\",\n        name: \"Corrado\",\n        niceName: \"corrado\",\n      },\n      {\n        id: \"Volkswagen_Eos\",\n        name: \"Eos\",\n        niceName: \"eos\",\n      },\n      {\n        id: \"Volkswagen_EuroVan\",\n        name: \"EuroVan\",\n        niceName: \"eurovan\",\n      },\n      {\n        id: \"Volkswagen_Fox\",\n        name: \"Fox\",\n        niceName: \"fox\",\n      },\n      {\n        id: \"Volkswagen_GLI\",\n        name: \"GLI\",\n        niceName: \"gli\",\n      },\n      {\n        id: \"Volkswagen_GTI\",\n        name: \"GTI\",\n        niceName: \"gti\",\n      },\n      {\n        id: \"Volkswagen_Golf\",\n        name: \"Golf\",\n        niceName: \"golf\",\n      },\n      {\n        id: \"Volkswagen_Golf_Alltrack\",\n        name: \"Golf Alltrack\",\n        niceName: \"golf-alltrack\",\n      },\n      {\n        id: \"Volkswagen_Golf_GTI\",\n        name: \"Golf GTI\",\n        niceName: \"golf-gti\",\n      },\n      {\n        id: \"Volkswagen_Golf_R\",\n        name: \"Golf R\",\n        niceName: \"golf-r\",\n      },\n      {\n        id: \"Volkswagen_Golf_SportWagen\",\n        name: \"Golf SportWagen\",\n        niceName: \"golf-sportwagen\",\n      },\n      {\n        id: \"Volkswagen_Golf_SportWagen_Alltrack\",\n        name: \"Golf SportWagen Alltrack\",\n        niceName: \"golf-sportwagen-alltrack\",\n      },\n      {\n        id: \"Volkswagen_Jetta\",\n        name: \"Jetta\",\n        niceName: \"jetta\",\n      },\n      {\n        id: \"Volkswagen_Jetta_GLI\",\n        name: \"Jetta GLI\",\n        niceName: \"jetta-gli\",\n      },\n      {\n        id: \"Volkswagen_Jetta_Hybrid\",\n        name: \"Jetta Hybrid\",\n        niceName: \"jetta-hybrid\",\n      },\n      {\n        id: \"Volkswagen_Jetta_SportWagen\",\n        name: \"Jetta SportWagen\",\n        niceName: \"jetta-sportwagen\",\n      },\n      {\n        id: \"Volkswagen_New_Beetle\",\n        name: \"New Beetle\",\n        niceName: \"new-beetle\",\n      },\n      {\n        id: \"Volkswagen_Passat\",\n        name: \"Passat\",\n        niceName: \"passat\",\n      },\n      {\n        id: \"Volkswagen_Phaeton\",\n        name: \"Phaeton\",\n        niceName: \"phaeton\",\n      },\n      {\n        id: \"Volkswagen_R32\",\n        name: \"R32\",\n        niceName: \"r32\",\n      },\n      {\n        id: \"Volkswagen_Rabbit\",\n        name: \"Rabbit\",\n        niceName: \"rabbit\",\n      },\n      {\n        id: \"Volkswagen_Routan\",\n        name: \"Routan\",\n        niceName: \"routan\",\n      },\n      {\n        id: \"Volkswagen_Tiguan\",\n        name: \"Tiguan\",\n        niceName: \"tiguan\",\n      },\n      {\n        id: \"Volkswagen_Touareg\",\n        name: \"Touareg\",\n        niceName: \"touareg\",\n      },\n      {\n        id: \"Volkswagen_Touareg_2\",\n        name: \"Touareg 2\",\n        niceName: \"touareg-2\",\n      },\n      {\n        id: \"Volkswagen_Vanagon\",\n        name: \"Vanagon\",\n        niceName: \"vanagon\",\n      },\n      {\n        id: \"Volkswagen_e_Golf\",\n        name: \"e-Golf\",\n        niceName: \"e-golf\",\n      },\n    ],\n  },\n  {\n    id: 200010382,\n    name: \"Volvo\",\n    niceName: \"volvo\",\n    models: [\n      {\n        id: \"Volvo_240\",\n        name: \"240\",\n        niceName: \"240\",\n      },\n      {\n        id: \"Volvo_740\",\n        name: \"740\",\n        niceName: \"740\",\n      },\n      {\n        id: \"Volvo_760\",\n        name: \"760\",\n        niceName: \"760\",\n      },\n      {\n        id: \"Volvo_780\",\n        name: \"780\",\n        niceName: \"780\",\n      },\n      {\n        id: \"Volvo_850\",\n        name: \"850\",\n        niceName: \"850\",\n      },\n      {\n        id: \"Volvo_940\",\n        name: \"940\",\n        niceName: \"940\",\n      },\n      {\n        id: \"Volvo_960\",\n        name: \"960\",\n        niceName: \"960\",\n      },\n      {\n        id: \"Volvo_C30\",\n        name: \"C30\",\n        niceName: \"c30\",\n      },\n      {\n        id: \"Volvo_C70\",\n        name: \"C70\",\n        niceName: \"c70\",\n      },\n      {\n        id: \"Volvo_Coupe\",\n        name: \"Coupe\",\n        niceName: \"coupe\",\n      },\n      {\n        id: \"Volvo_S40\",\n        name: \"S40\",\n        niceName: \"s40\",\n      },\n      {\n        id: \"Volvo_S60\",\n        name: \"S60\",\n        niceName: \"s60\",\n      },\n      {\n        id: \"Volvo_S60_Cross_Country\",\n        name: \"S60 Cross Country\",\n        niceName: \"s60-cross-country\",\n      },\n      {\n        id: \"Volvo_S70\",\n        name: \"S70\",\n        niceName: \"s70\",\n      },\n      {\n        id: \"Volvo_S80\",\n        name: \"S80\",\n        niceName: \"s80\",\n      },\n      {\n        id: \"Volvo_S90\",\n        name: \"S90\",\n        niceName: \"s90\",\n      },\n      {\n        id: \"Volvo_V40\",\n        name: \"V40\",\n        niceName: \"v40\",\n      },\n      {\n        id: \"Volvo_V50\",\n        name: \"V50\",\n        niceName: \"v50\",\n      },\n      {\n        id: \"Volvo_V60\",\n        name: \"V60\",\n        niceName: \"v60\",\n      },\n      {\n        id: \"Volvo_V60_Cross_Country\",\n        name: \"V60 Cross Country\",\n        niceName: \"v60-cross-country\",\n      },\n      {\n        id: \"Volvo_V70\",\n        name: \"V70\",\n        niceName: \"v70\",\n      },\n      {\n        id: \"Volvo_V90\",\n        name: \"V90\",\n        niceName: \"v90\",\n      },\n      {\n        id: \"Volvo_V90_Cross_Country\",\n        name: \"V90 Cross Country\",\n        niceName: \"v90-cross-country\",\n      },\n      {\n        id: \"Volvo_XC\",\n        name: \"XC\",\n        niceName: \"xc\",\n      },\n      {\n        id: \"Volvo_XC60\",\n        name: \"XC60\",\n        niceName: \"xc60\",\n      },\n      {\n        id: \"Volvo_XC70\",\n        name: \"XC70\",\n        niceName: \"xc70\",\n      },\n      {\n        id: \"Volvo_XC90\",\n        name: \"XC90\",\n        niceName: \"xc90\",\n      },\n    ],\n  },\n  {\n    id: 200038885,\n    name: \"smart\",\n    niceName: \"smart\",\n    models: [\n      {\n        id: \"smart_fortwo\",\n        name: \"fortwo\",\n        niceName: \"fortwo\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "lib/reactotron-core-client/test/on-command.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\n\nconst createSocket = (path) => new WebSocket(path)\n\nlet port: number\nlet server: WebSocket.Server\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = new WebSocket.Server({ port })\n})\n\nafterEach(() => {\n  server.clients.forEach((client) => client.close())\n  server?.close()\n})\n\nconst mock = {\n  type: \"TEST\",\n  payload: [1, 2, \"three\", { four: true }],\n}\n\ntest(\"the default onCommand does nothing\", () => {\n  const client = createClient({ createSocket })\n  expect(client.options.onCommand?.({})).toBeFalsy()\n  client.close()\n})\n\ntest(\"receives a valid command\", (done) => {\n  // client should receive the command\n  const client = createClient({\n    createSocket,\n    port: port,\n    onCommand: ({ type, payload }) => {\n      expect(type).toBe(mock.type)\n      expect(payload).toEqual(mock.payload)\n      done()\n    },\n  })\n\n  // when the server gets a connection, send the command\n  server.on(\"connection\", (socket) => socket.send(JSON.stringify(mock)))\n  client.connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/on-connect.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\nimport { createClosingServer } from \"./create-closing-server\"\n\nconst createSocket = (path) => new WebSocket(path)\n\nlet port: number\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n})\n\ntest(\"fires onConnect upon successful connection\", (done) => {\n  createClosingServer(port)\n  const client = createClient({ createSocket, port, onConnect: done })\n\n  client.connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/on-disconnect.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\nimport { createClosingServer } from \"./create-closing-server\"\n\nconst createSocket = (path: string) => new WebSocket(path)\n\nlet port: number\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n})\n\ntest(\"fires onConnect upon successful connection\", (done) => {\n  createClosingServer(port)\n  const client = createClient({ createSocket, port, onDisconnect: done })\n\n  client.connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-benchmark.test.ts",
    "content": "import { createClient, corePlugins } from \"../src/reactotron-core-client\"\nimport plugin from \"../src/plugins/benchmark\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path: string) => new WebSocket(path)\n\n// a promise based delay that's not accurate at all\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n\ntest(\"adds benchmarks to a report\", async () => {\n  const client = createClient({ createSocket }).use(plugin())\n  let commandType = \"\"\n  let report: any\n\n  // mock the send to capture\n  client.send = (type, payload) => {\n    commandType = type\n    report = payload\n  }\n\n  // register\n\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.benchmark).toBe(\"function\")\n\n  // use the benchmark feature\n  const bench = client.benchmark?.(\"a\")\n  await delay(50)\n  bench?.step(\"b\")\n  await delay(50)\n  bench?.stop(\"c\")\n\n  // checkout our results\n  expect(commandType).toBe(\"benchmark.report\")\n  expect(report.title).toBe(\"a\")\n  expect(report.steps.length).toBe(3)\n  expect(report.steps[0].title).toBe(\"a\")\n  expect(report.steps[1].title).toBe(\"b\")\n  expect(report.steps[2].title).toBe(\"c\")\n  expect(report.steps[0].time).toBe(0)\n  expect(report.steps[1].time > 0).toBe(true)\n  expect(report.steps[2].time > report.steps[1].time).toBe(true)\n  client.close()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-clear.test.ts",
    "content": "import { createClient, corePlugins } from \"../src/reactotron-core-client\"\nimport plugin from \"../src/plugins/clear\"\nimport { WebSocket } from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"clears\", () => {\n  const client: any = createClient({ createSocket })\n  const results = [] as Array<{ type: string; payload: any }>\n  client.send = (type, payload) => results.push({ type, payload })\n  client.use(plugin())\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.clear).toBe(\"function\")\n  client.clear()\n  expect(results.length).toBe(1)\n  expect(results[0].type).toBe(\"clear\")\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-features.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"features must be an object if they appear\", () => {\n  const client = createClient({ createSocket })\n\n  const badPlugin = () =>\n    // @ts-expect-error\n    client.use(() => ({ features: 1 }))\n  expect(badPlugin).toThrow()\n})\n\ntest(\"some names are not allowed\", () => {\n  const client = createClient({ createSocket })\n  const createPlugin = (features) => () => ({ features })\n\n  const badPlugins = [\n    \"options\",\n    \"connected\",\n    \"socket\",\n    \"plugins\",\n    \"configure\",\n    \"connect\",\n    \"send\",\n    \"use\",\n    \"startTimer\",\n  ].map((name) => createPlugin({ [name]: (x) => x }))\n\n  badPlugins.forEach((plugin) => {\n    expect(() => client.use(plugin)).toThrow()\n  })\n})\n\ntest(\"features can be added and called\", () => {\n  const plugin = () => () => {\n    const features = {\n      magic: () => 42,\n    }\n    return { features }\n  }\n  const client = createClient({ createSocket }).use(plugin())\n  expect(typeof client.magic).toBe(\"function\")\n  expect(client.magic()).toBe(42)\n})\n\ntest(\"you can overwrite other feature names\", () => {\n  const createPlugin = (number) => () => ({ features: { hello: () => number } })\n  const client = createClient({ createSocket }).use(createPlugin(69))\n  expect(client.hello()).toBe(69)\n  expect(client.use(createPlugin(9001)).hello()).toBe(9001)\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-image.test.ts",
    "content": "import { createClient, corePlugins } from \"../src/reactotron-core-client\"\nimport plugin from \"../src/plugins/image\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path: string) => new WebSocket(path)\n\ntest(\"the image function send the right data\", () => {\n  const client = createClient({ createSocket }).use(plugin())\n  const results: {\n    type: Parameters<typeof client.send>[0]\n    payload: Parameters<typeof client.send>[1]\n  }[] = []\n  client.send = (type, payload) => {\n    results.push({ type, payload })\n  }\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.image).toBe(\"function\")\n  client.image({\n    uri: \"a\",\n    width: 1,\n    height: 2,\n    filename: \"f\",\n    preview: \"p\",\n    caption: \"c\",\n    // @ts-expect-error\n    zoo: \"lol\",\n  })\n  expect(results.length).toBe(1)\n\n  const result = results[0]\n  expect(result.type).toBe(\"image\")\n  expect(result?.payload?.uri).toBe(\"a\")\n  expect(result?.payload?.width).toBe(1)\n  expect(result?.payload?.height).toBe(2)\n  expect(result?.payload?.filename).toBe(\"f\")\n  expect(result?.payload?.preview).toBe(\"p\")\n  expect(result?.payload?.caption).toBe(\"c\")\n  expect(result?.payload?.zoo).toBe(undefined)\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-interface.test.ts",
    "content": "/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { createClient, corePlugins, ReactotronCore } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\nlet client: ReturnType<typeof createClient>\n\nbeforeEach(() => {\n  client = createClient({ createSocket })\n})\n\nafterEach(() => {\n  client?.close()\n})\n\ntest(\"client accepts plugins\", () => {\n  expect(client.plugins).toBeTruthy()\n  expect(client.plugins.length).toBe(corePlugins.length)\n})\n\ntest(\"plugins are functions\", () => {\n  // @ts-expect-error\n  expect(() => client.use()).toThrow()\n  // @ts-ignore should be ts-expect-error but jest doesn't like it for null or undefined values for some reason\n  expect(() => client.use(null)).toThrow()\n  // @ts-expect-error\n  expect(() => client.use(\"\")).toThrow()\n  // @ts-expect-error\n  expect(() => client.use(1)).toThrow()\n})\n\ntest(\"plugins are invoke and return an object\", () => {\n  // @ts-ignore should be ts-expect-error but jest doesn't like it for null or undefined values for some reason\n  expect(() => client.use(() => null)).toThrow()\n  // @ts-expect-error\n  expect(() => client.use(() => 1)).toThrow()\n  // @ts-expect-error\n  expect(() => client.use(() => \"\")).toThrow()\n  // @ts-ignore should be ts-expect-error but jest doesn't like it for null or undefined values for some reason\n  expect(() => client.use(() => undefined)).toThrow()\n  client.use(() => ({}))\n})\n\ntest(\"plugins can literally do nothing\", () => {\n  const empty = () => ({})\n  client.use(empty)\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n})\n\ntest(\"initialized with the config object\", (done) => {\n  client.use((reactotron) => {\n    expect(typeof reactotron).toBe(\"object\")\n    expect(reactotron).toBe(client)\n    expect(typeof reactotron.send).toBe(\"function\")\n    done()\n    return {}\n  })\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n})\n\ntest(\"can be added in createClient\", () => {\n  const createPlugin = (name, value) => () => ({ features: { [name]: () => value } })\n  const clientWithPlugins = createClient<\n    ReactotronCore & { sayHello: () => void; sayGoodbye: () => void }\n  >({\n    createSocket,\n    plugins: [createPlugin(\"sayHello\", \"hello\"), createPlugin(\"sayGoodbye\", \"goodbye\")],\n  })\n\n  expect(clientWithPlugins.sayHello()).toBe(\"hello\")\n  expect(clientWithPlugins.sayGoodbye()).toBe(\"goodbye\")\n  clientWithPlugins.close()\n})\n\ntest(\"plugins in createClient must be an array\", () => {\n  const invalidClient = createClient({\n    createSocket,\n    // @ts-expect-error\n    plugins: 5,\n  })\n  expect(invalidClient.plugins.length).toBe(0)\n  invalidClient.close()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-logger.test.ts",
    "content": "import { createClient, corePlugins } from \"../src/reactotron-core-client\"\nimport plugin from \"../src/plugins/logger\"\nimport { WebSocket } from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"the 4 functions send the right data\", () => {\n  const client: any = createClient({ createSocket })\n  const results = [] as Array<{ type: string; payload: any }>\n  client.send = (type, payload) => {\n    results.push({ type, payload })\n  }\n  client.use(plugin())\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.log).toBe(\"function\")\n  expect(typeof client.debug).toBe(\"function\")\n  expect(typeof client.warn).toBe(\"function\")\n  expect(typeof client.error).toBe(\"function\")\n  client.log(\"a\")\n  client.debug(\"b\")\n  client.warn(\"c\")\n  client.error(\"d\")\n  expect(results.length).toBe(4)\n  expect(results[0].type).toBe(\"log\")\n  expect(results[1].type).toBe(\"log\")\n  expect(results[2].type).toBe(\"log\")\n  expect(results[3].type).toBe(\"log\")\n  expect(results[0].payload.level).toBe(\"debug\")\n  expect(results[1].payload.level).toBe(\"debug\")\n  expect(results[2].payload.level).toBe(\"warn\")\n  expect(results[3].payload.level).toBe(\"error\")\n  expect(results[0].payload.message).toBe(\"a\")\n  expect(results[1].payload.message).toBe(\"b\")\n  expect(results[2].payload.message).toBe(\"c\")\n  expect(results[3].payload.message).toBe(\"d\")\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-on-command.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\n\nconst createSocket = (path) => new WebSocket(path)\nconst mock = { type: \"type\", payload: \"payload\" }\n\nlet port: number\nlet server: WebSocket.Server\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = new WebSocket.Server({ port })\n})\n\nafterEach(() => {\n  server.clients.forEach((client) => client.close())\n  server?.close()\n})\n\ntest(\"plugins support command\", (done) => {\n  // the plugin to capture the command\n  const plugin = () => ({\n    onCommand: (command) => {\n      expect(command.type).toBe(mock.type)\n      expect(command.payload).toEqual(mock.payload)\n      done()\n    },\n  })\n\n  // the server waits for the command\n  server.on(\"connection\", (socket) => socket.send(JSON.stringify(mock)))\n\n  // create the client, add the plugin, and connect\n  const client: any = createClient({ createSocket, port })\n  client.use(plugin)\n  client.connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-on-connect.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\n\nconst createSocket = (path) => new WebSocket(path)\n\nlet port: number\nlet server: WebSocket.Server\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = new WebSocket.Server({ port })\n})\n\nafterEach(() => {\n  server.clients.forEach((client) => client.close())\n  server?.close()\n})\n\ntest(\"plugins support onConnect\", (done) => {\n  // this plugin supports onConnect\n  const plugin = () => ({\n    onConnect: () => {\n      done()\n    },\n  })\n\n  // create a client & add the plugin\n  createClient({ createSocket, port }).use(plugin).connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-on-disconnect.test.ts",
    "content": "import { Plugin, ReactotronCore, createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\nimport { createClosingServer } from \"./create-closing-server\"\n\nconst createSocket = (path: string) => new WebSocket(path)\n\nlet port: number\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n})\n\ntest(\"plugins support onDisconnect\", (done) => {\n  createClosingServer(port)\n\n  // this plugin supports onDisconnect\n  const plugin = () => ({ onDisconnect: done }) satisfies Plugin<ReactotronCore>\n\n  // create a client & add the plugin\n  createClient({ createSocket, port, plugins: [plugin] }).connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-on-plugin.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"plugins support onPlugin\", (done) => {\n  // create a client\n  const client = createClient({ createSocket })\n\n  // make a plugin to capture onPlugin\n  const plugin = () => ({\n    onPlugin: (instance) => {\n      expect(instance).toBe(client)\n      done()\n    },\n  })\n\n  // add the plugin\n  client.use(plugin)\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-send.test.ts",
    "content": "import { ReactotronCore, createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\nimport { PluginCreator } from \"reactotron-core-client\"\n\nconst createSocket = (path) => new WebSocket(path)\nconst mock = { type: \"type\", payload: \"payload\" }\n\nlet port: number\nlet server: WebSocket.Server\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = new WebSocket.Server({ port })\n})\n\nafterEach(() => {\n  server.clients.forEach((client) => client.close())\n  server?.close()\n})\n\ntest(\"plugins support send\", (done) => {\n  let capturedSend: any\n\n  // the plugin to extract the send function\n  const plugin: PluginCreator<ReactotronCore> = (reactotron) => {\n    capturedSend = reactotron.send\n    return {}\n  }\n\n  // create the client, add the plugin, and connect\n  const client = createClient({\n    createSocket,\n    port,\n    onConnect: () => capturedSend(mock.type, mock.payload),\n  }).use(plugin)\n\n  // the server waits for the command\n  server.on(\"connection\", (socket) => {\n    // fires the server receives a command\n    socket.on(\"message\", (message) => {\n      const { type, payload } = JSON.parse(message.toString())\n      if (type === \"client.intro\") return\n      expect(type).toEqual(mock.type)\n      expect(payload).toEqual(mock.payload)\n      done()\n    })\n  })\n\n  client.connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/plugin-state-responses.test.ts",
    "content": "import { createClient, corePlugins } from \"../src/reactotron-core-client\"\nimport plugin from \"../src/plugins/api-response\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"api response\", async () => {\n  const client: any = createClient({ createSocket })\n  let type\n  let request\n  let response\n  let duration\n  client.send = (x: string, y: any) => {\n    type = x\n    request = y.request\n    response = y.response\n    duration = y.duration\n  }\n  client.use(plugin())\n\n  expect(client.plugins.length).toBe(corePlugins.length + 1)\n  expect(typeof client.apiResponse).toBe(\"function\")\n\n  client.apiResponse({ a: 1 }, { b: 2 }, 12)\n\n  expect(type).toBe(\"api.response\")\n  expect(request).toEqual({ a: 1 })\n  expect(response).toEqual({ b: 2 })\n  expect(duration).toBe(12)\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/send.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\nimport { getPort } from \"get-port-please\"\n\nconst createSocket = (path) => new WebSocket(path)\n\nconst mock = {\n  type: \"GO!\",\n  payload: [1, 2, \"three\", { four: true }],\n}\n\nlet port: number\nlet server: WebSocket.Server\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = new WebSocket.Server({ port })\n})\n\nafterEach(() => {\n  server?.close()\n})\n\ntest(\"sends a valid command\", (done) => {\n  // the server waits for the command\n  server.on(\"connection\", (socket) => {\n    socket.on(\"message\", (message) => {\n      const { type, payload } = JSON.parse(message.toString())\n      if (type === \"client.intro\") return\n      expect(type).toBe(mock.type)\n      expect(payload).toEqual(mock.payload)\n      socket.close()\n      done()\n    })\n  })\n\n  // client should send the command\n  const client = createClient({\n    createSocket,\n    port,\n    onConnect: () => client.send(mock.type, mock.payload),\n  })\n  client.connect()\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/serialize.test.ts",
    "content": "import serialize from \"../src/serialize\"\n\ntest(\"serializes objects\", () => {\n  const mock = { x: 1 }\n  const actual = serialize(mock)\n  const expected = `{\"x\":1}`\n\n  expect(actual).toEqual(expected)\n})\n\ntest(\"serializes arrays\", () => {\n  const mock = { x: [1, 2, 3] }\n  const actual = serialize(mock)\n  const expected = `{\"x\":[1,2,3]}`\n\n  expect(actual).toEqual(expected)\n})\n\ntest(\"serializes BigInts\", () => {\n  const mock = {\n    x: [BigInt(1), BigInt(2), BigInt(3)],\n    // eslint-disable-next-line @typescript-eslint/no-loss-of-precision, no-loss-of-precision\n    y: [BigInt(12345678901234567890), BigInt(2345434553442342345235243234)],\n  }\n  const actual = serialize(mock)\n  const expected = `{\"x\":[\"1\",\"2\",\"3\"],\"y\":[\"12345678901234567168\",\"2345434553442342324832043008\"]}`\n\n  expect(actual).toEqual(expected)\n})\n\ntest(\"serializes nested objects\", () => {\n  const mock = { x: { y: 1 } }\n  const actual = serialize(mock)\n  const expected = `{\"x\":{\"y\":1}}`\n\n  expect(actual).toEqual(expected)\n})\n\ntest(\"detects circular nested refs\", () => {\n  const parent: any = {}\n  const child: any = { parent }\n  parent.child = child\n\n  const actual = serialize(parent)\n  const expected = `{\"child\":{\"parent\":\"~~~ Circular Reference ~~~\"}}`\n\n  expect(actual).toEqual(expected)\n})\n\ntest(\"medium sized funk\", () => {\n  const mockPayload: any = {}\n  const o: any = {}\n  o.foo = { x: 1 }\n  o.bar = o\n  mockPayload.string = \"String\"\n  mockPayload.number = 69\n  mockPayload.object = o\n  mockPayload.list = [o, mockPayload.string, \"literally a string\", mockPayload.number, o]\n  function hello() {\n    // Intentionally empty\n  }\n  mockPayload.fn = hello\n  mockPayload.anonymous = () => {}\n  mockPayload.bigInt = BigInt(1212)\n\n  const actual = JSON.parse(serialize(mockPayload))\n  expect(actual.string).toBe(\"String\")\n  expect(actual.number).toBe(69)\n  expect(actual.object.foo.x).toBe(1)\n  expect(actual.object.bar).toBe(\"~~~ Circular Reference ~~~\")\n  expect(actual.list[0]).toEqual({ foo: { x: 1 }, bar: \"~~~ Circular Reference ~~~\" })\n  expect(actual.list[1]).toBe(\"String\")\n  expect(actual.list[2]).toBe(\"literally a string\")\n  expect(actual.list[3]).toBe(69)\n  expect(actual.list[4]).toEqual({ foo: { x: 1 }, bar: \"~~~ Circular Reference ~~~\" })\n  expect(actual.fn).toBe(\"~~~ hello() ~~~\")\n  expect(actual.anonymous).toBe(\"~~~ anonymous function ~~~\")\n  expect(actual.bigInt).toBe(\"1212\")\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/start-timer.test.ts",
    "content": "import { createClient } from \"../src/reactotron-core-client\"\nimport WebSocket from \"ws\"\n\nconst createSocket = (path) => new WebSocket(path)\n\ntest(\"has a startTimer function\", () => {\n  const client = createClient({ createSocket })\n  expect(typeof client.startTimer).toBe(\"function\")\n  const elapsed = client.startTimer()\n  expect(typeof elapsed).toBe(\"function\")\n})\n"
  },
  {
    "path": "lib/reactotron-core-client/test/stopwatch.test.ts",
    "content": "import { start } from \"../src/stopwatch\"\n\n// aim for 30 fps -- even though fps has nothing to do with anything at all\n// const TICK = 1.0 / 30.0\n\n// a promise based delay that's not accurate at all\n// const delay = ms => new Promise(resolve => setTimeout(resolve, ms))\n\ntest(\"start returns the right interface\", () => {\n  const elapsed = start()\n  expect(typeof elapsed).toBe(\"function\")\n})\n\n// using >= because on node there's event loop overhead and new Date() instantiation\n// test(\"gives us milliseconds\", async () => {\n//   const elapsed = start()\n//   expect(elapsed() <= 0.1).toBe(true) // just a sanity test to make sure i'm not the problem\n//   await delay(TICK)\n// })\n\n// // here's a callback version\n// test(\"gives us milliseconds\", done => {\n//   const elapsed = start()\n//   setTimeout(() => {\n//     expect(elapsed()).toBeGreaterThanOrEqual(TICK)\n//     done()\n//   }, TICK)\n// })\n"
  },
  {
    "path": "lib/reactotron-core-client/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"strict\": true,\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/types/reactotron.d.ts",
    "content": "interface Console {\n  tron: any\n}\n"
  },
  {
    "path": "lib/reactotron-core-client/wallaby.js",
    "content": "module.exports = function (wallaby) {\n  return {\n    files: [\"src/**/*.ts\", \"!src/**/*.test.ts\"],\n\n    tests: [\"src/**/*.test.ts\"],\n\n    compilers: {\n      \"**/*.ts\": wallaby.compilers.babel(),\n    },\n\n    env: {\n      type: \"node\",\n      runner: \"node\",\n    },\n\n    testFramework: \"jest\",\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-core-contract/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [0.3.2](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.3.1...reactotron-core-contract@0.3.2) (2025-10-06)\n\n### [0.3.1](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.3.0...reactotron-core-contract@0.3.1) (2025-09-16)\n\n## [0.3.0](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.2.5...reactotron-core-contract@0.3.0) (2025-03-16)\n\n\n### Features\n\n* **reactotron-app:** show redux diffs in timeline ([#1531](https://github.com/infinitered/reactotron/issues/1531) by [@camilossantos2809](https://github.com/camilossantos2809)) ([77831ae](https://github.com/infinitered/reactotron/commit/77831aeb928d0e63c8828b90efa17caeab67f699)), closes [#496](https://github.com/infinitered/reactotron/issues/496)\n\n### [0.2.5](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.2.4...reactotron-core-contract@0.2.5) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [0.2.4](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.2.3...reactotron-core-contract@0.2.4) (2024-08-26)\n\n### [0.2.3](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.2.2...reactotron-core-contract@0.2.3) (2024-02-14)\n\n## [0.2.2](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.2.1...reactotron-core-contract@0.2.2) (2024-02-14)\n\n### [0.2.1](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.2.0...reactotron-core-contract@0.2.1) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n## [0.2.0](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.1.1...reactotron-core-contract@0.2.0) (2023-12-08)\n\n\n### Features\n\n* **ui:** Display error if port is already in use ([#1335](https://github.com/infinitered/reactotron/issues/1335) by [@jamonholmgren](https://github.com/jamonholmgren)) ([e205e37](https://github.com/infinitered/reactotron/commit/e205e3704b5378b1807d781f7ba5ba3338dc7ff7))\n\n### [0.1.1](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.1.0...reactotron-core-contract@0.1.1) (2023-12-05)\n\n## [0.1.0](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.0.6...reactotron-core-contract@0.1.0) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [0.0.6](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.0.5...reactotron-core-contract@0.0.6) (2023-11-06)\n\n### [0.0.5](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.0.4...reactotron-core-contract@0.0.5) (2023-10-13)\n\n### [0.0.4](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.0.3...reactotron-core-contract@0.0.4) (2023-08-24)\n\n\n### Bug Fixes\n\n* **reactotron-core-contract:** make \"clear\" payload undefined ([3d355ef](https://github.com/infinitered/reactotron/commit/3d355efcbc9f55dbaeb6ccfba6821a60a1153c19))\n\n### [0.0.3](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.0.2...reactotron-core-contract@0.0.3) (2023-07-24)\n\n### [0.0.2](https://github.com/infinitered/reactotron/compare/reactotron-core-contract@0.0.1...reactotron-core-contract@0.0.2) (2023-07-20)\n\n### 0.0.1 (2023-07-17)\n"
  },
  {
    "path": "lib/reactotron-core-contract/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-core-contract/README.md",
    "content": "# reactotron-core-contract\n\nTypeScript contracts for WebSocket messages between `reactotron-core-server` and `reactotron-core-client`.\n\nThis package provides the type definitions and command enums that ensure type-safe communication between Reactotron clients, plugins, and servers.\n\n## Installation\n\n```bash\nnpm install reactotron-core-contract\n# or\nyarn add reactotron-core-contract\n```\n\n## What's Included\n\n### Command Types Enum\n\nThe `CommandType` object contains all available command type strings as constants:\n\n```typescript\nimport { CommandType } from \"reactotron-core-contract\"\n\nCommandType.Log // \"log\"\nCommandType.ApiResponse // \"api.response\"\nCommandType.Benchmark // \"benchmark.report\"\nCommandType.Display // \"display\"\nCommandType.Image // \"image\"\n// ... and many more\n```\n\n### Payload Types\n\nEach command has a corresponding payload type that defines its structure:\n\n```typescript\nimport type {\n  LogPayload,\n  ApiResponsePayload,\n  BenchmarkReportPayload,\n  DisplayPayload,\n  ImagePayload,\n  StateActionCompletePayload,\n  // ... and more\n} from \"reactotron-core-contract\"\n```\n\n### Command Interface\n\nThe base `Command` interface that all messages follow:\n\n```typescript\nimport type { Command, CommandTypeKey } from \"reactotron-core-contract\"\n\ninterface Command<Type extends CommandTypeKey, Payload> {\n  type: CommandTypeKey\n  connectionId: number\n  clientId?: string\n  date: Date\n  deltaTime: number\n  important: boolean\n  messageId: number\n  payload: Payload\n  diff?: any\n}\n```\n\n## Usage in Clients\n\nClients use the contract types to send properly typed commands to the server:\n\n```typescript\nimport { CommandType } from \"reactotron-core-contract\"\nimport type { LogPayload, ApiResponsePayload, DisplayPayload } from \"reactotron-core-contract\"\n\n// Sending a log command\nconst logPayload: LogPayload = {\n  level: \"debug\",\n  message: \"Hello, Reactotron!\",\n}\nclient.send(CommandType.Log, logPayload)\n\n// Sending an API response\nconst apiPayload: ApiResponsePayload = {\n  request: {\n    url: \"https://api.example.com/users\",\n    method: \"GET\",\n    data: null,\n    headers: { Accept: \"application/json\" },\n    params: {},\n  },\n  response: {\n    body: '{\"users\": [...]}',\n    status: 200,\n    headers: { \"Content-Type\": \"application/json\" },\n  },\n  duration: 245,\n}\nclient.send(CommandType.ApiResponse, apiPayload)\n\n// Sending a custom display event\nconst displayPayload: DisplayPayload = {\n  name: \"User Login\",\n  value: { userId: 123, username: \"steve\" },\n  preview: \"Steve logged in successfully\",\n}\nclient.send(CommandType.Display, displayPayload, true) // marked important\n```\n\n## Usage in Plugins\n\nPlugins import payload types to ensure they're sending properly structured data:\n\n### Example: API Response Plugin\n\n```typescript\nimport type { ApiResponsePayload } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"reactotron-core-client\"\n\nconst apiResponse = () => (reactotron: ReactotronCore) => {\n  return {\n    features: {\n      apiResponse: (\n        request: ApiResponsePayload[\"request\"],\n        response: ApiResponsePayload[\"response\"],\n        duration: number\n      ) => {\n        reactotron.send(\"api.response\", { request, response, duration })\n      },\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n```\n\n### Example: Benchmark Plugin\n\n```typescript\nimport type { BenchmarkReportPayload } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"reactotron-core-client\"\n\nconst benchmark = () => (reactotron: ReactotronCore) => {\n  const benchmark = (title: string) => {\n    const steps: BenchmarkReportPayload[\"steps\"] = []\n\n    const step = (stepTitle: string) => {\n      steps.push({\n        title: stepTitle,\n        time: performance.now(),\n        delta: 0,\n      })\n    }\n\n    const stop = () => {\n      reactotron.send(\"benchmark.report\", { title, steps })\n    }\n\n    return { step, stop }\n  }\n\n  return {\n    features: { benchmark },\n  } satisfies Plugin<ReactotronCore>\n}\n```\n\n### Example: Handling Server Commands\n\nPlugins can also handle commands from the server by checking the command type:\n\n```typescript\nimport { CommandType } from \"reactotron-core-contract\"\nimport type { StateValuesRequestPayload } from \"reactotron-core-contract\"\n\nconst myPlugin = () => (reactotron) => {\n  return {\n    onCommand: (command) => {\n      // Type-safe command handling\n      if (command.type === CommandType.StateValuesRequest) {\n        const payload = command.payload as StateValuesRequestPayload\n        const { path } = payload\n        // Handle the request...\n      }\n    },\n  }\n}\n```\n\n## Available Command Types & Payloads\n\n### Client → Server Commands\n\n| Command Type                          | Payload Type                     | Description                        |\n| ------------------------------------- | -------------------------------- | ---------------------------------- |\n| `CommandType.Log`                     | `LogPayload`                     | Log messages, warnings, and errors |\n| `CommandType.ApiResponse`             | `ApiResponsePayload`             | HTTP request/response information  |\n| `CommandType.Benchmark`               | `BenchmarkReportPayload`         | Performance benchmark results      |\n| `CommandType.ClientIntro`             | `ClientIntroPayload`             | Client connection information      |\n| `CommandType.Display`                 | `DisplayPayload`                 | Custom display events              |\n| `CommandType.Image`                   | `ImagePayload`                   | Image data with metadata           |\n| `CommandType.SagaTaskComplete`        | `SagaTaskCompletePayload`        | Redux-saga task completion data    |\n| `CommandType.StateActionComplete`     | `StateActionCompletePayload`     | State action completion            |\n| `CommandType.StateValuesChange`       | `StateValuesChangePayload`       | State value change notifications   |\n| `CommandType.StateKeysResponse`       | `StateKeysResponsePayload`       | Response with state keys           |\n| `CommandType.StateValuesResponse`     | `StateValuesResponsePayload`     | Response with state values         |\n| `CommandType.StateBackupResponse`     | `StateBackupResponsePayload`     | State backup data                  |\n| `CommandType.AsyncStorageMutation`    | `AsyncStorageMutationPayload`    | AsyncStorage changes               |\n| `CommandType.CustomCommandRegister`   | `CustomCommandRegisterPayload`   | Register a custom command          |\n| `CommandType.CustomCommandUnregister` | `CustomCommandUnregisterPayload` | Unregister a custom command        |\n| `CommandType.ReplLsResponse`          | `ReplLsResponsePayload`          | REPL list response                 |\n| `CommandType.ReplExecuteResponse`     | `ReplExecuteResponsePayload`     | REPL execution result              |\n\n### Server → Client Commands\n\n| Command Type                       | Payload Type                  | Description                  |\n| ---------------------------------- | ----------------------------- | ---------------------------- |\n| `CommandType.StateValuesRequest`   | `StateValuesRequestPayload`   | Request state values at path |\n| `CommandType.StateKeysRequest`     | `StateKeysRequestPayload`     | Request state keys at path   |\n| `CommandType.StateValuesSubscribe` | `StateValuesSubscribePayload` | Subscribe to state changes   |\n| `CommandType.StateActionDispatch`  | `StateActionDispatchPayload`  | Dispatch an action           |\n| `CommandType.StateBackupRequest`   | `StateBackupRequestPayload`   | Request state backup         |\n| `CommandType.StateRestoreRequest`  | `StateRestoreRequestPayload`  | Restore state from backup    |\n| `CommandType.Clear`                | `undefined`                   | Clear the timeline           |\n\n### React Native Specific\n\n| Command Type                 | Description                 |\n| ---------------------------- | --------------------------- |\n| `CommandType.DevtoolsOpen`   | Open React Native DevTools  |\n| `CommandType.DevtoolsReload` | Reload the React Native app |\n| `CommandType.EditorOpen`     | Open a file in the editor   |\n| `CommandType.Storybook`      | Toggle Storybook            |\n| `CommandType.Overlay`        | Toggle overlay              |\n\n## For Plugin Authors\n\nWhen creating a Reactotron plugin:\n\n1. Import the relevant payload types from `reactotron-core-contract`\n2. Use `CommandType` enum for command type strings\n3. Type your plugin functions with the payload types\n4. Return a plugin object that satisfies the `Plugin<ReactotronCore>` interface\n\nExample plugin structure:\n\n```typescript\nimport type { MyPayloadType } from \"reactotron-core-contract\"\nimport type { ReactotronCore, Plugin } from \"reactotron-core-client\"\n\nexport default (config = {}) =>\n  (reactotron: ReactotronCore) => {\n    return {\n      // Handle server commands\n      onCommand: (command) => {\n        // Check command.type and handle accordingly\n      },\n\n      // Add features to Reactotron instance\n      features: {\n        myFeature: (data: MyPayloadType) => {\n          reactotron.send(\"my.command\", data)\n        },\n      },\n\n      // Lifecycle hooks\n      onConnect: () => {\n        /* ... */\n      },\n      onDisconnect: () => {\n        /* ... */\n      },\n    } satisfies Plugin<ReactotronCore>\n  }\n```\n\n## Learn More\n\n- [Reactotron Core Client](../reactotron-core-client/README.md) - How to use the client\n- [Creating Plugins](../../docs/plugins/index.md) - Guide to creating plugins\n- [Custom Commands](../../docs/custom-commands.md) - Working with custom commands\n"
  },
  {
    "path": "lib/reactotron-core-contract/package.json",
    "content": "{\n  \"name\": \"reactotron-core-contract\",\n  \"version\": \"0.3.2\",\n  \"description\": \"Typescript contracts for websocket messages between server and clients\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-contract\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-contract\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --passWithNoTests\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint src --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@types/ws\": \"^8.5.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"jest-environment-node\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"rimraf\": \"5.0.5\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\",\n    \"ws\": \"^8.14.2\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.[tj]s\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/project.json",
    "content": "{\n  \"name\": \"reactotron-core-contract\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/apiResponse.ts",
    "content": "export interface ApiResponsePayload {\n  duration: number\n  request: {\n    data: any\n    headers: { [key: string]: string }\n    method: string\n    params: any\n    url: string\n  }\n  response: {\n    body: string\n    headers: { [key: string]: string }\n    status: number\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/asyncStorage.ts",
    "content": "export interface AsyncStorageMutationPayload {\n  action: string\n  /** Storage data can be any type */\n  data: any\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/benchmark.ts",
    "content": "export type BenchmarkStep = {\n  title: string\n  time: number\n  delta: number\n}\n\nexport interface BenchmarkReportPayload {\n  title: string\n  steps: BenchmarkStep[]\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/clientIntro.ts",
    "content": "export interface ClientIntroPayload {\n  name: string\n  clientId?: string\n  environment?: string\n  reactotronVersion?: string\n  /** Additional fields added by server on receipt */\n  address?: string\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/command.ts",
    "content": "import type { ApiResponsePayload } from \"./apiResponse\"\nimport type { AsyncStorageMutationPayload } from \"./asyncStorage\"\nimport type { BenchmarkReportPayload } from \"./benchmark\"\nimport type { ClientIntroPayload } from \"./clientIntro\"\nimport type { CustomCommandRegisterPayload, CustomCommandUnregisterPayload } from \"./customCommand\"\nimport type { DisplayPayload } from \"./display\"\nimport type { ImagePayload } from \"./image\"\nimport type { LogPayload } from \"./log\"\nimport { EditorOpenPayload } from \"./openInEditor\"\nimport type { ReplExecuteResponsePayload, ReplLsResponsePayload } from \"./repl\"\nimport type { SagaTaskCompletePayload } from \"./sagaTaskComplete\"\nimport type {\n  StateActionCompletePayload,\n  StateActionDispatchPayload,\n  StateBackupRequestPayload,\n  StateBackupResponsePayload,\n  StateKeysRequestPayload,\n  StateKeysResponsePayload,\n  StateRestoreRequestPayload,\n  StateValuesChangePayload,\n  StateValuesRequestPayload,\n  StateValuesResponsePayload,\n  StateValuesSubscribePayload,\n} from \"./state\"\n\nexport const CommandType = {\n  ApiResponse: \"api.response\",\n  AsyncStorageMutation: \"asyncStorage.mutation\",\n  Benchmark: \"benchmark.report\",\n  ClientIntro: \"client.intro\",\n  Display: \"display\",\n  Image: \"image\",\n  Log: \"log\",\n  SagaTaskComplete: \"saga.task.complete\",\n  StateActionComplete: \"state.action.complete\",\n  StateKeysResponse: \"state.keys.response\",\n  StateValuesChange: \"state.values.change\",\n  StateValuesResponse: \"state.values.response\",\n  StateBackupResponse: \"state.backup.response\",\n  StateBackupRequest: \"state.backup.request\",\n  StateRestoreRequest: \"state.restore.request\",\n  StateActionDispatch: \"state.action.dispatch\",\n  StateValuesSubscribe: \"state.values.subscribe\",\n  StateKeysRequest: \"state.keys.request\",\n  StateValuesRequest: \"state.values.request\",\n  CustomCommandRegister: \"customCommand.register\",\n  CustomCommandUnregister: \"customCommand.unregister\",\n  Clear: \"clear\",\n  ReplLsResponse: \"repl.ls.response\",\n  ReplExecuteResponse: \"repl.execute.response\",\n  // these technically are commands only in reactotron-react-native, but I felt lazy so they can live here\n  DevtoolsOpen: \"devtools.open\",\n  DevtoolsReload: \"devtools.reload\",\n  EditorOpen: \"editor.open\",\n  Storybook: \"storybook\",\n  Overlay: \"overlay\",\n} as const\n\nexport type CommandTypeKey = (typeof CommandType)[keyof typeof CommandType]\n\nexport interface CommandMap {\n  [CommandType.ApiResponse]: ApiResponsePayload\n  [CommandType.AsyncStorageMutation]: AsyncStorageMutationPayload\n  [CommandType.Benchmark]: BenchmarkReportPayload\n  [CommandType.ClientIntro]: ClientIntroPayload\n  [CommandType.Display]: DisplayPayload\n  [CommandType.Image]: ImagePayload\n  [CommandType.Log]: LogPayload\n  [CommandType.SagaTaskComplete]: SagaTaskCompletePayload\n  [CommandType.StateActionComplete]: StateActionCompletePayload\n  [CommandType.StateKeysResponse]: StateKeysResponsePayload\n  [CommandType.StateValuesChange]: StateValuesChangePayload\n  [CommandType.StateValuesResponse]: StateValuesResponsePayload\n  [CommandType.StateBackupResponse]: StateBackupResponsePayload\n  [CommandType.StateBackupRequest]: StateBackupRequestPayload\n  [CommandType.StateRestoreRequest]: StateRestoreRequestPayload\n  [CommandType.StateActionDispatch]: StateActionDispatchPayload\n  [CommandType.StateValuesSubscribe]: StateValuesSubscribePayload\n  [CommandType.StateKeysRequest]: StateKeysRequestPayload\n  [CommandType.StateValuesRequest]: StateValuesRequestPayload\n  [CommandType.CustomCommandRegister]: CustomCommandRegisterPayload\n  [CommandType.CustomCommandUnregister]: CustomCommandUnregisterPayload\n  [CommandType.Clear]: undefined\n  [CommandType.ReplLsResponse]: ReplLsResponsePayload\n  [CommandType.ReplExecuteResponse]: ReplExecuteResponsePayload\n  [CommandType.DevtoolsOpen]: undefined\n  [CommandType.DevtoolsReload]: undefined\n  [CommandType.EditorOpen]: EditorOpenPayload\n  [CommandType.Storybook]: boolean\n  [CommandType.Overlay]: boolean\n}\n\nexport interface Command<\n  Type extends CommandTypeKey = CommandTypeKey,\n  Payload extends Record<string, any> = CommandMap[Type],\n> {\n  type: CommandTypeKey\n  connectionId: number\n  clientId?: string\n  date: Date\n  deltaTime: number\n  important: boolean\n  messageId: number\n  payload: Payload\n  diff?: any\n}\n\nexport type CommandEvent = (command: Command) => void\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/customCommand.ts",
    "content": "export interface CustomCommandRegisterPayload {\n  id: number\n  command: string\n  title?: string\n  description?: string\n  args?: Array<{\n    name: string\n    type: string\n  }>\n}\n\nexport interface CustomCommandUnregisterPayload {\n  id: number\n  command: string\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/diff.ts",
    "content": "export interface DifferenceCreate {\n  type: \"CREATE\"\n  path: (string | number)[]\n  value: any\n}\nexport interface DifferenceRemove {\n  type: \"REMOVE\"\n  path: (string | number)[]\n  oldValue: any\n}\nexport interface DifferenceChange {\n  type: \"CHANGE\"\n  path: (string | number)[]\n  value: any\n  oldValue: any\n}\nexport type Difference = DifferenceCreate | DifferenceRemove | DifferenceChange\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/display.ts",
    "content": "export interface DisplayPayload {\n  name: string\n  value?: any\n  preview?: string\n  image?: string | { uri: string }\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/image.ts",
    "content": "export interface ImagePayload {\n  uri: string\n  preview: string\n  caption?: string\n  width?: number\n  height?: number\n  filename?: string\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/index.ts",
    "content": "export * from \"./reactotron-core-contract\"\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/log.ts",
    "content": "export interface ErrorStackFrame {\n  fileName: string\n  functionName: string\n  lineNumber: number\n  columnNumber: number | null\n}\n\nexport const isErrorStackFrame = (value: unknown): value is ErrorStackFrame =>\n  value &&\n  typeof value === \"object\" &&\n  \"fileName\" in value &&\n  typeof value.fileName === \"string\" &&\n  \"functionName\" in value &&\n  typeof value.functionName === \"string\" &&\n  \"lineNumber\" in value &&\n  typeof value.lineNumber === \"number\" &&\n  (\"columnNumber\" in value\n    ? value.columnNumber === null || typeof value.columnNumber === \"number\"\n    : true)\n\nexport const isErrorStackFrameArray = (value: unknown): value is ErrorStackFrame[] =>\n  Array.isArray(value) && value.every(isErrorStackFrame)\n\nexport interface ErrorLogPayload {\n  level: \"error\"\n  message: string\n  stack: Error[\"stack\"] | string[] | ErrorStackFrame[]\n}\n\nexport type LogPayload =\n  | {\n      level: \"debug\"\n      message: string\n    }\n  | {\n      level: \"warn\"\n      message: string\n    }\n  | ErrorLogPayload\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/openInEditor.ts",
    "content": "export interface EditorOpenPayload {\n  file: string\n  lineNumber: string\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/reactotron-core-contract.ts",
    "content": "export * from \"./apiResponse\"\nexport * from \"./asyncStorage\"\nexport * from \"./benchmark\"\nexport * from \"./clientIntro\"\nexport * from \"./command\"\nexport * from \"./customCommand\"\nexport * from \"./diff\"\nexport * from \"./display\"\nexport * from \"./image\"\nexport * from \"./log\"\nexport * from \"./openInEditor\"\nexport * from \"./repl\"\nexport * from \"./sagaTaskComplete\"\nexport * from \"./server-events\"\nexport * from \"./state\"\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/repl.ts",
    "content": "export type ReplLsResponsePayload = string[]\n\n/**\n * Result of eval() - can be anything\n */\nexport type ReplExecuteResponsePayload = any\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/sagaTaskComplete.ts",
    "content": "export interface SagaTaskCompleteChild {\n  depth: number\n  /** Human-readable description of what the saga effect does */\n  description: string\n  duration: number\n  effectId: number\n  /** The input parameters/data for the effect - can be any value from saga middleware */\n  extra: any\n  name: string\n  parentEffectId: number\n  /** The output/return value from the effect - can be actions, API responses, computed values, etc. */\n  result: any\n  status: string\n  /** Data about the winning branch in a race() effect, null for non-race effects */\n  winner: any\n  /** Truthy if this effect lost a race() or was cancelled, null otherwise */\n  loser: any\n}\n\nexport interface SagaTaskCompletePayload {\n  children: SagaTaskCompleteChild[]\n  /** Human-readable description of what triggered the saga, may be undefined */\n  description?: string\n  duration: number\n  triggerType: string\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/server-events.ts",
    "content": "import WebSocket from \"ws\"\nimport { Command } from \"./command\"\n\nexport interface PfxServerOptions {\n  /**\n   * Path to a PFX file.\n   */\n  pathToPfx: string\n  /**\n   * Passphrase, if required, of the PFX file.\n   */\n  passphrase?: string\n}\n\nexport interface CertServerOptions {\n  /**\n   * Path to a signing cert file.\n   */\n  pathToCert: string\n  /**\n   * Path to a the corresponding key of the cert file.\n   */\n  pathToKey: string\n  /**\n   * Passphrase, if required, of the key file.\n   */\n  passphrase?: string\n}\n\nexport type WssServerOptions = PfxServerOptions | CertServerOptions\n\n/**\n * Configuration options for the Reactotron server.\n */\nexport interface ServerOptions {\n  /**\n   * Which port to listen to.  Default: 9090.\n   */\n  port: number\n\n  /**\n   * Web Socket Secure Configuration\n   */\n  wss?: WssServerOptions\n}\n\n/**\n * A client which is in the process of connecting.\n */\nexport interface PartialConnection {\n  /**\n   * The unique id of the client.\n   */\n  id: number\n\n  /**\n   * The ip address.\n   */\n  address: string\n\n  /**\n   * The connecting web socket.\n   */\n  socket: WebSocket\n}\n\n/**\n * One of the events which be subscribed to.\n */\nexport const ServerEvent = {\n  /**\n   * When a command arrives from a client.\n   */\n  command: \"command\",\n  /**\n   * The server has started.\n   */\n  start: \"start\",\n  /**\n   * The server has stopped.\n   */\n  stop: \"stop\",\n  /**\n   * A client has connected.\n   */\n  connect: \"connect\",\n  /**\n   * A client has connected and provided us the initial detail we want.\n   */\n  connectionEstablished: \"connectionEstablished\",\n  /**\n   * A client has disconnected.\n   */\n  disconnect: \"disconnect\",\n  /**\n   * Port is already in use\n   */\n  portUnavailable: \"portUnavailable\",\n} as const\n\nexport type ServerEventKey = keyof typeof ServerEvent\n\ntype StartPayload = any\ntype StopPayload = any\ntype ConnectPayload = PartialConnection\ntype ConnectionEstablishedPayload = any\ntype DisconnectPayload = any\ntype PortUnavailablePayload = any\n\nexport type ServerEventMap = {\n  [ServerEvent.command]: Command\n  [ServerEvent.start]: StartPayload\n  [ServerEvent.stop]: StopPayload\n  [ServerEvent.connect]: ConnectPayload\n  [ServerEvent.connectionEstablished]: ConnectionEstablishedPayload\n  [ServerEvent.disconnect]: DisconnectPayload\n  [ServerEvent.portUnavailable]: PortUnavailablePayload\n}\n\nexport type WebSocketEvent = (socket: WebSocket) => void\n"
  },
  {
    "path": "lib/reactotron-core-contract/src/state.ts",
    "content": "export interface StateBackupRequestPayload {\n  state: Record<string, any>\n}\n\nexport interface StateBackupResponsePayload {\n  state: Record<string, any>\n}\n\nexport interface StateRestoreRequestPayload {\n  state: Record<string, any>\n}\n\nexport interface StateActionDispatchPayload {\n  action:\n    | {\n        type: string\n        payload: Record<string, any>\n      }\n    | {\n        name: string\n        path?: string\n        args?: any[]\n      }\n}\n\ntype Path = string\n\ntype Value = any\n\nexport interface StateKeysRequestPayload {\n  path: Path\n}\n\nexport interface StateKeysResponsePayload {\n  path: Path\n  keys: string[]\n  valid: boolean\n}\n\nexport interface StateValuesRequestPayload {\n  path: Path\n}\n\nexport interface StateValuesResponsePayload {\n  path: Path\n  value: Value\n  valid: boolean\n}\n\nexport interface StateValuesChangePayload {\n  changes: { path: Path; value: Value }[]\n}\n\nexport interface StateValuesSubscribePayload {\n  paths: Path[]\n}\n\nexport interface StateActionCompletePayload {\n  name: string\n  action: Record<string, any>\n  ms?: number\n}\n"
  },
  {
    "path": "lib/reactotron-core-contract/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-core-server/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [3.2.1](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.2.0...reactotron-core-server@3.2.1) (2025-09-16)\n\n## [3.2.0](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.1.5...reactotron-core-server@3.2.0) (2025-03-16)\n\n\n### Features\n\n* **reactotron-app:** show redux diffs in timeline ([#1531](https://github.com/infinitered/reactotron/issues/1531) by [@camilossantos2809](https://github.com/camilossantos2809)) ([77831ae](https://github.com/infinitered/reactotron/commit/77831aeb928d0e63c8828b90efa17caeab67f699)), closes [#496](https://github.com/infinitered/reactotron/issues/496)\n\n### [3.1.5](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.1.4...reactotron-core-server@3.1.5) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [3.1.4](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.1.3...reactotron-core-server@3.1.4) (2024-08-26)\n\n### [3.1.3](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.1.2...reactotron-core-server@3.1.3) (2024-02-14)\n\n## [3.1.2](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.1.1...reactotron-core-server@3.1.2) (2024-02-14)\n\n### [3.1.1](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.1.0...reactotron-core-server@3.1.1) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n## [3.1.0](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6...reactotron-core-server@3.1.0) (2023-12-08)\n\n\n### Features\n\n* **ui:** Display error if port is already in use ([#1335](https://github.com/infinitered/reactotron/issues/1335) by [@jamonholmgren](https://github.com/jamonholmgren)) ([e205e37](https://github.com/infinitered/reactotron/commit/e205e3704b5378b1807d781f7ba5ba3338dc7ff7))\n\n### [3.0.6](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.16...reactotron-core-server@3.0.6) (2023-12-05)\n\n### [3.0.6-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.15...reactotron-core-server@3.0.6-beta.16) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [3.0.6-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.14...reactotron-core-server@3.0.6-beta.15) (2023-11-06)\n\n### [3.0.6-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.13...reactotron-core-server@3.0.6-beta.14) (2023-10-13)\n\n### [3.0.6-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.12...reactotron-core-server@3.0.6-beta.13) (2023-10-02)\n\n### [3.0.6-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.11...reactotron-core-server@3.0.6-beta.12) (2023-09-27)\n\n### [3.0.6-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.10...reactotron-core-server@3.0.6-beta.11) (2023-09-22)\n\n### [3.0.6-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.9...reactotron-core-server@3.0.6-beta.10) (2023-09-08)\n\n### [3.0.6-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.8...reactotron-core-server@3.0.6-beta.9) (2023-08-25)\n\n### [3.0.6-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.7...reactotron-core-server@3.0.6-beta.8) (2023-08-24)\n\n### [3.0.6-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.6...reactotron-core-server@3.0.6-beta.7) (2023-07-24)\n\n### [3.0.6-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.5...reactotron-core-server@3.0.6-beta.6) (2023-07-20)\n\n### [3.0.6-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.4...reactotron-core-server@3.0.6-beta.5) (2023-07-17)\n\n### [3.0.6-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.3...reactotron-core-server@3.0.6-beta.4) (2023-07-06)\n\n### [3.0.6-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.2...reactotron-core-server@3.0.6-beta.3) (2023-07-03)\n\n### [3.0.6-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.1...reactotron-core-server@3.0.6-beta.2) (2023-06-15)\n\n### [3.0.6-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-beta.0...reactotron-core-server@3.0.6-beta.1) (2023-06-15)\n\n### [3.0.6-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.6...reactotron-core-server@3.0.6-beta.0) (2023-04-06)\n\n### [3.0.6-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.5...reactotron-core-server@3.0.6-alpha.6) (2023-03-21)\n\n\n### Bug Fixes\n\n* **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n\n### [3.0.6-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.4...reactotron-core-server@3.0.6-alpha.5) (2023-03-06)\n\n### [3.0.6-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.3...reactotron-core-server@3.0.6-alpha.4) (2023-03-06)\n\n### [3.0.6-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.2...reactotron-core-server@3.0.6-alpha.3) (2023-03-06)\n\n### [3.0.6-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.1...reactotron-core-server@3.0.6-alpha.2) (2023-02-17)\n\n### [3.0.6-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.6-alpha.0...reactotron-core-server@3.0.6-alpha.1) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n\n### Bug Fixes\n\n* **config.yml:** remove unused circleci files ([5d40a4d](https://github.com/infinitered/reactotron/commit/5d40a4ddba0b5ac8759216152000f54158d32669))\n* **lib:** add yarn test --runInBand ([4f7c49b](https://github.com/infinitered/reactotron/commit/4f7c49bc1ab8074fedbb3285f66d603aefa3d09f))\n\n### [3.0.6-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-core-server@3.0.5...reactotron-core-server@3.0.6-alpha.0) (2023-02-01)\n\n\n### Features\n\n* **reactotron-core-server:** add workspace ([798429c](https://github.com/infinitered/reactotron/commit/798429ca5974162f4ebf5044c534fa999f2f075f))\n\n\n### Bug Fixes\n\n* **nx:** handle clean in task pipeline ([f0d4f77](https://github.com/infinitered/reactotron/commit/f0d4f77c6e4e903836f2b32bd5234f7b611028d1))\n* **reactotron-core-server:** change mitt import ([150de3c](https://github.com/infinitered/reactotron/commit/150de3c5a6711605bced0903de2c4ac2723b4e2c))\n* **reactotron-core-server:** fix tests by updating import ([b180f9f](https://github.com/infinitered/reactotron/commit/b180f9f70c2b1259c345ba78190eb0c927b6ec14))\n* **reactotron-core-server:** fix types ([2df46ef](https://github.com/infinitered/reactotron/commit/2df46ef065e72e174fbac22cd76ac54d038cf50d))\n"
  },
  {
    "path": "lib/reactotron-core-server/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-core-server/README.md",
    "content": "# reactotron-core-server\n\nThis provides the core functionality of the servers allowing it talk to talk to the client.\n\nIt is used by [`reactotron-app`](https://github.com/infinitered/reactotron) and `reactotron-cli`.\n\n# Usage\n\n```js\nimport { createServer } from \"reactotron-core-server\"\n\n// configure a server\nconst server = createServer({\n  port: 9090, // default\n})\n\n// The server has started.\nserver.on(\"start\", () => console.log(\"Reactotron started\"))\n// A client has connected, but we don't know who it is yet.\nserver.on(\"connect\", () => console.log(\"Connected\"))\n// A client has connected and provided us the initial detail we want.\nserver.on(\"connectionEstablished\", (conn) => console.log(\"Connection\", conn))\n// A command has arrived from the client.\nserver.on(\"command\", (cmd) => console.log(\"Command: \", cmd))\n// A client has disconnected.\nserver.on(\"disconnect\", (conn) => console.log(\"Disconnected\", conn))\n// The server has stopped.\nserver.on(\"stop\", () => console.log(\"Reactotron stopped\"))\n// Port is already in use\nserver.on(\"portUnavailable\", () => console.log(\"Port 9090 unavailable\"))\n\n// start the server\nserver.start()\n\n// check to see if it started\nif (!server.started) {\n  console.log(\"Server failed to start\")\n  return\n}\n\n// say hello when we connect (this is automatic, you don't send this)\nserver.send(\"hello.server\", {})\n\n// request some values from state\nserver.send(\"state.values.request\", { path: \"user.givenName\" })\n\n// request some keys from state\nserver.send(\"state.keys.request\", { path: \"user\" })\n\n// subscribe to some state paths so when then change, we get notified\nserver.send(\"state.values.subscribe\", { paths: [\"user.givenName\", \"user\"] })\n\n// stop the server\nserver.stop()\n```\n"
  },
  {
    "path": "lib/reactotron-core-server/package.json",
    "content": "{\n  \"name\": \"reactotron-core-server\",\n  \"version\": \"3.2.1\",\n  \"description\": \"Grants Reactotron servers the ability to talk to a Reactotron client.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-server\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-server\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"build:dev\": \"yarn clean && bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint src test --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"prepare\": \"bob build\"\n  },\n  \"dependencies\": {\n    \"mitt\": \"^3.0.1\",\n    \"ramda\": \"0.28.0\",\n    \"reactotron-core-contract\": \"workspace:*\",\n    \"ws\": \"^8.14.2\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@types/ramda\": \"^0.28.0\",\n    \"@types/ws\": \"^8.5.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"get-port-please\": \"^3.1.1\",\n    \"jest\": \"^29.7.0\",\n    \"jest-environment-node\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"rimraf\": \"5.0.5\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.[tj]s\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/project.json",
    "content": "{\n  \"name\": \"reactotron-core-server\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/src/index.ts",
    "content": "import Server from \"./reactotron-core-server\"\nexport { createServer } from \"./reactotron-core-server\"\nexport default Server\n"
  },
  {
    "path": "lib/reactotron-core-server/src/reactotron-core-server.ts",
    "content": "import { find, propEq, without, forEach, pluck, reject, equals, mergeRight, includes } from \"ramda\"\nimport { createServer as createHttpsServer, ServerOptions as HttpsServerOptions } from \"https\"\nimport type {\n  ServerEventMap,\n  ServerOptions,\n  PartialConnection,\n  CommandEvent,\n  WebSocketEvent,\n  PfxServerOptions,\n  WssServerOptions,\n  ServerEventKey,\n  Command,\n} from \"reactotron-core-contract\"\nimport { Server as WebSocketServer, OPEN, type RawData } from \"ws\"\nimport validate from \"./validation\"\nimport { repair } from \"./repair-serialization\"\nimport { readFileSync } from \"fs\"\n\ntype Mitt = typeof import(\"mitt\").default // I'm so sorry, Jest made me do this :'(\nconst mitt: Mitt = require(\"mitt\")\n\n/**\n * The default server options.\n */\nconst DEFAULTS: ServerOptions = {\n  port: 9090,\n}\n\nfunction createGuid() {\n  function s4() {\n    return Math.floor((1 + Math.random()) * 0x10000)\n      .toString(16)\n      .substring(1)\n  }\n  return s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + s4() + s4()\n}\n\nfunction isPfxServerOptions(wssOptions: WssServerOptions): wssOptions is PfxServerOptions {\n  return !!(wssOptions as PfxServerOptions).pathToPfx\n}\n\nfunction buildHttpsServerOptions(wssOptions: WssServerOptions): HttpsServerOptions {\n  if (!wssOptions) {\n    return undefined\n  }\n  if (isPfxServerOptions(wssOptions)) {\n    return {\n      pfx: readFileSync(wssOptions.pathToPfx),\n      passphrase: wssOptions.passphrase,\n    }\n  }\n  if (!wssOptions.pathToCert) {\n    return undefined\n  }\n  return {\n    cert: readFileSync(wssOptions.pathToCert),\n    key: wssOptions.pathToKey ? readFileSync(wssOptions.pathToKey) : undefined,\n    passphrase: wssOptions.passphrase,\n  }\n}\n\n/**\n * The Reactotron server.\n */\nexport default class Server {\n  /**\n   * An event emitter which fires events from connected clients.\n   */\n  emitter = mitt<ServerEventMap>()\n\n  /**\n   * Additional server configuration.\n   */\n  options: ServerOptions = mergeRight({}, DEFAULTS)\n\n  /**\n   * A unique id which is assigned to each inbound message.\n   */\n  messageId = 0\n\n  /**\n   * A unique id which is assigned to each inbound connection.\n   */\n  connectionId = 0\n\n  /**\n   * Which redux state locations we are subscribing to.\n   */\n  subscriptions: string[] = []\n\n  /**\n   * Clients who are in the process of connecting but haven't yet handshaked.\n   */\n  partialConnections: PartialConnection[] = []\n\n  /**\n   * The web socket.\n   */\n  wss: WebSocketServer\n\n  /**\n   * Holds the currently connected clients.\n   */\n  connections = []\n\n  /**\n   * Have we started the server?\n   */\n  started = false\n\n  /**\n   * Keep alive interval to be running while the server is up.\n   */\n  keepAlive: ReturnType<typeof setInterval>\n\n  /**\n   * Set the configuration options.\n   */\n  configure(options: ServerOptions = DEFAULTS) {\n    // options get merged & validated before getting set\n    const newOptions = mergeRight(this.options, options)\n    validate(newOptions)\n    this.options = newOptions\n    return this\n  }\n\n  /**\n   * Listens to an event.\n   */\n  on(event: ServerEventKey, handler: CommandEvent | WebSocketEvent) {\n    this.emitter.on(event, handler)\n  }\n\n  /**\n   * Turns off an event listener\n   */\n  off(type: ServerEventKey, handler: (any) => any) {\n    this.emitter.off(type, handler)\n  }\n\n  /**\n   * Starts the server\n   */\n  start = () => {\n    const { port } = this.options\n    const httpsServerOptions = buildHttpsServerOptions(this.options.wss)\n\n    if (!httpsServerOptions) {\n      this.wss = new WebSocketServer({ port })\n      this.wss.on(\"error\", (error) => {\n        if (error.message.includes(\"EADDRINUSE\")) {\n          this.emitter.emit(\"portUnavailable\", port)\n        } else {\n          console.error(error)\n        }\n      })\n    } else {\n      const server = createHttpsServer(httpsServerOptions)\n      this.wss = new WebSocketServer({ server })\n      server.listen(port)\n    }\n\n    if (this.keepAlive) {\n      clearInterval(this.keepAlive)\n    }\n\n    // In the future we should bake this in more and use it to clean up dropped connections\n    this.keepAlive = setInterval(() => {\n      this.wss.clients.forEach((ws) => {\n        ws.ping(() => {\n          // noop\n        })\n      })\n    }, 30000)\n\n    // register events\n    this.wss.on(\"connection\", (socket, request) => {\n      const thisConnectionId = this.connectionId++\n\n      // a wild client appears\n      const partialConnection = {\n        id: thisConnectionId,\n        address: request.socket.remoteAddress,\n        socket,\n      } as PartialConnection\n\n      // tuck them away in a \"almost connected status\"\n      this.partialConnections.push(partialConnection)\n\n      // trigger onConnect\n      this.emitter.emit(\"connect\", partialConnection)\n\n      socket.on(\"error\", (error) => console.log(\"ERR\", error))\n\n      // when this client disconnects\n      socket.on(\"close\", () => {\n        // remove them from the list partial list\n        this.partialConnections = reject(\n          propEq(\"id\", thisConnectionId),\n          this.partialConnections\n        ) as any\n\n        // remove them from the main connections list\n        const severingConnection = find(propEq(\"id\", thisConnectionId), this.connections)\n        if (severingConnection) {\n          this.connections = reject(propEq(\"id\", severingConnection.id), this.connections)\n          this.emitter.emit(\"disconnect\", severingConnection)\n        }\n      })\n\n      const extractOrCreateDate = (dateString?: string) => {\n        if (!dateString) return new Date()\n        try {\n          return new Date(Date.parse(dateString))\n        } catch {\n          return new Date()\n        }\n      }\n\n      // when we receive a command from the client\n      socket.on(\"message\", (incoming: RawData) => {\n        const message = JSON.parse(incoming.toString())\n        repair(message)\n        const { type, important, payload, deltaTime = 0, diff } = message\n        this.messageId++\n\n        const fullCommand: Command = {\n          type,\n          important,\n          payload,\n          diff,\n          connectionId: thisConnectionId,\n          messageId: this.messageId,\n          date: extractOrCreateDate(message.date),\n          deltaTime,\n          clientId: (socket as any).clientId,\n        }\n\n        // for client intros\n        if (type === \"client.intro\") {\n          // find them in the partial connection list\n          const partConn = find(propEq(\"id\", thisConnectionId), this.partialConnections) as any\n\n          // add their address in\n          fullCommand.payload.address = partConn.address\n\n          // remove them from the partial connections list\n          this.partialConnections = reject(\n            propEq(\"id\", thisConnectionId),\n            this.partialConnections\n          ) as any\n\n          let connectionClientId = message.payload.clientId\n\n          if (!connectionClientId) {\n            connectionClientId = createGuid()\n\n            socket.send(\n              JSON.stringify({\n                type: \"setClientId\",\n                payload: connectionClientId,\n              })\n            )\n          } else {\n            // Check if we already have this connection\n            const currentWssConnections = Array.from(this.wss.clients)\n            const currentClientConnections = currentWssConnections.filter(\n              (c) => (c as any).clientId === connectionClientId\n            )\n\n            for (let i = 0; i < currentClientConnections.length; i++) {\n              setTimeout(currentClientConnections[i].close, 500) // Defer this for a small amount of time because reasons.\n\n              const severingConnection = find(\n                propEq(\"clientId\", connectionClientId),\n                this.connections\n              )\n              if (severingConnection) {\n                this.connections = reject(\n                  propEq(\"clientId\", severingConnection.clientId),\n                  this.connections\n                )\n              }\n            }\n          }\n\n          ;(socket as any).clientId = connectionClientId\n          fullCommand.clientId = connectionClientId\n\n          // bestow the payload onto the connection\n          const connection = mergeRight(payload, {\n            id: thisConnectionId,\n            address: partConn.address,\n            clientId: fullCommand.clientId,\n            diff,\n          })\n\n          // then trigger the connection\n          this.connections.push(connection)\n          this.emitter.emit(\"connectionEstablished\", connection)\n        }\n\n        // refresh subscriptions\n        if (type === \"state.values.change\") {\n          this.subscriptions = pluck(\"path\", (payload.changes || []) as { path: string }[])\n        }\n\n        // assign a name to the backups since the client doesn't pass one.  without it, we have to\n        // call extendObservable instead of a standard assignment, which is very confusing.\n        if (type === \"state.backup.response\") {\n          fullCommand.payload.name = null\n        }\n\n        this.emitter.emit(\"command\", fullCommand)\n      })\n\n      // resend the subscriptions to the client upon connecting\n      this.stateValuesSendSubscriptions()\n    })\n\n    // trigger the start message\n    this.emitter.emit(\"start\")\n\n    this.started = true\n\n    return this\n  }\n\n  /**\n   * Stops the server\n   */\n  stop() {\n    forEach(\n      (s) => s && (s as any).connected && (s as any).disconnect(),\n      pluck(\"socket\", this.connections)\n    )\n\n    if (this.keepAlive) {\n      clearInterval(this.keepAlive)\n    }\n\n    this.wss.close()\n\n    // trigger the stop message\n    this.emitter.emit(\"stop\")\n    this.started = false\n\n    return this\n  }\n\n  /**\n   * Sends a command to the client\n   */\n  send = (type, payload, clientId?) => {\n    this.wss.clients.forEach((client) => {\n      if (client.readyState === OPEN && (!clientId || (client as any).clientId === clientId)) {\n        client.send(JSON.stringify({ type, payload }))\n      }\n    })\n  }\n\n  /**\n   * Sends a list of subscribed paths to the client for state subscription.\n   */\n  stateValuesSendSubscriptions() {\n    this.send(\"state.values.subscribe\", { paths: this.subscriptions })\n  }\n\n  /**\n   * Subscribe to a path in the client's state.\n   */\n  stateValuesSubscribe(path) {\n    // prevent duplicates\n    if (includes(path, this.subscriptions)) {\n      return\n    }\n\n    // monitor the complete state when * (star selector) is entered\n    if (equals(path, \"*\")) {\n      this.subscriptions.push(\"\")\n    } else {\n      this.subscriptions.push(path)\n    }\n\n    // subscribe\n    this.stateValuesSendSubscriptions()\n  }\n\n  /**\n   * Unsubscribe from this path.\n   */\n  stateValuesUnsubscribe(path) {\n    // if it doesn't exist, jet\n    if (!includes(path, this.subscriptions)) {\n      return\n    }\n\n    this.subscriptions = without([path], this.subscriptions)\n    this.stateValuesSendSubscriptions()\n  }\n\n  /**\n   * Clears the subscriptions.\n   */\n  stateValuesClearSubscriptions() {\n    this.subscriptions = []\n    this.stateValuesSendSubscriptions()\n  }\n\n  /**\n   * Sends a custom message to the client.\n   *\n   * @param {string} value The string to send\n   */\n  sendCustomMessage(value, clientId?) {\n    this.send(\"custom\", value, clientId)\n  }\n}\n\n// convenience factory function\nexport const createServer = (options?: ServerOptions) => {\n  const server = new Server()\n  server.configure(options)\n  return server\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/src/repair-serialization.ts",
    "content": "/**\n * JSON.stringify() clobbers falsy values, so we had to \"encode\" those\n * values before that step on the client.\n *\n * This is the \"decoding\" part of that equation.\n *\n * Thanks Stack Overflow.\n *\n * https://stackoverflow.com/questions/30128834/deep-changing-values-in-a-javascript-object\n */\n\n// on the server side, we'll be swapping out these values\nconst replacements: { [key: string]: any } = Object.create(null)\nreplacements[\"~~~ undefined ~~~\"] = undefined\nreplacements[\"~~~ null ~~~\"] = null\nreplacements[\"~~~ false ~~~\"] = false\nreplacements[\"~~~ zero ~~~\"] = 0\nreplacements[\"~~~ empty string ~~~\"] = \"\"\nreplacements[\"~~~ anonymous function ~~~\"] = \"fn()\"\nreplacements[\"~~~ NaN ~~~\"] = NaN\nreplacements[\"~~~ Infinity ~~~\"] = Infinity\nreplacements[\"~~~ -Infinity ~~~\"] = -Infinity\n\n/**\n * Walks an object replacing any values with new values.  This mutates!\n *\n * @param payload The object\n * @return The same object with some values replaced.\n */\nexport function repair(payload: any) {\n  // we only want objects\n  if (typeof payload !== \"object\") {\n    return payload\n  }\n\n  // the recursive iterator\n  function walker(obj: object) {\n    let k\n    // NOTE: Object.prototype.hasOwnProperty IS defined however the bind to the object throws the def off.\n    const has = Object.prototype.hasOwnProperty.bind(obj) as (key: string) => boolean\n    for (k in obj) {\n      if (has(k)) {\n        switch (typeof obj[k]) {\n          // should we recurse thru sub-objects and arrays?\n          case \"object\":\n            walker(obj[k])\n            break\n\n          // mutate in-place with one of our replacements\n          case \"string\":\n            if (obj[k].toLowerCase() in replacements) {\n              // look for straight up replacements\n              obj[k] = replacements[obj[k].toLowerCase()]\n            } else if (obj[k].length > 9) {\n              // fancy function replacements\n              if (obj[k].startsWith(\"~~~ \") && obj[k].endsWith(\" ~~~\")) {\n                obj[k] = obj[k].replace(/~~~/g, \"\")\n              }\n            }\n        }\n      }\n    }\n  }\n\n  // set it running\n  walker(payload)\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/src/validation.ts",
    "content": "import { allPass, complement, isNil, is } from \"ramda\"\nimport type { ServerOptions } from \"reactotron-core-contract\"\n\n/**\n * Is this a valid port?\n *\n * @param number The port number.\n */\nconst isPortValid = allPass([complement(isNil), is(Number), (n) => n >= 1 && n <= 65535])\n\n/**\n * Ensures the options are sane to run this baby.  Throw if not.  These\n * are basically sanity checks.\n *\n * @param options Additional options to configure the server.\n */\nexport default (options?: ServerOptions): void => {\n  const { port } = options\n\n  if (!isPortValid(port)) {\n    throw new Error(\"invalid port\")\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-server/test/configure.test.ts",
    "content": "import { createServer } from \"../src/reactotron-core-server\"\n\ntest(\"has default port\", () => {\n  const client = createServer()\n  expect(client.options.port).toBe(9090)\n  client.on(\"connect\", () => client.stop())\n})\n\ntest(\"options can be overridden\", () => {\n  const server = createServer({ port: 1 })\n  expect(server.options.port).toBe(1)\n  server.on(\"connect\", () => server.stop())\n})\n\ntest(\"port must be valid\", () => {\n  expect(() => createServer({ port: null })).toThrow()\n  expect(() => createServer({ port: undefined })).toThrow()\n  expect(() => createServer({ port: 0 })).toThrow()\n  expect(() => createServer({ port: 65536 })).toThrow()\n})\n"
  },
  {
    "path": "lib/reactotron-core-server/test/connections.test.ts",
    "content": "import { getPort } from \"get-port-please\"\nimport { createServer } from \"../src/reactotron-core-server\"\nimport WebSocket from \"ws\"\n\nconst mock = { type: \"client.intro\", payload: {} }\nlet port: number\nlet server: ReturnType<typeof createServer>\n\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = createServer({ port })\n})\n\nafterEach(() => {\n  server.stop()\n})\n\ntest(\"keeps track of connections\", (done) => {\n  // when we get a command\n  server.on(\"command\", () => {\n    expect(server.connections.length).toBe(1)\n    server.send(\"hi\", {})\n    server.stop()\n  })\n\n  server.start()\n  expect(server.connections.length).toBe(0)\n\n  // setup the client\n  const client = new WebSocket(`ws://localhost:${port}`)\n  client.on(\"open\", () => client.send(JSON.stringify(mock)))\n  client.on(\"close\", () => done())\n  client.on(\"message\", () => client.close())\n})\n"
  },
  {
    "path": "lib/reactotron-core-server/test/send.test.ts",
    "content": "import { getPort } from \"get-port-please\"\nimport { createServer } from \"../src/reactotron-core-server\"\nimport WebSocket from \"ws\"\n\nconst mock = { type: \"client.intro\", payload: {} }\nlet port: number\nlet server: ReturnType<typeof createServer>\n\nbeforeEach(async () => {\n  port = await getPort({ random: true })\n  server = createServer({ port })\n})\n\nafterEach(() => {\n  server.stop()\n})\n\ntest(\"sends a valid command\", (done) => {\n  server.on(\"command\", () => server.send(mock.type, mock.payload))\n  server.start()\n\n  // setup the client\n  const client = new WebSocket(`ws://localhost:${port}`)\n\n  // when the client receives a command from the server\n  client.on(\"message\", (message) => {\n    const { type, payload } = JSON.parse(message.toString())\n    if (type === mock.type) {\n      server.stop()\n      expect(type).toBe(mock.type)\n      expect(payload).toEqual(mock.payload)\n      client.close()\n      done()\n    }\n  })\n\n  client.on(\"open\", () => client.send(JSON.stringify(mock)))\n})\n"
  },
  {
    "path": "lib/reactotron-core-server/test/started.test.ts",
    "content": "import { getPort } from \"get-port-please\"\nimport { createServer } from \"../src/reactotron-core-server\"\n\ntest(\"sets the started flag\", async () => {\n  const port = await getPort({ random: true })\n  const server = createServer({ port })\n  expect(server.started).toBe(false)\n  server.start()\n  expect(server.started).toBe(true)\n  server.stop()\n  expect(server.started).toBe(false)\n})\n"
  },
  {
    "path": "lib/reactotron-core-server/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\", \"test\"],\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/.gitignore",
    "content": ".DS_STORE\nnode_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-core-ui/.storybook/addons.js",
    "content": "import \"@storybook/addon-actions/register\"\nimport \"@storybook/addon-links/register\"\nimport \"@storybook/addon-knobs/register\"\n"
  },
  {
    "path": "lib/reactotron-core-ui/.storybook/config.js",
    "content": "import React from \"react\"\nimport { configure, addDecorator } from \"@storybook/react\"\nimport { withKnobs } from \"@storybook/addon-knobs\"\n\nimport ReactotronAppProvider from \"../src/components/ReactotronAppProvider\"\n\nconst StyledDecorator = (storyFn) => <ReactotronAppProvider>{storyFn()}</ReactotronAppProvider>\naddDecorator(StyledDecorator)\n\naddDecorator(withKnobs)\n\nconfigure(require.context(\"../src\", true, /\\.story\\.tsx$/), module)\n"
  },
  {
    "path": "lib/reactotron-core-ui/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [2.6.3](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.6.2...reactotron-core-ui@2.6.3) (2025-10-06)\n\n### [2.6.2](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.6.1...reactotron-core-ui@2.6.2) (2025-09-16)\n\n### [2.6.1](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.6.0...reactotron-core-ui@2.6.1) (2025-03-17)\n\n\n### Bug Fixes\n\n* **reactotron-app:** fix unescaped regex symbols crash ([#1550](https://github.com/infinitered/reactotron/issues/1550) by [@camilossantos2809](https://github.com/camilossantos2809)) ([0ecaa1d](https://github.com/infinitered/reactotron/commit/0ecaa1dd0c89afa869bc80c05fd21356562bfc7b)), closes [#1541](https://github.com/infinitered/reactotron/issues/1541)\n\n## [2.6.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.5.0...reactotron-core-ui@2.6.0) (2025-03-16)\n\n\n### Features\n\n* **reactotron-app:** show redux diffs in timeline ([#1531](https://github.com/infinitered/reactotron/issues/1531) by [@camilossantos2809](https://github.com/camilossantos2809)) ([77831ae](https://github.com/infinitered/reactotron/commit/77831aeb928d0e63c8828b90efa17caeab67f699)), closes [#496](https://github.com/infinitered/reactotron/issues/496)\n\n## [2.5.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.4.0...reactotron-core-ui@2.5.0) (2025-03-13)\n\n\n### Features\n\n* **reactotron-app:** add auto light/dark mode switching ([#1547](https://github.com/infinitered/reactotron/issues/1547) by [@arkthur](https://github.com/arkthur)) ([6477628](https://github.com/infinitered/reactotron/commit/6477628979de4dc94a1086efdbbeef6b78cbf312))\n\n## [2.4.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.6...reactotron-core-ui@2.4.0) (2025-01-28)\n\n\n### Features\n\n* show graphql operation name for graphql requests ([#1521](https://github.com/infinitered/reactotron/issues/1521) by [@yurik256](https://github.com/yurik256)) ([21b9759](https://github.com/infinitered/reactotron/commit/21b9759e03f893961e7eca5514b0cbc6b08941f9))\n\n### [2.3.6](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.5...reactotron-core-ui@2.3.6) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [2.3.5](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.4...reactotron-core-ui@2.3.5) (2024-11-04)\n\n\n### Bug Fixes\n\n* Handling console.log(null) ([#1520](https://github.com/infinitered/reactotron/issues/1520)) ([98e4805](https://github.com/infinitered/reactotron/commit/98e48053d1d3ab430874b4710b38cb7cd35078bb)), closes [#1517](https://github.com/infinitered/reactotron/issues/1517)\n\n### [2.3.4](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.3...reactotron-core-ui@2.3.4) (2024-10-17)\n\n\n### Bug Fixes\n\n* **reactotron-app:** Timeline empty state improvements ([#1395](https://github.com/infinitered/reactotron/issues/1395) by [@carlinisaacson](https://github.com/carlinisaacson)) ([f1472d7](https://github.com/infinitered/reactotron/commit/f1472d7863e9640efa74203608769b14b641deec))\n\n### [2.3.3](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.2...reactotron-core-ui@2.3.3) (2024-04-04)\n\n### [2.3.2](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.1...reactotron-core-ui@2.3.2) (2024-03-26)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** Overlapping timeline layout ([#1457](https://github.com/infinitered/reactotron/issues/1457)) ([12a0215](https://github.com/infinitered/reactotron/commit/12a02152c7beca5518298dff82af24559e0dfb91))\n\n### [2.3.1](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.3.0...reactotron-core-ui@2.3.1) (2024-03-26)\n\n## [2.3.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.2.1...reactotron-core-ui@2.3.0) (2024-02-16)\n\n\n### Features\n\n* **reactotron-app:** Timeline deep-search ([#1417](https://github.com/infinitered/reactotron/issues/1417)) ([8d0e952](https://github.com/infinitered/reactotron/commit/8d0e9525ac30e895f38a0c2f99eeda155c14527f)), closes [#1181](https://github.com/infinitered/reactotron/issues/1181)\n\n### [2.2.1](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.2.0...reactotron-core-ui@2.2.1) (2024-02-14)\n\n## [2.2.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.1.1...reactotron-core-ui@2.2.0) (2024-02-14)\n\n\n### Features\n\n* **timeline:** Show network request response code in timeline ([#1434](https://github.com/infinitered/reactotron/issues/1434)) ([ff32aa5](https://github.com/infinitered/reactotron/commit/ff32aa5d65dd14d880b3835e5ad3df6fd9647638)), closes [#1282](https://github.com/infinitered/reactotron/issues/1282)\n\n## [2.1.1](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.1.0...reactotron-core-ui@2.1.1) (2024-02-14)\n\n## [2.1.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.5...reactotron-core-ui@2.1.0) (2024-01-25)\n\n\n### Features\n\n* **reactotron-app:** JSON view of `AsyncStorage` values ([#1419](https://github.com/infinitered/reactotron/issues/1419)) [skip ci] ([9bfdee4](https://github.com/infinitered/reactotron/commit/9bfdee4bf47c35ec73bf5b2a7bf18b05a18ac7d5)), closes [#947](https://github.com/infinitered/reactotron/issues/947)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [2.0.5](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.4...reactotron-core-ui@2.0.5) (2024-01-23)\n\n### [2.0.4](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.3...reactotron-core-ui@2.0.4) (2024-01-18)\n\n\n### Bug Fixes\n\n* **reactotron-app:** added fontFamily from useTheme to Modal component ([#1401](https://github.com/infinitered/reactotron/issues/1401)) ([af9a78c](https://github.com/infinitered/reactotron/commit/af9a78cb62feae9cdb455a92826eee5908bb99a1))\n\n### [2.0.3](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2...reactotron-core-ui@2.0.3) (2023-12-22)\n\n\n### Bug Fixes\n\n* **timeline:** selectable api response url ([#1388](https://github.com/infinitered/reactotron/issues/1388) by [@frankcalise](https://github.com/frankcalise)) ([2de4b84](https://github.com/infinitered/reactotron/commit/2de4b84dda4bfd0ca792e4c68248017b8a93222d)), closes [#1375](https://github.com/infinitered/reactotron/issues/1375)\n\n### [2.0.2](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.24...reactotron-core-ui@2.0.2) (2023-12-05)\n\n### [2.0.2-beta.24](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.23...reactotron-core-ui@2.0.2-beta.24) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [2.0.2-beta.23](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.22...reactotron-core-ui@2.0.2-beta.23) (2023-11-30)\n\n\n### Features\n\n* **reactotron:** Add Android `adb` command interface to the Help page. ([#1320](https://github.com/infinitered/reactotron/issues/1320)) ([60c985e](https://github.com/infinitered/reactotron/commit/60c985ec0c3ef4e2d00c0a67fbc467f4903558b7))\n\n### [2.0.2-beta.22](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.21...reactotron-core-ui@2.0.2-beta.22) (2023-11-06)\n\n### [2.0.2-beta.21](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.20...reactotron-core-ui@2.0.2-beta.21) (2023-10-24)\n\n\n### Bug Fixes\n\n* **display-cmd:** correct preview text ([#1319](https://github.com/infinitered/reactotron/issues/1319) by [@frankcalise](https://github.com/frankcalise)) ([9a5d1f3](https://github.com/infinitered/reactotron/commit/9a5d1f3b044896c4c5592289b6563aa56a3df30a))\n\n### [2.0.2-beta.20](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.19...reactotron-core-ui@2.0.2-beta.20) (2023-10-20)\n\n\n### Bug Fixes\n\n* **content-view:** parse stringified object ([#1318](https://github.com/infinitered/reactotron/issues/1318) by [@frankcalise](https://github.com/frankcalise)) ([6f82b9b](https://github.com/infinitered/reactotron/commit/6f82b9bb7be1ce3806b41a31a48a943dd9bda845)), closes [#1317](https://github.com/infinitered/reactotron/issues/1317)\n\n### [2.0.2-beta.19](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.18...reactotron-core-ui@2.0.2-beta.19) (2023-10-13)\n\n### [2.0.2-beta.18](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.17...reactotron-core-ui@2.0.2-beta.18) (2023-10-02)\n\n### [2.0.2-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.16...reactotron-core-ui@2.0.2-beta.17) (2023-09-27)\n\n### [2.0.2-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.15...reactotron-core-ui@2.0.2-beta.16) (2023-09-22)\n\n### [2.0.2-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.14...reactotron-core-ui@2.0.2-beta.15) (2023-09-08)\n\n### [2.0.2-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.13...reactotron-core-ui@2.0.2-beta.14) (2023-08-25)\n\n### [2.0.2-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.12...reactotron-core-ui@2.0.2-beta.13) (2023-08-24)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** make makeTable handle non-object handles ([4fad5fd](https://github.com/infinitered/reactotron/commit/4fad5fd64c95c9eac6e50abd621e990e5824e63a))\n\n### [2.0.2-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.11...reactotron-core-ui@2.0.2-beta.12) (2023-07-24)\n\n### [2.0.2-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.10...reactotron-core-ui@2.0.2-beta.11) (2023-07-20)\n\n### [2.0.2-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.9...reactotron-core-ui@2.0.2-beta.10) (2023-07-17)\n\n### [2.0.2-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.8...reactotron-core-ui@2.0.2-beta.9) (2023-07-17)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** remove debug console.log lol ([296a96d](https://github.com/infinitered/reactotron/commit/296a96d2a9280c16d0f1e91b17c1dd1811d533e0))\n\n### [2.0.2-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.7...reactotron-core-ui@2.0.2-beta.8) (2023-07-06)\n\n### [2.0.2-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.6...reactotron-core-ui@2.0.2-beta.7) (2023-07-03)\n\n### [2.0.2-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.5...reactotron-core-ui@2.0.2-beta.6) (2023-06-22)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** handle string error.stack properties ([137c8b9](https://github.com/infinitered/reactotron/commit/137c8b9da78b3cf437ee40383244c3af3d27b2ab))\n\n### [2.0.2-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.4...reactotron-core-ui@2.0.2-beta.5) (2023-06-21)\n\n### [2.0.2-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.3...reactotron-core-ui@2.0.2-beta.4) (2023-06-20)\n\n### [2.0.2-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.2...reactotron-core-ui@2.0.2-beta.3) (2023-06-15)\n\n### [2.0.2-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.1...reactotron-core-ui@2.0.2-beta.2) (2023-06-15)\n\n### [2.0.2-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-beta.0...reactotron-core-ui@2.0.2-beta.1) (2023-04-12)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** Fix draggable header eating all onClick events from child components ([1d24482](https://github.com/infinitered/reactotron/commit/1d24482c605014cc6d13a745c2432c9be3912cf6))\n\n### [2.0.2-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.9...reactotron-core-ui@2.0.2-beta.0) (2023-04-06)\n\n### [2.0.2-alpha.9](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.8...reactotron-core-ui@2.0.2-alpha.9) (2023-03-21)\n\n\n### Bug Fixes\n\n* **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n\n### [2.0.2-alpha.8](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.7...reactotron-core-ui@2.0.2-alpha.8) (2023-03-06)\n\n### [2.0.2-alpha.7](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.6...reactotron-core-ui@2.0.2-alpha.7) (2023-03-06)\n\n### [2.0.2-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.5...reactotron-core-ui@2.0.2-alpha.6) (2023-03-06)\n\n### [2.0.2-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.4...reactotron-core-ui@2.0.2-alpha.5) (2023-03-01)\n\n### [2.0.2-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.3...reactotron-core-ui@2.0.2-alpha.4) (2023-02-17)\n\n### [2.0.2-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.2...reactotron-core-ui@2.0.2-alpha.3) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n\n### Bug Fixes\n\n* **config.yml:** remove unused circleci files ([5d40a4d](https://github.com/infinitered/reactotron/commit/5d40a4ddba0b5ac8759216152000f54158d32669))\n* **nx:** handle clean in task pipeline ([f0d4f77](https://github.com/infinitered/reactotron/commit/f0d4f77c6e4e903836f2b32bd5234f7b611028d1))\n\n### [2.0.2-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.1...reactotron-core-ui@2.0.2-alpha.2) (2023-01-27)\n\n\n### Bug Fixes\n\n* **.circleci:** run jest tests in band ([bc9cf48](https://github.com/infinitered/reactotron/commit/bc9cf4806f9eb5dbe6eba3a7dfe918f67cd958f3))\n* **eslint:** remove duplicate rules ([fe540f5](https://github.com/infinitered/reactotron/commit/fe540f55558b062ad664cd9baf5f609ff3e74d04))\n* **reactotron-core-ui:** add ./dist to clean script ([939c30e](https://github.com/infinitered/reactotron/commit/939c30e3e2b640de56d099b1a23cb4158099153d))\n* **reactotron-core-ui:** wrap tests in act ([1f42392](https://github.com/infinitered/reactotron/commit/1f423925dc1a50278b0eb4d9d31ada8a3f0914f7))\n\n### [2.0.2-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.2-alpha.0...reactotron-core-ui@2.0.2-alpha.1) (2023-01-26)\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** set publishConfig ([de2d7d6](https://github.com/infinitered/reactotron/commit/de2d7d6f9617901f0b276173cdd3047dc6b6d12c))\n\n### [2.0.2-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-core-ui@2.0.1...reactotron-core-ui@2.0.2-alpha.0) (2023-01-26)\n\n\n### Features\n\n* **.circleci:** create tags based workflow ([084374f](https://github.com/infinitered/reactotron/commit/084374fc856d08bfc92e359a074cea8407a4691c))\n* **nx.json:** add common options ([b3a8edf](https://github.com/infinitered/reactotron/commit/b3a8edfb7e53ca4ac375a1fd1372e88569b63809))\n\n\n### Bug Fixes\n\n* **reactotron-core-ui:** update peer deps to match devDeps ([e4d45c5](https://github.com/infinitered/reactotron/commit/e4d45c50fb2a6375bb279cd947b657eac01f4a86))\n"
  },
  {
    "path": "lib/reactotron-core-ui/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-core-ui/README.md",
    "content": "# Reactotron Core UI\n\nThe library for all the shared UI between different reactotron clients.\n\n_This library is a WIP_\n\n# Credits\n\nReactotron is developed by [Infinite Red](https://infinite.red) and [@rmevans9](https://github.com/rmevans9).\n\n# Premium Support\n\n[Reactotron Core UI](https://infinite.red/reactotron-core-ui), as an open source project, is free to use and always will be. [Infinite Red](https://infinite.red/) offers premium React and [React Native](https://infinite.red/react-native) mobile app design/development services. Email us at [hello@infinite.red](mailto:hello@infinite.red) to get in touch for more details.\n"
  },
  {
    "path": "lib/reactotron-core-ui/package.json",
    "content": "{\n  \"name\": \"reactotron-core-ui\",\n  \"version\": \"2.6.3\",\n  \"description\": \"Core UI components for Reactotron\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-ui\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-core-ui\",\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"start\": \"start-storybook -p 6006\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"build-storybook\": \"build-storybook\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint src --ext .ts,.tsx\",\n    \"test\": \"jest\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prepare\": \"bob build\"\n  },\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.org/\",\n    \"access\": \"public\"\n  },\n  \"dependencies\": {\n    \"color-interpolate\": \"1.0.5\",\n    \"date-fns\": \"2.30.0\",\n    \"react-json-tree\": \"0.18.0\",\n    \"reactotron-core-contract\": \"workspace:*\",\n    \"stringify-object\": \"5.0.0\"\n  },\n  \"peerDependencies\": {\n    \"react\": \">=18.2.0\",\n    \"react-dom\": \">=18.2.0\",\n    \"react-icons\": \">=4.2.0\",\n    \"react-modal\": \">=3.16.1\",\n    \"react-motion\": \">=0.5.2\",\n    \"react-tooltip\": \">=4.5.1\",\n    \"styled-components\": \">=6.0.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-react\": \"7.22.15\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@storybook/addon-actions\": \"6.1.21\",\n    \"@storybook/addon-knobs\": \"6.2.9\",\n    \"@storybook/addon-links\": \"6.1.21\",\n    \"@storybook/addons\": \"6.1.21\",\n    \"@storybook/react\": \"6.1.21\",\n    \"@testing-library/react\": \"^14.1.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/react\": \"18.2.45\",\n    \"@types/react-dom\": \"18.2.14\",\n    \"@types/react-modal\": \"3.13.1\",\n    \"@types/react-motion\": \"0.0.31\",\n    \"@types/stringify-object\": \"3.3.1\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-loader\": \"^8.3.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"react-icons\": \"^4.11.0\",\n    \"react-modal\": \"3.16.1\",\n    \"react-motion\": \"0.5.2\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"react-test-renderer\": \"18.2.0\",\n    \"react-tooltip\": \"4.5.1\",\n    \"rimraf\": \"5.0.5\",\n    \"styled-components\": \"^6.1.0\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"extends\": [\n      \"plugin:react/recommended\"\n    ],\n    \"plugins\": [\n      \"react\",\n      \"react-hooks\"\n    ],\n    \"settings\": {\n      \"react\": {\n        \"version\": \"detect\"\n      }\n    },\n    \"parserOptions\": {\n      \"ecmaFeatures\": {\n        \"jsx\": true\n      }\n    },\n    \"rules\": {\n      \"react-hooks/rules-of-hooks\": \"error\",\n      \"react-hooks/exhaustive-deps\": \"warn\",\n      \"no-use-before-define\": 0,\n      \"react/prop-types\": 0\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"jsdom\",\n    \"testMatch\": [\n      \"**/*.test.ts\",\n      \"**/*.test.tsx\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/project.json",
    "content": "{\n  \"name\": \"reactotron-core-ui\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/ActionButton/ActionButton.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { MdReorder } from \"react-icons/md\"\n\nimport ActionButton from \"./index\"\n\nexport default {\n  title: \"Action Button\",\n}\n\nexport const Default = () => (\n  <ActionButton tip=\"This is the tooltip.\" icon={MdReorder} onClick={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/ActionButton/index.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\nimport Tooltip from \"../Tooltip\"\nimport { type TooltipProps } from \"react-tooltip\"\n\nconst Container = styled.div`\n  cursor: pointer;\n  margin: 0 5px;\n  -webkit-app-region: none;\n`\n\ninterface Props {\n  tip: string\n  tipProps?: TooltipProps\n  icon: any\n  onClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void\n}\n\nfunction ActionButton({ icon: Icon, tip, tipProps = {}, onClick }: Props) {\n  return (\n    <Container data-tip={tip} onClick={onClick}>\n      <Icon size={24} />\n      <Tooltip {...tipProps} />\n    </Container>\n  )\n}\n\nexport default ActionButton\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Checkbox/Checkbox.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport Checkbox from \"./index\"\n\nexport default {\n  title: \"Checkbox\",\n}\n\nexport const Off = () => <Checkbox isChecked={false} label=\"My Checkbox\" onToggle={() => {}} />\n\nexport const On = () => <Checkbox isChecked label=\"My Checkbox\" onToggle={() => {}} />\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Checkbox/index.tsx",
    "content": "import React from \"react\"\nimport { MdCheckBoxOutlineBlank, MdCheckBox } from \"react-icons/md\"\nimport styled from \"styled-components\"\n\nconst Container = styled.div`\n  display: flex;\n  cursor: pointer;\n  padding: 5px 0;\n`\nconst IconContainer = styled.div`\n  padding-right: 10px;\n`\nconst Label = styled.span`\n  color: ${(props) => props.theme.tag};\n`\n\ninterface Props {\n  isChecked: boolean\n  label: string\n  onToggle: () => void\n}\n\nfunction Checkbox({ isChecked, label, onToggle }: Props) {\n  const Icon = isChecked ? MdCheckBox : MdCheckBoxOutlineBlank\n\n  return (\n    <Container onClick={onToggle}>\n      <IconContainer>\n        <Icon />\n      </IconContainer>\n      <Label>{label}</Label>\n    </Container>\n  )\n}\n\nexport default Checkbox\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/ContentView/ContentView.story.tsx",
    "content": "import React from \"react\"\n\nimport ContentView from \"./index\"\n\nexport default {\n  title: \"Content View\",\n}\n\nexport const Null = () => <ContentView value={null} />\nexport const Undefined = () => <ContentView value={undefined} />\nexport const String = () => <ContentView value=\"Test item that should show correctly.\" />\nexport const StringMultiLine = () => (\n  <ContentView value=\"Test item that should \\n show correctly.\" />\n)\nexport const Boolean = () => <ContentView value={false} />\nexport const Number = () => <ContentView value={2} />\nexport const Array = () => <ContentView value={[2]} />\nexport const ArrayMultiLevel = () => <ContentView value={[2, { test: true }]} />\nexport const Obj = () => <ContentView value={{ test: \"This is only a test\" }} />\nexport const ObjectMultiLevel = () => (\n  <ContentView value={{ test: true, test2: { test3: \"A string\" } }} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/ContentView/index.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\nimport makeTable, { RowContainer, KeyContainer, ValueContainer } from \"../../utils/makeTable\"\nimport isShallow from \"../../utils/isShallow\"\nimport TreeView from \"../TreeView\"\n\nconst NullContainer = styled.div`\n  color: ${(props) => props.theme.tag};\n`\nconst UndefinedContainer = styled.div`\n  color: ${(props) => props.theme.tag};\n`\nconst StringContainer = styled.div`\n  color: ${(props) => props.theme.foreground};\n  user-select: text;\n  cursor: text;\n`\nconst StringLineSpan = styled.span``\n\ninterface Props {\n  // value: object | string | number | boolean | null | undefined\n  value: any\n  treeLevel?: number\n}\n\nexport default function ContentView({ value, treeLevel }: Props) {\n  if (value === null) return <NullContainer>null</NullContainer>\n  if (value === undefined) return <UndefinedContainer>undefined</UndefinedContainer>\n\n  let checkValue\n  try {\n    checkValue = JSON.parse(value)\n  } catch {\n    checkValue = value\n  }\n\n  if (typeof checkValue === \"string\") {\n    return (\n      <StringContainer>\n        {value\n          .trim()\n          .split(\"\\\\n\")\n          .map((part, idx) => (\n            <StringLineSpan key={`span-${idx}`}>\n              {part}\n              <br />\n            </StringLineSpan>\n          ))}\n      </StringContainer>\n    )\n  }\n\n  if (typeof checkValue === \"object\") {\n    return isShallow(checkValue) ? (\n      makeTable(checkValue)\n    ) : (\n      <TreeView value={checkValue} level={treeLevel} />\n    )\n  }\n\n  return <StringContainer>{String(checkValue)}</StringContainer>\n}\n\nexport const makeTableWithContentView = (obj: unknown) => {\n  const input = obj !== null && typeof obj === \"object\" ? obj : {}\n  const keys = Object.keys(input) ?? []\n\n  return (\n    <div>\n      {keys.map((key) => {\n        const value = input[key]\n\n        return (\n          <RowContainer key={key}>\n            <KeyContainer>{key}</KeyContainer>\n            <ValueContainer $value={value}>\n              <ContentView value={value} />\n            </ValueContainer>\n          </RowContainer>\n        )\n      })}\n    </div>\n  )\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/EmptyState/EmptyState.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { MdReorder } from \"react-icons/md\"\n\nimport EmptyState from \"./index\"\n\nexport default {\n  title: \"Empty State\",\n}\n\nexport const Default = () => (\n  <EmptyState icon={MdReorder} title=\"Empty!\">\n    Some more information\n  </EmptyState>\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/EmptyState/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\nconst Container = styled.div`\n  height: 100%;\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  color: ${(props) => props.theme.foregroundLight};\n`\n\nconst Title = styled.div`\n  font-size: 2rem;\n  padding-bottom: 50px;\n  padding-top: 10px;\n`\n\nconst Message = styled.div`\n  color: ${(props) => props.theme.foreground};\n  max-width: 400px;\n  line-height: 1.4;\n  text-align: center;\n`\n\nconst Image = styled.img`\n  width: 100px;\n  height: 100px;\n  padding-bottom: 4px;\n`\n\ninterface Props {\n  icon?: any // TODO: Type Better?\n  image?: any\n  title?: string\n}\n\nconst EmptyState: FunctionComponent<React.PropsWithChildren<Props>> = ({\n  title,\n  icon: Icon,\n  image,\n  children,\n}) => {\n  return (\n    <Container>\n      {Icon && <Icon size={100} />}\n      {image && <Image src={image} />}\n      {title && <Title>{title}</Title>}\n      <Message>{children}</Message>\n    </Container>\n  )\n}\n\nexport default EmptyState\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Header/Header.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { MdReorder } from \"react-icons/md\"\n\nimport Header from \"./index\"\n\nexport default {\n  title: \"Header\",\n}\n\nexport const Default = () => <Header title=\"Header!\" />\n\nexport const Actions = () => (\n  <Header title=\"Header!\" actions={[{ tip: \"Test 1\", icon: MdReorder, onClick: () => {} }]} />\n)\n\nexport const Children = () => (\n  <Header title=\"Header!\">\n    <p>Hello!</p>\n  </Header>\n)\n\nexport const Tabs = () => (\n  <Header\n    title=\"Header!\"\n    tabs={[\n      { icon: MdReorder, text: \"Active\", onClick: () => {}, isActive: true },\n      { icon: MdReorder, text: \"Inactive\", onClick: () => {}, isActive: false },\n    ]}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Header/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\nimport ActionButton from \"../ActionButton\"\nimport HeaderTabButton from \"../HeaderTabButton\"\n\nconst Container = styled.div`\n  background-color: ${(props) => props.theme.backgroundSubtleLight};\n  border-bottom: 1px solid ${(props) => props.theme.chromeLine};\n  color: ${(props) => props.theme.foregroundDark};\n  box-shadow: 0 30px 30px -25px ${(props) => props.theme.glow};\n`\n\ninterface ContentContainerProps {\n  $isDraggable: boolean\n}\nconst ContentContainer = styled.div.attrs(() => ({}))<ContentContainerProps>`\n  -webkit-app-region: ${(props) => (props.$isDraggable ? \"drag\" : \"\")};\n  height: 70px;\n  padding: 0 10px;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n`\n\nconst LeftContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  flex: 1;\n  width: 100px;\n  align-items: center;\n`\nconst MiddleContainer = styled.div`\n  display: flex;\n  flex: 1;\n  padding-left: 10px;\n  justify-content: center;\n  align-items: center;\n`\nconst RightContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  flex: 1;\n  width: 100px;\n  justify-content: flex-end;\n  align-items: center;\n`\n\nconst Title = styled.div`\n  color: ${(props) => props.theme.foregroundLight};\n  text-align: center;\n`\n\ninterface HeaderComponentProps {\n  tabs?: {\n    text: string\n    icon: any\n    onClick: () => void\n    isActive: boolean\n  }[]\n  title?: string\n  actions?: {\n    tip: string\n    icon: any\n    onClick: () => void\n  }[]\n  isDraggable?: boolean\n}\n\nconst Header: FunctionComponent<React.PropsWithChildren<HeaderComponentProps>> = ({\n  tabs,\n  title,\n  actions,\n  isDraggable = false,\n  children,\n}) => {\n  return (\n    <Container>\n      <ContentContainer $isDraggable={isDraggable}>\n        <LeftContainer>\n          {tabs &&\n            tabs.map((t, idx) => (\n              <HeaderTabButton\n                text={t.text}\n                icon={t.icon}\n                onClick={t.onClick}\n                isActive={t.isActive}\n                key={idx}\n              />\n            ))}\n        </LeftContainer>\n        <MiddleContainer>\n          <Title>{title}</Title>\n        </MiddleContainer>\n        <RightContainer>\n          {actions &&\n            actions.map((a, idx) => (\n              <ActionButton\n                tip={a.tip}\n                tipProps={{\n                  effect: \"float\",\n                }}\n                icon={a.icon}\n                onClick={a.onClick}\n                key={idx}\n              />\n            ))}\n        </RightContainer>\n      </ContentContainer>\n      {children}\n    </Container>\n  )\n}\n\nexport default Header\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/HeaderTabButton/SideBarButton.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { MdReorder } from \"react-icons/md\"\n\nimport HeaderTabButton from \"./index\"\n\nexport default {\n  title: \"Header Tab Button\",\n}\n\nexport const Inactive = () => (\n  <div style={{ width: 80 }}>\n    <HeaderTabButton icon={MdReorder} text=\"Hello?\" isActive={false} onClick={() => {}} />\n  </div>\n)\n\nexport const Active = () => (\n  <div style={{ width: 80 }}>\n    <HeaderTabButton icon={MdReorder} text=\"Hello?\" isActive onClick={() => {}} />\n  </div>\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/HeaderTabButton/index.tsx",
    "content": "import React from \"react\"\nimport { Motion, spring } from \"react-motion\"\nimport colorInterpolate from \"color-interpolate\"\nimport styled from \"styled-components\"\n\nconst Theme = { highlight: \"hsl(290, 3.2%, 47.4%)\", foregroundLight: \"#c3c3c3\" }\n\ninterface Props {\n  icon: any\n  text: string\n  isActive: boolean\n  onClick: () => void\n}\n\ninterface HeaderTabButtonProps {\n  $colorAnimation: number\n}\n\nconst colorInterpolator = colorInterpolate([Theme.highlight, Theme.foregroundLight])\nconst HeaderTabButtonContainer = styled.div.attrs(() => ({}))<HeaderTabButtonProps>`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 15px 0;\n  margin: 0 10px;\n  cursor: pointer;\n  color: ${(props) => colorInterpolator(props.$colorAnimation)};\n  -webkit-app-region: none;\n`\n\nconst Title = styled.div`\n  padding-top: 2px;\n  text-align: center;\n  font-size: 12px;\n`\n\nfunction HeaderTabButton({ icon: Icon, text, isActive, onClick }: Props) {\n  return (\n    <Motion style={{ color: spring(isActive ? 1 : 0) }}>\n      {({ color }) => (\n        <HeaderTabButtonContainer $colorAnimation={color} onClick={onClick}>\n          {Icon && <Icon size={32} />}\n          <Title>{text}</Title>\n        </HeaderTabButtonContainer>\n      )}\n    </Motion>\n  )\n}\n\nexport default HeaderTabButton\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Modal/Modal.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport Modal from \"./index\"\n\nexport default {\n  title: \"Modal\",\n}\n\nexport const Default = () => (\n  <Modal title=\"My Modal\" isOpen onClose={() => {}}>\n    <div>Hello</div>\n  </Modal>\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Modal/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport ReactModal from \"react-modal\"\nimport styled, { useTheme } from \"styled-components\"\n\nReactModal.setAppElement(document.body)\n\nconst Title = styled.h1`\n  margin: 0;\n  padding: 0;\n  text-align: left;\n  font-weight: normal;\n  font-size: 24px;\n  color: ${(props) => props.theme.heading};\n`\nconst KeystrokesContainer = styled.div`\n  display: flex;\n  align-self: center;\n  padding-top: 20px;\n  font-size: 13px;\n`\nexport const KeystrokeContainer = styled.div`\n  padding: 0 10px;\n`\nexport const Keystroke = styled.span`\n  padding: 4px 8px;\n  border-radius: 4px;\n  background-color: ${(props) => props.theme.backgroundHighlight};\n  color: ${(props) => props.theme.foreground};\n`\n\ninterface Props {\n  isOpen: boolean\n  onClose: () => void\n  onAfterOpen?: () => void\n  title: string\n  additionalKeystrokes?: React.ReactNode\n}\n\nconst Modal: FunctionComponent<React.PropsWithChildren<Props>> = ({\n  isOpen,\n  onClose,\n  onAfterOpen,\n  title,\n  children,\n  additionalKeystrokes,\n}) => {\n  const theme = useTheme()\n\n  return (\n    <ReactModal\n      isOpen={isOpen}\n      onAfterOpen={onAfterOpen}\n      onRequestClose={onClose}\n      style={{\n        overlay: {\n          backgroundColor: theme.modalOverlay,\n          display: \"flex\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          padding: 40,\n        },\n        content: {\n          display: \"flex\",\n          flexDirection: \"column\",\n          borderRadius: 4,\n          padding: 20,\n          backgroundColor: theme.background,\n          color: theme.foreground,\n          borderColor: theme.backgroundLighter,\n          width: 500,\n          position: \"auto\" as any, // TODO: Fix this!\n          top: \"auto\",\n          bottom: \"auto\",\n          fontFamily: theme.fontFamily,\n        },\n      }}\n    >\n      <div>\n        <Title>{title}</Title>\n      </div>\n      <div>{children}</div>\n      <KeystrokesContainer>\n        <KeystrokeContainer>\n          <Keystroke>ESC</Keystroke> Close\n        </KeystrokeContainer>\n        {additionalKeystrokes}\n      </KeystrokesContainer>\n    </ReactModal>\n  )\n}\n\nexport default Modal\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/RandomJoke/RandomJoke.tsx",
    "content": "import React, { useEffect, useRef } from \"react\"\nimport styled from \"styled-components\"\n\nconst JokeSetup = styled.div`\n  font-size: 14px;\n  color: ${(props) => props.theme.foregroundDark};\n  font-weight: bold;\n`\nconst JokePunchline = styled.div`\n  font-size: 14px;\n  color: ${(props) => props.theme.foregroundDark};\n  font-style: italic;\n  margin-top: 5px;\n`\n\nconst jokes = [\n  {\n    setup: \"Why was the JavaScript developer sad?\",\n    punchline: \"Because he didn't Node how to Express himself.\",\n  },\n  {\n    setup: \"How does a debugger break up a fight?\",\n    punchline: \"It steps in.\",\n  },\n  {\n    setup: \"Why do programmers prefer dark mode?\",\n    punchline: \"Because light attracts bugs!\",\n  },\n  {\n    setup: \"Why did the developer go broke?\",\n    punchline: \"Because he lost his domain in a bet!\",\n  },\n  {\n    setup: \"Why did the programmer quit his job?\",\n    punchline: \"Because he didn't get arrays!\",\n  },\n  {\n    setup: \"How do you comfort a JavaScript bug?\",\n    punchline: \"You console it.\",\n  },\n  {\n    setup: \"Why don't programmers like nature?\",\n    punchline: \"It has too many bugs.\",\n  },\n  {\n    setup: \"What's a debugger's favorite music?      \",\n    punchline: \"Break beats\",\n  },\n  {\n    setup: \"Why don't debuggers get along with compilers?\",\n    punchline: \"They always point out each other's mistakes.\",\n  },\n  {\n    setup: \"Why was the debugger bad at hide and seek?\",\n    punchline: \"It always showed where the bugs were hiding.\",\n  },\n]\n\nexport function RandomJoke() {\n  const jokeRef = useRef(0)\n\n  useEffect(() => {\n    const ref = Math.floor(Math.random() * jokes.length)\n    jokeRef.current = ref\n  }, [])\n\n  return (\n    <>\n      <JokeSetup>{jokes[jokeRef.current].setup}</JokeSetup>\n      <JokePunchline>{jokes[jokeRef.current].punchline}</JokePunchline>\n    </>\n  )\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/RandomJoke/index.ts",
    "content": "import { RandomJoke } from \"./RandomJoke\"\n\nexport default RandomJoke\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/ReactotronAppProvider/index.tsx",
    "content": "import React from \"react\"\nimport styled, { ThemeProvider } from \"styled-components\"\n\nimport useColorScheme from \"../../hooks/useColorScheme\"\nimport { themes } from \"../../themes\"\n\nconst ReactotronContainer = styled.div`\n  font-family: ${(props) => props.theme.fontFamily};\n  font-size: 0.94em;\n  width: 100%;\n  height: 100%;\n  user-select: none;\n`\n\nconst ReactotronAppProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n  const colorScheme = useColorScheme()\n\n  return (\n    <ThemeProvider theme={themes[colorScheme]}>\n      <ReactotronContainer>{children}</ReactotronContainer>\n    </ThemeProvider>\n  )\n}\n\nexport default ReactotronAppProvider\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TimelineCommand/TimelineCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\nimport { boolean } from \"@storybook/addon-knobs\"\nimport { MdReorder } from \"react-icons/md\"\n\nimport TimelineCommand from \"./index\"\n\nexport default {\n  title: \"Timeline Command\",\n}\n\nexport const Closed = () => (\n  <TimelineCommand\n    date={new Date(\"2019-01-01T10:32:43.435\")}\n    title=\"My Command!\"\n    preview=\"Test Preview\"\n    isOpen={false}\n    setIsOpen={() => {}}\n  >\n    You should not see me.\n  </TimelineCommand>\n)\n\nexport const Opened = () => (\n  <TimelineCommand\n    date={new Date(\"2019-01-01T10:32:43.435\")}\n    title=\"My Command!\"\n    preview=\"Test Preview\"\n    isOpen\n    setIsOpen={() => {}}\n  >\n    <div style={{ color: \"white\" }}>You should see me!</div>\n  </TimelineCommand>\n)\n\nexport const Toolbar = () => (\n  <TimelineCommand\n    date={new Date(\"2019-01-01T10:32:43.435\")}\n    title=\"My Command!\"\n    preview=\"Test Preview\"\n    isOpen\n    setIsOpen={() => {}}\n    toolbar={[{ icon: MdReorder, tip: \"Test\", onClick: () => {} }]}\n  >\n    <div style={{ color: \"white\" }}>You should see me!</div>\n  </TimelineCommand>\n)\n\nexport const Important = () => (\n  <TimelineCommand\n    date={new Date(\"2019-01-01T10:32:43.435\")}\n    title=\"My Command!\"\n    preview=\"Test Preview\"\n    isImportant\n    isOpen={false}\n    setIsOpen={() => {}}\n  >\n    You should not see me.\n  </TimelineCommand>\n)\n\nexport const Tagged = () => (\n  <TimelineCommand\n    date={new Date(\"2019-01-01T10:32:43.435\")}\n    title=\"My Command!\"\n    preview=\"Test Preview\"\n    isTagged\n    isOpen={false}\n    setIsOpen={() => {}}\n  >\n    You should not see me.\n  </TimelineCommand>\n)\n\nexport const TaggedImportant = () => (\n  <TimelineCommand\n    date={new Date(\"2019-01-01T10:32:43.435\")}\n    title=\"My Command!\"\n    preview=\"Test Preview\"\n    isTagged\n    isImportant\n    isOpen={false}\n    setIsOpen={() => {}}\n  >\n    You should not see me.\n  </TimelineCommand>\n)\n\nexport const Interactive = () => {\n  const isOpen = boolean(\"isOpen\", false)\n\n  return (\n    <TimelineCommand\n      date={new Date(\"2019-01-01T10:32:43.435\")}\n      title=\"My Command!\"\n      preview=\"Test Preview\"\n      isOpen={isOpen}\n      setIsOpen={() => {}}\n    >\n      <div style={{ color: \"white\" }}>You should see me!</div>\n    </TimelineCommand>\n  )\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TimelineCommand/index.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\nimport {\n  MdLabel as TagIcon,\n  MdExpandLess as IconOpen,\n  MdExpandMore as IconClosed,\n} from \"react-icons/md\"\n\nimport ActionButton from \"../ActionButton\"\nimport Timestamp from \"../Timestamp\"\n\ninterface ContainerProps {\n  $isOpen: boolean\n}\nconst Container = styled.div.attrs(() => ({}))<ContainerProps>`\n  display: flex;\n  flex-direction: column;\n  border-bottom: ${(props) => `1px solid ${props.theme.line}`};\n  background-color: ${(props) =>\n    props.$isOpen ? props.theme.backgroundSubtleLight : props.theme.background};\n`\n\nconst TopBarContainer = styled.div`\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n  cursor: pointer;\n  padding: 15px 20px;\n`\n\nconst TimestampContainer = styled.div`\n  padding-right: 10px;\n  padding-top: 4px;\n`\n\nconst TagContainer = styled.div`\n  margin-right: 4px;\n`\n\nconst TitleContainer = styled.div`\n  display: flex;\n  text-align: left;\n  width: 168px;\n`\ninterface TitleTextProps {\n  $isImportant: boolean\n}\nconst TitleText = styled.div.attrs(() => ({}))<TitleTextProps>`\n  display: flex;\n  color: ${(props) => (props.$isImportant ? props.theme.tagComplement : props.theme.tag)};\n  background-color: ${(props) => (props.$isImportant ? props.theme.tag : \"transparent\")};\n  border-radius: 4px;\n  padding: 4px 8px;\n`\n\nconst PreviewContainer = styled.div`\n  flex: 1;\n  color: ${(props) => props.theme.highlight};\n  text-align: left;\n  overflow: hidden;\n  word-break: break-all;\n  padding-top: 4px;\n`\n\nconst ToolbarContainer = styled.div`\n  display: flex;\n  color: ${(props) => props.theme.foreground};\n`\n\nconst Spacer = styled.div`\n  flex: 1;\n`\n\nconst ExpandIconContainer = styled.div`\n  color: ${(props) => props.theme.backgroundHighlight};\n`\n\nconst ChildrenContainer = styled.div`\n  overflow: hidden;\n  animation: fade-up 0.25s;\n  will-change: transform opacity;\n  padding: 0 40px 30px 40px;\n  word-break: break-all;\n`\n\ninterface Props {\n  title: string\n  date: Date | number\n  deltaTime?: number\n  preview: string\n  isOpen: boolean\n  setIsOpen: (isOpen: boolean) => void\n  toolbar?: {\n    icon: any // TODO: ¯\\_(ツ)_/¯\n    tip: string\n    onClick: () => void\n  }[]\n  isImportant?: boolean\n  isTagged?: boolean\n  responseStatusCode?: number\n}\n\nfunction stopPropagation(\n  handler: () => void\n): (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void {\n  return (e) => {\n    e.stopPropagation()\n\n    handler()\n  }\n}\n\nconst TimelineCommand: React.FC<React.PropsWithChildren<Props>> = ({\n  isOpen,\n  setIsOpen,\n  toolbar,\n  date,\n  deltaTime,\n  title,\n  preview,\n  isImportant,\n  isTagged,\n  responseStatusCode,\n  children,\n}) => {\n  const ExpandIcon = isOpen ? IconOpen : IconClosed\n\n  return (\n    <Container $isOpen={isOpen}>\n      <TopBarContainer onClick={() => setIsOpen(!isOpen)}>\n        <TimestampContainer>\n          <Timestamp date={date} deltaTime={deltaTime} />\n        </TimestampContainer>\n        <TitleContainer>\n          <TitleText $isImportant={isImportant}>\n            {isTagged && (\n              <TagContainer>\n                <TagIcon size={16} />\n              </TagContainer>\n            )}\n            {title} {responseStatusCode ? `(${responseStatusCode})` : \"\"}\n          </TitleText>\n        </TitleContainer>\n        {!isOpen && <PreviewContainer>{preview}</PreviewContainer>}\n        {isOpen && toolbar && (\n          <ToolbarContainer>\n            {toolbar.map((action, idx) => (\n              <ActionButton\n                key={idx}\n                icon={action.icon}\n                tip={action.tip}\n                onClick={stopPropagation(action.onClick)}\n              />\n            ))}\n          </ToolbarContainer>\n        )}\n        {isOpen && <Spacer />}\n        <ExpandIconContainer>\n          <ExpandIcon size={20} />\n        </ExpandIconContainer>\n      </TopBarContainer>\n      {isOpen && <ChildrenContainer>{children}</ChildrenContainer>}\n    </Container>\n  )\n}\n\nexport default TimelineCommand\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TimelineCommandTabButton/TimelineCommandTabButton.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport TimelineCommandTabButton from \"./index\"\n\nexport default {\n  title: \"Timeline Command Tab Button\",\n}\n\nexport const Inactive = () => (\n  <TimelineCommandTabButton isActive={false} text=\"Inactive\" onClick={() => {}} />\n)\n\nexport const Active = () => (\n  <TimelineCommandTabButton isActive={true} text=\"Active\" onClick={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TimelineCommandTabButton/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\ninterface ContainerProps {\n  $isActive: boolean\n}\nconst Container = styled.div.attrs(() => ({}))<ContainerProps>`\n  display: flex;\n  padding: 4px 8px;\n  margin: 4px;\n  border-radius: 4px;\n  cursor: pointer;\n  background-color: ${(props) =>\n    props.$isActive ? props.theme.constant : props.theme.backgroundLighter};\n  color: ${(props) => (props.$isActive ? props.theme.background : props.theme.foreground)};\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n`\n\ninterface Props {\n  isActive: boolean\n  text: string\n  onClick: () => void\n}\n\nconst TimelineCommandTabButton: FunctionComponent<Props> = ({ isActive, text, onClick }) => {\n  return (\n    <Container $isActive={isActive} onClick={onClick}>\n      {text}\n    </Container>\n  )\n}\n\nexport default TimelineCommandTabButton\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Timestamp/Timestamp.story.tsx",
    "content": "import React from \"react\"\n\nimport Timestamp from \"./index\"\n\nexport default {\n  title: \"Timestamp\",\n}\n\nexport const Default = () => <Timestamp date={new Date(\"2019-01-01T10:12:23.435\")} deltaTime={50} />\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Timestamp/index.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\nimport { format } from \"date-fns\"\n\nconst Container = styled.div`\n  position: relative;\n  font-family: \"Fira Code\", \"SF Mono\", \"Consolas\", \"Segoe UI\", \"Roboto\", \"-apple-system\",\n    \"Helvetica Neue\", sans-serif;\n`\nconst LeftDateContainer = styled.span`\n  color: ${(props) => props.theme.highlight};\n`\nconst RightDateContainer = styled.span`\n  color: ${(props) => props.theme.foreground};\n`\nconst DeltaContainer = styled.span`\n  color: ${(props) => props.theme.tag};\n  font-size: 0.7rem;\n  position: absolute;\n  top: -12px;\n  right: 0;\n  left: 0;\n`\n\ninterface Props {\n  date: number | Date | string\n  deltaTime?: number\n}\n\nexport default function Timestamp({ date, deltaTime }: Props) {\n  const fixedDate = typeof date === \"string\" ? new Date(date) : date\n\n  const dateLeft = format(fixedDate, \"h:mm:\")\n  const dateRight = format(fixedDate, \"ss.SSS\")\n  const delta = deltaTime ? `+${deltaTime} ms` : \"\"\n\n  return (\n    <Container>\n      <LeftDateContainer>{dateLeft}</LeftDateContainer>\n      <RightDateContainer>{dateRight}</RightDateContainer>\n      <DeltaContainer title=\"Since last Reactotron message\">{delta}</DeltaContainer>\n    </Container>\n  )\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/Tooltip/index.tsx",
    "content": "import React from \"react\"\nimport ReactTooltip, { type TooltipProps } from \"react-tooltip\"\nimport { useTheme } from \"styled-components\"\n\n// This component provides some sane defaults for react-tooltip.\n// Use this component instead of react-tooltip directly.\n// By default, the tooltip will be placed at the bottom of the target element\n// and will have a solid border with the theme's highlight color.\n// You can override any of these props by passing them to this component.\nfunction ToolTip(props: TooltipProps) {\n  const theme = useTheme()\n  return (\n    <ReactTooltip\n      place=\"bottom\"\n      effect=\"solid\"\n      border\n      borderColor={theme.highlight}\n      textColor={theme.foreground}\n      backgroundColor={theme.backgroundSubtleLight}\n      {...props}\n    />\n  )\n}\n\nexport default ToolTip\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TreeView/TreeView.story.tsx",
    "content": "import React from \"react\"\n\nimport TreeView from \"./index\"\n\nexport default {\n  title: \"TreeView\",\n}\n\nexport const Default = () => (\n  <TreeView\n    value={{\n      test: 1,\n      test2: [1, 2, 3],\n      test3: {\n        test4: true,\n        test5: \"Test\",\n        test6: null,\n      },\n    }}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TreeView/index.tsx",
    "content": "import React from \"react\"\nimport { JSONTree } from \"react-json-tree\"\nimport styled from \"styled-components\"\n\nimport useColorScheme from \"../../hooks/useColorScheme\"\nimport { ReactotronTheme, themes } from \"../../themes\"\n\n// TODO: Ripping this right from reactotron right now... should probably be better.\nconst theme = {\n  author: \"david hart (http://hart-dev.com)\",\n  base0A: \"#f9ee98\",\n  base0B: \"#8f9d6a\",\n  base0C: \"#afc4db\",\n  base0D: \"#7587a6\",\n  base0E: \"#9b859d\",\n  base0F: \"#9b703f\",\n  base00: \"#1e1e1e\",\n  base01: \"#323537\",\n  base02: \"#464b50\",\n  base03: \"#5f5a60\",\n  base04: \"#838184\",\n  base05: \"#a7a7a7\",\n  base06: \"#c3c3c3\",\n  base07: \"#ffffff\",\n  base08: \"#cf6a4c\",\n  base09: \"#cda869\",\n  scheme: \"twilight\",\n}\n\nconst MutedContainer = styled.span`\n  color: ${(props) => props.theme.highlight};\n`\n\nconst getTreeTheme = (baseTheme: ReactotronTheme) => ({\n  tree: { backgroundColor: \"transparent\", marginTop: -3 },\n  ...theme,\n  base0B: baseTheme.foreground,\n})\n\ninterface Props {\n  // value: object\n  value: any\n  level?: number\n}\n\nexport default function TreeView({ value, level = 1 }: Props) {\n  const colorScheme = useColorScheme()\n\n  return (\n    <JSONTree\n      data={value}\n      hideRoot\n      shouldExpandNodeInitially={(keyName, data, minLevel) => minLevel <= level}\n      theme={getTreeTheme(themes[colorScheme])}\n      getItemString={(type, data, itemType, itemString) => {\n        if (type === \"Object\") {\n          return <MutedContainer>{itemType}</MutedContainer>\n        }\n\n        return (\n          <MutedContainer>\n            {itemType} {itemString}\n          </MutedContainer>\n        )\n      }}\n      valueRenderer={(transformed, untransformed) => {\n        return <span>{`${untransformed || transformed}`}</span>\n      }}\n    />\n  )\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/components/TreeViewDiff/index.tsx",
    "content": "import React, { ReactElement, type ReactNode } from \"react\"\nimport { JSONTree, type ValueRenderer } from \"react-json-tree\"\nimport styled from \"styled-components\"\n\nimport useColorScheme from \"../../hooks/useColorScheme\"\nimport { ReactotronTheme, themes } from \"../../themes\"\nimport type { Difference } from \"reactotron-core-contract\"\n\n// TODO: Ripping this right from reactotron right now... should probably be better.\nconst theme = {\n  author: \"david hart (http://hart-dev.com)\",\n  base0A: \"#f9ee98\",\n  base0B: \"#8f9d6a\",\n  base0C: \"#afc4db\",\n  base0D: \"#7587a6\",\n  base0E: \"#9b859d\",\n  base0F: \"#9b703f\",\n  base00: \"#1e1e1e\",\n  base01: \"#323537\",\n  base02: \"#464b50\",\n  base03: \"#5f5a60\",\n  base04: \"#838184\",\n  base05: \"#a7a7a7\",\n  base06: \"#c3c3c3\",\n  base07: \"#ffffff\",\n  base08: \"#cf6a4c\",\n  base09: \"#cda869\",\n  scheme: \"twilight\",\n}\n\nconst RemovedValue = styled.span`\n  color: ${(props) => props.theme.delete};\n  text-decoration: line-through;\n  margin-right: 4px;\n`\nconst NewValue = styled.span`\n  color: ${(props) => props.theme.string};\n`\n\nconst getTreeTheme = (baseTheme: ReactotronTheme) => ({\n  tree: { backgroundColor: \"transparent\", marginTop: -3 },\n  ...theme,\n  base0B: baseTheme.foreground,\n})\n\ninterface Props {\n  value?: Difference[]\n  level?: number\n}\n\nexport default function TreeViewDiff({ value, level = 1 }: Props): ReactElement | null {\n  const colorScheme = useColorScheme()\n  if (value == null || value.length === 0) return null\n\n  const mappedValues: Record<string, ReactNode> = value.reduce((acc, diff) => {\n    if (diff.type === \"CHANGE\") {\n      acc[diff.path.join(\".\")] = (\n        <span>\n          <RemovedValue>{JSON.stringify(diff.oldValue)}</RemovedValue>\n          <NewValue>{JSON.stringify(diff.value)}</NewValue>\n        </span>\n      )\n      return acc\n    }\n    if (diff.type === \"CREATE\") {\n      acc[diff.path.join(\".\")] = <NewValue>{JSON.stringify(diff.value)}</NewValue>\n\n      return acc\n    }\n    if (diff.type === \"REMOVE\") {\n      acc[diff.path.join(\".\")] = <RemovedValue>{JSON.stringify(diff.oldValue)}</RemovedValue>\n      return acc\n    }\n    return acc\n  }, {})\n\n  const treeData: Record<string, string> = value.reduce((acc, diff) => {\n    acc[diff.path.join(\".\")] = diff.path.join(\".\")\n    return acc\n  }, {})\n\n  const valueRenderer: ValueRenderer = (_, untransformed) => {\n    const mappedValue = mappedValues[untransformed as string]\n    return mappedValue\n  }\n\n  return (\n    <JSONTree\n      data={treeData}\n      hideRoot\n      shouldExpandNodeInitially={(_keyName, _data, minLevel) => minLevel <= level}\n      theme={getTreeTheme(themes[colorScheme])}\n      valueRenderer={valueRenderer}\n    />\n  )\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/CustomCommands/index.tsx",
    "content": "import React, { FunctionComponent, useContext, useCallback } from \"react\"\n\nimport ReactotronContext from \"../Reactotron\"\n\nimport useCustomCommands, { CustomCommand } from \"./useCustomCommands\"\n\ninterface Context {\n  customCommands: CustomCommand[]\n  sendCustomCommand: (command: any, args: any) => void\n}\n\nconst CustomCommandsContext = React.createContext<Context>({\n  customCommands: [],\n  sendCustomCommand: null,\n})\n\nconst Provider: FunctionComponent<any> = ({ children }) => {\n  const { sendCommand } = useContext(ReactotronContext)\n  const { customCommands } = useCustomCommands()\n\n  const sendCustomCommand = useCallback(\n    (command, args) => {\n      sendCommand(\"custom\", { command, args })\n    },\n    [sendCommand]\n  )\n\n  return (\n    <CustomCommandsContext.Provider\n      value={{\n        customCommands,\n        sendCustomCommand,\n      }}\n    >\n      {children}\n    </CustomCommandsContext.Provider>\n  )\n}\n\nexport default CustomCommandsContext\nexport const CustomCommandsProvider = Provider\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/CustomCommands/useCustomCommands.test.tsx",
    "content": "/* eslint-disable react/display-name */\nimport React from \"react\"\nimport { act, renderHook } from \"@testing-library/react\"\n\nimport ReactotronContext from \"../Reactotron\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nimport useCustomCommands from \"./useCustomCommands\"\n\nfunction buildContextValues({ addCommandListener = null } = {}) {\n  return {\n    commands: [],\n    sendCommand: jest.fn(),\n    clearCommands: jest.fn(),\n    addCommandListener: addCommandListener || jest.fn(),\n    isDispatchModalOpen: false,\n    dispatchModalInitialAction: \"\",\n    openDispatchModal: jest.fn(),\n    closeDispatchModal: jest.fn(),\n    isSubscriptionModalOpen: false,\n    openSubscriptionModal: jest.fn(),\n    closeSubscriptionModal: jest.fn(),\n  }\n}\n\ndescribe(\"contexts/CustomCommands/useCustomCommands\", () => {\n  it(\"should add and remove custom commands\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useCustomCommands(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    expect(result.current.customCommands).toEqual([])\n\n    act(() => {\n      addCallback({\n        type: CommandType.CustomCommandRegister,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n        },\n      })\n    })\n\n    expect(result.current.customCommands).toEqual([\n      {\n        clientId: \"1234\",\n        id: 0,\n      },\n    ])\n\n    act(() => {\n      addCallback({\n        type: CommandType.CustomCommandUnregister,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n        },\n      })\n    })\n\n    expect(result.current.customCommands).toEqual([])\n  })\n\n  it(\"should clear all commands after a reconnect\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useCustomCommands(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    expect(result.current.customCommands).toEqual([])\n\n    act(() => {\n      addCallback({\n        type: CommandType.CustomCommandRegister,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n        },\n      })\n    })\n\n    expect(result.current.customCommands).toEqual([\n      {\n        clientId: \"1234\",\n        id: 0,\n      },\n    ])\n\n    act(() => {\n      addCallback({\n        type: CommandType.ClientIntro,\n        clientId: \"1234\",\n      })\n    })\n\n    expect(result.current.customCommands).toEqual([])\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/CustomCommands/useCustomCommands.ts",
    "content": "import { useReducer, useContext, useEffect } from \"react\"\nimport { produce } from \"immer\"\n\nimport type { Command } from \"reactotron-core-contract\"\nimport { CommandType } from \"reactotron-core-contract\"\nimport ReactotronContext from \"../Reactotron\"\n\nexport interface CustomCommand {\n  clientId: string\n  id: string\n  title?: string\n  command: string\n  description?: string\n  args?: {\n    name: string\n  }[]\n}\n\ninterface CustomCommandState {\n  customCommands: CustomCommand[]\n}\n\nenum CustomCommandsActionType {\n  CommandAdd = \"COMMAND_ADD\",\n  CommandRemove = \"COMMAND_REMOVE\",\n  CommandClear = \"COMMAND_CLEAR\",\n}\n\ntype Action =\n  | {\n      type: CustomCommandsActionType.CommandAdd\n      payload: Command\n    }\n  | { type: CustomCommandsActionType.CommandRemove; payload: Command }\n  | { type: CustomCommandsActionType.CommandClear; payload: string }\n\nfunction customCommandsReducer(state: CustomCommandState, action: Action) {\n  switch (action.type) {\n    case CustomCommandsActionType.CommandAdd:\n      return produce(state, (draftState) => {\n        draftState.customCommands.push({\n          clientId: action.payload.clientId,\n          ...action.payload.payload,\n        })\n      })\n    case CustomCommandsActionType.CommandRemove:\n      return produce(state, (draftState) => {\n        const commandIndex = draftState.customCommands.findIndex(\n          (cc) => cc.clientId === action.payload.clientId && cc.id === action.payload.payload.id\n        )\n\n        if (commandIndex === -1) return\n\n        draftState.customCommands = [\n          ...draftState.customCommands.slice(0, commandIndex),\n          ...draftState.customCommands.slice(commandIndex + 1),\n        ]\n      })\n    case CustomCommandsActionType.CommandClear:\n      return produce(state, (draftState) => {\n        draftState.customCommands = draftState.customCommands.filter(\n          (cc) => cc.clientId !== action.payload\n        )\n      })\n    default:\n      return state\n  }\n}\n\nfunction useCustomCommands() {\n  const { addCommandListener } = useContext(ReactotronContext)\n  const [state, dispatch] = useReducer(customCommandsReducer, { customCommands: [] })\n\n  useEffect(() => {\n    addCommandListener((command) => {\n      if (command.type === CommandType.ClientIntro) {\n        dispatch({\n          type: CustomCommandsActionType.CommandClear,\n          payload: command.clientId,\n        })\n      } else if (command.type === CommandType.CustomCommandRegister) {\n        dispatch({\n          type: CustomCommandsActionType.CommandAdd,\n          payload: command,\n        })\n      } else if (command.type === CommandType.CustomCommandUnregister) {\n        dispatch({\n          type: CustomCommandsActionType.CommandRemove,\n          payload: command,\n        })\n      }\n    })\n  }, [addCommandListener])\n\n  return {\n    customCommands: state.customCommands,\n  }\n}\n\nexport default useCustomCommands\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/ReactNative/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\n\nimport useOverlay from \"./useOverlay\"\nimport useStorybook from \"./useStorybook\"\n\nimport type { OverlayParams } from \"./useOverlay\"\n\ninterface Context {\n  isStorybookOn: boolean\n  turnOnStorybook: () => void\n  turnOffStorybook: () => void\n  overlayParams: OverlayParams\n  updateOverlayParams: (params: OverlayParams) => void\n}\n\nconst ReactNativeContext = React.createContext<Context>({\n  isStorybookOn: false,\n  turnOnStorybook: null,\n  turnOffStorybook: null,\n  overlayParams: {},\n  updateOverlayParams: null,\n})\n\nconst Provider: FunctionComponent<any> = ({ children }) => {\n  const { isStorybookOn, turnOnStorybook, turnOffStorybook } = useStorybook()\n  const { overlayParams, updateOverlayParams } = useOverlay()\n\n  return (\n    <ReactNativeContext.Provider\n      value={{\n        isStorybookOn,\n        turnOnStorybook,\n        turnOffStorybook,\n        overlayParams,\n        updateOverlayParams,\n      }}\n    >\n      {children}\n    </ReactNativeContext.Provider>\n  )\n}\n\nexport default ReactNativeContext\nexport const ReactNativeProvider = Provider\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/ReactNative/useOverlay.ts",
    "content": "import { useState, useCallback, useContext, useEffect, useRef } from \"react\"\n\nimport ReactotronContext from \"../Reactotron\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nexport interface OverlayParams {\n  opacity?: number\n  uri?: string\n  justifyContent?:\n    | \"flex-start\"\n    | \"flex-end\"\n    | \"center\"\n    | \"space-between\"\n    | \"space-around\"\n    | \"space-evenly\"\n  alignItems?: \"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\"\n  width?: number\n  height?: number\n  growToWindow?: boolean\n  resizeMode?: \"cover\" | \"contain\" | \"stretch\" // | \"repeat\" | \"center\"\n  marginLeft?: number\n  marginRight?: number\n  marginTop?: number\n  marginBottom?: number\n  showDebug?: boolean\n}\n\nfunction useOverlay() {\n  const { sendCommand, addCommandListener } = useContext(ReactotronContext)\n  const [overlayParams, setOverlayParams] = useState<OverlayParams>({})\n\n  // We use these refs to avoid executing the following useEffect over and over adding a bunch of listeners but allow it to have updated info.\n  // I would like to see if there is a more \"correct\" approach eventually but this works for now.\n  const overlayParamsRef = useRef(overlayParams)\n  overlayParamsRef.current = overlayParams\n\n  const sendCommandRef = useRef(sendCommand)\n  sendCommandRef.current = sendCommand\n\n  useEffect(() => {\n    addCommandListener((command) => {\n      // TODO: Switch to a connection event if/when that is available\n      if (command.type !== CommandType.ClientIntro) return\n\n      sendCommandRef.current(\"overlay\", overlayParamsRef.current, command.clientId)\n    })\n  }, [addCommandListener, overlayParamsRef, sendCommandRef])\n  // End of this ref madness\n\n  const updateOverlayParams = useCallback(\n    (params: OverlayParams) => {\n      const newParams = { ...overlayParams, ...params }\n      setOverlayParams(newParams)\n      sendCommand(\"overlay\", newParams)\n    },\n    [sendCommand, overlayParams]\n  )\n\n  return { overlayParams, updateOverlayParams }\n}\n\nexport default useOverlay\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/ReactNative/useStorybook.test.tsx",
    "content": "/* eslint-disable react/display-name */\nimport React from \"react\"\nimport { act, renderHook } from \"@testing-library/react\"\n\nimport ReactotronContext from \"../Reactotron\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nimport useStorybook from \"./useStorybook\"\n\nfunction buildContextValues({ addCommandListener = null } = {}) {\n  return {\n    commands: [],\n    sendCommand: jest.fn(),\n    clearCommands: jest.fn(),\n    addCommandListener: addCommandListener || jest.fn(),\n    isDispatchModalOpen: false,\n    dispatchModalInitialAction: \"\",\n    openDispatchModal: jest.fn(),\n    closeDispatchModal: jest.fn(),\n    isSubscriptionModalOpen: false,\n    openSubscriptionModal: jest.fn(),\n    closeSubscriptionModal: jest.fn(),\n  }\n}\n\ndescribe(\"contexts/ReactNative/useStorybook\", () => {\n  it(\"should call send command when storybook is turned on and off\", () => {\n    const contextValues = buildContextValues()\n\n    const { result } = renderHook(() => useStorybook(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    expect(result.current.isStorybookOn).toBeFalsy()\n\n    act(() => {\n      result.current.turnOnStorybook()\n    })\n\n    expect(result.current.isStorybookOn).toBeTruthy()\n    expect(contextValues.sendCommand).toHaveBeenLastCalledWith(\"storybook\", true)\n\n    act(() => {\n      result.current.turnOffStorybook()\n    })\n\n    expect(result.current.isStorybookOn).toBeFalsy()\n    expect(contextValues.sendCommand).toHaveBeenLastCalledWith(\"storybook\", false)\n  })\n\n  it(\"should send current storybook status to connecting clients\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useStorybook(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    addCallback({ type: CommandType.ClientIntro, clientId: \"1234\" })\n    expect(contextValues.sendCommand).toHaveBeenLastCalledWith(\"storybook\", false, \"1234\")\n\n    act(() => {\n      result.current.turnOnStorybook()\n    })\n\n    addCallback({ type: CommandType.ClientIntro, clientId: \"1234\" })\n    expect(contextValues.sendCommand).toHaveBeenLastCalledWith(\"storybook\", true, \"1234\")\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/ReactNative/useStorybook.ts",
    "content": "import { useState, useCallback, useContext, useEffect, useRef } from \"react\"\n\nimport ReactotronContext from \"../Reactotron\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nfunction useStorybook() {\n  const { sendCommand, addCommandListener } = useContext(ReactotronContext)\n  const [isStorybookOn, setIsStorybookOn] = useState(false)\n\n  // We use these refs to avoid executing the following useEffect over and over adding a bunch of listeners but allow it to have updated info.\n  // I would like to see if there is a more \"correct\" approach eventually but this works for now.\n  const isStorybookOnRef = useRef(isStorybookOn)\n  isStorybookOnRef.current = isStorybookOn\n\n  const sendCommandRef = useRef(sendCommand)\n  sendCommandRef.current = sendCommand\n\n  useEffect(() => {\n    addCommandListener((command) => {\n      // TODO: Switch to a connection event if/when that is available\n      if (command.type !== CommandType.ClientIntro) return\n\n      sendCommandRef.current(\"storybook\", isStorybookOnRef.current, command.clientId)\n    })\n  }, [addCommandListener, isStorybookOnRef, sendCommandRef])\n  // End of this ref madness\n\n  const turnOnStorybook = useCallback(() => {\n    setIsStorybookOn(true)\n    sendCommand(\"storybook\", true)\n  }, [sendCommand])\n\n  const turnOffStorybook = useCallback(() => {\n    setIsStorybookOn(false)\n    sendCommand(\"storybook\", false)\n  }, [sendCommand])\n\n  return { isStorybookOn, turnOnStorybook, turnOffStorybook }\n}\n\nexport default useStorybook\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/Reactotron/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\n\nimport type { Command } from \"reactotron-core-contract\"\n\nimport useReactotron from \"./useReactotron\"\n\ninterface Props {\n  commands: Command[]\n  sendCommand: (type: string, payload: any, clientId?: string) => void\n  clearCommands: () => void\n  addCommandListener: (callback: (command: Command) => void) => void\n}\n\ninterface ContextProps extends Props {\n  // Command Events\n  addCommandListener: (callback: (command: Command) => void) => void\n\n  // Dispatch Modal\n  isDispatchModalOpen: boolean\n  dispatchModalInitialAction: string\n  openDispatchModal: (initialAction: string) => void\n  closeDispatchModal: () => void\n\n  // Subscription Modal\n  isSubscriptionModalOpen: boolean\n  openSubscriptionModal: () => void\n  closeSubscriptionModal: () => void\n}\n\nconst ReactotronContext = React.createContext<ContextProps>({\n  commands: [],\n  sendCommand: null,\n  clearCommands: null,\n  addCommandListener: null,\n  isDispatchModalOpen: false,\n  dispatchModalInitialAction: \"\",\n  openDispatchModal: null,\n  closeDispatchModal: null,\n  isSubscriptionModalOpen: false,\n  openSubscriptionModal: null,\n  closeSubscriptionModal: null,\n})\n\nconst Provider: FunctionComponent<React.PropsWithChildren<Props>> = ({\n  commands,\n  sendCommand,\n  clearCommands,\n  addCommandListener,\n  children,\n}) => {\n  const {\n    isDispatchModalOpen,\n    dispatchModalInitialAction,\n    openDispatchModal,\n    closeDispatchModal,\n    isSubscriptionModalOpen,\n    openSubscriptionModal,\n    closeSubscriptionModal,\n  } = useReactotron()\n\n  return (\n    <ReactotronContext.Provider\n      value={{\n        commands,\n        sendCommand,\n        clearCommands,\n        addCommandListener,\n        isDispatchModalOpen,\n        dispatchModalInitialAction,\n        openDispatchModal,\n        closeDispatchModal,\n        isSubscriptionModalOpen,\n        openSubscriptionModal,\n        closeSubscriptionModal,\n      }}\n    >\n      {children}\n    </ReactotronContext.Provider>\n  )\n}\n\nexport default ReactotronContext\nexport const ReactotronProvider = Provider\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/Reactotron/useReactotron.test.ts",
    "content": "import { act, renderHook } from \"@testing-library/react\"\n\nimport useReactotron from \"./useReactotron\"\n\ndescribe(\"contexts/Reactotron/useReactotron\", () => {\n  describe(\"Dispatch Modal\", () => {\n    it(\"should allow opening the modal\", () => {\n      const { result } = renderHook(() => useReactotron())\n\n      expect(result.current.isDispatchModalOpen).toBe(false)\n\n      act(() => {\n        result.current.openDispatchModal(\"{ hello: true }\")\n      })\n\n      expect(result.current.isDispatchModalOpen).toBe(true)\n      expect(result.current.dispatchModalInitialAction).toBe(\"{ hello: true }\")\n    })\n\n    it(\"should close the modal after it is open\", () => {\n      const { result } = renderHook(() => useReactotron())\n\n      expect(result.current.isDispatchModalOpen).toBe(false)\n      act(() => {\n        result.current.openDispatchModal(\"{ hello: true }\")\n      })\n\n      act(() => {\n        result.current.closeDispatchModal()\n      })\n\n      expect(result.current.isDispatchModalOpen).toBe(false)\n    })\n  })\n\n  describe(\"Subscription Modal\", () => {\n    it(\"should allow opening the modal\", () => {\n      const { result } = renderHook(() => useReactotron())\n\n      expect(result.current.isSubscriptionModalOpen).toBe(false)\n\n      act(() => {\n        result.current.openSubscriptionModal()\n      })\n\n      expect(result.current.isSubscriptionModalOpen).toBe(true)\n    })\n\n    it(\"should close the modal after it is open\", () => {\n      const { result } = renderHook(() => useReactotron())\n\n      expect(result.current.isSubscriptionModalOpen).toBe(false)\n      act(() => {\n        result.current.openSubscriptionModal()\n      })\n\n      act(() => {\n        result.current.closeSubscriptionModal()\n      })\n\n      expect(result.current.isSubscriptionModalOpen).toBe(false)\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/Reactotron/useReactotron.ts",
    "content": "import { useReducer, useCallback } from \"react\"\n\ninterface ReactotronState {\n  isDispatchModalOpen: boolean\n  dispatchModalInitialAction: string\n  isSubscriptionModalOpen: boolean\n}\n\nenum ReactotronActionType {\n  DispatchModalOpen = \"DISPATCH_OPEN\",\n  DispatchModalClose = \"DISPATCH_CLOSE\",\n  SubscriptionModalOpen = \"SUBSCRIPTION_OPEN\",\n  SubscriptionModalClose = \"SUBSCRIPTION_CLOSE\",\n}\n\ninterface ReactotronAction {\n  type: ReactotronActionType\n  payload?: string\n}\n\nfunction reactotronReducer(state: ReactotronState, action: ReactotronAction) {\n  switch (action.type) {\n    case ReactotronActionType.DispatchModalOpen:\n      return {\n        ...state,\n        isDispatchModalOpen: true,\n        dispatchModalInitialAction: action.payload || \"\",\n      }\n    case ReactotronActionType.DispatchModalClose:\n      return {\n        ...state,\n        isDispatchModalOpen: false,\n      }\n    case ReactotronActionType.SubscriptionModalOpen:\n      return {\n        ...state,\n        isSubscriptionModalOpen: true,\n      }\n    case ReactotronActionType.SubscriptionModalClose:\n      return {\n        ...state,\n        isSubscriptionModalOpen: false,\n      }\n    default:\n      return state\n  }\n}\n\nfunction useReactotron() {\n  const [state, dispatch] = useReducer(reactotronReducer, {\n    isDispatchModalOpen: false,\n    dispatchModalInitialAction: \"\",\n    isSubscriptionModalOpen: false,\n  })\n\n  const openDispatchModal = useCallback((intiialAction: string) => {\n    dispatch({\n      type: ReactotronActionType.DispatchModalOpen,\n      payload: intiialAction,\n    })\n  }, [])\n\n  const closeDispatchModal = useCallback(() => {\n    dispatch({\n      type: ReactotronActionType.DispatchModalClose,\n    })\n  }, [])\n\n  const openSubscriptionModal = useCallback(() => {\n    dispatch({\n      type: ReactotronActionType.SubscriptionModalOpen,\n    })\n  }, [])\n\n  const closeSubscriptionModal = useCallback(() => {\n    dispatch({\n      type: ReactotronActionType.SubscriptionModalClose,\n    })\n  }, [])\n\n  return {\n    isDispatchModalOpen: state.isDispatchModalOpen,\n    dispatchModalInitialAction: state.dispatchModalInitialAction,\n    openDispatchModal,\n    closeDispatchModal,\n    isSubscriptionModalOpen: state.isSubscriptionModalOpen,\n    openSubscriptionModal,\n    closeSubscriptionModal,\n  }\n}\n\nexport default useReactotron\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/State/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\n\nimport useSubscriptions from \"./useSubscriptions\"\nimport useSnapshots, { Snapshot } from \"./useSnapshots\"\n\ninterface Context {\n  subscriptions: string[]\n  addSubscription: (path: string) => void\n  removeSubscription: (path: string) => void\n  clearSubscriptions: () => void\n  snapshots: Snapshot[]\n  isSnapshotRenameModalOpen: boolean\n  renameingSnapshot: Snapshot\n  createSnapshot: () => void\n  restoreSnapshot: (snapshot: Snapshot) => void\n  removeSnapshot: (snapshot: Snapshot) => void\n  renameSnapshot: (name: string) => void\n  openSnapshotRenameModal: (snapshot: Snapshot) => void\n  closeSnapshotRenameModal: () => void\n}\n\nconst StateContext = React.createContext<Context>({\n  subscriptions: [],\n  addSubscription: null,\n  removeSubscription: null,\n  clearSubscriptions: null,\n  snapshots: [],\n  isSnapshotRenameModalOpen: false,\n  renameingSnapshot: null,\n  createSnapshot: null,\n  restoreSnapshot: null,\n  removeSnapshot: null,\n  renameSnapshot: null,\n  openSnapshotRenameModal: null,\n  closeSnapshotRenameModal: null,\n})\n\nconst Provider: FunctionComponent<any> = ({ children }) => {\n  const { subscriptions, addSubscription, removeSubscription, clearSubscriptions } =\n    useSubscriptions()\n\n  const {\n    snapshots,\n    isSnapshotRenameModalOpen,\n    renameingSnapshot,\n    createSnapshot,\n    restoreSnapshot,\n    removeSnapshot,\n    renameSnapshot,\n    openSnapshotRenameModal,\n    closeSnapshotRenameModal,\n  } = useSnapshots()\n\n  return (\n    <StateContext.Provider\n      value={{\n        subscriptions,\n        addSubscription,\n        removeSubscription,\n        clearSubscriptions,\n        snapshots,\n        isSnapshotRenameModalOpen,\n        renameingSnapshot,\n        createSnapshot,\n        restoreSnapshot,\n        removeSnapshot,\n        renameSnapshot,\n        openSnapshotRenameModal,\n        closeSnapshotRenameModal,\n      }}\n    >\n      {children}\n    </StateContext.Provider>\n  )\n}\n\nexport default StateContext\nexport const StateProvider = Provider\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/State/useSnapshots.test.tsx",
    "content": "/* eslint-disable react/display-name */\nimport React from \"react\"\nimport { act, renderHook } from \"@testing-library/react\"\n\nimport { CommandType } from \"reactotron-core-contract\"\nimport ReactotronContext from \"../Reactotron\"\n\nimport useSnapshots from \"./useSnapshots\"\n\nfunction buildContextValues({ addCommandListener = null } = {}) {\n  return {\n    commands: [],\n    sendCommand: jest.fn(),\n    clearCommands: jest.fn(),\n    addCommandListener: addCommandListener || jest.fn(),\n    isDispatchModalOpen: false,\n    dispatchModalInitialAction: \"\",\n    openDispatchModal: jest.fn(),\n    closeDispatchModal: jest.fn(),\n    isSubscriptionModalOpen: false,\n    openSubscriptionModal: jest.fn(),\n    closeSubscriptionModal: jest.fn(),\n  }\n}\n\ndescribe(\"contexts/State/useSnapshots\", () => {\n  it(\"should add a subscription when a command to do so comes in\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useSnapshots(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    expect(result.current.snapshots).toEqual([])\n\n    act(() => {\n      addCallback({\n        type: CommandType.StateBackupResponse,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n          name: \"test\",\n        },\n      })\n    })\n\n    expect(result.current.snapshots).toEqual([\n      {\n        id: 0,\n        name: \"test\",\n      },\n    ])\n  })\n\n  it(\"should request a subscription\", () => {\n    const contextValues = buildContextValues()\n\n    const { result } = renderHook(() => useSnapshots(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    act(() => {\n      result.current.createSnapshot()\n    })\n\n    expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.backup.request\", {})\n  })\n\n  it(\"should request a restore\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useSnapshots(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    act(() => {\n      addCallback({\n        type: CommandType.StateBackupResponse,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n          name: \"test\",\n          state: { test: true },\n        },\n      })\n    })\n\n    act(() => {\n      result.current.restoreSnapshot(result.current.snapshots[0])\n    })\n\n    expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.restore.request\", {\n      state: result.current.snapshots[0].state,\n    })\n  })\n\n  it(\"should remove a restore\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useSnapshots(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    act(() => {\n      addCallback({\n        type: CommandType.StateBackupResponse,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n          name: \"test\",\n          state: { test: true },\n        },\n      })\n    })\n\n    act(() => {\n      result.current.removeSnapshot(result.current.snapshots[0])\n    })\n\n    expect(result.current.snapshots.length).toEqual(0)\n  })\n\n  it(\"should open and close the rename modal\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useSnapshots(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    act(() => {\n      addCallback({\n        type: CommandType.StateBackupResponse,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n          name: \"test\",\n          state: { test: true },\n        },\n      })\n    })\n\n    act(() => {\n      result.current.openSnapshotRenameModal(result.current.snapshots[0])\n    })\n    expect(result.current.isSnapshotRenameModalOpen).toBeTruthy()\n\n    act(() => {\n      result.current.closeSnapshotRenameModal()\n    })\n    expect(result.current.isSnapshotRenameModalOpen).toBeFalsy()\n  })\n\n  it(\"should rename a restore\", () => {\n    let addCallback = null\n\n    const contextValues = buildContextValues({\n      addCommandListener: (callback) => {\n        addCallback = callback\n      },\n    })\n\n    const { result } = renderHook(() => useSnapshots(), {\n      wrapper: ({ children }) => (\n        <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n      ),\n    })\n\n    act(() => {\n      addCallback({\n        type: CommandType.StateBackupResponse,\n        clientId: \"1234\",\n        payload: {\n          id: 0,\n          name: \"test\",\n          state: { test: true },\n        },\n      })\n    })\n\n    act(() => {\n      result.current.openSnapshotRenameModal(result.current.snapshots[0])\n    })\n\n    expect(result.current.renameingSnapshot).toEqual(result.current.snapshots[0])\n\n    act(() => {\n      result.current.renameSnapshot(\"test2\")\n    })\n\n    expect(result.current.snapshots[0].name).toEqual(\"test2\")\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/State/useSnapshots.ts",
    "content": "import { useContext, useEffect, useReducer, useCallback } from \"react\"\nimport { format } from \"date-fns\"\nimport { produce } from \"immer\"\n\nimport { CommandType } from \"reactotron-core-contract\"\nimport type { Command } from \"reactotron-core-contract\"\nimport ReactotronContext from \"../Reactotron\"\n\nexport interface Snapshot {\n  id: number\n  name: string\n  state: any\n}\n\ninterface SnapshotState {\n  uniqueIdCounter: number\n  snapshots: Snapshot[]\n  renameingSnapshot: Snapshot\n  isSnapshotRenameModalOpen: boolean\n}\n\nenum SnapshotActionType {\n  SnapshotAdd = \"SNAPSHOT_ADD\",\n  SnapshotRemove = \"SNAPSHOT_REMOVE\",\n  SnapshotRename = \"SNAPSHOT_RENAME\",\n  RenameModalOpen = \"RENAME_MODAL_OPEN\",\n  RenameModalClose = \"RENAME_MODAL_CLOSE\",\n}\n\ntype Action =\n  | {\n      type: SnapshotActionType.SnapshotAdd\n      payload: Command\n    }\n  | { type: SnapshotActionType.SnapshotRemove; payload: Snapshot }\n  | { type: SnapshotActionType.SnapshotRename; payload: string }\n  | { type: SnapshotActionType.RenameModalOpen; payload: Snapshot }\n  | { type: SnapshotActionType.RenameModalClose }\n\nfunction timelineReducer(state: SnapshotState, action: Action) {\n  switch (action.type) {\n    case SnapshotActionType.SnapshotAdd:\n      return produce(state, (draftState) => {\n        draftState.snapshots.push({\n          id: draftState.uniqueIdCounter++,\n          name: action.payload.payload.name || format(new Date(), \"EEEE @ h:mm:ss a\"),\n          state: action.payload.payload.state,\n        })\n      })\n    case SnapshotActionType.SnapshotRemove:\n      return produce(state, (draftState) => {\n        const snapshotIndex = draftState.snapshots.findIndex((s) => s.id === action.payload.id)\n\n        if (snapshotIndex === -1) return\n\n        draftState.snapshots = [\n          ...draftState.snapshots.slice(0, snapshotIndex),\n          ...draftState.snapshots.slice(snapshotIndex + 1),\n        ]\n      })\n    case SnapshotActionType.SnapshotRename:\n      return produce(state, (draftState) => {\n        const snapshot = draftState.snapshots.find((s) => s.id === draftState.renameingSnapshot.id)\n\n        if (!snapshot) return\n\n        snapshot.name = action.payload\n        draftState.isSnapshotRenameModalOpen = false\n      })\n    case SnapshotActionType.RenameModalOpen:\n      return produce(state, (draftState) => {\n        draftState.renameingSnapshot = action.payload\n        draftState.isSnapshotRenameModalOpen = true\n      })\n    case SnapshotActionType.RenameModalClose:\n      return produce(state, (draftState) => {\n        draftState.isSnapshotRenameModalOpen = false\n      })\n    default:\n      return state\n  }\n}\n\nfunction useSnapshots() {\n  const { sendCommand, addCommandListener } = useContext(ReactotronContext)\n  const [state, dispatch] = useReducer(timelineReducer, {\n    uniqueIdCounter: 0,\n    snapshots: [],\n    renameingSnapshot: null,\n    isSnapshotRenameModalOpen: false,\n  })\n\n  useEffect(() => {\n    addCommandListener((command) => {\n      if (command.type !== CommandType.StateBackupResponse) return\n\n      dispatch({\n        type: SnapshotActionType.SnapshotAdd,\n        payload: command,\n      })\n    })\n  }, [addCommandListener])\n\n  const createSnapshot = useCallback(() => {\n    sendCommand(\"state.backup.request\", {})\n  }, [sendCommand])\n\n  const restoreSnapshot = useCallback(\n    (snapshot: Snapshot) => {\n      if (!snapshot || !snapshot.state) return\n\n      sendCommand(\"state.restore.request\", { state: snapshot.state })\n    },\n    [sendCommand]\n  )\n\n  const removeSnapshot = useCallback((snapshot) => {\n    dispatch({\n      type: SnapshotActionType.SnapshotRemove,\n      payload: snapshot,\n    })\n  }, [])\n\n  const renameSnapshot = useCallback((name: string) => {\n    dispatch({\n      type: SnapshotActionType.SnapshotRename,\n      payload: name,\n    })\n  }, [])\n\n  const openSnapshotRenameModal = useCallback((snapshot: Snapshot) => {\n    dispatch({\n      type: SnapshotActionType.RenameModalOpen,\n      payload: snapshot,\n    })\n  }, [])\n\n  const closeSnapshotRenameModal = useCallback(() => {\n    dispatch({\n      type: SnapshotActionType.RenameModalClose,\n    })\n  }, [])\n\n  return {\n    snapshots: state.snapshots,\n    isSnapshotRenameModalOpen: state.isSnapshotRenameModalOpen,\n    renameingSnapshot: state.renameingSnapshot,\n    createSnapshot,\n    restoreSnapshot,\n    removeSnapshot,\n    renameSnapshot,\n    openSnapshotRenameModal,\n    closeSnapshotRenameModal,\n  }\n}\n\nexport default useSnapshots\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/State/useSubscriptions.test.tsx",
    "content": "/* eslint-disable react/display-name */\nimport React from \"react\"\nimport { act, renderHook } from \"@testing-library/react\"\n\nimport ReactotronContext from \"../Reactotron\"\n\nimport useSubscriptions, { StorageKey } from \"./useSubscriptions\"\n\nfunction buildContextValues({ addCommandListener = null } = {}) {\n  return {\n    commands: [],\n    sendCommand: jest.fn(),\n    clearCommands: jest.fn(),\n    addCommandListener: addCommandListener || jest.fn(),\n    isDispatchModalOpen: false,\n    dispatchModalInitialAction: \"\",\n    openDispatchModal: jest.fn(),\n    closeDispatchModal: jest.fn(),\n    isSubscriptionModalOpen: false,\n    openSubscriptionModal: jest.fn(),\n    closeSubscriptionModal: jest.fn(),\n  }\n}\n\ndescribe(\"contexts/State/useSubscriptions\", () => {\n  beforeEach(() => {\n    localStorage.removeItem(StorageKey.Subscriptions)\n  })\n\n  describe(\"Initial Settings\", () => {\n    it(\"should default to no subscriptions\", () => {\n      const contextValues = buildContextValues()\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      expect(result.current.subscriptions).toEqual([])\n    })\n\n    it(\"should have a stored list of subscriptions\", () => {\n      const contextValues = buildContextValues()\n\n      localStorage.setItem(StorageKey.Subscriptions, JSON.stringify([\"test\", \"test2\"]))\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      expect(result.current.subscriptions).toEqual([\"test\", \"test2\"])\n    })\n  })\n\n  describe(\"Actions\", () => {\n    it(\"should add a subscription\", () => {\n      const contextValues = buildContextValues()\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      act(() => {\n        result.current.addSubscription(\"test\")\n      })\n\n      expect(result.current.subscriptions).toEqual([\"test\"])\n      expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.values.subscribe\", {\n        paths: [\"test\"],\n      })\n      expect(localStorage.getItem(StorageKey.Subscriptions)).toEqual(JSON.stringify([\"test\"]))\n    })\n\n    it(\"should not add a duplicate subscription\", () => {\n      const contextValues = buildContextValues()\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      act(() => {\n        result.current.addSubscription(\"test\")\n      })\n\n      expect(result.current.subscriptions).toEqual([\"test\"])\n      expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.values.subscribe\", {\n        paths: [\"test\"],\n      })\n      expect(localStorage.getItem(StorageKey.Subscriptions)).toEqual(JSON.stringify([\"test\"]))\n\n      act(() => {\n        result.current.addSubscription(\"test\")\n      })\n      expect(result.current.subscriptions.length).toEqual(1)\n    })\n\n    it(\"should remove a subscription\", () => {\n      localStorage.setItem(StorageKey.Subscriptions, JSON.stringify([\"test\", \"test2\", \"test3\"]))\n      const contextValues = buildContextValues()\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      act(() => {\n        result.current.removeSubscription(\"test2\")\n      })\n\n      expect(result.current.subscriptions).toEqual([\"test\", \"test3\"])\n      expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.values.subscribe\", {\n        paths: [\"test\", \"test3\"],\n      })\n      expect(localStorage.getItem(StorageKey.Subscriptions)).toEqual(\n        JSON.stringify([\"test\", \"test3\"])\n      )\n    })\n\n    it(\"should handle removing a subscription that does not exist\", () => {\n      localStorage.setItem(StorageKey.Subscriptions, JSON.stringify([\"test\", \"test2\"]))\n      const contextValues = buildContextValues()\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      act(() => {\n        result.current.removeSubscription(\"test3\")\n      })\n\n      expect(result.current.subscriptions).toEqual([\"test\", \"test2\"])\n      expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.values.subscribe\", {\n        paths: [\"test\", \"test2\"],\n      })\n      expect(localStorage.getItem(StorageKey.Subscriptions)).toEqual(\n        JSON.stringify([\"test\", \"test2\"])\n      )\n    })\n\n    it(\"should clear subscriptions\", () => {\n      localStorage.setItem(StorageKey.Subscriptions, JSON.stringify([\"test\", \"test2\"]))\n      const contextValues = buildContextValues()\n\n      const { result } = renderHook(() => useSubscriptions(), {\n        wrapper: ({ children }) => (\n          <ReactotronContext.Provider value={contextValues}>{children}</ReactotronContext.Provider>\n        ),\n      })\n\n      act(() => {\n        result.current.clearSubscriptions()\n      })\n\n      expect(result.current.subscriptions).toEqual([])\n      expect(contextValues.sendCommand).toHaveBeenCalledWith(\"state.values.subscribe\", {\n        paths: [],\n      })\n      expect(localStorage.getItem(StorageKey.Subscriptions)).toEqual(JSON.stringify([]))\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/State/useSubscriptions.ts",
    "content": "import { useReducer, useEffect, useCallback, useContext } from \"react\"\n\nimport ReactotronContext from \"../Reactotron\"\n\nexport enum StorageKey {\n  Subscriptions = \"ReactotronSubscriptions\",\n}\n\ninterface State {\n  subscriptions: string[]\n}\n\ninterface Action {\n  type: \"SUBSCRIPTIONS_SET\"\n  payload?: string | string[]\n}\n\nfunction subscriptionsReducer(state: State, action: Action) {\n  switch (action.type) {\n    case \"SUBSCRIPTIONS_SET\":\n      return { ...state, subscriptions: action.payload as string[] }\n    default:\n      return state\n  }\n}\n\nfunction useSubscriptions() {\n  const { sendCommand } = useContext(ReactotronContext)\n\n  const [state, dispatch] = useReducer(subscriptionsReducer, {\n    subscriptions: [],\n  })\n\n  // Internal Handlers\n  const sendSubscriptions = useCallback(\n    (subscriptions: string[]) => {\n      localStorage.setItem(StorageKey.Subscriptions, JSON.stringify(subscriptions))\n\n      sendCommand(\"state.values.subscribe\", { paths: subscriptions })\n    },\n    [sendCommand]\n  )\n\n  // Load up saved subscriptions!\n  useEffect(() => {\n    const subscriptions = JSON.parse(localStorage.getItem(StorageKey.Subscriptions) || \"[]\")\n\n    dispatch({\n      type: \"SUBSCRIPTIONS_SET\",\n      payload: subscriptions,\n    })\n\n    if (subscriptions.length === 0) return\n\n    sendSubscriptions(subscriptions)\n  }, [sendSubscriptions])\n\n  // Setup event handlers\n  const addSubscription = (path: string) => {\n    if (state.subscriptions.indexOf(path) > -1) return\n\n    const newSubscriptions = [...state.subscriptions, path]\n\n    sendSubscriptions(newSubscriptions)\n\n    dispatch({\n      type: \"SUBSCRIPTIONS_SET\",\n      payload: newSubscriptions,\n    })\n  }\n\n  const removeSubscription = (path: string) => {\n    const idx = state.subscriptions.indexOf(path)\n\n    if (idx < 0) return;\n\n    const newSubscriptions = [\n      ...state.subscriptions.slice(0, idx),\n      ...state.subscriptions.slice(idx + 1),\n    ]\n\n    sendSubscriptions(newSubscriptions)\n\n    dispatch({\n      type: \"SUBSCRIPTIONS_SET\",\n      payload: newSubscriptions,\n    })\n  }\n\n  const clearSubscriptions = () => {\n    sendSubscriptions([])\n\n    dispatch({\n      type: \"SUBSCRIPTIONS_SET\",\n      payload: [],\n    })\n  }\n\n  return {\n    subscriptions: state.subscriptions,\n    addSubscription,\n    removeSubscription,\n    clearSubscriptions,\n  }\n}\n\nexport default useSubscriptions\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/Timeline/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\n\nimport type { CommandTypeKey } from \"reactotron-core-contract\"\n\nimport useTimeline from \"./useTimeline\"\n\ninterface Context {\n  isSearchOpen: boolean\n  toggleSearch: () => void\n  openSearch: () => void\n  closeSearch: () => void\n  search: string\n  setSearch: (search: string) => void\n  isFilterOpen: boolean\n  openFilter: () => void\n  closeFilter: () => void\n  isReversed: boolean\n  toggleReverse: () => void\n  hiddenCommands: CommandTypeKey[]\n  setHiddenCommands: (commandTypes: CommandTypeKey[]) => void\n}\n\nconst TimelineContext = React.createContext<Context>({\n  isSearchOpen: false,\n  toggleSearch: null,\n  openSearch: null,\n  closeSearch: null,\n  search: \"\",\n  setSearch: null,\n  isFilterOpen: false,\n  openFilter: null,\n  closeFilter: null,\n  isReversed: false,\n  toggleReverse: null,\n  hiddenCommands: [],\n  setHiddenCommands: null,\n})\n\nconst Provider: FunctionComponent<any> = ({ children }) => {\n  const {\n    isSearchOpen,\n    toggleSearch,\n    openSearch,\n    closeSearch,\n    search,\n    setSearch,\n    isFilterOpen,\n    openFilter,\n    closeFilter,\n    isReversed,\n    toggleReverse,\n    hiddenCommands,\n    setHiddenCommands,\n  } = useTimeline()\n\n  return (\n    <TimelineContext.Provider\n      value={{\n        isSearchOpen,\n        toggleSearch,\n        openSearch,\n        closeSearch,\n        search,\n        setSearch,\n        isFilterOpen,\n        openFilter,\n        closeFilter,\n        isReversed,\n        toggleReverse,\n        hiddenCommands,\n        setHiddenCommands,\n      }}\n    >\n      {children}\n    </TimelineContext.Provider>\n  )\n}\n\nexport default TimelineContext\nexport const TimelineProvider = Provider\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/Timeline/useTimeline.test.ts",
    "content": "import { act, renderHook } from \"@testing-library/react\"\n\nimport { CommandType } from \"reactotron-core-contract\"\n\nimport useTimline, { StorageKey } from \"./useTimeline\"\n\ndescribe(\"contexts/Timline/useTimeline\", () => {\n  beforeEach(() => {\n    localStorage.removeItem(StorageKey.ReversedOrder)\n    localStorage.removeItem(StorageKey.HiddenCommands)\n  })\n\n  describe(\"Initial Settings\", () => {\n    it(\"should default to regular order\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.isReversed).toBeFalsy()\n    })\n\n    it(\"should load if user had the timeline reversed\", () => {\n      localStorage.setItem(StorageKey.ReversedOrder, \"reversed\")\n\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.isReversed).toBeTruthy()\n    })\n\n    it(\"should load if user had the timeline regular order\", () => {\n      localStorage.setItem(StorageKey.ReversedOrder, \"regular\")\n\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.isReversed).toBeFalsy()\n    })\n\n    it(\"should default to no hidden commands\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.hiddenCommands).toEqual([])\n    })\n\n    it(\"should have saved hidden commands\", () => {\n      localStorage.setItem(StorageKey.HiddenCommands, JSON.stringify([\"test\"]))\n\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.hiddenCommands).toEqual([\"test\"])\n    })\n  })\n\n  describe(\"actions\", () => {\n    it(\"should toggle search\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.isSearchOpen).toBeFalsy()\n      act(() => {\n        result.current.toggleSearch()\n      })\n      expect(result.current.isSearchOpen).toBeTruthy()\n      act(() => {\n        result.current.toggleSearch()\n      })\n      expect(result.current.isSearchOpen).toBeFalsy()\n    })\n\n    it(\"should set the search string\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.search).toEqual(\"\")\n      act(() => {\n        result.current.setSearch(\"H\")\n      })\n      expect(result.current.search).toEqual(\"H\")\n      act(() => {\n        result.current.setSearch(\"L\")\n      })\n      expect(result.current.search).toEqual(\"L\")\n      act(() => {\n        result.current.setSearch(\"\")\n      })\n      expect(result.current.search).toEqual(\"\")\n    })\n\n    it(\"should open the filter\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.isFilterOpen).toBeFalsy()\n      act(() => {\n        result.current.openFilter()\n      })\n      expect(result.current.isFilterOpen).toBeTruthy()\n    })\n\n    it(\"should close the filter\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      act(() => {\n        result.current.openFilter()\n      })\n      expect(result.current.isFilterOpen).toBeTruthy()\n      act(() => {\n        result.current.closeFilter()\n      })\n      expect(result.current.isFilterOpen).toBeFalsy()\n    })\n\n    it(\"should toggle reverse\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.isReversed).toBeFalsy()\n      act(() => {\n        result.current.toggleReverse()\n      })\n      expect(localStorage.getItem(StorageKey.ReversedOrder)).toEqual(\"reversed\")\n      expect(result.current.isReversed).toBeTruthy()\n      act(() => {\n        result.current.toggleReverse()\n      })\n      expect(localStorage.getItem(StorageKey.ReversedOrder)).toEqual(\"regular\")\n      expect(result.current.isReversed).toBeFalsy()\n    })\n\n    it(\"should set hidden commands\", () => {\n      const { result } = renderHook(() => useTimline())\n\n      expect(result.current.hiddenCommands).toEqual([])\n      act(() => {\n        result.current.setHiddenCommands([CommandType.ClientIntro])\n      })\n      expect(localStorage.getItem(StorageKey.HiddenCommands)).toEqual(\n        JSON.stringify([CommandType.ClientIntro])\n      )\n      expect(result.current.hiddenCommands).toEqual([CommandType.ClientIntro])\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/contexts/Timeline/useTimeline.ts",
    "content": "import { useReducer, useEffect } from \"react\"\n\nimport type { CommandTypeKey } from \"reactotron-core-contract\"\n\nexport enum StorageKey {\n  ReversedOrder = \"ReactotronTimelineReversedOrder\",\n  HiddenCommands = \"ReactotronTimelineHiddenCommands\",\n}\n\ninterface TimelineState {\n  isSearchOpen: boolean\n  search: string\n  isFilterOpen: boolean\n  isReversed: boolean\n  hiddenCommands: CommandTypeKey[]\n}\n\nenum TimelineActionType {\n  SearchOpen = \"SEARCH_OPEN\",\n  SearchClose = \"SEARCH_CLOSE\",\n  SearchSet = \"SEARCH_SET\",\n  FilterOpen = \"FILTER_OPEN\",\n  FilterClose = \"FILTER_CLOSE\",\n  OrderReverse = \"ORDER_REVERSE\",\n  OrderRegular = \"ORDER_REGULAR\",\n  HiddenCommandsSet = \"HIDDENCOMMANDS_SET\",\n}\n\ntype Action =\n  | {\n      type:\n        | TimelineActionType.SearchOpen\n        | TimelineActionType.SearchClose\n        | TimelineActionType.FilterOpen\n        | TimelineActionType.FilterClose\n        | TimelineActionType.OrderReverse\n        | TimelineActionType.OrderRegular\n    }\n  | {\n      type: TimelineActionType.SearchSet\n      payload: string\n    }\n  | {\n      type: TimelineActionType.HiddenCommandsSet\n      payload: CommandTypeKey[]\n    }\n\nfunction timelineReducer(state: TimelineState, action: Action) {\n  switch (action.type) {\n    case TimelineActionType.SearchOpen:\n      return { ...state, isSearchOpen: true }\n    case TimelineActionType.SearchClose:\n      return { ...state, isSearchOpen: false }\n    case TimelineActionType.SearchSet:\n      return { ...state, search: action.payload }\n    case TimelineActionType.FilterOpen:\n      return { ...state, isFilterOpen: true }\n    case TimelineActionType.FilterClose:\n      return { ...state, isFilterOpen: false }\n    case TimelineActionType.OrderReverse:\n      return { ...state, isReversed: true }\n    case TimelineActionType.OrderRegular:\n      return { ...state, isReversed: false }\n    case TimelineActionType.HiddenCommandsSet:\n      return { ...state, hiddenCommands: action.payload }\n    default:\n      return state\n  }\n}\n\nfunction useTimeline() {\n  const [state, dispatch] = useReducer(timelineReducer, {\n    isSearchOpen: false,\n    search: \"\",\n    isFilterOpen: false,\n    isReversed: false,\n    hiddenCommands: [],\n  })\n\n  // Load some values\n  useEffect(() => {\n    const isReversed = localStorage.getItem(StorageKey.ReversedOrder) === \"reversed\"\n    const hiddenCommands = JSON.parse(localStorage.getItem(StorageKey.HiddenCommands) || \"[]\")\n\n    dispatch({\n      type: isReversed ? TimelineActionType.OrderReverse : TimelineActionType.OrderRegular,\n    })\n\n    dispatch({\n      type: TimelineActionType.HiddenCommandsSet,\n      payload: hiddenCommands,\n    })\n  }, [])\n\n  // Setup event handlers\n  const toggleSearch = () => {\n    dispatch({\n      type: state.isSearchOpen ? TimelineActionType.SearchClose : TimelineActionType.SearchOpen,\n    })\n  }\n\n  const openSearch = () => {\n    dispatch({\n      type: TimelineActionType.SearchOpen,\n    })\n  }\n\n  const closeSearch = () => {\n    dispatch({\n      type: TimelineActionType.SearchClose,\n    })\n  }\n\n  const setSearch = (search: string) => {\n    dispatch({\n      type: TimelineActionType.SearchSet,\n      payload: search,\n    })\n  }\n\n  const openFilter = () => {\n    dispatch({\n      type: TimelineActionType.FilterOpen,\n    })\n  }\n\n  const closeFilter = () => {\n    dispatch({\n      type: TimelineActionType.FilterClose,\n    })\n  }\n\n  const toggleReverse = () => {\n    const isReversed = !state.isReversed\n\n    localStorage.setItem(StorageKey.ReversedOrder, isReversed ? \"reversed\" : \"regular\")\n\n    dispatch({\n      type: isReversed ? TimelineActionType.OrderReverse : TimelineActionType.OrderRegular,\n    })\n  }\n\n  const setHiddenCommands = (hiddenCommands: CommandTypeKey[]) => {\n    localStorage.setItem(StorageKey.HiddenCommands, JSON.stringify(hiddenCommands))\n\n    dispatch({\n      type: TimelineActionType.HiddenCommandsSet,\n      payload: hiddenCommands,\n    })\n  }\n\n  return {\n    isSearchOpen: state.isSearchOpen,\n    toggleSearch,\n    openSearch,\n    closeSearch,\n    search: state.search,\n    setSearch,\n    isFilterOpen: state.isFilterOpen,\n    openFilter,\n    closeFilter,\n    isReversed: state.isReversed,\n    toggleReverse,\n    hiddenCommands: state.hiddenCommands,\n    setHiddenCommands,\n  }\n}\n\nexport default useTimeline\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/hooks/useColorScheme.test.tsx",
    "content": "import { renderHook, act } from \"@testing-library/react\"\nimport useColorScheme from \"./useColorScheme\"\n\ndescribe(\"useColorScheme\", () => {\n  const addEventListener = jest.fn()\n  const removeEventListener = jest.fn()\n\n  const mockMatchMedia = jest.fn().mockImplementation((query) => ({\n    matches: false,\n    media: query,\n    addEventListener,\n    removeEventListener\n  }))\n  \n  const originalMatchMedia = window.matchMedia\n  \n  afterEach(() => {\n    jest.resetAllMocks()\n    window.matchMedia = originalMatchMedia\n  })\n\n  it(\"should return dark when window.matchMedia is undefined\", () => {\n    window.matchMedia = undefined\n\n    const { result } = renderHook(() => useColorScheme())\n    expect(result.current).toBe(\"dark\")\n  })\n\n  it(\"should return light when system preference is light\", () => {\n    window.matchMedia = mockMatchMedia\n    mockMatchMedia.mockReturnValue({\n      matches: false,\n      addEventListener,\n      removeEventListener\n    })\n\n    const { result } = renderHook(() => useColorScheme())\n    expect(result.current).toBe(\"light\")\n  })\n\n  it(\"should return dark when system preference is dark\", () => {\n    window.matchMedia = mockMatchMedia\n    mockMatchMedia.mockReturnValue({\n      matches: true,\n      addEventListener,\n      removeEventListener\n    })\n\n    const { result } = renderHook(() => useColorScheme())\n    expect(result.current).toBe(\"dark\")\n  })\n\n  it(\"should update when system preference changes\", () => {\n    let colorSchemeChangeHandler: (e: { matches: boolean }) => void\n    const _addEventListener = jest.fn().mockImplementation((_, handler) => {\n      colorSchemeChangeHandler = handler\n    })\n\n    window.matchMedia = mockMatchMedia\n    mockMatchMedia.mockReturnValue({\n      matches: false,\n      addEventListener: _addEventListener,\n      removeEventListener,\n    })\n\n    const { result } = renderHook(() => useColorScheme())\n    expect(result.current).toBe(\"light\")\n\n    act(() => {\n      colorSchemeChangeHandler({ matches: true })\n    })\n\n    expect(result.current).toBe(\"dark\")\n  })\n\n  it(\"should clean up event listener on unmount\", () => {\n    window.matchMedia = mockMatchMedia\n\n    mockMatchMedia.mockReturnValue({\n      matches: false,\n      addEventListener,\n      removeEventListener,\n    })\n\n    const { unmount } = renderHook(() => useColorScheme())\n    unmount()\n\n    expect(removeEventListener).toHaveBeenCalledWith(\"change\", expect.any(Function))\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/hooks/useColorScheme.tsx",
    "content": "import React from \"react\"\nimport { ColorScheme } from \"../themes\"\n\nfunction getColorScheme({ matches }: MediaQueryList | MediaQueryListEvent): ColorScheme {\n  return matches ? \"dark\" : \"light\"\n}\n\nfunction useColorScheme(): ColorScheme {\n  const mediaQueryRef = React.useRef<MediaQueryList | null>(window?.matchMedia?.(\"(prefers-color-scheme: dark)\") || null)\n\n  const [colorScheme, setColorScheme] = React.useState<ColorScheme>(() => {\n    if (typeof window === \"undefined\" || !mediaQueryRef.current) return \"dark\"\n    return getColorScheme(mediaQueryRef.current)\n  })\n\n  React.useEffect(() => {\n    const mediaQuery = mediaQueryRef.current\n\n    if (!mediaQuery) return () => {}\n\n    const handleChange = (e: MediaQueryListEvent) => {\n      setColorScheme(getColorScheme(e))\n    }\n\n    mediaQuery.addEventListener(\"change\", handleChange)\n    return () => mediaQuery.removeEventListener(\"change\", handleChange)\n  }, [])\n\n  return colorScheme\n}\n\nexport default useColorScheme\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/index.ts",
    "content": "// Styles\nimport { themes } from \"./themes\"\n\n// Components\nimport ActionButton from \"./components/ActionButton\"\nimport ContentView from \"./components/ContentView\"\nimport EmptyState from \"./components/EmptyState\"\nimport Header from \"./components/Header\"\nimport Modal from \"./components/Modal\"\nimport RandomJoke from \"./components/RandomJoke\"\nimport ReactotronAppProvider from \"./components/ReactotronAppProvider\"\nimport TimelineCommand from \"./components/TimelineCommand\"\nimport TimelineCommandTabButton from \"./components/TimelineCommandTabButton\"\nimport Timestamp from \"./components/Timestamp\"\nimport Tooltip from \"./components/Tooltip\"\nimport TreeView from \"./components/TreeView\"\nimport TreeViewDiff from \"./components/TreeViewDiff\"\n\n// Contexts\nimport ReactotronContext, { ReactotronProvider } from \"./contexts/Reactotron\"\nimport CustomCommandsContext, { CustomCommandsProvider } from \"./contexts/CustomCommands\"\nimport ReactNativeContext, { ReactNativeProvider } from \"./contexts/ReactNative\"\nimport StateContext, { StateProvider } from \"./contexts/State\"\nimport TimelineContext, { TimelineProvider } from \"./contexts/Timeline\"\n\n// Modals\nimport DispatchActionModal from \"./modals/DispatchActionModal\"\nimport SnapshotRenameModal from \"./modals/SnapshotRenameModal\"\nimport SubscriptionAddModal from \"./modals/SubscriptionAddModal\"\nimport TimelineFilterModal from \"./modals/TimelineFilterModal\"\n\n// Timeline Commands\nimport timelineCommandResolver from \"./timelineCommands\"\n\n// Utils\nimport repairSerialization from \"./utils/repair-serialization\"\nimport filterCommands from \"./utils/filterCommands\"\n\nexport {\n  // Contexts\n  ActionButton,\n  ContentView,\n  CustomCommandsContext,\n  CustomCommandsProvider,\n  DispatchActionModal,\n  EmptyState,\n  filterCommands,\n  Header,\n  Modal,\n  RandomJoke,\n  ReactNativeContext,\n  ReactNativeProvider,\n  ReactotronAppProvider,\n  ReactotronContext,\n  ReactotronProvider,\n  repairSerialization,\n  SnapshotRenameModal,\n  StateContext,\n  StateProvider,\n  SubscriptionAddModal,\n  themes,\n  TimelineCommand,\n  timelineCommandResolver,\n  TimelineCommandTabButton,\n  TimelineContext,\n  TimelineFilterModal,\n  TimelineProvider,\n  Timestamp,\n  Tooltip,\n  TreeView,\n  TreeViewDiff,\n}\n\nexport type { CustomCommand } from \"./contexts/CustomCommands/useCustomCommands\"\nexport type { Snapshot } from \"./contexts/State/useSnapshots\"\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/DispatchActionModal/DispatchActionModal.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport DispatchActionModal from \"./index\"\n\nexport default {\n  title: \"Dispatch Action Modal\",\n}\n\nexport const Darwin = () => (\n  <DispatchActionModal isOpen onClose={() => {}} onDispatchAction={() => {}} isDarwin />\n)\n\nexport const NonDarwin = () => (\n  <DispatchActionModal isOpen onClose={() => {}} onDispatchAction={() => {}} isDarwin={false} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/DispatchActionModal/index.tsx",
    "content": "import React, { FunctionComponent, useRef, useState, useCallback, useEffect } from \"react\"\nimport styled from \"styled-components\"\n\nimport Modal, { KeystrokeContainer, Keystroke } from \"../../components/Modal\"\n\nconst KEY_MAPS = {\n  command: \"⌘\",\n  ctrl: \"CTRL\",\n}\n\nconst InstructionText = styled.div`\n  text-align: left;\n  color: ${(props) => props.theme.foreground};\n`\n\nconst ActionContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  padding: 15px;\n`\nconst ActionLabel = styled.label`\n  font-size: 13px;\n  color: ${(props) => props.theme.heading};\n`\nconst ActionInput = styled.textarea`\n  border: 0;\n  border-bottom: 1px solid ${(props) => props.theme.line};\n  font-size: 25px;\n  color: ${(props) => props.theme.foregroundLight};\n  line-height: 40px;\n  background-color: inherit;\n  min-width: 462px;\n  max-width: 462px;\n  height: 150px;\n  min-height: 40px;\n  max-height: 300px;\n`\n\ninterface Props {\n  isOpen: boolean\n  initialValue?: string\n  onClose: () => void\n  onDispatchAction: (action: string) => void\n  isDarwin: boolean\n}\n\nconst DispatchActionModal: FunctionComponent<Props> = ({\n  isOpen,\n  initialValue,\n  onClose,\n  onDispatchAction,\n  isDarwin,\n}) => {\n  const [prevIsOpen, setPrevIsOpen] = useState(isOpen)\n  const [action, setAction] = useState(\"\")\n  const inputRef = useRef<HTMLTextAreaElement>(null)\n\n  useEffect(() => {\n    if (isOpen && !prevIsOpen) {\n      setAction(initialValue)\n    }\n\n    setPrevIsOpen(isOpen)\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen])\n\n  const handleAfterOpen = () => inputRef.current && inputRef.current.focus()\n\n  const handleKeypress = (e) => {\n    if (e.keyCode === 13 && e.metaKey) {\n      // We need to take a string that is not exactly JSON and make it an object.\n      const actualAction = eval(`(${action})`) // eslint-disable-line\n\n      onDispatchAction(actualAction)\n      setAction(\"\")\n      onClose()\n    }\n  }\n\n  const handleClose = useCallback(() => {\n    setAction(\"\")\n    onClose()\n  }, [onClose])\n\n  const handleChange = useCallback((e) => {\n    setAction(e.target.value)\n  }, [])\n\n  return (\n    <Modal\n      title=\"Dispatch Action\"\n      isOpen={isOpen}\n      onClose={handleClose}\n      onAfterOpen={handleAfterOpen}\n      additionalKeystrokes={\n        <KeystrokeContainer>\n          <Keystroke>{isDarwin ? KEY_MAPS.command : KEY_MAPS.ctrl} + ENTER</Keystroke> Dispatch\n        </KeystrokeContainer>\n      }\n    >\n      <InstructionText>\n        <p>Create an action that will be dispatched to the client to run.</p>\n      </InstructionText>\n      <ActionContainer>\n        <ActionLabel>ACTION</ActionLabel>\n        <ActionInput\n          ref={inputRef}\n          value={action}\n          onChange={handleChange}\n          placeholder=\"{ type: 'RepoMessage.Request' }\"\n          onKeyDown={handleKeypress}\n        />\n      </ActionContainer>\n    </Modal>\n  )\n}\n\nexport default DispatchActionModal\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/SnapshotRenameModal/SnapshotRenameModal.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport SnapshotRenameModal from \"./index\"\n\nexport default {\n  title: \"Snapshot Rename Modal\",\n}\n\nexport const Default = () => (\n  <SnapshotRenameModal\n    snapshot={{ name: \"Thursday @ 10:00:00 pm\" }}\n    isOpen\n    onClose={() => {}}\n    onRenameSnapshot={() => {}}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/SnapshotRenameModal/index.tsx",
    "content": "import React, { FunctionComponent, useRef, useState, useCallback } from \"react\"\nimport styled from \"styled-components\"\n\nimport Modal, { KeystrokeContainer, Keystroke } from \"../../components/Modal\"\n\nconst NameContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  padding: 15px;\n`\nconst NameLabel = styled.label`\n  font-size: 13px;\n  color: ${(props) => props.theme.heading};\n`\nconst NameInput = styled.input`\n  border: 0;\n  border-bottom: 1px solid ${(props) => props.theme.line};\n  font-size: 25px;\n  color: ${(props) => props.theme.foregroundLight};\n  line-height: 40px;\n  background-color: inherit;\n`\n\ninterface Props {\n  snapshot: any // TODO: Type this better when we sort out the typings\n  isOpen: boolean\n  onClose: () => void\n  onRenameSnapshot: (name: string) => void\n}\n\nconst SnapshotAddModal: FunctionComponent<Props> = ({\n  snapshot,\n  isOpen,\n  onClose,\n  onRenameSnapshot,\n}) => {\n  const [name, setName] = useState(\"\")\n  const inputRef = useRef<HTMLInputElement>(null)\n\n  const handleAfterOpen = () => {\n    setName((snapshot || {}).name || \"\")\n    inputRef.current && inputRef.current.focus()\n  }\n\n  const handleClose = useCallback(() => {\n    setName(\"\")\n    onClose()\n  }, [onClose])\n\n  const handleChange = useCallback((e) => {\n    setName(e.target.value)\n  }, [])\n\n  const handleKeypress = useCallback(\n    (e) => {\n      if (e.key === \"Enter\") {\n        onRenameSnapshot(name)\n        setName(\"\")\n      }\n    },\n    [onRenameSnapshot, name]\n  )\n\n  return (\n    <Modal\n      title=\"Rename Snapshot\"\n      isOpen={isOpen}\n      onClose={handleClose}\n      onAfterOpen={handleAfterOpen}\n      additionalKeystrokes={\n        <KeystrokeContainer>\n          <Keystroke>ENTER</Keystroke> Save\n        </KeystrokeContainer>\n      }\n    >\n      <NameContainer>\n        <NameLabel>NAME</NameLabel>\n        <NameInput\n          type=\"text\"\n          ref={inputRef}\n          value={name}\n          onChange={handleChange}\n          onKeyPress={handleKeypress}\n        />\n      </NameContainer>\n    </Modal>\n  )\n}\n\nexport default SnapshotAddModal\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/SubscriptionAddModal/SubscriptionAddModal.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport SubscriptionAddModal from \"./index\"\n\nexport default {\n  title: \"Subscription Add Modal\",\n}\n\nexport const Default = () => (\n  <SubscriptionAddModal isOpen onClose={() => {}} onAddSubscription={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/SubscriptionAddModal/index.tsx",
    "content": "import React, { FunctionComponent, useRef, useState, useCallback } from \"react\"\nimport styled from \"styled-components\"\n\nimport Modal, { KeystrokeContainer, Keystroke } from \"../../components/Modal\"\n\nconst InstructionText = styled.div`\n  text-align: left;\n  color: ${(props) => props.theme.foreground};\n`\nconst ExampleText = styled.p`\n  margin: 0 0 0 40px;\n  color: ${(props) => props.theme.bold};\n`\n\nconst PathContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  padding: 15px;\n`\nconst PathLabel = styled.label`\n  font-size: 13px;\n  color: ${(props) => props.theme.heading};\n`\nconst PathInput = styled.input`\n  border: 0;\n  border-bottom: 1px solid ${(props) => props.theme.line};\n  font-size: 25px;\n  color: ${(props) => props.theme.foregroundLight};\n  line-height: 40px;\n  background-color: inherit;\n`\n\ninterface Props {\n  isOpen: boolean\n  onClose: () => void\n  onAddSubscription: (path: string) => void\n}\n\nconst SubscriptionAddModal: FunctionComponent<Props> = ({ isOpen, onClose, onAddSubscription }) => {\n  const [path, setPath] = useState(\"\")\n  const inputRef = useRef<HTMLInputElement>(null)\n\n  const handleAfterOpen = () => inputRef.current && inputRef.current.focus()\n\n  const handleClose = useCallback(() => {\n    setPath(\"\")\n    onClose()\n  }, [onClose])\n\n  const handleChange = useCallback((e) => {\n    setPath(e.target.value)\n  }, [])\n\n  const handleKeypress = useCallback(\n    (e) => {\n      if (e.key === \"Enter\") {\n        onAddSubscription(path)\n        setPath(\"\")\n      }\n    },\n    [onAddSubscription, path]\n  )\n\n  return (\n    <Modal\n      title=\"Add Subscription\"\n      isOpen={isOpen}\n      onClose={handleClose}\n      onAfterOpen={handleAfterOpen}\n      additionalKeystrokes={\n        <KeystrokeContainer>\n          <Keystroke>ENTER</Keystroke> Subscribe\n        </KeystrokeContainer>\n      }\n    >\n      <InstructionText>\n        <p>Enter a path you would like to subscribe. Here are some examples to get you started:</p>\n        <ExampleText>user.firstName</ExampleText>\n        <ExampleText>repo</ExampleText>\n        <ExampleText>repo.*</ExampleText>\n      </InstructionText>\n      <PathContainer>\n        <PathLabel>PATH</PathLabel>\n        <PathInput\n          type=\"text\"\n          ref={inputRef}\n          value={path}\n          onChange={handleChange}\n          onKeyPress={handleKeypress}\n        />\n      </PathContainer>\n    </Modal>\n  )\n}\n\nexport default SubscriptionAddModal\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/TimelineFilterModal/TimelineFilterModal.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport TimelineFilterModal from \"./index\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nexport default {\n  title: \"Timeline Filter Modal\",\n}\n\nexport const AllOn = () => (\n  <TimelineFilterModal isOpen onClose={() => {}} setHiddenCommands={() => {}} hiddenCommands={[]} />\n)\n\nexport const LogOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.Log]}\n  />\n)\n\nexport const ImageOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.Image]}\n  />\n)\n\nexport const CustomDisplayOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.Display]}\n  />\n)\n\nexport const ConnectionOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.ClientIntro]}\n  />\n)\n\nexport const BenchmarkOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.Benchmark]}\n  />\n)\n\nexport const APIOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.ApiResponse]}\n  />\n)\n\nexport const MutationsOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.AsyncStorageMutation]}\n  />\n)\n\nexport const ActionOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.StateActionComplete]}\n  />\n)\n\nexport const SagaOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.SagaTaskComplete]}\n  />\n)\n\nexport const SubscriptionOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[CommandType.StateValuesChange]}\n  />\n)\n\nexport const AllOff = () => (\n  <TimelineFilterModal\n    isOpen\n    onClose={() => {}}\n    setHiddenCommands={() => {}}\n    hiddenCommands={[\n      CommandType.Log,\n      CommandType.Image,\n      CommandType.Display,\n      CommandType.ClientIntro,\n      CommandType.Benchmark,\n      CommandType.ApiResponse,\n      CommandType.AsyncStorageMutation,\n      CommandType.StateActionComplete,\n      CommandType.SagaTaskComplete,\n      CommandType.StateValuesChange,\n    ]}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/modals/TimelineFilterModal/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\nimport Modal from \"../../components/Modal\"\nimport Checkbox from \"../../components/Checkbox\"\nimport type { CommandTypeKey } from \"reactotron-core-contract\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nconst GROUPS = [\n  {\n    name: \"Informational\",\n    items: [\n      { value: CommandType.Log, text: \"Log\" },\n      { value: CommandType.Image, text: \"Image\" },\n      { value: CommandType.Display, text: \"Custom Display\" },\n    ],\n  },\n  {\n    name: \"General\",\n    items: [\n      { value: CommandType.ClientIntro, text: \"Connection\" },\n      { value: CommandType.Benchmark, text: \"Benchmark\" },\n      { value: CommandType.ApiResponse, text: \"API\" },\n    ],\n  },\n  {\n    name: \"Async Storage\",\n    items: [{ value: CommandType.AsyncStorageMutation, text: \"Mutations\" }],\n  },\n  {\n    name: \"State & Sagas\",\n    items: [\n      { value: CommandType.StateActionComplete, text: \"Action\" },\n      { value: CommandType.SagaTaskComplete, text: \"Saga\" },\n      { value: CommandType.StateValuesChange, text: \"Subscription Changed\" },\n    ],\n  },\n]\n\nconst BulkActionContainer = styled.div`\n  margin-bottom: 20px;\n`\nconst BulkAction = styled.span`\n  cursor: pointer;\n  color: ${(props) => props.theme.tag};\n`\n\nconst GroupName = styled.div`\n  font-size: 18px;\n  margin: 10px 0;\n  padding-bottom: 2px;\n  border-bottom: 1px solid ${(props) => props.theme.highlight};\n  color: ${(props) => props.theme.foregroundLight};\n`\n\ninterface Props {\n  isOpen: boolean\n  onClose: () => void\n  hiddenCommands: CommandTypeKey[]\n  setHiddenCommands: (hiddenCommands: CommandTypeKey[]) => void\n}\n\nconst TimelineFilterModal: FunctionComponent<Props> = ({\n  isOpen,\n  onClose,\n  hiddenCommands,\n  setHiddenCommands,\n}) => {\n  const toggleAllOn = () => {\n    // To turn everything on we need the list to be empty.\n    setHiddenCommands([])\n  }\n\n  const toggleAllOff = () => {\n    // To turn everything off we need the list to have all options.\n    setHiddenCommands(\n      GROUPS.reduce((itms, g) => {\n        return [...itms, ...g.items.map((i) => i.value)]\n      }, [])\n    )\n  }\n\n  const buildCheckboxToggle = (value: CommandTypeKey) => {\n    const isSelected = hiddenCommands.indexOf(value) === -1\n\n    return () => {\n      if (isSelected) {\n        setHiddenCommands([...hiddenCommands, value])\n      } else {\n        setHiddenCommands([...hiddenCommands.filter((f) => f !== value)])\n      }\n    }\n  }\n\n  return (\n    <Modal title=\"Timeline Filter\" isOpen={isOpen} onClose={onClose}>\n      <BulkActionContainer>\n        <BulkAction onClick={toggleAllOn}>Check all</BulkAction>\n        <span> / </span>\n        <BulkAction onClick={toggleAllOff}>Uncheck all</BulkAction>\n      </BulkActionContainer>\n      <div>\n        {GROUPS.map((section, sectionIdx) => {\n          const options = section.items.map((item, itemIdx) => {\n            const isChecked = hiddenCommands.indexOf(item.value) === -1\n            const onToggle = buildCheckboxToggle(item.value)\n\n            return (\n              <Checkbox key={itemIdx} label={item.text} onToggle={onToggle} isChecked={isChecked} />\n            )\n          })\n\n          return (\n            <div key={sectionIdx}>\n              <GroupName>{section.name}</GroupName>\n              {options}\n            </div>\n          )\n        })}\n      </div>\n    </Modal>\n  )\n}\n\nexport default TimelineFilterModal\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/themes.ts",
    "content": "interface ReactotronTheme {\n  fontFamily: string\n  background: string\n  backgroundDarker: string\n  backgroundHighlight: string\n  backgroundLight: string\n  backgroundLighter: string\n  backgroundSubtleDark: string\n  backgroundSubtleLight: string\n  bold: string\n  chrome: string\n  chromeLine: string\n  constant: string\n  foreground: string\n  foregroundDark: string\n  foregroundLight: string\n  glow: string\n  heading: string\n  highlight: string\n  keyword: string\n  line: string\n  modalOverlay: string\n  string: string\n  subtleLine: string\n  support: string\n  tag: string\n  tagComplement: string\n  warning: string\n}\n\nconst colorSchemes = [\"dark\", \"light\"] as const\n\ntype ColorScheme = (typeof colorSchemes)[number]\n\nconst themes: Record<ColorScheme, ReactotronTheme> = {\n  dark: {\n    fontFamily:\n      '\"Fira Code\", \"SF Mono\", \"Consolas\", \"Segoe UI\", \"Roboto\", \"-apple-system\", \"Helvetica Neue\", sans-serif',\n    background: \"#1e1e1e\",\n    backgroundDarker: \"hsl(0, 0%, 10.6%)\",\n    backgroundHighlight: \"#464b50\",\n    backgroundLight: \"#ffffff\",\n    backgroundLighter: \"#323537\",\n    backgroundSubtleDark: \"hsl(0, 0%, 8.2%)\",\n    backgroundSubtleLight: \"hsl(0, 0%, 12.4%)\",\n    bold: \"#f9ee98\",\n    chrome: \"hsl(0, 0%, 12.9%)\",\n    chromeLine: \"hsl(0, 0%, 14.7%)\",\n    constant: \"#cda869\",\n    foreground: \"#a7a7a7\",\n    foregroundDark: \"#838184\",\n    foregroundLight: \"#c3c3c3\",\n    glow: \"hsla(0, 0%, 9.4%, 0.8)\",\n    heading: \"#7587a6\",\n    highlight: \"hsl(290, 3.2%, 47.4%)\",\n    keyword: \"#9b859d\",\n    line: \"hsl(204, 4.8%, 18.5%)\",\n    modalOverlay: \"hsla(0, 0%, 7.1%, 0.95)\",\n    string: \"#8f9d6a\",\n    subtleLine: \"hsl(204, 4.8%, 16.5%)\",\n    support: \"#afc4db\",\n    tag: \"#cf6a4c\",\n    tagComplement: \"hsl(13.699999999999989, 57.7%, 91.6%)\",\n    warning: \"#9b703f\",\n  },\n  light: {\n    fontFamily:\n      '\"Fira Code\", \"SF Mono\", \"Consolas\", \"Segoe UI\", \"Roboto\", \"-apple-system\", \"Helvetica Neue\", sans-serif',\n    background: \"#ffffff\",\n    backgroundDarker: \"hsl(0, 0%, 90%)\",\n    backgroundHighlight: \"#f0f0f0\",\n    backgroundLight: \"#f9f9f9\",\n    backgroundLighter: \"#e6e6e6\",\n    backgroundSubtleDark: \"hsl(0, 0%, 95%)\",\n    backgroundSubtleLight: \"hsl(0, 0%, 97%)\",\n    bold: \"#222222\",\n    chrome: \"hsl(0, 0%, 90%)\",\n    chromeLine: \"hsl(0, 0%, 85%)\",\n    constant: \"#d17d00\",\n    foreground: \"#333333\",\n    foregroundDark: \"#555555\",\n    foregroundLight: \"#666666\",\n    glow: \"hsla(0, 0%, 90%, 0.8)\",\n    heading: \"#4b5f85\",\n    highlight: \"hsl(210, 10%, 70%)\",\n    keyword: \"#9b0000\",\n    line: \"hsl(204, 4.8%, 95%)\",\n    modalOverlay: \"hsla(0, 0%, 100%, 0.95)\",\n    string: \"#718c00\",\n    subtleLine: \"hsl(204, 4.8%, 90%)\",\n    support: \"#597ab8\",\n    tag: \"#d9484f\",\n    tagComplement: \"hsl(13.7, 57.7%, 45%)\",\n    warning: \"#b35900\",\n  },\n}\n\nexport { themes }\nexport type { ColorScheme, ReactotronTheme }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/ApiResponseCommand/ApiResponseCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { ApiResponseCommand, Tab } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Api Response Command\",\n}\n\nconst apiResponseCommand = {\n  type: \"api.response\",\n  important: false,\n  payload: {\n    request: {\n      url: \"https://www.google.com/\",\n      method: \"GET\",\n      data: '{\"operationName\":\"LaunchList\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n    mission_name\\\\n    launch_date_unix\\\\n    launch_success\\\\n    upcoming\\\\n    __typename\\\\n  }\\\\n}\\\\n\"}',\n      headers: {},\n      params: { data: { test: 1 } },\n    },\n    response: {\n      body: \" skipped \",\n      status: 200,\n      headers: {\n        Server: \"gws\",\n        Expires: \"-1\",\n        \"Content-Type\": \"text/html; charset=ISO-8859-1\",\n        \"Set-Cookie\":\n          \"1P_JAR=2019-10-14-01; expires=Wed, 13-Nov-2019 01:55:49 GMT; path=/; domain=.google.com; SameSite=none\",\n        \"Cache-Control\": \"private, max-age=0\",\n        \"Content-Encoding\": \"gzip\",\n        Date: \"Mon, 14 Oct 2019 01:55:49 GMT\",\n        \"x-frame-options\": \"SAMEORIGIN\",\n        \"alt-svc\":\n          'quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000',\n        \"x-xss-protection\": \"0\",\n        \"Content-Length\": \"5144\",\n      },\n    },\n    duration: 170,\n  },\n  connectionId: 1,\n  messageId: 4,\n  date: new Date(\"2019-10-14T01:55:49.090Z\"),\n  deltaTime: 1171,\n  clientId: \"59ea1948-2c5c-fe2b-4b38-fc920d9d195e\",\n}\n\nexport const Closed = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenNoTab = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenNoCopyMethod = () => (\n  <ApiResponseCommand command={apiResponseCommand} isOpen setIsOpen={() => {}} />\n)\n\nexport const OpenResponseBody = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen\n    setIsOpen={() => {}}\n    initialTab={Tab.ResponseBody}\n  />\n)\n\nexport const OpenResponseHeaders = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen\n    setIsOpen={() => {}}\n    initialTab={Tab.ResponseHeaders}\n  />\n)\n\nexport const OpenRequestHeaders = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen\n    setIsOpen={() => {}}\n    initialTab={Tab.RequestHeaders}\n  />\n)\n\nexport const OpenRequestParams = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen\n    setIsOpen={() => {}}\n    initialTab={Tab.RequestParams}\n  />\n)\n\nexport const OpenRequestBody = () => (\n  <ApiResponseCommand\n    command={apiResponseCommand}\n    copyToClipboard={() => {}}\n    isOpen\n    setIsOpen={() => {}}\n    initialTab={Tab.RequestBody}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/ApiResponseCommand/index.tsx",
    "content": "import React, { useState, FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\nimport { MdCallReceived, MdCallMade, MdReceipt, MdContentCopy } from \"react-icons/md\"\nimport type { ApiResponsePayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport TimelineCommandTabButton from \"../../components/TimelineCommandTabButton\"\nimport ContentView from \"../../components/ContentView\"\nimport { apiToMarkdown } from \"../../utils/api-to-markdown\"\nimport { apiRequestToCurl } from \"../../utils/api-to-curl\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\n// TODO: Consider if this is a component that should be built into the TimelineCommand...\nconst NameContainer = styled.div`\n  color: ${(props) => props.theme.bold};\n  padding-bottom: 10px;\n  user-select: text;\n  cursor: text;\n`\n\nconst TabsContainer = styled.div`\n  display: flex;\n  padding-top: 10px;\n  padding-bottom: 10px;\n`\n\nexport enum Tab {\n  None = \"none\",\n  RequestHeaders = \"requestHeaders\",\n  RequestBody = \"requestBody\",\n  RequestParams = \"requestParams\",\n  ResponseHeaders = \"responseHeaders\",\n  ResponseBody = \"responseBody\",\n}\n\ninterface Props extends TimelineCommandProps<ApiResponsePayload> {\n  initialTab?: Tab\n}\n\nfunction createTabBuilder(onTab: Tab, setOnTab: (tab: Tab) => void) {\n  const tabBuilder = (currentTab: Tab, text: string) => {\n    return (\n      <TimelineCommandTabButton\n        isActive={onTab === currentTab}\n        text={text}\n        onClick={() => {\n          if (onTab === currentTab) {\n            setOnTab(Tab.None)\n          } else {\n            setOnTab(currentTab)\n          }\n        }}\n      />\n    )\n  }\n\n  return tabBuilder\n}\n\nfunction buildToolbar(commandPayload, copyToClipboard: (text: string) => void) {\n  if (!copyToClipboard) return []\n\n  const toolbarItems = []\n\n  toolbarItems.push({\n    icon: MdCallReceived,\n    onClick: () => {\n      const text = JSON.stringify(commandPayload.response.body, null, 2)\n      copyToClipboard(text)\n    },\n    tip: \"Copy JSON response to clipboard\",\n  })\n\n  if (commandPayload.request.data) {\n    // Is requestBody not empty\n    toolbarItems.push({\n      icon: MdCallMade,\n      onClick: () => {\n        try {\n          const text = JSON.stringify(JSON.parse(commandPayload.request.data), null, 2)\n          copyToClipboard(text)\n        } catch {\n          copyToClipboard(commandPayload.request.data)\n        }\n      },\n      tip: \"Copy JSON request to clipboard\",\n    })\n  }\n\n  toolbarItems.push(\n    {\n      icon: MdReceipt,\n      onClick: () => {\n        const text = apiToMarkdown(commandPayload)\n        copyToClipboard(text)\n      },\n      tip: \"Copy as markdown to clipboard\",\n    },\n    {\n      icon: MdContentCopy,\n      onClick: () => {\n        const text = apiRequestToCurl(commandPayload)\n        copyToClipboard(text)\n      },\n      tip: \"Copy JSON request as cURL\",\n    }\n  )\n\n  return toolbarItems\n}\n\nexport function formatOperationName(requestData: string): string {\n  try {\n    const parsedData = JSON.parse(requestData)\n    return parsedData?.operationName?.toString() || \"\"\n  } catch (_err) {\n    return \"\"\n  }\n}\n\nconst ApiResponseCommand: FunctionComponent<Props> = ({\n  command,\n  copyToClipboard,\n  isOpen,\n  setIsOpen,\n  initialTab,\n}) => {\n  const [onTab, setOnTab] = useState<Tab>(initialTab || null)\n\n  const { payload, date, deltaTime } = command\n  const { duration, request, response } = payload\n\n  const cleanedUrl = request.url.replace(/^http(s):\\/\\/[^/]+/i, \"\").replace(/\\?.*$/i, \"\")\n  const operationName = formatOperationName(request.data)\n\n  const preview = [(request.method || \"\").toUpperCase(), cleanedUrl, operationName]\n    .filter(Boolean)\n    .join(\" \")\n\n  const summary = {\n    \"Status Code\": response.status,\n    Method: request.method,\n    \"Duration (ms)\": duration,\n  }\n\n  const tabBuilder = createTabBuilder(onTab, setOnTab)\n\n  const toolbar = buildToolbar(payload, copyToClipboard)\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"API RESPONSE\"\n      preview={preview}\n      toolbar={toolbar}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n      responseStatusCode={payload.response?.status}\n    >\n      <NameContainer>{payload.request.url}</NameContainer>\n      <ContentView value={summary} />\n      <TabsContainer>\n        {tabBuilder(Tab.ResponseBody, \"Response\")}\n        {tabBuilder(Tab.ResponseHeaders, \"Response Headers\")}\n        {!!request.data && tabBuilder(Tab.RequestBody, \"Request\")}\n        {!!request.params && tabBuilder(Tab.RequestParams, \"Request Params\")}\n        {tabBuilder(Tab.RequestHeaders, \"Request Headers\")}\n      </TabsContainer>\n      {onTab === Tab.ResponseBody && <ContentView value={response.body} />}\n      {onTab === Tab.ResponseHeaders && <ContentView value={response.headers} />}\n      {onTab === Tab.RequestBody && <ContentView value={request.data} treeLevel={1} />}\n      {onTab === Tab.RequestParams && <ContentView value={request.params} />}\n      {onTab === Tab.RequestHeaders && <ContentView value={request.headers} />}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(ApiResponseCommand)\n\nexport { ApiResponseCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/AsyncStorageMutationCommand/AsyncStorageMutationCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { AsyncStorageMutationCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Async Storage Mutation Command\",\n}\n\nconst asyncStorageMutationCommand = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: { action: \"setItem\", data: { key: \"MyKey\" } },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <AsyncStorageMutationCommand\n    command={asyncStorageMutationCommand}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const Open = () => (\n  <AsyncStorageMutationCommand command={asyncStorageMutationCommand} isOpen setIsOpen={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/AsyncStorageMutationCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport type { AsyncStorageMutationPayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport { KeyContainer, RowContainer, ValueContainer } from \"../../utils/makeTable\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\nimport { makeTableWithContentView } from \"../../components/ContentView\"\n\ninterface Props extends TimelineCommandProps<AsyncStorageMutationPayload> {}\n\nconst AsyncStorageMutationCommand: FunctionComponent<Props> = ({ command, isOpen, setIsOpen }) => {\n  const { payload, date, deltaTime } = command\n\n  let preview = payload.action\n\n  if ([\"setItem\", \"removeItem\", \"mergeItem\"].indexOf(payload.action) > -1) {\n    preview = `${payload.action}: ${payload.data.key}`\n  }\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"ASYNC STORAGE\"\n      preview={preview}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      {payload.action && (\n        <RowContainer key={\"action\"}>\n          <KeyContainer>action</KeyContainer>\n          <ValueContainer $value={payload.action}>{payload.action}</ValueContainer>\n        </RowContainer>\n      )}\n      {makeTableWithContentView(payload.data)}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(AsyncStorageMutationCommand)\nexport { AsyncStorageMutationCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/BaseCommand.tsx",
    "content": "import React, { FunctionComponent, useState } from \"react\"\n\nexport interface TimelineCommandPropsEx<T> {\n  command: {\n    clientId?: string\n    connectionId: number\n    date: Date\n    deltaTime: number\n    important: boolean\n    messageId: number\n    payload: T\n    type: string\n  }\n  copyToClipboard?: (text: string) => void\n  readFile?: (path: string) => Promise<string>\n  sendCommand?: (type: string, payload: any, clientId?: string) => void\n  openDispatchDialog?: (action: string) => void\n  dispatchAction?: (action: any) => void\n}\n\nexport interface TimelineCommandProps<T> extends TimelineCommandPropsEx<T> {\n  isOpen: boolean\n  setIsOpen: (isOpen: boolean) => void\n}\n\nexport function buildTimelineCommand<T>(\n  Component: FunctionComponent<TimelineCommandProps<T>>,\n  startOpen = false\n) {\n  // eslint-disable-next-line react/display-name\n  return (props: TimelineCommandPropsEx<T>) => {\n    const [isOpen, setIsOpen] = useState(startOpen)\n\n    return <Component {...props} isOpen={isOpen} setIsOpen={setIsOpen} />\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/BenchmarkReportCommand/BenchmarkReportCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { BenchmarkReportCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Benchmark Report Command\",\n}\n\nconst benchmarkReportCommand = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: {\n    title: \"Benchmark Name\",\n    steps: [\n      { title: \"Step 1!\", delta: 0, time: 0 },\n      { title: \"Step 2!\", delta: 1009, time: 1009 },\n      { title: \"Step 3!\", delta: 513, time: 1522 },\n      { title: \"Step 4!\", delta: 501, time: 2023 },\n    ],\n  },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <BenchmarkReportCommand command={benchmarkReportCommand} isOpen={false} setIsOpen={() => {}} />\n)\n\nexport const Open = () => (\n  <BenchmarkReportCommand command={benchmarkReportCommand} isOpen setIsOpen={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/BenchmarkReportCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\nimport type { BenchmarkReportPayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\nconst NameContainer = styled.div`\n  color: ${(props) => props.theme.bold};\n  padding-bottom: 10px;\n`\n\nconst StepContainer = styled.div`\n  position: relative;\n  display: flex;\n  color: ${(props) => props.theme.foreground};\n  margin: 2px 0;\n  padding: 4px;\n`\nconst StepTitle = styled.div`\n  flex: 1;\n  word-break: break-all;\n  z-index: 2;\n`\nconst StepDuration = styled.div`\n  text-align: right;\n  width: 100px;\n  z-index: 2;\n`\ninterface StepGrapProps {\n  $startPercent: number\n  $endPercent: number\n}\nconst StepGraph = styled.div.attrs(() => ({}))<StepGrapProps>`\n  background-color: ${(props) => props.theme.backgroundLighter};\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: ${(props) => props.$startPercent}%;\n  right: ${(props) => props.$endPercent}%;\n`\n\ninterface Props extends TimelineCommandProps<BenchmarkReportPayload> {}\n\nconst BenchmarkReportCommand: FunctionComponent<Props> = ({ command, isOpen, setIsOpen }) => {\n  const { payload, date, deltaTime } = command\n\n  const totalDuration = payload.steps[payload.steps.length - 1].time\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"BENCHMARK\"\n      preview={`${payload.title} in ${(totalDuration / 1000).toFixed(3)}s`}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      <NameContainer>{payload.title}</NameContainer>\n      {payload.steps.map((step, idx) => {\n        if (idx === 0) return null\n\n        const startPercent = Number((((step.time - step.delta) / totalDuration) * 100).toFixed(0))\n        const endPercent = 100 - Number(((step.time / totalDuration) * 100).toFixed(0))\n\n        return (\n          <StepContainer key={idx}>\n            <StepGraph $startPercent={startPercent} $endPercent={endPercent} />\n            <StepTitle>{step.title}</StepTitle>\n            <StepDuration>{(step.delta / 1000).toFixed(3)}s</StepDuration>\n          </StepContainer>\n        )\n      })}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(BenchmarkReportCommand)\nexport { BenchmarkReportCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/ClientIntroCommand/ClientIntroCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { ClientIntroCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Client Intro Command\",\n}\n\nconst clientIntroCommand = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: { name: \"Test?\" },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <ClientIntroCommand command={clientIntroCommand} isOpen={false} setIsOpen={() => {}} />\n)\n\nexport const Open = () => (\n  <ClientIntroCommand command={clientIntroCommand} isOpen setIsOpen={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/ClientIntroCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport type { ClientIntroPayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport makeTable from \"../../utils/makeTable\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\ninterface Props extends TimelineCommandProps<ClientIntroPayload> {}\n\nconst ClientIntroCommand: FunctionComponent<Props> = ({ command, isOpen, setIsOpen }) => {\n  const { payload, date, deltaTime } = command\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"CONNECTION\"\n      preview={payload.name}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      {makeTable(payload)}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(ClientIntroCommand)\nexport { ClientIntroCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/DisplayCommand/DisplayCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { DisplayCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Display Command\",\n}\n\nconst displayCommandBasic = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: { preview: \"A Preview!\", name: \"Test?\", value: 10 },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <DisplayCommand\n    command={displayCommandBasic}\n    isOpen={false}\n    setIsOpen={() => {}}\n    copyToClipboard={() => {}}\n  />\n)\n\nexport const Open = () => (\n  <DisplayCommand\n    command={displayCommandBasic}\n    isOpen\n    setIsOpen={() => {}}\n    copyToClipboard={() => {}}\n  />\n)\n\nexport const NoCopyMethod = () => (\n  <DisplayCommand command={displayCommandBasic} isOpen setIsOpen={() => {}} />\n)\n\nexport const NoName = () => (\n  <DisplayCommand\n    command={{\n      ...displayCommandBasic,\n      payload: { ...displayCommandBasic.payload, name: undefined },\n    }}\n    isOpen\n    setIsOpen={() => {}}\n    copyToClipboard={() => {}}\n  />\n)\n\nexport const ObjectValue = () => (\n  <DisplayCommand\n    command={{\n      ...displayCommandBasic,\n      payload: { ...displayCommandBasic.payload, value: { test: true, aStr: \"Hello!\" } },\n    }}\n    isOpen\n    setIsOpen={() => {}}\n    copyToClipboard={() => {}}\n  />\n)\n\nexport const Image = () => (\n  <DisplayCommand\n    command={{\n      ...displayCommandBasic,\n      payload: {\n        ...displayCommandBasic.payload,\n        value: undefined,\n        image:\n          \"https://github.com/infinitered/reactotron/raw/master/docs/images/readme/Reactotron-128.png\",\n      },\n    }}\n    isOpen\n    setIsOpen={() => {}}\n    copyToClipboard={() => {}}\n  />\n)\n\nexport const Important = () => (\n  <DisplayCommand\n    command={{\n      ...displayCommandBasic,\n      payload: { ...displayCommandBasic.payload },\n      important: true,\n    }}\n    isOpen\n    setIsOpen={() => {}}\n    copyToClipboard={() => {}}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/DisplayCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\nimport { MdContentCopy } from \"react-icons/md\"\nimport type { DisplayPayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport ContentView from \"../../components/ContentView\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\nconst ImageContainer = styled.div``\n\nconst Image = styled.img`\n  max-width: 100%;\n  max-height: 100%;\n`\n\ninterface Props extends TimelineCommandProps<DisplayPayload> {}\n\nfunction buildToolbar(commandPayload, copyToClipboard: (text: string) => void) {\n  if (!copyToClipboard) return []\n\n  return [\n    {\n      icon: MdContentCopy,\n      onClick: () => {\n        const message = commandPayload.value\n\n        if (!message) return\n\n        if (typeof message === \"string\") {\n          copyToClipboard(message)\n        } else {\n          copyToClipboard(JSON.stringify(message, null, 2))\n        }\n      },\n      tip: \"Copy text to clipboard\",\n    },\n  ]\n}\n\nconst DisplayCommand: FunctionComponent<Props> = ({\n  command,\n  isOpen,\n  setIsOpen,\n  copyToClipboard,\n}) => {\n  const { payload, date, deltaTime, important } = command\n\n  let imageUrl\n  if (payload.image) {\n    if (typeof payload.image === \"string\") {\n      imageUrl = payload.image\n    } else {\n      imageUrl = payload.image.uri\n    }\n  }\n\n  const toolbar = buildToolbar(payload, copyToClipboard)\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title={payload.name || \"DISPLAY\"}\n      preview={payload.preview}\n      toolbar={toolbar}\n      isImportant={important}\n      isTagged\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      {payload.value && <ContentView value={payload.value} />}\n      {imageUrl && (\n        <ImageContainer>\n          <Image src={imageUrl} />\n        </ImageContainer>\n      )}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(DisplayCommand)\nexport { DisplayCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/ImageCommand/ImageCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { ImageCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Image Command\",\n}\n\nconst imageCommand = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: {\n    uri: \"https://github.com/infinitered/reactotron/raw/master/docs/images/readme/Reactotron-128.png\",\n    preview: \"Test\",\n    caption: \"Test\",\n    width: 10,\n    height: 10,\n    filename: \"Test\",\n  },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <ImageCommand command={imageCommand} isOpen={false} setIsOpen={() => {}} />\n)\n\nexport const Open = () => <ImageCommand command={imageCommand} isOpen setIsOpen={() => {}} />\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/ImageCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\nimport type { ImagePayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\nconst Image = styled.img`\n  max-width: 100%;\n  max-height: 100%;\n`\nconst Caption = styled.div`\n  padding: 10px 0;\n  font-size: larger;\n  color: ${(props) => props.theme.foreground};\n`\nconst Dimensions = styled.div`\n  color: ${(props) => props.theme.constant};\n`\nconst Filename = styled.div`\n  color: ${(props) => props.theme.highlight};\n`\n\ninterface Props extends TimelineCommandProps<ImagePayload> {}\n\nconst ImageCommand: FunctionComponent<Props> = ({ command, isOpen, setIsOpen }) => {\n  const { payload, date, deltaTime } = command\n\n  const dimensions = payload.width && payload.height && `${payload.width} x ${payload.height}`\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"IMAGE\"\n      preview={payload.preview}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      <Image src={payload.uri} />\n      {payload.caption && <Caption>{payload.caption}</Caption>}\n      {dimensions && <Dimensions>{dimensions}</Dimensions>}\n      {payload.filename && <Filename>{payload.filename}</Filename>}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(ImageCommand)\nexport { ImageCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/LogCommand/LogCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { LogCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/Log Command\",\n}\n\ndeclare const __dirname: string\n\nfunction buildCommand(payload: { level: any; message: any; stack?: any }, important?: boolean) {\n  return {\n    clientId: \"\",\n    connectionId: 0,\n    deltaTime: 0,\n    messageId: 0,\n    type: \"\",\n    payload,\n    important,\n    date: new Date(\"2019-01-01T10:12:23.435\"),\n  }\n}\n\nexport const ClosedWithMessage = () => (\n  <LogCommand\n    command={buildCommand({ level: \"error\", message: \"A basic example\" })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const ClosedWithObject = () => (\n  <LogCommand\n    command={buildCommand({\n      level: \"error\",\n      message: { num: 1, obj: { test: true }, what: \"is this?\", lets: \"go deeper\" },\n    })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const ClosedWithLargeObject = () => (\n  <LogCommand\n    command={buildCommand({\n      level: \"error\",\n      message: {\n        num: 1,\n        obj: { test: true },\n        what: \"is this?\",\n        lets: \"go deeper\",\n        temp: 1,\n        shouldShow: false,\n      },\n    })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenWithMessage = () => (\n  <LogCommand\n    command={buildCommand({ level: \"error\", message: \"A basic example\" })}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenImportant = () => (\n  <LogCommand\n    command={buildCommand({ level: \"error\", message: \"A basic example\" }, true)}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenWithObject = () => (\n  <LogCommand\n    command={buildCommand({\n      level: \"error\",\n      message: {\n        num: 1,\n        obj: { test: true },\n        what: \"is this?\",\n        lets: \"go deeper\",\n        temp: 1,\n        shouldShow: false,\n      },\n    })}\n    isOpen\n    setIsOpen={() => {}}\n    readFile={async () => \"\"}\n  />\n)\n\nexport const OpenWithStack = () => (\n  <LogCommand\n    command={buildCommand({\n      level: \"error\",\n      message: \"This would be an error\",\n      stack: [\n        {\n          fileName: `${__dirname}/testFile.js`,\n          functionName: \"testFunc()\",\n          lineNumber: 6,\n        },\n        {\n          fileName: \"test/testNested.js\",\n          functionName: \"testFunc()\",\n          lineNumber: 23,\n        },\n        {\n          fileName: \"/node_modules/testNested.js\",\n          functionName: \"testFunc()\",\n          lineNumber: 23,\n        },\n        {\n          fileName: \"webpack://testNested.js\",\n          functionName: \"testFunc()\",\n          lineNumber: 23,\n        },\n      ],\n    })}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenWithStackAndSource = () => (\n  <LogCommand\n    command={buildCommand({\n      level: \"error\",\n      message: \"This would be an error\",\n      stack: [\n        {\n          fileName: `${__dirname}/testFile.js`,\n          functionName: \"testFunc()\",\n          lineNumber: 6,\n        },\n        {\n          fileName: \"test/testNested.js\",\n          functionName: \"testFunc()\",\n          lineNumber: 23,\n        },\n        {\n          fileName: \"/node_modules/testNested.js\",\n          functionName: \"testFunc()\",\n          lineNumber: 23,\n        },\n        {\n          fileName: \"webpack://testNested.js\",\n          functionName: \"testFunc()\",\n          lineNumber: 23,\n        },\n      ],\n    })}\n    isOpen\n    setIsOpen={() => {}}\n    readFile={() =>\n      new Promise((resolve) =>\n        resolve(`\nmodule.exports = {\n  test: true,\n  so: \"many\",\n  lines: true,\n  of: \"code!\",\n  need: 9,\n  still: \"more\",\n  to: \"go\",\n}\n      `)\n      )\n    }\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/LogCommand/index.tsx",
    "content": "import React, { FunctionComponent, useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { MdContentCopy } from \"react-icons/md\"\nimport stringifyObject from \"stringify-object\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport ContentView from \"../../components/ContentView\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\nimport { isErrorStackFrameArray } from \"reactotron-core-contract\"\nimport type { ErrorStackFrame, LogPayload } from \"reactotron-core-contract\"\n\nconst SOURCE_LINES_UP = 3\nconst SOURCE_LINES_DOWN = 3\nconst SOURCE_FILE_PATH_COUNT = 3\n\nconst ErrorMessage = styled.div`\n  word-break: break-all;\n  margin-bottom: 30px;\n  padding: 20px 0 20px 10px;\n  cursor: text;\n  user-select: text;\n  color: ${(props) => props.theme.tag};\n  background-color: ${(props) => props.theme.backgroundDarker};\n  border-left: 1px solid ${(props) => props.theme.tag};\n  border-right: 1px solid ${(props) => props.theme.subtleLine};\n  border-top: 1px solid ${(props) => props.theme.subtleLine};\n  border-bottom: 1px solid ${(props) => props.theme.subtleLine};\n`\n\nconst SourceContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  padding-bottom: 10px;\n  color: ${(props) => props.theme.foreground};\n`\nconst SourceFilename = styled.div`\n  padding: 5px 0;\n  margin-bottom: 5px;\n  color: ${(props) => props.theme.tag};\n`\ninterface SourceLineContainerProps {\n  $isSelected: boolean\n}\nconst SourceLineContainer = styled.div.attrs(() => ({}))<SourceLineContainerProps>`\n  display: flex;\n  padding: 6px 0;\n  cursor: pointer;\n  color: ${(props) => (props.$isSelected ? props.theme.tag : props.theme.foregroundDark)};\n  background-color: ${(props) =>\n    props.$isSelected ? props.theme.backgroundDarker : \"transparent\"};\n  border-left: ${(props) => (props.$isSelected ? `1px solid ${props.theme.tag}` : undefined)};\n  border-right: ${(props) =>\n    props.$isSelected ? `1px solid ${props.theme.subtleLine}` : undefined};\n  border-top: ${(props) => (props.$isSelected ? `1px solid ${props.theme.subtleLine}` : undefined)};\n  border-bottom: ${(props) =>\n    props.$isSelected ? `1px solid ${props.theme.subtleLine}` : undefined};\n`\nconst SourceLineNumber = styled.div`\n  width: 60px;\n  padding-right: 15px;\n  color: ${(props) => props.theme.constant};\n  text-align: right;\n`\nconst SourceLineCode = styled.div`\n  flex: 1;\n  white-space: pre-wrap;\n`\n\nconst StackContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  margin-top: 10px;\n`\nconst StackTitle = styled.div`\n  padding-top: 5px;\n  padding-bottom: 5px;\n  margin-bottom: 5px;\n  color: ${(props) => props.theme.tag};\n  border-bottom: 1px solid ${(props) => props.theme.line};\n`\nconst StackTable = styled.div`\n  display: flex;\n  flex-direction: column;\n`\nconst StackTableHeadRow = styled.div`\n  display: flex;\n  padding: 6px;\n  color: ${(props) => props.theme.foregroundDark};\n`\nconst StackTableHeaderFunction = styled.div`\n  text-align: left;\n  flex: 1;\n`\nconst StackTableHeaderLineNumber = styled.div`\n  text-align: right;\n  width: 60px;\n`\n\ninterface StackFrameContainerProps {\n  $isNodeModule: boolean\n  $isSelected: boolean\n}\nconst StackFrameContainer = styled.div.attrs(() => ({}))<StackFrameContainerProps>`\n  display: flex;\n  padding: 6px;\n  word-break: break-all;\n  /* cursor: pointer; */\n  opacity: ${(props) => (props.$isNodeModule ? 0.4 : 1)};\n  cursor: pointer;\n\n  color: ${(props) => (props.$isSelected ? props.theme.tag : props.theme.foreground)};\n  background-color: ${(props) =>\n    props.$isSelected ? props.theme.backgroundDarker : \"transparent\"};\n  border-left: ${(props) => (props.$isSelected ? `1px solid ${props.theme.tag}` : undefined)};\n  border-right: ${(props) =>\n    props.$isSelected ? `1px solid ${props.theme.subtleLine}` : undefined};\n  border-top: ${(props) => (props.$isSelected ? `1px solid ${props.theme.subtleLine}` : undefined)};\n  border-bottom: ${(props) =>\n    props.$isSelected ? `1px solid ${props.theme.subtleLine}` : undefined};\n`\nconst StackFrameFunction = styled.div`\n  flex: 1;\n`\nconst StackFrameFile = styled.div`\n  flex: 1;\n  word-break: break-all;\n`\nconst StackFrameLineNumber = styled.div`\n  color: ${(props) => props.theme.constant};\n  word-break: break-all;\n  width: 50px;\n  text-align: right;\n`\n\ninterface Props extends TimelineCommandProps<LogPayload> {}\n\nfunction buildToolbar(commandPayload, copyToClipboard: (text: string) => void) {\n  if (!copyToClipboard) return []\n\n  return [\n    {\n      icon: MdContentCopy,\n      onClick: () => {\n        const { level, stack, message } = commandPayload\n\n        if (!message) return\n\n        if (level === \"error\" && stack) {\n          copyToClipboard(JSON.stringify({ message, stack }, null, 2))\n        } else if (typeof message === \"string\") {\n          copyToClipboard(message)\n        } else if (typeof message === \"object\") {\n          const text = JSON.stringify(message, null, 2)\n          copyToClipboard(text)\n        }\n      },\n      tip: \"Copy text to clipboard\",\n    },\n  ]\n}\n\nfunction getLevelName(level: string) {\n  switch (level) {\n    case \"debug\":\n      return \"DEBUG\"\n    case \"warn\":\n      return \"WARNING\"\n    case \"error\":\n      return \"ERROR\"\n    default:\n      return \"LOG\"\n  }\n}\n\n// function getPreview(message: string | object | boolean | number) {\nfunction getPreview(message: any) {\n  // Special case: typeof null === \"object\"\n  // Explanation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof#typeof_null\n  if (message === null) return \"null\"\n\n  switch (typeof message) {\n    case \"string\":\n      return message.slice(0, 500)\n    case \"object\": {\n      const firstValues = {}\n\n      Object.keys(message)\n        .slice(0, 5)\n        .forEach((key) => (firstValues[key] = message[key]))\n\n      const preview = stringifyObject(firstValues, {\n        transform: (obj, prop, originalResult) => {\n          if (obj[prop] === null) return \"null\"\n\n          switch (typeof obj[prop]) {\n            case \"object\":\n              return \"{...}\"\n            case \"string\":\n              return originalResult.slice(0, 80)\n            default:\n              return originalResult\n          }\n        },\n      })\n\n      return Object.keys(message).length > Object.keys(firstValues).length\n        ? preview.replace(/\\s\\}$/i, \", ...}\")\n        : preview\n    }\n    default:\n      return String(message)\n  }\n}\n\nfunction useFileSource(stack: LogPayload, readFile: (path: string) => Promise<string>) {\n  const [sourceCode, setSourceCode] = useState<{\n    lines: {\n      isSelected: boolean\n      lineNumber: number\n      source: string\n    }[]\n    lineNumber: number\n    fileName: string\n    partialFilename: string\n  }>(null)\n\n  useEffect(() => {\n    if (!readFile) return\n    if (!stack) return\n    if (stack.level !== \"error\") return\n    if (!stack.stack) return\n    if (!stack.stack) return\n    if (stack.stack.length === 0) return\n    if (typeof stack.stack[0] === \"string\") return\n\n    const { fileName, lineNumber } = stack.stack[0]\n    if (!fileName) return\n\n    const partialFilename = fileName\n      .split(\"/\")\n      .slice(-1 * SOURCE_FILE_PATH_COUNT)\n      .join(\"/\")\n\n    readFile(fileName)\n      .then((source) => {\n        if (!source || typeof source !== \"string\") return\n\n        try {\n          let lines\n          let lineCounter = 0\n\n          const contents = source.split(/\\n/g)\n\n          const sourceLines = contents.map((line) => {\n            lineCounter = lineCounter + 1\n\n            // Normalize indentation\n            const normalizedLine = line.replace(/\\t/g, \"  \")\n\n            return {\n              isSelected: lineCounter === lineNumber,\n              lineNumber: lineCounter,\n              source: normalizedLine,\n            }\n          })\n\n          const showWholeFile = contents.length < SOURCE_LINES_UP + SOURCE_LINES_DOWN\n\n          if (showWholeFile) {\n            lines = sourceLines\n          } else {\n            const low = Math.max(0, lineNumber - SOURCE_LINES_UP - 1)\n            const high = Math.min(contents.length - 1, lineNumber + SOURCE_LINES_DOWN)\n            lines = sourceLines.slice(low, high)\n          }\n\n          setSourceCode({\n            lines,\n            lineNumber,\n            fileName,\n            partialFilename,\n          })\n        } catch {}\n      })\n      .catch(() => {\n        // Do nothing?\n      })\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  return sourceCode\n}\n\nfunction renderStackFrame(\n  stackFrame: ErrorStackFrame,\n  idx: number,\n  openInEditor: (file: string, lineNumber: number) => void\n) {\n  let fileName = stackFrame?.fileName || \"\"\n  let functionName = stackFrame.functionName || \"\"\n  const lineNumber = stackFrame.lineNumber || 0\n\n  const fileNameLastSlash = fileName.lastIndexOf(\"/\") + 1\n  const justTheFile = fileNameLastSlash > -1 ? fileName.substr(fileNameLastSlash) : fileName\n\n  fileName = fileName && fileName.replace(\"webpack://\", \"\")\n  functionName = functionName && functionName.replace(\"webpack://\", \"\")\n\n  const isNodeModule = fileName.indexOf(\"/node_modules/\") > -1\n  const isSelected = idx === 0\n\n  return (\n    <StackFrameContainer\n      key={`stack-${idx}`}\n      $isNodeModule={isNodeModule}\n      $isSelected={isSelected}\n      onClick={() => {\n        openInEditor(fileName, lineNumber)\n      }}\n    >\n      <StackFrameFunction>{functionName || \"(anonymous function)\"}</StackFrameFunction>\n      <StackFrameFile>{justTheFile}</StackFrameFile>\n      <StackFrameLineNumber>{lineNumber}</StackFrameLineNumber>\n    </StackFrameContainer>\n  )\n}\n\nconst LogCommand: FunctionComponent<Props> = ({\n  command,\n  isOpen,\n  setIsOpen,\n  copyToClipboard,\n  readFile,\n  sendCommand,\n}) => {\n  const { payload, date, deltaTime, important } = command\n\n  const openInEditor = (file: string, lineNumber: number) => {\n    if (file === \"\") return\n\n    sendCommand(\"editor.open\", {\n      file,\n      lineNumber,\n    })\n  }\n\n  const source = useFileSource(payload, readFile)\n  const toolbar = buildToolbar(payload, copyToClipboard)\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title={getLevelName(payload.level)}\n      preview={getPreview(payload.message)}\n      toolbar={toolbar}\n      isImportant={important}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      {\"stack\" in payload === false && <ContentView value={payload.message} />}\n      {\"stack\" in payload && (\n        <>\n          <ErrorMessage>{payload.message}</ErrorMessage>\n          {source && (\n            <SourceContainer>\n              <SourceFilename>{source.partialFilename}</SourceFilename>\n              {source.lines.map((line) => {\n                return (\n                  <SourceLineContainer\n                    key={`${line.source}-${line.lineNumber}`}\n                    $isSelected={line.isSelected}\n                    onClick={() => {\n                      openInEditor(source.fileName, source.lineNumber)\n                    }}\n                  >\n                    <SourceLineNumber>{line.lineNumber}</SourceLineNumber>\n                    <SourceLineCode>{line.source}</SourceLineCode>\n                  </SourceLineContainer>\n                )\n              })}\n            </SourceContainer>\n          )}\n          <StackContainer>\n            <StackTitle>Stack Trace</StackTitle>\n            <StackTable>\n              <StackTableHeadRow>\n                <StackTableHeaderFunction>Function</StackTableHeaderFunction>\n                <StackTableHeaderFunction>File</StackTableHeaderFunction>\n                <StackTableHeaderLineNumber>Line</StackTableHeaderLineNumber>\n              </StackTableHeadRow>\n              {isErrorStackFrameArray(payload.stack)\n                ? payload.stack.map((stackFrame, idx) =>\n                    renderStackFrame(stackFrame, idx, openInEditor)\n                  )\n                : null}\n            </StackTable>\n          </StackContainer>\n        </>\n      )}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(LogCommand)\nexport { LogCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/SagaTaskCompleteCommand/SagaTaskCompleteCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport SagaTaskCompleteCommand from \"./Stateless\"\n\nexport default {\n  title: \"Timeline Commands/Saga Task Complete Command\",\n}\n\nconst sagaTaskCompleteCommand = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: {\n    children: [\n      {\n        depth: 0,\n        description: \"DUMMY1\",\n        duration: 1,\n        effectId: 5,\n        extra: { type: \"DUMMY1\" },\n        name: \"PUT\",\n        parentEffectId: 4,\n        result: { type: \"DUMMY1\" },\n        status: \"RESOLVED\",\n        winner: null,\n        loser: null,\n      },\n      {\n        depth: 1,\n        description: \"DUMMY1\",\n        duration: 1,\n        effectId: 5,\n        extra: { type: \"DUMMY1\" },\n        name: \"PUT\",\n        parentEffectId: 4,\n        result: { type: \"DUMMY1\" },\n        status: \"RESOLVED\",\n        winner: null,\n        loser: null,\n      },\n      {\n        depth: 1,\n        description: \"DUMMY1\",\n        duration: 1,\n        effectId: 5,\n        extra: { type: \"DUMMY1\" },\n        name: \"PUT\",\n        parentEffectId: 4,\n        result: { type: \"DUMMY1\" },\n        status: \"CANCELLED\",\n        winner: null,\n        loser: null,\n      },\n    ],\n    description: undefined,\n    duration: 2,\n    triggerType: \"DUMMY2\",\n  },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <SagaTaskCompleteCommand\n    command={sagaTaskCompleteCommand}\n    isOpen={false}\n    setIsOpen={() => {}}\n    isDetailsOpen={false}\n    setIsDetailsOpen={() => {}}\n  />\n)\n\nexport const Open = () => (\n  <SagaTaskCompleteCommand\n    command={sagaTaskCompleteCommand}\n    isOpen\n    setIsOpen={() => {}}\n    isDetailsOpen={false}\n    setIsDetailsOpen={() => {}}\n  />\n)\n\nexport const DetailsOpen = () => (\n  <SagaTaskCompleteCommand\n    command={sagaTaskCompleteCommand}\n    isOpen\n    setIsOpen={() => {}}\n    isDetailsOpen\n    setIsDetailsOpen={() => {}}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/SagaTaskCompleteCommand/Stateless.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\nimport {\n  MdList,\n  MdDone as IconStatusResolved,\n  MdEject as IconStatusCancelled,\n  MdError as IconStatusRejected,\n} from \"react-icons/md\"\nimport type { SagaTaskCompleteChild, SagaTaskCompletePayload } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport ContentView from \"../../components/ContentView\"\nimport { TimelineCommandProps } from \"../BaseCommand\"\n\nconst STATUS_MAP = {\n  RESOLVED: <IconStatusResolved size={18} />,\n  REJECTED: <IconStatusRejected />,\n  CANCELLED: <IconStatusCancelled />,\n}\n\nconst EffectTitle = styled.div`\n  display: flex;\n  color: ${(props) => props.theme.foreground};\n  border-bottom: 1px solid ${(props) => props.theme.highlight};\n  padding-bottom: 4px;\n  margin-bottom: 4px;\n`\nconst TriggerType = styled.div`\n  color: ${(props) => props.theme.tag};\n  padding-right: 20px;\n`\nconst Duration = styled.div`\n  text-align: right;\n  flex: 1;\n`\nconst DurationMs = styled.span`\n  color: ${(props) => props.theme.foregroundDark};\n`\n\nconst EffectContainer = styled.div`\n  display: flex;\n  color: ${(props) => props.theme.foreground};\n  padding-top: 4px;\n  margin-top: 2px;\n  border-bottom: 1px solid ${(props) => props.theme.subtleLine};\n`\nconst EffectNameContainer = styled.div`\n  width: 140px;\n  align-items: center;\n  margin-bottom: 4px;\n`\ninterface EffectNameProps {\n  $depth: number\n  $isLoser: boolean\n}\nconst EffectName = styled.span.attrs(() => ({}))<EffectNameProps>`\n  color: ${(props) => (props.$isLoser ? props.theme.foregroundDark : props.theme.constant)};\n  padding-left: ${(props) => props.$depth * 20}px;\n  text-decoration: ${(props) => (props.$isLoser ? \"line-through\" : \"\")};\n`\nconst EffectStatus = styled.span`\n  color: ${(props) => props.theme.tag};\n  padding-right: 4px;\n`\nconst EffectExtraContainer = styled.div`\n  flex: 1;\n`\nconst EffectDescription = styled.div`\n  padding-bottom: 4px;\n`\n\ninterface Props extends TimelineCommandProps<SagaTaskCompletePayload> {\n  isDetailsOpen: boolean\n  setIsDetailsOpen: (isDetailsOpen: boolean) => void\n}\n\nfunction buildToolbar(isDetailsOpen: boolean, setIsDetailsOpen: (isDetailsOpen: boolean) => void) {\n  const toolbarItems = []\n\n  toolbarItems.push({\n    icon: MdList,\n    onClick: () => {\n      setIsDetailsOpen(!isDetailsOpen)\n    },\n    tip: \"Toggle saga details\",\n  })\n\n  return toolbarItems\n}\n\nfunction renderEffect(effect: SagaTaskCompleteChild, isDetailsOpen: boolean) {\n  const { extra, loser, status, name, description, duration, depth, result } = effect\n\n  return (\n    <EffectContainer key={`effect-${effect.effectId}`}>\n      <EffectNameContainer>\n        <EffectName $depth={depth} $isLoser={loser || status === \"CANCELLED\"}>\n          <EffectStatus>{STATUS_MAP[status]}</EffectStatus>\n          {name}\n        </EffectName>\n      </EffectNameContainer>\n      <EffectExtraContainer>\n        {extra && (\n          <>\n            <EffectDescription>{description}</EffectDescription>\n            {isDetailsOpen && <ContentView value={{ in: extra, out: result }} treeLevel={0} />}\n          </>\n        )}\n      </EffectExtraContainer>\n      <Duration>\n        {duration}\n        <DurationMs>ms</DurationMs>\n      </Duration>\n    </EffectContainer>\n  )\n}\n\nconst SagaTaskCompleteCommand: FunctionComponent<Props> = ({\n  command,\n  isOpen,\n  setIsOpen,\n  isDetailsOpen,\n  setIsDetailsOpen,\n}) => {\n  const { payload, date, deltaTime } = command\n\n  const toolbar = buildToolbar(isDetailsOpen, setIsDetailsOpen)\n\n  const effectTitle = `${payload.children.length} Effect${payload.children.length === 1 ? \"\" : \"s\"}`\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"SAGA\"\n      preview={`${payload.triggerType} in ${payload.duration}ms`}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n      toolbar={toolbar}\n    >\n      <EffectTitle>\n        <TriggerType>{payload.description || payload.triggerType}</TriggerType>\n        {effectTitle}\n        <Duration>\n          {payload.duration}\n          <DurationMs>ms</DurationMs>\n        </Duration>\n      </EffectTitle>\n      {payload.children.map((effect) => renderEffect(effect, isDetailsOpen))}\n    </TimelineCommand>\n  )\n}\n\nexport default SagaTaskCompleteCommand\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/SagaTaskCompleteCommand/index.tsx",
    "content": "import React, { FunctionComponent, useState } from \"react\"\nimport type { SagaTaskCompletePayload } from \"reactotron-core-contract\"\n\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\nimport StatelessSagaTaskCompleteCommand from \"./Stateless\"\n\ninterface Props extends TimelineCommandProps<SagaTaskCompletePayload> {}\n\nconst SagaTaskCompleteCommand: FunctionComponent<Props> = (props) => {\n  const [isDetailsOpen, setIsDetailsOpen] = useState(false)\n\n  return (\n    <StatelessSagaTaskCompleteCommand\n      {...props}\n      isDetailsOpen={isDetailsOpen}\n      setIsDetailsOpen={setIsDetailsOpen}\n    />\n  )\n}\n\nexport default buildTimelineCommand(SagaTaskCompleteCommand)\nexport { SagaTaskCompleteCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateActionCompleteCommand/StateActionCompleteCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { StateActionCompleteCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/State Action Complete Command\",\n}\n\nconst stateActionCompletedCommand = {\n  clientId: \"\",\n  connectionId: 0,\n  deltaTime: 0,\n  important: false,\n  messageId: 0,\n  type: \"\",\n  payload: { name: \"Test?\", action: {} },\n  date: new Date(\"2019-01-01T10:12:23.435\"),\n}\n\nexport const Closed = () => (\n  <StateActionCompleteCommand\n    command={stateActionCompletedCommand}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const Open = () => (\n  <StateActionCompleteCommand command={stateActionCompletedCommand} isOpen setIsOpen={() => {}} />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateActionCompleteCommand/index.tsx",
    "content": "import React, { FunctionComponent, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { MdRepeat, MdCode } from \"react-icons/md\"\nimport stringifyObject from \"stringify-object\"\nimport type { Difference } from \"reactotron-core-contract\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport ContentView from \"../../components/ContentView\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\nimport TreeViewDiff from \"../../components/TreeViewDiff\"\n\nconst NameContainer = styled.div`\n  color: ${(props) => props.theme.bold};\n  padding-bottom: 10px;\n`\nconst TabContainer = styled.div`\n  display: flex;\n  padding-top: 8px;\n  padding-bottom: 8px;\n`\nconst TabItem = styled.div<{ $active: boolean }>`\n  color: ${({ $active, theme }) => ($active ? theme.bold : theme.foregroundDark)};\n  cursor: pointer;\n  padding-right: 8px;\n  padding-left: 8px;\n  border-right: 1px solid ${(props) => props.theme.chromeLine};\n  :last-child {\n    border-right: none;\n  }\n  :first-child {\n    padding-left: 0px;\n  }\n`\nconst Tab = styled.div`\n  display: flex;\n  padding: 10px;\n\n  border-bottom: 1px solid ${({ theme }) => theme.chromeLine};\n`\n\ninterface StateActionCompletePayload {\n  name: string\n  action: any\n  diff?: Difference[]\n}\n\ninterface Props extends TimelineCommandProps<StateActionCompletePayload> {}\n\nconst StateActionCompleteCommand: FunctionComponent<Props> = ({\n  command,\n  isOpen,\n  setIsOpen,\n  dispatchAction,\n  openDispatchDialog,\n}) => {\n  const { payload, date, deltaTime } = command\n  const [tabActive, setTabActive] = useState<\"preview\" | \"diff\">(\"preview\")\n\n  const toolbar = []\n\n  if (dispatchAction) {\n    toolbar.push({\n      icon: MdRepeat,\n      onClick: () => {\n        dispatchAction(payload.action)\n      },\n      tip: \"Repeat this action.\",\n    })\n  }\n\n  if (openDispatchDialog) {\n    toolbar.push({\n      icon: MdCode,\n      onClick: () => {\n        openDispatchDialog(\n          stringifyObject(payload.action, {\n            indent: \"  \",\n            singleQuotes: true,\n          })\n        )\n      },\n      tip: \"Edit and dispatch this action.\",\n    })\n  }\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"ACTION\"\n      preview={payload.name}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n      toolbar={toolbar}\n    >\n      <NameContainer>{payload.name}</NameContainer>\n      {payload.diff != null && (\n        <TabContainer>\n          <Tab>\n            <TabItem $active={tabActive === \"preview\"} onClick={() => setTabActive(\"preview\")}>\n              Preview\n            </TabItem>\n            <TabItem $active={tabActive === \"diff\"} onClick={() => setTabActive(\"diff\")}>\n              Diff\n            </TabItem>\n          </Tab>\n        </TabContainer>\n      )}\n      {tabActive === \"preview\" && <ContentView value={payload.action} />}\n      {tabActive === \"diff\" && <TreeViewDiff value={payload.diff} />}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(StateActionCompleteCommand)\nexport { StateActionCompleteCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateKeysResponseCommand/StateKeysResponseCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { StateKeysResponseCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/State Keys Response Command\",\n}\n\nfunction buildCommand(keys: string[], path: string, valid = true) {\n  return {\n    clientId: \"\",\n    connectionId: 0,\n    deltaTime: 0,\n    important: false,\n    messageId: 0,\n    type: \"\",\n    payload: {\n      keys,\n      path,\n      valid,\n    },\n    date: new Date(\"2019-01-01T10:12:23.435\"),\n  }\n}\n\nexport const Closed = () => (\n  <StateKeysResponseCommand\n    command={buildCommand([\"dummyReducer\"], null)}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const Null = () => (\n  <StateKeysResponseCommand command={buildCommand(null, null)} isOpen setIsOpen={() => {}} />\n)\n\nexport const Empty = () => (\n  <StateKeysResponseCommand command={buildCommand([], null)} isOpen setIsOpen={() => {}} />\n)\n\nexport const Root = () => (\n  <StateKeysResponseCommand\n    command={buildCommand([\"dummyReducer\", \"anotherReducer\"], null)}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const FirstLevel = () => (\n  <StateKeysResponseCommand\n    command={buildCommand([\"aValue\", \"anotherValue\"], \"dummyReducer\")}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateKeysResponseCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\nconst PathLabel = styled.div`\n  padding-bottom: 10px;\n  color: ${(props) => props.theme.bold};\n`\n\nconst KeysContainer = styled.div`\n  display: flex;\n  flex-wrap: wrap;\n  color: ${(props) => props.theme.foreground};\n`\nconst Key = styled.div`\n  background-color: ${(props) => props.theme.backgroundLighter};\n  margin: 4px;\n  padding: 4px 8px;\n  border-radius: 4px;\n  cursor: pointer;\n`\n\ninterface StateKeysResponsePayload {\n  path?: string\n  keys: string[]\n  valid: boolean\n}\n\ninterface Props extends TimelineCommandProps<StateKeysResponsePayload> {}\n\nfunction buildClickHandler(\n  key: string,\n  currentPath: string,\n  sendCommand: (type: string, payload: any, clientId?: string) => void\n) {\n  return () => {\n    sendCommand(\"state.values.request\", { path: `${currentPath ? `${currentPath}.` : \"\"}${key}` })\n  }\n}\n\nfunction renderKeys(\n  keys: string[],\n  currentPath: string,\n  sendCommand: (type: string, payload: any, clientId?: string) => void\n) {\n  if (!keys) return <KeysContainer>¯\\_(ツ)_/¯</KeysContainer>\n  if (keys.length === 0) return <KeysContainer>Sorry, no keys in there.</KeysContainer>\n\n  return (\n    <KeysContainer>\n      {keys.map((key) => {\n        return (\n          <Key key={key} onClick={buildClickHandler(key, currentPath, sendCommand)}>\n            {key}\n          </Key>\n        )\n      })}\n    </KeysContainer>\n  )\n}\n\nconst StateKeysResponseCommand: FunctionComponent<Props> = ({\n  command,\n  isOpen,\n  setIsOpen,\n  sendCommand,\n}) => {\n  const { payload, date, deltaTime } = command\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"STATE KEYS\"\n      preview=\"\"\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      <PathLabel>{payload.path || \"(root)\"}</PathLabel>\n      {renderKeys(payload.keys, payload.path, sendCommand)}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(StateKeysResponseCommand, true)\nexport { StateKeysResponseCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateValuesChangeCommand/StateValuesChangeCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { StateValuesChangeCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/State Values Change Command\",\n}\n\nfunction buildCommand({\n  added = [],\n  changed = [],\n  changes = [],\n  removed = [],\n}: {\n  added?: any\n  changed?: any\n  changes?: any\n  removed?: any\n}) {\n  return {\n    clientId: \"\",\n    connectionId: 0,\n    deltaTime: 0,\n    important: false,\n    messageId: 0,\n    type: \"\",\n    payload: {\n      added,\n      changed,\n      changes,\n      removed,\n    },\n    date: new Date(\"2019-01-01T10:12:23.435\"),\n  }\n}\n\nexport const ClosedAdded = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({ added: { dummyReducer: { counter: 0 } } })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const ClosedChanged = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({ changed: { dummyReducer: { counter: 0 } } })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const ClosedRemoved = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({ removed: { dummyReducer: { counter: 0 } } })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const ClosedAll = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({\n      added: { dummyReducer: { counter: 0 } },\n      changed: { dummyReducer: { counter: 0 } },\n      removed: { dummyReducer: { counter: 0 } },\n    })}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenAdded = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({ added: { dummyReducer: { counter: 0 } } })}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenChanged = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({ changed: { dummyReducer: { counter: 0 } } })}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenRemoved = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({ removed: { dummyReducer: { counter: 0 } } })}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const OpenAll = () => (\n  <StateValuesChangeCommand\n    command={buildCommand({\n      added: { dummyReducer: { counter: 0 } },\n      changed: { dummyReducer: { counter: 0 } },\n      removed: { dummyReducer: { counter: 0 } },\n    })}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateValuesChangeCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport ContentView from \"../../components/ContentView\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\ninterface StateValuesChangePayload {\n  added: any\n  changed: any\n  changes: any[]\n  removed: any\n}\n\ninterface Props extends TimelineCommandProps<StateValuesChangePayload> {}\n\nconst StateValuesChangeCommand: FunctionComponent<Props> = ({ command, isOpen, setIsOpen }) => {\n  const { payload, date, deltaTime } = command\n\n  const hasChanged = !!payload.changed && !Array.isArray(payload.changed)\n  const hasAdded = !!payload.added && !Array.isArray(payload.added)\n  const hasRemoved = !!payload.removed && !Array.isArray(payload.removed)\n\n  const changes = []\n\n  if (hasChanged) {\n    changes.push(`${Object.keys(payload.changed).length} changed`)\n  }\n\n  if (hasAdded) {\n    changes.push(`${Object.keys(payload.added).length} added`)\n  }\n\n  if (hasRemoved) {\n    changes.push(`${Object.keys(payload.removed).length} removed`)\n  }\n\n  const preview = changes.join(\" \")\n\n  // TODO: What should we do about this null junk?\n  // TODO: Consider only showing the labels if more then 1 type is there?\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"SUBSCRIPTIONS\"\n      preview={preview}\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      {hasChanged && <ContentView value={{ changed: payload.changed }} />}\n      {hasAdded && <ContentView value={{ \"+ added\": payload.added }} />}\n      {hasRemoved && <ContentView value={{ \"- removed\": payload.removed }} />}\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(StateValuesChangeCommand, true)\nexport { StateValuesChangeCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateValuesResponseCommand/StateValuesResponseCommand.story.tsx",
    "content": "/* eslint-disable @typescript-eslint/no-empty-function */\nimport React from \"react\"\n\nimport { StateValuesResponseCommand } from \"./index\"\n\nexport default {\n  title: \"Timeline Commands/State Values Response Command\",\n}\n\nfunction buildCommand(value: any, path: string, valid = true) {\n  return {\n    clientId: \"\",\n    connectionId: 0,\n    deltaTime: 0,\n    important: false,\n    messageId: 0,\n    type: \"\",\n    payload: {\n      value,\n      path,\n      valid,\n    },\n    date: new Date(\"2019-01-01T10:12:23.435\"),\n  }\n}\n\nexport const Closed = () => (\n  <StateValuesResponseCommand\n    command={buildCommand({ counter: 0 }, \"dummyReducer\")}\n    isOpen={false}\n    setIsOpen={() => {}}\n  />\n)\n\nexport const SimpleValue = () => (\n  <StateValuesResponseCommand\n    command={buildCommand(0, \"dummyReducer\")}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n\nexport const Obj = () => (\n  <StateValuesResponseCommand\n    command={buildCommand({ counter: 0 }, \"dummyReducer\")}\n    isOpen\n    setIsOpen={() => {}}\n  />\n)\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/StateValuesResponseCommand/index.tsx",
    "content": "import React, { FunctionComponent } from \"react\"\nimport styled from \"styled-components\"\n\nimport TimelineCommand from \"../../components/TimelineCommand\"\nimport ContentView from \"../../components/ContentView\"\nimport { TimelineCommandProps, buildTimelineCommand } from \"../BaseCommand\"\n\nconst PathLabel = styled.div`\n  padding-bottom: 10px;\n  color: ${(props) => props.theme.bold};\n`\n\ninterface StateValuesResponsePayload {\n  path?: string\n  value: any\n  valid: boolean\n}\n\ninterface Props extends TimelineCommandProps<StateValuesResponsePayload> {}\n\nconst StateValuesResponseCommand: FunctionComponent<Props> = ({ command, isOpen, setIsOpen }) => {\n  const { payload, date, deltaTime } = command\n\n  return (\n    <TimelineCommand\n      date={date}\n      deltaTime={deltaTime}\n      title=\"STATE\"\n      preview=\"\"\n      isOpen={isOpen}\n      setIsOpen={setIsOpen}\n    >\n      <PathLabel>{payload.path || \"(root)\"}</PathLabel>\n      <ContentView value={payload.value} />\n    </TimelineCommand>\n  )\n}\n\nexport default buildTimelineCommand(StateValuesResponseCommand, true)\nexport { StateValuesResponseCommand }\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/timelineCommands/index.ts",
    "content": "import { FunctionComponent } from \"react\"\n\nimport { CommandType } from \"reactotron-core-contract\"\nimport type { CommandTypeKey } from \"reactotron-core-contract\"\n\nimport ApiResponseCommand from \"./ApiResponseCommand\"\nimport AsyncStorageMutationCommand from \"./AsyncStorageMutationCommand\"\nimport BenchmarkReportCommand from \"./BenchmarkReportCommand\"\nimport ClientIntroCommand from \"./ClientIntroCommand\"\nimport DisplayCommand from \"./DisplayCommand\"\nimport ImageCommand from \"./ImageCommand\"\nimport LogCommand from \"./LogCommand\"\nimport SagaTaskCompleteCommand from \"./SagaTaskCompleteCommand\"\nimport StateActionCompleteCommand from \"./StateActionCompleteCommand\"\nimport StateKeysResponseCommand from \"./StateKeysResponseCommand\"\nimport StateValuesChangeCommand from \"./StateValuesChangeCommand\"\nimport StateValuesResponseCommand from \"./StateValuesResponseCommand\"\nimport { TimelineCommandPropsEx } from \"./BaseCommand\"\n\nfunction timelineCommandResolver(\n  type: CommandTypeKey\n): FunctionComponent<TimelineCommandPropsEx<any>> {\n  switch (type) {\n    case CommandType.ApiResponse:\n      return ApiResponseCommand\n    case CommandType.AsyncStorageMutation:\n      return AsyncStorageMutationCommand\n    case CommandType.Benchmark:\n      return BenchmarkReportCommand\n    case CommandType.ClientIntro:\n      return ClientIntroCommand\n    case CommandType.Display:\n      return DisplayCommand\n    case CommandType.Image:\n      return ImageCommand\n    case CommandType.Log:\n      return LogCommand\n    case CommandType.SagaTaskComplete:\n      return SagaTaskCompleteCommand\n    case CommandType.StateActionComplete:\n      return StateActionCompleteCommand\n    case CommandType.StateKeysResponse:\n      return StateKeysResponseCommand\n    case CommandType.StateValuesChange:\n      return StateValuesChangeCommand\n    case CommandType.StateValuesResponse:\n      return StateValuesResponseCommand\n    default:\n      return null\n  }\n}\n\nexport default timelineCommandResolver\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/api-to-curl.ts",
    "content": "export function apiRequestToCurl (payload: any = {}) {\n  const output = []\n  const request = payload.request || {}\n  const { method, headers, data, url } = request\n\n  if (method === \"GET\") {\n    output.push(\"curl\")\n  } else {\n    output.push(`curl -X ${method} `)\n  }\n\n  for (const header in headers) {\n    output.push(` -H \"${header}:${headers[header]}\"`)\n  }\n\n  output.push(` ${url}`)\n\n  if (data) {\n    let parsedData = data\n    try {\n      if (typeof data === \"string\") {\n        parsedData = JSON.parse(parsedData)\n      }\n      parsedData = JSON.stringify(parsedData)\n    } catch (e) {}\n    output.push(` -d '${parsedData}'`)\n  }\n\n  return output.join(\"\")\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/api-to-markdown.ts",
    "content": "import { rightPad } from \"./pad\"\n\nfunction tableToMarkdown(table) {\n  const lines = []\n\n  // find the lengths\n  let keyLength = 0\n  let valueLength = 0\n  for (const key in table) {\n    keyLength = Math.max(keyLength, key.length)\n    valueLength = Math.max(valueLength, (table[key] || \"\").length)\n  }\n\n  // helpers for drawing fixed widths\n  const keyPad = (value = \"\") => rightPad(value, keyLength)\n  const valuePad = (value = \"\") => rightPad(value, valueLength)\n  const add = (key = \"\", value = \"\") =>\n    lines.push(`${keyPad(key || \"\")} | ${valuePad(value || \"\")}`)\n\n  // header\n  add(\"key\", \"value\")\n\n  // divider\n  lines.push(`${\"-\".repeat(keyLength)} | ${\"-\".repeat(valueLength)}`)\n\n  // each line\n  for (const key in table) {\n    add(key, table[key])\n  }\n\n  return lines.join(\"\\n\")\n}\n\nexport function apiToMarkdown(payload: any = {}) {\n  const lines = []\n  const request = payload.request || {}\n\n  lines.push(\"# Request\")\n\n  lines.push(\"\")\n  lines.push(\"### Endpoint\")\n  lines.push(\"\")\n  lines.push(`\\`${request.method || \"\"}\\` ${request.url || \"\"}`.trim())\n\n  if (typeof payload.duration === \"number\") {\n    lines.push(\"\")\n    lines.push(\"### Duration\")\n    lines.push(\"\")\n    lines.push(`\\`${payload.duration.toFixed(0)}\\` ms`)\n  }\n\n  // request data\n  if (request.data) {\n    let data = request.data\n    // attempt to jsonify the request data\n    try {\n      data = JSON.stringify(JSON.parse(data), null, 2)\n    } catch (e) {}\n\n    if (data) {\n      lines.push(\"\")\n      lines.push(\"### Data Sent\")\n      lines.push(\"\")\n      lines.push(\"```json\")\n      lines.push(data)\n      lines.push(\"```\")\n    }\n  }\n\n  // request headers\n  if (request.headers && Object.keys(request.headers).length > 0) {\n    lines.push(\"\")\n    lines.push(\"### Headers\")\n    lines.push(\"\")\n    lines.push(tableToMarkdown(request.headers))\n  }\n\n  if (payload.response) {\n    const response = payload.response || {}\n\n    lines.push(\"\")\n    lines.push(\"# Response\")\n\n    if (response.status) {\n      lines.push(\"\")\n      lines.push(\"### Status Code\")\n      lines.push(\"\")\n      lines.push(`\\`${response.status}\\``)\n    }\n\n    // response data\n    if (response.body) {\n      let body = response.body\n      // attempt to jsonify the request data\n      try {\n        if (typeof body === \"string\") {\n          body = JSON.parse(body)\n        }\n        body = JSON.stringify(body, null, 2)\n      } catch (e) {}\n\n      if (body) {\n        lines.push(\"\")\n        lines.push(\"### Data Received\")\n        lines.push(\"\")\n        lines.push(\"```json\")\n        lines.push(body)\n        lines.push(\"```\")\n      }\n    }\n\n    // response headers\n    if (response.headers && Object.keys(response.headers).length > 0) {\n      lines.push(\"\")\n      lines.push(\"### Headers\")\n      lines.push(\"\")\n      lines.push(tableToMarkdown(response.headers))\n    }\n  }\n\n  lines.push(\"\")\n  return lines.join(\"\\n\")\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/escape-regex.test.ts",
    "content": "import { escapeRegex } from \"./escape-regex\"\n\nit(\"should return same string when no special characters\", () => {\n  expect(escapeRegex(\"hello\")).toBe(\"hello\")\n})\nit(\"should escape dot character\", () => {\n  expect(escapeRegex(\"hello.world\")).toBe(\"hello\\\\.world\")\n})\nit(\"should escape multiple special characters\", () => {\n  expect(escapeRegex(\"(test)*\")).toBe(\"\\\\(test\\\\)\\\\*\")\n})\nit(\"should escape all regex special characters\", () => {\n  const specialChars = \".*+?^${}()|[]\\\\\"\n  const expected = \"\\\\.\\\\*\\\\+\\\\?\\\\^\\\\$\\\\{\\\\}\\\\(\\\\)\\\\|\\\\[\\\\]\\\\\\\\\"\n  expect(escapeRegex(specialChars)).toBe(expected)\n})\nit(\"should handle empty string\", () => {\n  expect(escapeRegex(\"\")).toBe(\"\")\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/escape-regex.ts",
    "content": "/**\n * Escapes special characters in a string to be used in a regular expression.\n *\n * @param str The string in which to escape special regex characters.\n * @returns A new string with special regex characters escaped.\n * @example\n * escapeRegex(\"foo.bar\") // => \"foo\\.bar\"\n */\nexport function escapeRegex(str: string) {\n  return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/filterCommands/filterCommands.test.ts",
    "content": "import filterCommands, { filterSearch, filterHidden } from \"./index\"\nimport { CommandType } from \"reactotron-core-contract\"\n\nconst TEST_COMMANDS = [\n  { type: \"SEARCHTYPE\" },\n  { type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } },\n  { type: \"ADUMMYOBJ\", payload: { preview: \"SEARCHPREVIEW\" } },\n  { type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } },\n  { type: \"ADUMMYOBJ\", payload: { path: \"SEARCHPATH\" } },\n  { type: \"ADUMMYOBJ\", payload: { triggerType: \"SEARCHTRIGGERTYPE\" } },\n  { type: \"ADUMMYOBJ\", payload: { description: \"SEARCHDESCRIPTION\" } },\n  { type: \"ADUMMYOBJ\", payload: { request: { url: \"SEARCHURL\" } } },\n  { type: \"REGEX\", payload: { message: \"[1234] Log text\" } },\n  { type: \"REGEX\", payload: { message: \"123 Log text\" } },\n  { type: \"REGEX\", payload: { message: \"Log text (123)\" } },\n  { type: \"log\", payload: { debug: \"LOGDEBUG\" } },\n  { type: \"client.intro\", payload: { connection: \"SEARCHCONNECTION\" } },\n  {\n    type: \"ADUMMYOBJ\",\n    payload: {\n      request: {\n        data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n      },\n    },\n  },\n]\n\nconst TESTS = [\n  { name: \"type\", search: \"SEARCHTYPE\", result: [{ type: \"SEARCHTYPE\" }] },\n  {\n    name: \"payload.message\",\n    search: \"SEARCHMESSAGE\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } }],\n  },\n  {\n    name: \"payload.preview\",\n    search: \"SEARCHPREVIEW\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { preview: \"SEARCHPREVIEW\" } }],\n  },\n  {\n    name: \"payload.name\",\n    search: \"SEARCHNAME\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } }],\n  },\n  {\n    name: \"payload.path\",\n    search: \"SEARCHPATH\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { path: \"SEARCHPATH\" } }],\n  },\n  {\n    name: \"payload.triggerType\",\n    search: \"SEARCHTRIGGERTYPE\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { triggerType: \"SEARCHTRIGGERTYPE\" } }],\n  },\n  {\n    name: \"payload.description\",\n    search: \"SEARCHDESCRIPTION\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { description: \"SEARCHDESCRIPTION\" } }],\n  },\n  {\n    name: \"payload.request.url\",\n    search: \"SEARCHURL\",\n    result: [{ type: \"ADUMMYOBJ\", payload: { request: { url: \"SEARCHURL\" } } }],\n  },\n  {\n    name: \"payload.request.data\",\n    search: \"SEARCHDATA\",\n    result: [\n      {\n        type: \"ADUMMYOBJ\",\n        payload: {\n          request: {\n            data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n          },\n        },\n      },\n    ],\n  },\n  {\n    name: \"log => debug\",\n    search: \"debug\",\n    result: [{ type: \"log\", payload: { debug: \"LOGDEBUG\" } }],\n  },\n  {\n    name: \"log => warning\",\n    search: \"warning\",\n    result: [{ type: \"log\", payload: { debug: \"LOGDEBUG\" } }],\n  },\n  {\n    name: \"log => error\",\n    search: \"error\",\n    result: [{ type: \"log\", payload: { debug: \"LOGDEBUG\" } }],\n  },\n  {\n    name: \"clientIntro => connection\",\n    search: \"connection\",\n    result: [{ type: \"client.intro\", payload: { connection: \"SEARCHCONNECTION\" } }],\n  },\n  {\n    name: \"multiple results\",\n    search: \"ADUMMYOBJ\",\n    result: [\n      { type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } },\n      { type: \"ADUMMYOBJ\", payload: { preview: \"SEARCHPREVIEW\" } },\n      { type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } },\n      { type: \"ADUMMYOBJ\", payload: { path: \"SEARCHPATH\" } },\n      { type: \"ADUMMYOBJ\", payload: { triggerType: \"SEARCHTRIGGERTYPE\" } },\n      { type: \"ADUMMYOBJ\", payload: { description: \"SEARCHDESCRIPTION\" } },\n      { type: \"ADUMMYOBJ\", payload: { request: { url: \"SEARCHURL\" } } },\n      {\n        type: \"ADUMMYOBJ\",\n        payload: {\n          request: {\n            data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n          },\n        },\n      },\n    ],\n  },\n  {\n    name: \"deep search results\",\n    search: \"SEARCH\",\n    result: [\n      { type: \"SEARCHTYPE\" },\n      { type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } },\n      { type: \"ADUMMYOBJ\", payload: { preview: \"SEARCHPREVIEW\" } },\n      { type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } },\n      { type: \"ADUMMYOBJ\", payload: { path: \"SEARCHPATH\" } },\n      { type: \"ADUMMYOBJ\", payload: { triggerType: \"SEARCHTRIGGERTYPE\" } },\n      { type: \"ADUMMYOBJ\", payload: { description: \"SEARCHDESCRIPTION\" } },\n      { type: \"ADUMMYOBJ\", payload: { request: { url: \"SEARCHURL\" } } },\n      {\n        type: \"ADUMMYOBJ\",\n        payload: {\n          request: {\n            data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n          },\n        },\n      },\n    ],\n  },\n  {\n    name: \"deep search results - even deeper\",\n    search: \"ME\",\n    result: [\n      { type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } },\n      { type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } },\n      {\n        type: \"ADUMMYOBJ\",\n        payload: {\n          request: {\n            data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n          },\n        },\n      },\n    ],\n  },\n  {\n    name: \"deep search results - case insensitive\",\n    search: \"me\",\n    result: [\n      { type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } },\n      { type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } },\n      {\n        type: \"ADUMMYOBJ\",\n        payload: {\n          request: {\n            data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n          },\n        },\n      },\n    ],\n  },\n  {\n    name: \"deep search results - type case insensitive\",\n    search: \"myobj\",\n    result: [\n      { type: \"ADUMMYOBJ\", payload: { message: \"SEARCHMESSAGE\" } },\n      { type: \"ADUMMYOBJ\", payload: { preview: \"SEARCHPREVIEW\" } },\n      { type: \"ADUMMYOBJ\", payload: { name: \"SEARCHNAME\" } },\n      { type: \"ADUMMYOBJ\", payload: { path: \"SEARCHPATH\" } },\n      { type: \"ADUMMYOBJ\", payload: { triggerType: \"SEARCHTRIGGERTYPE\" } },\n      { type: \"ADUMMYOBJ\", payload: { description: \"SEARCHDESCRIPTION\" } },\n      { type: \"ADUMMYOBJ\", payload: { request: { url: \"SEARCHURL\" } } },\n      {\n        type: \"ADUMMYOBJ\",\n        payload: {\n          request: {\n            data: '{\"operationName\":\"SEARCHDATA\",\"variables\":{\"testing\":{\"nested\":\"thing\"}},\"query\":\"query LaunchList {\\\\n  launches {\\\\n    id\\\\n }\\\\n}\\\\n\"}',\n          },\n        },\n      },\n    ],\n  },\n  {\n    name: \"search that results in a invalid regex\",\n    search: \"[123\",\n    result: [{ type: \"REGEX\", payload: { message: \"[1234] Log text\" } }],\n  },\n  {\n    name: \"another search that results in a invalid regex\",\n    search: \"123)\",\n    result: [{ type: \"REGEX\", payload: { message: \"Log text (123)\" } }],\n  },\n]\n\ndescribe(\"utils/filterCommands\", () => {\n  describe(\"filterSearch\", () => {\n    TESTS.forEach((test) => {\n      it(`should search in '${test.name}'`, () => {\n        const result = filterSearch(TEST_COMMANDS, test.search)\n\n        expect(result).toEqual(test.result)\n      })\n    })\n  })\n\n  describe(\"filterHidden\", () => {\n    it(\"should filter out only command types that are in the list\", () => {\n      const result = filterHidden(TEST_COMMANDS, [CommandType.ClientIntro])\n\n      expect(result).toEqual(TEST_COMMANDS.filter((tc) => tc.type !== CommandType.ClientIntro))\n    })\n  })\n\n  describe(\"filterCommands\", () => {\n    TESTS.forEach((test) => {\n      it(`should search in '${test.name}'`, () => {\n        const result = filterCommands(TEST_COMMANDS, test.search, [])\n\n        expect(result).toEqual(test.result)\n      })\n    })\n\n    it(\"should filter out only command types that are in the list\", () => {\n      const result = filterCommands(TEST_COMMANDS, \"\", [CommandType.ClientIntro])\n\n      expect(result).toEqual(TEST_COMMANDS.filter((tc) => tc.type !== CommandType.ClientIntro))\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/filterCommands/index.ts",
    "content": "import { CommandType } from \"reactotron-core-contract\"\nimport type { CommandTypeKey } from \"reactotron-core-contract\"\nimport { escapeRegex } from \"../escape-regex\"\n\nfunction path(...searchPath) {\n  return (obj) => {\n    let scaledObj = obj\n\n    for (let i = 0; i < searchPath.length; i++) {\n      scaledObj = scaledObj[searchPath[i]]\n\n      if (typeof scaledObj === \"undefined\" || scaledObj === null) return null\n    }\n\n    return scaledObj\n  }\n}\n\nconst COMMON_MATCHING_PATHS = [\n  path(\"type\"),\n  path(\"payload\", \"message\"),\n  path(\"payload\", \"preview\"),\n  path(\"payload\", \"name\"),\n  path(\"payload\", \"path\"),\n  path(\"payload\", \"triggerType\"),\n  path(\"payload\", \"description\"),\n  path(\"payload\", \"request\", \"url\"),\n  path(\"payload\", \"request\", \"data\"),\n]\n\nexport function filterSearch(commands: any[], search: string) {\n  const trimmedSearch = (search || \"\").trim()\n\n  if (trimmedSearch === \"\") return [...commands]\n\n  const searchRegex = new RegExp(escapeRegex(trimmedSearch).replace(/\\s/, \".\"), \"i\")\n\n  const matching = (value: string) => {\n    if (!value) {\n      return false\n    }\n\n    if (typeof value === \"string\") {\n      return searchRegex.test(value)\n    } else {\n      try {\n        const stringifiedValue = JSON.stringify(value)\n        return searchRegex.test(stringifiedValue)\n      } catch (error) {\n        // console.log(\"Error stringifying value\", value, error)\n        return false\n      }\n    }\n  }\n\n  return commands.filter(\n    (command) =>\n      COMMON_MATCHING_PATHS.filter((c) => {\n        if (matching(c(command))) return true\n        if (\n          command.type === CommandType.Log &&\n          (matching(\"debug\") || matching(\"warning\") || matching(\"error\"))\n        )\n          return true\n        if (command.type === CommandType.ClientIntro && matching(\"connection\")) return true\n        return false\n      }).length > 0\n  )\n}\n\nexport function filterHidden(commands: any[], hiddenCommands: CommandTypeKey[]) {\n  if (hiddenCommands.length === 0) return commands\n\n  return commands.filter((command) => hiddenCommands.indexOf(command.type) === -1)\n}\n\nfunction filterCommands(commands: any[], search: string, hiddenCommands: CommandTypeKey[]) {\n  const searchFilteredCommands = filterSearch(commands, search)\n  return filterHidden(searchFilteredCommands, hiddenCommands)\n}\n\nexport default filterCommands\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/isShallow.ts",
    "content": "export default (value: any) => {\n  if (Array.isArray(value)) {\n    return !value.some(v => typeof v === \"object\")\n  }\n\n  const keys = Object.keys(value)\n  return !keys.some(v => typeof (value as any)[v] === \"object\")\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/makeTable.tsx",
    "content": "import React from \"react\"\nimport styled from \"styled-components\"\n\nexport const RowContainer = styled.div`\n  display: flex;\n  justify-content: space-between;\n  user-select: all;\n  padding: 2px 0;\n`\nexport const KeyContainer = styled.div`\n  width: 210px;\n  padding-right: 10px;\n  word-break: break-all;\n  text-align: left;\n  color: ${(props) => props.theme.foregroundDark};\n  user-select: text;\n  cursor: text;\n`\ninterface ValueContainerProps {\n  $value: any\n}\nexport const ValueContainer = styled.div.attrs(() => ({}))<ValueContainerProps>`\n  flex: 1;\n  word-break: break-all;\n  user-select: text;\n  cursor: text;\n  color: ${(props) => {\n    if (props.$value === null || props.$value === undefined) return props.theme.tag\n    switch (typeof props.$value) {\n      case \"boolean\":\n      case \"number\":\n        return props.theme.constant\n      case \"string\":\n      default:\n        return props.theme.foreground\n    }\n  }};\n`\n\nconst NULL_TEXT = \"null\"\nconst UNDEFINED_TEXT = \"undefined\"\nconst TRUE_TEXT = \"true\"\nconst FALSE_TEXT = \"false\"\n\nfunction textForValue(value: any) {\n  if (value === null) return NULL_TEXT\n  if (value === undefined) return UNDEFINED_TEXT\n  if (typeof value === \"boolean\") return value ? TRUE_TEXT : FALSE_TEXT\n  return value\n}\n\n// eslint-disable-next-line react/display-name\nconst makeTable = (obj: unknown) => {\n  const input = obj !== null && typeof obj === \"object\" ? obj : {}\n  const keys = Object.keys(input) ?? []\n\n  return (\n    <div>\n      {keys.map((key) => {\n        const value = input[key]\n\n        const textValue = textForValue(value)\n\n        return (\n          <RowContainer key={key}>\n            <KeyContainer>{key}</KeyContainer>\n            <ValueContainer $value={value}>{textValue}</ValueContainer>\n          </RowContainer>\n        )\n      })}\n    </div>\n  )\n}\n\nexport default makeTable\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/pad.ts",
    "content": "/**\n * Adds spacing to the left of a string until it reaches a specific length.\n *\n * @param {string} str The string to pad.\n * @param {number} length How much to pad.\n * @param {string} chr What to pad with.\n */\nexport function leftPad(str, length, chr = \" \") {\n  return chr.repeat(Math.max(0, length - str.length)) + str\n}\n\n/**\n * Adds spacing to the right of a string until it reaches a specific length.\n *\n * @param {string} str The string to pad.\n * @param {number} length How much to pad.\n * @param {string} chr What to pad with.\n */\nexport function rightPad(str, length, chr = \" \") {\n  return str + chr.repeat(Math.max(0, length - str.length))\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/src/utils/repair-serialization.ts",
    "content": "/**\n * JSON.stringify() clobbers falsy values, so we had to \"encode\" those\n * values before that step on the client.\n *\n * This is the \"decoding\" part of that equation.\n *\n * Thanks Stack Overflow.\n *\n * https://stackoverflow.com/questions/30128834/deep-changing-values-in-a-javascript-object\n */\n\n// on the server side, we'll be swapping out these values\nconst replacements: { [key: string]: any } = Object.create(null)\nreplacements[\"~~~ undefined ~~~\"] = undefined\nreplacements[\"~~~ null ~~~\"] = null\nreplacements[\"~~~ false ~~~\"] = false\nreplacements[\"~~~ zero ~~~\"] = 0\nreplacements[\"~~~ empty string ~~~\"] = \"\"\nreplacements[\"~~~ anonymous function ~~~\"] = \"fn()\"\nreplacements[\"~~~ NaN ~~~\"] = NaN\nreplacements[\"~~~ Infinity ~~~\"] = Infinity\nreplacements[\"~~~ -Infinity ~~~\"] = -Infinity\n\n/**\n * Walks an object replacing any values with new values.  This mutates!\n *\n * @param payload The object\n * @return The same object with some values replaced.\n */\nexport default function repairSerialization(payload: any) {\n  // we only want objects\n  if (typeof payload !== \"object\") {\n    return payload\n  }\n\n  // the recursive iterator\n  function walker(obj: any) {\n    let k\n    // NOTE: Object.prototype.hasOwnProperty IS defined however the bind to the object throws the def off.\n    const has = Object.prototype.hasOwnProperty.bind(obj) as (key: string) => boolean\n    for (k in obj) {\n      if (has(k)) {\n        switch (typeof obj[k]) {\n          // should we recurse thru sub-objects and arrays?\n          case \"object\":\n            walker(obj[k])\n            break\n\n          // mutate in-place with one of our replacements\n          case \"string\":\n            if (obj[k].toLowerCase() in replacements) {\n              // look for straight up replacements\n              obj[k] = replacements[obj[k].toLowerCase()]\n            } else if (obj[k].length > 9) {\n              // fancy function replacements\n              if (obj[k].startsWith(\"~~~ \") && obj[k].endsWith(\" ~~~\")) {\n                obj[k] = obj[k].replace(/~~~/g, \"\")\n              }\n            }\n        }\n      }\n    }\n  }\n\n  // set it running\n  walker(payload)\n\n  // HACK - We should eventually make this function do less mutation\n  return payload;\n}\n"
  },
  {
    "path": "lib/reactotron-core-ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"jsx\": \"react\",\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"lib\": [\"es2015\", \"dom\"],\n    \"types\": [\"jest\"],\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-mst/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-mst/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-mst/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [3.1.12](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.11...reactotron-mst@3.1.12) (2025-09-16)\n\n### [3.1.11](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.10...reactotron-mst@3.1.11) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [3.1.10](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.9...reactotron-mst@3.1.10) (2024-08-26)\n\n### [3.1.9](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.8...reactotron-mst@3.1.9) (2024-02-14)\n\n## [3.1.8](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.7...reactotron-mst@3.1.8) (2024-02-14)\n\n### [3.1.7](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.6...reactotron-mst@3.1.7) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [3.1.6](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5...reactotron-mst@3.1.6) (2023-12-08)\n\n### [3.1.5](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.17...reactotron-mst@3.1.5) (2023-12-05)\n\n### [3.1.5-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.16...reactotron-mst@3.1.5-beta.17) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [3.1.5-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.15...reactotron-mst@3.1.5-beta.16) (2023-11-06)\n\n### [3.1.5-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.14...reactotron-mst@3.1.5-beta.15) (2023-10-13)\n\n### [3.1.5-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.13...reactotron-mst@3.1.5-beta.14) (2023-10-02)\n\n### [3.1.5-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.12...reactotron-mst@3.1.5-beta.13) (2023-09-27)\n\n### [3.1.5-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.11...reactotron-mst@3.1.5-beta.12) (2023-09-22)\n\n### [3.1.5-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.10...reactotron-mst@3.1.5-beta.11) (2023-09-08)\n\n### [3.1.5-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.9...reactotron-mst@3.1.5-beta.10) (2023-09-07)\n\n### [3.1.5-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.8...reactotron-mst@3.1.5-beta.9) (2023-08-25)\n\n### [3.1.5-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.7...reactotron-mst@3.1.5-beta.8) (2023-08-24)\n\n### [3.1.5-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.6...reactotron-mst@3.1.5-beta.7) (2023-07-24)\n\n### [3.1.5-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.5...reactotron-mst@3.1.5-beta.6) (2023-07-20)\n\n### [3.1.5-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.4...reactotron-mst@3.1.5-beta.5) (2023-07-17)\n\n### [3.1.5-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.3...reactotron-mst@3.1.5-beta.4) (2023-07-06)\n\n### [3.1.5-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.2...reactotron-mst@3.1.5-beta.3) (2023-07-03)\n\n### [3.1.5-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.1...reactotron-mst@3.1.5-beta.2) (2023-06-15)\n\n### [3.1.5-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-beta.0...reactotron-mst@3.1.5-beta.1) (2023-06-15)\n\n### [3.1.5-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.7...reactotron-mst@3.1.5-beta.0) (2023-04-06)\n\n### [3.1.5-alpha.7](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.6...reactotron-mst@3.1.5-alpha.7) (2023-03-21)\n\n\n### Bug Fixes\n\n* **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n\n### [3.1.5-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.5...reactotron-mst@3.1.5-alpha.6) (2023-03-06)\n\n### [3.1.5-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.4...reactotron-mst@3.1.5-alpha.5) (2023-03-06)\n\n### [3.1.5-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.3...reactotron-mst@3.1.5-alpha.4) (2023-03-06)\n\n### [3.1.5-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.2...reactotron-mst@3.1.5-alpha.3) (2023-02-17)\n\n### [3.1.5-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.1...reactotron-mst@3.1.5-alpha.2) (2023-02-17)\n\n### [3.1.5-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.5-alpha.0...reactotron-mst@3.1.5-alpha.1) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n\n### Bug Fixes\n\n* **reactotron-mst:** add * dependency ([47d2641](https://github.com/infinitered/reactotron/commit/47d26419fe2993cf1e1a1e74002e223d8c4181ca))\n\n### [3.1.5-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-mst@3.1.4...reactotron-mst@3.1.5-alpha.0) (2023-02-03)\n\n\n### Features\n\n* **reactotron-mst:** add workspace ([062dcb4](https://github.com/infinitered/reactotron/commit/062dcb4d29628a7f8b1dbb83ef4468773415608e))\n\n\n### Bug Fixes\n\n* **reactotron-mst:** move type imports ([2cec731](https://github.com/infinitered/reactotron/commit/2cec73174c5cc97b9582e92f1e743dc76be3cd98))\n* **reactotron-mst:** remove release script ([7e2cdca](https://github.com/infinitered/reactotron/commit/7e2cdca0619b737e77df2ddd9aac315d9003299b))\n"
  },
  {
    "path": "lib/reactotron-mst/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-mst/package.json",
    "content": "{\n  \"name\": \"reactotron-mst\",\n  \"version\": \"3.1.12\",\n  \"description\": \"A Reactotron plugin for mobx-state-tree.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-mst\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-mst\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint 'src/**/**.{ts,tsx}'\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"peerDependencies\": {\n    \"mobx\": \"^3.4.1 || ^4.1.0 || >6.0.0\",\n    \"mobx-state-tree\": \"^1.4.0 || ^2.0.2 || >3.0.0\",\n    \"reactotron-core-client\": \"*\"\n  },\n  \"dependencies\": {\n    \"ramda\": \"^0.28.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/lodash.camelcase\": \"^4.3.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@types/ramda\": \"^0.28.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"lodash.camelcase\": \"^4.3.0\",\n    \"mobx\": \"6.10.2\",\n    \"mobx-state-tree\": \"^5.3.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"reactotron-core-client\": \"workspace:*\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-mst/project.json",
    "content": "{\n  \"name\": \"reactotron-mst\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-mst/src/index.ts",
    "content": "export * from \"./reactotron-mst\"\n"
  },
  {
    "path": "lib/reactotron-mst/src/reactotron-mst.ts",
    "content": "/* eslint-disable @typescript-eslint/no-use-before-define */\n// --- Wall of imports ---------------------------------\nimport {\n  addMiddleware,\n  applyAction,\n  applySnapshot,\n  getPath,\n  getSnapshot,\n  getType,\n  isAlive,\n  isProtected,\n  isRoot,\n  isType,\n  onSnapshot,\n} from \"mobx-state-tree\"\nimport type {\n  IStateTreeNode,\n  IType,\n  IMiddlewareEvent,\n  ISerializedActionCall,\n} from \"mobx-state-tree\"\nimport type { Command } from \"reactotron-core-contract\"\nimport {\n  type ReactotronCore,\n  type Plugin,\n  assertHasStateResponsePlugin,\n  type InferFeatures,\n  type StateResponsePlugin,\n} from \"reactotron-core-client\"\n\nimport {\n  always,\n  concat,\n  endsWith,\n  filter,\n  flatten,\n  has,\n  identity,\n  is,\n  isEmpty,\n  isNil,\n  keys,\n  map,\n  path,\n  pipe,\n  replace,\n  reject,\n  slice,\n  sortBy,\n  split,\n  uniq,\n  when,\n} from \"ramda\"\n\n// --- Helpers ---------------------------------\n\nconst dotPath = (fullPath: string, o: Record<string, any>) => path(split(\".\", fullPath), o)\nconst isNilOrEmpty = (value: any) => isNil(value) || isEmpty(value)\nconst isReactNativeEvent = (value: any) =>\n  typeof value !== \"undefined\" &&\n  value !== null &&\n  has(\"nativeEvent\", value) &&\n  has(\"target\", value) &&\n  has(\"type\", value)\n\n/**\n * Sadly, this protects calls from endless stack traces.  We have to filter\n * out some things that are known circular troublemakers.\n *\n * @param args A call's args.\n */\nconst convertUnsafeArguments = (args: any) => {\n  const theseArgs = Array.isArray(args) ? args : [args]\n  return theseArgs.map((arg: any) => {\n    if (isReactNativeEvent(arg)) {\n      return \"ReactNativeEvent\"\n    }\n    return arg\n  })\n}\n\nconst isSerializedActionCall = (value: unknown): value is ISerializedActionCall => {\n  return (\n    typeof value === \"object\" &&\n    \"name\" in value &&\n    typeof value.name === \"string\" &&\n    (\"path\" in value ? typeof value.path === \"string\" : true) &&\n    (\"args\" in value ? Array.isArray(value.args) : true)\n  )\n}\n\nconst isSerializedActionCallArray = (value: unknown): value is ISerializedActionCall[] =>\n  Array.isArray(value) && value.every(isSerializedActionCall)\n\n// --- Interfaces ---------------------------------\n\ninterface TrackedNode {\n  /**\n   * The node we are tracking.\n   */\n  node: IStateTreeNode\n\n  /**\n   * The mst model type\n   */\n  modelType: IType<any, any, any>\n}\n\ninterface NodeTracker {\n  [name: string]: TrackedNode\n}\n\nexport type MstPluginFilter = (event: IMiddlewareEvent) => boolean\n\nexport interface MstPluginOptions {\n  /**\n   * Fine-grain control over what gets sent to the Reactotron app.\n   */\n  filter?: MstPluginFilter\n  /**\n   * When requesting keys, values, or subscribing, configures whether\n   * we talk to the live state object (great for `volatile` state) or the\n   * snapshot.  Defaults to `live`.\n   */\n  queryMode?: \"live\" | \"snapshot\"\n}\n\n// --- The Reactotron Plugin ---------------------------------\n\n/**\n * A factory function for creating the plugin.\n *\n * @param opts Plugin options.\n */\nexport function mst(opts: MstPluginOptions = {}) {\n  /**\n   * The mobx-state-tree Reactotron plugin.\n   *\n   * @param reactotron The reactotron instance we're attaching to.\n   */\n  function plugin<Client extends ReactotronCore = ReactotronCore>(reactotron: Client) {\n    // make sure have loaded the StateResponsePlugin\n    assertHasStateResponsePlugin(reactotron)\n    const client = reactotron as Client & InferFeatures<Client, StateResponsePlugin>\n\n    // --- Plugin-scoped variables ---------------------------------\n\n    // the stores we're tracking\n    const trackedNodes: NodeTracker = {}\n\n    // are we in the middle of restoring?  this will prevent\n    // extra @APPLY_SNAPSHOT signals from being sent\n    let restoring = false\n\n    // a list of subscriptions the client is subscribing to\n    let subscriptions: string[] = []\n\n    const mstFilter = opts.filter ? opts.filter : () => true\n\n    // --- Connecting MST to Reactotron ---------------------------------\n\n    /**\n     * The entry point for integrating a mobx-state-tree node with Reactotron. Currently\n     * one 1 root node is supported.\n     *\n     * @param node The mobx-state-tree node to track\n     * @param nodeName The name to call it if we have more than 1.\n     */\n    function trackMstNode(node: IStateTreeNode, nodeName = \"default\") {\n      // sanity\n      if (!node) {\n        return { kind: \"required\" } as const\n      }\n\n      // prevent double tracking\n      if (trackedNodes[nodeName]) {\n        return { kind: \"already-tracking\" } as const\n      }\n\n      try {\n        // grab the mst model type\n        const modelType = getType(node)\n\n        // we only want types\n        if (isType(modelType)) {\n          try {\n            attachReactotronToMstNode(node)\n            // track this\n            trackedNodes[nodeName] = { node, modelType }\n            return { kind: \"ok\" } as const\n          } catch (e) {\n            return {\n              kind: \"tracking-error\",\n              message:\n                e instanceof Error\n                  ? e.message\n                  : \"Unknown error - tracking error did not have message\",\n            } as const\n          }\n        } else {\n          return { kind: \"invalid-node\" } as const\n        }\n      } catch (e) {\n        return { kind: \"invalid-node\" } as const\n      }\n    }\n\n    /**\n     * Connects a mst tree node to Reactotron.\n     *\n     * @param node The node we want to track.\n     * @param nodeName What to call this node.\n     */\n    function attachReactotronToMstNode(node: IStateTreeNode, nodeName?: string) {\n      // whenever the snapshot changes, send subscriptions\n      onSnapshot(node, sendSubscriptions)\n\n      /**\n       * Make some middleware that allows us to track actions.\n       */\n      addMiddleware(node, (call, next) => {\n        // only actions for now\n        const skip = call.type !== \"action\"\n\n        // skip this middleware?\n        if (skip) {\n          return next(call)\n        }\n\n        // userland opt-out\n        const shouldSend = mstFilter(call)\n        if (!shouldSend) {\n          return next(call)\n        }\n\n        // grab the arguments\n        const args = convertUnsafeArguments(call.args)\n        const path = getPath(call.context)\n\n        // action related data\n        const action = { args: args, name: call.name, path }\n\n        // mst internal data\n        const mstPayload = {\n          id: call.id,\n          parentId: call.parentId,\n          rootId: call.rootId,\n          type: call.type,\n          modelType: getType(node),\n          alive: isAlive(node),\n          root: isRoot(node),\n          protected: isProtected(node),\n        }\n\n        // start a timer\n        const elapsed = reactotron.startTimer()\n\n        // chain off to the next middleware\n        const result = next(call)\n\n        // measure the speed\n        const ms = elapsed()\n\n        // add nice display name\n        const displayPath = replace(/^\\./, \"\", replace(/\\//g, \".\", path))\n        let name = replace(/^\\./, \"\", `${nodeName ?? \"\"}${displayPath}.${call.name}()`)\n        name = replace(\"/\", \".\", name)\n        // fire this off to reactotron\n        if (!restoring) {\n          reactotron.send(\"state.action.complete\", {\n            name,\n            action,\n            mst: mstPayload,\n            ms,\n          })\n        }\n\n        // return the result of the next middleware\n        return result\n      })\n    }\n\n    // --- Reactotron Hooks ---------------------------------\n\n    /**\n     * A backup of state has been requested. Lets serialize the current\n     * state and send it up to the app.\n     *\n     * @param command A reactotron command.\n     */\n    function backup(command: Command<\"state.backup.request\">) {\n      const trackedNode =\n        trackedNodes[\n          \"mstNodeName\" in command && typeof command.mstNodeName === \"string\"\n            ? command.mstNodeName\n            : \"default\"\n        ]\n      if (trackedNode && trackedNode.node) {\n        const state = getSnapshot<IStateTreeNode>(trackedNode.node)\n        reactotron.send(\"state.backup.response\", { state })\n      }\n    }\n\n    /**\n     * Update the current state with one that was sent to us by the\n     * Reactotron app.\n     *\n     * @param command A reactotron command.\n     */\n    function restore(command: Command<\"state.restore.request\">) {\n      const trackedNode =\n        trackedNodes[\n          \"mstNodeName\" in command && typeof command.mstNodeName === \"string\"\n            ? command.mstNodeName\n            : \"default\"\n        ]\n      const state = command && command.payload && command.payload.state\n      if (trackedNode && trackedNode.node) {\n        const { node } = trackedNode\n        restoring = true\n        applySnapshot(node, state)\n        restoring = false\n      }\n    }\n\n    /**\n     * Applies an action to the mst node which was sent from the Reactotron\n     * app. It can be a replayed action we emitted earlier, or one the user\n     * has typed in manually.\n     *\n     * @param command A reactotron command.\n     */\n    function dispatchAction(command: Command<\"state.action.dispatch\">) {\n      const trackedNode =\n        trackedNodes[\n          \"mstNodeName\" in command && typeof command.mstNodeName === \"string\"\n            ? command.mstNodeName\n            : \"default\"\n        ]\n      const action = command && command.payload && command.payload.action\n      const isValidAction = isSerializedActionCall(action) || isSerializedActionCallArray(action)\n      if (trackedNode && trackedNode.node && action && isValidAction) {\n        const { node } = trackedNode\n        try {\n          applyAction(node, action)\n        } catch {\n          // TODO: should we return a message?\n        }\n      }\n    }\n\n    /**\n     * Subscribes to some paths in state. Allows the user to track a subset of\n     * data within the state that will be sent to them every time it changes.\n     *\n     * @param command The command received from the reactotron app.\n     */\n    function subscribe(command: Command<\"state.values.subscribe\">) {\n      const trackedNode =\n        trackedNodes[\n          \"mstNodeName\" in command && typeof command.mstNodeName === \"string\"\n            ? command.mstNodeName\n            : \"default\"\n        ]\n      const paths: string[] = (command && command.payload && command.payload.paths) || []\n\n      if (paths) {\n        subscriptions = uniq(flatten(paths))\n      }\n\n      if (trackedNode && trackedNode.node) {\n        const state =\n          opts.queryMode === \"snapshot\" ? getSnapshot(trackedNode.node) : trackedNode.node\n        sendSubscriptions(state)\n      }\n    }\n\n    /**\n     * Given a path somewhere within the tree, list the keys found if it is an object.\n     *\n     * @param command The command received from the reactotron app.\n     */\n    function requestKeys(command: Command<\"state.keys.request\">) {\n      const trackedNode =\n        trackedNodes[\n          \"mstNodeName\" in command && typeof command.mstNodeName === \"string\"\n            ? command.mstNodeName\n            : \"default\"\n        ]\n      const atPath = command?.payload?.path\n      if (trackedNode && trackedNode.node) {\n        const state = getSnapshot<IStateTreeNode>(trackedNode.node)\n        if (isNilOrEmpty(atPath)) {\n          client.stateKeysResponse(\n            null,\n            keys(state).map((s) => s.toString())\n          )\n        } else {\n          const keyList = keys(dotPath(atPath, state))\n          client.stateKeysResponse(atPath, keyList)\n        }\n      }\n    }\n\n    /**\n     * Gets the current value located at the path within the state tree.\n     *\n     * @param command The command received from the reactotron app.\n     */\n    function requestValues(command: Command<\"state.values.request\">) {\n      const trackedNode =\n        trackedNodes[\n          \"mstNodeName\" in command && typeof command.mstNodeName === \"string\"\n            ? command.mstNodeName\n            : \"default\"\n        ]\n      const atPath = command?.payload?.path\n      if (trackedNode && trackedNode.node) {\n        const state = getSnapshot<IStateTreeNode>(trackedNode.node)\n        if (isNilOrEmpty(atPath)) {\n          client.stateValuesResponse(null, state)\n        } else {\n          client.stateValuesResponse(atPath, dotPath(atPath, state))\n        }\n      }\n    }\n\n    /**\n     * Sends all subscribed values to the Reactotron app.\n     *\n     * @param node The tree to grab the state data from\n     */\n    function sendSubscriptions(state: IStateTreeNode) {\n      // this is unreadable\n      const changes = (pipe as any)(\n        map(when(isNil, always(\"\"))) as any,\n        filter(endsWith(\".*\")),\n        map((key: string) => {\n          const keyMinusWildcard = slice(0, -2, key)\n          const value = dotPath(keyMinusWildcard, state)\n          if (is(Object, value) && !isNilOrEmpty(value)) {\n            return pipe(\n              keys,\n              map((key) => `${keyMinusWildcard}.${key}`)\n            )(value || {})\n          }\n          return []\n        }) as any,\n        concat(map(when(isNil, always(\"\")), subscriptions)),\n        flatten,\n        reject(endsWith(\".*\")) as any,\n        uniq as any,\n        sortBy(identity) as any,\n        map((key: string) => ({\n          path: key,\n          value: isNilOrEmpty(key) ? state : dotPath(key, state),\n        }))\n      )(subscriptions)\n\n      client.stateValuesChange(changes)\n    }\n\n    // --- Reactotron Hooks ---------------------------------\n\n    // maps inbound commands to functions to run\n    const COMMAND_MAP = {\n      \"state.backup.request\": backup,\n      \"state.restore.request\": restore,\n      \"state.action.dispatch\": dispatchAction,\n      \"state.values.subscribe\": subscribe,\n      \"state.keys.request\": requestKeys,\n      \"state.values.request\": requestValues,\n    } satisfies { [name: string]: (command: Command) => void }\n\n    /**\n     * Fires when we receive a command from the reactotron app.\n     */\n    function onCommand(command: Command) {\n      // lookup the command and execute\n      const handler = COMMAND_MAP[command && command.type]\n      handler && handler(command)\n    }\n\n    // --- Reactotron plugin interface ---------------------------------\n\n    return {\n      // Fires when we receive a command from the Reactotron app.\n      onCommand,\n\n      // All keys in this object will be attached to the main Reactotron instance\n      // and available to be called directly.\n      features: { trackMstNode },\n    } satisfies Plugin<Client>\n  }\n\n  return plugin\n}\n"
  },
  {
    "path": "lib/reactotron-mst/test/actions.test.ts",
    "content": "import { TestUserModel, createMstPlugin } from \"./fixtures\"\n\ndescribe(\"actions\", () => {\n  it(\"sends action complete event\", () => {\n    const { reactotron, track } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    user.setAge(123)\n\n    // details about the reactotron functions used\n    const send = reactotron.send\n\n    // called only once\n    expect(send).toHaveBeenCalledTimes(1)\n\n    const payload = {\n      name: \"setAge()\",\n      ms: 1,\n      action: { name: \"setAge\", path: \"\", args: [123] },\n      mst: {\n        id: 7,\n        rootId: 7,\n        parentId: 0,\n        type: \"action\",\n        modelType: TestUserModel,\n        alive: true,\n        root: true,\n        protected: true,\n      },\n    }\n\n    // send() params\n    expect(send.mock.calls[0][0]).toBe(\"state.action.complete\")\n    expect(send.mock.calls[0][1].action).toEqual(payload.action)\n  })\n\n  it(\"sends values changed event\", () => {\n    const { reactotron, track } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    user.setAge(123)\n\n    // details about the reactotron functions used\n    const stateValuesChange = reactotron.stateValuesChange\n\n    // called only once\n    expect(stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(stateValuesChange.mock.calls[0][0]).toEqual([])\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/backup.test.ts",
    "content": "import { TestUserModel, commandMetadataFixture, createMstPlugin } from \"./fixtures\"\nimport type { Command } from \"reactotron-core-contract\"\n\nconst INBOUND = {\n  ...commandMetadataFixture,\n  type: \"state.backup.request\",\n  payload: { state: { age: 100, name: \"\" } },\n} satisfies Command<\"state.backup.request\">\nconst OUTBOUND = {\n  ...commandMetadataFixture,\n  type: \"state.backup.response\",\n  payload: { state: { age: 100, name: \"\" } },\n} satisfies Command<\"state.backup.response\">\n\ndescribe(\"backup\", () => {\n  it(\"responds with current state\", () => {\n    const { reactotron, track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    plugin.onCommand(INBOUND)\n\n    const send = reactotron.send\n\n    expect(send).toHaveBeenCalledTimes(1)\n    const [type, payload] = send.mock.calls[0]\n    expect(type).toEqual(OUTBOUND.type)\n    expect(payload).toEqual({ state: { age: 100, name: \"\" } })\n  })\n\n  it(\"won't die if we're not tracking nodes\", () => {\n    const { reactotron, plugin } = createMstPlugin()\n    plugin.onCommand(OUTBOUND)\n\n    expect(reactotron.send).toHaveBeenCalledTimes(0)\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/dispatch-action.test.ts",
    "content": "import type { ISerializedActionCall } from \"mobx-state-tree\"\nimport type { Command } from \"reactotron-core-contract\"\nimport { TestUserModel, commandMetadataFixture, createMstPlugin } from \"./fixtures\"\n\nfunction createAction(action: ISerializedActionCall) {\n  return {\n    ...commandMetadataFixture,\n    type: \"state.action.dispatch\",\n    payload: { action },\n  } satisfies Command<\"state.action.dispatch\">\n}\n\ndescribe(\"dispatch-action\", () => {\n  it(\"responds with current state\", () => {\n    const { track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    const action = createAction({ name: \"setAge\", path: \"\", args: [900] })\n    track(user)\n    plugin.onCommand(action)\n\n    expect(user.age).toEqual(900)\n  })\n\n  it(\"won't die if we're not tracking nodes\", () => {\n    const { plugin } = createMstPlugin()\n    const action = createAction({ name: \"setAge\", path: \"\", args: [] })\n\n    expect(() => plugin.onCommand(action)).not.toThrow()\n  })\n\n  it(\"won't die if we target a wrong path\", () => {\n    const { track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    const action = createAction({ name: \"setLoL\", path: \"\", args: [] })\n    track(user)\n\n    expect(() => plugin.onCommand(action)).not.toThrow()\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/filter.test.ts",
    "content": "import { TestUserModel, createMstPlugin } from \"./fixtures\"\n\ndescribe(\"filter\", () => {\n  it(\"skips filtered messages\", () => {\n    const { reactotron } = createMstPlugin({ filter: () => false })\n    const user = TestUserModel.create()\n    const send = jest.spyOn(reactotron, \"send\")\n    user.setAge(123)\n    expect(send).not.toHaveBeenCalled()\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/fixtures/command.ts",
    "content": "import type { Command } from \"reactotron-core-contract\"\n\nexport const commandMetadataFixture: Omit<Command, \"payload\" | \"type\" | \"payload\"> = {\n  connectionId: 1,\n  date: new Date(\"2019-01-01T00:00:00.000Z\"),\n  deltaTime: 0,\n  important: false,\n  messageId: 1,\n}\n"
  },
  {
    "path": "lib/reactotron-mst/test/fixtures/create-mst-plugin.ts",
    "content": "import type { Reactotron } from \"reactotron-core-client\"\nimport { mst, type MstPluginOptions } from \"../../src/reactotron-mst\"\nimport { createMockReactotron } from \"../mocks/create-mock-reactotron\"\n\n/**\n * Creates an reactotron-mst plugin with a mocked reactotron.\n */\nexport function createMstPlugin(pluginOptions: MstPluginOptions = {}) {\n  const reactotron = createMockReactotron()\n  const plugin = mst(pluginOptions)(reactotron as unknown as Reactotron)\n  const track = plugin.features.trackMstNode\n\n  return { reactotron, plugin, track }\n}\n"
  },
  {
    "path": "lib/reactotron-mst/test/fixtures/index.ts",
    "content": "export { commandMetadataFixture } from \"./command\"\nexport { TestUserModel } from \"./test-user-model\"\nexport { TestCompanyModel, createTestCompany } from \"./test-company-model\"\nexport * from \"./create-mst-plugin\"\n"
  },
  {
    "path": "lib/reactotron-mst/test/fixtures/test-company-model.ts",
    "content": "import { types, IModelType, ISnapshottable } from \"mobx-state-tree\"\nimport { TestUserModel } from \"./test-user-model\"\nimport { IObservableArray } from \"mobx\"\n\n// lol - https://github.com/Microsoft/TypeScript/issues/5938\nexport type __IModelType = IModelType<any, any>\nexport type __ISnapshottable = ISnapshottable<any>\nexport type __IObservableArray = IObservableArray<any>\n\nexport const TestCompanyModel = types\n  .model()\n  .props({\n    name: \"\",\n    employees: types.optional(types.array(TestUserModel), []),\n    owner: types.maybe(TestUserModel),\n  })\n  .actions((self) => ({\n    setName(value: string) {\n      self.name = value\n    },\n  }))\n\nexport const createTestCompany = () =>\n  TestCompanyModel.create({\n    name: \"Steve\",\n    owner: { name: \"me\", age: 100 },\n    employees: [\n      { name: \"a\", age: 1 },\n      { name: \"b\", age: 2 },\n    ],\n  })\n"
  },
  {
    "path": "lib/reactotron-mst/test/fixtures/test-user-model.ts",
    "content": "import { types, type IModelType } from \"mobx-state-tree\"\n\n// lol - https://github.com/Microsoft/TypeScript/issues/5938\nexport type __IModelType = IModelType<any, any>\n\nexport const TestUserModel = types\n  .model()\n  .props({ name: \"\", age: 100 })\n  .actions((self) => ({\n    setAge(value: number) {\n      self.age = value\n    },\n  }))\n"
  },
  {
    "path": "lib/reactotron-mst/test/helpers/delay.ts",
    "content": "export function delay(ms: number) {\n  return new Promise(resolve => {\n    setTimeout(resolve, ms)\n  })\n}\n"
  },
  {
    "path": "lib/reactotron-mst/test/mocks/create-mock-reactotron.ts",
    "content": "import { type Reactotron } from \"reactotron-core-client\"\n\n/**\n * Creates a mock reactotron instance with test double functions.\n */\nexport function createMockReactotron() {\n  // just enough of the interface to work\n  const reactotron = {\n    startTimer: jest.fn<Reactotron[\"startTimer\"], Parameters<Reactotron[\"startTimer\"]>, Reactotron>(\n      () => () => () => 1\n    ),\n    stateValuesChange: jest.fn<\n      Reactotron[\"stateValuesChange\"],\n      Parameters<Reactotron[\"stateValuesChange\"]>\n    >(),\n    send: jest.fn<Reactotron[\"send\"], Parameters<Reactotron[\"send\"]>, Reactotron>(),\n    stateKeysResponse: jest.fn<\n      Reactotron[\"stateKeysResponse\"],\n      Parameters<Reactotron[\"stateKeysResponse\"]>,\n      Reactotron\n    >(),\n    stateValuesResponse: jest.fn<\n      Reactotron[\"stateValuesResponse\"],\n      Parameters<Reactotron[\"stateValuesResponse\"]>,\n      Reactotron\n    >(),\n    apiResponse: jest.fn<\n      Reactotron[\"apiResponse\"],\n      Parameters<Reactotron[\"apiResponse\"]>,\n      Reactotron\n    >(),\n    stateActionComplete: jest.fn<\n      Reactotron[\"stateActionComplete\"],\n      Parameters<Reactotron[\"stateActionComplete\"]>,\n      Reactotron\n    >(),\n    stateBackupResponse: jest.fn<\n      Reactotron[\"stateBackupResponse\"],\n      Parameters<Reactotron[\"stateBackupResponse\"]>,\n      Reactotron\n    >(),\n    configure: jest.fn<Reactotron[\"configure\"], Parameters<Reactotron[\"configure\"]>, Reactotron>(),\n    close: jest.fn<Reactotron[\"close\"], Parameters<Reactotron[\"close\"]>, Reactotron>(),\n    connect: jest.fn<Reactotron[\"connect\"], Parameters<Reactotron[\"connect\"]>, Reactotron>(),\n    display: jest.fn<Reactotron[\"display\"], Parameters<Reactotron[\"display\"]>, Reactotron>(),\n    use: jest.fn<Reactotron[\"use\"], Parameters<Reactotron[\"use\"]>, Reactotron>(),\n    clear: jest.fn<Reactotron[\"clear\"], Parameters<Reactotron[\"clear\"]>, Reactotron>(),\n    log: jest.fn<Reactotron[\"log\"], Parameters<Reactotron[\"log\"]>, Reactotron>(),\n    logImportant: jest.fn<\n      Reactotron[\"logImportant\"],\n      Parameters<Reactotron[\"logImportant\"]>,\n      Reactotron\n    >(),\n    benchmark: jest.fn<Reactotron[\"benchmark\"], Parameters<Reactotron[\"benchmark\"]>, Reactotron>(),\n    debug: jest.fn<Reactotron[\"debug\"], Parameters<Reactotron[\"debug\"]>, Reactotron>(),\n    error: jest.fn<Reactotron[\"error\"], Parameters<Reactotron[\"error\"]>, Reactotron>(),\n    image: jest.fn<Reactotron[\"image\"], Parameters<Reactotron[\"image\"]>, Reactotron>(),\n    warn: jest.fn<Reactotron[\"warn\"], Parameters<Reactotron[\"warn\"]>, Reactotron>(),\n    onCustomCommand: jest.fn<\n      Reactotron[\"onCustomCommand\"],\n      Parameters<Reactotron[\"onCustomCommand\"]>,\n      Reactotron\n    >(),\n    plugins: [],\n    options: {},\n    repl: jest.fn<Reactotron[\"repl\"], Parameters<Reactotron[\"repl\"]>, Reactotron>(),\n  } satisfies Record<keyof Reactotron, Reactotron[keyof Reactotron]>\n  return reactotron\n}\n"
  },
  {
    "path": "lib/reactotron-mst/test/plugin-interface.test.ts",
    "content": "import { mst } from \"../src/reactotron-mst\"\nimport { createMockReactotron } from \"./mocks/create-mock-reactotron\"\n\ndescribe(\"plugin-interface\", () => {\n  it(\"factory interface\", () => {\n    expect(typeof mst()).toEqual(\"function\")\n  })\n\n  it(\"plugin interface\", () => {\n    const plugin = mst()(createMockReactotron())\n\n    expect(typeof plugin).toEqual(\"object\")\n    expect(typeof plugin.onCommand).toEqual(\"function\")\n    expect(typeof plugin.features).toEqual(\"object\")\n    expect(typeof plugin.features.trackMstNode).toEqual(\"function\")\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/request-keys.test.ts",
    "content": "import { TestUserModel, createMstPlugin, commandMetadataFixture } from \"./fixtures\"\nimport type { Command } from \"reactotron-core-contract\"\n\nfunction createAction(path: string) {\n  return {\n    ...commandMetadataFixture,\n    type: \"state.keys.request\",\n    payload: { path },\n  } satisfies Command<\"state.keys.request\">\n}\n\ndescribe(\"request-keys\", () => {\n  it(\"won't die if we're not tracking nodes\", () => {\n    const { reactotron, plugin } = createMstPlugin()\n    plugin.onCommand(createAction(\"\"))\n\n    expect(reactotron.stateKeysResponse).toHaveBeenCalledTimes(0)\n  })\n\n  it(\"valid keys\", () => {\n    const { reactotron, track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    plugin.onCommand(createAction(\"\"))\n\n    const stateKeysResponse = reactotron.stateKeysResponse\n    expect(stateKeysResponse).toHaveBeenCalledTimes(1)\n    const [atPath, keyList] = stateKeysResponse.mock.calls[0]\n    expect(atPath).toEqual(null)\n    expect(keyList).toEqual([\"name\", \"age\"])\n  })\n\n  it(\"invalid key path\", () => {\n    const { reactotron, track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    plugin.onCommand(createAction(\"does.not.exist\"))\n\n    const stateKeysResponse = reactotron.stateKeysResponse\n    expect(stateKeysResponse).toHaveBeenCalledTimes(1)\n    const [atPath, keyList] = stateKeysResponse.mock.calls[0]\n    expect(atPath).toEqual(\"does.not.exist\")\n    expect(keyList).toEqual([])\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/request-values.test.ts",
    "content": "import { TestUserModel, commandMetadataFixture, createMstPlugin } from \"./fixtures\"\nimport type { Command } from \"reactotron-core-contract\"\n\nfunction createAction(path: string) {\n  return {\n    ...commandMetadataFixture,\n    type: \"state.values.request\",\n    payload: { path },\n  } satisfies Command<\"state.values.request\">\n}\n\ndescribe(\"request-values\", () => {\n  it(\"won't die if we're not tracking nodes\", () => {\n    const { reactotron, plugin } = createMstPlugin()\n    plugin.onCommand(createAction(\"\"))\n\n    expect(reactotron.stateValuesResponse).toHaveBeenCalledTimes(0)\n  })\n\n  it(\"valid values\", () => {\n    const { reactotron, track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    plugin.onCommand(createAction(\"\"))\n\n    const stateValuesResponse = reactotron.stateValuesResponse\n    expect(stateValuesResponse).toHaveBeenCalled()\n    const [atPath, keyList] = stateValuesResponse.mock.calls[0]\n    expect(atPath).toBeNull()\n    expect(keyList).toEqual({ name: \"\", age: 100 })\n  })\n\n  it(\"invalid key path\", () => {\n    const { reactotron, track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    plugin.onCommand(createAction(\"does.not.exist\"))\n\n    const stateValuesResponse = reactotron.stateValuesResponse\n    expect(stateValuesResponse).toHaveBeenCalled()\n    const [atPath, values] = stateValuesResponse.mock.calls[0]\n    expect(atPath).toEqual(\"does.not.exist\")\n    expect(values).toBeUndefined()\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/restore.test.ts",
    "content": "import { getSnapshot } from \"mobx-state-tree\"\nimport { TestUserModel, commandMetadataFixture, createMstPlugin } from \"./fixtures\"\nimport type { Command } from \"reactotron-core-contract\"\n\nconst STATE = { age: 1, name: \"i\" }\nconst INBOUND = {\n  ...commandMetadataFixture,\n  type: \"state.restore.request\",\n  payload: { state: STATE },\n} satisfies Command<\"state.restore.request\">\n\ndescribe(\"restore\", () => {\n  it(\"responds with current state\", () => {\n    const { track, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    plugin.onCommand(INBOUND)\n    expect(getSnapshot(user)).toEqual(STATE)\n  })\n\n  it(\"won't die if we're not tracking nodes\", () => {\n    const { plugin } = createMstPlugin()\n    expect(() => plugin.onCommand(INBOUND)).not.toThrow()\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/sanity.test.ts",
    "content": "import { types } from \"mobx-state-tree\"\nimport { TestUserModel, createMstPlugin } from \"./fixtures\"\n\nconst UserModel = types.model().props({ name: \"\", age: 100 })\n\ndescribe(\"sanity\", () => {\n  it(\"a node is required\", () => {\n    const { track } = createMstPlugin()\n    expect(track(null as any)).toEqual({ kind: \"required\" })\n    expect(track(undefined as any)).toEqual({ kind: \"required\" })\n  })\n\n  it(\"only tracks mst nodes\", () => {\n    const { track } = createMstPlugin()\n    expect(track({})).toEqual({ kind: \"invalid-node\" })\n  })\n\n  it(\"checks for dupes\", () => {\n    const { track } = createMstPlugin()\n    expect(track(UserModel.create())).toEqual({ kind: \"ok\" })\n    expect(track(UserModel.create())).toEqual({ kind: \"already-tracking\" })\n  })\n\n  it(\"no reactotron calls when tracking\", () => {\n    const { reactotron, track } = createMstPlugin()\n    const user = TestUserModel.create()\n    track(user)\n    expect(reactotron.send).toHaveBeenCalledTimes(0)\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(0)\n    expect(reactotron.startTimer).toHaveBeenCalledTimes(0)\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/test/subscribe.test.ts",
    "content": "import {\n  TestUserModel,\n  commandMetadataFixture,\n  createMstPlugin,\n  createTestCompany,\n} from \"./fixtures\"\nimport type { Command } from \"reactotron-core-contract\"\n\nfunction createAction(paths: string[]) {\n  return {\n    ...commandMetadataFixture,\n    type: \"state.values.subscribe\",\n    payload: { paths },\n  } satisfies Command<\"state.values.subscribe\">\n}\ndescribe(\"subscribe\", () => {\n  it(\"won't die if we're not tracking nodes\", () => {\n    const { plugin } = createMstPlugin()\n    const action = createAction([\"hey\"])\n\n    expect(() => plugin.onCommand(action)).not.toThrow()\n  })\n\n  it(\"accepts 1 path\", () => {\n    const { track, reactotron, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    const action = createAction([\"age\"])\n    track(user)\n    plugin.onCommand(action)\n\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(reactotron.stateValuesChange.mock.calls[0][0]).toEqual([{ path: \"age\", value: 100 }])\n  })\n\n  it(\"accepts 2 paths\", () => {\n    const { track, reactotron, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    const action = createAction([\"age\", \"name\"])\n    track(user)\n    plugin.onCommand(action)\n\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(reactotron.stateValuesChange.mock.calls[0][0]).toEqual([\n      { path: \"age\", value: 100 },\n      { path: \"name\", value: \"\" },\n    ])\n  })\n\n  it(\"ignores dupes\", () => {\n    const { track, reactotron, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    const action = createAction([\"age\", \"age\"])\n    track(user)\n\n    plugin.onCommand(action)\n\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(reactotron.stateValuesChange.mock.calls[0][0]).toEqual([{ path: \"age\", value: 100 }])\n  })\n\n  it(\"handles missing keys\", () => {\n    const { track, reactotron, plugin } = createMstPlugin()\n    const user = TestUserModel.create()\n    const action = createAction([\"lol\"])\n    track(user)\n    plugin.onCommand(action)\n\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(reactotron.stateValuesChange.mock.calls[0][0]).toEqual([\n      { path: \"lol\", value: undefined },\n    ])\n  })\n\n  it(\"nested objects\", () => {\n    const { track, reactotron, plugin } = createMstPlugin()\n    const action = createAction([\"owner.age\"])\n    track(createTestCompany())\n    plugin.onCommand(action)\n\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(reactotron.stateValuesChange.mock.calls[0][0]).toEqual([\n      { path: \"owner.age\", value: 100 },\n    ])\n  })\n\n  it(\"nested arrays\", () => {\n    const { track, reactotron, plugin } = createMstPlugin()\n    const action = createAction([\"employees.1.age\"])\n    track(createTestCompany())\n    plugin.onCommand(action)\n\n    expect(reactotron.stateValuesChange).toHaveBeenCalledTimes(1)\n    expect(reactotron.stateValuesChange.mock.calls[0][0]).toEqual([\n      { path: \"employees.1.age\", value: 2 },\n    ])\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-mst/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"skipLibCheck\": true, // Temp?\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-react-js/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-react-js/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-react-js/.prettierignore",
    "content": "**/.vscode\n**/android\n**/build\n**/compiled\n**/dist\n**/ios\n**/package.json\n**/release\n"
  },
  {
    "path": "lib/reactotron-react-js/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [3.3.17](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.16...reactotron-react-js@3.3.17) (2025-09-16)\n\n### [3.3.16](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.15...reactotron-react-js@3.3.16) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [3.3.15](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.14...reactotron-react-js@3.3.15) (2024-08-26)\n\n### [3.3.14](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.13...reactotron-react-js@3.3.14) (2024-04-04)\n\n### [3.3.13](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.12...reactotron-react-js@3.3.13) (2024-02-14)\n\n## [3.3.12](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.11...reactotron-react-js@3.3.12) (2024-02-14)\n\n### [3.3.11](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.10...reactotron-react-js@3.3.11) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [3.3.10](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9...reactotron-react-js@3.3.10) (2024-01-23)\n\n### [3.3.9](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.17...reactotron-react-js@3.3.9) (2023-12-05)\n\n### [3.3.9-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.16...reactotron-react-js@3.3.9-beta.17) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [3.3.9-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.15...reactotron-react-js@3.3.9-beta.16) (2023-11-06)\n\n### [3.3.9-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.14...reactotron-react-js@3.3.9-beta.15) (2023-10-13)\n\n### [3.3.9-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.13...reactotron-react-js@3.3.9-beta.14) (2023-10-02)\n\n### [3.3.9-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.12...reactotron-react-js@3.3.9-beta.13) (2023-09-27)\n\n### [3.3.9-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.11...reactotron-react-js@3.3.9-beta.12) (2023-09-22)\n\n### [3.3.9-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.10...reactotron-react-js@3.3.9-beta.11) (2023-09-08)\n\n### [3.3.9-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.9...reactotron-react-js@3.3.9-beta.10) (2023-09-07)\n\n### [3.3.9-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.8...reactotron-react-js@3.3.9-beta.9) (2023-08-25)\n\n### [3.3.9-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.7...reactotron-react-js@3.3.9-beta.8) (2023-08-24)\n\n### [3.3.9-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.6...reactotron-react-js@3.3.9-beta.7) (2023-07-24)\n\n### [3.3.9-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.5...reactotron-react-js@3.3.9-beta.6) (2023-07-20)\n\n### [3.3.9-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.4...reactotron-react-js@3.3.9-beta.5) (2023-07-17)\n\n### [3.3.9-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.3...reactotron-react-js@3.3.9-beta.4) (2023-07-06)\n\n### [3.3.9-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.2...reactotron-react-js@3.3.9-beta.3) (2023-07-03)\n\n### [3.3.9-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.1...reactotron-react-js@3.3.9-beta.2) (2023-06-15)\n\n### [3.3.9-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-beta.0...reactotron-react-js@3.3.9-beta.1) (2023-06-15)\n\n### [3.3.9-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-react-js@3.3.9-alpha.0...reactotron-react-js@3.3.9-beta.0) (2023-04-06)\n\n### [3.3.9-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-react-js@2.1.2-alpha.1...reactotron-react-js@3.3.9-alpha.0) (2023-03-24)\n\n### [2.1.2-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-react-js@2.1.2-alpha.0...reactotron-react-js@2.1.2-alpha.1) (2023-03-24)\n\n### [2.1.2-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-react-js@2.1.1...reactotron-react-js@2.1.2-alpha.0) (2023-03-22)\n\n\n### Bug Fixes\n\n* **reactotron-react-js:** Add project.json so reactotron-react-js will release properly ([#1284](https://github.com/infinitered/reactotron/issues/1284)) ([bd65d94](https://github.com/infinitered/reactotron/commit/bd65d9440c2c4e035b277fbff89ef140ae86dcaa))\n"
  },
  {
    "path": "lib/reactotron-react-js/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-react-js/README.md",
    "content": "# reactotron-react-js\n\nA development tool to explore, inspect, and diagnosis your React DOM/JS apps.\n"
  },
  {
    "path": "lib/reactotron-react-js/package.json",
    "content": "{\n  \"name\": \"reactotron-react-js\",\n  \"version\": \"3.3.17\",\n  \"description\": \"A development tool to explore, inspect, and diagnose your React JS/DOM apps.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-react-js\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-react-js\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,css,yml}|**/*.{js,ts,tsx,json,css,yml}'\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"build\": \"bob build\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint src --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:lint\": \"yarn lint\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"dependencies\": {\n    \"reactotron-core-client\": \"workspace:*\",\n    \"stacktrace-js\": \"2.0.1\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/react\": \"18.2.45\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"6.1.1\",\n    \"eslint-plugin-standard\": \"5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"npm-run-all\": \"4.1.5\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"extends\": [\n      \"plugin:react/recommended\"\n    ],\n    \"plugins\": [\n      \"react\",\n      \"react-hooks\"\n    ],\n    \"settings\": {\n      \"react\": {\n        \"version\": \"detect\"\n      }\n    },\n    \"parserOptions\": {\n      \"ecmaFeatures\": {\n        \"jsx\": true\n      }\n    },\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.ts\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-js/project.json",
    "content": "{\n  \"name\": \"reactotron-react-js\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-js/src/index.ts",
    "content": "import { createClient } from \"reactotron-core-client\"\nimport trackGlobalErrors from \"./plugins/track-global-errors\"\n\nexport { trackGlobalErrors }\n\n// ---------------------\n// DEFAULT CONFIGURATION\n// ---------------------\n\nconst REACTOTRON_ASYNC_CLIENT_ID = \"@REACTOTRON/clientId\"\n\nfunction isBrowser() {\n  return typeof window !== \"undefined\"\n}\n\n/**\n * Safely get some information out the the window.navigator.\n *\n * @param {string} name The property to get.\n */\nfunction getNavigatorProperty(name) {\n  if (!name) return undefined\n  if (!isBrowser()) return undefined\n  if (!window.navigator && typeof window.navigator !== \"object\") return undefined\n  return window.navigator[name]\n}\n\nconst DEFAULTS = {\n  createSocket: (path) => new WebSocket(path), // eslint-disable-line\n  host: \"localhost\",\n  port: 9090,\n  name: \"React JS App\",\n  client: {},\n  getClientId: () => {\n    return Promise.resolve(localStorage.getItem(REACTOTRON_ASYNC_CLIENT_ID))\n  },\n  setClientId: (clientId: any) => {\n    localStorage.setItem(REACTOTRON_ASYNC_CLIENT_ID, clientId)\n    return Promise.resolve()\n  },\n}\n\nif (isBrowser()) {\n  DEFAULTS.client = {\n    reactotronLibraryName: \"reactotron-react-js\",\n    reactotronLibraryVersion: \"REACTOTRON_REACT_JS_VERSION\",\n    platform: \"browser\",\n    platformVersion: getNavigatorProperty(\"platform\"),\n    userAgent: getNavigatorProperty(\"userAgent\"),\n    screenWidth: (screen && screen.width) || undefined,\n    screenHeight: (screen && screen.height) || undefined,\n    screenScale: (window && window.devicePixelRatio) || 1,\n    windowWidth: (window && window.innerWidth) || undefined,\n    windowHeight: (window && window.innerHeight) || undefined,\n  }\n}\n\n// -----------\n// HERE WE GO!\n// -----------\n// Create the default reactotron.\nexport default createClient(DEFAULTS)\n"
  },
  {
    "path": "lib/reactotron-react-js/src/plugins/track-global-errors.ts",
    "content": "/**\n * Provides a global error handler to report errors with sourcemap lookup.\n */\nimport StackTrace from \"stacktrace-js\"\n\n// what to say whe we can't resolve source maps\nconst CANNOT_RESOLVE_ERROR =\n  'Unable to resolve error.  Either support CORS by changing webpack\\'s devtool to \"source-map\" or run in offline mode.'\n\n// defaults\nconst PLUGIN_DEFAULTS = {\n  offline: false, // true = don't do source maps lookup cross domain\n}\n\n// our plugin entry point\nexport default (options) => (reactotron) => {\n  // setup configuration\n  const config = Object.assign({}, PLUGIN_DEFAULTS, options || {})\n\n  // holds the previous window.onerror when needed\n  let swizzledOnError = null\n  let isSwizzled = false\n\n  // the functionality of our window.onerror.\n  // we could have used window.addEventListener(\"error\", ...) but that doesn't work on all browsers\n  function windowOnError(msg, file, line, col, error) {\n    // resolve the stack trace\n    StackTrace.fromError(error, { offline: config.offline })\n      // then try to send it up to the server\n      .then((stackFrames) => reactotron.error(msg, stackFrames))\n      // can't resolve, well, let the user know, but still upload something sane\n      .catch((resolvingError) =>\n        reactotron.error({\n          message: CANNOT_RESOLVE_ERROR,\n          original: { msg, file, line, col, error },\n          resolvingError,\n        })\n      )\n\n    // call back the previous window.onerror if we have one\n    if (swizzledOnError) {\n      swizzledOnError(msg, file, line, col, error)\n    }\n  }\n\n  // swizzles window.onerror dropping in our new one\n  function trackGlobalErrors() {\n    if (isSwizzled) return\n    swizzledOnError = window.onerror\n    window.onerror = windowOnError\n    isSwizzled = true\n  }\n\n  // restore the original\n  function untrackGlobalErrors() {\n    if (!swizzledOnError) return\n    window.onerror = swizzledOnError\n    isSwizzled = false\n  }\n\n  // auto start this\n  trackGlobalErrors()\n\n  // the reactotron plugin interface\n  return {\n    // attach these functions to the Reactotron\n    features: {\n      trackGlobalErrors,\n      untrackGlobalErrors,\n    },\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-js/test/replaceme.test.ts",
    "content": "describe(\"hello world\", () => {\n  it(\"works\", () => {\n    expect(true).toBe(true)\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-react-js/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"rootDir\": \".\",\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"emitDeclarationOnly\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"es2017\"],\n    \"types\": [\"react\", \"jest\"],\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-react-js/wallaby.js",
    "content": "module.exports = function (wallaby) {\n  return {\n    files: [\"src/**/*.ts\", \"!src/**/*.test.ts\"],\n\n    tests: [\"src/**/*.test.ts\"],\n\n    compilers: {\n      \"**/*.ts\": wallaby.compilers.babel(),\n    },\n\n    env: {\n      type: \"node\",\n      runner: \"node\",\n    },\n\n    testFramework: \"jest\",\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-react-native/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [5.1.18](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.17...reactotron-react-native@5.1.18) (2025-10-13)\n\n\n### Bug Fixes\n\n* parseErrorStack export in reactotron-react-native ([#1588](https://github.com/infinitered/reactotron/issues/1588)) ([65dd6b7](https://github.com/infinitered/reactotron/commit/65dd6b7555c603c9029f6f24729cfbaeafeef0a7)), closes [#1573](https://github.com/infinitered/reactotron/issues/1573)\n\n### [5.1.17](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.16...reactotron-react-native@5.1.17) (2025-09-16)\n\n### [5.1.16](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.15...reactotron-react-native@5.1.16) (2025-09-09)\n\n\n### Bug Fixes\n\n* **networking:** vendor in XHRInterceptor implementation instead of importing ([#1571](https://github.com/infinitered/reactotron/issues/1571)) ([a8eed61](https://github.com/infinitered/reactotron/commit/a8eed61624865c46c9b0387cb2b9e1a453eeae8c)), closes [#1569](https://github.com/infinitered/reactotron/issues/1569)\n\n### [5.1.15](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.14...reactotron-react-native@5.1.15) (2025-08-12)\n\n\n### Bug Fixes\n\n* PLUGIN_DEFAULTS type in asyncStorage.ts ([#1558](https://github.com/infinitered/reactotron/issues/1558)) ([7f718b6](https://github.com/infinitered/reactotron/commit/7f718b6dc7da2b304959ef2b7003e64a04b440f9))\n\n### [5.1.14](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.13...reactotron-react-native@5.1.14) (2025-06-23)\n\n\n### Bug Fixes\n\n* **networking:** add XHRInterceptor path for RN 0.80 ([#1563](https://github.com/infinitered/reactotron/issues/1563)) ([187cbc1](https://github.com/infinitered/reactotron/commit/187cbc11a8b8abb5b8e91466442d2ffe45fd521c))\n\n### [5.1.13](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.12...reactotron-react-native@5.1.13) (2025-04-22)\n\n\n### Bug Fixes\n\n* **networking:** require XHRInterceptor based on React Native version ([#1556](https://github.com/infinitered/reactotron/issues/1556)) ([e92a47b](https://github.com/infinitered/reactotron/commit/e92a47bdd640d726689fd034b94b2b1bfc3fe7dd))\n\n### [5.1.12](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.11...reactotron-react-native@5.1.12) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [5.1.11](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.10...reactotron-react-native@5.1.11) (2024-12-23)\n\n\n### Bug Fixes\n\n* **reactotron-react-native:** only set DevMenu when in __DEV__ ([#1527](https://github.com/infinitered/reactotron/issues/1527) by [@frankcalise](https://github.com/frankcalise) and [@joshuayoes](https://github.com/joshuayoes)) ([5f692ac](https://github.com/infinitered/reactotron/commit/5f692ac953e73d131eaff6e403afc2211ace9ca2)), closes [#1513](https://github.com/infinitered/reactotron/issues/1513)\n\n### [5.1.10](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.9...reactotron-react-native@5.1.10) (2024-11-14)\n\n\n### Bug Fixes\n\n* Removing react-native-flipper ([#1524](https://github.com/infinitered/reactotron/issues/1524)) ([b1e7022](https://github.com/infinitered/reactotron/commit/b1e7022f8dab52896bc0f058bc877ae767bf1aee)), closes [#1333](https://github.com/infinitered/reactotron/issues/1333)\n\n### [5.1.9](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.8...reactotron-react-native@5.1.9) (2024-10-04)\n\n\n### Bug Fixes\n\n* **reactotron-react-native:** new arch support ([#1508](https://github.com/infinitered/reactotron/issues/1508) by [@frankcalise](https://github.com/frankcalise)) ([c114e09](https://github.com/infinitered/reactotron/commit/c114e09b8488e1a247faa1621a1679ef9ae3a6f8)), closes [#1486](https://github.com/infinitered/reactotron/issues/1486)\n\n### [5.1.8](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.7...reactotron-react-native@5.1.8) (2024-08-26)\n\n### [5.1.7](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.6...reactotron-react-native@5.1.7) (2024-05-15)\n\n### [5.1.6](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.5...reactotron-react-native@5.1.6) (2024-04-04)\n\n### [5.1.5](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.4...reactotron-react-native@5.1.5) (2024-04-01)\n\n### [5.1.4](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.3...reactotron-react-native@5.1.4) (2024-03-26)\n\n### [5.1.3](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.2...reactotron-react-native@5.1.3) (2024-02-15)\n\n### [5.1.2](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.1...reactotron-react-native@5.1.2) (2024-02-14)\n\n## [5.1.1](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.1.0...reactotron-react-native@5.1.1) (2024-02-14)\n\n## [5.1.0](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.5...reactotron-react-native@5.1.0) (2024-02-07)\n\n\n### Features\n\n* **example-app:** Add a LOT of functionality to the demo app ([#1424](https://github.com/infinitered/reactotron/issues/1424)) [skip ci] ([41a539c](https://github.com/infinitered/reactotron/commit/41a539c7e56e968a83ca61b100468f5267865ddd))\n\n### [5.0.5](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4...reactotron-react-native@5.0.5) (2024-01-25)\n\n### Bug Fixes\n\n- **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [5.0.4](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.19...reactotron-react-native@5.0.4) (2023-12-05)\n\n### [5.0.4-beta.19](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.18...reactotron-react-native@5.0.4-beta.19) (2023-12-02)\n\n### Features\n\n- **reactotron-react-native:** enable trackGlobalLogs in useReactNative by default ([#1327](https://github.com/infinitered/reactotron/issues/1327)) ([cee53c8](https://github.com/infinitered/reactotron/commit/cee53c884121fdfaee81ec5bd5c697df676839f0)), closes [/github.com/infinitered/ignite/blob/v9.0.4/boilerplate/app/devtools/ReactotronConfig.ts#L149-L178](https://github.com/infinitered//github.com/infinitered/ignite/blob/v9.0.4/boilerplate/app/devtools/ReactotronConfig.ts/issues/L149-L178)\n\n### [5.0.4-beta.18](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.17...reactotron-react-native@5.0.4-beta.18) (2023-12-01)\n\n### Features\n\n- validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [5.0.4-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.16...reactotron-react-native@5.0.4-beta.17) (2023-11-06)\n\n### [5.0.4-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.15...reactotron-react-native@5.0.4-beta.16) (2023-10-13)\n\n### [5.0.4-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.14...reactotron-react-native@5.0.4-beta.15) (2023-10-02)\n\n### Bug Fixes\n\n- **reactotron-react-native:** remove rn-host-detect, use embedded snippet ([#1311](https://github.com/infinitered/reactotron/issues/1311)) ([61e6243](https://github.com/infinitered/reactotron/commit/61e6243acb392c9c2625e3580509af497208c466)), closes [#1305](https://github.com/infinitered/reactotron/issues/1305) [#1107](https://github.com/infinitered/reactotron/issues/1107) [#815](https://github.com/infinitered/reactotron/issues/815)\n\n### [5.0.4-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.13...reactotron-react-native@5.0.4-beta.14) (2023-09-27)\n\n### [5.0.4-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.12...reactotron-react-native@5.0.4-beta.13) (2023-09-22)\n\n### [5.0.4-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.11...reactotron-react-native@5.0.4-beta.12) (2023-09-08)\n\n### [5.0.4-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.10...reactotron-react-native@5.0.4-beta.11) (2023-09-07)\n\n### [5.0.4-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.9...reactotron-react-native@5.0.4-beta.10) (2023-09-07)\n\n### [5.0.4-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.8...reactotron-react-native@5.0.4-beta.9) (2023-08-25)\n\n### [5.0.4-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.7...reactotron-react-native@5.0.4-beta.8) (2023-08-24)\n\n### [5.0.4-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.6...reactotron-react-native@5.0.4-beta.7) (2023-07-24)\n\n### [5.0.4-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.5...reactotron-react-native@5.0.4-beta.6) (2023-07-20)\n\n### [5.0.4-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.4...reactotron-react-native@5.0.4-beta.5) (2023-07-17)\n\n### [5.0.4-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.3...reactotron-react-native@5.0.4-beta.4) (2023-07-06)\n\n### [5.0.4-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.2...reactotron-react-native@5.0.4-beta.3) (2023-07-03)\n\n### [5.0.4-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.1...reactotron-react-native@5.0.4-beta.2) (2023-06-15)\n\n### [5.0.4-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-beta.0...reactotron-react-native@5.0.4-beta.1) (2023-06-15)\n\n### [5.0.4-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.7...reactotron-react-native@5.0.4-beta.0) (2023-04-06)\n\n### [5.0.4-alpha.7](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.6...reactotron-react-native@5.0.4-alpha.7) (2023-03-21)\n\n### Bug Fixes\n\n- **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n- **reactotron-react-js:** Add stub tests, remove yarn.lock ([8d90df3](https://github.com/infinitered/reactotron/commit/8d90df386381734792bbddafac58df46a9e8ac24))\n- **reactotron-react-native:** Set skipLibCheck to true to avoid build error ([b52521b](https://github.com/infinitered/reactotron/commit/b52521b3b11cbdfde1932138f43b0de374690095))\n\n### [5.0.4-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.5...reactotron-react-native@5.0.4-alpha.6) (2023-03-06)\n\n### [5.0.4-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.4...reactotron-react-native@5.0.4-alpha.5) (2023-03-06)\n\n### [5.0.4-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.3...reactotron-react-native@5.0.4-alpha.4) (2023-03-06)\n\n### [5.0.4-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.2...reactotron-react-native@5.0.4-alpha.3) (2023-03-01)\n\n### [5.0.4-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.1...reactotron-react-native@5.0.4-alpha.2) (2023-02-17)\n\n### [5.0.4-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.4-alpha.0...reactotron-react-native@5.0.4-alpha.1) (2023-02-13)\n\n### Features\n\n- **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n### Bug Fixes\n\n- **config.yml:** remove unused circleci files ([5d40a4d](https://github.com/infinitered/reactotron/commit/5d40a4ddba0b5ac8759216152000f54158d32669))\n- **lib:** add yarn test --runInBand ([4f7c49b](https://github.com/infinitered/reactotron/commit/4f7c49bc1ab8074fedbb3285f66d603aefa3d09f))\n\n### [5.0.4-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-react-native@5.0.3...reactotron-react-native@5.0.4-alpha.0) (2023-02-02)\n\n### Features\n\n- **reactotron-react-native:** add workspace ([7008bf9](https://github.com/infinitered/reactotron/commit/7008bf973d72cbf83f36ccadfbe592b5189c6b13))\n\n### Bug Fixes\n\n- **examples:** copy local file into DemoReactNative ([2b790a6](https://github.com/infinitered/reactotron/commit/2b790a68bd25dc7d487ba48ea9b55389467b735a))\n"
  },
  {
    "path": "lib/reactotron-react-native/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-react-native/README.md",
    "content": "# reactotron-react-native\n\nA development tool to explore, inspect, and diagnose your React Native apps.\n"
  },
  {
    "path": "lib/reactotron-react-native/package.json",
    "content": "{\n  \"name\": \"reactotron-react-native\",\n  \"version\": \"5.1.18\",\n  \"description\": \"A development tool to explore, inspect, and diagnose your React Native apps.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-react-native\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-react-native\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf dist\",\n    \"lint\": \"eslint src --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"peerDependencies\": {\n    \"react-native\": \">=0.40.0\"\n  },\n  \"dependencies\": {\n    \"mitt\": \"^3.0.1\",\n    \"reactotron-core-client\": \"workspace:*\"\n  },\n  \"resolutions\": {\n    \"@types/react-native\": \"0.72.1\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/plugin-transform-react-jsx\": \"^7.22.15\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@react-native-async-storage/async-storage\": \"^1.19.4\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@types/react\": \"18.2.45\",\n    \"@types/react-native\": \"0.72.5\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"npm-run-all\": \"4.1.5\",\n    \"prettier\": \"^3.0.3\",\n    \"react\": \"^18.2.0\",\n    \"react-native\": \"0.73.6\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"rimraf\": \"5.0.5\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"extends\": [\n      \"plugin:react/recommended\"\n    ],\n    \"plugins\": [\n      \"react\",\n      \"react-hooks\"\n    ],\n    \"settings\": {\n      \"react\": {\n        \"version\": \"detect\"\n      }\n    },\n    \"parserOptions\": {\n      \"ecmaFeatures\": {\n        \"jsx\": true\n      }\n    },\n    \"rules\": {\n      \"react-hooks/rules-of-hooks\": \"error\",\n      \"react-hooks/exhaustive-deps\": \"warn\",\n      \"no-use-before-define\": 0,\n      \"react/prop-types\": 0\n    },\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.ts\"\n    ],\n    \"modulePathIgnorePatterns\": [\n      \"<rootDir>/dist/\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/project.json",
    "content": "{\n  \"name\": \"reactotron-react-native\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativeDimensions.test.ts",
    "content": "import { getReactNativeDimensionsWithDimensions } from \"./getReactNativeDimensionsWithDimensions\"\n\ndescribe(\"getReactNativeDimensions\", () => {\n  it(\"should return dimensions\", () => {\n    const screenDimensions = { width: 10, height: 51, scale: 1, fontScale: 3 }\n    const windowDimensions = { width: 10, height: 15, scale: 23, fontScale: 3 }\n    const result = getReactNativeDimensionsWithDimensions(screenDimensions, windowDimensions)\n\n    expect(result).toEqual({\n      screenWidth: Math.ceil(screenDimensions.width),\n      screenHeight: Math.ceil(screenDimensions.height),\n      screenScale: screenDimensions.scale,\n      screenFontScale: screenDimensions.fontScale,\n      windowWidth: Math.ceil(windowDimensions.width),\n      windowHeight: Math.ceil(windowDimensions.height),\n      windowScale: windowDimensions.scale,\n      windowFontScale: windowDimensions.fontScale,\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativeDimensions.ts",
    "content": "import { Dimensions } from \"react-native\"\nimport {\n  AppDimensions,\n  getReactNativeDimensionsWithDimensions,\n} from \"./getReactNativeDimensionsWithDimensions\"\n\nexport default function getReactNativeDimensions(): AppDimensions | null {\n  let screen = null\n  let win = null\n\n  try {\n    screen = Dimensions.get(\"screen\")\n  } catch {}\n\n  try {\n    win = Dimensions.get(\"window\")\n  } catch {}\n\n  return getReactNativeDimensionsWithDimensions(screen, win)\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativeDimensionsWithDimensions.ts",
    "content": "export interface AppDimensions {\n  screenWidth?: number\n  screenHeight?: number\n  screenScale?: number\n  screenFontScale?: number\n  windowWidth?: number\n  windowHeight?: number\n  windowScale?: number\n  windowFontScale?: number\n}\n\nexport function getReactNativeDimensionsWithDimensions(\n  screen: any,\n  win: any\n): AppDimensions | null {\n  try {\n    let screenInfo = {}\n    let windowInfo = {}\n\n    if (screen) {\n      screenInfo = {\n        screenWidth: Math.ceil(screen.width),\n        screenHeight: Math.ceil(screen.height),\n        screenScale: screen.scale,\n        screenFontScale: screen.fontScale,\n      }\n    }\n\n    if (win) {\n      windowInfo = {\n        windowWidth: Math.ceil(win.width),\n        windowHeight: Math.ceil(win.height),\n        windowScale: win.scale,\n        windowFontScale: win.fontScale,\n      }\n    }\n\n    return {\n      ...screenInfo,\n      ...windowInfo,\n    }\n  } catch (e) {}\n\n  return null\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativePlatformConstants.ts",
    "content": "import { Platform, PlatformIOSStatic, PlatformAndroidStatic } from \"react-native\"\n\ninterface PlatformConstants {\n  osRelease: string\n  model: string\n  serverHost: string\n  uiMode: string\n  serial: string\n  forceTouch: boolean\n  interfaceIdiom: string\n  systemName: string\n}\n\nexport default function getReactNativePlatformConstants(): PlatformConstants {\n  const defaults: PlatformConstants = {\n    osRelease: \"\",\n    model: \"\",\n    serverHost: \"\",\n    uiMode: \"\",\n    serial: \"\",\n    forceTouch: false,\n    interfaceIdiom: \"\",\n    systemName: \"\",\n  }\n\n  if (Platform.OS === \"android\") {\n    const constants = Platform.constants as PlatformAndroidStatic[\"constants\"]\n\n    return {\n      ...defaults,\n      osRelease: constants.Release,\n      model: constants.Model,\n      serverHost: constants.ServerHost,\n      uiMode: constants.uiMode,\n      serial: constants.Serial,\n    }\n  } else if (Platform.OS === \"ios\") {\n    const constants = Platform.constants as PlatformIOSStatic[\"constants\"]\n    return {\n      ...defaults,\n      forceTouch: constants.forceTouchAvailable || false,\n      interfaceIdiom: constants.interfaceIdiom,\n      systemName: constants.systemName,\n    }\n  }\n\n  return defaults\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativeVersion.test.ts",
    "content": "import { getReactNativeVersionWithModules } from \"./getReactNativeVersionWithModules\"\n\ndescribe(\"getReactNativeVersion\", () => {\n  it(\"should return null if platform constants is null\", () => {\n    const result = getReactNativeVersionWithModules({})\n\n    expect(result).toBe(null)\n  })\n\n  it(\"should return null if the major version is not a number\", () => {\n    const result = getReactNativeVersionWithModules({ reactNativeVersion: { major: \"Hello\" } })\n\n    expect(result).toBe(null)\n  })\n\n  it(\"should return a version\", () => {\n    const result = getReactNativeVersionWithModules({\n      reactNativeVersion: { major: 0, minor: 59, patch: 8, prerelease: 5 },\n    })\n\n    expect(result).toEqual(\"0.59.8-5\")\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativeVersion.ts",
    "content": "import { getReactNativeVersionWithModules } from \"./getReactNativeVersionWithModules\"\nimport { Platform } from \"react-native\"\n\nexport default function getReactNativeVersion(): string | null {\n  return getReactNativeVersionWithModules(Platform.constants)\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/getReactNativeVersionWithModules.ts",
    "content": "export function getReactNativeVersionWithModules(constants: any): string | null {\n  try {\n    // dodge some bullets\n    if (!constants) return null\n    if (!constants.reactNativeVersion) return null\n\n    // grab the raw numbers\n    const major = constants.reactNativeVersion.major\n    const minor = constants.reactNativeVersion.minor\n    const patch = constants.reactNativeVersion.patch\n    const prerelease = constants.reactNativeVersion.prerelease\n\n    // check the major or jet\n    if (typeof major !== \"number\") return null\n\n    // assemble!\n    const vParts = []\n    vParts.push(`${major}.${minor}.${patch}`)\n    if (prerelease) vParts.push(`-${prerelease}`)\n    return vParts.join(\"\")\n  } catch {}\n\n  return null\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/parseErrorStack.ts",
    "content": "// eslint-disable-next-line import/namespace\nimport type { StackFrame } from \"react-native/Libraries/Core/NativeExceptionsManager\"\nimport type { HermesParsedStack } from \"react-native/Libraries/Core/Devtools/parseHermesStack\"\n\n// Fixing react-native/Libraries/Core/Devtools/symbolicateStackTrace\n// since the native type definitions are wrong lol\n\n/** @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/Devtools/parseErrorStack.js#L41-L57 */\nexport type ParseErrorStackFn = <T extends any[]>(\n  errorStack?: string | T | HermesParsedStack\n) => Array<StackFrame>\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/parseURL.test.ts",
    "content": "import { getHostFromUrl } from \"./parseURL\"\n\ndescribe(\"getHostFromUrl\", () => {\n  it(\"should throw when no host is found\", () => {\n    expect(() => {\n      getHostFromUrl(\"\")\n    }).toThrow()\n  })\n\n  it(\"should get host from URL without scheme\", () => {\n    Object.entries({\n      localhost: \"localhost\",\n      \"127.0.0.1\": \"127.0.0.1\",\n      \"[::1]\": \"[::1]\",\n    }).forEach(([host, url]) => {\n      expect(getHostFromUrl(url)).toEqual(host)\n    })\n    expect(getHostFromUrl(\"localhost\")).toEqual(\"localhost\")\n    expect(getHostFromUrl(\"127.0.0.1\")).toEqual(\"127.0.0.1\")\n  })\n\n  it(\"should get the host from URL with http scheme\", () => {\n    Object.entries({\n      localhost: \"http://localhost\",\n      \"example.com\": \"http://example.com\",\n    }).forEach(([host, url]) => {\n      expect(getHostFromUrl(url)).toEqual(host)\n    })\n  })\n\n  it(\"should get the host from URL with https scheme\", () => {\n    Object.entries({\n      localhost: \"https://localhost\",\n      \"example.com\": \"https://example.com\",\n    }).forEach(([host, url]) => {\n      expect(getHostFromUrl(url)).toEqual(host)\n    })\n  })\n\n  it(\"should get the host from URL and ignore path, port, and query params\", () => {\n    Object.entries({\n      localhost:\n        \"http://localhost:8081/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&lazy=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&app=com.reactotronapp\",\n      \"192.168.1.141\":\n        \"https://192.168.1.141:8081/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&lazy=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&app=com.reactotronapp\",\n    }).forEach(([host, url]) => {\n      expect(getHostFromUrl(url)).toEqual(host)\n    })\n  })\n\n  it(\"should get the host from an IPv6 URL and ignore path, port, and query params\", () => {\n    Object.entries({\n      \"[::1]\":\n        \"http://[::1]:8081/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&lazy=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&app=com.reactotronapp\",\n      \"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]\":\n        \"https://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8081/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&lazy=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&app=com.reactotronapp\",\n    }).forEach(([host, url]) => {\n      expect(getHostFromUrl(url)).toEqual(host)\n    })\n  })\n\n  it(\"should get the host from URL with hyphens\", () => {\n    expect(getHostFromUrl(\"https://example-app.com\")).toEqual(\"example-app.com\")\n  })\n\n  it(\"should throw when the URL is an unsupported scheme\", () => {\n    expect(() => {\n      getHostFromUrl(\"file:///Users/tron\")\n    }).toThrow()\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/parseURL.ts",
    "content": "/**\n * Given a valid http(s) URL, the host for the given URL\n * is returned.\n *\n * @param url {string} URL to extract the host from\n * @returns {string} host of given URL or throws\n */\n// Using a capture group to extract the hostname from a URL\nexport function getHostFromUrl(url: string) {\n  // Group 1: http(s)://\n  // Group 2: host\n  // Group 3: port\n  // Group 4: rest\n  const host = url.match(/^(?:https?:\\/\\/)?(\\[[^\\]]+\\]|[^/:\\s]+)(?::\\d+)?(?:[/?#]|$)/)?.[1]\n\n  if (typeof host !== \"string\") throw new Error(\"Invalid URL - host not found\")\n\n  return host\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/helpers/symbolicateStackTrace.ts",
    "content": "// The actual type definitions are wrong, so we are fixing them lol\n// eslint-disable-next-line import/namespace\nimport type { StackFrame } from \"react-native/Libraries/Core/NativeExceptionsManager\"\n\n/** @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/Devtools/symbolicateStackTrace.js#L17-L25 */\nexport type CodeFrame = Readonly<{\n  content: string\n  location:\n    | {\n        row: number\n        column: number\n      }\n    | null\n    | undefined\n  fileName: string\n}>\n\n/** @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/Devtools/symbolicateStackTrace.js#L27-L30 */\nexport type SymbolicatedStackTrace = Readonly<{\n  stack: Array<StackFrame>\n  codeFrame: CodeFrame | null | undefined\n}>\n\n/** @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/Devtools/symbolicateStackTrace.js#L32-L34 */\nexport type SymbolicateStackTraceFn = (stack: Array<StackFrame>) => Promise<SymbolicatedStackTrace>\n"
  },
  {
    "path": "lib/reactotron-react-native/src/index.ts",
    "content": "import reactotron from \"./reactotron-react-native\"\nexport * from \"./reactotron-react-native\"\nexport default reactotron\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/asyncStorage.ts",
    "content": "import type { ReactotronCore, Plugin } from \"reactotron-core-client\"\nimport type { AsyncStorageStatic } from \"@react-native-async-storage/async-storage\"\nexport interface AsyncStorageOptions {\n  ignore?: string[]\n}\n\nconst PLUGIN_DEFAULTS: Required<AsyncStorageOptions> = {\n  ignore: [],\n}\n\nconst asyncStorage = (options?: AsyncStorageOptions) => (reactotron: ReactotronCore) => {\n  // setup configuration\n  const config = Object.assign({}, PLUGIN_DEFAULTS, options || {})\n  const ignore = config.ignore || PLUGIN_DEFAULTS.ignore\n\n  let swizzSetItem: AsyncStorageStatic[\"setItem\"]\n  let swizzRemoveItem: AsyncStorageStatic[\"removeItem\"]\n  let swizzMergeItem: AsyncStorageStatic[\"mergeItem\"]\n  let swizzClear: AsyncStorageStatic[\"clear\"]\n  let swizzMultiSet: AsyncStorageStatic[\"multiSet\"]\n  let swizzMultiRemove: AsyncStorageStatic[\"multiRemove\"]\n  let swizzMultiMerge: AsyncStorageStatic[\"multiMerge\"]\n  let isSwizzled = false\n\n  const sendToReactotron = (action: string, data?: any) => {\n    reactotron.send(\"asyncStorage.mutation\", { action, data })\n  }\n\n  const setItem: AsyncStorageStatic[\"setItem\"] = async (key, value, callback) => {\n    try {\n      if (ignore.indexOf(key) < 0) {\n        sendToReactotron(\"setItem\", { key, value })\n      }\n    } catch (e) {}\n    return swizzSetItem(key, value, callback)\n  }\n\n  const removeItem: AsyncStorageStatic[\"removeItem\"] = async (key, callback) => {\n    try {\n      if (ignore.indexOf(key) < 0) {\n        sendToReactotron(\"removeItem\", { key })\n      }\n    } catch (e) {}\n    return swizzRemoveItem(key, callback)\n  }\n\n  const mergeItem: AsyncStorageStatic[\"mergeItem\"] = async (key, value, callback) => {\n    try {\n      if (ignore.indexOf(key) < 0) {\n        sendToReactotron(\"mergeItem\", { key, value })\n      }\n    } catch (e) {}\n    return swizzMergeItem(key, value, callback)\n  }\n\n  const clear: AsyncStorageStatic[\"clear\"] = async (callback) => {\n    try {\n      sendToReactotron(\"clear\")\n    } catch (e) {}\n    return swizzClear(callback)\n  }\n\n  const multiSet: AsyncStorageStatic[\"multiSet\"] = async (pairs, callback) => {\n    try {\n      const shippablePairs = (pairs || []).filter(\n        (pair) => pair && pair[0] && ignore.indexOf(pair[0]) < 0\n      )\n      if (shippablePairs.length > 0) {\n        sendToReactotron(\"multiSet\", { pairs: shippablePairs })\n      }\n    } catch (e) {}\n    return swizzMultiSet(pairs, callback)\n  }\n\n  const multiRemove: AsyncStorageStatic[\"multiRemove\"] = async (keys, callback) => {\n    try {\n      const shippableKeys = (keys || []).filter((key) => ignore.indexOf(key) < 0)\n      if (shippableKeys.length > 0) {\n        sendToReactotron(\"multiRemove\", { keys: shippableKeys })\n      }\n    } catch (e) {}\n    return swizzMultiRemove(keys, callback)\n  }\n\n  const multiMerge: AsyncStorageStatic[\"multiMerge\"] = async (pairs, callback) => {\n    try {\n      const shippablePairs = (pairs || []).filter(\n        (pair) => pair && pair[0] && ignore.indexOf(pair[0]) < 0\n      )\n      if (shippablePairs.length > 0) {\n        sendToReactotron(\"multiMerge\", { pairs: shippablePairs })\n      }\n    } catch (e) {}\n    return swizzMultiMerge(pairs, callback)\n  }\n\n  /**\n   * Hijacks the AsyncStorage API.\n   */\n  const trackAsyncStorage = () => {\n    if (isSwizzled) return\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzSetItem = reactotron.asyncStorageHandler.setItem\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.setItem = setItem\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzRemoveItem = reactotron.asyncStorageHandler.removeItem\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.removeItem = removeItem\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzMergeItem = reactotron.asyncStorageHandler.mergeItem\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.mergeItem = mergeItem\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzClear = reactotron.asyncStorageHandler.clear\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.clear = clear\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzMultiSet = reactotron.asyncStorageHandler.multiSet\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.multiSet = multiSet\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzMultiRemove = reactotron.asyncStorageHandler.multiRemove\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.multiRemove = multiRemove\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    swizzMultiMerge = reactotron.asyncStorageHandler.multiMerge\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.multiMerge = multiMerge\n\n    isSwizzled = true\n  }\n\n  const untrackAsyncStorage = () => {\n    if (!isSwizzled) return\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.setItem = swizzSetItem\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.removeItem = swizzRemoveItem\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.mergeItem = swizzMergeItem\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.clear = swizzClear\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.multiSet = swizzMultiSet\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.multiRemove = swizzMultiRemove\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: reactotron-apis\n    reactotron.asyncStorageHandler.multiMerge = swizzMultiMerge\n\n    isSwizzled = false\n  }\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore: reactotron-apis\n  if (reactotron.asyncStorageHandler) {\n    trackAsyncStorage()\n  }\n\n  return {\n    features: {\n      trackAsyncStorage,\n      untrackAsyncStorage,\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default asyncStorage\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/devTools.ts",
    "content": "import { Platform, TurboModuleRegistry } from \"react-native\"\nimport type { ReactotronCore, Plugin } from \"reactotron-core-client\"\nimport type { Spec } from \"react-native/Libraries/NativeModules/specs/NativeDevMenu\"\n\n/**\n * Lazily get the DevMenu module.\n *\n * This avoids trying a potentially risky call to React Native internals unless our dear developer actually wants to use it.\n */\nconst getDevMenu = (): Spec => {\n  const notAvailable = (method: string) => {\n    console.warn(`DevMenu.${method}() not available in this environment`)\n  }\n\n  const stubDevMenu: Spec = {\n    reload() {\n      notAvailable(\"reload\")\n    },\n    show() {\n      notAvailable(\"show\")\n    },\n    getConstants() {\n      return {}\n    },\n    debugRemotely() {\n      notAvailable(\"debugRemotely\")\n    },\n    setHotLoadingEnabled() {\n      notAvailable(\"setHotLoadingEnabled\")\n    },\n    setProfilingEnabled() {\n      notAvailable(\"setProfilingEnabled\")\n    },\n  }\n\n  if (Platform.OS === \"ios\" && __DEV__) {\n    try {\n      // use TurboModuleRegistry.get instead of TurboModuleRegistry.getEnforcing, like at\n      // https://github.com/facebook/react-native/blob/main/packages/react-native/src/private/specs/modules/NativeDevMenu.js#L23\n      const DevMenu = TurboModuleRegistry.get<Spec>(\"DevMenu\")\n      // the DevMenu module is not available in all environments, like Expo Go, so we need to check if it exists\n      if (DevMenu) return DevMenu\n      return stubDevMenu\n    } catch {\n      return stubDevMenu\n    }\n  }\n\n  return stubDevMenu\n}\n\nconst devTools = () => () => {\n  return {\n    onCommand: (command) => {\n      if (command.type !== \"devtools.open\" && command.type !== \"devtools.reload\") return\n\n      if (command.type === \"devtools.open\") {\n        const DevMenu = getDevMenu()\n        DevMenu.show()\n      }\n\n      if (command.type === \"devtools.reload\") {\n        const DevMenu = getDevMenu()\n        DevMenu.reload()\n      }\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default devTools\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/networking.ts",
    "content": "import type { ReactotronCore, Plugin } from \"reactotron-core-client\"\nimport { XHRInterceptor } from \"../xhr-interceptor\"\n\n/**\n * Don't include the response bodies for images by default.\n */\nconst DEFAULT_CONTENT_TYPES_RX = /^(image)\\/.*$/i\n\nexport interface NetworkingOptions {\n  ignoreContentTypes?: RegExp\n  ignoreUrls?: RegExp\n}\n\nconst DEFAULTS: NetworkingOptions = {}\n\nconst networking =\n  (pluginConfig: NetworkingOptions = {}) =>\n  (reactotron: ReactotronCore) => {\n    const options = Object.assign({}, DEFAULTS, pluginConfig)\n\n    // a RegExp to suppress adding the body cuz it costs a lot to serialize\n    const ignoreContentTypes = options.ignoreContentTypes || DEFAULT_CONTENT_TYPES_RX\n\n    // a XHR call tracker\n    let reactotronCounter = 1000\n\n    // a temporary cache to hold requests so we can match up the data\n    const requestCache = {}\n\n    /**\n     * Fires when we talk to the server.\n     *\n     * @param {*} data - The data sent to the server.\n     * @param {*} instance - The XMLHTTPRequest instance.\n     */\n    function onSend(data, xhr) {\n      if (options.ignoreUrls && options.ignoreUrls.test(xhr._url)) {\n        xhr._skipReactotron = true\n        return\n      }\n\n      // bump the counter\n      reactotronCounter++\n\n      // tag\n      xhr._trackingName = reactotronCounter\n\n      // cache\n      requestCache[reactotronCounter] = {\n        data,\n        xhr,\n        stopTimer: reactotron.startTimer(),\n      }\n    }\n\n    /**\n     * Fires when the server gives us a response.\n     *\n     * @param {number} status - The HTTP response status.\n     * @param {boolean} timeout - Did we timeout?\n     * @param {*} response - The response data.\n     * @param {string} url - The URL we talked to.\n     * @param {*} type - Not sure.\n     * @param {*} xhr - The XMLHttpRequest instance.\n     */\n    function onResponse(status, timeout, response, url, type, xhr) {\n      if (xhr._skipReactotron) {\n        return\n      }\n\n      let params = null\n      const queryParamIdx = url ? url.indexOf(\"?\") : -1\n      if (queryParamIdx > -1) {\n        params = {}\n        url\n          .substr(queryParamIdx + 1)\n          .split(\"&\")\n          .forEach((pair) => {\n            const [key, value] = pair.split(\"=\")\n            if (key && value !== undefined) {\n              params[key] = decodeURIComponent(value.replace(/\\+/g, \" \"))\n            }\n          })\n      }\n\n      // fetch and clear the request data from the cache\n      const rid = xhr._trackingName\n      const cachedRequest = requestCache[rid] || { xhr }\n      requestCache[rid] = null\n\n      // assemble the request object\n      const { data, stopTimer } = cachedRequest\n      const tronRequest = {\n        url: url || cachedRequest.xhr._url,\n        method: xhr._method || null,\n        data,\n        headers: xhr._headers || null,\n        params,\n      }\n\n      // what type of content is this?\n      const contentType =\n        (xhr.responseHeaders && xhr.responseHeaders[\"content-type\"]) ||\n        (xhr.responseHeaders && xhr.responseHeaders[\"Content-Type\"]) ||\n        \"\"\n\n      const sendResponse = (responseBodyText) => {\n        let body = `~~~ skipped ~~~`\n        if (responseBodyText) {\n          try {\n            // all i am saying, is give JSON a chance...\n            body = JSON.parse(responseBodyText)\n          } catch (boom) {\n            body = response\n          }\n        }\n        const tronResponse = {\n          body,\n          status,\n          headers: xhr.responseHeaders || null,\n        }\n        ;(reactotron as any).apiResponse(tronRequest, tronResponse, stopTimer ? stopTimer() : null) // TODO: Fix\n      }\n\n      // can we use the real response?\n      const useRealResponse =\n        (typeof response === \"string\" || typeof response === \"object\") &&\n        !ignoreContentTypes.test(contentType || \"\")\n\n      // prepare the right body to send\n      if (useRealResponse) {\n        if (type === \"blob\" && typeof FileReader !== \"undefined\" && response) {\n          // Disable reason: FileReader should be in global scope since RN 0.54\n          // eslint-disable-next-line no-undef\n          const bReader = new FileReader()\n          const brListener = () => {\n            sendResponse(bReader.result)\n            bReader.removeEventListener(\"loadend\", brListener)\n          }\n          bReader.addEventListener(\"loadend\", brListener)\n          bReader.readAsText(response)\n        } else {\n          sendResponse(response)\n        }\n      } else {\n        sendResponse(\"\")\n      }\n    }\n\n    return {\n      onConnect: () => {\n        // register our monkey-patch\n        XHRInterceptor.setSendCallback(onSend)\n        XHRInterceptor.setResponseCallback(onResponse)\n        XHRInterceptor.enableInterception()\n      },\n    } satisfies Plugin<ReactotronCore>\n  }\nexport default networking\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/openInEditor.ts",
    "content": "import type { ReactotronCore, Plugin } from \"reactotron-core-client\"\n\nexport interface OpenInEditorOptions {\n  url?: string\n}\n\nconst DEFAULTS: OpenInEditorOptions = {\n  url: \"http://localhost:8081\",\n}\n\nconst openInEditor =\n  (pluginConfig: OpenInEditorOptions = {}) =>\n  () => {\n    const options = Object.assign({}, DEFAULTS, pluginConfig)\n\n    return {\n      onCommand: (command) => {\n        if (command.type !== \"editor.open\") return\n        const { payload } = command\n        const { file, lineNumber } = payload\n        const url = `${options.url}/open-stack-frame`\n        const body = { file, lineNumber: lineNumber || 1 }\n        const method = \"POST\"\n\n        fetch(url, { method, body: JSON.stringify(body) })\n      },\n    } satisfies Plugin<ReactotronCore>\n  }\nexport default openInEditor\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/overlay/index.tsx",
    "content": "import React from \"react\"\nimport { View } from \"react-native\"\nimport mitt from \"mitt\"\nimport type { ReactotronCore, Plugin } from \"reactotron-core-client\"\n\nimport FullScreenOverlay from \"./overlay\"\n\nexport default function OverlayCreator() {\n  return function overlay() {\n    const emitter = mitt()\n\n    return {\n      /**\n       * Fires when any Reactotron message arrives.\n       */\n      onCommand: (command) => {\n        if (command.type !== \"overlay\") return\n        // relay this payload on to the emitter\n        emitter.emit(\"overlay\", command.payload)\n      },\n\n      features: {\n        overlay:\n          (WrappedComponent: React.ComponentType) =>\n          (props: Record<string, any> = {}) =>\n            (\n              <View style={{ flex: 1 }}>\n                <WrappedComponent {...props} />\n                <FullScreenOverlay emitter={emitter} />\n              </View>\n            ),\n      },\n    } satisfies Plugin<ReactotronCore>\n  }\n}\n\nexport type OverlayFeatures = ReturnType<ReturnType<typeof OverlayCreator>>[\"features\"]\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/overlay/overlay.tsx",
    "content": "import React, { Component } from \"react\"\nimport {\n  Dimensions,\n  View,\n  Image,\n  ImageResizeMode,\n  FlexAlignType,\n  ViewStyle,\n  Text,\n  TextStyle,\n  AnimatableNumericValue,\n} from \"react-native\"\n\nconst Styles: {\n  container: ViewStyle\n  debugContainer: ViewStyle\n  debugTextContainer: ViewStyle\n  debugText: TextStyle\n} = {\n  container: {\n    position: \"absolute\",\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n    zIndex: 1000,\n    opacity: 0.25,\n  },\n  debugContainer: {\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    backgroundColor: \"transparent\",\n    zIndex: 2000,\n  },\n  debugTextContainer: {\n    backgroundColor: \"lightgray\",\n    margin: 50,\n    padding: 20,\n  },\n  debugText: {\n    color: \"red\",\n    fontSize: 16,\n    marginBottom: 10,\n  },\n}\n\ninterface Props {\n  emitter: any\n}\n\ninterface State {\n  opacity: AnimatableNumericValue\n  uri: string\n  justifyContent:\n    | \"flex-start\"\n    | \"flex-end\"\n    | \"center\"\n    | \"space-between\"\n    | \"space-around\"\n    | \"space-evenly\"\n  alignItems: FlexAlignType\n  width?: number\n  height?: number\n  growToWindow?: boolean\n  resizeMode?: ImageResizeMode\n  marginLeft?: number\n  marginRight?: number\n  marginTop?: number\n  marginBottom?: number\n  showDebug?: boolean\n}\n\n/** An overlay for showing an image to help with layout.\n *\n * @class FullScreenOverlay\n * @extends {Component}\n */\nclass FullScreenOverlay extends Component<Props, State> {\n  constructor(props: Props) {\n    super(props)\n\n    this.state = {\n      opacity: Styles.container.opacity,\n      uri: null,\n      justifyContent: \"center\",\n      alignItems: \"center\",\n    }\n\n    // when the server sends stuff\n    props.emitter.on(\"overlay\", (payload: State) => {\n      this.setState({ ...this.state, ...payload })\n    })\n  }\n\n  createContainerStyle() {\n    const { opacity, justifyContent, alignItems } = this.state\n    const { width, height } = Dimensions.get(\"window\")\n    const containerStyle = {\n      ...Styles.container,\n      opacity,\n      width,\n      height,\n      justifyContent,\n      alignItems,\n    }\n\n    return containerStyle\n  }\n\n  renderDebug() {\n    const { showDebug } = this.state\n\n    // If Reactotron is configured properly it should be disabled in production.\n    // We'll throw a __DEV__ check in here just in case it get's feisty.\n    if (!__DEV__ || !showDebug) return null\n\n    return (\n      <View style={Styles.debugContainer} pointerEvents=\"none\">\n        <View style={Styles.debugTextContainer}>\n          {Object.keys(this.state).map((key) => {\n            if (key === \"showDebug\") return null\n            const keyName = key === \"uri\" ? \"have image\" : key\n            const value = key === \"uri\" ? !!this.state[key] : this.state[key]\n            return (\n              <Text key={key} style={Styles.debugText}>\n                {`${keyName}: ${value}`}\n              </Text>\n            )\n          })}\n        </View>\n      </View>\n    )\n  }\n\n  /**\n   * Draw.\n   */\n  render() {\n    const {\n      uri,\n      width,\n      height,\n      growToWindow,\n      resizeMode,\n      marginLeft = 0,\n      marginRight = 0,\n      marginTop = 0,\n      marginBottom = 0,\n    } = this.state\n    const imageStyle = { width, height, marginTop, marginRight, marginBottom, marginLeft }\n    if (growToWindow) {\n      const windowSize = Dimensions.get(\"window\")\n      imageStyle.width = windowSize.width\n      imageStyle.height = windowSize.height\n    }\n    const image = uri ? (\n      <Image source={{ uri }} style={imageStyle} resizeMode={growToWindow ? resizeMode : null} />\n    ) : (\n      <View />\n    )\n\n    return (\n      <>\n        <View style={this.createContainerStyle()} pointerEvents=\"none\">\n          {image}\n        </View>\n        {this.renderDebug()}\n      </>\n    )\n  }\n}\n\nexport default FullScreenOverlay\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/storybook/index.tsx",
    "content": "import React from \"react\"\nimport mitt from \"mitt\"\nimport type { ReactotronCore, Plugin } from \"reactotron-core-client\"\n\nimport StorybookSwitcher from \"./storybook\"\n\n/**\n * A plugin which provides .storybookSwitcher() on Reactotron.\n */\nexport default () => () => {\n  const emitter = mitt()\n\n  return {\n    onCommand: (command) => {\n      if (command.type !== \"storybook\") return\n      // relay this payload on to the emitter\n      emitter.emit(\"storybook\", command.payload)\n    },\n\n    features: {\n      storybookSwitcher:\n        (storybookUi: StorybookSwitcher[\"props\"][\"storybookUi\"]) =>\n        (WrappedComponent: React.ComponentType<any>) =>\n          function StorybookSwitcherContainer(props: any) {\n            return (\n              <StorybookSwitcher storybookUi={storybookUi} emitter={emitter}>\n                <WrappedComponent {...props} />\n              </StorybookSwitcher>\n            )\n          },\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/storybook/storybook.tsx",
    "content": "import React, { Component } from \"react\"\nimport { View } from \"react-native\"\n\ninterface Props {\n  storybookUi: React.ComponentType\n  emitter: any\n}\n\ninterface State {\n  showStorybook: boolean\n}\n\nclass StorybookSwitcher extends Component<React.PropsWithChildren<Props>, State> {\n  /**\n   * Creates an instance of FullScreenOverlay.\n   *\n   * @memberOf FullScreenOverlay\n   */\n  constructor(props: Props) {\n    super(props)\n\n    this.state = {\n      showStorybook: false,\n    }\n\n    // when the server sends stuff\n    props.emitter.on(\"storybook\", (payload: boolean) => {\n      this.setState({ showStorybook: payload })\n    })\n  }\n\n  /**\n   * Draw.\n   */\n  render() {\n    const { showStorybook } = this.state\n    const { storybookUi: StorybookUi, children } = this.props\n\n    return <View style={{ flex: 1 }}>{showStorybook ? <StorybookUi /> : children}</View>\n  }\n}\n\nexport default StorybookSwitcher\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/trackGlobalErrors.ts",
    "content": "/**\n * Provides a global error handler to report errors..\n */\nimport {\n  type InferFeatures,\n  type LoggerPlugin,\n  type ReactotronCore,\n  assertHasLoggerPlugin,\n  type Plugin,\n} from \"reactotron-core-client\"\nimport _LogBox, {\n  type LogBoxStatic as LogBoxStaticPublic,\n  // eslint-disable-next-line import/default, import/namespace\n} from \"react-native/Libraries/LogBox/LogBox\"\n// eslint-disable-next-line import/namespace\nimport type { ExtendedExceptionData } from \"react-native/Libraries/LogBox/Data/parseLogBoxLog\"\nimport type { SymbolicateStackTraceFn } from \"../helpers/symbolicateStackTrace\"\nimport type { ParseErrorStackFn } from \"../helpers/parseErrorStack\"\n\ninterface LogBoxStaticPrivate extends LogBoxStaticPublic {\n  /**\n   * @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/LogBox/LogBox.js#L29\n   */\n  addException: (error: ExtendedExceptionData) => void\n}\n\nconst LogBox = _LogBox as unknown as LogBoxStaticPrivate\n\n// a few functions to help source map errors -- these seem to be not available immediately\n// so we're lazy loading.\nlet parseErrorStack: ParseErrorStackFn\nlet symbolicateStackTrace: SymbolicateStackTraceFn\n\nexport interface ErrorStackFrame {\n  fileName: string\n  functionName: string\n  lineNumber: number\n  columnNumber?: number | null\n}\n\nexport interface TrackGlobalErrorsOptions {\n  veto?: (frame: ErrorStackFrame) => boolean\n}\n\n// defaults\nconst PLUGIN_DEFAULTS: TrackGlobalErrorsOptions = {\n  veto: null,\n}\n\nconst objectifyError = (error: Error) => {\n  const objectifiedError = {} as Record<string, unknown>\n  Object.getOwnPropertyNames(error).forEach((key) => {\n    objectifiedError[key] = error[key]\n  })\n  return objectifiedError\n}\n\n// const reactNativeFrameFinder = frame => contains('/node_modules/react-native/', frame.fileName)\n\n/**\n * Track global errors and send them to Reactotron logger.\n */\nconst trackGlobalErrors = (options?: TrackGlobalErrorsOptions) => (reactotron: ReactotronCore) => {\n  // make sure we have the logger plugin\n  assertHasLoggerPlugin(reactotron)\n  const client = reactotron as ReactotronCore & InferFeatures<ReactotronCore, LoggerPlugin>\n\n  // setup configuration\n  const config = Object.assign({}, PLUGIN_DEFAULTS, options || {})\n\n  // manually fire an error\n  function reportError(error: Parameters<typeof LogBox.addException>[0]) {\n    try {\n      if (!parseErrorStack) {\n        const parseErrorStackModule = require(\"react-native/Libraries/Core/Devtools/parseErrorStack\")\n        // Handle both CommonJS (module.exports) and ESM (export default) formats\n        parseErrorStack =\n          typeof parseErrorStackModule === \"function\"\n            ? parseErrorStackModule\n            : parseErrorStackModule.default\n      }\n\n      if (!symbolicateStackTrace) {\n        const symbolicateStackTraceModule = require(\"react-native/Libraries/Core/Devtools/symbolicateStackTrace\")\n        // Handle both CommonJS (module.exports) and ESM (export default) formats\n        symbolicateStackTrace =\n          typeof symbolicateStackTraceModule === \"function\"\n            ? symbolicateStackTraceModule\n            : symbolicateStackTraceModule.default\n      }\n    } catch (e) {\n      client.error(\n        'Unable to load \"react-native/Libraries/Core/Devtools/parseErrorStack\" or \"react-native/Libraries/Core/Devtools/symbolicateStackTrace\"',\n        []\n      )\n      client.debug(objectifyError(e))\n      return\n    }\n\n    if (!parseErrorStack || !symbolicateStackTrace) {\n      client.error(\"parseErrorStack or symbolicateStackTrace is not available\", [])\n      client.debug({\n        parseErrorStackAvailable: !!parseErrorStack,\n        symbolicateStackTraceAvailable: !!symbolicateStackTrace,\n      })\n      return\n    }\n\n    if (typeof parseErrorStack !== \"function\") {\n      client.error(\"parseErrorStack is not a function\", [])\n      client.debug({\n        parseErrorStackType: typeof parseErrorStack,\n        parseErrorStack,\n      })\n      return\n    }\n\n    if (typeof symbolicateStackTrace !== \"function\") {\n      client.error(\"symbolicateStackTrace is not a function\", [])\n      client.debug({\n        symbolicateStackTraceType: typeof symbolicateStackTrace,\n        symbolicateStackTrace,\n      })\n      return\n    }\n\n    let parsedStacktrace: ReturnType<typeof parseErrorStack>\n\n    try {\n      // parseErrorStack arg type is wrong, it's expecting an array, a string, or a hermes error data, https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/Devtools/parseErrorStack.js#L41\n      parsedStacktrace = parseErrorStack(error.stack)\n    } catch (e) {\n      client.error(\"Unable to parse stack trace from error object\", [])\n      client.debug(objectifyError(e))\n      return\n    }\n\n    symbolicateStackTrace(parsedStacktrace)\n      .then((symbolicatedStackTrace) => {\n        let prettyStackFrames = symbolicatedStackTrace.stack.map((stackFrame) => ({\n          fileName: stackFrame.file,\n          functionName: stackFrame.methodName,\n          lineNumber: stackFrame.lineNumber,\n        }))\n        // does the dev want us to keep each frame?\n        if (config.veto) {\n          prettyStackFrames = prettyStackFrames.filter((frame) => config?.veto(frame))\n        }\n        client.error(error.message, prettyStackFrames) // TODO: Fix this.\n      })\n      .catch((e) => {\n        client.error(\"Unable to symbolicate stack trace from error object\", [])\n        client.debug(objectifyError(e))\n      })\n  }\n\n  // the reactotron plugin interface\n  return {\n    onConnect: () => {\n      LogBox.addException = new Proxy(LogBox.addException, {\n        apply: function (target, thisArg, argumentsList: Parameters<typeof LogBox.addException>) {\n          const error = argumentsList[0]\n          reportError(error)\n          return target.apply(thisArg, argumentsList)\n        },\n      })\n    },\n\n    // attach these functions to the Reactotron\n    features: {\n      reportError,\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default trackGlobalErrors\n"
  },
  {
    "path": "lib/reactotron-react-native/src/plugins/trackGlobalLogs.ts",
    "content": "import {\n  type InferFeatures,\n  type LoggerPlugin,\n  type ReactotronCore,\n  assertHasLoggerPlugin,\n  type Plugin,\n} from \"reactotron-core-client\"\n\n/**\n * Track calls to console.log, console.warn, and console.debug and send them to Reactotron logger\n */\nconst trackGlobalLogs = () => (reactotron: ReactotronCore) => {\n  assertHasLoggerPlugin(reactotron)\n  const client = reactotron as ReactotronCore & InferFeatures<ReactotronCore, LoggerPlugin>\n\n  return {\n    onConnect: () => {\n      const originalConsoleLog = console.log\n      console.log = (...args: Parameters<typeof console.log>) => {\n        originalConsoleLog(...args)\n        client.log(...args)\n      }\n\n      const originalConsoleWarn = console.warn\n      console.warn = (...args: Parameters<typeof console.warn>) => {\n        originalConsoleWarn(...args)\n        client.warn(args[0])\n      }\n\n      const originalConsoleDebug = console.debug\n      console.debug = (...args: Parameters<typeof console.debug>) => {\n        originalConsoleDebug(...args)\n        client.debug(args[0])\n      }\n\n      // console.error is taken care of by ./trackGlobalErrors.ts\n    },\n  } satisfies Plugin<ReactotronCore>\n}\n\nexport default trackGlobalLogs\n"
  },
  {
    "path": "lib/reactotron-react-native/src/reactotron-react-native.ts",
    "content": "import { Platform } from \"react-native\"\nimport { createClient } from \"reactotron-core-client\"\nimport type {\n  ClientOptions,\n  InferFeaturesFromPlugins,\n  PluginCreator,\n  Reactotron,\n  ReactotronCore,\n} from \"reactotron-core-client\"\nimport type { AsyncStorageStatic } from \"@react-native-async-storage/async-storage\"\n// eslint-disable-next-line import/namespace, import/default\nimport NativeSourceCode from \"react-native/Libraries/NativeModules/specs/NativeSourceCode\"\nimport getReactNativeVersion from \"./helpers/getReactNativeVersion\"\nimport getReactNativeDimensions from \"./helpers/getReactNativeDimensions\"\nimport asyncStorage, { AsyncStorageOptions } from \"./plugins/asyncStorage\"\nimport overlay from \"./plugins/overlay\"\nimport openInEditor, { OpenInEditorOptions } from \"./plugins/openInEditor\"\nimport trackGlobalErrors, { TrackGlobalErrorsOptions } from \"./plugins/trackGlobalErrors\"\nimport networking, { NetworkingOptions } from \"./plugins/networking\"\nimport storybook from \"./plugins/storybook\"\nimport devTools from \"./plugins/devTools\"\nimport trackGlobalLogs from \"./plugins/trackGlobalLogs\"\nimport { getHostFromUrl } from \"./helpers/parseURL\"\nimport getReactNativePlatformConstants from \"./helpers/getReactNativePlatformConstants\"\n\nconst REACTOTRON_ASYNC_CLIENT_ID = \"@REACTOTRON/clientId\"\n\nlet tempClientId: string | null = null\n\n/**\n * Most of the time, host should be 'localhost'.\n * But sometimes, it's not.  So we need to figure out what it is.\n * @see https://github.com/infinitered/reactotron/issues/1107\n *\n * On an Android emulator, if you want to connect any servers of local, you will need run adb reverse on your terminal. This function gets the localhost IP of host machine directly to bypass this.\n */\nconst getHost = (defaultHost = \"localhost\") => {\n  try {\n    // RN Reference: https://github.com/facebook/react-native/blob/main/packages/react-native/src/private/specs/modules/NativeSourceCode.js\n    const scriptURL = NativeSourceCode.getConstants().scriptURL\n\n    if (typeof scriptURL !== \"string\") throw new Error(\"Invalid non-string URL\")\n\n    return getHostFromUrl(scriptURL)\n  } catch (error) {\n    console.warn(`getHost: \"${error.message}\" for scriptURL - Falling back to ${defaultHost}`)\n    return defaultHost\n  }\n}\n\nconst { osRelease, model, serverHost, forceTouch, interfaceIdiom, systemName, uiMode, serial } =\n  getReactNativePlatformConstants()\n\nconst DEFAULTS: ClientOptions<ReactotronReactNative> = {\n  createSocket: (path: string) => new WebSocket(path), // eslint-disable-line\n  host: getHost(\"localhost\"),\n  port: 9090,\n  name: \"React Native App\",\n  environment: process.env.NODE_ENV || (__DEV__ ? \"development\" : \"production\"),\n  client: {\n    reactotronLibraryName: \"reactotron-react-native\",\n    reactotronLibraryVersion: \"REACTOTRON_REACT_NATIVE_VERSION\",\n    platform: Platform.OS,\n    platformVersion: Platform.Version,\n    osRelease,\n    model,\n    serverHost,\n    forceTouch,\n    interfaceIdiom,\n    systemName,\n    uiMode,\n    serial,\n    reactNativeVersion: getReactNativeVersion(),\n    ...getReactNativeDimensions(),\n  },\n  /* eslint-disable @typescript-eslint/no-use-before-define */\n  getClientId: async (name: string = \"\") => {\n    if (reactotron.asyncStorageHandler) {\n      return reactotron.asyncStorageHandler.getItem(REACTOTRON_ASYNC_CLIENT_ID)\n    }\n\n    // Generate clientId based on the device info\n    const { screenWidth, screenHeight, screenScale } = getReactNativeDimensions()\n\n    // Accounting for screen rotation\n    const dimensions = [screenWidth, screenHeight].sort().join(\"-\")\n\n    const additionalInfo = Platform.select({\n      ios: systemName,\n      android: model,\n      default: \"\",\n    })\n\n    tempClientId = [name, Platform.OS, Platform.Version, additionalInfo, dimensions, screenScale]\n      .filter(Boolean)\n      .join(\"-\")\n\n    return tempClientId\n  },\n  setClientId: async (clientId: string) => {\n    if (reactotron.asyncStorageHandler) {\n      return reactotron.asyncStorageHandler.setItem(REACTOTRON_ASYNC_CLIENT_ID, clientId)\n    }\n\n    tempClientId = clientId\n  },\n  proxyHack: true,\n}\n\nexport interface UseReactNativeOptions {\n  errors?: TrackGlobalErrorsOptions | boolean\n  log?: boolean\n  editor?: OpenInEditorOptions | boolean\n  overlay?: boolean\n  asyncStorage?: AsyncStorageOptions | boolean\n  networking?: NetworkingOptions | boolean\n  storybook?: boolean\n  devTools?: boolean\n}\n\nexport const reactNativeCorePlugins = [\n  asyncStorage(),\n  trackGlobalErrors(),\n  trackGlobalLogs(),\n  openInEditor(),\n  overlay(),\n  networking(),\n  storybook(),\n  devTools(),\n] satisfies PluginCreator<ReactotronCore>[]\n\ntype ReactNativePluginFeatures = InferFeaturesFromPlugins<\n  ReactotronCore,\n  typeof reactNativeCorePlugins\n>\n\nexport interface ReactotronReactNative extends Reactotron, ReactNativePluginFeatures {\n  useReactNative: (options?: UseReactNativeOptions) => this\n  asyncStorageHandler?: AsyncStorageStatic\n  setAsyncStorageHandler: (asyncStorage: AsyncStorageStatic) => this\n}\n\nconst reactotron = createClient<ReactotronReactNative>(DEFAULTS)\n\nfunction getPluginOptions<T>(options?: T | boolean): T {\n  return typeof options === \"object\" ? options : null\n}\n\nreactotron.useReactNative = (options: UseReactNativeOptions = {}) => {\n  if (options.errors !== false) {\n    reactotron.use(trackGlobalErrors(getPluginOptions(options.errors)))\n  }\n\n  if (options.log !== false) {\n    reactotron.use(trackGlobalLogs())\n  }\n\n  if (options.editor !== false) {\n    reactotron.use(openInEditor(getPluginOptions(options.editor)))\n  }\n\n  if (options.overlay !== false) {\n    reactotron.use(overlay())\n  }\n\n  if (options.asyncStorage !== false) {\n    reactotron.use(asyncStorage(getPluginOptions(options.asyncStorage)))\n  }\n\n  if (options.networking !== false) {\n    reactotron.use(networking(getPluginOptions(options.networking)))\n  }\n\n  if (options.storybook !== false) {\n    reactotron.use(storybook())\n  }\n\n  if (options.devTools !== false) {\n    reactotron.use(devTools())\n  }\n\n  return reactotron\n}\n\nreactotron.setAsyncStorageHandler = (asyncStorage: AsyncStorageStatic) => {\n  reactotron.asyncStorageHandler = asyncStorage\n\n  return reactotron\n}\n\nexport {\n  asyncStorage,\n  trackGlobalErrors,\n  trackGlobalLogs,\n  openInEditor,\n  overlay,\n  networking,\n  storybook,\n  devTools,\n}\n\nexport type { ClientOptions }\n\nexport default reactotron\n"
  },
  {
    "path": "lib/reactotron-react-native/src/xhr-interceptor.ts",
    "content": "/* eslint-disable prefer-rest-params */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Vendored from: https://github.com/callstackincubator/rozenite/blob/402e3579878f72cbae7f8123f9ca80459dc1fe7f/packages/network-activity-plugin/src/react-native/http/xhr-interceptor.ts\n * Original source: https://github.com/facebook/react-native/blob/2c683c5787dd03ac15d2aad45dcc53650529ee7f/packages/react-native/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js\n */\n\nconst originalXHROpen = XMLHttpRequest.prototype.open\nconst originalXHRSend = XMLHttpRequest.prototype.send\nconst originalXHRSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader\n\ntype XHRInterceptorOpenCallback = (method: string, url: string, request: XMLHttpRequest) => void\n\ntype XHRInterceptorSendCallback = (data: string, request: XMLHttpRequest) => void\n\ntype XHRInterceptorRequestHeaderCallback = (\n  header: string,\n  value: string,\n  request: XMLHttpRequest\n) => void\n\ntype XHRInterceptorHeaderReceivedCallback = (\n  responseContentType: string | undefined,\n  responseSize: number | undefined,\n  allHeaders: string,\n  request: XMLHttpRequest\n) => void\n\ntype XHRInterceptorResponseCallback = (\n  status: number,\n  timeout: number,\n  response: string,\n  responseURL: string,\n  responseType: string,\n  request: XMLHttpRequest\n) => void\n\nlet openCallback: XHRInterceptorOpenCallback | null\nlet sendCallback: XHRInterceptorSendCallback | null\nlet requestHeaderCallback: XHRInterceptorRequestHeaderCallback | null\nlet headerReceivedCallback: XHRInterceptorHeaderReceivedCallback | null\nlet responseCallback: XHRInterceptorResponseCallback | null\n\nlet isInterceptorEnabled = false\n\n/**\n * A network interceptor which monkey-patches XMLHttpRequest methods\n * to gather all network requests/responses, in order to show their\n * information in the React Native inspector development tool.\n * This supports interception with XMLHttpRequest API, including Fetch API\n * and any other third party libraries that depend on XMLHttpRequest.\n */\nexport const XHRInterceptor = {\n  /**\n   * Invoked before XMLHttpRequest.open(...) is called.\n   */\n  setOpenCallback(callback: XHRInterceptorOpenCallback) {\n    openCallback = callback\n  },\n\n  /**\n   * Invoked before XMLHttpRequest.send(...) is called.\n   */\n  setSendCallback(callback: XHRInterceptorSendCallback) {\n    sendCallback = callback\n  },\n\n  /**\n   * Invoked after xhr's readyState becomes xhr.HEADERS_RECEIVED.\n   */\n  setHeaderReceivedCallback(callback: XHRInterceptorHeaderReceivedCallback) {\n    headerReceivedCallback = callback\n  },\n\n  /**\n   * Invoked after xhr's readyState becomes xhr.DONE.\n   */\n  setResponseCallback(callback: XHRInterceptorResponseCallback) {\n    responseCallback = callback\n  },\n\n  /**\n   * Invoked before XMLHttpRequest.setRequestHeader(...) is called.\n   */\n  setRequestHeaderCallback(callback: XHRInterceptorRequestHeaderCallback) {\n    requestHeaderCallback = callback\n  },\n\n  isInterceptorEnabled(): boolean {\n    return isInterceptorEnabled\n  },\n\n  enableInterception() {\n    if (isInterceptorEnabled) {\n      return\n    }\n    // Override `open` method for all XHR requests to intercept the request\n    // method and url, then pass them through the `openCallback`.\n    // $FlowFixMe[cannot-write]\n    // $FlowFixMe[missing-this-annot]\n    XMLHttpRequest.prototype.open = function (method: string, url: string) {\n      if (openCallback) {\n        openCallback(method, url, this)\n      }\n      originalXHROpen.apply(this, arguments)\n    }\n\n    // Override `setRequestHeader` method for all XHR requests to intercept\n    // the request headers, then pass them through the `requestHeaderCallback`.\n    // $FlowFixMe[cannot-write]\n    // $FlowFixMe[missing-this-annot]\n    XMLHttpRequest.prototype.setRequestHeader = function (header: string, value: string) {\n      if (requestHeaderCallback) {\n        requestHeaderCallback(header, value, this)\n      }\n      originalXHRSetRequestHeader.apply(this, arguments)\n    }\n\n    // Override `send` method of all XHR requests to intercept the data sent,\n    // register listeners to intercept the response, and invoke the callbacks.\n    // $FlowFixMe[cannot-write]\n    // $FlowFixMe[missing-this-annot]\n    XMLHttpRequest.prototype.send = function (data: string) {\n      if (sendCallback) {\n        sendCallback(data, this)\n      }\n      if (this.addEventListener) {\n        this.addEventListener(\n          \"readystatechange\",\n          () => {\n            if (!isInterceptorEnabled) {\n              return\n            }\n            if (this.readyState === this.HEADERS_RECEIVED) {\n              const contentTypeString = this.getResponseHeader(\"Content-Type\")\n              const contentLengthString = this.getResponseHeader(\"Content-Length\")\n              let responseContentType, responseSize\n              if (contentTypeString) {\n                responseContentType = contentTypeString.split(\";\")[0]\n              }\n              if (contentLengthString) {\n                responseSize = parseInt(contentLengthString, 10)\n              }\n              if (headerReceivedCallback) {\n                headerReceivedCallback(\n                  responseContentType,\n                  responseSize,\n                  this.getAllResponseHeaders(),\n                  this\n                )\n              }\n            }\n            if (this.readyState === this.DONE) {\n              if (responseCallback) {\n                responseCallback(\n                  this.status,\n                  this.timeout,\n                  this.response,\n                  this.responseURL,\n                  this.responseType,\n                  this\n                )\n              }\n            }\n          },\n          false\n        )\n      }\n\n      originalXHRSend.apply(this, arguments)\n    }\n    isInterceptorEnabled = true\n  },\n\n  // Unpatch XMLHttpRequest methods and remove the callbacks.\n  disableInterception() {\n    if (!isInterceptorEnabled) {\n      return\n    }\n    isInterceptorEnabled = false\n    // $FlowFixMe[cannot-write]\n    XMLHttpRequest.prototype.send = originalXHRSend\n    // $FlowFixMe[cannot-write]\n    XMLHttpRequest.prototype.open = originalXHROpen\n    // $FlowFixMe[cannot-write]\n    XMLHttpRequest.prototype.setRequestHeader = originalXHRSetRequestHeader\n    responseCallback = null\n    openCallback = null\n    sendCallback = null\n    headerReceivedCallback = null\n    requestHeaderCallback = null\n  },\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"jsx\": \"react-native\",\n    \"rootDir\": \".\",\n    \"declaration\": true,\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"lib\": [\"dom\"],\n    \"skipLibCheck\": true,\n    \"types\": [\"node\", \"react\", \"react-native\", \"jest\"],\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-react-native/wallaby.js",
    "content": "module.exports = function (wallaby) {\n  return {\n    files: [\"src/**/*.ts\", \"!src/**/*.test.ts\"],\n\n    tests: [\"src/**/*.test.ts\"],\n\n    compilers: {\n      \"**/*.ts\": wallaby.compilers.babel(),\n    },\n\n    env: {\n      type: \"node\",\n      runner: \"node\",\n    },\n\n    testFramework: \"jest\",\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [0.2.9](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.8...reactotron-react-native-mmkv@0.2.9) (2025-09-16)\n\n### [0.2.8](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.7...reactotron-react-native-mmkv@0.2.8) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [0.2.7](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.6...reactotron-react-native-mmkv@0.2.7) (2024-08-26)\n\n### [0.2.6](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.5...reactotron-react-native-mmkv@0.2.6) (2024-02-28)\n\n### [0.2.5](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.4...reactotron-react-native-mmkv@0.2.5) (2024-02-14)\n\n## [0.2.4](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.3...reactotron-react-native-mmkv@0.2.4) (2024-02-14)\n\n### [0.2.3](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.2...reactotron-react-native-mmkv@0.2.3) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [0.2.2](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.1...reactotron-react-native-mmkv@0.2.2) (2024-01-09)\n\n\n### Bug Fixes\n\n* update client types in reactotron-react-native-mmkv and reactotron-redux ([#1397](https://github.com/infinitered/reactotron/issues/1397)) ([1478ea1](https://github.com/infinitered/reactotron/commit/1478ea176552b9e0e6606a41f4cc2cd3a33fe587)), closes [#1391](https://github.com/infinitered/reactotron/issues/1391)\n\n### [0.2.1](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.2.0...reactotron-react-native-mmkv@0.2.1) (2023-12-05)\n\n## [0.2.0](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.1.5...reactotron-react-native-mmkv@0.2.0) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [0.1.5](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.1.4...reactotron-react-native-mmkv@0.1.5) (2023-11-06)\n\n### [0.1.4](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.1.3...reactotron-react-native-mmkv@0.1.4) (2023-10-13)\n\n### [0.1.3](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.1.2...reactotron-react-native-mmkv@0.1.3) (2023-09-08)\n\n### [0.1.2](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.1.1...reactotron-react-native-mmkv@0.1.2) (2023-07-06)\n\n### [0.1.1](https://github.com/infinitered/reactotron/compare/reactotron-react-native-mmkv@0.1.0...reactotron-react-native-mmkv@0.1.1) (2023-06-15)\n\n## 0.1.0 (2023-06-15)\n\n\n### Features\n\n* **lib:** add `react-native-mmkv` plugin ([#1291](https://github.com/infinitered/reactotron/issues/1291)) ([a5637fa](https://github.com/infinitered/reactotron/commit/a5637fae2a3eabcea27cc491d13d0174c46be9e9))\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-react-native-mmkv/README.md",
    "content": "# reactotron-react-native-mmkv\n\nLog updates to your [react-native-mmkv](https://github.com/mrousavy/react-native-mmkv) store in the Reactotron timeline.\n\n# Installing\n\n```bash\nnpm i --save-dev reactotron-react-native-mmkv\n# or\nyarn add -D reactotron-react-native-mmkv\n```\n\n## Usage\n\nImport your mmkv storage instance:\n\n```tsx\nimport { MMKV } from \"react-native-mmkv\"\nexport const storage = new MMKV()\n```\n\nTo use the `mmkvPlugin`, add the additional plugin on the `import` line.\n\n```tsx\nimport Reactotron from \"reactotron-react-native\"\nimport type { ReactotronReactNative } from \"reactotron-react-native\"\nimport mmkvPlugin from \"reactotron-react-native-mmkv\"\nimport { storage } from \"./mmkv/storage/instance/location\" // <--- update this location\n...\nReactotron.configure()\n  .use(mmkvPlugin<ReactotronReactNative>({ storage })) // <--- here we go!\n  .connect()\n```\n\nAnd you're done! Now you can see your MMKV in Reactotron.\n\n## Advanced Usage\n\n`mmkvPlugin()` accepts an object with an `ignore` key. The value is an array of strings you would like to prevent sending to Reactotron.\n\n```tsx\nmmkvPlugin<ReactotronReactNative>({\n  storage,\n  ignore: [\"secret\"],\n})\n```\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/package.json",
    "content": "{\n  \"name\": \"reactotron-react-native-mmkv\",\n  \"version\": \"0.2.9\",\n  \"description\": \"A Reactotron plugin for react-native-mmkv.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-react-native-mmkv\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-react-native-mmkv\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --passWithNoTests\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint 'src/**/**.{ts,tsx}'\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"peerDependencies\": {\n    \"react-native-mmkv\": \"*\",\n    \"reactotron-core-client\": \"*\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"react-native-mmkv\": \"^2.10.2\",\n    \"reactotron-core-client\": \"workspace:*\",\n    \"testdouble\": \"^3.20.0\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/project.json",
    "content": "{\n  \"name\": \"reactotron-react-native-mmkv\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/src/index.ts",
    "content": "import mmkvPlugin from \"./reactotron-react-native-mmkv\"\nexport * from \"./reactotron-react-native-mmkv\"\nexport default mmkvPlugin\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/src/reactotron-react-native-mmkv.ts",
    "content": "import { type MMKV } from \"react-native-mmkv\"\nimport type { ReactotronCore } from \"reactotron-core-client\"\n\nexport interface MmkvPluginConfig {\n  /**\n   * MMKV storage instance\n   * @example\n   * import { MMKV } from \"react-native-mmkv\"\n   * const storage = new MMKV()\n   */\n  storage: MMKV\n  /** Storage keys you want to ignore */\n  ignore?: Array<string>\n}\n\ninterface Listener {\n  remove: () => void\n}\n\n/**\n * Reactotron plugin to log MMKV storage changes\n *\n * @example\n * import { MMKV } from 'react-native-mmkv'\n * import type { ReactotronReactNative } from 'reactotron-react-native'\n * // create your storage instance\n * const storage = new MMKV()\n *\n * // pass your instance to the plugin\n * Reactotron.use(mmkvPlugin<ReactotronReactNative>({ storage }))\n */\nexport default function mmkvPlugin<Client extends ReactotronCore = ReactotronCore>(\n  config: MmkvPluginConfig\n) {\n  /** This gives us the ability to ignore specific writes for less noise */\n  const ignore = config.ignore ?? []\n\n  let listener: Listener | undefined\n\n  return (reactotron: Client) => {\n    const log = ({\n      value,\n      preview,\n    }: {\n      value: string | number | boolean | object\n      preview: string\n    }) => {\n      reactotron.display({\n        name: \"MMKV\",\n        value,\n        preview,\n        important: true,\n      })\n    }\n    return {\n      onConnect() {\n        listener = config.storage.addOnValueChangedListener((key) => {\n          const keyIsIgnored = ignore.includes(key)\n          if (keyIsIgnored) return\n          const value = config.storage.getString(key) ?? \"undefined\"\n          log({\n            value: { key, value },\n            preview: `Set \"${key}\" to ${value}`,\n          })\n        })\n      },\n      onDisconnect() {\n        listener?.remove()\n      },\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-react-native-mmkv/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"skipLibCheck\": true, // Temp?\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-redux/.babelrc",
    "content": "{\n  \"presets\": [\"react-native-builder-bob/babel-preset\"]\n}\n"
  },
  {
    "path": "lib/reactotron-redux/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "lib/reactotron-redux/CHANGELOG.md",
    "content": "# Changelog\n\nThis file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).\n\n### [3.2.1](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.2.0...reactotron-redux@3.2.1) (2025-09-16)\n\n## [3.2.0](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.11...reactotron-redux@3.2.0) (2025-03-16)\n\n\n### Features\n\n* **reactotron-app:** show redux diffs in timeline ([#1531](https://github.com/infinitered/reactotron/issues/1531) by [@camilossantos2809](https://github.com/camilossantos2809)) ([77831ae](https://github.com/infinitered/reactotron/commit/77831aeb928d0e63c8828b90efa17caeab67f699)), closes [#496](https://github.com/infinitered/reactotron/issues/496)\n\n### [3.1.11](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.10...reactotron-redux@3.1.11) (2025-01-07)\n\n\n### Bug Fixes\n\n* **package.json:** remove \"react-native\" export condition ([#1530](https://github.com/infinitered/reactotron/issues/1530)) ([47be69f](https://github.com/infinitered/reactotron/commit/47be69fae1e410a22907893a69474857a3e5a854))\n\n### [3.1.10](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.9...reactotron-redux@3.1.10) (2024-08-26)\n\n### [3.1.9](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.8...reactotron-redux@3.1.9) (2024-02-14)\n\n## [3.1.8](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.7...reactotron-redux@3.1.8) (2024-02-14)\n\n### [3.1.7](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.6...reactotron-redux@3.1.7) (2024-01-25)\n\n\n### Bug Fixes\n\n* **architecture:** Attempt to mitigate compiler error: `Error: Default condition should be last one` ([#1423](https://github.com/infinitered/reactotron/issues/1423)) ([2c7e678](https://github.com/infinitered/reactotron/commit/2c7e678e5afaea79cd01f4ab6e90bd67339fc80a))\n\n### [3.1.6](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.5...reactotron-redux@3.1.6) (2024-01-17)\n\n\n### Bug Fixes\n\n* **reactotron-redux:** Typescript fixes for reactotron-redux interface ([#1404](https://github.com/infinitered/reactotron/issues/1404) by @Jpoliachik) ([5dacbd9](https://github.com/infinitered/reactotron/commit/5dacbd9525bae74a70ce6b0ab9e9cc6b8778f708))\n\n### [3.1.5](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4...reactotron-redux@3.1.5) (2024-01-09)\n\n\n### Bug Fixes\n\n* update client types in reactotron-react-native-mmkv and reactotron-redux ([#1397](https://github.com/infinitered/reactotron/issues/1397)) ([1478ea1](https://github.com/infinitered/reactotron/commit/1478ea176552b9e0e6606a41f4cc2cd3a33fe587)), closes [#1391](https://github.com/infinitered/reactotron/issues/1391)\n\n### [3.1.4](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.17...reactotron-redux@3.1.4) (2023-12-05)\n\n### [3.1.4-beta.17](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.16...reactotron-redux@3.1.4-beta.17) (2023-12-01)\n\n\n### Features\n\n* validate workspace package.json, add export condition ([#1326](https://github.com/infinitered/reactotron/issues/1326)) ([ae95cd5](https://github.com/infinitered/reactotron/commit/ae95cd536de187ede034e5183ceeb812f356d273))\n\n### [3.1.4-beta.16](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.15...reactotron-redux@3.1.4-beta.16) (2023-11-06)\n\n### [3.1.4-beta.15](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.14...reactotron-redux@3.1.4-beta.15) (2023-10-13)\n\n### [3.1.4-beta.14](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.13...reactotron-redux@3.1.4-beta.14) (2023-10-02)\n\n### [3.1.4-beta.13](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.12...reactotron-redux@3.1.4-beta.13) (2023-09-27)\n\n### [3.1.4-beta.12](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.11...reactotron-redux@3.1.4-beta.12) (2023-09-22)\n\n### [3.1.4-beta.11](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.10...reactotron-redux@3.1.4-beta.11) (2023-09-08)\n\n### [3.1.4-beta.10](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.9...reactotron-redux@3.1.4-beta.10) (2023-09-07)\n\n### [3.1.4-beta.9](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.8...reactotron-redux@3.1.4-beta.9) (2023-08-25)\n\n### [3.1.4-beta.8](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.7...reactotron-redux@3.1.4-beta.8) (2023-08-24)\n\n### [3.1.4-beta.7](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.6...reactotron-redux@3.1.4-beta.7) (2023-07-24)\n\n### [3.1.4-beta.6](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.5...reactotron-redux@3.1.4-beta.6) (2023-07-20)\n\n### [3.1.4-beta.5](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.4...reactotron-redux@3.1.4-beta.5) (2023-07-17)\n\n### [3.1.4-beta.4](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.3...reactotron-redux@3.1.4-beta.4) (2023-07-06)\n\n### [3.1.4-beta.3](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.2...reactotron-redux@3.1.4-beta.3) (2023-07-03)\n\n### [3.1.4-beta.2](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.1...reactotron-redux@3.1.4-beta.2) (2023-06-15)\n\n### [3.1.4-beta.1](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-beta.0...reactotron-redux@3.1.4-beta.1) (2023-06-15)\n\n### [3.1.4-beta.0](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.6...reactotron-redux@3.1.4-beta.0) (2023-04-06)\n\n### [3.1.4-alpha.6](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.5...reactotron-redux@3.1.4-alpha.6) (2023-03-21)\n\n\n### Bug Fixes\n\n* **package.json:** Update package metadata ([#1276](https://github.com/infinitered/reactotron/issues/1276)) [skip ci] ([07a4020](https://github.com/infinitered/reactotron/commit/07a4020bf528de100a9191bd92a92d835d5ccaa7))\n\n### [3.1.4-alpha.5](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.4...reactotron-redux@3.1.4-alpha.5) (2023-03-06)\n\n### [3.1.4-alpha.4](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.3...reactotron-redux@3.1.4-alpha.4) (2023-03-06)\n\n### [3.1.4-alpha.3](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.2...reactotron-redux@3.1.4-alpha.3) (2023-03-06)\n\n### [3.1.4-alpha.2](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.1...reactotron-redux@3.1.4-alpha.2) (2023-02-17)\n\n### [3.1.4-alpha.1](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.4-alpha.0...reactotron-redux@3.1.4-alpha.1) (2023-02-13)\n\n\n### Features\n\n* **package.json:** update prettier, add format scripts, run format:write ([c330d81](https://github.com/infinitered/reactotron/commit/c330d81426c3f6f371a29a8a00ba9d1d6ce2d97a))\n\n### [3.1.4-alpha.0](https://github.com/infinitered/reactotron/compare/reactotron-redux@3.1.3...reactotron-redux@3.1.4-alpha.0) (2023-02-03)\n\n\n### Bug Fixes\n\n* **reactotron-redux:** add workspace ([203d417](https://github.com/infinitered/reactotron/commit/203d4171cc277bcb690e5be826b3b838664ba1b0))\n"
  },
  {
    "path": "lib/reactotron-redux/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 3016 Infinite Red LLC.\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": "lib/reactotron-redux/README.md",
    "content": "# reactotron-redux\n\nFind the docs located [here](https://docs.infinite.red/reactotron/plugins/redux/)\n"
  },
  {
    "path": "lib/reactotron-redux/package.json",
    "content": "{\n  \"name\": \"reactotron-redux\",\n  \"version\": \"3.2.1\",\n  \"description\": \"A Reactotron plugin for Redux.\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-redux\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-redux\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/commonjs/index.js\",\n  \"module\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/commonjs/src/index.d.ts\",\n      \"module\": \"./dist/module/index.js\",\n      \"default\": \"./dist/commonjs/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint src --ext .ts,.tsx\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\",\n    \"prepare\": \"bob build\"\n  },\n  \"dependencies\": {\n    \"microdiff\": \"^1.5.0\"\n  },\n  \"peerDependencies\": {\n    \"reactotron-core-client\": \"*\",\n    \"redux\": \">=4.0.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-builder-bob\": \"^0.40.13\",\n    \"reactotron-core-client\": \"workspace:*\",\n    \"redux\": \"4.2.1\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false,\n    \"globals\": {\n      \"__DEV__\": false,\n      \"jasmine\": false,\n      \"beforeAll\": false,\n      \"afterAll\": false,\n      \"beforeEach\": false,\n      \"afterEach\": false,\n      \"test\": false,\n      \"expect\": false,\n      \"describe\": false,\n      \"jest\": false,\n      \"it\": false\n    }\n  },\n  \"jest\": {\n    \"preset\": \"ts-jest\",\n    \"testEnvironment\": \"node\",\n    \"testMatch\": [\n      \"**/*.test.[tj]s\"\n    ]\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      \"commonjs\",\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/project.json",
    "content": "{\n  \"name\": \"reactotron-redux\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/renovate.json",
    "content": "{\n  \"extends\": [\"config:base\"]\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/commandHandler.test.ts",
    "content": "import createCommandHandler from \"./commandHandler\"\nimport { DEFAULT_REPLACER_TYPE } from \"./reducer\"\nimport { PluginConfig } from \"./pluginConfig\"\nimport { defaultReactotronMock } from \"./testHelpers\"\n\n// TODO: Write more tests around onBackup and onRestore.\n\nconst defaultPluginConfig: PluginConfig = {\n  restoreActionType: DEFAULT_REPLACER_TYPE,\n  onBackup: (state: any) => state,\n  onRestore: (restoringState: any) => restoringState,\n}\n\ndescribe(\"commandHandler\", () => {\n  it(\"should create a function when called\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: true } }),\n        subscribe: jest.fn(),\n      },\n      stateKeysResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    expect(typeof commandHandler).toEqual(\"function\")\n  })\n\n  it(\"should handle a 'state.keys.request' command type for no path\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: true } }),\n        subscribe: jest.fn(),\n      },\n      stateKeysResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.keys.request\", payload: { path: \"\" } })\n\n    expect(reactotronMock.stateKeysResponse).toHaveBeenCalledWith(null, [\"topLevel\"])\n  })\n\n  it(\"should handle a 'state.keys.request' command type for a single level\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: true } }),\n        subscribe: jest.fn(),\n      },\n      stateKeysResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.keys.request\", payload: { path: \"topLevel\" } })\n\n    expect(reactotronMock.stateKeysResponse).toHaveBeenCalledWith(\"topLevel\", [\"here\"])\n  })\n\n  it(\"should handle a 'state.keys.request' command type for two levels\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: { nested: true } } }),\n        subscribe: jest.fn(),\n      },\n      stateKeysResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.keys.request\", payload: { path: \"topLevel.here\" } })\n\n    expect(reactotronMock.stateKeysResponse).toHaveBeenCalledWith(\"topLevel.here\", [\"nested\"])\n  })\n\n  it(\"should handle a 'state.keys.request' command type for a path that isn't an object\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: { nested: true } } }),\n        subscribe: jest.fn(),\n      },\n      stateKeysResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.keys.request\", payload: { path: \"topLevel.here.nested\" } })\n\n    expect(reactotronMock.stateKeysResponse).toHaveBeenCalledWith(\"topLevel.here.nested\", undefined)\n  })\n\n  it(\"should handle a 'state.keys.request' command type for a path that is invalid\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: { nested: true } } }),\n        subscribe: jest.fn(),\n      },\n      stateKeysResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.keys.request\", payload: { path: \"topLevel2.here.nested\" } })\n\n    expect(reactotronMock.stateKeysResponse).toHaveBeenCalledWith(\n      \"topLevel2.here.nested\",\n      undefined\n    )\n  })\n\n  it(\"should handle a 'state.values.request' command type for a single level\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: true } }),\n        subscribe: jest.fn(),\n      },\n      stateValuesResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.values.request\", payload: { path: \"topLevel\" } })\n\n    expect(reactotronMock.stateValuesResponse).toHaveBeenCalledWith(\"topLevel\", { here: true })\n  })\n\n  it(\"should handle a 'state.values.request' command type for two levels\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: { nested: true } } }),\n        subscribe: jest.fn(),\n      },\n      stateValuesResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.values.request\", payload: { path: \"topLevel.here\" } })\n\n    expect(reactotronMock.stateValuesResponse).toHaveBeenCalledWith(\"topLevel.here\", {\n      nested: true,\n    })\n  })\n\n  it(\"should handle a 'state.values.request' command type for a path that isn't an object\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: { nested: true } } }),\n        subscribe: jest.fn(),\n      },\n      stateValuesResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.values.request\", payload: { path: \"topLevel.here.nested\" } })\n\n    expect(reactotronMock.stateValuesResponse).toHaveBeenCalledWith(\"topLevel.here.nested\", true)\n  })\n\n  it(\"should handle a 'state.values.request' command type for a path that is invalid\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ topLevel: { here: { nested: true } } }),\n        subscribe: jest.fn(),\n      },\n      stateValuesResponse: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.values.request\", payload: { path: \"topLevel2.here.nested\" } })\n\n    expect(reactotronMock.stateValuesResponse).toHaveBeenCalledWith(\n      \"topLevel2.here.nested\",\n      undefined\n    )\n  })\n\n  it.todo(\"should handle a 'state.values.subscribe' command type\")\n\n  it(\"should handle a 'state.action.dispatch' command type\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        dispatch: jest.fn(),\n        subscribe: jest.fn(),\n      },\n    }\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.action.dispatch\", payload: { action: { type: \"Do a thing.\" } } })\n\n    expect(reactotronMock.reduxStore.dispatch).toHaveBeenCalledWith({ type: \"Do a thing.\" })\n  })\n\n  it(\"should handle a 'state.backup.request' command type\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn().mockReturnValue({ myState: true }),\n        subscribe: jest.fn(),\n      },\n      send: jest.fn(),\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.backup.request\" })\n\n    expect(reactotronMock.reduxStore.getState).toHaveBeenCalledTimes(1)\n    expect(reactotronMock.send).toHaveBeenCalledWith(\"state.backup.response\", {\n      state: { myState: true },\n    })\n  })\n\n  it(\"should handle a 'state.restore.request' command type\", () => {\n    const reactotronMock = {\n      ...defaultReactotronMock,\n      reduxStore: {\n        getState: jest.fn(),\n        dispatch: jest.fn(),\n        subscribe: jest.fn(),\n      },\n    }\n\n    const commandHandler = createCommandHandler(reactotronMock, defaultPluginConfig, () => {})\n\n    commandHandler({ type: \"state.restore.request\", payload: { state: { myReplacedState: true } } })\n\n    expect(reactotronMock.reduxStore.dispatch).toHaveBeenCalledWith({\n      type: DEFAULT_REPLACER_TYPE,\n      state: { myReplacedState: true },\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/commandHandler.ts",
    "content": "import {\n  type InferFeatures,\n  type ReactotronCore,\n  type StateResponsePlugin,\n  assertHasStateResponsePlugin,\n} from \"reactotron-core-client\"\n\nimport stateCleaner from \"./helpers/stateCleaner\"\nimport pathObject from \"./helpers/pathObject\"\nimport createSubscriptionsHandler from \"./subscriptionsHandler\"\nimport { PluginConfig } from \"./pluginConfig\"\n\nexport default function createCommandHandler<Client extends ReactotronCore = ReactotronCore>(\n  reactotron: Client,\n  pluginConfig: PluginConfig,\n  onReduxStoreCreation: (func: () => void) => void\n) {\n  // make sure have loaded the StateResponsePlugin\n  assertHasStateResponsePlugin(reactotron)\n  const client = reactotron as Client & InferFeatures<Client, StateResponsePlugin>\n\n  // create our subscriptions handler\n  const subscriptionsHandler = createSubscriptionsHandler(reactotron, onReduxStoreCreation)\n\n  return ({ type, payload }: { type: string; payload?: any }) => {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore shhhhhh -- this is a private API\n    const reduxStore = client.reduxStore\n\n    switch (type) {\n      // client is asking for keys\n      case \"state.keys.request\":\n      case \"state.values.request\":\n        {\n          const cleanedState = stateCleaner(reduxStore.getState())\n\n          if (!payload.path) {\n            client.stateKeysResponse(\n              null,\n              type === \"state.keys.request\" ? Object.keys(cleanedState) : cleanedState\n            )\n          } else {\n            const filteredObj = pathObject(payload.path, cleanedState)\n\n            const responseMethod =\n              type === \"state.keys.request\" ? client.stateKeysResponse : client.stateValuesResponse\n\n            responseMethod(\n              payload.path,\n              type === \"state.keys.request\"\n                ? typeof filteredObj === \"object\"\n                  ? Object.keys(filteredObj)\n                  : undefined\n                : filteredObj\n            )\n          }\n        }\n        break\n\n      // client is asking to subscribe to some paths\n      case \"state.values.subscribe\":\n        subscriptionsHandler.setSubscriptions(payload.paths)\n        subscriptionsHandler.sendSubscriptions()\n        break\n\n      // server is asking to dispatch this action\n      case \"state.action.dispatch\":\n        reduxStore.dispatch(payload.action)\n        break\n\n      // server is asking to backup state\n      case \"state.backup.request\": {\n        // run our state through our onBackup\n        let backedUpState = reduxStore.getState()\n\n        if (pluginConfig.onBackup) {\n          backedUpState = pluginConfig.onBackup(backedUpState)\n        }\n\n        client.send(\"state.backup.response\", { state: backedUpState })\n        break\n      }\n\n      // server is asking to clobber state with this\n      case \"state.restore.request\": {\n        // run our state through our onRestore\n        let restoredState = payload.state\n\n        if (pluginConfig.onRestore) {\n          restoredState = pluginConfig.onRestore(payload.state, reduxStore.getState())\n        }\n\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore shhhhhh -- this is a private API\n        client.reduxStore.dispatch({\n          type: pluginConfig.restoreActionType,\n          state: restoredState,\n        })\n\n        break\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/customDispatch.test.ts",
    "content": "import createCustomDispatch from \"./customDispatch\"\nimport { DEFAULT_REPLACER_TYPE } from \"./reducer\"\n\ndescribe(\"customDispatch\", () => {\n  it(\"should send an action to reactotron\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"Any Type\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {})\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])\n  })\n\n  it.todo(\"should handle 'PERFORM_ACTION' actions correctly\")\n\n  it(\"should respect the exclude list and not send an item off of it if it is a string\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"IGNORE_ME\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      except: [\"IGNORE_ME\"],\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).not.toHaveBeenCalled()\n  })\n\n  it(\"should respect the exclude list and not send an item off of it if it is a function\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"IGNORE_ME\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      except: [(actionType: string) => actionType.startsWith(\"IGNORE\")],\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).not.toHaveBeenCalled()\n  })\n\n  it(\"should respect the exclude list and send an item off of it if it is a function\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"DONT_IGNORE_ME\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      except: [(actionType: string) => actionType.startsWith(\"IGNORE\")],\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])\n  })\n\n  it(\"should respect the exclude list and not send an item off of it if it is a regex\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"IGNORE_ME\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      except: [/[A-Z]/],\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).not.toHaveBeenCalled()\n  })\n\n  it(\"should respect the exclude list and send an item off of it if it is a regex\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"1234\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      except: [/[A-Z]/],\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])\n  })\n\n  it(\"should respect the exclude list and should still send items not on the list\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"DONT_IGNORE_ME\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      except: [\"IGNORE_ME\"],\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])\n  })\n\n  it(\"should exclude the restoreActionType by default\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: DEFAULT_REPLACER_TYPE,\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).not.toHaveBeenCalled()\n  })\n\n  it(\"should call isActionImportant and mark the action as important if it returns true\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"MAKE_ME_IMPORTANT\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      isActionImportant: (action) => action.type === \"MAKE_ME_IMPORTANT\",\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, true, [])\n  })\n\n  it(\"should call isActionImportant and mark the action as important if it returns false\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n    }\n    const action = {\n      type: \"MAKE_ME_NOT_MPORTANT\",\n      payload: { allTheSecrets: true },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {\n      restoreActionType: DEFAULT_REPLACER_TYPE,\n      isActionImportant: (action) => action.type === \"MAKE_ME_IMPORTANT\",\n    })\n\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [])\n  })\n  it(\"should send the difference between the old state and the new state\", () => {\n    const mockReactotron = {\n      startTimer: () => jest.fn().mockReturnValue(1000),\n      reportReduxAction: jest.fn(),\n    }\n    const mockStore = {\n      dispatch: jest.fn(),\n      getState: jest.fn().mockReturnValueOnce({ value: \"old value\" }).mockReturnValueOnce({\n        value: \"new value\",\n      }),\n    }\n    const action = {\n      type: \"@module/someAction\",\n      payload: { value: \"new value\" },\n    }\n\n    const dispatch = createCustomDispatch(mockReactotron, mockStore, {})\n    dispatch(action)\n\n    expect(mockStore.dispatch).toHaveBeenCalledWith(action)\n    expect(mockReactotron.reportReduxAction).toHaveBeenCalledWith(action, 1000, false, [\n      { oldValue: \"old value\", value: \"new value\", type: \"CHANGE\", path: [\"value\"] },\n    ])\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/customDispatch.ts",
    "content": "import diff from \"microdiff\"\n\nimport { PluginConfig } from \"./pluginConfig\"\n\nexport default function createCustomDispatch(\n  reactotron: any,\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  store: { dispatch: Function; getState?: Function },\n  pluginConfig: PluginConfig\n) {\n  const exceptions = [pluginConfig.restoreActionType, ...(pluginConfig.except || [])]\n\n  return (action: any) => {\n    // start a timer\n    const elapsed = reactotron.startTimer()\n\n    // save the state before the action is dispatched to be used on \"diff\"\n    const oldState = store?.getState?.()\n\n    // call the original dispatch that actually does the real work\n    const result = store.dispatch(action)\n\n    // stop the timer\n    const ms = elapsed()\n\n    const unwrappedAction =\n      action.type === \"PERFORM_ACTION\" && action.action ? action.action : action\n\n    const isException = exceptions.some((exception) => {\n      if (typeof exception === \"string\") {\n        return unwrappedAction.type === exception\n      } else if (typeof exception === \"function\") {\n        return exception(unwrappedAction.type)\n      } else if (exception instanceof RegExp) {\n        return exception.test(unwrappedAction.type)\n      } else {\n        return false\n      }\n    })\n\n    // action not blacklisted?\n    // if matchException is true, action.type is matched with exception\n    if (!isException) {\n      // check if the app considers this important\n      let important = false\n      if (pluginConfig && typeof pluginConfig.isActionImportant === \"function\") {\n        important = !!pluginConfig.isActionImportant(unwrappedAction)\n      }\n      const state = store?.getState?.()\n      reactotron.reportReduxAction(unwrappedAction, ms, important, diff(oldState, state))\n    }\n\n    return result\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/enhancer.test.ts",
    "content": "import createEnhancer from \"./enhancer\"\n\n// TODO: More testing\n\ndescribe(\"enhancer\", () => {\n  it(\"should return a function\", () => {\n    const enhancer = createEnhancer(null, {}, () => {})\n\n    expect(typeof enhancer).toEqual(\"function\")\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/enhancer.ts",
    "content": "import type { ReactotronCore } from \"reactotron-core-client\"\n\nimport reactotronReducer from \"./reducer\"\nimport createCustomDispatch from \"./customDispatch\"\nimport { PluginConfig } from \"./pluginConfig\"\n\nexport default function createEnhancer<Client extends ReactotronCore = ReactotronCore>(\n  reactotron: Client,\n  pluginConfig: PluginConfig,\n  handleStoreCreation: () => void\n) {\n  return (skipSettingStore = false) =>\n    (createStore) =>\n    (reducer, ...args) => {\n      const originalStore = createStore(\n        reactotronReducer(reducer, pluginConfig.restoreActionType),\n        ...args\n      )\n      const store = {\n        ...originalStore,\n        dispatch: createCustomDispatch(reactotron, originalStore, pluginConfig),\n      }\n\n      if (!skipSettingStore) {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore shhhhhh -- this is a private API\n        reactotron.reduxStore = store\n        handleStoreCreation()\n      }\n\n      return store\n    }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/helpers/pathObject.test.ts",
    "content": "import pathObject from \"./pathObject\"\n\ndescribe(\"pathObject\", () => {\n  it(\"should return the entire object if a null is passed\", () => {\n    const obj = { isThis: { here: true } }\n    const path = null\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(obj)\n  })\n\n  it(\"should return the entire object if a empty string is passed\", () => {\n    const obj = { isThis: { here: true } }\n    const path = \"\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(obj)\n  })\n\n  it(\"should return the section of object if a single level path is passed\", () => {\n    const obj = { isThis: { here: true } }\n    const path = \"isThis\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(obj.isThis)\n  })\n\n  it(\"should return the section of object if a two level path is passed\", () => {\n    const obj = { isThis: { here: true } }\n    const path = \"isThis.here\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(true)\n  })\n\n  it(\"should return the section of object if a three level path is passed\", () => {\n    const obj = { isThis: { here: { again: true } } }\n    const path = \"isThis.here.again\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(true)\n  })\n\n  it(\"should return undefined of object if an invalid path is passed on level one\", () => {\n    const obj = { isThis: { here: { again: true } } }\n    const path = \"isThis2.here.again\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(undefined)\n  })\n\n  it(\"should return undefined of object if an invalid path is passed on level two\", () => {\n    const obj = { isThis: { here: { again: true } } }\n    const path = \"isThis.here2.again\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(undefined)\n  })\n\n  it(\"should return undefined of object if an invalid path is passed on level three\", () => {\n    const obj = { isThis: { here: { again: true } } }\n    const path = \"isThis.here.again2\"\n\n    const pathedObj = pathObject(path, obj)\n\n    expect(pathedObj).toEqual(undefined)\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/helpers/pathObject.ts",
    "content": "export default function pathObject(path: string, obj: any) {\n  if (!path) return obj\n\n  const splitPaths = path.split(\".\")\n\n  let pathedObj = obj\n\n  for (let i = 0; i < splitPaths.length; i++) {\n    const curPath = splitPaths[i]\n    pathedObj = pathedObj[curPath]\n\n    if (i < splitPaths.length - 1 && typeof pathedObj !== \"object\") {\n      pathedObj = undefined\n      break\n    }\n  }\n\n  return pathedObj\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/helpers/stateCleaner.test.ts",
    "content": "import stateCleaner from \"./stateCleaner\"\n\ndescribe(\"stateCleaner\", () => {\n  it(\"should pass the state back if there is nothing special on it\", () => {\n    const state = { thisIsHere: true }\n    const cleanedState = stateCleaner(state)\n\n    expect(cleanedState).toEqual(cleanedState)\n  })\n\n  it(\"should call 'toJS' if it exists on the object to handle immutable\", () => {\n    const actualState = { thisIsHere: true }\n    const state = { toJS: () => actualState }\n    const cleanedState = stateCleaner(state)\n\n    expect(cleanedState).toEqual(actualState)\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/helpers/stateCleaner.ts",
    "content": "export default (state: any) => {\n  // If we have a toJS, lets assume we need to call it to get a plan 'ol JS object\n  // NOTE: This handles ImmutableJS\n  if (state.toJS) {\n    return state.toJS()\n  }\n\n  return state\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/index.ts",
    "content": "import type { Plugin, ReactotronCore } from \"reactotron-core-client\"\n\nimport createCommandHander from \"./commandHandler\"\nimport createSendAction from \"./sendAction\"\nimport createEnhancer from \"./enhancer\"\nimport { DEFAULT_REPLACER_TYPE } from \"./reducer\"\nimport { PluginConfig } from \"./pluginConfig\"\n\nfunction reactotronRedux(pluginConfig: PluginConfig = {}) {\n  const mergedPluginConfig: PluginConfig = {\n    ...pluginConfig,\n    restoreActionType: pluginConfig.restoreActionType || DEFAULT_REPLACER_TYPE,\n  }\n\n  const storeCreationHandlers: (() => void)[] = []\n  const onReduxStoreCreation = (func: () => void) => {\n    storeCreationHandlers.push(func)\n  }\n  const handleStoreCreation = () => {\n    storeCreationHandlers.forEach((func) => {\n      func()\n    })\n  }\n\n  function plugin<Client extends ReactotronCore = ReactotronCore>(reactotron: Client) {\n    return {\n      // Fires when we receive a command from the Reactotron app.\n      onCommand: createCommandHander(reactotron, mergedPluginConfig, onReduxStoreCreation),\n\n      // All keys in this object will be attached to the main Reactotron instance\n      // and available to be called directly.\n      features: {\n        createEnhancer: createEnhancer(reactotron, mergedPluginConfig, handleStoreCreation),\n        setReduxStore: (store) => {\n          // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n          // @ts-ignore shhhhhh -- this is a private API\n          reactotron.reduxStore = store\n          handleStoreCreation()\n        },\n        reportReduxAction: createSendAction(reactotron),\n      },\n    } satisfies Plugin<Client>\n  }\n\n  return plugin\n}\n\nexport type ReactotronReduxPlugin = ReturnType<typeof reactotronRedux>\n\nexport { reactotronRedux }\n"
  },
  {
    "path": "lib/reactotron-redux/src/pluginConfig.ts",
    "content": "export interface PluginConfig {\n  restoreActionType?: string\n  onBackup?: (state: any) => any\n  onRestore?: (restoringState: any, reduxState: any) => any\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  except?: (string | Function | RegExp)[]\n  isActionImportant?: (action: any) => boolean\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/reducer.test.ts",
    "content": "import reducer, { DEFAULT_REPLACER_TYPE } from \"./reducer\"\n\ndescribe(\"reducer\", () => {\n  it(\"should do nothing if it isn't the special type\", () => {\n    const rootReducer = jest.fn()\n\n    const reactotronReducer = reducer(rootReducer)\n\n    reactotronReducer({ myState: true }, { type: \"Not The Special Type\" })\n\n    expect(rootReducer).toHaveBeenCalledWith({ myState: true }, { type: \"Not The Special Type\" })\n  })\n\n  it(\"should return the root reducers result if the special action isn't passed\", () => {\n    function rootReducer(state: any, action: any) {\n      return {\n        ...state,\n        lastAction: action,\n      }\n    }\n\n    const reactotronReducer = reducer(rootReducer)\n\n    const result = reactotronReducer({ myState: true }, { type: \"Not The Special Type\" })\n\n    expect(result).toEqual({\n      myState: true,\n      lastAction: {\n        type: \"Not The Special Type\",\n      },\n    })\n  })\n\n  it(\"should still call the root reducer if the special action is called\", () => {\n    const rootReducer = jest.fn()\n\n    const reactotronReducer = reducer(rootReducer)\n\n    reactotronReducer({ myState: true }, { type: DEFAULT_REPLACER_TYPE, state: { myState: true } })\n\n    expect(rootReducer).toHaveBeenCalledWith(\n      { myState: true },\n      { type: DEFAULT_REPLACER_TYPE, state: { myState: true } }\n    )\n  })\n\n  it(\"should replace the state if the special action is called\", () => {\n    const rootReducer = jest.fn()\n\n    const reactotronReducer = reducer(rootReducer)\n\n    reactotronReducer(\n      { myState: true },\n      { type: DEFAULT_REPLACER_TYPE, state: { myNewState: true } }\n    )\n\n    expect(rootReducer).toHaveBeenCalledWith(\n      { myNewState: true },\n      { type: DEFAULT_REPLACER_TYPE, state: { myNewState: true } }\n    )\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/reducer.ts",
    "content": "export const DEFAULT_REPLACER_TYPE = \"REACTOTRON_RESTORE_STATE\"\n\nexport default function reactotronReducer(\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  rootReducer: Function,\n  actionName = DEFAULT_REPLACER_TYPE\n) {\n  // return this reducer\n  return (state: any, action: { type: string; state?: any }) => {\n    // is this action the one we're waiting for?  if so, use the state it passed\n    const whichState = action.type === actionName ? action.state : state\n    return rootReducer(whichState, action)\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/sendAction.test.ts",
    "content": "import createSendAction from \"./sendAction\"\nimport { defaultReactotronMock } from \"./testHelpers\"\n\ndescribe(\"sendAction\", () => {\n  it(\"should send a basic action to reactotron\", () => {\n    const mockReactotron = {\n      ...defaultReactotronMock,\n      send: jest.fn(),\n    }\n    const sendAction = createSendAction(mockReactotron)\n\n    sendAction({ type: \"My Type\" }, 10, false)\n\n    expect(mockReactotron.send).toHaveBeenCalledWith(\n      \"state.action.complete\",\n      { name: \"My Type\", action: { type: \"My Type\" }, ms: 10 },\n      false\n    )\n  })\n\n  it(\"should send a important action to reactotron\", () => {\n    const mockReactotron = {\n      ...defaultReactotronMock,\n      send: jest.fn(),\n    }\n    const sendAction = createSendAction(mockReactotron)\n\n    sendAction({ type: \"My Type\" }, 10, true)\n\n    expect(mockReactotron.send).toHaveBeenCalledWith(\n      \"state.action.complete\",\n      { name: \"My Type\", action: { type: \"My Type\" }, ms: 10 },\n      true\n    )\n  })\n\n  it.todo(\"should handle the type of an action being a symbol\")\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/sendAction.ts",
    "content": "import type { ReactotronCore } from \"reactotron-core-client\"\n\nexport default function createSendAction<Client extends ReactotronCore = ReactotronCore>(\n  reactotron: Client\n) {\n  return (action: { type: any }, ms: number, important = false, diff?: any) => {\n    // let's call the type, name because that's \"generic\" name in Reactotron\n    let { type: name } = action\n\n    // convert from symbol to type if necessary\n    if (typeof name === \"symbol\") {\n      name = name\n        .toString()\n        .replace(/^Symbol\\(/, \"\")\n        .replace(/\\)$/, \"\")\n    }\n\n    // off ya go!\n    reactotron.send(\"state.action.complete\", { name, action, ms, diff }, important)\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/subscriptionsHandler.test.ts",
    "content": "import createSubscriptionHandler from \"./subscriptionsHandler\"\n\ndescribe(\"createSubscriptionHandler\", () => {\n  describe(\"sendSubscriptions\", () => {\n    it(\"should return an empty array if there are no subscriptions\", () => {\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn(),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([])\n    })\n\n    it(\"should return an array with a single item with all the store if an empty subscription is passed\", () => {\n      const mockState = { red1: { test: true }, red2: { test: false } }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"\", value: mockState },\n      ])\n    })\n\n    it(\"should return an array with a single item with all the store if an null subscription is passed\", () => {\n      const mockState = { red1: { test: true }, red2: { test: false } }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([null])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: null, value: mockState },\n      ])\n    })\n\n    it(\"should return an array with a single item with all the store if an * subscription is passed\", () => {\n      const mockState = { red1: { test: true }, red2: { test: false } }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"*\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"\", value: mockState },\n      ])\n    })\n\n    it(\"should return an array with a all items in sub items of a * path at the first level\", () => {\n      const mockState = { red1: { test: true, obj: { nested: true } }, red2: { test: false } }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"red1.*\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"red1.test\", value: true },\n        { path: \"red1.obj\", value: { nested: true } },\n      ])\n    })\n\n    it(\"should return an array with a all items in sub items of a * path at the second level\", () => {\n      const mockState = {\n        red1: { test: true, obj: { nested: true, anotherItem: 10 } },\n        red2: { test: false },\n      }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"red1.obj.*\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"red1.obj.nested\", value: true },\n        { path: \"red1.obj.anotherItem\", value: 10 },\n      ])\n    })\n\n    it(\"should handle multipple subscriptions\", () => {\n      const mockState = {\n        red1: { test: true, obj: { nested: true, anotherItem: 10 } },\n        red2: { test: false },\n      }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"red1.obj.nested\", \"red1.test\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"red1.obj.nested\", value: true },\n        { path: \"red1.test\", value: true },\n      ])\n    })\n\n    it(\"should handle subscription changes\", () => {\n      const mockState = {\n        red1: { test: true, obj: { nested: true, anotherItem: 10 } },\n        red2: { test: false },\n      }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"red1.obj.nested\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"red1.obj.nested\", value: true },\n      ])\n\n      handler.setSubscriptions([\"red1.test\"])\n      handler.sendSubscriptions()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalledWith([\n        { path: \"red1.test\", value: true },\n      ])\n    })\n  })\n\n  describe(\"sendSubscriptionsIfNeeded\", () => {\n    it(\"should not send subscriptions when there are none\", () => {\n      const mockState = {\n        red1: { test: true, obj: { nested: true, anotherItem: 10 } },\n        red2: { test: false },\n      }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([])\n      handler.sendSubscriptionsIfNeeded()\n\n      expect(mockReactotron.stateValuesChange).not.toHaveBeenCalled()\n    })\n\n    it(\"should send subscriptions when there are at least one\", () => {\n      const mockState = {\n        red1: { test: true, obj: { nested: true, anotherItem: 10 } },\n        red2: { test: false },\n      }\n      const mockReactotron = {\n        reduxStore: {\n          getState: jest.fn().mockReturnValue(mockState),\n          subscribe: jest.fn(),\n        },\n        stateValuesChange: jest.fn(),\n      }\n\n      const handler = createSubscriptionHandler(mockReactotron, () => {})\n\n      handler.setSubscriptions([\"\"])\n      handler.sendSubscriptionsIfNeeded()\n\n      expect(mockReactotron.stateValuesChange).toHaveBeenCalled()\n    })\n  })\n})\n"
  },
  {
    "path": "lib/reactotron-redux/src/subscriptionsHandler.ts",
    "content": "import pathObject from \"./helpers/pathObject\"\n\nexport default function createSubscriptionHandler(\n  reactotron: any,\n  onReduxStoreCreation: (func: () => void) => void\n) {\n  let subscriptions: string[] = []\n\n  function setSubscriptions(subs: string[]) {\n    subscriptions = subs\n  }\n\n  function getChanges() {\n    // If we don't have reactotron, dont have a store or getState isn't a function then get out. Now.\n    if (\n      !reactotron ||\n      !reactotron.reduxStore ||\n      typeof reactotron.reduxStore.getState !== \"function\"\n    ) {\n      return []\n    }\n\n    const state = reactotron.reduxStore.getState()\n\n    const changes = []\n\n    subscriptions.forEach((path) => {\n      let cleanedPath = path\n      let starredPath = false\n\n      if (path && path.endsWith(\"*\")) {\n        // Handle the star!\n        starredPath = true\n        cleanedPath = path.substr(0, path.length - 2)\n      }\n\n      const values = pathObject(cleanedPath, state)\n\n      if (starredPath && cleanedPath && values) {\n        changes.push(\n          ...Object.entries(values).map((val) => ({\n            path: `${cleanedPath}.${val[0]}`,\n            value: val[1],\n          }))\n        )\n      } else {\n        changes.push({ path: cleanedPath, value: values })\n      }\n    })\n\n    return changes\n  }\n\n  function sendSubscriptions() {\n    const changes = getChanges()\n    reactotron.stateValuesChange(changes)\n  }\n\n  function sendSubscriptionsIfNeeded() {\n    const changes = getChanges()\n\n    if (changes.length > 0) {\n      reactotron.stateValuesChange(changes)\n    }\n  }\n\n  onReduxStoreCreation(() => {\n    reactotron.reduxStore.subscribe(sendSubscriptionsIfNeeded)\n  })\n\n  return {\n    sendSubscriptions,\n    sendSubscriptionsIfNeeded,\n    setSubscriptions,\n  }\n}\n"
  },
  {
    "path": "lib/reactotron-redux/src/testHelpers.ts",
    "content": "import type { InferFeatures, Reactotron } from \"reactotron-core-client\"\nimport type { ReactotronReduxPlugin } from \".\"\n\nexport const defaultReactotronMock: Reactotron & InferFeatures<Reactotron, ReactotronReduxPlugin> =\n  {\n    startTimer: jest.fn(),\n    configure: jest.fn(),\n    close: jest.fn(),\n    connect: jest.fn(),\n    send: jest.fn(),\n    display: jest.fn(),\n    use: jest.fn(),\n    onCustomCommand: jest.fn(),\n    clear: jest.fn(),\n    apiResponse: jest.fn(),\n    benchmark: jest.fn(),\n    debug: jest.fn(),\n    error: jest.fn(),\n    image: jest.fn(),\n    log: jest.fn(),\n    logImportant: jest.fn(),\n    plugins: [],\n    options: {},\n    repl: jest.fn(),\n    stateActionComplete: jest.fn(),\n    stateBackupResponse: jest.fn(),\n    stateKeysResponse: jest.fn(),\n    stateValuesChange: jest.fn(),\n    stateValuesResponse: jest.fn(),\n    warn: jest.fn(),\n    createEnhancer: jest.fn(),\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore shhhhhh -- this is a private API\n    reduxStore: jest.fn(),\n    setReduxStore: jest.fn(),\n  }\n"
  },
  {
    "path": "lib/reactotron-redux/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"rootDir\": \".\",\n    \"declaration\": true,\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es2015\",\n    \"esModuleInterop\": true,\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"],\n}\n"
  },
  {
    "path": "lib/reactotron-redux/wallaby.js",
    "content": "module.exports = function (wallaby) {\n  return {\n    files: [\"src/**/*.ts\", \"!src/**/*.test.ts\"],\n\n    tests: [\"src/**/*.test.ts\"],\n\n    compilers: {\n      \"**/*.ts\": wallaby.compilers.babel(),\n    },\n\n    env: {\n      type: \"node\",\n      runner: \"node\",\n    },\n\n    testFramework: \"jest\",\n  }\n}\n"
  },
  {
    "path": "nx.json",
    "content": "{\n  \"defaultBase\": \"master\",\n  \"targetDefaults\": {\n    \"build\": {\n      \"dependsOn\": [\n        \"clean\",\n        \"^build\"\n      ],\n      \"outputs\": [\n        \"{projectRoot}/dist\",\n        \"{projectRoot}/build\",\n        \"{projectRoot}/public/build\"\n      ],\n      \"cache\": true\n    },\n    \"version\": {\n      \"options\": {\n        \"preset\": \"conventional\",\n        \"tagPrefix\": \"{projectName}@\",\n        \"skipCommitTypes\": [\n          \"docs\",\n          \"release\"\n        ],\n        \"commitMessageFormat\": \"release({projectName}): ${version} [skip ci]\"\n      }\n    },\n    \"test\": {\n      \"cache\": true\n    },\n    \"lint\": {\n      \"cache\": true\n    }\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"reactotron\",\n  \"private\": true,\n  \"workspaces\": {\n    \"packages\": [\n      \"apps/*\",\n      \"lib/*\"\n    ]\n  },\n  \"author\": {\n    \"name\": \"Infinite Red\",\n    \"email\": \"hello@infinite.red\",\n    \"url\": \"https://github.com/infinitered/reactotron\"\n  },\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"repository\": \"https://github.com/infinitered/reactotron\",\n  \"keywords\": [\n    \"react\",\n    \"react native\"\n  ],\n  \"homepage\": \"https://github.com/infinitered/reactotron#readme\",\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  },\n  \"devDependencies\": {\n    \"@jscutlery/semver\": \"^2.30.1\",\n    \"@nx/devkit\": \"17.0.3\",\n    \"@octokit/rest\": \"^19.0.7\",\n    \"@types/eslint\": \"^8.44.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"eslint\": \"^8.54.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"nx\": \"17.0.3\",\n    \"prettier\": \"^3.0.3\",\n    \"typescript\": \"^5.1.3\",\n    \"zx\": \"^7.2.3\"\n  },\n  \"resolutions\": {\n    \"@nx/devkit\": \"17.0.3\",\n    \"@types/react\": \"18.2.45\",\n    \"electron-webpack\": \"patch:electron-webpack@npm%3A2.8.2#./.yarn/patches/electron-webpack-npm-2.8.2-1bda600605.patch\",\n    \"react-hotkeys\": \"patch:react-hotkeys@npm%3A2.0.0#./.yarn/patches/react-hotkeys-npm-2.0.0-8e6c50bd05.patch\",\n    \"webpack\": \"patch:webpack@npm%3A4.47.0#./.yarn/patches/webpack-npm-4.47.0-42e477a08c.patch\"\n  },\n  \"scripts\": {\n    \"postinstall\": \"sh ./scripts/postinstall.sh\",\n    \"clean\": \"sh ./scripts/clean.sh\",\n    \"reset\": \"sh ./scripts/reset.sh\",\n    \"generate:plugin\": \"zx scripts/generate-plugin.mjs\",\n    \"start\": \"yarn workspace reactotron-app start\",\n    \"start:example\": \"yarn workspace example-app start\",\n    \"build\": \"npx nx run-many --target build\",\n    \"build:watch\": \"npx nx watch --all -- npx nx run \\\\$NX_PROJECT_NAME:build\",\n    \"build:dev\": \"npx nx run-many --target build:dev\",\n    \"lint\": \"npx nx run-many --target lint\",\n    \"test\": \"npx nx run-many --target test\",\n    \"ci:test\": \"npx nx run-many --target ci:test\",\n    \"ci:trust\": \"sh ./scripts/git-clone-fork-to-trusted-branch.sh\",\n    \"typecheck\": \"npx nx run-many --target typecheck\",\n    \"format:write\": \"npx nx run-many --target format:write\",\n    \"format:check\": \"npx nx run-many --target format:check\",\n    \"release:tags\": \"npx nx affected --target version --base $CIRCLE_BRANCH~1 --head $CIRCLE_BRANCH --parallel=1\",\n    \"release:tags:local\": \"CIRCLE_BRANCH=$(git branch --show-current) yarn release:tags\",\n    \"release:artifacts\": \"zx scripts/release.artifacts.mjs\",\n    \"release:tags:push\": \"zx scripts/release.tags.push.mjs\",\n    \"copy-prettier-ignore\": \"zx scripts/copy-prettier-ignore.mjs\",\n    \"remove-local-tags\": \"git tag -l | xargs git tag -d && git fetch -t\",\n    \"build-and-test:local\": \"yarn build && yarn package:validate && yarn lint && yarn format:check && yarn test && yarn typecheck\",\n    \"package:validate\": \"zx scripts/package.validate.mjs\"\n  },\n  \"packageManager\": \"yarn@4.1.1\"\n}\n"
  },
  {
    "path": "scripts/clean.sh",
    "content": "#!/bin/bash\n\necho \"Removing all dist folders from the project\"\nfind . -name \"dist\" -type d -prune -exec rm -rf {} \\;\n\necho \"Removing all release folders from the project\"\nfind . -name \"release\" -type d -prune -exec rm -rf {} \\;"
  },
  {
    "path": "scripts/copy-prettier-ignore.mjs",
    "content": "#!/usr/bin/env zx\n// @ts-check\nimport \"zx/globals\";\nimport { getWorkspaceList } from \"./tools/workspace.mjs\";\n$.verbose = false;\n\nconst ROOT_DIR = path.join(__dirname, \"..\");\nconst PRETTIER_IGNORE_PATH = path.join(ROOT_DIR, \".prettierignore\");\n\n// check if the .prettierignore file exists\nif (!fs.existsSync(PRETTIER_IGNORE_PATH)) {\n  console.log(`No .prettierignore file found at ${PRETTIER_IGNORE_PATH}`);\n  process.exit(1);\n}\nconsole.log(`found \".prettierignore\" file at ${PRETTIER_IGNORE_PATH}`);\n\n// get all the workspaces in the directory\nconst workspaceList = await getWorkspaceList();\n\n// get a path to the root of each workspace\nconst workspacePaths = workspaceList.map((workspace) => {\n  return path.join(ROOT_DIR, workspace.location);\n});\n\nconsole.log(\n  `found ${workspacePaths.length} workspaces: ${workspacePaths.join(\", \")}`\n);\n\n// copy the .prettierignore file to each workspace\nfor (const workspacePath of workspacePaths) {\n  const workspacePrettierIgnorePath = path.join(\n    workspacePath,\n    \".prettierignore\"\n  );\n  // check if the .prettierignore file already exists in the workspace\n  if (fs.existsSync(workspacePrettierIgnorePath)) {\n    // overwrite the file\n    fs.unlinkSync(workspacePrettierIgnorePath);\n    console.log(\n      `removed existing \".prettierignore\" at ${workspacePrettierIgnorePath}`\n    );\n  }\n\n  fs.copyFileSync(PRETTIER_IGNORE_PATH, workspacePrettierIgnorePath);\n  console.log(`copied \".prettierignore\" to ${workspacePrettierIgnorePath}`);\n}\n"
  },
  {
    "path": "scripts/generate-plugin.mjs",
    "content": "#!/usr/bin/env zx\n// @ts-check\nimport \"zx/globals\"\n\nconst libDir = path.join(__dirname, \"../lib\")\nconst templateDir = path.join(__dirname, \"./template\")\n\nconst [_nodePath, _zxPath, _fileName, _pluginName] = process.argv\n\nconst pluginName = _pluginName.includes(\"reactotron\") ? _pluginName : `reactotron-${_pluginName}`\nconst targetDir = path.join(libDir, pluginName)\n\nconsole.log(`Plugin name: ${pluginName}`)\n// validate that the target directory exists\nif (fs.existsSync(targetDir)) {\n  console.error(`Plugin already exists \"${targetDir}\" does not exist`)\n  process.exit(1)\n}\n\nfs.mkdirSync(targetDir, { recursive: true })\n\n// static files that need to string replacements\nconst filesToCopy = [\n  \"tsconfig.json\",\n  \"LICENSE\",\n  \".babelrc\",\n  \".prettierignore\",\n  \".prettierrc\",\n  \".gitignore\",\n]\n\nfor (const file of filesToCopy) {\n  fs.copyFileSync(path.join(templateDir, file), path.join(targetDir, file))\n}\n\n// dynamic files where we need to update the plugin name\n// or camel case version of it, etc\nfs.writeFileSync(\n  path.join(targetDir, \"package.json\"),\n  JSON.stringify(getPackageJson({ pluginName }), null, 2)\n)\n\nfs.writeFileSync(path.join(targetDir, \"project.json\"), createProjectJson({ pluginName }))\n\nfs.writeFileSync(path.join(targetDir, `README.md`), createTemplateREADME({ pluginName }))\n\nconst srcFolder = path.join(targetDir, \"src\")\nfs.mkdirSync(srcFolder, { recursive: true })\n\nfs.writeFileSync(path.join(srcFolder, `index.ts`), createTemplateIndex({ pluginName }))\n\nfs.writeFileSync(path.join(srcFolder, `${pluginName}.ts`), createTemplatePlugin({ pluginName }))\n\nconsole.log(`Voila! Start building: cd ${targetDir} && yarn`)\nconsole.log(\n  \"FYI you may have to update .circleci/config.yml to include your new plugin when ready.\"\n)\n\n/**\n * Converts a string to camel case.\n * @param {string} str - The string to be converted.\n * @returns {string} - The camel case version of the string.\n */\nfunction camelize(str) {\n  const arr = str.split(\"-\")\n  const capital = arr.map((item, index) =>\n    index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase()\n  )\n  return capital.join(\"\")\n}\n\n/**\n * Converts a string to proper case.\n * @param {string} str - The string to be converted.\n * @returns {string} - The proper case version of the string.\n */\nfunction properCase(str) {\n  const arr = str.split(\"-\")\n  const capital = arr.map((item) => item.charAt(0).toUpperCase() + item.slice(1).toLowerCase())\n  return capital.join(\"\")\n}\n\n/**\n * Creates a template index for a plugin.\n * @param {Object} options - The options for creating the template index.\n * @param {string} options.pluginName - The name of the plugin.\n * @returns {string}\n */\nfunction createTemplateIndex({ pluginName }) {\n  let template = fs.readFileSync(path.join(templateDir, \"src\", \"index.ts\"), \"utf8\")\n\n  template = template.replace(\n    /templatePlugin/g,\n    `${camelize(pluginName.replace(\"reactotron-\", \"\"))}Plugin`\n  )\n  template = template.replace(/reactotron-template/g, pluginName)\n\n  return template\n}\n\n/**\n * Creates a project.json index for a plugin.\n * @param {Object} options - The options for creating the template index.\n * @param {string} options.pluginName - The name of the plugin.\n * @returns {string}\n */\nfunction createProjectJson({ pluginName }) {\n  let template = fs.readFileSync(path.join(templateDir, \"project.json\"), \"utf8\")\n\n  template = template.replace(/reactotron-template/g, pluginName)\n\n  return template\n}\n\n/**\n * Creates a template plugin\n * @param {Object} options - The options for creating the template index.\n * @param {string} options.pluginName - The name of the plugin.\n * @returns {string}\n */\nfunction createTemplatePlugin({ pluginName }) {\n  let template = fs.readFileSync(path.join(templateDir, `src/reactotron-template.ts`), \"utf8\")\n\n  template = template.replace(/Template/g, `${properCase(pluginName.replace(\"reactotron-\", \"\"))}`)\n\n  template = template.replace(\n    /templatePlugin/g,\n    `${camelize(pluginName.replace(\"reactotron-\", \"\"))}Plugin`\n  )\n\n  return template\n}\n\n/**\n * Creates a template index for a readme.\n * @param {Object} options - The options for creating the template index.\n * @param {string} options.pluginName - The name of the plugin.\n * @returns {string}\n */\nfunction createTemplateREADME({ pluginName }) {\n  let template = fs.readFileSync(path.join(templateDir, \"README.md\"), \"utf8\")\n\n  template = template.replace(/reactotron-template/g, pluginName)\n\n  return template\n}\n\n/**\n * Get package.json for a plugin\n * @param {Object} options - The options for creating the template index.\n * @param {string} options.pluginName - The name of the plugin.\n * @returns {string}\n */\nfunction getPackageJson({ pluginName }) {\n  const templatePackageJson = JSON.parse(\n    fs.readFileSync(path.join(templateDir, \"package.json\"), \"utf8\")\n  )\n\n  templatePackageJson.name = pluginName\n  ;(templatePackageJson.homepage = `https://github.com/infinitered/reactotron/tree/master/lib/${pluginName}`),\n    (templatePackageJson.repository = `https://github.com/infinitered/reactotron/tree/master/lib/${pluginName}`)\n\n  return templatePackageJson\n}\n"
  },
  {
    "path": "scripts/git-clone-fork-to-trusted-branch.sh",
    "content": "#!/bin/bash\n\n################################################################################\n# This script is used to clone a forked repository and push a branch to a\n# trusted branch in the reactotron repository, so the CI scripts can.run\n# tests on the forked branch. This prevents unreviewed code from being run\n# in the CI pipeline.\n#\n# Usage: ./scripts/git-clone-fork-to-trusted-branch.sh <fork_username>:<fork_branchname>\n#\n# Example: ./scripts/git-clone-fork-to-trusted-branch.sh \"infinitered:temp-branch-to-test-fork\"\n#\n###############################################################################\n\nset -eo pipefail\n\n: \"${GPF_REACTOTRON_BRANCH:=temp-ci-trusted-fork}\"\n\nREACTOTRON_REPO=\"git@github.com:infinitered/reactotron.git\"\nBRANCH_SPEC=$1\nNUM_COLONS=$(echo \"$BRANCH_SPEC\" | awk -F: '{print NF-1}')\n\nif [ \"$#\" -ne 1 ] || [ \"$NUM_COLONS\" -ne 1 ] ; then\n    echo \"Usage: <fork_username>:<fork_branchname>\"\n    exit 1\nfi\n\nSOURCE_GH_USER=$(echo \"$BRANCH_SPEC\" | awk -F: '{print $1}')\nSOURCE_BRANCH=$(echo \"$BRANCH_SPEC\" | awk -F: '{print $2}')\nREPO_NAME=$(git remote get-url --push origin | awk -F/ '{print $NF}' | sed 's/\\.git$//')\n\n# Check if 'fork-to-test' remote exists and then remove it\nif git config --get \"remote.fork-to-test.url\" > /dev/null; then\n    git remote remove fork-to-test\n    echo \"Removed remote fork-to-test\"\nelse\n    echo \"Remote fork-to-test does not exist, no need to remove it\"\nfi\n\ngit remote add fork-to-test \"git@github.com:$SOURCE_GH_USER/$REPO_NAME.git\"\n\ngit fetch --all\ngit push --force \"$REACTOTRON_REPO\" \"refs/remotes/fork-to-test/$SOURCE_BRANCH:refs/heads/$GPF_REACTOTRON_BRANCH\"\ngit remote remove fork-to-test || echo \"Removed new remote fork-to-test\"\n\ncat <<EOF\nForked branch '$BRANCH_SPEC' has been pushed to branch '$GPF_REACTOTRON_BRANCH'\nEOF\n"
  },
  {
    "path": "scripts/install-workspace-packages-in-target.mjs",
    "content": "#!/usr/bin/env zx\n// @ts-check\nimport \"zx/globals\";\nimport { ROOT_DIR } from \"./tools/path.mjs\";\nimport { getWorkspaceList } from \"./tools/workspace.mjs\";\n\n/**\n * This script copies production versions of this repositories workspace packages to a target node_modules directory.\n * This is useful for testing changes to the reactotron-* packages in other apps, such as Ignite.\n *\n * Usage: npx zx scripts/install-workspace-packages-in-target.mjs <target directory>\n * Example: npx zx scripts/install-workspace-packages-in-target.mjs ~/Code/ignite/boilerplate/node_modules\n *\n * This exists because yarn 3 and yarn 1 linking interop is stupid and this was easier :(\n */\n\n// #region validate target path\n// parse the target directory from the first argument passed to the script\nconst [_nodePath, _zxPath, _fileName, targetDir] = process.argv;\n\nconsole.log(`Target directory: ${targetDir}`);\n\n// if no target directory is passed, exit the script\nif (!targetDir) {\n  console.error(\"Please specify the target directory\");\n  process.exit(1);\n}\n\n// validate that the target directory exists\nif (!fs.existsSync(targetDir)) {\n  console.error(`Target directory \"${targetDir}\" does not exist`);\n  process.exit(1);\n}\n\n// validate that the target directory is a directory\nif (!fs.statSync(targetDir).isDirectory()) {\n  console.error(`Target directory \"${targetDir}\" is not a directory`);\n  process.exit(1);\n}\n\n// get the path to node_modules in the target directory\nconst nodeModulesPath = path.join(targetDir, \"node_modules\");\n\n// if the node_modules directory does not exist, exit the script\nif (!fs.existsSync(nodeModulesPath)) {\n  console.error(\n    `Target directory \"${targetDir}\" does not have a node_modules directory`\n  );\n  process.exit(1);\n}\n\n// validate that the node_modules directory is a directory\nif (!fs.statSync(nodeModulesPath).isDirectory()) {\n  console.error(\n    `Target directory \"${targetDir}\" node_modules directory is not a directory`\n  );\n  process.exit(1);\n}\n\nconsole.log(`Merging local dependencies into \"${nodeModulesPath}\"`);\n// #endregion\n\n// #region find packages in target node_modules that match existing workspace packages\nconst workspaces = await getWorkspaceList();\nconst workspaceNames = workspaces.map((w) => w.name);\nconst packages = fs\n  .readdirSync(nodeModulesPath)\n  .filter((file) => workspaceNames.includes(file))\n  .filter((file) =>\n    fs.statSync(path.join(nodeModulesPath, file)).isDirectory()\n  );\n\nconsole.log(\n  `Found ${packages.length} packages to merge: ${packages.join(\", \")}`\n);\n// #endregion\n\n// #region copy local packages into target node_modules\nfor (const pkg of packages) {\n  console.log(`Removing ${pkg}...`);\n  await $`rm -rf ${nodeModulesPath}/${pkg}`;\n}\n\nconsole.log(\"Removing existing tarballs...\");\nawait $`rm -rf ${nodeModulesPath}/*.tgz`;\n\n// for each package, run 'yarn pack --out nodeModulesPath/<package>.tgz' in the local workspace\nfor (const pkg of packages) {\n  console.log(`Packing ${pkg}...`);\n  const workspacePath = path.join(ROOT_DIR, \"lib\", pkg);\n  console.log(\"cd to workspace: \", workspacePath);\n  await $`cd ${workspacePath} && yarn pack --out ${nodeModulesPath}/${pkg}.tgz`;\n}\n\n// for each package, unzip tarball into nodeModulesPath/<package>\nfor (const pkg of packages) {\n  console.log(`Unpacking ${pkg}...`);\n  await $`tar -xzf ${nodeModulesPath}/${pkg}.tgz -C ${nodeModulesPath}`;\n  console.log(`Rename ${nodeModulesPath}/package to ${nodeModulesPath}/${pkg}`); // not sure why but yarn pack always creates a package directory\n  await fs.rename(`${nodeModulesPath}/package`, `${nodeModulesPath}/${pkg}`);\n  console.log(`Remove ${nodeModulesPath}/${pkg}.tgz`);\n  await $`rm ${nodeModulesPath}/${pkg}.tgz`;\n  console.log(`Remove ${nodeModulesPath}/package temp directory`);\n  await $`rm -rf ${nodeModulesPath}/package`;\n}\n// #endregion\n"
  },
  {
    "path": "scripts/package.validate.mjs",
    "content": "#!/usr/bin/env zx\n// @ts-check\nimport \"zx/globals\"\nimport { getWorkspaceList } from \"./tools/workspace.mjs\"\n$.verbose = false\n\nconsole.log(\n  [\"Validating each workspace has the correct package.json fields for publishing.\"].join(\"\\n\")\n)\n\n// #region Find lib workspaces\nconst ROOT_DIR = path.join(path.dirname(new URL(import.meta.url).pathname), \"..\")\n\nconst workspaceList = await getWorkspaceList()\n\nconst workspacePaths = workspaceList\n  // create absolute paths\n  .map((workspace) => path.join(ROOT_DIR, workspace.location))\n  // filter out workspaces without /lib/ in the path\n  .filter((workspacePath) => workspacePath.includes(\"/lib/\"))\n\nconsole.log(`Found ${workspacePaths.length} library workspaces`)\nconsole.log(\"\")\n// #endregion\n\n// Track results for all packages\nconst validationResults = []\n\nfor (const workspacePath of workspacePaths) {\n  const workspaceName = path.basename(workspacePath)\n  const errors = []\n\n  console.log(`🔍 Validating \"${workspaceName}\"...`)\n\n  // #region Parse package.json\n  const packageJsonPath = path.join(workspacePath, \"package.json\")\n\n  let packageJson\n  try {\n    const packageJsonFile = fs.readFileSync(packageJsonPath, \"utf-8\")\n    if (!packageJsonFile || typeof packageJsonFile !== \"string\") {\n      errors.push(`Failed to read ${packageJsonPath}`)\n    } else {\n      packageJson = JSON.parse(packageJsonFile)\n      if (!packageJson || typeof packageJson !== \"object\" || Array.isArray(packageJson)) {\n        errors.push(`Failed to parse ${packageJsonPath}`)\n      }\n    }\n  } catch (error) {\n    errors.push(`Failed to read or parse ${packageJsonPath}: ${error.message}`)\n  }\n\n  // Skip validation if we can't parse the package.json\n  if (errors.length > 0 || !packageJson) {\n    validationResults.push({ workspaceName, workspacePath, passed: false, errors })\n    continue\n  }\n  // #endregion\n\n  // #region Validate package.json\n\n  // assert \"author\" field is Infinite Red\n  if (packageJson.author !== \"Infinite Red\") {\n    errors.push(`Invalid author field: \"${packageJson.author}\" (expected \"Infinite Red\")`)\n  }\n\n  // assert \"license\" field is MIT\n  if (packageJson.license !== \"MIT\") {\n    errors.push(`Invalid license field: \"${packageJson.license}\" (expected \"MIT\")`)\n  }\n\n  // assert \"bugs.url\" field is \"https://github.com/infinitered/reactotron/issues\"\n  if (packageJson.bugs?.url !== \"https://github.com/infinitered/reactotron/issues\") {\n    errors.push(\n      `Invalid bugs.url field: \"${packageJson.bugs?.url}\" (expected \"https://github.com/infinitered/reactotron/issues\")`\n    )\n  }\n\n  // assert \"homepage\" field is `https://github.com/infinitered/reactotron/tree/master/lib/${workspaceName}`\n  const expectedHomepage = `https://github.com/infinitered/reactotron/tree/master/lib/${workspaceName}`\n  if (packageJson.homepage !== expectedHomepage) {\n    errors.push(\n      `Invalid homepage field: \"${packageJson.homepage}\" (expected \"${expectedHomepage}\")`\n    )\n  }\n\n  // assert \"repository\" field is `https://github.com/infinitered/reactotron/tree/master/lib/${workspaceName}`\n  const expectedRepository = `https://github.com/infinitered/reactotron/tree/master/lib/${workspaceName}`\n  if (packageJson.repository !== expectedRepository) {\n    errors.push(\n      `Invalid repository field: \"${packageJson.repository}\" (expected \"${expectedRepository}\")`\n    )\n  }\n\n  // assert \"files\" field should be [\"dist\", \"src\"]\n  // LICENSE, README, and package.json are implicitly included https://docs.npmjs.com/cli/v10/configuring-npm/package-json#files\n  if (\n    !Array.isArray(packageJson.files) ||\n    packageJson.files.length !== 2 ||\n    packageJson.files[0] !== \"dist\" ||\n    packageJson.files[1] !== \"src\"\n  ) {\n    errors.push(\n      `Invalid files field: ${JSON.stringify(packageJson.files)} (expected [\"dist\", \"src\"])`\n    )\n  }\n\n  // assert \"main\" field is \"./dist/commonjs/index.js\" (CommonJS build for legacy compatibility)\n  if (packageJson.main !== \"./dist/commonjs/index.js\") {\n    errors.push(`Invalid main field: \"${packageJson.main}\" (expected \"./dist/commonjs/index.js\")`)\n  }\n\n  // assert \"main\" field points to a real file\n  const mainPath = path.join(workspacePath, packageJson.main || \"\")\n  if (!fs.existsSync(mainPath)) {\n    errors.push(`Missing main file: ${mainPath}`)\n  }\n\n  // assert \"types\" field is \"./dist/typescript/commonjs/src/index.d.ts\" (dual-build structure)\n  if (packageJson.types !== \"./dist/typescript/commonjs/src/index.d.ts\") {\n    errors.push(\n      `Invalid types field: \"${packageJson.types}\" (expected \"./dist/typescript/commonjs/src/index.d.ts\")`\n    )\n  }\n\n  // assert \"types\" field points to a real file\n  const typesPath = path.join(workspacePath, packageJson.types || \"\")\n  if (!fs.existsSync(typesPath)) {\n    errors.push(`Missing types file: ${typesPath}`)\n  }\n\n  // assert \"module\" field is \"./dist/module/index.js\" (ES module build for modern tools)\n  if (packageJson.module !== \"./dist/module/index.js\") {\n    errors.push(`Invalid module field: \"${packageJson.module}\" (expected \"./dist/module/index.js\")`)\n  }\n\n  // assert \"module\" field points to a real file\n  const modulePath = path.join(workspacePath, packageJson.module || \"\")\n  if (!fs.existsSync(modulePath)) {\n    errors.push(`Missing module file: ${modulePath}`)\n  }\n\n  // assert \"react-native\" field does not exist (react-native-builder-bob doesn't use this)\n  if (packageJson[\"react-native\"] !== undefined) {\n    errors.push(\n      `Unexpected react-native field: \"${packageJson[\"react-native\"]}\" (should not exist for react-native-builder-bob)`\n    )\n  }\n\n  // assert \"exports\" field structure for react-native-builder-bob dual build\n  if (\n    !packageJson.exports ||\n    typeof packageJson.exports !== \"object\" ||\n    Array.isArray(packageJson.exports) ||\n    !packageJson.exports[\".\"] ||\n    !packageJson.exports[\".\"].source ||\n    !packageJson.exports[\".\"].default ||\n    !packageJson.exports[\".\"].module ||\n    !packageJson.exports[\".\"].types ||\n    !packageJson.exports[\"./package.json\"]\n  ) {\n    errors.push(\n      `Invalid exports field: ${JSON.stringify(packageJson.exports, null, 2)} (must have \".\", \"./package.json\" with \".\" containing source, default, module, and types fields)`\n    )\n  }\n\n  // assert \"exports.'.'.default\" field is \"./dist/commonjs/index.js\" (CommonJS for legacy compatibility)\n  if (packageJson.exports?.[\".\"]?.default !== \"./dist/commonjs/index.js\") {\n    errors.push(\n      `Invalid exports.\".\".default field: \"${packageJson.exports?.[\".\"]?.default}\" (expected \"./dist/commonjs/index.js\")`\n    )\n  }\n\n  // assert \"exports.'.'.default\" field points to a real file\n  const exportsDefaultPath = path.join(workspacePath, packageJson.exports?.[\".\"]?.default || \"\")\n  if (packageJson.exports?.[\".\"]?.default && !fs.existsSync(exportsDefaultPath)) {\n    errors.push(`Missing exports.\".\".default file: ${exportsDefaultPath}`)\n  }\n\n  // assert \"exports.'.'.module\" field is \"./dist/module/index.js\" (ES module build)\n  if (packageJson.exports?.[\".\"]?.module !== \"./dist/module/index.js\") {\n    errors.push(\n      `Invalid exports.\".\".module field: \"${packageJson.exports?.[\".\"]?.module}\" (expected \"./dist/module/index.js\")`\n    )\n  }\n\n  // assert \"exports.'.'.module\" field points to a real file\n  const exportsModulePath = path.join(workspacePath, packageJson.exports?.[\".\"]?.module || \"\")\n  if (packageJson.exports?.[\".\"]?.module && !fs.existsSync(exportsModulePath)) {\n    errors.push(`Missing exports.\".\".module file: ${exportsModulePath}`)\n  }\n\n  // assert \"exports.'.'.types\" field is \"./dist/typescript/commonjs/src/index.d.ts\"\n  if (packageJson.exports?.[\".\"]?.types !== \"./dist/typescript/commonjs/src/index.d.ts\") {\n    errors.push(\n      `Invalid exports.\".\".types field: \"${packageJson.exports?.[\".\"]?.types}\" (expected \"./dist/typescript/commonjs/src/index.d.ts\")`\n    )\n  }\n\n  // assert \"exports.'.'.types\" field is a real file\n  const exportsTypesPath = path.join(workspacePath, packageJson.exports?.[\".\"]?.types || \"\")\n  if (packageJson.exports?.[\".\"]?.types && !fs.existsSync(exportsTypesPath)) {\n    errors.push(`Missing exports.\".\".types file: ${exportsTypesPath}`)\n  }\n\n  // assert \"exports.'.'.source\" field points to a real file (index.ts or index.tsx)\n  const exportsSource = packageJson.exports?.[\".\"]?.source\n  if (exportsSource) {\n    const exportsSourcePath = path.join(workspacePath, exportsSource)\n    if (!fs.existsSync(exportsSourcePath)) {\n      errors.push(`Missing exports.\".\".source file: ${exportsSourcePath}`)\n    } else {\n      // Check that it's either index.ts or index.tsx\n      const sourceBasename = path.basename(exportsSource)\n      if (sourceBasename !== \"index.ts\" && sourceBasename !== \"index.tsx\") {\n        errors.push(\n          `Invalid exports.\".\".source file: \"${exportsSource}\" (expected \"./src/index.ts\" or \"./src/index.tsx\", got \"${sourceBasename}\")`\n        )\n      }\n    }\n  } else {\n    errors.push(`Missing exports.\".\".source field`)\n  }\n\n  // assert \"exports.'./package.json'\" field is \"./package.json\"\n  if (packageJson.exports?.[\"./package.json\"] !== \"./package.json\") {\n    errors.push(\n      `Invalid exports.\"./package.json\" field: \"${packageJson.exports?.[\"./package.json\"]}\" (expected \"./package.json\")`\n    )\n  }\n\n  // #endregion\n\n  // Record the results for this package\n  const passed = errors.length === 0\n  validationResults.push({ workspaceName, workspacePath, passed, errors })\n\n  if (passed) {\n    console.log(`  ✅ ${workspaceName} - PASSED`)\n  } else {\n    console.log(\n      `  ❌ ${workspaceName} - FAILED (${errors.length} issue${errors.length === 1 ? \"\" : \"s\"})`\n    )\n  }\n}\n\n// #region Generate Summary Report\nconsole.log(\"\")\nconsole.log(\"=\".repeat(80))\nconsole.log(\"📊 VALIDATION SUMMARY\")\nconsole.log(\"=\".repeat(80))\n\nconst passedPackages = validationResults.filter((result) => result.passed)\nconst failedPackages = validationResults.filter((result) => !result.passed)\n\nconsole.log(`Total packages: ${validationResults.length}`)\nconsole.log(`✅ Passed: ${passedPackages.length}`)\nconsole.log(`❌ Failed: ${failedPackages.length}`)\nconsole.log(\"\")\n\nif (passedPackages.length > 0) {\n  console.log(\"✅ PASSED PACKAGES:\")\n  passedPackages.forEach((result) => {\n    console.log(`  • ${result.workspaceName}`)\n  })\n  console.log(\"\")\n}\n\nif (failedPackages.length > 0) {\n  console.log(\"❌ FAILED PACKAGES:\")\n  failedPackages.forEach((result) => {\n    console.log(\n      `  • ${result.workspaceName} (${result.errors.length} issue${result.errors.length === 1 ? \"\" : \"s\"})`\n    )\n    result.errors.forEach((error, index) => {\n      console.log(`    ${index + 1}. ${error}`)\n    })\n    console.log(\"\")\n  })\n}\n\nconsole.log(\"=\".repeat(80))\n\nif (failedPackages.length === 0) {\n  console.log(\"🎉 All packages passed validation!\")\n  process.exit(0)\n} else {\n  console.log(\n    `💥 ${failedPackages.length} package${failedPackages.length === 1 ? \"\" : \"s\"} failed validation.`\n  )\n  process.exit(1)\n}\n// #endregion\n"
  },
  {
    "path": "scripts/postinstall.sh",
    "content": "#!/bin/bash\n\nif [ \"$SKIP_LIB_BUILD\" = \"1\" ]; then\n  echo \"SKIP_LIB_BUILD=1, skipping workspace build\"\n  exit 0\nfi\n\necho \"Build all workspace packages to ensure all internal dependencies are up to date\"\nyarn build"
  },
  {
    "path": "scripts/release.artifacts.mjs",
    "content": "#!/usr/bin/env zx\n// @ts-check\nimport \"zx/globals\"\nimport { getWorkspaceList } from \"./tools/workspace.mjs\"\n\nconst isCi = process.env.CI === \"true\"\nconst [_NODE_PATH, _ZX_PATH, _SCRIPT_PATH, ...args] = process.argv\nconst [gitTag] = args\nconst [npmWorkspace, version] = gitTag.split(\"@\")\n\n// #region assert tag matches 'app@1.1.1' format\nconst GIT_TAG_REGEX = /^[a-z0-9-]+@[a-z0-9\\.-]+$/ // 'reactotron-app@3.0.0' | 'reactotron-core-ui@2.0.1'\n/** @see https://gist.github.com/jhorsman/62eeea161a13b80e39f5249281e17c39 */\nconst SEM_VER_REGEX =\n  /^([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z-]+)?$/\nif (\n  !gitTag ||\n  !gitTag.match(GIT_TAG_REGEX) ||\n  !npmWorkspace ||\n  !version ||\n  !version.match(SEM_VER_REGEX)\n) {\n  console.error(`First argument must match format: <workspace>@<version>, got '${gitTag}'`)\n  process.exit(1)\n}\nconsole.log(`Creating release for '${gitTag}'`)\n\n// #endregion\n\n// #region assert GITHUB_TOKEN is set\nif (typeof process.env.GITHUB_TOKEN !== \"string\" || process.env.GITHUB_TOKEN === \"\") {\n  console.error(\"GITHUB_TOKEN environment variable is required\")\n  process.exit(1)\n}\n// #endregion\n\n// #region assert that workspace exists\nconst workspaces = await getWorkspaceList()\nconst relativePath = workspaces.find((w) => w.name === npmWorkspace)?.location\nif (!relativePath) {\n  console.error(`Workspace '${npmWorkspace}' does not exist`)\n  process.exit(1)\n}\nconst npmWorkspacePath = path.join(\n  __dirname, // ~/scripts\n  \"..\", // ~/\n  relativePath // ~/packages/reactotron-app\n)\n\nif (!fs.existsSync(npmWorkspacePath)) {\n  console.error(`Workspace '${npmWorkspace}' does not exist at '${npmWorkspacePath}'`)\n  process.exit(1)\n}\n\nconsole.log(`Found workspace '${npmWorkspace}' at '${npmWorkspacePath}'`)\n// #endregion\n\n// #region assert NPM_TOKEN is set\nif (isCi) {\n  if (typeof process.env.NPM_TOKEN !== \"string\" || process.env.NPM_TOKEN === \"\") {\n    console.error(\"NPM_TOKEN environment variable is required\")\n    process.exit(1)\n  }\n}\n// #endregion\n\n// #region extract changelog entry for this version\n/**\n * Gets the changelog entry for a specific version\n * @param {string} version The version to extract (without '@' prefix)\n * @param {string} workspacePath Path to the workspace directory\n * @returns {string} The formatted changelog entry or a default message\n */\nfunction getChangelogEntry(version, workspacePath) {\n  try {\n    // Try to find and parse the appropriate CHANGELOG.md file\n    const changelogPath = path.join(workspacePath, \"CHANGELOG.md\")\n\n    // If changelog doesn't exist, return a default message\n    if (!fs.existsSync(changelogPath)) {\n      console.warn(`No CHANGELOG.md found at ${changelogPath}`)\n      return `Release version ${version}. See repository for changes.`\n    }\n\n    const changelog = fs.readFileSync(changelogPath, \"utf8\")\n\n    // Extract the section for this version\n    // Match both ## and ### header styles\n    const versionHeaderRegex = new RegExp(\n      `(?:##|###)\\\\s*\\\\[${version}\\\\][^]*?(?=(?:##|###)\\\\s*\\\\[|$)`,\n      \"s\"\n    )\n    const match = changelog.match(versionHeaderRegex)\n\n    if (!match) {\n      console.warn(`No changelog entry found for version ${version}`)\n      return `Release version ${version}. See repository for changes.`\n    }\n\n    // Return the matching section, excluding the header\n    const lines = match[0].split(\"\\n\")\n    const contentWithoutHeader = lines.slice(1).join(\"\\n\").trim()\n\n    // If the changelog entry is empty, try to find accumulated changes\n    if (!contentWithoutHeader) {\n      console.warn(\n        `Empty changelog entry for version ${version}, looking for accumulated changes...`\n      )\n\n      // Find previous significant version to compare against\n      const allVersionsRegex = /(?:##|###)\\s*\\[([^\\]]+)\\]/g\n      const versions = []\n      let versionMatch\n\n      while ((versionMatch = allVersionsRegex.exec(changelog)) !== null) {\n        versions.push(versionMatch[1])\n      }\n\n      // Get index of current version\n      const currentIndex = versions.indexOf(version)\n\n      if (currentIndex !== -1 && currentIndex < versions.length - 1) {\n        // Find previous significant version (with different major or minor)\n        const [currentMajor, currentMinor] = version.split(\".\").map(Number)\n        let previousVersion = null\n\n        for (let i = currentIndex + 1; i < versions.length; i++) {\n          const ver = versions[i]\n          const [major, minor] = ver.split(\".\").map(Number)\n\n          if (major !== currentMajor || minor !== currentMinor) {\n            previousVersion = ver\n            break\n          }\n        }\n\n        if (previousVersion) {\n          return `This release includes all changes accumulated since version ${previousVersion}.\\n\\nSee the [CHANGELOG](https://github.com/infinitered/reactotron/blob/${npmWorkspace}/CHANGELOG.md) for more details.`\n        }\n      }\n\n      return `Release version ${version}. See repository for changes.`\n    }\n\n    return contentWithoutHeader\n  } catch (error) {\n    console.error(`Error extracting changelog entry: ${error.message}`)\n    return `Release version ${version}. See repository for changes.`\n  }\n}\n\n// Get the release notes for this version\nconst releaseNotes = getChangelogEntry(version, npmWorkspacePath)\nconsole.log(`Got release notes (${releaseNotes.length} characters)`)\n// #endregion\n\n// #region release on npm\nif (isCi) {\n  const npmTag = gitTag.includes(\"beta\") ? \"beta\" : gitTag.includes(\"alpha\") ? \"alpha\" : \"latest\"\n\n  console.log(`Creating npm release for: ${gitTag}`)\n  cd(npmWorkspacePath)\n  await $`yarn npm publish --access public --tag ${npmTag}`\n  cd(__dirname)\n} else {\n  console.log(\"Skipping npm release because this is not a CI build\")\n}\n// #endregion\n\n// #region release on github\nconst { Octokit } = require(\"@octokit/rest\")\n\nconst octokit = new Octokit({\n  auth: process.env.GITHUB_TOKEN,\n})\n\ntry {\n  const res = await octokit.repos.createRelease({\n    owner: \"infinitered\",\n    repo: \"reactotron\",\n    tag_name: gitTag,\n    name: gitTag,\n    body: releaseNotes,\n    prerelease: version.includes(\"beta\") || version.includes(\"alpha\"),\n    target_commitish: version.includes(\"beta\")\n      ? \"beta\"\n      : version.includes(\"alpha\")\n        ? \"alpha\"\n        : \"master\",\n    draft: !isCi,\n  })\n\n  console.log(`Created github release for '${gitTag}' at '${res.data.html_url}'`)\n} catch (error) {\n  if (error instanceof Error) {\n    console.error(error.message)\n    process.exit(1)\n  } else {\n    console.error(\"Something went wrong\")\n    console.error(error)\n    process.exit(1)\n  }\n}\n// #endregion\n"
  },
  {
    "path": "scripts/release.tags.push.mjs",
    "content": "#!/usr/bin/env zx\n// @ts-check\nimport \"zx/globals\";\nimport { getLocalTags, getRemoteTags } from \"./tools/git.mjs\";\n\nconst localTags = await getLocalTags();\nconst remoteTags = await getRemoteTags();\n\nconst isCi = process.env.CI === \"true\";\n\n// find all the tags that are local but not remote\nconst tagsToPush = localTags.filter((tag) => !remoteTags.includes(tag));\n\nif (tagsToPush.length === 0) {\n  console.log(`No tags to push`);\n  process.exit(0);\n}\n\nconsole.log(\n  `${tagsToPush.length} tag(s) to push: ${os.EOL}${tagsToPush.join(\", \")}${\n    os.EOL\n  }`\n);\n\nconsole.log(\"Pushing tags one at a time\");\nconsole.log(\n  \"This is because github does not trigger webhooks when pushing more than 3 tags at once\"\n);\nconsole.log(\n  \"'https://support.circleci.com/hc/en-us/articles/360052198651-When-I-Push-4-or-More-Tags-in-a-Single-Push-No-CircleCI-Workflows-Are-Triggered'\"\n);\nconsole.log(os.EOL);\n\nfor (const tag of tagsToPush) {\n  console.log(`Pushing tag: '${tag}'`);\n  if (isCi) {\n    await $`git push origin ${tag}`.quiet();\n  } else {\n    console.log(\"Not in CI, skipping push\");\n  }\n}\n"
  },
  {
    "path": "scripts/reset.sh",
    "content": "#!/bin/bash\n\necho \"Nx Reset - Clears all the cached Nx artifacts and metadata about the workspace and shuts down the Nx Daemon.\"\nyarn nx reset\n\nsh scripts/clean.sh\n\necho \"Removing all node_modules folders from the project\"\nfind . -name \"node_modules\" -type d -prune -exec rm -rf {} \\;\n"
  },
  {
    "path": "scripts/template/.babelrc",
    "content": "{\n  \"presets\": [\"@babel/preset-env\", \"@babel/preset-typescript\"]\n}\n"
  },
  {
    "path": "scripts/template/.gitignore",
    "content": "node_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\nyarn-error.log\n.idea\n"
  },
  {
    "path": "scripts/template/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 - 2024 Infinite Red LLC.\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": "scripts/template/README.md",
    "content": "# reactotron-template\n\nTODO Description\n\n# Installing\n\n```bash\nnpm i --save-dev reactotron-template\n# or\nyarn add -D reactotron-template\n```\n\n## Usage\n\nTODO Usage\n"
  },
  {
    "path": "scripts/template/package.json",
    "content": "{\n  \"name\": \"reactotron-template\",\n  \"version\": \"0.0.1\",\n  \"description\": \"A Reactotron plugin\",\n  \"author\": \"Infinite Red\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/infinitered/reactotron/issues\"\n  },\n  \"homepage\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-template\",\n  \"repository\": \"https://github.com/infinitered/reactotron/tree/master/lib/reactotron-template\",\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"main\": \"./dist/module/index.js\",\n  \"types\": \"./dist/typescript/src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"source\": \"./src/index.ts\",\n      \"types\": \"./dist/typescript/src/index.d.ts\",\n      \"default\": \"./dist/module/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"test\": \"jest --passWithNoTests\",\n    \"test:watch\": \"jest --watch\",\n    \"format\": \"prettier '*.{js,ts,tsx,json,md,css,yml}|**/*.{js,ts,tsx,json,md,css,yml}' --config ../../.prettierrc --ignore-path ../../.prettierignore\",\n    \"format:check\": \"yarn format --check\",\n    \"format:write\": \"yarn format --write\",\n    \"prebuild\": \"yarn clean\",\n    \"build\": \"bob build\",\n    \"prebuild:dev\": \"yarn clean\",\n    \"build:dev\": \"bob build\",\n    \"clean\": \"rimraf ./dist\",\n    \"lint\": \"eslint 'src/**/**.{ts,tsx}'\",\n    \"tsc\": \"tsc\",\n    \"typecheck\": \"tsc --noEmit --emitDeclarationOnly false\",\n    \"ci:test\": \"yarn test --runInBand\"\n  },\n  \"peerDependencies\": {\n    \"reactotron-core-client\": \"*\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@types/jest\": \"^29.5.7\",\n    \"@types/node\": \"^18.18.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.7.5\",\n    \"@typescript-eslint/parser\": \"^6.7.5\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"^29.7.0\",\n    \"eslint\": \"^8.53.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.29.0\",\n    \"eslint-plugin-n\": \"^16.2.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-standard\": \"^5.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"prettier\": \"^3.0.3\",\n    \"react-native-mmkv\": \"^2.10.2\",\n    \"reactotron-core-client\": \"workspace:*\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"^4.9.5\"\n  },\n  \"eslintConfig\": {\n    \"root\": false\n  },\n  \"react-native-builder-bob\": {\n    \"source\": \"src\",\n    \"output\": \"dist\",\n    \"exclude\": \"**/*.test.{tsx,ts}\",\n    \"targets\": [\n      [\n        \"module\",\n        {\n          \"esm\": true\n        }\n      ],\n      \"typescript\"\n    ]\n  }\n}\n"
  },
  {
    "path": "scripts/template/project.json",
    "content": "{\n  \"name\": \"reactotron-template\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"targets\": {\n    \"version\": {\n      \"executor\": \"@jscutlery/semver:version\"\n    }\n  }\n}\n"
  },
  {
    "path": "scripts/template/src/index.ts",
    "content": "import templatePlugin from \"./reactotron-template\";\nexport * from \"./reactotron-template\";\nexport default templatePlugin;\n"
  },
  {
    "path": "scripts/template/src/reactotron-template.ts",
    "content": "export interface TemplateConfigPlugin {\n  // type your plugin config here\n}\n\nexport default function templatePlugin() {\n  // implement your plugin here\n}\n"
  },
  {
    "path": "scripts/template/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"declaration\": true,\n    \"declarationDir\": \"dist/types\",\n    \"rootDir\": \".\",\n    \"emitDeclarationOnly\": true,\n    \"emitDecoratorMetadata\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"es2015\",\n    \"moduleResolution\": \"node\",\n    \"noImplicitAny\": false,\n    \"noImplicitReturns\": true,\n    \"noImplicitThis\": true,\n    \"noUnusedLocals\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"skipLibCheck\": true, // Temp?\n    \"esModuleInterop\": true\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "scripts/tools/git.mjs",
    "content": "import \"zx/globals\";\n// @ts-check\n\nimport { ROOT_DIR } from \"./path.mjs\";\n\n/**\n * Sorry for this horrible regex, but it's the only one I could find that worked\n * @see https://gist.github.com/jhorsman/62eeea161a13b80e39f5249281e17c39\n * @example 'v1.1.1'\n * @example 'reactotron-app@3.0.0'\n * @example 'reactotron-apisauce@3.0.1-alpha.1'\n */\nexport const GIT_TAG_REGEX =\n  /([\\w-]+@|v)([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z-]+)?/g; // 'reactotron-app@3.0.0'\n\n/**\n * Example inputs:\n *\n * `0a2af725bcb7e92397ffa6fd865220840a2013d        refs/tags/v2.8.0-beta.2@beta`\n *\n * `a1d7577938005b5a6bfd3b6a82cdb3439ff254ce        refs/tags/v2.8.1`\n *\n * `456b8aea8c243a29463f2dadf49bb7e63bbeacac        refs/tags/v2.8.10`\n *\n * `77716bb4e3146d8b220c9e3c97f3aef4b2825d12        refs/tags/reactotron-apisauce@3.0.0`\n *\n * `d1da997c9105c226533192e013de713f18a74c0f        refs/tags/reactotron-apisauce@3.0.1-alpha.1^{}`\n *\n * @param line {string}\n */\nconst parseTag = (line) => {\n  const tag = line.match(GIT_TAG_REGEX);\n  return tag ? tag[0] : null;\n};\n\nconst unique = (value, index, self) => {\n  return self.indexOf(value) === index;\n};\n\n/**\n * Grabs all the tags in the local repository.\n * @returns {Promise<string[]>}\n */\nexport const getLocalTags = async () => {\n  const tags = await $`cd ${ROOT_DIR} && git show-ref --tags`.quiet();\n  return tags.stdout\n    .split(os.EOL)\n    .map(parseTag)\n    .filter((tag) => !!tag)\n    .filter(unique);\n};\n\n/**\n * Grabs all the tags from the remote origin.\n * Assumes that you have already run `git fetch --tags`\n * @returns {Promise<string[]>}\n */\nexport const getRemoteTags = async () => {\n  const tags = await $`cd ${ROOT_DIR} && git ls-remote --tags origin`.quiet();\n\n  return tags.stdout\n    .split(os.EOL)\n    .map(parseTag)\n    .filter((tag) => !!tag)\n    .filter(unique);\n};\n"
  },
  {
    "path": "scripts/tools/path.mjs",
    "content": "export const ROOT_DIR = path.join(__dirname, \"..\");\n"
  },
  {
    "path": "scripts/tools/workspace.mjs",
    "content": "/**\n * Serialized `yarn workspaces list --json` output\n * @typedef {WorkspaceMetadata[]} WorkspaceList\n * @example [{\"location\":\".\",\"name\":\"reactotron\"},{\"location\":\"apps/reactotron-app\",\"name\":\"reactotron-app\"}]\n */\n\n/**\n * yarn workspace metadata\n * @typedef {Object} WorkspaceMetadata\n * @property {string} location\n * @property {string} name\n * @example {\"location\":\"apps/reactotron-app\",\"name\":\"reactotron-app\"}\n */\n\n/**\n * Get a list of all the workspace names and locations\n */\nexport const getWorkspaceList = async () => {\n  /** @type {WorkspaceList} */\n  const workspaceMetadata = [];\n  try {\n    /**\n     * Example output\n     * ```\n     * {\"location\":\".\",\"name\":\"reactotron\"}\\n\n     * {\"location\":\"apps/reactotron-app\",\"name\":\"reactotron-app\"}\\n\n     * {\"location\":\"lib/reactotron-apisauce\",\"name\":\"reactotron-apisauce\"}\\n\n     * \\n\n     * ```\n     */\n    const output = await $`yarn workspaces list --json`.quiet();\n\n    /**\n     * @param {string} line\n     * @returns {WorkspaceMetadata}\n     */\n    const parse = (line) => JSON.parse(line.trim());\n\n    const info = output.stdout\n      .split(os.EOL) // split on \\n\n      .filter((line) => !!line) // remove any empty lines like ''\n      .map(parse)\n      .filter((line) => line.location !== \".\"); // filter out root workspace: `{\"location\":\".\",\"name\":\"reactotron\"}`\n\n    workspaceMetadata.push(...info);\n  } catch (error) {\n    console.error(`Failed to get workspace names`);\n    if (error instanceof ProcessOutput) {\n      console.error(error.stdout);\n    }\n    if (error instanceof Error) {\n      console.error(error.message);\n    }\n    process.exit(1);\n  }\n\n  return workspaceMetadata;\n};\n"
  },
  {
    "path": "tsconfig.base.json",
    "content": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"rootDir\": \".\",\n    \"sourceMap\": true,\n    \"declaration\": false,\n    \"moduleResolution\": \"node\",\n    \"emitDecoratorMetadata\": true,\n    \"experimentalDecorators\": true,\n    \"importHelpers\": true,\n    \"target\": \"es2015\",\n    \"module\": \"esnext\",\n    \"lib\": [\"es2017\", \"dom\"],\n    \"skipLibCheck\": true,\n    \"skipDefaultLibCheck\": true,\n    \"baseUrl\": \".\",\n    \"paths\": {},\n    \"typeRoots\": [\"node_modules/@types\", \"types\"],\n    \"esModuleInterop\": true\n  },\n  \"exclude\": [\"node_modules\", \"tmp\"]\n}\n"
  },
  {
    "path": "types/react-native/Libraries/Core/Devtools/parseHermesStack.d.ts",
    "content": "declare module \"react-native/Libraries/Core/Devtools/parseHermesStack\" {\n  type HermesStackLocationNative = Readonly<{\n    type: \"NATIVE\";\n  }>;\n  type HermesStackLocationSource = Readonly<{\n    type: \"SOURCE\";\n    sourceUrl: string;\n    line1Based: number;\n    column1Based: number;\n  }>;\n  type HermesStackLocationInternalBytecode = Readonly<{\n    type: \"INTERNAL_BYTECODE\";\n    sourceUrl: string;\n    line1Based: number;\n    virtualOffset0Based: number;\n  }>;\n  type HermesStackLocationBytecode = Readonly<{\n    type: \"BYTECODE\";\n    sourceUrl: string;\n    line1Based: number;\n    virtualOffset0Based: number;\n  }>;\n  type HermesStackLocation =\n    | HermesStackLocationNative\n    | HermesStackLocationSource\n    | HermesStackLocationInternalBytecode\n    | HermesStackLocationBytecode;\n  type HermesStackEntryFrame = Readonly<{\n    type: \"FRAME\";\n    location: HermesStackLocation;\n    functionName: string;\n  }>;\n  type HermesStackEntrySkipped = Readonly<{\n    type: \"SKIPPED\";\n    count: number;\n  }>;\n  type HermesStackEntry = HermesStackEntryFrame | HermesStackEntrySkipped;\n\n  export type HermesParsedStack = Readonly<{\n    message: string;\n    entries: ReadonlyArray<HermesStackEntry>;\n  }>;\n\n  function parseHermesStack(stack: string): HermesParsedStack;\n\n  export default parseHermesStack;\n}\n"
  },
  {
    "path": "types/react-native/Libraries/Core/NativeExceptionsManager.d.ts",
    "content": "declare module \"react-native/Libraries/Core/NativeExceptionsManager\" {\n  /**\n   * @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/NativeExceptionsManager.js#L17-L23\n   */\n  export interface StackFrame {\n    column?: number;\n    file?: string;\n    lineNumber?: number;\n    methodName: string;\n    collapse?: boolean;\n  }\n  /**\n   * @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/Core/NativeExceptionsManager.js#L24-L35\n   */\n  export interface ExceptionData {\n    message: string;\n    originalMessage?: string;\n    name?: string;\n    componentStack?: string;\n    stack: Array<StackFrame>;\n    id: number;\n    isFatal: boolean;\n    extraData?: object;\n  }\n}\n"
  },
  {
    "path": "types/react-native/Libraries/LogBox/Data/parseLogBoxLog.d.ts",
    "content": "declare module \"react-native/Libraries/LogBox/Data/parseLogBoxLog\" {\n  import type { ExceptionData } from \"react-native/Libraries/Core/NativeExceptionsManager\";\n  /**\n   * @see https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js#L26-L29\n   */\n  export interface ExtendedExceptionData extends ExceptionData {\n    isComponentError: boolean;\n  }\n}\n"
  },
  {
    "path": "types/react-native/Libraries/LogBox/LogBox.d.ts",
    "content": "declare module \"react-native/Libraries/LogBox/LogBox\" {\n  import type { ExtendedExceptionData } from \"react-native/Libraries/LogBox/Data/parseLogBoxLog\";\n  /**\n   * @see https://github.com/facebook/react-native/blob/330639f74018cfeda28e74c6dae8110d97603860/packages/react-native/Libraries/LogBox/LogBox.js#L21-L22\n   */\n  interface ILogBox {\n    addException: (error: ExtendedExceptionData) => void;\n  }\n\n  const LogBox: ILogBox;\n  export default LogBox;\n}\n"
  },
  {
    "path": "types/react-native/Libraries/NativeModules/specs/NativeDevMenu.d.ts",
    "content": "declare module \"react-native/Libraries/NativeModules/specs/NativeDevMenu\" {\n  import type { TurboModule } from \"react-native\"\n  /**\n   * @see https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/NativeModules/specs/NativeDevMenu.js\n   * @see https://github.com/facebook/react-native/blob/main/packages/react-native/src/private/specs/modules/NativeDevMenu.js#L15-L21\n   */\n  export interface Spec extends TurboModule {\n    show: () => void\n    reload: () => void\n    debugRemotely: (enableDebug: boolean) => void\n    setProfilingEnabled: (enabled: boolean) => void\n    setHotLoadingEnabled: (enabled: boolean) => void\n  }\n\n  const DevMenu: Spec\n  export default DevMenu\n}\n"
  }
]